From a76684f20359005575021d53fe3c652ab9db08dc Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 17 Dec 2016 14:07:44 -0800 Subject: [PATCH 001/189] Version bump to 0.36.0.dev0 --- homeassistant/const.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/const.py b/homeassistant/const.py index 0a93f080df7..0789531e9a3 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -1,8 +1,8 @@ # coding: utf-8 """Constants used by Home Assistant components.""" MAJOR_VERSION = 0 -MINOR_VERSION = 35 -PATCH_VERSION = '0' +MINOR_VERSION = 36 +PATCH_VERSION = '0.dev0' __short_version__ = '{}.{}'.format(MAJOR_VERSION, MINOR_VERSION) __version__ = '{}.{}'.format(__short_version__, PATCH_VERSION) REQUIRED_PYTHON_VER = (3, 4, 2) From 01e6bd2c9252f701e80e514f81ad7ad7c5f639bd Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 18 Dec 2016 00:14:59 -0800 Subject: [PATCH 002/189] Gracefully exit with async logger (#4965) * Gracefully exit with async logger * Lint --- homeassistant/core.py | 5 ++--- homeassistant/util/logging.py | 25 +++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/homeassistant/core.py b/homeassistant/core.py index 7daab159f21..de272beeeea 100644 --- a/homeassistant/core.py +++ b/homeassistant/core.py @@ -298,9 +298,8 @@ class HomeAssistant(object): # cleanup async layer from python logging if self.data.get(DATA_ASYNCHANDLER): handler = self.data.pop(DATA_ASYNCHANDLER) - logger = logging.getLogger('') - handler.close() - logger.removeHandler(handler) + logging.getLogger('').removeHandler(handler) + yield from handler.async_close(blocking=True) self.loop.stop() diff --git a/homeassistant/util/logging.py b/homeassistant/util/logging.py index 1ddec0bc6a1..0a1218f5796 100644 --- a/homeassistant/util/logging.py +++ b/homeassistant/util/logging.py @@ -49,6 +49,23 @@ class AsyncHandler(object): """Wrap close to handler.""" self.emit(None) + @asyncio.coroutine + def async_close(self, blocking=False): + """Close the handler. + + When blocking=True, will wait till closed. + """ + self.close() + + if blocking: + # Python 3.4.4+ + # pylint: disable=no-member + if hasattr(self._queue, 'join'): + yield from self._queue.join() + else: + while not self._queue.empty(): + yield from asyncio.sleep(0, loop=self.loop) + def emit(self, record): """Process a record.""" ident = self.loop.__dict__.get("_thread_ident") @@ -66,15 +83,23 @@ class AsyncHandler(object): def _process(self): """Process log in a thread.""" + support_join = hasattr(self._queue, 'task_done') + while True: record = run_coroutine_threadsafe( self._queue.get(), self.loop).result() + # pylint: disable=no-member + if record is None: self.handler.close() + if support_join: + self.loop.call_soon_threadsafe(self._queue.task_done) return self.handler.emit(record) + if support_join: + self.loop.call_soon_threadsafe(self._queue.task_done) def createLock(self): """Ignore lock stuff.""" From 9f298a92f44ed58dea8ad6af151562b5045d2d12 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 18 Dec 2016 11:39:33 +0100 Subject: [PATCH 003/189] Remove and update docstrings (#4969) --- homeassistant/components/sensor/sensehat.py | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/homeassistant/components/sensor/sensehat.py b/homeassistant/components/sensor/sensehat.py index 50cd233b39b..65ffca714b0 100644 --- a/homeassistant/components/sensor/sensehat.py +++ b/homeassistant/components/sensor/sensehat.py @@ -26,8 +26,8 @@ MIN_TIME_BETWEEN_UPDATES = timedelta(seconds=60) SENSOR_TYPES = { 'temperature': ['temperature', TEMP_CELSIUS], - 'humidity': ['humidity', "%"], - 'pressure': ['pressure', "mb"], + 'humidity': ['humidity', '%'], + 'pressure': ['pressure', 'mb'], } PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @@ -56,7 +56,7 @@ def get_average(temp_base): def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the sensor platform.""" + """Setup the Sense HAT sensor platform.""" data = SenseHatData() dev = [] @@ -67,7 +67,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): class SenseHatSensor(Entity): - """Representation of a sensehat sensor.""" + """Representation of a Sense HAT sensor.""" def __init__(self, data, sensor_types): """Initialize the sensor.""" @@ -76,7 +76,6 @@ class SenseHatSensor(Entity): self._unit_of_measurement = SENSOR_TYPES[sensor_types][1] self.type = sensor_types self._state = None - """updating data.""" self.update() @property @@ -98,7 +97,7 @@ class SenseHatSensor(Entity): """Get the latest data and updates the states.""" self.data.update() if not self.data.humidity: - _LOGGER.error("Don't receive data!") + _LOGGER.error("Don't receive data") return if self.type == 'temperature': @@ -120,14 +119,14 @@ class SenseHatData(object): @Throttle(MIN_TIME_BETWEEN_UPDATES) def update(self): - """Get the latest data from sensehat.""" + """Get the latest data from Sense HAT.""" from sense_hat import SenseHat sense = SenseHat() temp_from_h = sense.get_temperature_from_humidity() temp_from_p = sense.get_temperature_from_pressure() t_cpu = get_cpu_temp() - t_total = (temp_from_h+temp_from_p)/2 - t_correct = t_total - ((t_cpu-t_total)/1.5) + t_total = (temp_from_h + temp_from_p) / 2 + t_correct = t_total - ((t_cpu - t_total) / 1.5) t_correct = get_average(t_correct) self.temperature = t_correct self.humidity = sense.get_humidity() From 18cf6f6f992158432ceb31c0fe50b1273c33e951 Mon Sep 17 00:00:00 2001 From: Thibault Cohen Date: Sun, 18 Dec 2016 06:23:10 -0500 Subject: [PATCH 004/189] Add HydroQuebec support (#4840) --- .coveragerc | 1 + .../components/sensor/hydroquebec.py | 320 ++++++++++++++++++ requirements_all.txt | 1 + 3 files changed, 322 insertions(+) create mode 100644 homeassistant/components/sensor/hydroquebec.py diff --git a/.coveragerc b/.coveragerc index 1a62d7e60f3..42ea738a3ef 100644 --- a/.coveragerc +++ b/.coveragerc @@ -277,6 +277,7 @@ omit = homeassistant/components/sensor/haveibeenpwned.py homeassistant/components/sensor/hddtemp.py homeassistant/components/sensor/hp_ilo.py + homeassistant/components/sensor/hydroquebec.py homeassistant/components/sensor/imap.py homeassistant/components/sensor/imap_email_content.py homeassistant/components/sensor/influxdb.py diff --git a/homeassistant/components/sensor/hydroquebec.py b/homeassistant/components/sensor/hydroquebec.py new file mode 100644 index 00000000000..c7fbac6b56a --- /dev/null +++ b/homeassistant/components/sensor/hydroquebec.py @@ -0,0 +1,320 @@ +""" +Support for HydroQuebec. + +Get data from 'My Consumption Profile' page: +https://www.hydroquebec.com/portail/en/group/clientele/portrait-de-consommation + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/sensor.hydroquebec/ +""" +import logging +from datetime import timedelta + +import requests +import voluptuous as vol + +from homeassistant.components.sensor import PLATFORM_SCHEMA +from homeassistant.const import ( + CONF_USERNAME, CONF_PASSWORD, + CONF_NAME, CONF_MONITORED_VARIABLES) +from homeassistant.helpers.entity import Entity +from homeassistant.util import Throttle +import homeassistant.helpers.config_validation as cv + +REQUIREMENTS = ['beautifulsoup4==4.5.1'] + +_LOGGER = logging.getLogger(__name__) + +KILOWATT_HOUR = "kWh" # type: str +PRICE = "CAD" # type: str +DAYS = "days" # type: str + +DEFAULT_NAME = "HydroQuebec" + +REQUESTS_TIMEOUT = 15 +MIN_TIME_BETWEEN_UPDATES = timedelta(hours=1) + +SENSOR_TYPES = { + 'period_total_bill': ['Current period bill', + PRICE, 'mdi:square-inc-cash'], + 'period_length': ['Current period length', + DAYS, 'mdi:calendar-today'], + 'period_total_days': ['Total number of days in this period', + DAYS, 'mdi:calendar-today'], + 'period_mean_daily_bill': ['Period daily average bill', + PRICE, 'mdi:square-inc-cash'], + 'period_mean_daily_consumption': ['Period daily average consumption', + KILOWATT_HOUR, 'mdi:flash'], + 'period_total_consumption': ['Total Consumption', + KILOWATT_HOUR, 'mdi:flash'], + 'period_lower_price_consumption': ['Period Lower price consumption', + KILOWATT_HOUR, 'mdi:flash'], + 'period_higher_price_consumption': ['Period Higher price consumption', + KILOWATT_HOUR, 'mdi:flash'], + 'yesterday_total_consumption': ['Yesterday total consumption', + KILOWATT_HOUR, 'mdi:flash'], + 'yesterday_lower_price_consumption': ['Yesterday lower price consumption', + KILOWATT_HOUR, 'mdi:flash'], + 'yesterday_higher_price_consumption': + ['Yesterday higher price consumption', KILOWATT_HOUR, 'mdi:flash'], +} + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required(CONF_MONITORED_VARIABLES): + vol.All(cv.ensure_list, [vol.In(SENSOR_TYPES)]), + vol.Required(CONF_USERNAME): cv.string, + vol.Required(CONF_PASSWORD): cv.string, + 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)) +MONTHLY_MAP = (('period_total_bill', 'montantFacturePeriode'), + ('period_length', 'nbJourLecturePeriode'), + ('period_total_days', 'nbJourPrevuPeriode'), + ('period_mean_daily_bill', 'moyenneDollarsJourPeriode'), + ('period_mean_daily_consumption', 'moyenneKwhJourPeriode'), + ('period_total_consumption', 'consoTotalPeriode'), + ('period_lower_price_consumption', 'consoRegPeriode'), + ('period_higher_price_consumption', 'consoHautPeriode')) +DAILY_MAP = (('yesterday_total_consumption', 'consoTotalQuot'), + ('yesterday_lower_price_consumption', 'consoRegQuot'), + ('yesterday_higher_price_consumption', 'consoHautQuot')) + + +def setup_platform(hass, config, add_devices, discovery_info=None): + """Set up the HydroQuebec sensor.""" + # Create a data fetcher to support all of the configured sensors. Then make + # the first call to init the data. + + username = config.get(CONF_USERNAME) + password = config.get(CONF_PASSWORD) + + try: + hydroquebec_data = HydroquebecData(username, password) + hydroquebec_data.update() + except requests.exceptions.HTTPError as error: + _LOGGER.error(error) + return False + + name = config.get(CONF_NAME) + + sensors = [] + for variable in config[CONF_MONITORED_VARIABLES]: + sensors.append(HydroQuebecSensor(hydroquebec_data, variable, name)) + + add_devices(sensors) + + +class HydroQuebecSensor(Entity): + """Implementation of a HydroQuebec sensor.""" + + def __init__(self, hydroquebec_data, sensor_type, name): + """Initialize the sensor.""" + self.client_name = name + self.type = sensor_type + self.entity_id = "sensor.{}_{}".format(name, sensor_type) + self._name = SENSOR_TYPES[sensor_type][0] + self._unit_of_measurement = SENSOR_TYPES[sensor_type][1] + self._icon = SENSOR_TYPES[sensor_type][2] + self.hydroquebec_data = hydroquebec_data + self._state = None + + self.update() + + @property + def name(self): + """Return the name of the sensor.""" + return '{} {}'.format(self.client_name, self._name) + + @property + def state(self): + """Return the state of the sensor.""" + return self._state + + @property + def unit_of_measurement(self): + """Return the unit of measurement of this entity, if any.""" + return self._unit_of_measurement + + @property + def icon(self): + """Icon to use in the frontend, if any.""" + return self._icon + + def update(self): + """Get the latest data from Hydroquebec and update the state.""" + self.hydroquebec_data.update() + self._state = round(self.hydroquebec_data.data[self.type], 2) + + +class HydroquebecData(object): + """Get data from HydroQuebec.""" + + def __init__(self, username, password): + """Initialize the data object.""" + self.username = username + self.password = password + self.data = None + self.cookies = None + + def _get_login_page(self): + """Go to the login page.""" + from bs4 import BeautifulSoup + try: + raw_res = requests.get(HOME_URL, timeout=REQUESTS_TIMEOUT) + except OSError: + _LOGGER.error("Can not connect to login page") + return False + # Get cookies + self.cookies = raw_res.cookies + # Get login url + soup = BeautifulSoup(raw_res.content, 'html.parser') + form_node = soup.find('form', {'name': 'fm'}) + if form_node is None: + _LOGGER.error("No login form find") + return False + login_url = form_node.attrs.get('action') + if login_url is None: + _LOGGER.error("Can not found login url") + return False + return login_url + + def _post_login_page(self, login_url): + """Login to HydroQuebec website.""" + data = {"login": self.username, + "_58_password": self.password} + + try: + raw_res = requests.post(login_url, + data=data, + cookies=self.cookies, + allow_redirects=False, + timeout=REQUESTS_TIMEOUT) + except OSError: + _LOGGER.error("Can not submit login form") + return False + if raw_res.status_code != 302: + _LOGGER.error("Bad HTTP status code") + return False + + # Update cookies + self.cookies.update(raw_res.cookies) + return True + + def _get_p_p_id(self): + """Get id of consumption profile.""" + from bs4 import BeautifulSoup + try: + raw_res = requests.get(PROFILE_URL, + cookies=self.cookies, + timeout=REQUESTS_TIMEOUT) + except OSError: + _LOGGER.error("Can not get profile page") + return False + # Update cookies + self.cookies.update(raw_res.cookies) + # Looking for p_p_id + soup = BeautifulSoup(raw_res.content, 'html.parser') + p_p_id = None + for node in soup.find_all('span'): + node_id = node.attrs.get('id', "") + print(node_id) + if node_id.startswith("p_portraitConsommation_WAR"): + p_p_id = node_id[2:] + break + + if p_p_id is None: + _LOGGER.error("Could not get p_p_id") + return False + + return p_p_id + + def _get_monthly_data(self, p_p_id): + """Get monthly data.""" + params = {"p_p_id": p_p_id, + "p_p_lifecycle": 2, + "p_p_resource_id": ("resourceObtenirDonnees" + "PeriodesConsommation")} + try: + raw_res = requests.get(PROFILE_URL, + params=params, + cookies=self.cookies, + timeout=REQUESTS_TIMEOUT) + except OSError: + _LOGGER.error("Can not get monthly data") + return False + try: + json_output = raw_res.json() + except OSError: + _LOGGER.error("Could not get monthly data") + return False + + if not json_output.get('success'): + _LOGGER.error("Could not get monthly data") + return False + + return json_output.get('results') + + def _get_daily_data(self, p_p_id, start_date, end_date): + """Get daily data.""" + params = {"p_p_id": p_p_id, + "p_p_lifecycle": 2, + "p_p_resource_id": + "resourceObtenirDonneesQuotidiennesConsommation", + "dateDebutPeriode": start_date, + "dateFinPeriode": end_date} + try: + raw_res = requests.get(PROFILE_URL, + params=params, + cookies=self.cookies, + timeout=REQUESTS_TIMEOUT) + except OSError: + _LOGGER.error("Can not get daily data") + return False + try: + json_output = raw_res.json() + except OSError: + _LOGGER.error("Could not get daily data") + return False + + if not json_output.get('success'): + _LOGGER.error("Could not get daily data") + return False + + return json_output.get('results') + + @Throttle(MIN_TIME_BETWEEN_UPDATES) + def update(self): + """Get the latest data from HydroQuebec.""" + # Get login page + login_url = self._get_login_page() + if not login_url: + return + # Post login page + if not self._post_login_page(login_url): + return + # Get p_p_id + p_p_id = self._get_p_p_id() + if not p_p_id: + return + # Get Monthly data + monthly_data = self._get_monthly_data(p_p_id)[0] + if not monthly_data: + return + # Get daily data + start_date = monthly_data.get('dateDebutPeriode') + end_date = monthly_data.get('dateFinPeriode') + daily_data = self._get_daily_data(p_p_id, start_date, end_date) + if not daily_data: + return + daily_data = daily_data[0]['courant'] + + # format data + self.data = {} + for key1, key2 in MONTHLY_MAP: + self.data[key1] = monthly_data[key2] + for key1, key2 in DAILY_MAP: + self.data[key1] = daily_data[key2] diff --git a/requirements_all.txt b/requirements_all.txt index f39a560f2f8..291ef4813a0 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -48,6 +48,7 @@ astral==1.3.3 # homeassistant.components.sensor.linux_battery batinfo==0.4.2 +# homeassistant.components.sensor.hydroquebec # homeassistant.components.sensor.scrape beautifulsoup4==4.5.1 From 44eaca5985b73a2e2e7af06efb59f34bb0bd7b55 Mon Sep 17 00:00:00 2001 From: Nick Sabinske Date: Sun, 18 Dec 2016 13:05:05 -0500 Subject: [PATCH 005/189] Add support for the Sonarr URL Base setting (#4975) * Add support for the Sonarr URL Base setting For those of us who have sonarr hidden behind reverse proxy under a path, we need to be able to pass the path Adds urlbase: XXX to the sonarr yaml... Match it to what you have set in Sonarr (Settings>General>URL Base) * Fix line lengths * Fix trailing white space caused by last change * Removing use of len() --- homeassistant/components/sensor/sonarr.py | 25 +++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/homeassistant/components/sensor/sonarr.py b/homeassistant/components/sensor/sonarr.py index 62f33556c17..d60a26f7092 100644 --- a/homeassistant/components/sensor/sonarr.py +++ b/homeassistant/components/sensor/sonarr.py @@ -23,9 +23,11 @@ _LOGGER = logging.getLogger(__name__) CONF_DAYS = 'days' CONF_INCLUDED = 'include_paths' CONF_UNIT = 'unit' +CONF_URLBASE = 'urlbase' DEFAULT_HOST = 'localhost' DEFAULT_PORT = 8989 +DEFAULT_URLBASE = '' DEFAULT_DAYS = '1' DEFAULT_UNIT = 'GB' @@ -39,12 +41,13 @@ SENSOR_TYPES = { } ENDPOINTS = { - 'diskspace': 'http{0}://{1}:{2}/api/diskspace?apikey={3}', - 'queue': 'http{0}://{1}:{2}/api/queue?apikey={3}', - 'upcoming': 'http{0}://{1}:{2}/api/calendar?apikey={3}&start={4}&end={5}', - 'wanted': 'http{0}://{1}:{2}/api/wanted/missing?apikey={3}', - 'series': 'http{0}://{1}:{2}/api/series?apikey={3}', - 'commands': 'http{0}://{1}:{2}/api/command?apikey={3}' + 'diskspace': 'http{0}://{1}:{2}/{3}api/diskspace?apikey={4}', + 'queue': 'http{0}://{1}:{2}/{3}api/queue?apikey={4}', + 'upcoming': + 'http{0}://{1}:{2}/{3}api/calendar?apikey={4}&start={5}&end={6}', + 'wanted': 'http{0}://{1}:{2}/{3}api/wanted/missing?apikey={4}', + 'series': 'http{0}://{1}:{2}/{3}api/series?apikey={4}', + 'commands': 'http{0}://{1}:{2}/{3}api/command?apikey={4}' } # Support to Yottabytes for the future, why not @@ -57,6 +60,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Optional(CONF_SSL, default=False): cv.boolean, vol.Optional(CONF_HOST, default=DEFAULT_HOST): cv.string, vol.Optional(CONF_PORT, default=DEFAULT_PORT): cv.port, + vol.Optional(CONF_URLBASE, default=DEFAULT_URLBASE): cv.string, vol.Optional(CONF_DAYS, default=DEFAULT_DAYS): cv.string, vol.Optional(CONF_UNIT, default=DEFAULT_UNIT): vol.In(BYTE_SIZES) }) @@ -80,6 +84,9 @@ class SonarrSensor(Entity): self.conf = conf self.host = conf.get(CONF_HOST) self.port = conf.get(CONF_PORT) + self.urlbase = conf.get(CONF_URLBASE) + if self.urlbase: + self.urlbase = "%s/" % self.urlbase.strip('/') self.apikey = conf.get(CONF_API_KEY) self.included = conf.get(CONF_INCLUDED) self.days = int(conf.get(CONF_DAYS)) @@ -107,7 +114,8 @@ class SonarrSensor(Entity): try: res = requests.get( ENDPOINTS[self.type].format( - self.ssl, self.host, self.port, self.apikey, start, end), + self.ssl, self.host, self.port, + self.urlbase, self.apikey, start, end), timeout=5) except OSError: _LOGGER.error('Host %s is not available', self.host) @@ -133,7 +141,8 @@ class SonarrSensor(Entity): data = res.json() res = requests.get('{}&pageSize={}'.format( ENDPOINTS[self.type].format( - self.ssl, self.host, self.port, self.apikey), + self.ssl, self.host, self.port, + self.urlbase, self.apikey), data['totalRecords']), timeout=5) self.data = res.json()['records'] self._state = len(self.data) From fec33347fb0e99c680d3045f574974b1711a94ac Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sun, 18 Dec 2016 20:26:40 +0100 Subject: [PATCH 006/189] Bugfix TTS clear cache (#4974) * Bugfix TTS base url with certificate * fix lint * remove base_url stuff fix only clear_cache stuff * cleanup --- homeassistant/components/tts/__init__.py | 11 +++--- tests/components/tts/test_init.py | 44 ++++++++++++------------ 2 files changed, 28 insertions(+), 27 deletions(-) diff --git a/homeassistant/components/tts/__init__.py b/homeassistant/components/tts/__init__.py index d0faa60684f..32cbbaa265b 100644 --- a/homeassistant/components/tts/__init__.py +++ b/homeassistant/components/tts/__init__.py @@ -157,7 +157,8 @@ def async_setup(hass, config): hass.services.async_register( DOMAIN, SERVICE_CLEAR_CACHE, async_clear_cache_handle, - descriptions.get(SERVICE_CLEAR_CACHE), schema=SERVICE_CLEAR_CACHE) + descriptions.get(SERVICE_CLEAR_CACHE), + schema=SCHEMA_SERVICE_CLEAR_CACHE) return True @@ -170,9 +171,9 @@ class SpeechManager(object): self.hass = hass self.providers = {} - self.use_cache = True - self.cache_dir = None - self.time_memory = None + self.use_cache = DEFAULT_CACHE + self.cache_dir = DEFAULT_CACHE_DIR + self.time_memory = DEFAULT_TIME_MEMORY self.file_cache = {} self.mem_cache = {} @@ -229,7 +230,7 @@ class SpeechManager(object): """Remove files from filesystem.""" for _, filename in self.file_cache.items(): try: - os.remove(os.path.join(self.cache_dir), filename) + os.remove(os.path.join(self.cache_dir, filename)) except OSError: pass diff --git a/tests/components/tts/test_init.py b/tests/components/tts/test_init.py index fbdbddb8db5..fccd9d66bd7 100644 --- a/tests/components/tts/test_init.py +++ b/tests/components/tts/test_init.py @@ -88,35 +88,35 @@ class TestTTS(object): self.default_tts_cache, "265944c108cbb00b2a621be5930513e03a0bb2cd_demo.mp3")) - def test_setup_component_and_test_service_clear_cache(self): - """Setup the demo platform and call service clear cache.""" - calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) + def test_setup_component_and_test_service_clear_cache(self): + """Setup the demo platform and call service clear cache.""" + calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) - config = { - tts.DOMAIN: { - 'platform': 'demo', - } + config = { + tts.DOMAIN: { + 'platform': 'demo', } + } - with assert_setup_component(1, tts.DOMAIN): - setup_component(self.hass, tts.DOMAIN, config) + with assert_setup_component(1, tts.DOMAIN): + setup_component(self.hass, tts.DOMAIN, config) - self.hass.services.call(tts.DOMAIN, 'demo_say', { - tts.ATTR_MESSAGE: "I person is on front of your door.", - }) - self.hass.block_till_done() + self.hass.services.call(tts.DOMAIN, 'demo_say', { + tts.ATTR_MESSAGE: "I person is on front of your door.", + }) + self.hass.block_till_done() - assert len(calls) == 1 - assert os.path.isfile(os.path.join( - self.default_tts_cache, - "265944c108cbb00b2a621be5930513e03a0bb2cd_demo.mp3")) + assert len(calls) == 1 + assert os.path.isfile(os.path.join( + self.default_tts_cache, + "265944c108cbb00b2a621be5930513e03a0bb2cd_demo.mp3")) - self.hass.services.call(tts.DOMAIN, tts.SERVICE_CLEAR_CACHE, {}) - self.hass.block_till_done() + self.hass.services.call(tts.DOMAIN, tts.SERVICE_CLEAR_CACHE, {}) + self.hass.block_till_done() - assert not os.path.isfile(os.path.join( - self.default_tts_cache, - "265944c108cbb00b2a621be5930513e03a0bb2cd_demo.mp3")) + assert not os.path.isfile(os.path.join( + self.default_tts_cache, + "265944c108cbb00b2a621be5930513e03a0bb2cd_demo.mp3")) def test_setup_component_and_test_service_with_receive_voice(self): """Setup the demo platform and call service and receive voice.""" From f8af6e786338afafefcf99809d41f0e6f2deca61 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 18 Dec 2016 12:56:07 -0800 Subject: [PATCH 007/189] Allow setting base url (#4985) --- homeassistant/components/http/__init__.py | 18 +++++++-- tests/components/http/test_init.py | 47 +++++++++++++++++++++++ 2 files changed, 61 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/http/__init__.py b/homeassistant/components/http/__init__.py index 446b1f5f28b..1bbb3576eed 100644 --- a/homeassistant/components/http/__init__.py +++ b/homeassistant/components/http/__init__.py @@ -18,7 +18,7 @@ from aiohttp.web_exceptions import HTTPUnauthorized, HTTPMovedPermanently import homeassistant.helpers.config_validation as cv import homeassistant.remote as rem -from homeassistant.util import get_local_ip +import homeassistant.util as hass_util from homeassistant.components import persistent_notification from homeassistant.const import ( SERVER_PORT, CONTENT_TYPE_JSON, ALLOWED_CORS_HEADERS, @@ -41,6 +41,7 @@ REQUIREMENTS = ('aiohttp_cors==0.5.0',) CONF_API_PASSWORD = 'api_password' CONF_SERVER_HOST = 'server_host' CONF_SERVER_PORT = 'server_port' +CONF_BASE_URL = 'base_url' CONF_DEVELOPMENT = 'development' CONF_SSL_CERTIFICATE = 'ssl_certificate' CONF_SSL_KEY = 'ssl_key' @@ -84,6 +85,7 @@ HTTP_SCHEMA = vol.Schema({ 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_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, @@ -155,9 +157,17 @@ def async_setup(hass, config): hass.bus.async_listen_once(EVENT_HOMEASSISTANT_START, start_server) hass.http = server - hass.config.api = rem.API(server_host if server_host != '0.0.0.0' - else get_local_ip(), - api_password, server_port, + + host = conf.get(CONF_BASE_URL) + + if host: + pass + elif server_host != DEFAULT_SERVER_HOST: + host = server_host + else: + host = hass_util.get_local_ip() + + hass.config.api = rem.API(host, api_password, server_port, ssl_certificate is not None) return True diff --git a/tests/components/http/test_init.py b/tests/components/http/test_init.py index f50e1fb9dbf..10793406ea7 100644 --- a/tests/components/http/test_init.py +++ b/tests/components/http/test_init.py @@ -1,6 +1,7 @@ """The tests for the Home Assistant HTTP component.""" import asyncio import requests +from unittest.mock import MagicMock from homeassistant import bootstrap, const import homeassistant.components.http as http @@ -154,3 +155,49 @@ def test_registering_view_while_running(hass, test_client): text = yield from resp.text() assert text == 'hello' + + +def test_api_base_url(loop): + """Test setting api url.""" + + hass = MagicMock() + hass.loop = loop + + assert loop.run_until_complete( + bootstrap.async_setup_component(hass, 'http', { + 'http': { + 'base_url': 'example.com' + } + }) + ) + + assert hass.config.api.base_url == 'http://example.com:8123' + + assert loop.run_until_complete( + bootstrap.async_setup_component(hass, 'http', { + 'http': { + 'server_host': '1.1.1.1' + } + }) + ) + + assert hass.config.api.base_url == 'http://1.1.1.1:8123' + + assert loop.run_until_complete( + bootstrap.async_setup_component(hass, 'http', { + 'http': { + 'server_host': '1.1.1.1' + } + }) + ) + + assert hass.config.api.base_url == 'http://1.1.1.1:8123' + + assert loop.run_until_complete( + bootstrap.async_setup_component(hass, 'http', { + 'http': { + } + }) + ) + + assert hass.config.api.base_url == 'http://127.0.0.1:8123' From a6d995e394bd347e6154b9f4b8eaa12cc71685ba Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sun, 18 Dec 2016 21:57:31 +0100 Subject: [PATCH 008/189] Bugfix wait in automation (#4984) --- homeassistant/components/automation/__init__.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/automation/__init__.py b/homeassistant/components/automation/__init__.py index 9ff2fbd878a..341e6e90233 100644 --- a/homeassistant/components/automation/__init__.py +++ b/homeassistant/components/automation/__init__.py @@ -166,7 +166,9 @@ def async_setup(hass, config): for entity in component.async_extract_from_service(service_call): tasks.append(entity.async_trigger( service_call.data.get(ATTR_VARIABLES), True)) - yield from asyncio.wait(tasks, loop=hass.loop) + + if tasks: + yield from asyncio.wait(tasks, loop=hass.loop) @asyncio.coroutine def turn_onoff_service_handler(service_call): @@ -175,7 +177,9 @@ def async_setup(hass, config): method = 'async_{}'.format(service_call.service) for entity in component.async_extract_from_service(service_call): tasks.append(getattr(entity, method)()) - yield from asyncio.wait(tasks, loop=hass.loop) + + if tasks: + yield from asyncio.wait(tasks, loop=hass.loop) @asyncio.coroutine def toggle_service_handler(service_call): @@ -186,7 +190,9 @@ def async_setup(hass, config): tasks.append(entity.async_turn_off()) else: tasks.append(entity.async_turn_on()) - yield from asyncio.wait(tasks, loop=hass.loop) + + if tasks: + yield from asyncio.wait(tasks, loop=hass.loop) @asyncio.coroutine def reload_service_handler(service_call): From 744d00a36e77897a2aa13f1d62b6a3dda4f90be9 Mon Sep 17 00:00:00 2001 From: andrey-git Date: Sun, 18 Dec 2016 22:58:59 +0200 Subject: [PATCH 009/189] Fix non-radio Sonos album-art by using track_info['album_art'] before checking other options. (#4958) * Fix Sonos album art for non-radio streams * Revert "Fix Sonos album art for non-radio streams" This reverts commit d71502d18f5778146cf45dcb717aba71f88a3fac. * Fix Sonos album art for non-radio streams * Move art existance check into _format_media_image_url --- homeassistant/components/media_player/sonos.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/homeassistant/components/media_player/sonos.py b/homeassistant/components/media_player/sonos.py index 94649b3a597..621fc03a7c3 100644 --- a/homeassistant/components/media_player/sonos.py +++ b/homeassistant/components/media_player/sonos.py @@ -424,6 +424,7 @@ class SonosDevice(MediaPlayerDevice): media_artist = track_info.get('artist') media_album_name = track_info.get('album') media_title = track_info.get('title') + media_image_url = track_info.get('album_art', None) media_position = None media_position_updated_at = None @@ -454,6 +455,7 @@ class SonosDevice(MediaPlayerDevice): elif is_radio_stream: media_image_url = self._format_media_image_url( + media_image_url, current_media_uri ) support_previous_track = False @@ -521,6 +523,7 @@ class SonosDevice(MediaPlayerDevice): else: # not a radio stream media_image_url = self._format_media_image_url( + media_image_url, track_info['uri'] ) support_previous_track = True @@ -647,12 +650,14 @@ class SonosDevice(MediaPlayerDevice): self._last_avtransport_event = None - def _format_media_image_url(self, uri): - return 'http://{host}:{port}/getaa?s=1&u={uri}'.format( - host=self._player.ip_address, - port=1400, - uri=urllib.parse.quote(uri) - ) + def _format_media_image_url(self, url, fallback_uri): + if url in ('', 'NOT_IMPLEMENTED', None): + return 'http://{host}:{port}/getaa?s=1&u={uri}'.format( + host=self._player.ip_address, + port=1400, + uri=urllib.parse.quote(fallback_uri) + ) + return url def process_sonos_event(self, event): """Process a service event coming from the speaker.""" @@ -672,6 +677,7 @@ class SonosDevice(MediaPlayerDevice): next_track_uri = event.variables.get('next_track_uri') if next_track_uri: next_track_image_url = self._format_media_image_url( + None, next_track_uri ) From ed0d14c902cb191b8393f69fea64bd60d284ca43 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 18 Dec 2016 14:59:45 -0800 Subject: [PATCH 010/189] Base url: Fix external port different from internal port (#4990) * Base url: Fix external port different from internal port * Add base_url example to new config --- homeassistant/components/http/__init__.py | 6 ++++-- homeassistant/config.py | 7 +++++++ homeassistant/remote.py | 17 +++++++++++------ tests/components/http/test_init.py | 2 +- 4 files changed, 23 insertions(+), 9 deletions(-) diff --git a/homeassistant/components/http/__init__.py b/homeassistant/components/http/__init__.py index 1bbb3576eed..e35b5f31d8f 100644 --- a/homeassistant/components/http/__init__.py +++ b/homeassistant/components/http/__init__.py @@ -161,13 +161,15 @@ def async_setup(hass, config): host = conf.get(CONF_BASE_URL) if host: - pass + port = None elif server_host != DEFAULT_SERVER_HOST: host = server_host + port = server_port else: host = hass_util.get_local_ip() + port = server_port - hass.config.api = rem.API(host, api_password, server_port, + hass.config.api = rem.API(host, api_password, port, ssl_certificate is not None) return True diff --git a/homeassistant/config.py b/homeassistant/config.py index ba8cbeba3ee..f2f642de8ea 100644 --- a/homeassistant/config.py +++ b/homeassistant/config.py @@ -54,6 +54,8 @@ frontend: http: # Uncomment this to add a password (recommended!) # api_password: PASSWORD + # Uncomment this if you are using SSL or running in Docker etc + # base_url: example.duckdns.org:8123 # Checks for available updates updater: @@ -76,6 +78,11 @@ sun: # Weather Prediction sensor: platform: yr + +# Text to speech +tts: + platform: google + """ diff --git a/homeassistant/remote.py b/homeassistant/remote.py index c9270e2032f..69e8b88305f 100644 --- a/homeassistant/remote.py +++ b/homeassistant/remote.py @@ -55,15 +55,20 @@ class API(object): """Object to pass around Home Assistant API location and credentials.""" def __init__(self, host: str, api_password: Optional[str]=None, - port: Optional[int]=None, use_ssl: bool=False) -> None: + port: Optional[int]=SERVER_PORT, use_ssl: bool=False) -> None: """Initalize the API.""" self.host = host - self.port = port or SERVER_PORT + self.port = port self.api_password = api_password + if use_ssl: - self.base_url = "https://{}:{}".format(host, self.port) + self.base_url = "https://{}".format(host) else: - self.base_url = "http://{}:{}".format(host, self.port) + self.base_url = "http://{}".format(host) + + if port is not None: + self.base_url += ':{}'.format(port) + self.status = None self._headers = { HTTP_HEADER_CONTENT_TYPE: CONTENT_TYPE_JSON, @@ -106,8 +111,8 @@ class API(object): def __repr__(self) -> str: """Return the representation of the API.""" - return "API({}, {}, {})".format( - self.host, self.api_password, self.port) + return "".format( + self.base_url, 'yes' if self.api_password is not None else 'no') class HomeAssistant(ha.HomeAssistant): diff --git a/tests/components/http/test_init.py b/tests/components/http/test_init.py index 10793406ea7..e4deb7b60d1 100644 --- a/tests/components/http/test_init.py +++ b/tests/components/http/test_init.py @@ -171,7 +171,7 @@ def test_api_base_url(loop): }) ) - assert hass.config.api.base_url == 'http://example.com:8123' + assert hass.config.api.base_url == 'http://example.com' assert loop.run_until_complete( bootstrap.async_setup_component(hass, 'http', { From 53dde0e4e141a2c2d825960003ad87189e4f3c31 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 18 Dec 2016 17:35:42 -0800 Subject: [PATCH 011/189] Unbreak dev --- homeassistant/const.py | 1 - 1 file changed, 1 deletion(-) diff --git a/homeassistant/const.py b/homeassistant/const.py index 1a29b36cb4d..0789531e9a3 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -3,7 +3,6 @@ MAJOR_VERSION = 0 MINOR_VERSION = 36 PATCH_VERSION = '0.dev0' ->>>>>>> master __short_version__ = '{}.{}'.format(MAJOR_VERSION, MINOR_VERSION) __version__ = '{}.{}'.format(__short_version__, PATCH_VERSION) REQUIRED_PYTHON_VER = (3, 4, 2) From 00b80d4fe1b5ac7329706dae9bc159dc6a7a4b39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20H=C3=B8yer=20Iversen?= Date: Mon, 19 Dec 2016 02:59:08 +0100 Subject: [PATCH 012/189] Support for broadlink sp (#4961) * initial support for broadlink sp * style fix * style * bug fix --- homeassistant/components/switch/broadlink.py | 91 +++++++++++++++++++- 1 file changed, 87 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/switch/broadlink.py b/homeassistant/components/switch/broadlink.py index ee71de3a22e..786ac5f06f5 100644 --- a/homeassistant/components/switch/broadlink.py +++ b/homeassistant/components/switch/broadlink.py @@ -17,7 +17,8 @@ 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_TIMEOUT, CONF_HOST, CONF_MAC, + CONF_TYPE) import homeassistant.helpers.config_validation as cv REQUIREMENTS = ['broadlink==0.2'] @@ -29,6 +30,8 @@ DEFAULT_NAME = 'Broadlink switch' DEFAULT_TIMEOUT = 10 SERVICE_LEARN = "learn_command" +SENSOR_TYPES = ["rm", "sp1", "sp2"] + SWITCH_SCHEMA = vol.Schema({ vol.Optional(CONF_COMMAND_OFF, default=None): cv.string, vol.Optional(CONF_COMMAND_ON, default=None): cv.string, @@ -39,6 +42,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Optional(CONF_SWITCHES): vol.Schema({cv.slug: SWITCH_SCHEMA}), vol.Required(CONF_HOST): cv.string, vol.Required(CONF_MAC): cv.string, + vol.Optional(CONF_TYPE, default=SENSOR_TYPES[0]): vol.In(SENSOR_TYPES), vol.Optional(CONF_TIMEOUT, default=DEFAULT_TIMEOUT): cv.positive_int }) @@ -51,7 +55,18 @@ def setup_platform(hass, config, add_devices, discovery_info=None): ip_addr = config.get(CONF_HOST) mac_addr = binascii.unhexlify( config.get(CONF_MAC).encode().replace(b':', b'')) - broadlink_device = broadlink.rm((ip_addr, 80), mac_addr) + sensor_type = config.get(CONF_TYPE) + + if sensor_type == "rm": + broadlink_device = broadlink.rm((ip_addr, 80), mac_addr) + switch = BroadlinkRMSwitch + elif sensor_type == "sp1": + broadlink_device = broadlink.sp1((ip_addr, 80), mac_addr) + switch = BroadlinkSP1Switch + elif sensor_type == "sp2": + broadlink_device = broadlink.sp2((ip_addr, 80), mac_addr) + switch = BroadlinkSP2Switch + broadlink_device.timeout = config.get(CONF_TIMEOUT) try: broadlink_device.auth() @@ -92,7 +107,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): for object_id, device_config in devices.items(): switches.append( - BroadlinkRM2Switch( + switch( device_config.get(CONF_FRIENDLY_NAME, object_id), device_config.get(CONF_COMMAND_ON), device_config.get(CONF_COMMAND_OFF), @@ -103,7 +118,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): add_devices(switches) -class BroadlinkRM2Switch(SwitchDevice): +class BroadlinkRMSwitch(SwitchDevice): """Representation of an Broadlink switch.""" def __init__(self, friendly_name, command_on, command_off, device): @@ -124,6 +139,11 @@ class BroadlinkRM2Switch(SwitchDevice): """Return true if unable to access real state of entity.""" return True + @property + def should_poll(self): + """No polling needed.""" + return False + @property def is_on(self): """Return true if device is on.""" @@ -156,3 +176,66 @@ class BroadlinkRM2Switch(SwitchDevice): pass return self._sendpacket(packet, max(0, retry-1)) return True + + +class BroadlinkSP1Switch(BroadlinkRMSwitch): + """Representation of an Broadlink switch.""" + + def __init__(self, friendly_name, command_on, command_off, device): + """Initialize the switch.""" + super().__init__(friendly_name, command_on, command_off, device) + self._command_on = 1 + self._command_off = 0 + + def _sendpacket(self, packet, retry=2): + """Send packet to device.""" + try: + self._device.set_power(packet) + except socket.timeout as error: + if retry < 1: + _LOGGER.error(error) + return False + try: + self._device.auth() + except socket.timeout: + pass + return self._sendpacket(packet, max(0, retry-1)) + return True + + +class BroadlinkSP2Switch(BroadlinkSP1Switch): + """Representation of an Broadlink switch.""" + + def __init__(self, friendly_name, command_on, command_off, device): + """Initialize the switch.""" + super().__init__(friendly_name, command_on, command_off, device) + + @property + def assumed_state(self): + """Return true if unable to access real state of entity.""" + return False + + @property + def should_poll(self): + """Polling needed.""" + return True + + def update(self): + """Synchronize state with switch.""" + self._update() + + def _update(self, retry=2): + try: + state = self._device.check_power() + except socket.timeout as error: + if retry < 1: + _LOGGER.error(error) + return + try: + self._device.auth() + except socket.timeout: + pass + return self._update(max(0, retry-1)) + if state is None and retry > 0: + return self._update(max(0, retry-1)) + self._state = state From 2cb67eca4608e7d9f5047ce80eba9028e222c432 Mon Sep 17 00:00:00 2001 From: Daniel Hoyer Iversen Date: Mon, 19 Dec 2016 09:21:40 +0100 Subject: [PATCH 013/189] rfxtrx lib upgrade --- homeassistant/components/rfxtrx.py | 21 +++++++++++++++------ requirements_all.txt | 2 +- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/homeassistant/components/rfxtrx.py b/homeassistant/components/rfxtrx.py index f8a4f29738f..56026168383 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.13.0'] +REQUIREMENTS = ['pyRFXtrx==0.14.0'] DOMAIN = "rfxtrx" @@ -132,11 +132,12 @@ def setup(hass, config): # Log RFXCOM event if not event.device.id_string: return - _LOGGER.info("Receive RFXCOM event from " - "(Device_id: %s Class: %s Sub: %s)", - slugify(event.device.id_string.lower()), - event.device.__class__.__name__, - event.device.subtype) + _LOGGER.debug("Receive RFXCOM event from " + "(Device_id: %s Class: %s Sub: %s, Pkt_id: %s)", + slugify(event.device.id_string.lower()), + event.device.__class__.__name__, + event.device.subtype, + "".join("{0:02x}".format(x) for x in event.data)) # Callback to HA registered components. for subscriber in RECEIVED_EVT_SUBSCRIBERS: @@ -274,6 +275,14 @@ def apply_received_command(event): ATTR_STATE: event.values['Command'].lower() } ) + _LOGGER.info( + "Rfxtrx fired event: (event_type: %s, %s: %s, %s: %s)", + EVENT_BUTTON_PRESSED, + ATTR_ENTITY_ID, + RFX_DEVICES[device_id].entity_id, + ATTR_STATE, + event.values['Command'].lower() + ) class RfxtrxDevice(Entity): diff --git a/requirements_all.txt b/requirements_all.txt index 291ef4813a0..a4542aa5dcb 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -369,7 +369,7 @@ pwaqi==1.3 py-cpuinfo==0.2.3 # homeassistant.components.rfxtrx -pyRFXtrx==0.13.0 +pyRFXtrx==0.14.0 # homeassistant.components.notify.xmpp pyasn1-modules==0.0.8 From ee6fb9301801c420376b010246e5b683239c78f6 Mon Sep 17 00:00:00 2001 From: Hugo Dupras Date: Mon, 19 Dec 2016 16:47:38 +0100 Subject: [PATCH 014/189] Hotfix for Netatmo Camera (#4998) Signed-off-by: Hugo D. (jabesq) --- homeassistant/components/netatmo.py | 2 +- requirements_all.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/netatmo.py b/homeassistant/components/netatmo.py index 3bb98a00b87..b4ebbc1d460 100644 --- a/homeassistant/components/netatmo.py +++ b/homeassistant/components/netatmo.py @@ -18,7 +18,7 @@ from homeassistant.util import Throttle REQUIREMENTS = [ 'https://github.com/jabesq/netatmo-api-python/archive/' - 'v0.8.0.zip#lnetatmo==0.8.0'] + 'v0.8.1.zip#lnetatmo==0.8.1'] _LOGGER = logging.getLogger(__name__) diff --git a/requirements_all.txt b/requirements_all.txt index a4542aa5dcb..5e10b96614e 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -213,7 +213,7 @@ https://github.com/danieljkemp/onkyo-eiscp/archive/python3.zip#onkyo-eiscp==0.9. # https://github.com/deisi/fritzconnection/archive/b5c14515e1c8e2652b06b6316a7f3913df942841.zip#fritzconnection==0.4.6 # homeassistant.components.netatmo -https://github.com/jabesq/netatmo-api-python/archive/v0.8.0.zip#lnetatmo==0.8.0 +https://github.com/jabesq/netatmo-api-python/archive/v0.8.1.zip#lnetatmo==0.8.1 # homeassistant.components.neato https://github.com/jabesq/pybotvac/archive/v0.0.1.zip#pybotvac==0.0.1 From 877efac6300617a3d9e6fe93a4904d249485c27f Mon Sep 17 00:00:00 2001 From: Daniel Perna Date: Tue, 20 Dec 2016 11:39:29 +0100 Subject: [PATCH 015/189] Add missing support for HMIP-PSM (#5013) --- homeassistant/components/homematic.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/homematic.py b/homeassistant/components/homematic.py index 00adf3701c0..004a0c6dbfb 100644 --- a/homeassistant/components/homematic.py +++ b/homeassistant/components/homematic.py @@ -61,7 +61,7 @@ HM_DEVICE_TYPES = { 'ThermostatWall', 'AreaThermostat', 'RotaryHandleSensor', 'WaterSensor', 'PowermeterGas', 'LuxSensor', 'WeatherSensor', 'WeatherStation', 'ThermostatWall2', 'TemperatureDiffSensor', - 'TemperatureSensor', 'CO2Sensor'], + 'TemperatureSensor', 'CO2Sensor', 'IPSwitchPowermeter'], DISCOVER_CLIMATE: [ 'Thermostat', 'ThermostatWall', 'MAXThermostat', 'ThermostatWall2'], DISCOVER_BINARY_SENSORS: [ From 1aea3e0d51cbe3b8b69a26df107d27c19e9366cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Vran=C3=ADk?= Date: Tue, 20 Dec 2016 12:06:53 +0100 Subject: [PATCH 016/189] script/lint only on python files (#5018) --- script/lint | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/script/lint b/script/lint index 2c3739c5c13..d607aa87bb6 100755 --- a/script/lint +++ b/script/lint @@ -4,7 +4,7 @@ # performs roughly what this test did in the past. if [ "$1" = "--changed" ]; then - export files="`git diff upstream/dev --name-only | grep -v requirements_all.txt`" + export files="`git diff upstream/dev --name-only | grep -e '\.py$'`" echo "=================================================" echo "FILES CHANGED (git diff upstream/dev --name-only)" echo "=================================================" From f224ee72293a0de34b1c24efa799a0152c5bb015 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20H=C3=B8yer=20Iversen?= Date: Tue, 20 Dec 2016 21:05:54 +0100 Subject: [PATCH 017/189] Solve some bugs in the bradlink switch --- homeassistant/components/switch/broadlink.py | 43 +++++++++++--------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/homeassistant/components/switch/broadlink.py b/homeassistant/components/switch/broadlink.py index 786ac5f06f5..d2885bf43d2 100644 --- a/homeassistant/components/switch/broadlink.py +++ b/homeassistant/components/switch/broadlink.py @@ -57,22 +57,6 @@ def setup_platform(hass, config, add_devices, discovery_info=None): config.get(CONF_MAC).encode().replace(b':', b'')) sensor_type = config.get(CONF_TYPE) - if sensor_type == "rm": - broadlink_device = broadlink.rm((ip_addr, 80), mac_addr) - switch = BroadlinkRMSwitch - elif sensor_type == "sp1": - broadlink_device = broadlink.sp1((ip_addr, 80), mac_addr) - switch = BroadlinkSP1Switch - elif sensor_type == "sp2": - broadlink_device = broadlink.sp2((ip_addr, 80), mac_addr) - switch = BroadlinkSP2Switch - - broadlink_device.timeout = config.get(CONF_TIMEOUT) - try: - broadlink_device.auth() - except socket.timeout: - _LOGGER.error("Failed to connect to device.") - persistent_notification = loader.get_component('persistent_notification') @asyncio.coroutine @@ -103,7 +87,24 @@ def setup_platform(hass, config, add_devices, discovery_info=None): persistent_notification.async_create(hass, "Did not received any signal", title='Broadlink switch') - hass.services.register(DOMAIN, SERVICE_LEARN, _learn_command) + + if sensor_type == "rm": + broadlink_device = broadlink.rm((ip_addr, 80), mac_addr) + switch = BroadlinkRMSwitch + hass.services.register(DOMAIN, SERVICE_LEARN + '_' + ip_addr, + _learn_command) + elif sensor_type == "sp1": + broadlink_device = broadlink.sp1((ip_addr, 80), mac_addr) + switch = BroadlinkSP1Switch + elif sensor_type == "sp2": + broadlink_device = broadlink.sp2((ip_addr, 80), mac_addr) + switch = BroadlinkSP2Switch + + broadlink_device.timeout = config.get(CONF_TIMEOUT) + try: + broadlink_device.auth() + except socket.timeout: + _LOGGER.error("Failed to connect to device.") for object_id, device_config in devices.items(): switches.append( @@ -153,11 +154,13 @@ class BroadlinkRMSwitch(SwitchDevice): """Turn the device on.""" if self._sendpacket(self._command_on): self._state = True + self.update_ha_state() def turn_off(self, **kwargs): """Turn the device off.""" if self._sendpacket(self._command_off): self._state = False + self.update_ha_state() def _sendpacket(self, packet, retry=2): """Send packet to device.""" @@ -166,7 +169,7 @@ class BroadlinkRMSwitch(SwitchDevice): return True try: self._device.send_data(packet) - except socket.timeout as error: + except (socket.timeout, ValueError) as error: if retry < 1: _LOGGER.error(error) return False @@ -191,7 +194,7 @@ class BroadlinkSP1Switch(BroadlinkRMSwitch): """Send packet to device.""" try: self._device.set_power(packet) - except socket.timeout as error: + except (socket.timeout, ValueError) as error: if retry < 1: _LOGGER.error(error) return False @@ -227,7 +230,7 @@ class BroadlinkSP2Switch(BroadlinkSP1Switch): def _update(self, retry=2): try: state = self._device.check_power() - except socket.timeout as error: + except (socket.timeout, ValueError) as error: if retry < 1: _LOGGER.error(error) return From 133c03ee574593579ccd02861e3e989d881a32ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20H=C3=B8yer=20Iversen?= Date: Tue, 20 Dec 2016 21:16:18 +0100 Subject: [PATCH 018/189] style fix --- homeassistant/components/switch/broadlink.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/switch/broadlink.py b/homeassistant/components/switch/broadlink.py index d2885bf43d2..c2ae18ac5b3 100644 --- a/homeassistant/components/switch/broadlink.py +++ b/homeassistant/components/switch/broadlink.py @@ -169,7 +169,7 @@ class BroadlinkRMSwitch(SwitchDevice): return True try: self._device.send_data(packet) - except (socket.timeout, ValueError) as error: + except (socket.timeout, ValueError) as error: if retry < 1: _LOGGER.error(error) return False From a8b390091363c5af54880ecbf10e5f07824c2033 Mon Sep 17 00:00:00 2001 From: Johann Kellerman Date: Wed, 21 Dec 2016 09:40:44 +0200 Subject: [PATCH 019/189] device_tracker (#5023) 2 --- tests/components/device_tracker/test_init.py | 67 +++++++++++-------- .../device_tracker/test_locative.py | 15 +++-- 2 files changed, 48 insertions(+), 34 deletions(-) diff --git a/tests/components/device_tracker/test_init.py b/tests/components/device_tracker/test_init.py index c3087b108e9..d1c19b30307 100644 --- a/tests/components/device_tracker/test_init.py +++ b/tests/components/device_tracker/test_init.py @@ -100,8 +100,9 @@ class TestComponentsDeviceTracker(unittest.TestCase): 'AB:CD:EF:GH:IJ', 'Test name', picture='http://test.picture', hide_if_away=True) device_tracker.update_config(self.yaml_devices, dev_id, device) - self.assertTrue(setup_component(self.hass, device_tracker.DOMAIN, - TEST_PLATFORM)) + with assert_setup_component(1, device_tracker.DOMAIN): + assert setup_component(self.hass, device_tracker.DOMAIN, + TEST_PLATFORM) config = device_tracker.load_config(self.yaml_devices, self.hass, device.consider_home)[0] self.assertEqual(device.dev_id, config.dev_id) @@ -146,8 +147,9 @@ class TestComponentsDeviceTracker(unittest.TestCase): def test_setup_without_yaml_file(self): """Test with no YAML file.""" - self.assertTrue(setup_component(self.hass, device_tracker.DOMAIN, - TEST_PLATFORM)) + with assert_setup_component(1, device_tracker.DOMAIN): + assert setup_component(self.hass, device_tracker.DOMAIN, + TEST_PLATFORM) # pylint: disable=invalid-name def test_adding_unknown_device_to_config(self): @@ -156,15 +158,15 @@ class TestComponentsDeviceTracker(unittest.TestCase): scanner.reset() scanner.come_home('DEV1') - self.assertTrue(setup_component(self.hass, device_tracker.DOMAIN, { - device_tracker.DOMAIN: {CONF_PLATFORM: 'test'}})) + with assert_setup_component(1, device_tracker.DOMAIN): + assert setup_component(self.hass, device_tracker.DOMAIN, { + device_tracker.DOMAIN: {CONF_PLATFORM: 'test'}}) # wait for async calls (macvendor) to finish self.hass.block_till_done() config = device_tracker.load_config(self.yaml_devices, self.hass, timedelta(seconds=0)) - assert len(config) == 1 assert config[0].dev_id == 'dev1' assert config[0].track @@ -280,8 +282,9 @@ class TestComponentsDeviceTracker(unittest.TestCase): with patch.dict(device_tracker.DISCOVERY_PLATFORMS, {'test': 'test'}): with patch.object(scanner, 'scan_devices') as mock_scan: - self.assertTrue(setup_component( - self.hass, device_tracker.DOMAIN, TEST_PLATFORM)) + with assert_setup_component(1, device_tracker.DOMAIN): + assert setup_component( + self.hass, device_tracker.DOMAIN, TEST_PLATFORM) fire_service_discovered(self.hass, 'test', {}) self.assertTrue(mock_scan.called) @@ -296,11 +299,12 @@ class TestComponentsDeviceTracker(unittest.TestCase): with patch('homeassistant.components.device_tracker.dt_util.utcnow', return_value=register_time): - self.assertTrue(setup_component(self.hass, device_tracker.DOMAIN, { - device_tracker.DOMAIN: { - CONF_PLATFORM: 'test', - device_tracker.CONF_CONSIDER_HOME: 59, - }})) + with assert_setup_component(1, device_tracker.DOMAIN): + assert setup_component(self.hass, device_tracker.DOMAIN, { + device_tracker.DOMAIN: { + CONF_PLATFORM: 'test', + device_tracker.CONF_CONSIDER_HOME: 59, + }}) self.assertEqual(STATE_HOME, self.hass.states.get('device_tracker.dev1').state) @@ -327,8 +331,9 @@ class TestComponentsDeviceTracker(unittest.TestCase): friendly_name, picture, hide_if_away=True) device_tracker.update_config(self.yaml_devices, dev_id, device) - self.assertTrue(setup_component(self.hass, device_tracker.DOMAIN, - TEST_PLATFORM)) + with assert_setup_component(1, device_tracker.DOMAIN): + assert setup_component(self.hass, device_tracker.DOMAIN, + TEST_PLATFORM) attrs = self.hass.states.get(entity_id).attributes @@ -347,8 +352,9 @@ class TestComponentsDeviceTracker(unittest.TestCase): scanner = get_component('device_tracker.test').SCANNER scanner.reset() - self.assertTrue(setup_component(self.hass, device_tracker.DOMAIN, - TEST_PLATFORM)) + with assert_setup_component(1, device_tracker.DOMAIN): + assert setup_component(self.hass, device_tracker.DOMAIN, + TEST_PLATFORM) self.assertTrue(self.hass.states.get(entity_id) .attributes.get(ATTR_HIDDEN)) @@ -365,8 +371,9 @@ class TestComponentsDeviceTracker(unittest.TestCase): scanner = get_component('device_tracker.test').SCANNER scanner.reset() - self.assertTrue(setup_component(self.hass, device_tracker.DOMAIN, - TEST_PLATFORM)) + with assert_setup_component(1, device_tracker.DOMAIN): + assert setup_component(self.hass, device_tracker.DOMAIN, + TEST_PLATFORM) state = self.hass.states.get(device_tracker.ENTITY_ID_ALL_DEVICES) self.assertIsNotNone(state) @@ -377,8 +384,9 @@ class TestComponentsDeviceTracker(unittest.TestCase): @patch('homeassistant.components.device_tracker.DeviceTracker.async_see') def test_see_service(self, mock_see): """Test the see service with a unicode dev_id and NO MAC.""" - self.assertTrue(setup_component(self.hass, device_tracker.DOMAIN, - TEST_PLATFORM)) + with assert_setup_component(1, device_tracker.DOMAIN): + assert setup_component(self.hass, device_tracker.DOMAIN, + TEST_PLATFORM) params = { 'dev_id': 'some_device', 'host_name': 'example.com', @@ -405,8 +413,9 @@ class TestComponentsDeviceTracker(unittest.TestCase): def test_new_device_event_fired(self): """Test that the device tracker will fire an event.""" - self.assertTrue(setup_component(self.hass, device_tracker.DOMAIN, - TEST_PLATFORM)) + with assert_setup_component(1, device_tracker.DOMAIN): + assert setup_component(self.hass, device_tracker.DOMAIN, + TEST_PLATFORM) test_events = [] @callback @@ -434,8 +443,9 @@ class TestComponentsDeviceTracker(unittest.TestCase): # pylint: disable=invalid-name def test_not_write_duplicate_yaml_keys(self): """Test that the device tracker will not generate invalid YAML.""" - self.assertTrue(setup_component(self.hass, device_tracker.DOMAIN, - TEST_PLATFORM)) + with assert_setup_component(1, device_tracker.DOMAIN): + assert setup_component(self.hass, device_tracker.DOMAIN, + TEST_PLATFORM) device_tracker.see(self.hass, 'mac_1', host_name='hello') device_tracker.see(self.hass, 'mac_2', host_name='hello') @@ -449,8 +459,9 @@ class TestComponentsDeviceTracker(unittest.TestCase): # pylint: disable=invalid-name def test_not_allow_invalid_dev_id(self): """Test that the device tracker will not allow invalid dev ids.""" - self.assertTrue(setup_component(self.hass, device_tracker.DOMAIN, - TEST_PLATFORM)) + with assert_setup_component(1, device_tracker.DOMAIN): + assert setup_component(self.hass, device_tracker.DOMAIN, + TEST_PLATFORM) device_tracker.see(self.hass, dev_id='hello-world') diff --git a/tests/components/device_tracker/test_locative.py b/tests/components/device_tracker/test_locative.py index b1977556c63..20257d5d1f5 100644 --- a/tests/components/device_tracker/test_locative.py +++ b/tests/components/device_tracker/test_locative.py @@ -9,7 +9,8 @@ import homeassistant.components.device_tracker as device_tracker import homeassistant.components.http as http from homeassistant.const import CONF_PLATFORM -from tests.common import get_test_home_assistant, get_test_instance_port +from tests.common import ( + assert_setup_component, get_test_home_assistant, get_test_instance_port) SERVER_PORT = get_test_instance_port() HTTP_BASE_URL = "http://127.0.0.1:{}".format(SERVER_PORT) @@ -31,6 +32,7 @@ def setUpModule(): global hass hass = get_test_home_assistant() + # http is not platform based, assert_setup_component not applicable bootstrap.setup_component(hass, http.DOMAIN, { http.DOMAIN: { http.CONF_SERVER_PORT: SERVER_PORT @@ -38,11 +40,12 @@ def setUpModule(): }) # Set up device tracker - bootstrap.setup_component(hass, device_tracker.DOMAIN, { - device_tracker.DOMAIN: { - CONF_PLATFORM: 'locative' - } - }) + with assert_setup_component(1, device_tracker.DOMAIN): + bootstrap.setup_component(hass, device_tracker.DOMAIN, { + device_tracker.DOMAIN: { + CONF_PLATFORM: 'locative' + } + }) hass.start() From b170f4c3996b162d4dd4fc5e92d60fee44b3a7a6 Mon Sep 17 00:00:00 2001 From: Johann Kellerman Date: Wed, 21 Dec 2016 09:42:23 +0200 Subject: [PATCH 020/189] Spread seconds (#5025) --- homeassistant/components/sensor/yr.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/sensor/yr.py b/homeassistant/components/sensor/yr.py index d2b3a35816d..ef12ba392e1 100644 --- a/homeassistant/components/sensor/yr.py +++ b/homeassistant/components/sensor/yr.py @@ -7,6 +7,7 @@ https://home-assistant.io/components/sensor.yr/ import asyncio from datetime import timedelta import logging +from random import randrange from xml.parsers.expat import ExpatError import async_timeout @@ -80,8 +81,9 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): yield from async_add_devices(dev) weather = YrData(hass, coordinates, dev) - # Update weather on the hour - async_track_utc_time_change(hass, weather.async_update, minute=0, second=0) + # Update weather on the hour, spread seconds + async_track_utc_time_change(hass, weather.async_update, minute=0, + second=randrange(5, 25)) yield from weather.async_update() From 25469dd8ee6cc7dddd3e46f390fe7d0ab2d91e56 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Wed, 21 Dec 2016 10:22:12 +0100 Subject: [PATCH 021/189] Bugfix voicerss post api (#5021) * Bugfix voicerss post api * fix unittest * Add cache to service description --- homeassistant/components/tts/services.yaml | 8 +++- homeassistant/components/tts/voicerss.py | 27 +++++++++++-- tests/components/tts/test_voicerss.py | 45 +++++++++++++++++++--- 3 files changed, 68 insertions(+), 12 deletions(-) diff --git a/homeassistant/components/tts/services.yaml b/homeassistant/components/tts/services.yaml index aba1334da87..5cb146950b4 100644 --- a/homeassistant/components/tts/services.yaml +++ b/homeassistant/components/tts/services.yaml @@ -3,12 +3,16 @@ say: fields: entity_id: - description: Name(s) of media player entities + description: Name(s) of media player entities. example: 'media_player.floor' message: - description: Text to speak on devices + description: Text to speak on devices. example: 'My name is hanna' + cache: + description: Control file cache of this message. + example: 'true' + clear_cache: description: Remove cache files and RAM cache. diff --git a/homeassistant/components/tts/voicerss.py b/homeassistant/components/tts/voicerss.py index 728a1996a5d..fdbe8a8d806 100644 --- a/homeassistant/components/tts/voicerss.py +++ b/homeassistant/components/tts/voicerss.py @@ -21,6 +21,18 @@ _LOGGER = logging.getLogger(__name__) VOICERSS_API_URL = "https://api.voicerss.org/" +ERROR_MSG = [ + b'Error description', + b'The subscription is expired or requests count limitation is exceeded!', + b'The request content length is too large!', + b'The language does not support!', + b'The language is not specified!', + b'The text is not specified!', + b'The API key is not available!', + b'The API key is not specified!', + b'The subscription does not support SSML!', +] + SUPPORT_LANGUAGES = [ 'ca-es', 'zh-cn', 'zh-hk', 'zh-tw', 'da-dk', 'nl-nl', 'en-au', 'en-ca', 'en-gb', 'en-in', 'en-us', 'fi-fi', 'fr-ca', 'fr-fr', 'de-de', 'it-it', @@ -83,7 +95,7 @@ class VoiceRSSProvider(Provider): self.hass = hass self.extension = conf.get(CONF_CODEC) - self.params = { + self.form_data = { 'key': conf.get(CONF_API_KEY), 'hl': conf.get(CONF_LANG), 'c': (conf.get(CONF_CODEC)).upper(), @@ -94,21 +106,28 @@ class VoiceRSSProvider(Provider): def async_get_tts_audio(self, message): """Load TTS from voicerss.""" websession = async_get_clientsession(self.hass) + form_data = self.form_data.copy() + + form_data['src'] = message request = None try: with async_timeout.timeout(10, loop=self.hass.loop): request = yield from websession.post( - VOICERSS_API_URL, params=self.params, - data=bytes(message, 'utf-8') + VOICERSS_API_URL, data=form_data ) 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() + if data in ERROR_MSG: + _LOGGER.error( + "Error receive %s from voicerss.", str(data, 'utf-8')) + return (None, None) + except (asyncio.TimeoutError, aiohttp.errors.ClientError): _LOGGER.error("Timeout for voicerss api.") return (None, None) diff --git a/tests/components/tts/test_voicerss.py b/tests/components/tts/test_voicerss.py index 44ce0d6739f..ea1263b189e 100644 --- a/tests/components/tts/test_voicerss.py +++ b/tests/components/tts/test_voicerss.py @@ -20,11 +20,12 @@ class TestTTSVoiceRSSPlatform(object): self.hass = get_test_home_assistant() self.url = "https://api.voicerss.org/" - self.url_param = { + self.form_data = { 'key': '1234567xx', 'hl': 'en-us', 'c': 'MP3', 'f': '8khz_8bit_mono', + 'src': "I person is on front of your door.", } def teardown_method(self): @@ -63,7 +64,7 @@ class TestTTSVoiceRSSPlatform(object): calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) aioclient_mock.post( - self.url, params=self.url_param, status=200, content=b'test') + self.url, data=self.form_data, status=200, content=b'test') config = { tts.DOMAIN: { @@ -82,15 +83,16 @@ class TestTTSVoiceRSSPlatform(object): assert len(calls) == 1 assert len(aioclient_mock.mock_calls) == 1 + assert aioclient_mock.mock_calls[0][2] == self.form_data assert calls[0].data[ATTR_MEDIA_CONTENT_ID].find(".mp3") != -1 def test_service_say_german(self, aioclient_mock): """Test service call say with german code.""" calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) - self.url_param['hl'] = 'de-de' + self.form_data['hl'] = 'de-de' aioclient_mock.post( - self.url, params=self.url_param, status=200, content=b'test') + self.url, data=self.form_data, status=200, content=b'test') config = { tts.DOMAIN: { @@ -110,13 +112,14 @@ class TestTTSVoiceRSSPlatform(object): assert len(calls) == 1 assert len(aioclient_mock.mock_calls) == 1 + assert aioclient_mock.mock_calls[0][2] == self.form_data def test_service_say_error(self, aioclient_mock): """Test service call say with http response 400.""" calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) aioclient_mock.post( - self.url, params=self.url_param, status=400, content=b'test') + self.url, data=self.form_data, status=400, content=b'test') config = { tts.DOMAIN: { @@ -135,13 +138,14 @@ class TestTTSVoiceRSSPlatform(object): assert len(calls) == 0 assert len(aioclient_mock.mock_calls) == 1 + assert aioclient_mock.mock_calls[0][2] == self.form_data def test_service_say_timeout(self, aioclient_mock): """Test service call say with http timeout.""" calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) aioclient_mock.post( - self.url, params=self.url_param, exc=asyncio.TimeoutError()) + self.url, data=self.form_data, exc=asyncio.TimeoutError()) config = { tts.DOMAIN: { @@ -160,3 +164,32 @@ class TestTTSVoiceRSSPlatform(object): assert len(calls) == 0 assert len(aioclient_mock.mock_calls) == 1 + assert aioclient_mock.mock_calls[0][2] == self.form_data + + def test_service_say_error_msg(self, aioclient_mock): + """Test service call say with http error api message.""" + calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) + + aioclient_mock.post( + self.url, data=self.form_data, status=200, + content=b'The subscription does not support SSML!' + ) + + config = { + tts.DOMAIN: { + 'platform': 'voicerss', + 'api_key': '1234567xx', + } + } + + with assert_setup_component(1, tts.DOMAIN): + setup_component(self.hass, tts.DOMAIN, config) + + self.hass.services.call(tts.DOMAIN, 'voicerss_say', { + tts.ATTR_MESSAGE: "I person is on front of your door.", + }) + self.hass.block_till_done() + + assert len(calls) == 0 + assert len(aioclient_mock.mock_calls) == 1 + assert aioclient_mock.mock_calls[0][2] == self.form_data From 4c9347eb2ad904ae8b7f4dd8d4c0fc1ad6763eac Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Wed, 21 Dec 2016 11:39:59 +0100 Subject: [PATCH 022/189] Fix spell media_player service (#5030) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add an optional extended description… --- homeassistant/components/media_player/services.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/media_player/services.yaml b/homeassistant/components/media_player/services.yaml index 9482661b464..ca3aaba7a9e 100644 --- a/homeassistant/components/media_player/services.yaml +++ b/homeassistant/components/media_player/services.yaml @@ -59,8 +59,8 @@ volume_set: description: Name(s) of entities to set volume level on example: 'media_player.living_room_sonos' volume_level: - description: Volume level to set - example: 60 + description: Volume level to set as float + example: 0.6 media_play_pause: description: Toggle media player play/pause state @@ -236,4 +236,4 @@ soundtouch_remove_zone_slave: fields: entity_id: description: Name of entites that will be remove from the multi-room zone. Platform dependent. - example: 'media_player.soundtouch_home' \ No newline at end of file + example: 'media_player.soundtouch_home' From 9a1605486707ce9cb942085e962726cfdd21dbc7 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Wed, 21 Dec 2016 15:11:14 +0100 Subject: [PATCH 023/189] Bugfix create a task from a task in component update (#5033) --- homeassistant/components/alarm_control_panel/__init__.py | 2 +- homeassistant/components/light/__init__.py | 2 +- homeassistant/components/remote/__init__.py | 2 +- homeassistant/components/switch/__init__.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/alarm_control_panel/__init__.py b/homeassistant/components/alarm_control_panel/__init__.py index 1b64431c7a1..54be6aa4d0b 100644 --- a/homeassistant/components/alarm_control_panel/__init__.py +++ b/homeassistant/components/alarm_control_panel/__init__.py @@ -115,7 +115,7 @@ def async_setup(hass, config): update_coro = hass.loop.create_task( alarm.async_update_ha_state(True)) if hasattr(alarm, 'async_update'): - update_tasks.append(hass.loop.create_task(update_coro)) + update_tasks.append(update_coro) else: yield from update_coro diff --git a/homeassistant/components/light/__init__.py b/homeassistant/components/light/__init__.py index 869bbd90e7d..d98d8b0d5fc 100644 --- a/homeassistant/components/light/__init__.py +++ b/homeassistant/components/light/__init__.py @@ -253,7 +253,7 @@ def async_setup(hass, config): update_coro = hass.loop.create_task( light.async_update_ha_state(True)) if hasattr(light, 'async_update'): - update_tasks.append(hass.loop.create_task(update_coro)) + update_tasks.append(update_coro) else: yield from update_coro diff --git a/homeassistant/components/remote/__init__.py b/homeassistant/components/remote/__init__.py index 3a481e83830..2baef2011fc 100755 --- a/homeassistant/components/remote/__init__.py +++ b/homeassistant/components/remote/__init__.py @@ -115,7 +115,7 @@ def async_setup(hass, config): update_coro = hass.loop.create_task( remote.async_update_ha_state(True)) if hasattr(remote, 'async_update'): - update_tasks.append(hass.loop.create_task(update_coro)) + update_tasks.append(update_coro) else: yield from update_coro diff --git a/homeassistant/components/switch/__init__.py b/homeassistant/components/switch/__init__.py index 846a87f5067..fe74711dff0 100644 --- a/homeassistant/components/switch/__init__.py +++ b/homeassistant/components/switch/__init__.py @@ -98,7 +98,7 @@ def async_setup(hass, config): update_coro = hass.loop.create_task( switch.async_update_ha_state(True)) if hasattr(switch, 'async_update'): - update_tasks.append(hass.loop.create_task(update_coro)) + update_tasks.append(update_coro) else: yield from update_coro From 334b3b8636540070222755a35ac35bc2baa797d5 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Thu, 22 Dec 2016 16:08:01 +0100 Subject: [PATCH 024/189] Bugfix async log handle re-close bug (#5034) * Bugfix async log handle re-close bug * Check on running thread on async_close * Fix now on right place --- homeassistant/util/logging.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/homeassistant/util/logging.py b/homeassistant/util/logging.py index 0a1218f5796..736fee0d1b3 100644 --- a/homeassistant/util/logging.py +++ b/homeassistant/util/logging.py @@ -55,7 +55,9 @@ class AsyncHandler(object): When blocking=True, will wait till closed. """ - self.close() + if not self._thread.is_alive(): + return + yield from self._queue.put(None) if blocking: # Python 3.4.4+ From 5e1e5992af38a5ad47aa44f989db568ead2cd600 Mon Sep 17 00:00:00 2001 From: John Mihalic Date: Thu, 22 Dec 2016 12:45:05 -0500 Subject: [PATCH 025/189] Update pyHik requirement version (#5040) --- homeassistant/components/binary_sensor/hikvision.py | 2 +- requirements_all.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/binary_sensor/hikvision.py b/homeassistant/components/binary_sensor/hikvision.py index 90d61cbf3b7..1cc98372cee 100644 --- a/homeassistant/components/binary_sensor/hikvision.py +++ b/homeassistant/components/binary_sensor/hikvision.py @@ -17,7 +17,7 @@ from homeassistant.const import ( CONF_HOST, CONF_PORT, CONF_NAME, CONF_USERNAME, CONF_PASSWORD, CONF_SSL, EVENT_HOMEASSISTANT_STOP, ATTR_LAST_TRIP_TIME, CONF_CUSTOMIZE) -REQUIREMENTS = ['pyhik==0.0.6', 'pydispatcher==2.0.5'] +REQUIREMENTS = ['pyhik==0.0.7', 'pydispatcher==2.0.5'] _LOGGER = logging.getLogger(__name__) CONF_IGNORED = 'ignored' diff --git a/requirements_all.txt b/requirements_all.txt index 5e10b96614e..394db97f2fe 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -411,7 +411,7 @@ pyfttt==0.3 pyharmony==1.0.12 # homeassistant.components.binary_sensor.hikvision -pyhik==0.0.6 +pyhik==0.0.7 # homeassistant.components.homematic pyhomematic==0.1.18 From 6c50f53696704faaaa10e5a53ebc8efec231d4d6 Mon Sep 17 00:00:00 2001 From: Josh Nichols Date: Thu, 22 Dec 2016 14:22:07 -0500 Subject: [PATCH 026/189] Nest fixes (#5011) * Updated Nest API to have logical names * Fix NoneType not having replace method in NestSensor constructor * Move name setting to constructor, in case zone.name causes IO. * normalize is_online to online * Updated python-nest API * push is_* helpers down to python-nest, and use inheritence to implement rather than checking class name * Update python-nest --- .../components/binary_sensor/nest.py | 18 ++++----- homeassistant/components/camera/nest.py | 6 +-- homeassistant/components/climate/nest.py | 2 +- homeassistant/components/nest.py | 37 ++++++------------- homeassistant/components/sensor/nest.py | 21 +++-------- requirements_all.txt | 2 +- 6 files changed, 31 insertions(+), 55 deletions(-) diff --git a/homeassistant/components/binary_sensor/nest.py b/homeassistant/components/binary_sensor/nest.py index 070703df32a..c66373bc58a 100644 --- a/homeassistant/components/binary_sensor/nest.py +++ b/homeassistant/components/binary_sensor/nest.py @@ -13,8 +13,7 @@ from homeassistant.components.binary_sensor import ( BinarySensorDevice, PLATFORM_SCHEMA) from homeassistant.components.sensor.nest import NestSensor from homeassistant.const import (CONF_SCAN_INTERVAL, CONF_MONITORED_CONDITIONS) -from homeassistant.components.nest import ( - DATA_NEST, is_thermostat, is_camera) +from homeassistant.components.nest import DATA_NEST import homeassistant.helpers.config_validation as cv DEPENDENCIES = ['nest'] @@ -76,9 +75,9 @@ def setup_platform(hass, config, add_devices, discovery_info=None): _LOGGER.error(wstr) sensors = [] - device_chain = chain(nest.devices(), - nest.protect_devices(), - nest.camera_devices()) + device_chain = chain(nest.thermostats(), + nest.smoke_co_alarms(), + nest.cameras()) for structure, device in device_chain: sensors += [NestBinarySensor(structure, device, variable) for variable in conf @@ -86,9 +85,9 @@ def setup_platform(hass, config, add_devices, discovery_info=None): sensors += [NestBinarySensor(structure, device, variable) for variable in conf if variable in CLIMATE_BINARY_TYPES - and is_thermostat(device)] + and device.is_thermostat] - if is_camera(device): + if device.is_camera: sensors += [NestBinarySensor(structure, device, variable) for variable in conf if variable in CAMERA_BINARY_TYPES] @@ -118,13 +117,14 @@ class NestActivityZoneSensor(NestBinarySensor): def __init__(self, structure, device, zone): """Initialize the sensor.""" - super(NestActivityZoneSensor, self).__init__(structure, device, None) + super(NestActivityZoneSensor, self).__init__(structure, device, "") self.zone = zone + self._name = "{} {} activity".format(self._name, self.zone.name) @property def name(self): """Return the name of the nest, if any.""" - return "{} {} activity".format(self._name, self.zone.name) + return self._name def update(self): """Retrieve latest state.""" diff --git a/homeassistant/components/camera/nest.py b/homeassistant/components/camera/nest.py index aa2041e07a6..6ffb7ef8561 100644 --- a/homeassistant/components/camera/nest.py +++ b/homeassistant/components/camera/nest.py @@ -27,7 +27,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): if discovery_info is None: return - camera_devices = hass.data[nest.DATA_NEST].camera_devices() + camera_devices = hass.data[nest.DATA_NEST].cameras() cameras = [NestCamera(structure, device) for structure, device in camera_devices] add_devices(cameras, True) @@ -43,7 +43,7 @@ class NestCamera(Camera): self.device = device self._location = None self._name = None - self._is_online = None + self._online = None self._is_streaming = None self._is_video_history_enabled = False # Default to non-NestAware subscribed, but will be fixed during update @@ -76,7 +76,7 @@ class NestCamera(Camera): """Cache value from Python-nest.""" self._location = self.device.where self._name = self.device.name - self._is_online = self.device.is_online + self._online = self.device.online self._is_streaming = self.device.is_streaming self._is_video_history_enabled = self.device.is_video_history_enabled diff --git a/homeassistant/components/climate/nest.py b/homeassistant/components/climate/nest.py index e098c3c3709..32cae5c4cec 100644 --- a/homeassistant/components/climate/nest.py +++ b/homeassistant/components/climate/nest.py @@ -40,7 +40,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): add_devices( [NestThermostat(structure, device, temp_unit) - for structure, device in hass.data[DATA_NEST].devices()], + for structure, device in hass.data[DATA_NEST].thermostats()], True ) diff --git a/homeassistant/components/nest.py b/homeassistant/components/nest.py index cd871c8e039..30a256f1c37 100644 --- a/homeassistant/components/nest.py +++ b/homeassistant/components/nest.py @@ -19,8 +19,8 @@ _LOGGER = logging.getLogger(__name__) REQUIREMENTS = [ 'http://github.com/technicalpickles/python-nest' - '/archive/b8391d2b3cb8682f8b0c2bdff477179983609f39.zip' # nest-cam branch - '#python-nest==3.0.2'] + '/archive/e6c9d56a8df455d4d7746389811f2c1387e8cb33.zip' # nest-cam branch + '#python-nest==3.0.3'] DOMAIN = 'nest' @@ -132,12 +132,12 @@ class NestDevice(object): self._structure = conf[CONF_STRUCTURE] _LOGGER.debug("Structures to include: %s", self._structure) - def devices(self): - """Generator returning list of devices and their location.""" + def thermostats(self): + """Generator returning list of thermostats and their location.""" try: for structure in self.nest.structures: if structure.name in self._structure: - for device in structure.devices: + for device in structure.thermostats: yield (structure, device) else: _LOGGER.debug("Ignoring structure %s, not in %s", @@ -146,12 +146,12 @@ class NestDevice(object): _LOGGER.error( "Connection error logging into the nest web service.") - def protect_devices(self): - """Generator returning list of protect devices.""" + def smoke_co_alarms(self): + """Generator returning list of smoke co alarams.""" try: for structure in self.nest.structures: if structure.name in self._structure: - for device in structure.protectdevices: + for device in structure.smoke_co_alarms: yield(structure, device) else: _LOGGER.info("Ignoring structure %s, not in %s", @@ -160,12 +160,12 @@ class NestDevice(object): _LOGGER.error( "Connection error logging into the nest web service.") - def camera_devices(self): - """Generator returning list of camera devices.""" + def cameras(self): + """Generator returning list of cameras.""" try: for structure in self.nest.structures: if structure.name in self._structure: - for device in structure.cameradevices: + for device in structure.cameras: yield(structure, device) else: _LOGGER.info("Ignoring structure %s, not in %s", @@ -173,18 +173,3 @@ class NestDevice(object): except socket.error: _LOGGER.error( "Connection error logging into the nest web service.") - - -def is_thermostat(device): - """Target devices that are Nest Thermostats.""" - return bool(device.__class__.__name__ == 'Device') - - -def is_protect(device): - """Target devices that are Nest Protect Smoke Alarms.""" - return bool(device.__class__.__name__ == 'ProtectDevice') - - -def is_camera(device): - """Target devices that are Nest Protect Smoke Alarms.""" - return bool(device.__class__.__name__ == 'CameraDevice') diff --git a/homeassistant/components/sensor/nest.py b/homeassistant/components/sensor/nest.py index f7bbf41cff9..a074dcc310d 100644 --- a/homeassistant/components/sensor/nest.py +++ b/homeassistant/components/sensor/nest.py @@ -9,7 +9,8 @@ import logging import voluptuous as vol -from homeassistant.components.nest import DATA_NEST, DOMAIN +from homeassistant.components.nest import ( + DATA_NEST, DOMAIN) from homeassistant.helpers.entity import Entity from homeassistant.const import ( TEMP_CELSIUS, TEMP_FAHRENHEIT, CONF_PLATFORM, @@ -93,31 +94,21 @@ def setup_platform(hass, config, add_devices, discovery_info=None): _LOGGER.error(wstr) all_sensors = [] - for structure, device in chain(nest.devices(), nest.protect_devices()): + for structure, device in chain(nest.thermostats(), nest.smoke_co_alarms()): sensors = [NestBasicSensor(structure, device, variable) for variable in conf - if variable in SENSOR_TYPES and is_thermostat(device)] + if variable in SENSOR_TYPES and device.is_thermostat] sensors += [NestTempSensor(structure, device, variable) for variable in conf - if variable in SENSOR_TEMP_TYPES and is_thermostat(device)] + if variable in SENSOR_TEMP_TYPES and device.is_thermostat] sensors += [NestProtectSensor(structure, device, variable) for variable in conf - if variable in PROTECT_VARS and is_protect(device)] + if variable in PROTECT_VARS and device.is_smoke_co_alarm] all_sensors.extend(sensors) add_devices(all_sensors, True) -def is_thermostat(device): - """Target devices that are Nest Thermostats.""" - return bool(device.__class__.__name__ == 'Device') - - -def is_protect(device): - """Target devices that are Nest Protect Smoke Alarms.""" - return bool(device.__class__.__name__ == 'ProtectDevice') - - class NestSensor(Entity): """Representation of a Nest sensor.""" diff --git a/requirements_all.txt b/requirements_all.txt index 394db97f2fe..c8cd8f81802 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -175,7 +175,7 @@ hikvision==0.4 # http://github.com/adafruit/Adafruit_Python_DHT/archive/310c59b0293354d07d94375f1365f7b9b9110c7d.zip#Adafruit_DHT==1.3.0 # homeassistant.components.nest -http://github.com/technicalpickles/python-nest/archive/b8391d2b3cb8682f8b0c2bdff477179983609f39.zip#python-nest==3.0.2 +http://github.com/technicalpickles/python-nest/archive/e6c9d56a8df455d4d7746389811f2c1387e8cb33.zip#python-nest==3.0.3 # homeassistant.components.light.flux_led https://github.com/Danielhiversen/flux_led/archive/0.10.zip#flux_led==0.10 From 1c1b04718f276cee013c3b0c17e34b76189796d6 Mon Sep 17 00:00:00 2001 From: abmantis Date: Mon, 26 Dec 2016 12:58:32 +0000 Subject: [PATCH 027/189] emulated_hue: fix alexa "device not responding" (#5058) * emulated_hue: fix alexa "device not responding" we need to set the brightness to 100 for devices that only turn on * emulated_hue: dont override brightness for scenes/scripts * emulated_hue: python and semi-colons * emulated_hue: fix output brightness level --- homeassistant/components/emulated_hue/hue_api.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/homeassistant/components/emulated_hue/hue_api.py b/homeassistant/components/emulated_hue/hue_api.py index 57a4f18825a..cc63873a1fd 100644 --- a/homeassistant/components/emulated_hue/hue_api.py +++ b/homeassistant/components/emulated_hue/hue_api.py @@ -288,6 +288,9 @@ def get_entity_state(config, entity): final_brightness = round(min(1.0, level) * 255) else: final_state, final_brightness = cached_state + # Make sure brightness is valid + if final_brightness is None: + final_brightness = 255 if final_state else 0 return (final_state, final_brightness) From e5dfcf731080b345af7b21c2cbdd60f7dd4b9ada Mon Sep 17 00:00:00 2001 From: abmantis Date: Mon, 26 Dec 2016 13:00:43 +0000 Subject: [PATCH 028/189] Emulated hue: add support for cover open/close (#5057) * add support for cover open/close * fix action compare; reduce line width --- .../components/emulated_hue/hue_api.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/emulated_hue/hue_api.py b/homeassistant/components/emulated_hue/hue_api.py index cc63873a1fd..24060bdfbcb 100644 --- a/homeassistant/components/emulated_hue/hue_api.py +++ b/homeassistant/components/emulated_hue/hue_api.py @@ -7,7 +7,8 @@ from aiohttp import web from homeassistant import core from homeassistant.const import ( ATTR_ENTITY_ID, SERVICE_TURN_OFF, SERVICE_TURN_ON, SERVICE_VOLUME_SET, - STATE_ON, STATE_OFF, HTTP_BAD_REQUEST, HTTP_NOT_FOUND, + SERVICE_OPEN_COVER, SERVICE_CLOSE_COVER, STATE_ON, STATE_OFF, + HTTP_BAD_REQUEST, HTTP_NOT_FOUND, ) from homeassistant.components.light import ( ATTR_BRIGHTNESS, ATTR_SUPPORTED_FEATURES, SUPPORT_BRIGHTNESS @@ -161,6 +162,9 @@ class HueOneLightChangeView(HomeAssistantView): # Choose general HA domain domain = core.DOMAIN + # Entity needs separate call to turn on + turn_on_needed = False + # Convert the resulting "on" status into the service we need to call service = SERVICE_TURN_ON if result else SERVICE_TURN_OFF @@ -189,11 +193,20 @@ class HueOneLightChangeView(HomeAssistantView): ATTR_SUPPORTED_MEDIA_COMMANDS, 0) if media_commands & SUPPORT_VOLUME_SET == SUPPORT_VOLUME_SET: if brightness is not None: + turn_on_needed = True domain = entity.domain service = SERVICE_VOLUME_SET # Convert 0-100 to 0.0-1.0 data[ATTR_MEDIA_VOLUME_LEVEL] = brightness / 100.0 + # If the requested entity is a cover, convert to open_cover/close_cover + elif entity.domain == "cover": + domain = entity.domain + if service == SERVICE_TURN_ON: + service = SERVICE_OPEN_COVER + else: + service = SERVICE_CLOSE_COVER + if entity.domain in config.off_maps_to_on_domains: # Map the off command to on service = SERVICE_TURN_ON @@ -206,7 +219,7 @@ class HueOneLightChangeView(HomeAssistantView): config.cached_states[entity_id] = (result, brightness) # Separate call to turn on needed - if domain != core.DOMAIN: + if turn_on_needed: hass.async_add_job(hass.services.async_call( core.DOMAIN, SERVICE_TURN_ON, {ATTR_ENTITY_ID: entity_id}, blocking=True)) From 43e5d28643934e6297c5aeec24c5563f8bc7c020 Mon Sep 17 00:00:00 2001 From: Johan Bloemberg Date: Mon, 26 Dec 2016 14:02:12 +0100 Subject: [PATCH 029/189] Fix and test for prefixed MAC addresses. (#5052) * Fix and test for prefixed MAC addresses. * Fix style. * Don't commit old code. * Fix style. --- .../components/device_tracker/__init__.py | 9 +++-- tests/components/device_tracker/test_init.py | 34 +++++++++++++++++++ 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/device_tracker/__init__.py b/homeassistant/components/device_tracker/__init__.py index d497ea4c314..902ff509b3e 100644 --- a/homeassistant/components/device_tracker/__init__.py +++ b/homeassistant/components/device_tracker/__init__.py @@ -485,13 +485,18 @@ class Device(Entity): if not self.mac: return None + if '_' in self.mac: + _, mac = self.mac.split('_', 1) + else: + mac = self.mac + # prevent lookup of invalid macs - if not len(self.mac.split(':')) == 6: + if not len(mac.split(':')) == 6: return 'unknown' # we only need the first 3 bytes of the mac for a lookup # this improves somewhat on privacy - oui_bytes = self.mac.split(':')[0:3] + oui_bytes = mac.split(':')[0:3] # bytes like 00 get truncates to 0, API needs full bytes oui = '{:02x}:{:02x}:{:02x}'.format(*[int(b, 16) for b in oui_bytes]) url = 'http://api.macvendors.com/' + oui diff --git a/tests/components/device_tracker/test_init.py b/tests/components/device_tracker/test_init.py index d1c19b30307..555efd97ed5 100644 --- a/tests/components/device_tracker/test_init.py +++ b/tests/components/device_tracker/test_init.py @@ -210,6 +210,40 @@ class TestComponentsDeviceTracker(unittest.TestCase): self.assertEqual(device.vendor, vendor_string) + def test_mac_vendor_mac_formats(self): + """Verify all variations of MAC addresses are handled correctly.""" + vendor_string = 'Raspberry Pi Foundation' + + with mock_aiohttp_client() as aioclient_mock: + aioclient_mock.get('http://api.macvendors.com/b8:27:eb', + text=vendor_string) + aioclient_mock.get('http://api.macvendors.com/00:27:eb', + text=vendor_string) + + mac = 'B8:27:EB:00:00:00' + device = device_tracker.Device( + self.hass, timedelta(seconds=180), + True, 'test', mac, 'Test name') + run_coroutine_threadsafe(device.set_vendor_for_mac(), + self.hass.loop).result() + self.assertEqual(device.vendor, vendor_string) + + mac = '0:27:EB:00:00:00' + device = device_tracker.Device( + self.hass, timedelta(seconds=180), + True, 'test', mac, 'Test name') + run_coroutine_threadsafe(device.set_vendor_for_mac(), + self.hass.loop).result() + self.assertEqual(device.vendor, vendor_string) + + mac = 'PREFIXED_B8:27:EB:00:00:00' + device = device_tracker.Device( + self.hass, timedelta(seconds=180), + True, 'test', mac, 'Test name') + run_coroutine_threadsafe(device.set_vendor_for_mac(), + self.hass.loop).result() + self.assertEqual(device.vendor, vendor_string) + def test_mac_vendor_lookup_unknown(self): """Prevent another mac vendor lookup if was not found first time.""" mac = 'B8:27:EB:00:00:00' From 22d1bf0acd00bb00874a44eab6b783cdcc879466 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Mon, 26 Dec 2016 14:09:15 +0100 Subject: [PATCH 030/189] Async migrate climate (#5026) * Async migrate climate * Change update handling --- homeassistant/components/climate/__init__.py | 204 ++++++++++++++----- 1 file changed, 150 insertions(+), 54 deletions(-) diff --git a/homeassistant/components/climate/__init__.py b/homeassistant/components/climate/__init__.py index 80ef97622d5..79d0fbbb2de 100644 --- a/homeassistant/components/climate/__init__.py +++ b/homeassistant/components/climate/__init__.py @@ -4,8 +4,10 @@ Provides functionality to interact with climate devices. For more details about this component, please refer to the documentation at https://home-assistant.io/components/climate/ """ +import asyncio import logging import os +import functools as ft from numbers import Number import voluptuous as vol @@ -185,17 +187,38 @@ def set_swing_mode(hass, swing_mode, entity_id=None): hass.services.call(DOMAIN, SERVICE_SET_SWING_MODE, data) -def setup(hass, config): +@asyncio.coroutine +def async_setup(hass, config): """Setup climate devices.""" component = EntityComponent(_LOGGER, DOMAIN, hass, SCAN_INTERVAL) - component.setup(config) + yield from component.async_setup(config) - descriptions = load_yaml_config_file( + descriptions = yield from hass.loop.run_in_executor( + None, load_yaml_config_file, os.path.join(os.path.dirname(__file__), 'services.yaml')) - def away_mode_set_service(service): + @asyncio.coroutine + def _async_update_climate(target_climate): + """Update climate entity after service stuff.""" + update_tasks = [] + for climate in target_climate: + if not climate.should_poll: + continue + + update_coro = hass.loop.create_task( + climate.async_update_ha_state(True)) + if hasattr(climate, 'async_update'): + update_tasks.append(update_coro) + else: + yield from update_coro + + if update_tasks: + yield from asyncio.wait(update_tasks, loop=hass.loop) + + @asyncio.coroutine + def async_away_mode_set_service(service): """Set away mode on target climate devices.""" - target_climate = component.extract_from_service(service) + target_climate = component.async_extract_from_service(service) away_mode = service.data.get(ATTR_AWAY_MODE) @@ -207,21 +230,21 @@ def setup(hass, config): for climate in target_climate: if away_mode: - climate.turn_away_mode_on() + yield from climate.async_turn_away_mode_on() else: - climate.turn_away_mode_off() + yield from climate.async_turn_away_mode_off() - if climate.should_poll: - climate.update_ha_state(True) + yield from _async_update_climate(target_climate) - hass.services.register( - DOMAIN, SERVICE_SET_AWAY_MODE, away_mode_set_service, + hass.services.async_register( + DOMAIN, SERVICE_SET_AWAY_MODE, async_away_mode_set_service, descriptions.get(SERVICE_SET_AWAY_MODE), schema=SET_AWAY_MODE_SCHEMA) - def aux_heat_set_service(service): + @asyncio.coroutine + def async_aux_heat_set_service(service): """Set auxillary heater on target climate devices.""" - target_climate = component.extract_from_service(service) + target_climate = component.async_extract_from_service(service) aux_heat = service.data.get(ATTR_AUX_HEAT) @@ -233,21 +256,21 @@ def setup(hass, config): for climate in target_climate: if aux_heat: - climate.turn_aux_heat_on() + yield from climate.async_turn_aux_heat_on() else: - climate.turn_aux_heat_off() + yield from climate.async_turn_aux_heat_off() - if climate.should_poll: - climate.update_ha_state(True) + yield from _async_update_climate(target_climate) - hass.services.register( - DOMAIN, SERVICE_SET_AUX_HEAT, aux_heat_set_service, + hass.services.async_register( + DOMAIN, SERVICE_SET_AUX_HEAT, async_aux_heat_set_service, descriptions.get(SERVICE_SET_AUX_HEAT), schema=SET_AUX_HEAT_SCHEMA) - def temperature_set_service(service): + @asyncio.coroutine + def async_temperature_set_service(service): """Set temperature on the target climate devices.""" - target_climate = component.extract_from_service(service) + target_climate = component.async_extract_from_service(service) for climate in target_climate: kwargs = {} @@ -261,18 +284,19 @@ def setup(hass, config): else: kwargs[value] = temp - climate.set_temperature(**kwargs) - if climate.should_poll: - climate.update_ha_state(True) + yield from climate.async_set_temperature(**kwargs) - hass.services.register( - DOMAIN, SERVICE_SET_TEMPERATURE, temperature_set_service, + yield from _async_update_climate(target_climate) + + hass.services.async_register( + DOMAIN, SERVICE_SET_TEMPERATURE, async_temperature_set_service, descriptions.get(SERVICE_SET_TEMPERATURE), schema=SET_TEMPERATURE_SCHEMA) - def humidity_set_service(service): + @asyncio.coroutine + def async_humidity_set_service(service): """Set humidity on the target climate devices.""" - target_climate = component.extract_from_service(service) + target_climate = component.async_extract_from_service(service) humidity = service.data.get(ATTR_HUMIDITY) @@ -283,19 +307,19 @@ def setup(hass, config): return for climate in target_climate: - climate.set_humidity(humidity) + yield from climate.async_set_humidity(humidity) - if climate.should_poll: - climate.update_ha_state(True) + yield from _async_update_climate(target_climate) - hass.services.register( - DOMAIN, SERVICE_SET_HUMIDITY, humidity_set_service, + hass.services.async_register( + DOMAIN, SERVICE_SET_HUMIDITY, async_humidity_set_service, descriptions.get(SERVICE_SET_HUMIDITY), schema=SET_HUMIDITY_SCHEMA) - def fan_mode_set_service(service): + @asyncio.coroutine + def async_fan_mode_set_service(service): """Set fan mode on target climate devices.""" - target_climate = component.extract_from_service(service) + target_climate = component.async_extract_from_service(service) fan = service.data.get(ATTR_FAN_MODE) @@ -306,19 +330,19 @@ def setup(hass, config): return for climate in target_climate: - climate.set_fan_mode(fan) + yield from climate.async_set_fan_mode(fan) - if climate.should_poll: - climate.update_ha_state(True) + yield from _async_update_climate(target_climate) - hass.services.register( - DOMAIN, SERVICE_SET_FAN_MODE, fan_mode_set_service, + hass.services.async_register( + DOMAIN, SERVICE_SET_FAN_MODE, async_fan_mode_set_service, descriptions.get(SERVICE_SET_FAN_MODE), schema=SET_FAN_MODE_SCHEMA) - def operation_set_service(service): + @asyncio.coroutine + def async_operation_set_service(service): """Set operating mode on the target climate devices.""" - target_climate = component.extract_from_service(service) + target_climate = component.async_extract_from_service(service) operation_mode = service.data.get(ATTR_OPERATION_MODE) @@ -329,19 +353,19 @@ def setup(hass, config): return for climate in target_climate: - climate.set_operation_mode(operation_mode) + yield from climate.async_set_operation_mode(operation_mode) - if climate.should_poll: - climate.update_ha_state(True) + yield from _async_update_climate(target_climate) - hass.services.register( - DOMAIN, SERVICE_SET_OPERATION_MODE, operation_set_service, + hass.services.async_register( + DOMAIN, SERVICE_SET_OPERATION_MODE, async_operation_set_service, descriptions.get(SERVICE_SET_OPERATION_MODE), schema=SET_OPERATION_MODE_SCHEMA) - def swing_set_service(service): + @asyncio.coroutine + def async_swing_set_service(service): """Set swing mode on the target climate devices.""" - target_climate = component.extract_from_service(service) + target_climate = component.async_extract_from_service(service) swing_mode = service.data.get(ATTR_SWING_MODE) @@ -352,15 +376,15 @@ def setup(hass, config): return for climate in target_climate: - climate.set_swing_mode(swing_mode) + yield from climate.async_set_swing_mode(swing_mode) - if climate.should_poll: - climate.update_ha_state(True) + yield from _async_update_climate(target_climate) - hass.services.register( - DOMAIN, SERVICE_SET_SWING_MODE, swing_set_service, + hass.services.async_register( + DOMAIN, SERVICE_SET_SWING_MODE, async_swing_set_service, descriptions.get(SERVICE_SET_SWING_MODE), schema=SET_SWING_MODE_SCHEMA) + return True @@ -521,38 +545,110 @@ class ClimateDevice(Entity): """Set new target temperature.""" raise NotImplementedError() + def async_set_temperature(self, **kwargs): + """Set new target temperature. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( + None, ft.partial(self.set_temperature, **kwargs)) + def set_humidity(self, humidity): """Set new target humidity.""" raise NotImplementedError() + def async_set_humidity(self, humidity): + """Set new target humidity. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( + None, self.set_humidity, humidity) + def set_fan_mode(self, fan): """Set new target fan mode.""" raise NotImplementedError() + def async_set_fan_mode(self, fan): + """Set new target fan mode. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( + None, self.set_fan_mode, fan) + def set_operation_mode(self, operation_mode): """Set new target operation mode.""" raise NotImplementedError() + def async_set_operation_mode(self, operation_mode): + """Set new target operation mode. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( + None, self.set_operation_mode, operation_mode) + def set_swing_mode(self, swing_mode): """Set new target swing operation.""" raise NotImplementedError() + def async_set_swing_mode(self, swing_mode): + """Set new target swing operation. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( + None, self.set_swing_mode, swing_mode) + def turn_away_mode_on(self): """Turn away mode on.""" raise NotImplementedError() + def async_turn_away_mode_on(self): + """Turn away mode on. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( + None, self.turn_away_mode_on) + def turn_away_mode_off(self): """Turn away mode off.""" raise NotImplementedError() + def async_turn_away_mode_off(self): + """Turn away mode off. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( + None, self.turn_away_mode_off) + def turn_aux_heat_on(self): """Turn auxillary heater on.""" raise NotImplementedError() + def async_turn_aux_heat_on(self): + """Turn auxillary heater on. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( + None, self.turn_aux_heat_on) + def turn_aux_heat_off(self): """Turn auxillary heater off.""" raise NotImplementedError() + def async_turn_aux_heat_off(self): + """Turn auxillary heater off. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( + None, self.turn_aux_heat_off) + @property def min_temp(self): """Return the minimum temperature.""" From 244cdf43d04317aea0e0a9f2a50f7cc24b9d63a2 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Mon, 26 Dec 2016 14:10:23 +0100 Subject: [PATCH 031/189] Async reduce coro (#5001) * Asyncio coro reduce * Replace comments --- .../alarm_control_panel/__init__.py | 32 ++++++++++++------- homeassistant/components/camera/__init__.py | 7 ++-- homeassistant/components/remote/__init__.py | 7 ++-- homeassistant/components/scene/__init__.py | 5 ++- homeassistant/components/tts/__init__.py | 6 ++-- homeassistant/helpers/entity.py | 26 +++++++++------ 6 files changed, 47 insertions(+), 36 deletions(-) diff --git a/homeassistant/components/alarm_control_panel/__init__.py b/homeassistant/components/alarm_control_panel/__init__.py index 54be6aa4d0b..ea7727cea33 100644 --- a/homeassistant/components/alarm_control_panel/__init__.py +++ b/homeassistant/components/alarm_control_panel/__init__.py @@ -152,40 +152,48 @@ class AlarmControlPanel(Entity): """Send disarm command.""" raise NotImplementedError() - @asyncio.coroutine def async_alarm_disarm(self, code=None): - """Send disarm command.""" - yield from self.hass.loop.run_in_executor( + """Send disarm command. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( None, self.alarm_disarm, code) def alarm_arm_home(self, code=None): """Send arm home command.""" raise NotImplementedError() - @asyncio.coroutine def async_alarm_arm_home(self, code=None): - """Send arm home command.""" - yield from self.hass.loop.run_in_executor( + """Send arm home command. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( None, self.alarm_arm_home, code) def alarm_arm_away(self, code=None): """Send arm away command.""" raise NotImplementedError() - @asyncio.coroutine def async_alarm_arm_away(self, code=None): - """Send arm away command.""" - yield from self.hass.loop.run_in_executor( + """Send arm away command. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( None, self.alarm_arm_away, code) def alarm_trigger(self, code=None): """Send alarm trigger command.""" raise NotImplementedError() - @asyncio.coroutine def async_alarm_trigger(self, code=None): - """Send alarm trigger command.""" - yield from self.hass.loop.run_in_executor( + """Send alarm trigger command. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( None, self.alarm_trigger, code) @property diff --git a/homeassistant/components/camera/__init__.py b/homeassistant/components/camera/__init__.py index 427d4535ef6..8a114cb627d 100644 --- a/homeassistant/components/camera/__init__.py +++ b/homeassistant/components/camera/__init__.py @@ -81,15 +81,12 @@ class Camera(Entity): """Return bytes of camera image.""" raise NotImplementedError() - @asyncio.coroutine def async_camera_image(self): """Return bytes of camera image. - This method must be run in the event loop. + This method must be run in the event loop and returns a coroutine. """ - image = yield from self.hass.loop.run_in_executor( - None, self.camera_image) - return image + return self.hass.loop.run_in_executor(None, self.camera_image) @asyncio.coroutine def handle_async_mjpeg_stream(self, request): diff --git a/homeassistant/components/remote/__init__.py b/homeassistant/components/remote/__init__.py index 2baef2011fc..118a160c305 100755 --- a/homeassistant/components/remote/__init__.py +++ b/homeassistant/components/remote/__init__.py @@ -149,6 +149,9 @@ class RemoteDevice(ToggleEntity): raise NotImplementedError() def async_send_command(self, **kwargs): - """Send a command to a device.""" - yield from self.hass.loop.run_in_executor( + """Send a command to a device. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( None, ft.partial(self.send_command, **kwargs)) diff --git a/homeassistant/components/scene/__init__.py b/homeassistant/components/scene/__init__.py index 3f532a33151..7e20338f4ab 100644 --- a/homeassistant/components/scene/__init__.py +++ b/homeassistant/components/scene/__init__.py @@ -96,10 +96,9 @@ class Scene(Entity): """Activate scene. Try to get entities into requested state.""" raise NotImplementedError() - @asyncio.coroutine def async_activate(self): """Activate scene. Try to get entities into requested state. - This method is a coroutine. + This method must be run in the event loop and returns a coroutine. """ - yield from self.hass.loop.run_in_executor(None, self.activate) + return self.hass.loop.run_in_executor(None, self.activate) diff --git a/homeassistant/components/tts/__init__.py b/homeassistant/components/tts/__init__.py index 32cbbaa265b..bd19de52a98 100644 --- a/homeassistant/components/tts/__init__.py +++ b/homeassistant/components/tts/__init__.py @@ -384,17 +384,15 @@ class Provider(object): """Load tts audio file from provider.""" raise NotImplementedError() - @asyncio.coroutine def async_get_tts_audio(self, message): """Load tts audio file from provider. Return a tuple of file extension and data as bytes. - This method is a coroutine. + This method must be run in the event loop and returns a coroutine. """ - extension, data = yield from self.hass.loop.run_in_executor( + return self.hass.loop.run_in_executor( None, self.get_tts_audio, message) - return (extension, data) class TextToSpeechView(HomeAssistantView): diff --git a/homeassistant/helpers/entity.py b/homeassistant/helpers/entity.py index 4137a31b8b6..0d2f56f1807 100644 --- a/homeassistant/helpers/entity.py +++ b/homeassistant/helpers/entity.py @@ -346,20 +346,24 @@ class ToggleEntity(Entity): """Turn the entity on.""" raise NotImplementedError() - @asyncio.coroutine def async_turn_on(self, **kwargs): - """Turn the entity on.""" - yield from self.hass.loop.run_in_executor( + """Turn the entity on. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( None, ft.partial(self.turn_on, **kwargs)) def turn_off(self, **kwargs) -> None: """Turn the entity off.""" raise NotImplementedError() - @asyncio.coroutine def async_turn_off(self, **kwargs): - """Turn the entity off.""" - yield from self.hass.loop.run_in_executor( + """Turn the entity off. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( None, ft.partial(self.turn_off, **kwargs)) def toggle(self) -> None: @@ -369,10 +373,12 @@ class ToggleEntity(Entity): else: self.turn_on() - @asyncio.coroutine def async_toggle(self): - """Toggle the entity.""" + """Toggle the entity. + + This method must be run in the event loop and returns a coroutine. + """ if self.is_on: - yield from self.async_turn_off() + return self.async_turn_off() else: - yield from self.async_turn_on() + return self.async_turn_on() From 5b619a94adc2add3d400f5aeda490d635926a9be Mon Sep 17 00:00:00 2001 From: Hydreliox Date: Mon, 26 Dec 2016 16:02:11 +0100 Subject: [PATCH 032/189] Add sensor for International Space Station (#4968) * Add sensor for International Space Station * Change two sensors to one with attributes. * Fix due to comments in HA PR. Thanks ! * Update Requirement --- .coveragerc | 1 + homeassistant/components/sensor/iss.py | 127 +++++++++++++++++++++++++ requirements_all.txt | 3 + 3 files changed, 131 insertions(+) create mode 100644 homeassistant/components/sensor/iss.py diff --git a/.coveragerc b/.coveragerc index 42ea738a3ef..34531651358 100644 --- a/.coveragerc +++ b/.coveragerc @@ -278,6 +278,7 @@ omit = homeassistant/components/sensor/hddtemp.py homeassistant/components/sensor/hp_ilo.py homeassistant/components/sensor/hydroquebec.py + homeassistant/components/sensor/iss.py homeassistant/components/sensor/imap.py homeassistant/components/sensor/imap_email_content.py homeassistant/components/sensor/influxdb.py diff --git a/homeassistant/components/sensor/iss.py b/homeassistant/components/sensor/iss.py new file mode 100644 index 00000000000..6d9cf4b7106 --- /dev/null +++ b/homeassistant/components/sensor/iss.py @@ -0,0 +1,127 @@ +""" +Support for International Space Station data sensor. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/sensor.iss/ +""" +import logging +from datetime import timedelta, datetime +import requests +import voluptuous as vol +from homeassistant.util import Throttle +from homeassistant.components.sensor import PLATFORM_SCHEMA +from homeassistant.const import (CONF_NAME) +from homeassistant.helpers.entity import Entity +import homeassistant.helpers.config_validation as cv + +REQUIREMENTS = ['pyiss==1.0.1'] + +_LOGGER = logging.getLogger(__name__) + +ATTR_ISS_VISIBLE = 'visible' +ATTR_ISS_NEXT_RISE = 'next_rise' +ATTR_ISS_NUMBER_PEOPLE_SPACE = 'number_of_people_in_space' + +DEFAULT_NAME = 'ISS' +MIN_TIME_BETWEEN_UPDATES = timedelta(seconds=60) + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, +}) + + +def setup_platform(hass, config, add_devices, discovery_info=None): + """Setup the ISS sensor.""" + # Validate the configuration + if None in (hass.config.latitude, hass.config.longitude): + _LOGGER.error("Latitude or longitude not set in Home Assistant config") + return False + + try: + iss_data = IssData(hass.config.latitude, hass.config.longitude) + iss_data.update() + except requests.exceptions.HTTPError as error: + _LOGGER.error(error) + return False + + name = config.get(CONF_NAME) + + sensors = [] + sensors.append(IssSensor(iss_data, name)) + + add_devices(sensors, True) + + +class IssSensor(Entity): + """Implementation of a ISS sensor.""" + + def __init__(self, iss_data, name): + """Initialize the sensor.""" + self.iss_data = iss_data + self._state = None + self._attributes = {} + self._client_name = name + self._name = ATTR_ISS_VISIBLE + self._unit_of_measurement = None + self._icon = 'mdi:eye' + + @property + def name(self): + """Return the name of the sensor.""" + return '{} {}'.format(self._client_name, self._name) + + @property + def state(self): + """Return the state of the sensor.""" + return self._state + + @property + def device_state_attributes(self): + """Return the state attributes.""" + return self._attributes + + @property + def unit_of_measurement(self): + """Return the unit of measurement of this entity, if any.""" + return self._unit_of_measurement + + @property + def icon(self): + """Icon to use in the frontend, if any.""" + return self._icon + + def update(self): + """Get the latest data from ISS API and updates the states.""" + self._state = self.iss_data.is_above + + self._attributes[ATTR_ISS_NUMBER_PEOPLE_SPACE] = \ + self.iss_data.number_of_people_in_space + delta = self.iss_data.next_rise - datetime.utcnow() + self._attributes[ATTR_ISS_NEXT_RISE] = int(delta.total_seconds() / 60) + + +class IssData(object): + """Get data from the ISS.""" + + def __init__(self, latitude, longitude): + """Initialize the data object.""" + self.is_above = None + self.next_rise = None + self.number_of_people_in_space = None + self.latitude = latitude + self.longitude = longitude + + @Throttle(MIN_TIME_BETWEEN_UPDATES) + def update(self): + """Get the latest data from the ISS.""" + import pyiss + + try: + iss = pyiss.ISS() + self.is_above = iss.is_ISS_above(self.latitude, self.longitude) + self.next_rise = iss.next_rise(self.latitude, self.longitude) + self.number_of_people_in_space = iss.number_of_people_in_space() + _LOGGER.error(self.next_rise.tzinfo) + except requests.exceptions.HTTPError as error: + _LOGGER.error(error) + return False diff --git a/requirements_all.txt b/requirements_all.txt index c8cd8f81802..f50e32a652b 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -419,6 +419,9 @@ pyhomematic==0.1.18 # homeassistant.components.device_tracker.icloud pyicloud==0.9.1 +# homeassistant.components.sensor.iss +pyiss==1.0.1 + # homeassistant.components.sensor.lastfm pylast==1.6.0 From ac1063266c6eb8248b090ed352aed70d0a73b5b3 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Mon, 26 Dec 2016 16:31:26 +0100 Subject: [PATCH 033/189] Upgrade pyowm to 2.6.0 (#5071) --- homeassistant/components/sensor/openweathermap.py | 2 +- homeassistant/components/weather/openweathermap.py | 2 +- requirements_all.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/sensor/openweathermap.py b/homeassistant/components/sensor/openweathermap.py index 450b749b0a2..08b2a4c0f65 100755 --- a/homeassistant/components/sensor/openweathermap.py +++ b/homeassistant/components/sensor/openweathermap.py @@ -17,7 +17,7 @@ import homeassistant.helpers.config_validation as cv from homeassistant.helpers.entity import Entity from homeassistant.util import Throttle -REQUIREMENTS = ['pyowm==2.5.0'] +REQUIREMENTS = ['pyowm==2.6.0'] _LOGGER = logging.getLogger(__name__) diff --git a/homeassistant/components/weather/openweathermap.py b/homeassistant/components/weather/openweathermap.py index a93b0142d90..931ce7bdf6b 100644 --- a/homeassistant/components/weather/openweathermap.py +++ b/homeassistant/components/weather/openweathermap.py @@ -15,7 +15,7 @@ from homeassistant.const import ( import homeassistant.helpers.config_validation as cv from homeassistant.util import Throttle -REQUIREMENTS = ['pyowm==2.5.0'] +REQUIREMENTS = ['pyowm==2.6.0'] _LOGGER = logging.getLogger(__name__) diff --git a/requirements_all.txt b/requirements_all.txt index f50e32a652b..ad62b8168ef 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -449,7 +449,7 @@ pynx584==0.2 # homeassistant.components.sensor.openweathermap # homeassistant.components.weather.openweathermap -pyowm==2.5.0 +pyowm==2.6.0 # homeassistant.components.switch.acer_projector pyserial==3.1.1 From ec89accd29998b1ef47315678a97702aca155a45 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Mon, 26 Dec 2016 16:31:44 +0100 Subject: [PATCH 034/189] Upgrade psutil to 5.0.1 (#5072) --- homeassistant/components/sensor/systemmonitor.py | 2 +- requirements_all.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/sensor/systemmonitor.py b/homeassistant/components/sensor/systemmonitor.py index b59c5d0cd43..4feb5ed3a59 100755 --- a/homeassistant/components/sensor/systemmonitor.py +++ b/homeassistant/components/sensor/systemmonitor.py @@ -15,7 +15,7 @@ from homeassistant.helpers.entity import Entity import homeassistant.helpers.config_validation as cv import homeassistant.util.dt as dt_util -REQUIREMENTS = ['psutil==5.0.0'] +REQUIREMENTS = ['psutil==5.0.1'] _LOGGER = logging.getLogger(__name__) diff --git a/requirements_all.txt b/requirements_all.txt index ad62b8168ef..2fc2d1a47f2 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -351,7 +351,7 @@ pmsensor==0.3 proliphix==0.4.1 # homeassistant.components.sensor.systemmonitor -psutil==5.0.0 +psutil==5.0.1 # homeassistant.components.wink pubnubsub-handler==0.0.5 From c5f70e8be3a0e951549e6065ffe21acd014e4c3b Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Mon, 26 Dec 2016 16:41:18 +0100 Subject: [PATCH 035/189] Upgrade speedtest-cli to 1.0.1 (#5073) --- 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 dff6f1c9dde..3b661062198 100644 --- a/homeassistant/components/sensor/speedtest.py +++ b/homeassistant/components/sensor/speedtest.py @@ -19,7 +19,7 @@ from homeassistant.const import CONF_MONITORED_CONDITIONS from homeassistant.helpers.entity import Entity from homeassistant.helpers.event import track_time_change -REQUIREMENTS = ['speedtest-cli==1.0.0'] +REQUIREMENTS = ['speedtest-cli==1.0.1'] _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 2fc2d1a47f2..7e962fe1f65 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -558,7 +558,7 @@ snapcast==1.2.2 somecomfort==0.3.2 # homeassistant.components.sensor.speedtest -speedtest-cli==1.0.0 +speedtest-cli==1.0.1 # homeassistant.components.recorder # homeassistant.scripts.db_migrator From 68865ec27bebfc4f48e5e2fcb26d4876b3934d7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20H=C3=B8yer=20Iversen?= Date: Tue, 27 Dec 2016 09:24:05 +0100 Subject: [PATCH 036/189] upgrade miflora (#5075) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add an optional extended description… --- homeassistant/components/sensor/miflora.py | 2 +- requirements_all.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/sensor/miflora.py b/homeassistant/components/sensor/miflora.py index 75042f4e911..a519d97a855 100644 --- a/homeassistant/components/sensor/miflora.py +++ b/homeassistant/components/sensor/miflora.py @@ -16,7 +16,7 @@ from homeassistant.util import Throttle from homeassistant.const import ( CONF_MONITORED_CONDITIONS, CONF_NAME, CONF_MAC) -REQUIREMENTS = ['miflora==0.1.13'] +REQUIREMENTS = ['miflora==0.1.14'] _LOGGER = logging.getLogger(__name__) diff --git a/requirements_all.txt b/requirements_all.txt index 7e962fe1f65..cbaa90150d3 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -304,7 +304,7 @@ messagebird==1.2.0 mficlient==0.3.0 # homeassistant.components.sensor.miflora -miflora==0.1.13 +miflora==0.1.14 # homeassistant.components.discovery netdisco==0.8.1 From 4728fa8da64b215ac6fd5b8b3ef05893309f032a Mon Sep 17 00:00:00 2001 From: andrey-git Date: Tue, 27 Dec 2016 18:01:22 +0200 Subject: [PATCH 037/189] Allow to specify TTS language in the service call. (#5047) * Allow to specify TTS language in the service call. * Allow to specify TTS language in the service call. * Respect 79 char limit * Fix "Too many blank lines" * Fix "Too many blank lines" * Fix "Too many blank lines" * Change language to be optional parameter of *get_tts_audio * Change language to be optional parameter of *get_tts_audio * Respect 79 char limit * Don't pass "None * Use default of "None" for TTS language * Use default of "None" for TTS language * Don't pass "None" * Change TTS cache key to be hash_lang_engine * Change language from demo to en * Fix wrong replace --- homeassistant/components/tts/__init__.py | 46 +++++---- homeassistant/components/tts/demo.py | 6 +- homeassistant/components/tts/google.py | 9 +- homeassistant/components/tts/services.yaml | 4 + homeassistant/components/tts/voicerss.py | 7 +- tests/components/tts/test_google.py | 32 +++++- tests/components/tts/test_init.py | 108 ++++++++++++++++++--- tests/components/tts/test_voicerss.py | 32 +++++- 8 files changed, 206 insertions(+), 38 deletions(-) diff --git a/homeassistant/components/tts/__init__.py b/homeassistant/components/tts/__init__.py index bd19de52a98..01d0a6a15e3 100644 --- a/homeassistant/components/tts/__init__.py +++ b/homeassistant/components/tts/__init__.py @@ -5,8 +5,9 @@ For more details about this component, please refer to the documentation at https://home-assistant.io/components/tts/ """ import asyncio -import logging +import functools import hashlib +import logging import mimetypes import os import re @@ -48,8 +49,10 @@ SERVICE_CLEAR_CACHE = 'clear_cache' ATTR_MESSAGE = 'message' ATTR_CACHE = 'cache' +ATTR_LANGUAGE = 'language' -_RE_VOICE_FILE = re.compile(r"([a-f0-9]{40})_([a-z]+)\.[a-z0-9]{3,4}") +_RE_VOICE_FILE = re.compile(r"([a-f0-9]{40})_([^_]+)_([a-z]+)\.[a-z0-9]{3,4}") +KEY_PATTERN = '{}_{}_{}' PLATFORM_SCHEMA = cv.PLATFORM_SCHEMA.extend({ vol.Optional(CONF_CACHE, default=DEFAULT_CACHE): cv.boolean, @@ -63,6 +66,7 @@ SCHEMA_SERVICE_SAY = vol.Schema({ vol.Required(ATTR_MESSAGE): cv.string, vol.Optional(ATTR_ENTITY_ID): cv.entity_ids, vol.Optional(ATTR_CACHE): cv.boolean, + vol.Optional(ATTR_LANGUAGE): cv.string }) SCHEMA_SERVICE_CLEAR_CACHE = vol.Schema({}) @@ -121,10 +125,11 @@ def async_setup(hass, config): entity_ids = service.data.get(ATTR_ENTITY_ID) message = service.data.get(ATTR_MESSAGE) cache = service.data.get(ATTR_CACHE) + language = service.data.get(ATTR_LANGUAGE) try: url = yield from tts.async_get_url( - p_type, message, cache=cache) + p_type, message, cache=cache, language=language) except HomeAssistantError as err: _LOGGER.error("Error on init tts: %s", err) return @@ -207,7 +212,8 @@ class SpeechManager(object): for file_data in folder_data: record = _RE_VOICE_FILE.match(file_data) if record: - key = "{}_{}".format(record.group(1), record.group(2)) + key = KEY_PATTERN.format( + record.group(1), record.group(2), record.group(3)) cache[key.lower()] = file_data.lower() return cache @@ -241,17 +247,19 @@ class SpeechManager(object): def async_register_engine(self, engine, provider, config): """Register a TTS provider.""" provider.hass = self.hass - provider.language = config.get(CONF_LANG) + if CONF_LANG in config: + provider.language = config.get(CONF_LANG) self.providers[engine] = provider @asyncio.coroutine - def async_get_url(self, engine, message, cache=None): + def async_get_url(self, engine, message, cache=None, language=None): """Get URL for play message. This method is a coroutine. """ msg_hash = hashlib.sha1(bytes(message, 'utf-8')).hexdigest() - key = ("{}_{}".format(msg_hash, engine)).lower() + language_key = language or self.providers[engine].language + key = KEY_PATTERN.format(msg_hash, language_key, engine).lower() use_cache = cache if cache is not None else self.use_cache # is speech allready in memory @@ -260,23 +268,24 @@ class SpeechManager(object): # 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(engine, key)) + self.hass.async_add_job(self.async_file_to_mem(key)) # load speech from provider into memory else: filename = yield from self.async_get_tts_audio( - engine, key, message, use_cache) + engine, key, message, use_cache, language) return "{}/api/tts_proxy/{}".format( self.hass.config.api.base_url, filename) @asyncio.coroutine - def async_get_tts_audio(self, engine, key, message, cache): + def async_get_tts_audio(self, engine, key, message, cache, language): """Receive TTS and store for view in cache. This method is a coroutine. """ provider = self.providers[engine] - extension, data = yield from provider.async_get_tts_audio(message) + extension, data = yield from provider.async_get_tts_audio( + message, language) if data is None or extension is None: raise HomeAssistantError( @@ -314,7 +323,7 @@ class SpeechManager(object): _LOGGER.error("Can't write %s", filename) @asyncio.coroutine - def async_file_to_mem(self, engine, key): + def async_file_to_mem(self, key): """Load voice from file cache into memory. This method is a coroutine. @@ -362,13 +371,13 @@ class SpeechManager(object): if not record: raise HomeAssistantError("Wrong tts file format!") - key = "{}_{}".format(record.group(1), record.group(2)) + key = KEY_PATTERN.format( + record.group(1), record.group(2), record.group(3)) if key not in self.mem_cache: if key not in self.file_cache: raise HomeAssistantError("%s not in cache!", key) - engine = record.group(2) - yield from self.async_file_to_mem(engine, key) + yield from self.async_file_to_mem(key) content, _ = mimetypes.guess_type(filename) return (content, self.mem_cache[key][MEM_CACHE_VOICE]) @@ -380,11 +389,11 @@ class Provider(object): hass = None language = None - def get_tts_audio(self, message): + def get_tts_audio(self, message, language=None): """Load tts audio file from provider.""" raise NotImplementedError() - def async_get_tts_audio(self, message): + def async_get_tts_audio(self, message, language=None): """Load tts audio file from provider. Return a tuple of file extension and data as bytes. @@ -392,7 +401,8 @@ class Provider(object): This method must be run in the event loop and returns a coroutine. """ return self.hass.loop.run_in_executor( - None, self.get_tts_audio, message) + None, + functools.partial(self.get_tts_audio, message, language=language)) class TextToSpeechView(HomeAssistantView): diff --git a/homeassistant/components/tts/demo.py b/homeassistant/components/tts/demo.py index a63bd6373ea..68d49d58f78 100644 --- a/homeassistant/components/tts/demo.py +++ b/homeassistant/components/tts/demo.py @@ -17,7 +17,11 @@ def get_engine(hass, config): class DemoProvider(Provider): """Demo speech api provider.""" - def get_tts_audio(self, message): + def __init__(self): + """Initialize demo provider for TTS.""" + self.language = 'en' + + def get_tts_audio(self, message, language=None): """Load TTS from demo.""" filename = os.path.join(os.path.dirname(__file__), "demo.mp3") try: diff --git a/homeassistant/components/tts/google.py b/homeassistant/components/tts/google.py index 49d53961062..e1bb4e5e4e5 100644 --- a/homeassistant/components/tts/google.py +++ b/homeassistant/components/tts/google.py @@ -59,7 +59,7 @@ class GoogleProvider(Provider): } @asyncio.coroutine - def async_get_tts_audio(self, message): + def async_get_tts_audio(self, message, language=None): """Load TTS from google.""" from gtts_token import gtts_token @@ -67,6 +67,11 @@ class GoogleProvider(Provider): websession = async_get_clientsession(self.hass) message_parts = self._split_message_to_parts(message) + # If language is not specified or is not supported - use the language + # from the config. + if language not in SUPPORT_LANGUAGES: + language = self.language + data = b'' for idx, part in enumerate(message_parts): part_token = yield from self.hass.loop.run_in_executor( @@ -74,7 +79,7 @@ class GoogleProvider(Provider): url_param = { 'ie': 'UTF-8', - 'tl': self.language, + 'tl': language, 'q': yarl.quote(part), 'tk': part_token, 'total': len(message_parts), diff --git a/homeassistant/components/tts/services.yaml b/homeassistant/components/tts/services.yaml index 5cb146950b4..b44ef6ac66c 100644 --- a/homeassistant/components/tts/services.yaml +++ b/homeassistant/components/tts/services.yaml @@ -14,5 +14,9 @@ say: description: Control file cache of this message. example: 'true' + language: + description: Language to use for speech generation. + example: 'ru' + clear_cache: description: Remove cache files and RAM cache. diff --git a/homeassistant/components/tts/voicerss.py b/homeassistant/components/tts/voicerss.py index fdbe8a8d806..688ae7f6e25 100644 --- a/homeassistant/components/tts/voicerss.py +++ b/homeassistant/components/tts/voicerss.py @@ -103,13 +103,18 @@ class VoiceRSSProvider(Provider): } @asyncio.coroutine - def async_get_tts_audio(self, message): + def async_get_tts_audio(self, message, language=None): """Load TTS from voicerss.""" websession = async_get_clientsession(self.hass) form_data = self.form_data.copy() form_data['src'] = message + # If language is specified and supported - use it instead of the + # language in the config. + if language in SUPPORT_LANGUAGES: + form_data['hl'] = language + request = None try: with async_timeout.timeout(10, loop=self.hass.loop): diff --git a/tests/components/tts/test_google.py b/tests/components/tts/test_google.py index 623a96f1dfb..3483a4830fa 100644 --- a/tests/components/tts/test_google.py +++ b/tests/components/tts/test_google.py @@ -80,8 +80,8 @@ class TestTTSGooglePlatform(object): @patch('gtts_token.gtts_token.Token.calculate_token', autospec=True, return_value=5) - def test_service_say_german(self, mock_calculate, aioclient_mock): - """Test service call say with german code.""" + def test_service_say_german_config(self, mock_calculate, aioclient_mock): + """Test service call say with german code in the config.""" calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) self.url_param['tl'] = 'de' @@ -106,6 +106,34 @@ class TestTTSGooglePlatform(object): assert len(calls) == 1 assert len(aioclient_mock.mock_calls) == 1 + @patch('gtts_token.gtts_token.Token.calculate_token', autospec=True, + return_value=5) + def test_service_say_german_service(self, mock_calculate, aioclient_mock): + """Test service call say with german code in the service.""" + calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) + + self.url_param['tl'] = 'de' + aioclient_mock.get( + self.url, params=self.url_param, status=200, content=b'test') + + config = { + tts.DOMAIN: { + 'platform': 'google', + } + } + + with assert_setup_component(1, tts.DOMAIN): + setup_component(self.hass, tts.DOMAIN, config) + + self.hass.services.call(tts.DOMAIN, 'google_say', { + tts.ATTR_MESSAGE: "I person is on front of your door.", + tts.ATTR_LANGUAGE: "de" + }) + self.hass.block_till_done() + + assert len(calls) == 1 + assert len(aioclient_mock.mock_calls) == 1 + @patch('gtts_token.gtts_token.Token.calculate_token', autospec=True, return_value=5) def test_service_say_error(self, mock_calculate, aioclient_mock): diff --git a/tests/components/tts/test_init.py b/tests/components/tts/test_init.py index fccd9d66bd7..55381395313 100644 --- a/tests/components/tts/test_init.py +++ b/tests/components/tts/test_init.py @@ -82,11 +82,69 @@ class TestTTS(object): assert calls[0].data[ATTR_MEDIA_CONTENT_TYPE] == MEDIA_TYPE_MUSIC assert calls[0].data[ATTR_MEDIA_CONTENT_ID].find( "/api/tts_proxy/265944c108cbb00b2a621be5930513e03a0bb2cd" - "_demo.mp3") \ + "_en_demo.mp3") \ != -1 assert os.path.isfile(os.path.join( self.default_tts_cache, - "265944c108cbb00b2a621be5930513e03a0bb2cd_demo.mp3")) + "265944c108cbb00b2a621be5930513e03a0bb2cd_en_demo.mp3")) + + def test_setup_component_and_test_service_with_config_language(self): + """Setup the demo platform and call service.""" + calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) + + config = { + tts.DOMAIN: { + 'platform': 'demo', + 'language': 'lang' + } + } + + with assert_setup_component(1, tts.DOMAIN): + setup_component(self.hass, tts.DOMAIN, config) + + self.hass.services.call(tts.DOMAIN, 'demo_say', { + tts.ATTR_MESSAGE: "I person is on front of your door.", + }) + self.hass.block_till_done() + + assert len(calls) == 1 + assert calls[0].data[ATTR_MEDIA_CONTENT_TYPE] == MEDIA_TYPE_MUSIC + assert calls[0].data[ATTR_MEDIA_CONTENT_ID].find( + "/api/tts_proxy/265944c108cbb00b2a621be5930513e03a0bb2cd" + "_lang_demo.mp3") \ + != -1 + assert os.path.isfile(os.path.join( + self.default_tts_cache, + "265944c108cbb00b2a621be5930513e03a0bb2cd_lang_demo.mp3")) + + def test_setup_component_and_test_service_with_service_language(self): + """Setup the demo platform and call service.""" + calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) + + config = { + tts.DOMAIN: { + 'platform': 'demo', + } + } + + with assert_setup_component(1, tts.DOMAIN): + setup_component(self.hass, tts.DOMAIN, config) + + self.hass.services.call(tts.DOMAIN, 'demo_say', { + tts.ATTR_MESSAGE: "I person is on front of your door.", + tts.ATTR_LANGUAGE: "lang", + }) + self.hass.block_till_done() + + assert len(calls) == 1 + assert calls[0].data[ATTR_MEDIA_CONTENT_TYPE] == MEDIA_TYPE_MUSIC + assert calls[0].data[ATTR_MEDIA_CONTENT_ID].find( + "/api/tts_proxy/265944c108cbb00b2a621be5930513e03a0bb2cd" + "_lang_demo.mp3") \ + != -1 + assert os.path.isfile(os.path.join( + self.default_tts_cache, + "265944c108cbb00b2a621be5930513e03a0bb2cd_lang_demo.mp3")) def test_setup_component_and_test_service_clear_cache(self): """Setup the demo platform and call service clear cache.""" @@ -109,14 +167,14 @@ class TestTTS(object): assert len(calls) == 1 assert os.path.isfile(os.path.join( self.default_tts_cache, - "265944c108cbb00b2a621be5930513e03a0bb2cd_demo.mp3")) + "265944c108cbb00b2a621be5930513e03a0bb2cd_en_demo.mp3")) self.hass.services.call(tts.DOMAIN, tts.SERVICE_CLEAR_CACHE, {}) self.hass.block_till_done() assert not os.path.isfile(os.path.join( self.default_tts_cache, - "265944c108cbb00b2a621be5930513e03a0bb2cd_demo.mp3")) + "265944c108cbb00b2a621be5930513e03a0bb2cd_en_demo.mp3")) def test_setup_component_and_test_service_with_receive_voice(self): """Setup the demo platform and call service and receive voice.""" @@ -144,6 +202,32 @@ class TestTTS(object): assert req.status_code == 200 assert req.content == demo_data + def test_setup_component_and_test_service_with_receive_voice_german(self): + """Setup the demo platform and call service and receive voice.""" + calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) + + config = { + tts.DOMAIN: { + 'platform': 'demo', + } + } + + with assert_setup_component(1, tts.DOMAIN): + setup_component(self.hass, tts.DOMAIN, config) + + self.hass.start() + + self.hass.services.call(tts.DOMAIN, 'demo_say', { + tts.ATTR_MESSAGE: "I person is on front of your door.", + }) + self.hass.block_till_done() + + assert len(calls) == 1 + req = requests.get(calls[0].data[ATTR_MEDIA_CONTENT_ID]) + _, demo_data = self.demo_provider.get_tts_audio("bla", "de") + assert req.status_code == 200 + assert req.content == demo_data + def test_setup_component_and_web_view_wrong_file(self): """Setup the demo platform and receive wrong file from web.""" config = { @@ -158,7 +242,7 @@ class TestTTS(object): self.hass.start() url = ("{}/api/tts_proxy/265944c108cbb00b2a621be5930513e03a0bb2cd" - "_demo.mp3").format(self.hass.config.api.base_url) + "_en_demo.mp3").format(self.hass.config.api.base_url) req = requests.get(url) assert req.status_code == 404 @@ -177,7 +261,7 @@ class TestTTS(object): self.hass.start() url = ("{}/api/tts_proxy/265944dsk32c1b2a621be5930510bb2cd" - "_demo.mp3").format(self.hass.config.api.base_url) + "_en_demo.mp3").format(self.hass.config.api.base_url) req = requests.get(url) assert req.status_code == 404 @@ -204,7 +288,7 @@ class TestTTS(object): assert len(calls) == 1 assert not os.path.isfile(os.path.join( self.default_tts_cache, - "265944c108cbb00b2a621be5930513e03a0bb2cd_demo.mp3")) + "265944c108cbb00b2a621be5930513e03a0bb2cd_en_demo.mp3")) def test_setup_component_test_with_cache_call_service_without_cache(self): """Setup demo platform with cache and call service without cache.""" @@ -229,7 +313,7 @@ class TestTTS(object): assert len(calls) == 1 assert not os.path.isfile(os.path.join( self.default_tts_cache, - "265944c108cbb00b2a621be5930513e03a0bb2cd_demo.mp3")) + "265944c108cbb00b2a621be5930513e03a0bb2cd_en_demo.mp3")) def test_setup_component_test_with_cache_dir(self): """Setup demo platform with cache and call service without cache.""" @@ -238,7 +322,7 @@ class TestTTS(object): _, demo_data = self.demo_provider.get_tts_audio("bla") cache_file = os.path.join( self.default_tts_cache, - "265944c108cbb00b2a621be5930513e03a0bb2cd_demo.mp3") + "265944c108cbb00b2a621be5930513e03a0bb2cd_en_demo.mp3") os.mkdir(self.default_tts_cache) with open(cache_file, "wb") as voice_file: @@ -264,7 +348,7 @@ class TestTTS(object): assert len(calls) == 1 assert calls[0].data[ATTR_MEDIA_CONTENT_ID].find( "/api/tts_proxy/265944c108cbb00b2a621be5930513e03a0bb2cd" - "_demo.mp3") \ + "_en_demo.mp3") \ != -1 @patch('homeassistant.components.tts.demo.DemoProvider.get_tts_audio', @@ -294,7 +378,7 @@ class TestTTS(object): _, demo_data = self.demo_provider.get_tts_audio("bla") cache_file = os.path.join( self.default_tts_cache, - "265944c108cbb00b2a621be5930513e03a0bb2cd_demo.mp3") + "265944c108cbb00b2a621be5930513e03a0bb2cd_en_demo.mp3") os.mkdir(self.default_tts_cache) with open(cache_file, "wb") as voice_file: @@ -313,7 +397,7 @@ class TestTTS(object): self.hass.start() url = ("{}/api/tts_proxy/265944c108cbb00b2a621be5930513e03a0bb2cd" - "_demo.mp3").format(self.hass.config.api.base_url) + "_en_demo.mp3").format(self.hass.config.api.base_url) req = requests.get(url) assert req.status_code == 200 diff --git a/tests/components/tts/test_voicerss.py b/tests/components/tts/test_voicerss.py index ea1263b189e..b8f73487831 100644 --- a/tests/components/tts/test_voicerss.py +++ b/tests/components/tts/test_voicerss.py @@ -86,8 +86,8 @@ class TestTTSVoiceRSSPlatform(object): assert aioclient_mock.mock_calls[0][2] == self.form_data assert calls[0].data[ATTR_MEDIA_CONTENT_ID].find(".mp3") != -1 - def test_service_say_german(self, aioclient_mock): - """Test service call say with german code.""" + def test_service_say_german_config(self, aioclient_mock): + """Test service call say with german code in the config.""" calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) self.form_data['hl'] = 'de-de' @@ -114,6 +114,34 @@ class TestTTSVoiceRSSPlatform(object): assert len(aioclient_mock.mock_calls) == 1 assert aioclient_mock.mock_calls[0][2] == self.form_data + def test_service_say_german_service(self, aioclient_mock): + """Test service call say with german code in the service.""" + calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) + + self.form_data['hl'] = 'de-de' + aioclient_mock.post( + self.url, data=self.form_data, status=200, content=b'test') + + config = { + tts.DOMAIN: { + 'platform': 'voicerss', + 'api_key': '1234567xx', + } + } + + with assert_setup_component(1, tts.DOMAIN): + setup_component(self.hass, tts.DOMAIN, config) + + self.hass.services.call(tts.DOMAIN, 'voicerss_say', { + tts.ATTR_MESSAGE: "I person is on front of your door.", + tts.ATTR_LANGUAGE: "de-de" + }) + self.hass.block_till_done() + + assert len(calls) == 1 + assert len(aioclient_mock.mock_calls) == 1 + assert aioclient_mock.mock_calls[0][2] == self.form_data + def test_service_say_error(self, aioclient_mock): """Test service call say with http response 400.""" calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) From c77b4a48062c93629d65963264a378ab3a7f27ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Arnauts?= Date: Tue, 27 Dec 2016 21:36:07 +0100 Subject: [PATCH 038/189] Update icons from materialdesignicons.com (#5081) --- homeassistant/components/frontend/version.py | 2 +- .../components/frontend/www_static/mdi.html | 2 +- .../frontend/www_static/mdi.html.gz | Bin 176048 -> 181452 bytes 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/frontend/version.py b/homeassistant/components/frontend/version.py index 6c480254cb8..b24c2a6819f 100644 --- a/homeassistant/components/frontend/version.py +++ b/homeassistant/components/frontend/version.py @@ -3,7 +3,7 @@ FINGERPRINTS = { "core.js": "ad1ebcd0614c98a390d982087a7ca75c", "frontend.html": "826ee6a4b39c939e31aa468b1ef618f9", - "mdi.html": "46a76f877ac9848899b8ed382427c16f", + "mdi.html": "48fcee544a61b668451faf2b7295df70", "micromarkdown-js.html": "93b5ec4016f0bba585521cf4d18dec1a", "panels/ha-panel-dev-event.html": "c2d5ec676be98d4474d19f94d0262c1e", "panels/ha-panel-dev-info.html": "a9c07bf281fe9791fb15827ec1286825", diff --git a/homeassistant/components/frontend/www_static/mdi.html b/homeassistant/components/frontend/www_static/mdi.html index e9f69984a47..c3d73386f8d 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 e219e5bcd4527f8cacb7e0198575debb207cb75e..bdf10ffef9ce864fc953ff69bcadef5764cec272 100644 GIT binary patch delta 171198 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%0D%y)gve4}SQfNUKjGfp(Gu##^#67{S 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

n{x_w<4pjI4he=BbfEQILTF8vaPR3Ru4=osbsc zfm!?1>j}i7KwYbc$sWB@Zb5~L@sk!cMn5c}&af%dnV8RpsQ^x#sL_Mg0QGOA;JlUv zbTl@9ZD2@ukYC^PJ%qa4QCXY`Pxmod(5J#o9T_h@S<~SOnhFd%WJQEk?KyB$ z3R2@@#a0kxBRA>5$k)(U7iCxV{QxO}#eT3UGJT`RJ$-&zsWKcLbuj2u&55!TFn+d-?i)MHb&30c}Q|!TH8{igQY)nWfUYc^mJ&k)KKV2w9^)fOQ5`5so@a zywY|E6k=Sd#qouCdy>!GO!(W&I>=>#m~@I@$FzoSe=_G3U@Vz&veT>{!BCvJlAf9v zz*%6W2Dc#<5>aMN%z`Cnh#g|{>1 z8pOKO0~{QO>#2+LFEAgRuKc^Sy z)0rt^%C!{7kmKV9vEzG#1mIAiX^@&Ih>ti}*Xro-CH25-ce*J-SDmFAp`?SrJ?v~1&a zEfTbnt+ITrEZ5DoHC$_Js0*v9w(_;MhDB|;MQz1JZBf!7aScd^m)2BKu2b$juxOY{ zgg&u>vsD6Dx#f4K%3hye-hF)h>%-SiZ!19(=!#86mq#%ocz=H{lG{GY;y|#6!*nC0 z947k{6%@#jJ_?WoP!2F2SohGA(rUYwOK7BBQ6z8@9c1YS0W71i(1-AH1_*MqC4d&7 zwps~!lXFV!W`(!}Ar^s#l@xJ+27@CsgV;zyA2^Ll-<%;{K2$HZAQJ=@L_(A@u`FG0 z;t|-EFcQ5M)wh4kcb88ODm}M5Lv!B1K5g;6{7jUEBI!%O>V^IA54I36#htG+kzCg z<7#Ec;Q#UA?cx2y>n558GhSgpKjG5TlsU4-5O<6DZ6=;f1avtC6463^m*qyw#DK;* z2quDo1OQ}#n)Dt+S=IL>)^4;Hf&W()7!D`8r3Qa@>v^i^@bdI}SU4k$Bic{fH?E}Y ze1W~XCYFn!Fq$t+TK2ijs=0~=8t6GHbetP=c!a*R#6;+PT3S=rAr-F)Bj)U=c zsu-p6!M~aCJw6pwjP&)Z6rGiltu|zav$v$f6`__@h$PSAiC~2|uya@$x_b2vF_0=l zXJvmBtqcdV&d|?LP5Yf@5gbH_xK96@!vW|%BG<4=D)?Nn&y|C#g-tXYgE1?B;#S$N zkv9J=+Fw(&MISVISA*Vkb7Av%4X*q6`2On;?_S>?zr33U`R8?zpz<5_o{{BRU4zXN%V%v4xs0ARljObJE6P29~LI!_k z!|_P@$e*sM+ZN1+r=K1^O^aioSU1xWN%jdAEA$^pqF7{J5Gw9l2Lr-^TUSL~{DisZ zQkv@ky5_~CS@en}-QNQ7E&>PF*!QRB2_$SC?#p#+ylcqn!{(~LRVYuNw}s+WD1#M> zLZji@kJJ?V;}i;%8kPwe)(PRxX8C_RtdoLQ;62O4FuuM?jesVL-+7%JyyADLq)(3< zii$|PGD+v|0;|Fhqf)gwsKql!KFQ7oNQQnwd zZpU!N2qbQx{Gndf&3aPTEUqlW7)+dZkbWNqIoK{Ti8leI!QLT~+- z8slNCClM%9Z${OgB-TV;!%~0jTp_4Lw|2&lc>VsFMum8*6<^fIZmu1|8!MU`kRWO?`OO7lTg$QbdF~PHY;_fM(U^@4x*Lb;= z$Q>2cY1V{;>ttR^+8~SE(^*?hwufmSH}Xd!evDU>o|q=d0mxIn3D$qb1pJovjWo(3 znK;c3Q%O6Eao0l=%j_*3R}s`&OjOF^3Er`jpSOqASdi)Fk_0^+`cRnTSwd+}L}hO{ z#6CX0{_V?;&!5-gAHPyp^cRGMQO8=64x+K?2|k8MkH{%!(8~04cI41KR0xT2)#^d* z-JZ)_1XoO@$Onx25x;-+fKC`kbk&|2WZ@xbidlW4l-^Emx7Njk;xM>Mkt@mp>P2qr=KThZ?C@Xc2#rf33zbFz{iUzPE>` zPp_>*JOIFNp`O?TNH8}|eV@xaz^JCeJMJw0|Ni*t`OD+WyZ6uQc%W%He&HskZ%5g% zB3@g;!6QfJH9VM-P#C6qZkqy+slzqxrabpr!!b(jN^`rk-Z`EVC7M|r9Y{^GNJ*W1 zd`3^n%bA=fZYO`67@{6p#SLPtF}^E4BWa8_k?O)roq{kpnh-6Kw$wNupB_GadHA?q zY!9s}OVb>s1JKB_tgovOnsN;d2)l1)!}b~lwVP*$_IgXY*Ip#cYiOCf`}Xm?5)5mv z22^L?Hh{32sat)q)m2eFg|+~juW&+c3vhFt$!On_R(F4u_AS2KUgukK`;uXGk89tt zy3F>O+sq8Bw7NDgtIKNP?HfXSOW(d=b=B>(*`J;__)E+v96b{Z($lZHH-s}$9O_(f z#G`ginF2%@SYVKd_}!fWrW=TRAkiT;lDSUCmWr{eQ;*uF=fmSW_dCs&YYillHMQjv zS8Zv1z1x3Hu>XA$oSWM0@7lnrW!o55*F@~uw1s}vQSxeJ8n)N_-OPqRaP9m-i!AY9_UBb9R*6`pVc1;VFYf-o#eJi=zgH*w9V#vT2Ul8K=KZQn^Qz2; z?e*@v^t6^uwfV>@4a4T@?^Np_efQs}o!=g{17CkmH(V?%hk>!BpTlerAv4U;J1&Z3 z#OJ@*C;MFcPz7WG1xl=?@b7dv2LjDIIy8o$V`C%JX;R1OZXE*u&$n$qG^gP#l-EE# z3J{fvAPyKW2JpCYJ)aI<}1ctCk34@UXKN|XZRJ-i}En#yf{29GP~a? z;|i{3yj8^dBK!-C+DD!jub9Z8aI&CN6_bBTk2E3=46Ta3KG3sKcBVE@hHO4Bjo}sCFH*Qg6E0}sxbu4=}d`~tFP=!zc9uRCongBhIh&bZe{i6PzroE+Mut$Ft z$~hU}AFqU!9dqrB9J3ye&3VByJJRuZLj@P%(}sH9Vs4^hZVVtdQf`^8AY0r6Q7SqZ z=QBc#8CyG>Z31aeAbFHX!-pzbRS!u{c2~?1WbA+V=`0;Z$|AYLHAVY%T{aSsBUNVagkcU;Krigf z4Aq(jl~bgx8iyk>)j~Y$(4k-J21hg@pTi-WI~dLi2j_S_gejc&$|}yA0kBK)W|#>(N| z+Yz}VM>}?mj$y77=ZMI{=rX0k;uTEIVc&)MkYHkx;yGWROZOH!FC=j!FRC=n+Za$4J)@@TXCbxr^^c!aO?=%Ly4s!@3h48c$GB2X~N1=|T{ipUEdY zL-%0}9^_z!w(H$+@yCQ9QNUh%j_d~|LI%fUOVB4g+zbowMyA>Lw#|Rg=y_{jeI(?6 zHvu2UF&loU6PAc^#zJ506xGWk3u`4zMS?KW@i4ZhaoZDzfasPB!?&|YqAC6*s@;>Q zi>KZ_ASNeQrdvgEAQVnVe&9U_#2xhH=v43MdsJ{jT$(O>MgZy|>5TDJo>gg}WiRl4 zcBbTLX`(bOeK7VyuSS13ePxmA+eHHhaU-$})d+&GiKaObLxvt2WjWUW75g8_L>k4& z$e|&VKhJA))oxe+pGcEhM9D@-SfukFcwAAN4g}-Y#d1fA&rIZ8&w_RLB=;3wXy73s z)Q-Wo8^qqz>xbu!AI6iTG*|AoK5lu0aMQyU4J3!JGDak+na0)ul84I>HzVb}^h zI53I=ysX!wk&f<6D19eJ*8X}#Y&v4|LG>JYgoP|=WczSE8byHYFxvLUKkS!>VQaB&AwxBTrC#tYWomKEP}*okfIt% zbP!HKb&@bSiAr}q<*OMLpD_uYT{E42tg66veu&8Y(-sQdEDBOJxJLH0l02?>kGA(X8vV zx8+mc*JHh=9xE&?&YzuAvmJh3|F*#z+QQlfns9Ff)*O7a_R@75Pq>11{2A*FjjgRh z5Wl~S9g_d<;nU;GieMj^D3%A+?@X@A^p%?aZfQv}F{>4nGU9#9bo*7hx;EWhwmtkxRV$J@3ja+JOc^9(85I%W+Eyg<_2$x*7YQK_r`Y) znng1u*pVN-;=RFSn`G6&cW6FI6)o1cV6lT;obLt>Q<-jn19ZlkY$mi~7fmG%)fUI}=vbDJsa2lpSmhCyKElZZqn0{ty)y z?sR{E?8SSDFX#J0=_kf{bNi9*qs|QXVgTj=63V|&m4@|Xrq&hqkn9F%a%xQX&RSk= zik5FqG9HbXfT=0XiekgGM<^9cRPzE%OEHvC(m6HHq{a#zA+%jd#vQTR1x7?X*D z5e9Z5v&D>6wn!pIvg*kB-^3|3Xj&9W6KAx#nypCMNT<}^)Zju1xL;l07Rl#_m3I3P z_$Wl~M#Non(U1@W#C01LI5JkfB)gy~Ny_F@^#C`l=dvygBguLs0#4$JY4Q;Jv3GwX zIiEpJ3tqu{r|sUEo3*-&<0hR{&b-e?M@1m%YnrCDMKMzhr}!c@3dL<=xzVxvcD=HJ z4#VZ8m{$fyMNXr$Kw47s#Lg3xD+iHNGrHK=n)5Jbi)W0=z${a`y`?vs%b z(mEo0`l7O|gs3F2lA?h`6M{&wdX8YqCS$W}lFoo*LMo70U_`bd;JQoGz8adDnN0>! zl!1%qu23vXd!IyY+8zsXKBAJz6vOI3#@Um20*ghjn=?%Ge1TqkR%NDp8l!&)C@U(Y zh!bdUWIBvM>xv}1IJlC-7_S)lMqMZx@kw)_aPuLa<`0}1is3ka@d~*OMK9sI(|mQ? zrCwVC+@Uef=0-4YImQjEYZPk(%I?~SxxZb8J4RCXEYGmnU6v2wE$7^hmwh{2=619l zHdiGaw@wV}6<$Y@LB-YFZSSx-&I-@ZSlmi0OND zBd}Ld#RtzHu%IIc`(BBR>dVAfiyVsmko|~>r{gh^Hr|n74ga6!51)VQtOyW0w)Nag z9rL!-KD}>)4CH*6*6RJy14IZt-h4!_E=YJcR0|~4sqaLd!%-)ZX+#nNj10(ZcbO)? z-c+0hXST;EdWdSYu^0BDxxiO|K11`{N%Kz+PoLN1w|&Kq77^_6Ct#ow`mW-JvhaCc zilVn6?+(exjs@V=PFjB=pzf#>D3!=%}5H>%xgskYh3 zu9j;4yt*m1?>yl|b9Kp!m8&(}>H?Mkm z_+dpSPY5~b)1c4*8AT!pV}_nY3U@s+(>?U{5uFjC6(6~3lUk_6aE+9p zNVo#ENP2dL6t8IMc{eH31EZjDuNc(vv){|!jm{b@QE(0%!#U`a++&4xp0?>-eM3C8ZOLZobGP_z6IYGyPlWc=q?gIe|DzvXXb1RwWz_ zvPxS_U3EBX;o;?^KT5ab_g4A+`117r{rgo+r_oYO|C>%xf93oPMCJvuTlFd$XCR_3 zU0nhl_cmA;)I*CBwfl-eAb>Qgl#+1B%jVrn9!h^(6Q2)@6rBynMWsaUEP&sUmD0nv z5x7nDX%udV^aWDJ#O_2I>a)hBlP7zYm8FW;Dwi*h<1DhE*yM}(6Jam=*blFF>=qha4quumS%yq8in>kVet^Ji8k z89wiNY6t=j#69Xk-HJRsgCt(53x+$$JX~}*_Ldi&osT*J(mbhH;ry=tapy?KEoF#$-;okV{Ddt3+ko3J{?v}&iuMPeb5tU03)?U1QR z;05)vDo`c{eS+Tvv#}#2vPhOt+-ie#am7=ci`&sUQs zlcL?dxp$aHlVf#EMzXP`=V&o_Ln-ylJo(L>I*Q#!181;B4!vC(rA}n6t6GcEs1d4C z>p&~*oUY$NtmNa%DoUK`2Lpe-X9S+~1_?Ur8IRWyMSP4Seb%r6VOGGOkqa_utn^0w zt@fthS)!Re?2U+yzM_W^n0FaSdE(Cc0udb%gI6N(fM<@pW+DW%j}A=Bl%#)po+QUU=z51DrizZ;{p9OLHR;y-%wk&UjI)lHkds zDGpKRFkU3Pkw*QK2p4m)Pw3oyXOEQ~A9wb~`c?VIkDL{+1KpeVhM#x4XDXvznrDN1FrX$9F$cG|me&LEovq_e@ zv*?)77nJ%XV|#Ww9190co-G`|4cVmGYZ^~72Y$K)=-dzkZ8ClN0|b)l=eyt1RlLtlSGU*cg=uxAm(gQ$0u ziglz&JaN~NwDB}2qsB(La)QvOL{8oZ8=I#U6{a(QCOPwExUWO9JOwzJxV4B{QKu*l z`Hbx*$zmXXrKvEWicYlT{pz_n>P*z+|)^bMOMl!$UIk z1kpliQzD%hm@Nups%pZ>Cu7OAW96co^M(h7>##A0hq-RwNmbhk2*s(FY6j$}6H!p+ zl80Ny!Ucb`sTF2Rr#F;znz?V3DIGJbUK~(`+_%#ZeyxKuOAKSAx3dMqx#!wHQG(4} zpi}wju%~m#HU~Y{2wp)oz$92O&q42^FH1Bg@Q`HdiNGnW^yoo-9 zZU@zVK60Os4oYZ1`MsR>~5}N2P7bcRjx;vfh?!F*E~h&^)w7d zlP>4~cO=W~8RWYd^R5HVJP2LKq>g`ZQ`(FMItduoQ#iy%i{Fd1HVC{e9W<~0aAyHI zEI9oSawF zhPd6Dim;LF;|{G-R<&u1cO5{-<*-^uS{rs@T|wZ609r{hUf7kKqV1HpG$VgTEoygr z9}c^P=PX6$$dwHJzpxVk8V1ub<>u}&;c>=fhBqzm;}5OXg6$izu_IR+ z?;O(1?W!F*S=f8T3MXeqvTUkU(Ho~TN?jd=+OdiOpSF%Z0Flk5MnsQgNshe?yfl<0 zS+neDyq+ssKJ?Udk?BkW5KVv1Q*jJb%tI06!!;k99RI(MAJ**1y<|Wb=rxrhY41$W zyx#$zJbrro`vc;aK+wA*Tpg=^g2E>6%gI;@pmTJ_j%$dRFY2wLOUBJG zKzKKgNA(q2W=8g+sS)W7w^R7?)H3A;Dz0V5l64C06g;qJI=yVA^saw~Gxu^ste5#g zdkV>rhuf1&w9|?$)O&GVR15v(b_$6k`f^jc@@3$0fCX|8 z32}oG%9j>mL+(OLIe@7W>cJl6k{cWk5LXKHxQG_e&#@j1^Z>8GbY?%<&tD!_s%W(+ zQK}dIP_dRXO`8p_hbYhWzaaF|!djM3KL?0k>>=3J5CDy#;Y}jItjbR(x&r57&!^6dIqb>Q#^EJga zLzS7Mz*ct{+7kvT8>2MHA)U>@i+B{xZ;G(?E8>33yM`Li9p-Rv1ppVaB69Jw4SsZOEEU<;tGV=h86m93-hFs} z{L`Cy$)!BWq)bG($_kIhChkoZwy*c<7|h&c$8dC*@X|29rPP?sD(yW5_^{i^6uQwj=PgNwT-abIT1VjvR?wjEq}1k+%nV-Exm^mbm_di3tb z^NrnRb7uFJ_Kr#*f^{gt1HRWWAP1rlgP&dWGYo%8f}?$$#eNBcQyjUNOL$;g3_D4Q zT)SDAC}L#Au@x0GGZ=)7eo-Z$rs`%}`S`e@2yWUZR0gCQ;4EN1=9$oJ+epVMO|XdA z`#$|93Fwq*L!~>va8uqTI~$g#2GQnIy)xQ4=j~BDsoBlL`r~7BQcv@Axl**_Gv_Q0 znrVOIT#7v-`9-ev7bo-%rxy$+fSL3h&+$z>NA2Y6IX=mAdYygJ0=qSs#zQsZ&=68+ zSpcl}Uh-XX=P9^0gev47ztIf--fjfMPc?035!nfbpF-dz_M{1398ZaBy6HH;yO~=q zGOF27JaRi0q$f&wU3${fi?EWL-t7JSB~X8E;hN_)ib!*HLK)G>s1_*Mc*zPKer@j^ z>;3R|lmkAX_rYq%Z-87%AFkOx?}e`a#=!TpOgo*Kc;L7g4A4put9z0~=yzqlvx7?! zb45>-ezMo3dQ&Ctpq^?)lvJ!qnD5e&^xX@|@cyi$)Z_p8@bvch=NPCeUO{7yvoU{X zSPVJN#ulCH6@rOjMvtC3Mhw@X1#~w0T@?0OyvB#&Iy|`3{M4;wn)}V`w43$u!irb_u2x{I18MCK!dF&M`H7{$PIst@KKlx{L+W@;y-Km{QUU!?WKj>?5yzJ&cfa8 zEb!glPQZO@h41#(?QU;{@Amcr?#2p#pTOi7n)P|VMeg`CT79Pdrj2-!cx(V;QVUr8 zruNR#%3scL6E5x|z6&v~)DC;=Lqa;*X+hh)I7Ki=NUY z2{tO8hrl4cIoX>9?iESu!7giB>Z~~*9()a!AEGTeVC0J2H6?N%Q7D)^yoz_1aBpYhs?+*J&XDPKf@~H}OO8sA zQ(Z^l`GCV2^mokmn*b!}Dvy6bZNhV~8#tfQ`Hj6)8hgsA8un%y%8-9#ZMe(hKtWt+ zTXN)!VuQsF?l2b#HF3mfDc~74RCFtaV9^vIRPeG+Mn&TBW=7AJGdGmq0X3QW ztptOCRCc(kY{G?2{wBLf(Z^A|PJw7Ok}(Wi?DR%QByyin?+JV))HiBp+DS=c6-|R9`n)fHe-s7O0x+)cz&o;P@Q>zWzlq` zxlhxS%|ZldRy|?Oa76VN-7%Q+o8sV_9Shue*`2?JU>`DfhCzQsLSkfAlg1*SBG}o&ajb;7;$+cwDA-7?@!yT2=O6&ST zLh1vIC$WU2nvgUn1ir*Lw|#CCB*-1+#2C_?5eqdr+BuWvZ53zCrt(LeCBt@>jH_Al z|7Y)Aw%j(htld}P15i1D2wa1P z{QszilpqKKfj}TGYt2i008JZOYJ&~t4i@Aw5MhPNwtbBfbc0h%VdFcpNp2A4B#5l71Rhu3N^}hSI-I&>o2T9q zrHQ|NX7L)E&d{Dq<-)Ep;m71?B(I>%HFp# zHo5JN1q%qg1+qvY<2mxewrzj~8JI$r*do`$E+SEin2$Gsta3!aEBix&rGp!E3c`*6 z*?ijspw&p!K!93&8UZ(NUdnp9ATEW_@4-XXb%4^Rg`|I@6{DeB!jO}|h(IyF8t>c> zb@_Nb*LHPnre2^T(&2Y9g!QR`L82s?h1E5DU4&S^Uj#fdtzxiKu~S~_`~3R;;c1Nl zP)?8_bbEg^aPu}XwiJ?>-Uwwr4gVeI;yUVy#`_yI&pDKIg@M@0RxOiL!v-k5-U6F% zFU^`xa(WTsd*>hvnxDgrK$7*=Bx*7vV)Bl=VCbJ21*XI;fzc`c0% z^^D^8V|pOA%y1@4ZBU%0UO}>%?M*4v{R7K0IuBZ-#Dx5#+roYQ_tN39rz!zzC%RV8 zh^l|yyMcPfHnYG~_P1hMPuon_@9J_IEvwibSaKQcR~xFxc_jBg3K6EI7j%`u3WHW> z>jEsNW0*4ZLs`#tpxX!fixxfFp5KP%8H+c^J9_A$1LrZjZ$!%0(#bL^W=cJV6nRrf z>A>>(&Qb;{u=7%NZ$i9dD_t9#>MTR2wsC(#&Gh~hS_o4shHa1v;4(7{H|sUBcBaiz zv`n92ZGg;j90||LU5TfMP_LMIcU_#J3(n!#>@M5&SPsES#JT?wo&&S~&P%Exn7eSB zDTBpxQ;sY?^L5aYgrrBpPK}o+h6~nMFK|sW51QankD<6fD8vQN%tF0lY!1D@7NLKH zg)THqTtq@6RLDI6w+^OPHmK|hzdLOjzaU(l9cFN}hmpcJgQ)GbfYoeenxSldIR_fj z9*kgSpsZE1+;IM2Fi&I}b6^_3#@M~QzVR-o^t)`0F^lH6R%P-eYPctmf3?>%^v=Ge1T zfN<6q5}a0jxpEk2VTlb_|VKdky|vr^_GtZh}uH(h?6tYR}8XPE?vS+ zU-O^uzP^I`Th1cY53t@dt)d5<+tFz&X+j&o=%KEI-P@T~>^HczRGDpe7D#`XFwN9U zF@*L5PrPHghM<52;KinFm$({4%oorbG|!h#T3BGqv3hA?mhZa-{OBSGpYK3~w!Yp? zQN=`E>@)I3*BuXREAO_mFkFvR{-yFx*4kQ>cwFAn0!lQlznv!V0}j_Jq~zH4G583K zvhggZG41*FaW(s^E}9J2Z9;zpMja8qV?)od@5;{b@Sv}|ZXXu=+X(0RgyrNX7-$_j zl`sb@QzbOlY>1m^9T0voV;6ffuk3v5Fx#j8%T_M~a(ZGO?U)%SV}F@XPLrCc=RFSL zQ9nv2|IpAHYpp*lW?y?tgqMS@L9}Ni8j=VVnOOPAq|Hnvc_4RGX$T9k&I9~7-^SF;%aOK3eQOA= zoduv9UTe!OG*&Q#QU`zZim|QRo7pvl&Y^|A%f{idCt=x=h&v1olX)OseOgMWcYc2x{DoepqYoLNNhU(q z;Mep01@K+YaC>WCo|nL5oXaF6FwnUXDislURuHIk8v@(X)@YU)Q}w ze>5#T!3CB>{cJ_rAmL#XRu$NC&Tsjsk68@FpCb>!pGlVgR8 zy-~+>xoS77fdC+0DK!GpyExAY8Ljb7VGgFM8iz(=E(ku2VNtbJ^Qc56QdcPmyd&~s zoed3vDbcGpxRi!~VR*HB^ro?|W#>%u3jn|{lf)^gc)Iy;- z{O*IvWZ*_)11qL@sjMg@oTRsHfOb@wB+HT#SzW2M5=+jft)|06PoVcYuUc>o>_T5> zfW_L<8cYuJu;Y*ohl^GF-9~bN71uZ|pp9OM$@UIzH*>(uF+F2&4&olQ-ETIqO=$e} zwX0VRs$PG+clEMySZV&`K}kYfZ8VG`_Z+@&9U4SMNZJeGa%eJ54CfZy8S+KI+Rdg9 zVTr+e+HzD}wY;!VZ?l@5SFPJdy=olgrM97(`I>TbGYAqj3g+30^ltoId^zcGlR0>}%NQ==c0>#)iI zxiiDqXrX zfFEl?meB8GS&r!|NkOEaG~>|pr0FfcPl+@+&x@DwttOU;4FvU)4zDGxZU*WYYd2Db zEX99_ayOn8Sv{t`yayZ2O!7EiRsnkd5*l!AC8~@?EjDX}SB?Wl9Cvkt$b>pIlS^&( zDvKxe`-*?m5X5R|ta$$>R^w6}x?JYu6-y2dytTV5F{4e*ZKw#`88tS=#O z?a?A5qoRviHMA&J4Qd_P4^8|YE_jXzbw9uu41iXql$XzH0p zLth*1-$*^uN}F|a=)%Ue8qMb(BDmL~6+z$Ahs&yeRiUzGrz$YB6~SJ0U!!CE>iHCn z90Ql#;K1nl(v?U+>4I+@ndq%1@a})h%k$5lo*w@y-GA7yb|6x@o9KZ5%G*5ffD8;! z5Ml=?a2Ss^@N3RD4TjA3Mw?VfBbn@OOUdr7rrW&Lbi22jZvR%(jcaT@te>8r|G7#L zr!#utN=>uwuTgU_?;0`wmdtKr$}RWNlx#>7Y2WJH%~auPInmsvg3I-9($s&`a!@&% zh5t>rw|>gVDzbx?>xF5}{*1GGovl2iiB7+_8m7sHX~kPyaDw42rW@X(&1;e^Na_A; zQTpbM{QCIy>*ME-tKoBI0HwSVi8J79)&$b*(vww9I6YTuB=Dw0_OWDZYBrsJ2Q5?C zBMLy6hT2`^!|gnlsxU3<%-Mf0SBw%YaN9Xj;Tlv*5@8yeW8USx@Gk6X;m}}0!w$D! z?=I)qsGQg5rAKTNLiQqj-Zv*(vUaxdyvJ@Xd{yn#TJe@N1xTS(9eX%Ndj^QdQ*E7x zBMxZhVDh&o27wh(4X2O%;l?Ap;p){Zd#1FqU&p00TN!w`fx!xW^=sQjSHiwIT19i%HV}BrMa7HUK@HN*iK6Y_$>Fv}@%puV46Q zNDEukSvOsf+8uDys%U?!)Wu-Yu1J;b(QGi;hi>f1n<8e7ynmTv4gj25rh!gHq;$l4PM}6C> zzP`%V_P2+n{j1~)re-UYMH~JZOofTWHGKEIQ*AD-8Rw2c%Cdh-_<7oMg6JR!len*! zy{i%+sBrR?=LNYf#iFO~_VY&HlEd%LGDm5qzj^wbMA5NZnH}5gx4^(Kb0c11)imn7eY=$XGLdb9CwejDFV6HUI!g*?s{4+C>nMzG3Q1 zx^UYP$yg!=^YDL^tS;=Pu#j4<=5N0>C-N%ev;JNn2Yb}GBfK4*A0Gr}Si1%@9u<{$ zC1?fzAh8=OLLv+6)KBUeriL75m_=ct-WBwvh18P&qY|K>|TFADR{gaLJSM(A=`Y!mNQQz?R}_< zmh^L#)LIGkhIYx#I%gUx&e{6DQ}3bgEbT*zwHtU(Eu6V!D(6Hs7gm`4&xOK^Q z?|*q%iM&|A0>K~>rd(UIbc8jQ`ZubF`z{Jb$!c61neUczy42H2B*jzRkDlBMd|dBi z@|}P1Vu5xLDmma;x2tI?^W#zgZa|U0;q|X9Gpjr18(pa8XPoVuc!lyYj!^LIXq&RB zgE)fKZ;MA-oMHQRo}Ryb_}gyB;3+Um)}*KTLT$EbGwoWhm&pg{{|~0O2`OI``K{L9 z;>NZ}faw9YTR;huA&0P~w1|7Skwl?3tLMYx)2Cm5Z)m4~Wfe6jP&v`4nZ+H!;jScv z2E20>WE@z~IBCw{X1{I*sJHIs`Te(FA3wkTeb0Mu-d9>Dx@*y6DS37U{+ z?<|CW<*-3`1fw*d#t-_2PL8j&^t79q0;;ub({d368?2)5AA&u!-PYT8eDhdrQY|aC z6ngB*3ZT=&x^t;eHJIkO%A{I+VQ}`7xiIr~MUnot2e;1guLih3Jif)Fi}7-*-jh9W zHAMuHJC?9FJ&^zl7;mL2#2sh*SQT#-`{z%8pFgYu(|MJ2?pEpk_4m~hEs$*@Db>g_ zPA?`*+jRi!5w4;ElA61s%*;dXh!?6MIzDR55C8S_jrHxJFYc6KP zF@dh>!69J!CN>}TFP}bqSZcDl$1^m$_QGvE`NMcV7QEb zUf2|iv8-rgJ#CHW6pKeWW^VM1_atem?ds?;a)Y$U{Spl0j+z?M-|c1M=2P}a2M*1b-x_RQoU&1 zeJ`j>bKah6eERj_Y5%*0R~jtxXuZm> z+qqUglIOA_CnptrP-_$eWxdEb?aN)XwqTg==heqV_P6PtA(@lhkoEZoV>aTIv0M@odNa;^CvDKC>FG&hRP@V}xAlFw`>ld-LYDLVthdM6}*F?%R|Pcb7o# zzg_iTKK#6zc#ijE*Xt%q))R?;6Xt1MvJq9*LmMTt1%ahmm&&XvRZJ2ZELw8$+X~wb zi{m>}p|~;g2Ub9G(901cwmf(XKBWRgCU3nn|Fil_u{wl&0dk}X0}GAKoS-l6kkeq#H<9qzcXk3OeDWNubR`4727rd7hWR6}o1%d^h90 zKaf|*$~H8XXb4Ak>if`tQHzrL*}?S}++17s$dsKjAZyS-_U@S4j^#S1H}rs=5=J24 z)b-pfAa7=pLkh+_8$M1WAl|72i?fo!vA4S;eournt#cj>7dFAZTz1>gt|JP2ZC{?n zNa;Kv9W6GHLx6O9`;&4_(T==xP;Eja~Q#d(V?axVn9V3ZKlBKrnNNn8M zv2b+KG4}R$;H0Q7oK3uxe`z z1mR~SKy5ziurkcy-u*8uxC0^B~*j5f*JoD>cr!IUnX&RSHAJ3Mq6e!P6Bv&#G6&nYa4RFMI18 zl*98nTVMQea-1{sT33VZf%UH25Eon4Y)YFshlF#7W;ZK6HUO4|plSBT<&sKn?4Z-` zys)TXoTST6-dOp2@skW|ExNOiHR*Gt_OOxl{kFb!!^bp#FdFJ6g&gK6LObkOY3SvU zjGsvi2XpVduf28x=3vRv#{OV~&Cs-&53MaVS{dy1c3TtCYVZP6^sAA#wd;IR{K_I$ zSjmLZ*~;;1Q`-Yqv|}wsJYx_H$!dU53@xApbF;GGS#&9;@AdS49U$dt?4(1-Pk11W z0tTQr!@Q|~BN1YQh}vcv*|yGVchiPCXzamk4lo2}+wehx^EMn#&af~WY)pgF*Fw*9 zd|lz!!A|w&y?w~YP2)}$ZKe(dnjsZ)#zc!HOkscD@Km#NX=5mwajMRG3`iPhE7OxA z>TSnH8+0glxR9E146~IzgBdqj2H&wefQyW>br?5)a7bjacXcsz@Gx7N`(F`WIl04Z zsPNutHC`rMPHYh4%`#M!-A#Ah_B-B>A>v~`WfyV=Ic(RoNe|y#_SzJSuG({?#GufI z)+<6MyTAiB47`1`<=V$MoD8bL$5%zzNq2NI?6gIr(Rv4T>7z#?F)D{L5W4U0ti;(F z#Hu%c*WG_>e^aoKyFPSlIsxC}0w<%;2WELS&9!ZVVKgxK)+Q}NK_b7{)2HK*+V+vX zWHN`7W*;uwA{QKe@(y)3<~5SY1^B)XQj-}2#X`0tz*1Y2up4*R!flTi&%Zsse0l!# z`SmXkhT`ryEj&gq7twh*<8`Aj#WLK5_{;2nvtDA6@AE3F-K<1nY?{Gk-dHO|sFHs69v>LYXIlH|Z|!eCAI}5pAReYYL?5_fLBz$*p_V2h3*3 z5E$;{_A;m@#yeP<%@0eX+&Da6RZ(W5DBNB;557V3w$+Un0ihvGue-gS+H-g#No!|+ z48=kF%Q$6z(I~Y^Zaw8K>H6fSC`u6 zdA&D<7#L&*_%t@H(lt$o4td&q-|0<%CC0B&|1j8yc}!tUHEc$8S3I)qCptaO54W}V z-^)gyE`klY7sWA8Z_Tvh%ou&omwJ0NQEiLok5`!SqjiG(t&ZaL<#FXyqpqvJ&*yBB zyL&m;7_VU2JGmc2{gz3O`>K0qX~@_}t!cWAG4ftY3TlD?RpqWX>&3 z%dE4@>==7@XY}Is(DB>z5>fV-3>s={vR)%1T-neVuY}lT5Ehv)$M+lhe%p95LwADg z9OHt_ibn6Z<`}^wBIEs=cX`tr@y_*;(j&H1p{odoW9sF}osBWwVbO+{*VN-4LyfU9 zDvTsrfA{zGY5)55>2HhT7oDkpqnA)4q!{KaxTGD2n2oh%Z&o604BK0D)#D7O0E@PE zqY8YmG6Hu_TGmu-Q%;vcJ7&n`a9{j#mW{gkb@8&RHx=FaZjfT9jncF}-LXtlQv~jy zDIyEVKtan~5TbH>t8Y6!@^gD1>6``|vh_hAAJTok`Nqg3(Y#k*P|y>9mPw?QdikZ- zSS%?p-;-^x{1KpIMJnDo{mzhQLO2&kla4b~Mc0UuU}tZJ}o)q61ehJ2Tq!c zq>(@Ne3Yx15;*rdP+J;<&dl#PhC}#4K9gM#h_eOE*{FMsbVI5m^H2{4MycY5H_LfL zHVzL;wFr#O>@gXPSe&VU)M$F0o19&zt>)b0u4n^F-S3&38ZUPoqEU26k>OK6D#7n* zDKA_qm7+?J0ge)PI9LX{MOnZ&jV{z%5z-x$>qoUiVo%AyeAepqsMv;NNH*^Nb&221 zpwQ3!C$TY8nJw;fP6-BA1yxg=27Od?X5UQ1UfMqURyttwDxiaZ%SD*>i~xb>m%v%E zGgFOV$#BNGRNSz^N3~(~JWV^jcF^H(6z%2l*XRFSP2e=OLY|5wF{tMzrd!q`h~;{B z4C!DQm6|WAohe6H$rLqWys^_~^}*siH=JR-YvQc2?^*&82FNVwKdC5kYkBcB#>K-( zu7mXE!|)w%rf6V)lwa;#>uTS6p51!8b?dV`PqRC(%blm$op0QDJG=4xy&G@l4P=-% zkn3%`XQF|mYXd3dL5_lEIY#@azS};w7?anzM0XNGeNZFr%m}#;mPoaQj{hXq&6k(e zQrcn!wIX~2twro$#pL(dS%TP7e9trZ)-qA!G%HdVN$6yMr43BRC9;Sd7K}{dua_;N z0aNRh8@J;sh~}Ym9U5ALVaQE;G4-gOBHBBC8ywKaK`a$5S+f}XY8V;QlOe{CjsGUx z=36BDrBnsW#mkMKy!4B*!s}0x>1&`|x7V!$jS1t{jQjg^nyi+pMsRQfP1>JD1h;|z z+zp4av4ih_+S&t&jYtc$fWJq(vvlojQyAniM8h5Otk~{wk?A$D8Wl&ep1~M`OyeGf zCe$V%Vl>cWF86tg0L~ymp+N}o=?a5s*wbUsYP;1;spvFk?%sCr-QRYN7J-LSh^)< z+wy=LxTGxt(HU-jgl!|uP)9b@(HGb=_Bn1M!rg?reHW|Q43@jL|8(?i;jvGOIHP%poOqf)EV1< zT#^ov&Z*$RH8y4*f@K2086htA_YtXYt>qXJ)dO@qz0jYvQa* z(^^mW`rJ-%^c{Cs!|rp5$JYhWaFNr}g6}Zf-j%F#c2v`D%xIIh&T&JU;eobej52D8 z2ai1=5r({5s)7VjJMBZ~gCKJ~MDjd;mn_N1t+#icd1MPzUPR3@ylI0PQ>3~p3fLP~ zG0e9Qmu;tHEdZ39V~TpY9sXC5!kWi7D%JrpMpi>aR#e6vclv z;-^x*`ny~GW&hN6q(h2$s{cy6&=REntH@2y@$q-J`pX7{ z#D^qegDTA-{_d`SbL`jO6rXeal};)Eo*mwM{13&DtVJf%HpWa*b4O->jPZGhzhmq# z$Bl37FURZrc#VXYf?{!+p~ddIwtS%iSjFpr04@}II_90dWn{01a%zx}Yx};{!H_R~ z84*0Si)1aP+TJ++JH+4KZ)&4y8FNj$@^1OwJ59p0{24tpEW<4`!MC z(48RdJO&eKu-njG3dCB#o0@Q-X~ToW55`i()BS@GU@MHax!m!n!zIC~_I4#w98 z6BY^RvK6w^7NzM99xt5msqk}R11N}l!7-ZfW#e$!!>x?h4bPDL2vr$8T}kwKUb}ay ziZ@bI9BDEf%Esc`vQ^vI|soi2@Ihxp4B*7itx>EiEh_1F6~howvG7(GUf zl74w>MvZ<~-s;<-?CURU{SNVfOwI6AvvVN9V(87TwN{HV(=E#kkUnhyH8p%#hHJl7jdFWNXu_&vogQ~qLPl+QuQztzhVf||Gv|iBja3MsPAS26&QvPGF?w!WVJ^xk zt=)t6MCf5#XR6zk8By28x=tM($jE`kQ_p0p?iW^C$ndamxESE{D}9b`rN7ay@b1Iy z_qPxJ>EYvlDrncp{aZff7Sgh4&z*T+wx$<*tJyk}`L2&ID+VOzEV2H4G(!<)ZGGQj zcVPLkj#Pnd2`oo|A&sM86^6Yg%?$VBS?)CYTZ@9CEI&ur{4#TRgSbIMh!@KPo7U7^ zr7Bm^sW=VuIZ6M$i*5%B=SUQ}^00Imv{Gw? zJXLeUFitCGZ8dvj2|9VwNyKd5@ZUK^pR7;bc$BkMnnhhK{UTSsw6k@vm=nImSrMcv zhd8(>s1{QUr`oExUuCwNeGvZ>q}pWJbpL-2sx7e~+{HSXmNk3amdJ5wV3E<4(U1Ju zth-l#RoTas)X(lchsyb25O`*MBiC^ep?#wqx7|R0 zxo_Yc&}&l)v4GRKw^56Bpnuy?ITa}hw2zwmar;_R$N6rp+T87#cQ(x)Sg|qY?H;k> z4&5)l#A?x^Aoit*FMA!?$Iti@&{(SzGtWyQMlXvTg4WfZ5ZVX~_Tu*D@dlZ>p0`?m zfz8f`i12jqXP?44tVm3pFr!#<>|@2-t#>jnTkp)*g}1W(Q#*_ zvT6?UsllKKV?;DYQQ0?Iu$89>= zNhUY`53W(*aoz% zLg_~zC_dG(4Yo)lfWEUV)6d&DW$Pf?+=(NE*S;sr*4%zyZ9b%TkH3C-{rCU*kLo)& zx7DBjX%ALHbh)+EmbQN6Y5w0-!~a{ie@aKgO6yoRf#;6#@s%~fKbRol5drg_T+57f?v1#LJzrMb#0^idp(*8qUBv+3Ld5>7O*`{LIX-kvP z2}^X`N1qD?3sVzA?0Ty|kfZiS3vPdb(`Raobw^T^xv9_N3HaqWE6QjqK+z?VapoO{ z3vlR!EO6SWVv(Qj0#omDh@570^Uwv#8C2V>5SD~h?*EuWAY*F~{PabCE+{`etOTJ9 z?6gn~vd-9j2vT|y!+g{H1i-8{`T7+$vkk!dC=^K_AEs$=Lio^DJ#+9h;k@TkAvdFKsqu_LG{03fKfgSGUim+!+U$)U z1ulb_N0#uTy&>BRK7YJ_EyB5OS2xM}+rYpzsI`5Iv^1;oT60dh(oE0gr2X2NSC2>S zuMg*%6PRoynl|CrPtRYzEM;PglDyi{qT^}y>Bg(GSpsG?%S&!ct2oiLGFf!Oo|MYO zr`2kuT7FsI_RvC20Tk@4er$4qbcO7&}Sz`GZH%e1{7&x8~d(PFSzAIer=_BFX| z-AIWsr(f-BN}RK7HTkj=pUBIV>Lw`R?NFF+6wB#|6s%O^8q9lcih~)ORnYNKfCZs7 z)F$AdXa-PgaKej!qpXEF5Jc|dmknj&DyF0B+L;r#A>U8v6bM-pPstp<*ve&JXjI=U z2VGCAU84^?jOC|eIont+FxvdL5h|j~F3CWk`{wCJ?z1H+%58Rb^XTk(C}|ET(G7=E zU6+<(m7H0-h0JSUm&({5k<-NXC$&)-%6L3e}#vK}HBMq;3|Y?9?qJ4f#wqT+y&c}BY*SJv|N z(wC}UxKi0&o;)X@FYs#;iJTYxPp*+SYU0E5Z=au@A3m(imb+z-I&2BIMEO!>`(L{- zOHDM2>%upGSnCQVstBTH7>{3R{X`a&MRODs+~S^1*q&3|$-jDRr_g=0gAeM~k>*g1uF`wGPsMU)z|NwHYX!mbz`@O13Q(hXBw1 z+NEwYVfZ4)la{NNjr7pjhkH~ z_($}MTF>G_`_5u`fAj0Gr9!1iV9>&Dd7=xICZ!thQ<|3mUQV|xQ*+WIfTUI}X_9Fl zvQ*Q5jhuh4jJNNuzz%j?v>Q;inz>WGM`qyv|Gk@yz=qB~Z|o>WuU-gg{ z5bv!vH_e}u${O|#D%(?79enc1Rv| z#h%0>6W$3lISvN4Sm(0Sr{&-gg=Z7yi@d1!T}$vrjeLE5cv*M-f9@E23gxGszM&0~ zE@6-nCUR)VW~|B34if8KXB98~YB&Zo-8;sD0fBu~cjW|eoj30E+n4|99C4x4r^mg2 zc=4B`TV?DFgIZtMdn5ibf`<0DQ^V&EH+0kFtoAXX0y-1UsEsXI3z@I zR{W$R=W$0(3h(EU(iQ=H@5ra(;YXDTkb?b25*NN9sS&eJoDt4F8SX2XL>;V>6oA>hb^UFUq)&Km@74v@< zeo>fbI9gw!C|~5z0qU~-8pUHe+fshU)+O9tuXgoe{&(g_hatQQ5LYT>fr>DH=fL|t zE6KPh*PwE(;>A7C=5-XgpK7yNgqZTeLgn^6&E|QU)p@eQa~PZDgWq>76FWr(s?qqX zj2)s@|EV=687%~)9Yo?~<{^jzlv;VNH-24^J|w8zb_{PB{08sV9mde?LKc%Lg_}p}sGx9A^!GAe)b{eGNUejn}n~+(N(E9XRz+ zQp7*r@$`+EVhnC9Dtl%;!;kkbo7K4i(P3zrd$3stxt;H-Lu4M(3QyYdxYMoK$s^r) z^n_7`8_qy3|32yM8>!1_2+!8x%7^4Ik?@O^U`(AbjY0-w@yCz--fVJzp-Fo?Rdzxo zH2%>L4wci1#?U|=>6$j~`SquVr-hh84>(mZG7ugEaMxt}_mIOAOeWxrnJ`Xo=4Cds z4pv=nR_4w(-2~&X!mqW)NCv?t=vx`Fsh~3=)OLXV!gDqJI#8b%*du|?!P1nuSnZfG z!#l*eEO5saP@Chbq96c&U$2BA&HQYjGo}l(Ris#l*&2y}<-0Jm*jZ*xwIBd0*yJSW z=+NWAyNlX8L9UX>+7Z5_aIVKOlu$7m?d-A3;-!g0LuC|y5wA%dztxMzJ4ng@JZ55dR@GZ6|$&^n-v~xJe9fR4GL#47Df3iF$zd~umggj>Q z!QL|x%xnai9$b!pKQVkM=GGnYHziGZykt##6iqBdne{}=(I>|6{TMUnG~hc`Y<(jf z7&GGI_1KfM9U6s>LujIes%z-w$7FSSrHExLUR&s~a!<8bMBeR^4%{aqOEd z=a=CfM59Ru=s=iXRX}so-PF`c_{O+4v{Lv#d=4OT_;C(lL^Uk)K1lM)E>`^ zaeRRop4=Pz$L@B*#wG&aJk5+2v z?l)%SFTXy2yuO=W`j4OAy?^|Cqy9nWnZfXcZ(WZbRev%tlz5!9M+gtGMz?8;z8^#0 zN;%)}Uibf*`khZd|NG4gOABfGFiszCFU({p5faRQ^ukY%KfiwWs<=PAc~u7{{_s^_ z)?mcNWyf-}&=dT;If}TKZi`-I*Oy=p%0;dtj-zwyDo6?!_*iBXiGF~Mv{IS z4QeNmWzfh_C&s4sY5E4X!bpDnd6ZqAwvu*A%IJ*({xmJ#Z#$1xi4Vnl^!HZch}_6} zU-_XzJ{`Zi(N!Y1y#ARMOpZKxI%s{;)?Da1e2T~TOX4*N%WL~laN}_Co6v8wMrwyn zC~WM1-W2Du*}$9kc48du!V)hR9o1@cq^7#wKRqtvIn#9YEI8E>z!jpoDOs;iDi^`n zz#*4Q?@?}QC0L?PuRW^wOyC&d_owE_@H{m_i)~d*%CcuVna~AV6JW2~_OcY3&h=KA zpP!yz-u?V(IRmc8(0>f-S!l`jR%M>M5NttzWe!#)j_fAC_urFOTa^~TEfXsn!^)Lc z5Na8qPOWwtd#hu|p^C|&eJp9(qnsl-NP$4>A*PVgZp3P87?UeaxkBz-pyb3na}eyH zb5^;+E73Y3@c;Tg4&mqi<-sk%$LQV@`PP2jv2OI(b^kk^m@jnO zW78An=%i;?5qJDN+Vm&YW_F)1CR(X<;r$=%!d;Bd&ujgv?-b)tyzb4=VHXo$pj}^k zdUCzTFQdHb%Rq8J{uhh!%j1K>to8DL=EXG=gx=`R8d_J8hLCh)D?51=KGgVf9UcAUheC51#IZTR-@?)<98R@f78MOcLG#~8o0>)VCf<2 z?)&e&d+PV|%$1_R8hU1Ni)oQG`=~D1Nif6y;qm>;OQ_NL4_xDR znv#7VxpdzhY*xf82Z*SZQOHvTym^^VpFhYbcI)j|S+94Xj|D%k`IeFJ%si6^i_y^T zq&w}-RHoIq3oQQoMc8`zey|A3E1js9jtXCtZkmR@RfMUUS5|Ri~A4fj+@v+w@meAea!q%-l0SPcT zPtHy(_pEItLErC|@I(Myp0E4nn;#1 zd@dIseFM3)G_IY0>`Gr>-~IIM>FIH0Z{5?io)xvTc=~ld)t}IyUd2jU_`J(~2z{*; zs5g%jWuY|L>ram_Usn*o^6Q?ej#Kx9hPh;af<&C}gm@6MSZ^U=02xKI%pp9e*Mk|! zy?PDl``USbcB&h->8XFvr|}-~bLPnD?OyrI!^g*WKTSRIKUbyoUE-fW$9u8XuFt_i za*(1%qPVu;pTK+B<85Mf<2Ufaz&baD5R~35&sx)0Sc|;Wa+zjAvmMPeLi7tzh1`vn zYB2q|i{R?i11$)_<_)DKM>wIS;!$;Yv!pK%A737SzWlNptXIpIMN`DT;*^6BaQ%kyvRA*Y^Qcp6vc#i;h6sS$inb%dG|o7MTvaMgc&dwzYq z^_dq+P49*mv4H+1?A+g5Z$$fB+pc%}H=E(t$M=e{uYg`15>EJo!E7T`+=^|}Hle1O zF<-=gUN5LJUFb8j)jGV`b;YYm({TkY_5%i(Enu6`63)W^_gASj`y^iMw~D9sP@>E- zO*}-ruY)Stp^0m;RwUKzKB!G+y+GcCmuTzFgMHl+-bRE`HCvZxYi7V7`lF?ZC5u&| za#z`g68+A`ie1QhHciOdvQ4<2ByiW2?I8?*g|toRCSvPoou$yKElQaPU^9w%qgLR( zLxl>Gp)_0vyK{B+`-I3QC_=A_(4iE2PMK&V?# z(c`rdg!7kl+7gm-wHdQ0w-I9juJ#|ZV zVkpR7&A~^{TlJGDQ)_qZUHXETt>XX)rIq~~TDF$t zHnqo_HYOR0#w>bcLk=NnZIgh?O+YEyz`dBrmmS%#>T+U*%a8!-uEAW4*4aoAZ$RBF zHr+e4pzzWivNhF!99@fEwM3i-{?Iky={Tsn%8gr+8P~&ot5&T4__#ywJOfsL0$G++ ze~mDL$gOepkvM1+@2#iw?WeErUp{?#T}kcqL04}K*KvkrED;U>kr<2~+pr^O;t2a* zreot%@O8)G)%64b5%v8k;i{_CzlMtG{W*hjQs^R_Yk($nJiC^Av)DmZT8Tm(y7>{{ zlOSnTAi{f)TD6^aJMdeUA0B{zby*775H5G%oX0lJ?9O9RgpQ5F#kx78lpJjYuBeT1 z+wNH0a7S!!Y+2kR>KV-lrO&P@;&?;2x+Zj%9Yh1-qdXaR$?qtC=mlu}2w`OS252Kl zc&H6~Yao=im@eDuMh~eDv+QI5`hl8P=Xvps(s)vB&7;4Xd#+0YtgUOjH zyXQHcd5&+kv@g>v_lkZ(Cj$w$ ztny^4b|1p-16acpttvA-)2i%O&fgquDu)MY1Cuuz)P)+9>0oG0f{jLFN+f#G>qgn$ zirzRfb0WG+H>4Ep$c3GMKGK8|D!BTr9+>u%qrEVz@+P1(w;bWFqTvV*6YWNt=+SJH z1ddkIh4aIx4yYQV(P%PoR&+9&%v&APIt7bR7A?=Bm6*ukomhw8K@W%k33jyN1uf7_ zuR-0tM?(({%g#`P&hax$6FmVka?-MsUSmwD{hOh%Wm#TSmPL@? z-b#&L>)|+{7KWpLmZUhUQkrybN))bRAto$LH7h{3C{A5{r#zotpH|TXPjv2F4f!t6 zH_e+cuWz3}Jigp2{NND>R&44D5jyKH>MK>qJZ5n0;&9H5BkQ8^0p=^J7=JjmQssTg;|h z)Ji%o)3Ss?&yO!GwL%d{n-JH!21X&YdCovHeh>`6wZ8txw}+LJfy!HxVCgCREv~K$SX}{W z39?1SCMwXI0eDIcqb>g(9H?N# z99v|lFPr@+|C)n8j>Xu;61oZP&15-UESGTN6=1uHt9Z}Isy#E<4~78}1~AvaRzzcC z6nA)hr=Np8bJYlaQHdGNN2zG>I(z&9?e9iB!ThnwP zHG$lJ?_+hNzh`L)H@38xCSPKj9fm!!HNwFd`wu>HNP8wf71k2O8e7_4gVPd@QYt*| zV!dcAJySwlvs!FE+hNbdQh#l)Ba^i0>B%8Y4m~?aWHo%C}`2Tx_eX9-(d7`|QlG8MR!ZXbSZ!vtgyc^y3U}<#j_Viz<*&lph%Lnj> z%DkGWOeb4po|>i3T`Are{?^tto0TtwBhM?OQ=(Yc=k6?y)!Rtp{9c*AJv~jU^~a^u z38H)zNzPj7q*h`7c8yeb#}iZGpmz6vXZzuXWS=#nNqWD1<#&(&`t-WaG5EY)v7l{q zUdzf?wx`9ee%d*>tdvt#fK1>J!OS-F^lu07Z=W}l4_fbrlvfKiIBP`0G=yLqLOix_ zD}wr##V0~l;eM5SJKGlfGh2fsw)z7OiuUGep?#sW*n%xmtn%2!(lTqAI6{Jdt>9^K zK-ZW|IcS_49rzp|e>G)^+8Q+NR7|>eU68U<^rb-=8WRx3HF^_Zlu5yDsn-^cF;!7G zlYj2svXm;|-e#sMAmRRleL*!8^BDmYM?$aAPYBc5QWQixWjrPBXy&4SnNASew2D3VaWr%dcE3@Wt-y7^2WWVe)g+QVSNv3k zN90I!nD@~b(%#2cj6c)iWU6N;Tb_Hm_^Feqhb)op-%KxG4Atez+J#U0 z4QZ^|B!ab@q_O_(W0RvX_+n)?uMM>40$8NNXmz9K$Q6y!=Be6Yy0?xSwh_x3e!q@Mopg>TRM_1*h_KMDTyvRaalih)3>n-5P7 z8R_}1foXa(tv<(tc-D1e#+_U<(OtL$%Ql`<1a7h@E%{&)YJ(*t;O|R?dPMG!DA5`g$ z?5%OFp*RE;W*}b+n`H=wYmYBWLl&`A^ zX=|65&VbUa5m2od$QCG#-e`nW1u&t`Y=il#`-0;DBPA$Rz5;K7Gczrag6zd(2J{R$ zOTZ@py1-#Gi1%lcXu_+;=!SHP+U?oXvS%!)u)sFo-s`tj9|28!IE10LO%3mG9;wsP z{BZ7tsBHhC@uB8_Rqx=WD{1Gf60yb0vZIN$#u(rEswidtgCOKg1Z%m+Vw#I%whlQh zU$oV0*e^xxy7jjs{JnXjuJ`@?W3_m1$Mu)eBf5Q+S1-w0R&U);gz?cGLavI=JMXIb z#*Wd~)M#6zg^9{tZMlBEy?Q3|J~8dn; zwkyTDZA<_8xQI|sQ#aeA9_<2G!38uc5PmvXfKmQnd5o|F#++p{_k1s^9HOe-fwli& zPg}OI=Izum4;D2@k;=)W?CzX{Xv$XaOwZA#Cm7kanuBF96R|m_FhywqfO`N4Yxt5F zX;lRk!2`U1QoPxg%t@~pi{cAAZ_3;}4sb~e=%G70%_UZkI;u)H<#cRc$EH2#+SZ2k z)PrIGqpiWcDKHDk$)VJ9aIVRfwbZIt>21mLrl=5((QQ`nkvc5II<`|&reSj4j6<5j zXw0F)N3Gk_o?2JZ>)=PBojWm1FPqt4*MvxFU^8rg;^lg2F^DpaOWmwkaHi!lQ_Xzb zP>=rjsL8^+pC5mHcv^>toB2f1Aux0m#yU_Az4mqQLElRf>c zi&ODR&n_f6K}mSc@-6fVv-C@vGk3x=XZd~i#(l2uaEQfxR(b({sx9li=5X z`r&c#s(h%?6439C7_un|e*|wPT#>yxvmc$>f=0zX*uV1pn(Om(J?c%LKfiJHeA4Rq zwKw12KEGd{zpfKTb6Ig^f#g*t0MK#7q)FkBBWiXg%%c+~62(eI|1_tQTIFiKb{dy6 ziGKaOvIz~W7JXpR zq+VdBKe^SPnRwW^XLe-Q@WH4N$w6wa(3~?%u!OFs!#&eGlX*t~yCu)StR=YgXu+?L z3tCK)A_!HZk}bxzWZKePvPG3}LKV|qm9lU+B@4W!Sa*QJZx&K}?LvmHTY|TLmtUHE zx%7Wp_(8PG-*@Y88?%ZkJ8kA5U%?>RQe*qL3|5978aSn_I2lvM3O~97{N$dhVz+pzSQ2YSnaDUquoMdpt6KH&rN8>6SGPkJ%Z*Mw7gbCXbhgATK^uBXeHLUt5gQ+|?bm|tYzk4naRyF^l~);3~E zZrE9NsumA%L@HT06a!NwOf_*oTsH{<>wyo0i>VbytZzDC_h^H3U~!RC26A1OT}%Qw za4bLW^(;7{;GVw9WlLaxDoR7Lkpj{*DRswfw4pba$Jo^EdP{uT9ZMdj4VaEoe@)Wc z%X+_)^@(GP2A0k@Lz(sZ2E+!%XSmOF2MG~xH3Uf$oVO6EZf zq@PiYRLxB{HNaGuDs-^Y7oB1D)=&zT`q*-rrT4Ont-871)M0j~i~GOS%B-$h)_ktO z*gDMXxYYaQNn9V!;)z|JQ6>g@fUz153%{qp|L`h-hQ5q-y^J6ZQK?tJE* z(!8^pcVdga%`Tp$#~bg$Vn?g-p>&FuE;AY10W6^j4m6j-f^S%W2}Ha`4tHA94@zAFi0r1f;XL4$wq5YAuMeL;ZnP|wYdELN zoiyjSZ~pb$)2Ac$=w;(zwx@p#3i_8Y=pc3dHcLIz}i%cXo6(&lE!SnJ+ zU)Jz14M?6vPb-sQA3p2?{vFIc86Cq!D_-I@n|Jv5b;Vb!4yJQeBAI)=q3CQ=hwWRk zYqv5#*0Mv+6uey}v!^0mJLu5CAZ#hq2`Hw2|L!%*?D*(}A|CgH#pVa;2De>E^o}v# z*Lce{b4udZ6NLA5zHMRSL$`Xd+hJnjjX(BE363$||Jorlq*f zsWG(zW~umXZ6>DN$Z>Mpi61_?0UHG}z#$0byy-VAq6m!DrheKpKDdb^K)E{Tj(CKB zrgYitnm9nTl=xY4bgO1XhI{%*SKZWc;YK0m!Qx&RYhuTzHCfw7(KE{Fx}TKqJpDvnF7a|kFNq;F!ha-TmK^rPrfPb#y2BKJN7W)*~L08mTYAXFGF#!AH%VHY&FDoJjm zTpq5lZLr7eWUn@9OrsF(oN7yuddBif_%3--YEI$Tr;ajI zBxQJQ(5R|5)TKWD`ta%L)@o-OUG3>1e9qCXg4R*$q^cW8oJ2Bduro;dZ`tvGD6JGf zQOb#=?+woX=c@ z+#IbLIQS@TrO1}{MY^0=nzU&&VOobP3994V_9V)j4dWUQK}}arGF%D4eTS!sX9%Pv z6InM*PcXviIrk8YH_a;;>8!Foz{(O0xGDPRK4--vVDSJ!eJtw_YDaH>a4dBIcmr-@ z#2ZBv5|dfdqly@!Bjz<1*!m{oyF}JnIPPrS z3Vy$#_YI@1jgycMZCM}DwF;dGoLBVdhXk5FvY7p6+~3Y-Nj zfg^QbAnA%a!RXS-PDx#8m-!3r<3S0DBB4!W%g!5!G3+Xr9J?4Rlx4d^adEm+=W_PWM*(P!^+tv8) z{lm+LpPpBA6`QDZQouPd+3R-6p=5WLXRKll5SE)9^Fet8C0ILx@Mx@;uZSLkIzVuM zzyK^B+OV9#DS~N#%2l92;u7iN%TAY46eq&#!eHRGxDzymMs4+p9M_DIoL*yWo$}X3 zW1t;9gi-!PSElY^Y7D8|D#saDF;&K?XD%sqfke76Z}kKOeu!sPZtToJ~5(MD*P_3{8tFm(o{Aw(x8p`>v*L|ze{PMCM(iNmAlP6S}o3@aEpjiWP=<_UPj)DR| z82O@67*2_I;!mSJL^S$?U>(W@GDBwzgg-bNPCle>B!N?U9L@ z7A1xTk>~^dJ))5gQ%g$;H5e@zvbL(hA~DCQq?$Ag2h8V~kuU*jE~Yt5TgFNf|YBY(6TBRm_A$0C#-)ow?+)YE7YEb+t^V}e|hIa7j|ico7F2El)`KC zPWtV8d|8MEYxS<@yKj}O6ufSFnWw2+XQWgu;uNyxyt8wDucQ_TiKOT&1|rLjjZ*lN zbJN#U`_vHodFEY8$qQh`>RUl_r~j8g_I`z9&-2d!K4fy`IfJH19Q6H~fA{|R*I&PV z{`C53^%NM)e*&VDtcPVF?JD265^Jl?x7&o|`i-Bxjm^!=*~~s}zq@~4lN4h`Js=V+ zMhF+&1+Ok(Qh!(N$5mptUM6-yAEl+F-MpH{RV~%jQeA4PaxLi`zw@{r|Me2zby-QTyN<%@f!5reZ`f?)% zxok)ue_x)zeOcL-S4-8!bYQYEO+k1DV6N3Y(t3A&eAh1DN#?kGpiKrtLxYirqTdf5Q0m~2?9 z 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 We17-x;S1!aI`p6T1rB$X$p`=rXzZ8( delta 165707 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ÛR=ozLLRNZ>VGKp_Ul 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

Gi?u7Q6nTGjWG8OfM&dD1(u?-OI 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 From 7b6503c017a2a0edaab6f9a205d8d9429a9130ad Mon Sep 17 00:00:00 2001 From: Brian Torres-Gil Date: Tue, 27 Dec 2016 12:56:26 -0800 Subject: [PATCH 039/189] Ecobee service fix and new 'resume program' service (#4510) * ecobee_set_fan_min_on_time: fix issue using 'entity_id' field and add service field help text * climate.ecobee: add 'resume_program' service * Add default value for resume_all and correct entity_id field name reference --- homeassistant/components/climate/ecobee.py | 43 +++++++++++++++++-- .../components/climate/services.yaml | 24 +++++++++++ homeassistant/helpers/state.py | 4 +- 3 files changed, 66 insertions(+), 5 deletions(-) diff --git a/homeassistant/components/climate/ecobee.py b/homeassistant/components/climate/ecobee.py index 84d8c32f9ff..bfb11f703d1 100644 --- a/homeassistant/components/climate/ecobee.py +++ b/homeassistant/components/climate/ecobee.py @@ -22,16 +22,25 @@ _CONFIGURING = {} _LOGGER = logging.getLogger(__name__) ATTR_FAN_MIN_ON_TIME = 'fan_min_on_time' +ATTR_RESUME_ALL = 'resume_all' + +DEFAULT_RESUME_ALL = False DEPENDENCIES = ['ecobee'] SERVICE_SET_FAN_MIN_ON_TIME = 'ecobee_set_fan_min_on_time' +SERVICE_RESUME_PROGRAM = 'ecobee_resume_program' SET_FAN_MIN_ON_TIME_SCHEMA = vol.Schema({ vol.Optional(ATTR_ENTITY_ID): cv.entity_ids, vol.Required(ATTR_FAN_MIN_ON_TIME): vol.Coerce(int), }) +RESUME_PROGRAM_SCHEMA = vol.Schema({ + vol.Optional(ATTR_ENTITY_ID): cv.entity_ids, + vol.Optional(ATTR_RESUME_ALL, default=DEFAULT_RESUME_ALL): cv.boolean, +}) + def setup_platform(hass, config, add_devices, discovery_info=None): """Setup the Ecobee Thermostat Platform.""" @@ -48,21 +57,36 @@ def setup_platform(hass, config, add_devices, discovery_info=None): def fan_min_on_time_set_service(service): """Set the minimum fan on time on the target thermostats.""" - entity_id = service.data.get('entity_id') + entity_id = service.data.get(ATTR_ENTITY_ID) + fan_min_on_time = service.data[ATTR_FAN_MIN_ON_TIME] if entity_id: target_thermostats = [device for device in devices - if device.entity_id == entity_id] + if device.entity_id in entity_id] else: target_thermostats = devices - fan_min_on_time = service.data[ATTR_FAN_MIN_ON_TIME] - for thermostat in target_thermostats: thermostat.set_fan_min_on_time(str(fan_min_on_time)) thermostat.update_ha_state(True) + def resume_program_set_service(service): + """Resume the program on the target thermostats.""" + entity_id = service.data.get(ATTR_ENTITY_ID) + resume_all = service.data.get(ATTR_RESUME_ALL) + + if entity_id: + target_thermostats = [device for device in devices + if device.entity_id in entity_id] + else: + target_thermostats = devices + + for thermostat in target_thermostats: + thermostat.resume_program(resume_all) + + thermostat.update_ha_state(True) + descriptions = load_yaml_config_file( path.join(path.dirname(__file__), 'services.yaml')) @@ -71,6 +95,11 @@ def setup_platform(hass, config, add_devices, discovery_info=None): descriptions.get(SERVICE_SET_FAN_MIN_ON_TIME), schema=SET_FAN_MIN_ON_TIME_SCHEMA) + hass.services.register( + DOMAIN, SERVICE_RESUME_PROGRAM, resume_program_set_service, + descriptions.get(SERVICE_RESUME_PROGRAM), + schema=RESUME_PROGRAM_SCHEMA) + class Thermostat(ClimateDevice): """A thermostat class for Ecobee.""" @@ -249,6 +278,12 @@ class Thermostat(ClimateDevice): 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.update_without_throttle = True + # Home and Sleep mode aren't used in UI yet: # def turn_home_mode_on(self): diff --git a/homeassistant/components/climate/services.yaml b/homeassistant/components/climate/services.yaml index d28e8c4dd88..ac8e2ab1dea 100644 --- a/homeassistant/components/climate/services.yaml +++ b/homeassistant/components/climate/services.yaml @@ -94,3 +94,27 @@ set_swing_mode: swing_mode: description: New value of swing mode example: 1 + +ecobee_set_fan_min_on_time: + description: Set the minimum fan on time + + fields: + entity_id: + description: Name(s) of entities to change + example: 'climate.kitchen' + + fan_min_on_time: + description: New value of fan min on time + example: 5 + +ecobee_resume_program: + description: Resume the programmed schedule + + fields: + entity_id: + description: Name(s) of entities to change + example: 'climate.kitchen' + + resume_all: + description: Resume all events and return to the scheduled program. This default to false which removes only the top event. + example: true diff --git a/homeassistant/helpers/state.py b/homeassistant/helpers/state.py index 536975c100e..3be344e7d9d 100644 --- a/homeassistant/helpers/state.py +++ b/homeassistant/helpers/state.py @@ -22,7 +22,8 @@ from homeassistant.components.climate import ( SERVICE_SET_HUMIDITY, SERVICE_SET_OPERATION_MODE, SERVICE_SET_SWING_MODE, SERVICE_SET_TEMPERATURE) from homeassistant.components.climate.ecobee import ( - ATTR_FAN_MIN_ON_TIME, SERVICE_SET_FAN_MIN_ON_TIME) + ATTR_FAN_MIN_ON_TIME, SERVICE_SET_FAN_MIN_ON_TIME, + ATTR_RESUME_ALL, SERVICE_RESUME_PROGRAM) from homeassistant.const import ( ATTR_ENTITY_ID, ATTR_TEMPERATURE, SERVICE_ALARM_ARM_AWAY, SERVICE_ALARM_ARM_HOME, SERVICE_ALARM_DISARM, SERVICE_ALARM_TRIGGER, @@ -52,6 +53,7 @@ SERVICE_ATTRIBUTES = { SERVICE_SET_AWAY_MODE: [ATTR_AWAY_MODE], SERVICE_SET_FAN_MODE: [ATTR_FAN_MODE], SERVICE_SET_FAN_MIN_ON_TIME: [ATTR_FAN_MIN_ON_TIME], + SERVICE_RESUME_PROGRAM: [ATTR_RESUME_ALL], SERVICE_SET_TEMPERATURE: [ATTR_TEMPERATURE], SERVICE_SET_HUMIDITY: [ATTR_HUMIDITY], SERVICE_SET_SWING_MODE: [ATTR_SWING_MODE], From fee47f35b95f10e606e5d4463240a4d253573ca1 Mon Sep 17 00:00:00 2001 From: John Arild Berentsen Date: Tue, 27 Dec 2016 22:08:35 +0100 Subject: [PATCH 040/189] Improvements to zwave lock platform (#5066) --- homeassistant/components/lock/zwave.py | 58 ++++++++++++++++++++++++-- 1 file changed, 54 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/lock/zwave.py b/homeassistant/components/lock/zwave.py index 4c0b7ae34ac..d359cacba8f 100644 --- a/homeassistant/components/lock/zwave.py +++ b/homeassistant/components/lock/zwave.py @@ -6,9 +6,34 @@ https://home-assistant.io/components/lock.zwave/ """ # Because we do not compile openzwave on CI # pylint: disable=import-error +import logging + from homeassistant.components.lock import DOMAIN, LockDevice from homeassistant.components import zwave +_LOGGER = logging.getLogger(__name__) + +ATTR_NOTIFICATION = 'notification' + +LOCK_NOTIFICATION = { + 1: 'Manual Lock', + 2: 'Manual Unlock', + 3: 'RF Lock', + 4: 'RF Unlock', + 5: 'Keypad Lock', + 6: 'Keypad Unlock', + 254: 'Unknown Event' +} + +LOCK_STATUS = { + 1: True, + 2: False, + 3: True, + 4: False, + 5: True, + 6: False +} + # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): @@ -40,15 +65,32 @@ class ZwaveLock(zwave.ZWaveDeviceEntity, LockDevice): zwave.ZWaveDeviceEntity.__init__(self, value, DOMAIN) - self._state = value.data + self._node = value.node + self._state = None + self._notification = None dispatcher.connect( self._value_changed, ZWaveNetwork.SIGNAL_VALUE_CHANGED) + self.update_properties() def _value_changed(self, value): """Called when a value has changed on the network.""" - if self._value.value_id == value.value_id: - self._state = value.data - self.update_ha_state() + if self._value.value_id == value.value_id or \ + self._value.node == value.node: + self.update_properties() + self.schedule_update_ha_state() + + def update_properties(self): + """Callback on data change for the registered node/value pair.""" + for value in self._node.get_values( + class_id=zwave.const.COMMAND_CLASS_ALARM).values(): + if value.label != "Access Control": + continue + self._notification = LOCK_NOTIFICATION.get(value.data) + if self._notification: + self._state = LOCK_STATUS.get(value.data) + break + if not self._notification: + self._state = self._value.data @property def is_locked(self): @@ -62,3 +104,11 @@ class ZwaveLock(zwave.ZWaveDeviceEntity, LockDevice): def unlock(self, **kwargs): """Unlock the device.""" self._value.data = False + + @property + def device_state_attributes(self): + """Return the device specific state attributes.""" + data = super().device_state_attributes + if self._notification: + data[ATTR_NOTIFICATION] = self._notification + return data From d8ff22870a5d953f78b5302157eaec8223bcbb27 Mon Sep 17 00:00:00 2001 From: Magnus Ihse Bursie Date: Wed, 28 Dec 2016 06:26:27 +0100 Subject: [PATCH 041/189] Include flake8-docstrings to test requirements to better mimic tox -e lint (#4926) --- requirements_test.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/requirements_test.txt b/requirements_test.txt index 2dbc98326db..d001c5d1a78 100644 --- a/requirements_test.txt +++ b/requirements_test.txt @@ -1,7 +1,7 @@ # linters such as flake8 and pylint should be pinned, as new releases # make new things fail. Manually update these pins when pulling in a # new version -flake8==3.2.0 +flake8==3.2.1 pylint==1.6.4 mypy-lang==0.4.5 pydocstyle==1.1.1 @@ -15,3 +15,4 @@ pytest-catchlog>=1.2.2 pytest-sugar>=0.7.1 requests_mock>=1.0 mock-open>=1.3.1 +flake8-docstrings==1.0.2 From 98efbbc129e0f72f5ceb0fff33bd27f92f88e760 Mon Sep 17 00:00:00 2001 From: Magnus Ihse Bursie Date: Wed, 28 Dec 2016 08:12:10 +0100 Subject: [PATCH 042/189] Fix typo. (#5087) --- homeassistant/components/media_player/squeezebox.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/media_player/squeezebox.py b/homeassistant/components/media_player/squeezebox.py index 18081e9eebb..c51834057d2 100644 --- a/homeassistant/components/media_player/squeezebox.py +++ b/homeassistant/components/media_player/squeezebox.py @@ -177,7 +177,7 @@ class SqueezeBoxDevice(MediaPlayerDevice): """Representation of a SqueezeBox device.""" def __init__(self, lms, player_id): - """Initialize the SqeezeBox device.""" + """Initialize the SqueezeBox device.""" super(SqueezeBoxDevice, self).__init__() self._lms = lms self._id = player_id From f0b1874d2d435221d2382b53731dcf1bcd8663ba Mon Sep 17 00:00:00 2001 From: Johann Kellerman Date: Wed, 28 Dec 2016 20:04:59 +0200 Subject: [PATCH 043/189] Fix up docstring for tests (#5090) --- setup.py | 1 + tests/components/automation/test_litejet.py | 4 ++++ .../climate/test_generic_thermostat.py | 16 ++++---------- tests/components/emulated_hue/test_init.py | 1 + tests/components/http/test_ban.py | 4 ++-- tests/components/http/test_init.py | 3 +-- tests/components/light/test_litejet.py | 6 ++--- .../media_player/test_soundtouch.py | 10 +++++++++ tests/components/media_player/test_yamaha.py | 3 ++- tests/components/remote/test_demo.py | 2 -- tests/components/remote/test_init.py | 8 +++---- tests/components/scene/test_litejet.py | 3 ++- tests/components/sensor/test_api_streams.py | 1 + tests/components/sensor/test_sonarr.py | 22 +++++++++---------- tests/components/switch/test_command_line.py | 2 +- tests/components/switch/test_litejet.py | 10 ++------- tests/components/test_litejet.py | 3 +++ tests/components/test_websocket_api.py | 11 +++++----- tests/util/test_async.py | 10 ++++----- 19 files changed, 61 insertions(+), 59 deletions(-) diff --git a/setup.py b/setup.py index d6f4792c186..4dc8ba9f75f 100755 --- a/setup.py +++ b/setup.py @@ -1,4 +1,5 @@ #!/usr/bin/env python3 +"""Home Assistant setup script.""" import os from setuptools import setup, find_packages from homeassistant.const import (__version__, PROJECT_PACKAGE_NAME, diff --git a/tests/components/automation/test_litejet.py b/tests/components/automation/test_litejet.py index be329487406..d76a0ee19ac 100644 --- a/tests/components/automation/test_litejet.py +++ b/tests/components/automation/test_litejet.py @@ -71,6 +71,7 @@ class TestLiteJetTrigger(unittest.TestCase): self.hass.stop() def simulate_press(self, number): + """Test to simulate a press.""" _LOGGER.info('*** simulate press of %d', number) callback = self.switch_pressed_callbacks.get(number) with mock.patch('homeassistant.helpers.condition.dt_util.utcnow', @@ -80,6 +81,7 @@ class TestLiteJetTrigger(unittest.TestCase): self.hass.block_till_done() def simulate_release(self, number): + """Test to simulate releasing.""" _LOGGER.info('*** simulate release of %d', number) callback = self.switch_released_callbacks.get(number) with mock.patch('homeassistant.helpers.condition.dt_util.utcnow', @@ -89,6 +91,7 @@ class TestLiteJetTrigger(unittest.TestCase): self.hass.block_till_done() def simulate_time(self, delta): + """Test to simulate time.""" _LOGGER.info( '*** simulate time change by %s: %s', delta, @@ -102,6 +105,7 @@ class TestLiteJetTrigger(unittest.TestCase): _LOGGER.info('done with now=%s', dt_util.utcnow()) def setup_automation(self, trigger): + """Test setting up the automation.""" assert bootstrap.setup_component(self.hass, automation.DOMAIN, { automation.DOMAIN: [ { diff --git a/tests/components/climate/test_generic_thermostat.py b/tests/components/climate/test_generic_thermostat.py index 7c4ee8db58f..5fad8e16aed 100644 --- a/tests/components/climate/test_generic_thermostat.py +++ b/tests/components/climate/test_generic_thermostat.py @@ -182,9 +182,7 @@ class TestClimateGenericThermostat(unittest.TestCase): self.assertEqual(ENT_SWITCH, call.data['entity_id']) def test_temp_change_heater_on_within_tolerance(self): - """Test if temperature change doesn't turn heater on within - tolerance. - """ + """Test if temperature change doesn't turn on within tolerance.""" self._setup_switch(False) climate.set_temperature(self.hass, 30) self.hass.block_till_done() @@ -206,9 +204,7 @@ class TestClimateGenericThermostat(unittest.TestCase): self.assertEqual(ENT_SWITCH, call.data['entity_id']) def test_temp_change_heater_off_within_tolerance(self): - """Test if temperature change doesn't turn heater off within - tolerance. - """ + """Test if temperature change doesn't turn off within tolerance.""" self._setup_switch(True) climate.set_temperature(self.hass, 30) self.hass.block_till_done() @@ -296,9 +292,7 @@ class TestClimateGenericThermostatACMode(unittest.TestCase): self.assertEqual(ENT_SWITCH, call.data['entity_id']) def test_temp_change_ac_off_within_tolerance(self): - """Test if temperature change doesn't turn ac off within - tolerance. - """ + """Test if temperature change doesn't turn ac off within tolerance.""" self._setup_switch(True) climate.set_temperature(self.hass, 30) self.hass.block_till_done() @@ -320,9 +314,7 @@ class TestClimateGenericThermostatACMode(unittest.TestCase): self.assertEqual(ENT_SWITCH, call.data['entity_id']) def test_temp_change_ac_on_within_tolerance(self): - """Test if temperature change doesn't turn ac on within - tolerance. - """ + """Test if temperature change doesn't turn ac on within tolerance.""" self._setup_switch(False) climate.set_temperature(self.hass, 25) self.hass.block_till_done() diff --git a/tests/components/emulated_hue/test_init.py b/tests/components/emulated_hue/test_init.py index ec3cc0a11cb..2ee7c385d8d 100755 --- a/tests/components/emulated_hue/test_init.py +++ b/tests/components/emulated_hue/test_init.py @@ -1,3 +1,4 @@ +"""Test the Emulated Hue component.""" from unittest.mock import patch from homeassistant.components.emulated_hue import Config, _LOGGER diff --git a/tests/components/http/test_ban.py b/tests/components/http/test_ban.py index b2aeca2917f..c210bc3f0e0 100644 --- a/tests/components/http/test_ban.py +++ b/tests/components/http/test_ban.py @@ -75,7 +75,7 @@ class TestHttp: assert req.status_code == 403 def test_access_from_banned_ip_when_ban_is_off(self): - """Test accessing to server from banned IP when feature is off""" + """Test accessing to server from banned IP when feature is off.""" hass.http.app[KEY_BANS_ENABLED] = False for remote_addr in BANNED_IPS: with patch('homeassistant.components.http.' @@ -87,7 +87,7 @@ class TestHttp: assert req.status_code == 200 def test_ip_bans_file_creation(self): - """Testing if banned IP file created""" + """Testing if banned IP file created.""" hass.http.app[KEY_BANS_ENABLED] = True hass.http.app[KEY_LOGIN_THRESHOLD] = 1 diff --git a/tests/components/http/test_init.py b/tests/components/http/test_init.py index e4deb7b60d1..5fa37012c7a 100644 --- a/tests/components/http/test_init.py +++ b/tests/components/http/test_init.py @@ -63,7 +63,6 @@ class TestCors: def test_cors_allowed_with_password_in_url(self): """Test cross origin resource sharing with password in url.""" - req = requests.get(_url(const.URL_API), params={'api_password': API_PASSWORD}, headers={const.HTTP_HEADER_ORIGIN: HTTP_BASE_URL}) @@ -119,6 +118,7 @@ class TestCors: class TestView(http.HomeAssistantView): + """Test the HTTP views.""" name = 'test' url = '/hello' @@ -159,7 +159,6 @@ def test_registering_view_while_running(hass, test_client): def test_api_base_url(loop): """Test setting api url.""" - hass = MagicMock() hass.loop = loop diff --git a/tests/components/light/test_litejet.py b/tests/components/light/test_litejet.py index ab10752b14a..10b205a8c7a 100644 --- a/tests/components/light/test_litejet.py +++ b/tests/components/light/test_litejet.py @@ -60,9 +60,11 @@ class TestLiteJetLight(unittest.TestCase): self.mock_lj.get_load_level.reset_mock() def light(self): + """Test for main light entity.""" return self.hass.states.get(ENTITY_LIGHT) def other_light(self): + """Test the other light.""" return self.hass.states.get(ENTITY_OTHER_LIGHT) def teardown_method(self, method): @@ -71,7 +73,6 @@ class TestLiteJetLight(unittest.TestCase): def test_on_brightness(self): """Test turning the light on with brightness.""" - assert self.light().state == 'off' assert self.other_light().state == 'off' @@ -84,7 +85,6 @@ class TestLiteJetLight(unittest.TestCase): def test_on_off(self): """Test turning the light on and off.""" - assert self.light().state == 'off' assert self.other_light().state == 'off' @@ -100,7 +100,6 @@ class TestLiteJetLight(unittest.TestCase): def test_activated_event(self): """Test handling an event from LiteJet.""" - self.mock_lj.get_load_level.return_value = 99 # Light 1 @@ -138,7 +137,6 @@ class TestLiteJetLight(unittest.TestCase): def test_deactivated_event(self): """Test handling an event from LiteJet.""" - # Initial state is on. self.mock_lj.get_load_level.return_value = 99 diff --git a/tests/components/media_player/test_soundtouch.py b/tests/components/media_player/test_soundtouch.py index b95b774845a..16f1065767a 100644 --- a/tests/components/media_player/test_soundtouch.py +++ b/tests/components/media_player/test_soundtouch.py @@ -30,6 +30,7 @@ class MockDevice(STD): """Mock device.""" def __init__(self): + """Init the class.""" self._config = MockConfig @@ -37,6 +38,7 @@ class MockConfig(Config): """Mock config.""" def __init__(self): + """Init class.""" self._name = "name" @@ -49,6 +51,7 @@ class MockPreset(Preset): """Mock preset.""" def __init__(self, id): + """Init the class.""" self._id = id self._name = "preset" @@ -57,6 +60,7 @@ class MockVolume(Volume): """Mock volume with value.""" def __init__(self): + """Init class.""" self._actual = 12 @@ -64,6 +68,7 @@ class MockVolumeMuted(Volume): """Mock volume muted.""" def __init__(self): + """Init the class.""" self._actual = 12 self._muted = True @@ -72,6 +77,7 @@ class MockStatusStandby(Status): """Mock status standby.""" def __init__(self): + """Init the class.""" self._source = "STANDBY" @@ -79,6 +85,7 @@ class MockStatusPlaying(Status): """Mock status playing media.""" def __init__(self): + """Init the class.""" self._source = "" self._play_status = "PLAY_STATE" self._image = "image.url" @@ -93,6 +100,7 @@ class MockStatusPlayingRadio(Status): """Mock status radio.""" def __init__(self): + """Init the class.""" self._source = "" self._play_status = "PLAY_STATE" self._image = "image.url" @@ -107,6 +115,7 @@ class MockStatusUnknown(Status): """Mock status unknown media.""" def __init__(self): + """Init the class.""" self._source = "" self._play_status = "PLAY_STATE" self._image = "image.url" @@ -121,6 +130,7 @@ class MockStatusPause(Status): """Mock status pause.""" def __init__(self): + """Init the class.""" self._source = "" self._play_status = "PAUSE_STATE" diff --git a/tests/components/media_player/test_yamaha.py b/tests/components/media_player/test_yamaha.py index 94810a84e3a..7484b18a904 100644 --- a/tests/components/media_player/test_yamaha.py +++ b/tests/components/media_player/test_yamaha.py @@ -20,6 +20,7 @@ class FakeYamaha(rxv.rxv.RXV): ensure that usage of the rxv library by HomeAssistant is as we'd expect. """ + _fake_input = 'HDMI1' def _discover_features(self): @@ -75,7 +76,7 @@ class TestYamaha(unittest.TestCase): self.rec = FakeYamaha('10.0.0.0') def test_get_playback_support(self): - """Test the playback""" + """Test the playback.""" rec = self.rec support = rec.get_playback_support() self.assertFalse(support.play) diff --git a/tests/components/remote/test_demo.py b/tests/components/remote/test_demo.py index 7dc8f2c8976..8277ef12c8e 100755 --- a/tests/components/remote/test_demo.py +++ b/tests/components/remote/test_demo.py @@ -30,7 +30,6 @@ class TestDemoRemote(unittest.TestCase): def test_methods(self): """Test if methods call the services as expected.""" - self.assertTrue( setup_component(self.hass, remote.DOMAIN, {remote.DOMAIN: {CONF_PLATFORM: 'demo'}})) @@ -50,7 +49,6 @@ class TestDemoRemote(unittest.TestCase): def test_services(self): """Test the provided services.""" - # Test turn_on turn_on_calls = mock_service( self.hass, remote.DOMAIN, SERVICE_TURN_ON) diff --git a/tests/components/remote/test_init.py b/tests/components/remote/test_init.py index a5d711f8680..60a049fa291 100755 --- a/tests/components/remote/test_init.py +++ b/tests/components/remote/test_init.py @@ -28,7 +28,7 @@ class TestRemote(unittest.TestCase): self.hass.stop() def test_is_on(self): - """ Test is_on""" + """Test is_on.""" self.hass.states.set('remote.test', STATE_ON) self.assertTrue(remote.is_on(self.hass, 'remote.test')) @@ -42,7 +42,7 @@ class TestRemote(unittest.TestCase): self.assertFalse(remote.is_on(self.hass)) def test_turn_on(self): - """ Test turn_on""" + """Test turn_on.""" turn_on_calls = mock_service( self.hass, remote.DOMAIN, SERVICE_TURN_ON) @@ -58,7 +58,7 @@ class TestRemote(unittest.TestCase): self.assertEqual(remote.DOMAIN, call.domain) def test_turn_off(self): - """ Test turn_off""" + """Test turn_off.""" turn_off_calls = mock_service( self.hass, remote.DOMAIN, SERVICE_TURN_OFF) @@ -75,7 +75,7 @@ class TestRemote(unittest.TestCase): self.assertEqual('entity_id_val', call.data[ATTR_ENTITY_ID]) def test_send_command(self): - """ Test send_command""" + """Test send_command.""" send_command_calls = mock_service( self.hass, remote.DOMAIN, SERVICE_SEND_COMMAND) diff --git a/tests/components/scene/test_litejet.py b/tests/components/scene/test_litejet.py index 7596736a567..17ba4ce7304 100644 --- a/tests/components/scene/test_litejet.py +++ b/tests/components/scene/test_litejet.py @@ -50,14 +50,15 @@ class TestLiteJetScene(unittest.TestCase): self.hass.stop() def scene(self): + """Get the current scene.""" return self.hass.states.get(ENTITY_SCENE) def other_scene(self): + """Get the other scene.""" return self.hass.states.get(ENTITY_OTHER_SCENE) def test_activate(self): """Test activating the scene.""" - scene.activate(self.hass, ENTITY_SCENE) self.hass.block_till_done() self.mock_lj.activate_scene.assert_called_once_with( diff --git a/tests/components/sensor/test_api_streams.py b/tests/components/sensor/test_api_streams.py index 2154cc3bd49..e7978ce0fb8 100644 --- a/tests/components/sensor/test_api_streams.py +++ b/tests/components/sensor/test_api_streams.py @@ -1,3 +1,4 @@ +"""Test cases for the API stream sensor.""" import asyncio import logging diff --git a/tests/components/sensor/test_sonarr.py b/tests/components/sensor/test_sonarr.py index cc9186677dc..24a733e6565 100644 --- a/tests/components/sensor/test_sonarr.py +++ b/tests/components/sensor/test_sonarr.py @@ -574,7 +574,7 @@ class TestSonarrSetup(unittest.TestCase): @unittest.mock.patch('requests.get', side_effect=mocked_requests_get) def test_diskspace_no_paths(self, req_mock): - """Tests getting all disk space""" + """Test getting all disk space.""" config = { 'platform': 'sonarr', 'api_key': 'foo', @@ -599,7 +599,7 @@ class TestSonarrSetup(unittest.TestCase): @unittest.mock.patch('requests.get', side_effect=mocked_requests_get) def test_diskspace_paths(self, req_mock): - """Tests getting diskspace for included paths""" + """Test getting diskspace for included paths.""" config = { 'platform': 'sonarr', 'api_key': 'foo', @@ -626,7 +626,7 @@ class TestSonarrSetup(unittest.TestCase): @unittest.mock.patch('requests.get', side_effect=mocked_requests_get) def test_commands(self, req_mock): - """Tests getting running commands""" + """Test getting running commands.""" config = { 'platform': 'sonarr', 'api_key': 'foo', @@ -653,7 +653,7 @@ class TestSonarrSetup(unittest.TestCase): @unittest.mock.patch('requests.get', side_effect=mocked_requests_get) def test_queue(self, req_mock): - """Tests getting downloads in the queue""" + """Test getting downloads in the queue.""" config = { 'platform': 'sonarr', 'api_key': 'foo', @@ -680,7 +680,7 @@ class TestSonarrSetup(unittest.TestCase): @unittest.mock.patch('requests.get', side_effect=mocked_requests_get) def test_series(self, req_mock): - """Tests getting the number of series""" + """Test getting the number of series.""" config = { 'platform': 'sonarr', 'api_key': 'foo', @@ -707,7 +707,7 @@ class TestSonarrSetup(unittest.TestCase): @unittest.mock.patch('requests.get', side_effect=mocked_requests_get) def test_wanted(self, req_mock): - """Tests getting wanted episodes""" + """Test getting wanted episodes.""" config = { 'platform': 'sonarr', 'api_key': 'foo', @@ -734,7 +734,7 @@ class TestSonarrSetup(unittest.TestCase): @unittest.mock.patch('requests.get', side_effect=mocked_requests_get) def test_upcoming_multiple_days(self, req_mock): - """Tests upcoming episodes for multiple days""" + """Test the upcoming episodes for multiple days.""" config = { 'platform': 'sonarr', 'api_key': 'foo', @@ -762,8 +762,8 @@ class TestSonarrSetup(unittest.TestCase): @pytest.mark.skip @unittest.mock.patch('requests.get', side_effect=mocked_requests_get) def test_upcoming_today(self, req_mock): - """ - Tests filtering for a single day. + """Test filtering for a single day. + Sonarr needs to respond with at least 2 days """ config = { @@ -793,7 +793,7 @@ class TestSonarrSetup(unittest.TestCase): @pytest.mark.skip @unittest.mock.patch('requests.get', side_effect=mocked_requests_get) def test_ssl(self, req_mock): - """Tests SSL being enabled""" + """Test SSL being enabled.""" config = { 'platform': 'sonarr', 'api_key': 'foo', @@ -822,7 +822,7 @@ class TestSonarrSetup(unittest.TestCase): @unittest.mock.patch('requests.get', side_effect=mocked_exception) def test_exception_handling(self, req_mock): - """Tests exception being handled""" + """Test exception being handled.""" config = { 'platform': 'sonarr', 'api_key': 'foo', diff --git a/tests/components/switch/test_command_line.py b/tests/components/switch/test_command_line.py index bc8e6d6173a..de122df0479 100644 --- a/tests/components/switch/test_command_line.py +++ b/tests/components/switch/test_command_line.py @@ -185,7 +185,7 @@ class TestCommandSwitch(unittest.TestCase): self.assertFalse(state_device.assumed_state) def test_entity_id_set_correctly(self): - """Test that entity_id is set correctly from object_id""" + """Test that entity_id is set correctly from object_id.""" self.hass = get_test_home_assistant() init_args = [ diff --git a/tests/components/switch/test_litejet.py b/tests/components/switch/test_litejet.py index 55d468bccd4..3d090fd173d 100644 --- a/tests/components/switch/test_litejet.py +++ b/tests/components/switch/test_litejet.py @@ -64,26 +64,25 @@ class TestLiteJetSwitch(unittest.TestCase): self.hass.stop() def switch(self): + """Return the switch state.""" return self.hass.states.get(ENTITY_SWITCH) def other_switch(self): + """Return the other switch state.""" return self.hass.states.get(ENTITY_OTHER_SWITCH) def test_include_switches_unspecified(self): """Test that switches are ignored by default.""" - self.mock_lj.button_switches.assert_not_called() self.mock_lj.all_switches.assert_not_called() def test_include_switches_False(self): """Test that switches can be explicitly ignored.""" - self.mock_lj.button_switches.assert_not_called() self.mock_lj.all_switches.assert_not_called() def test_on_off(self): """Test turning the switch on and off.""" - assert self.switch().state == 'off' assert self.other_switch().state == 'off' @@ -99,9 +98,7 @@ class TestLiteJetSwitch(unittest.TestCase): def test_pressed_event(self): """Test handling an event from LiteJet.""" - # Switch 1 - _LOGGER.info(self.switch_pressed_callbacks[ENTITY_SWITCH_NUMBER]) self.switch_pressed_callbacks[ENTITY_SWITCH_NUMBER]() self.hass.block_till_done() @@ -112,7 +109,6 @@ class TestLiteJetSwitch(unittest.TestCase): assert self.other_switch().state == 'off' # Switch 2 - self.switch_pressed_callbacks[ENTITY_OTHER_SWITCH_NUMBER]() self.hass.block_till_done() @@ -123,9 +119,7 @@ class TestLiteJetSwitch(unittest.TestCase): def test_released_event(self): """Test handling an event from LiteJet.""" - # Initial state is on. - self.switch_pressed_callbacks[ENTITY_OTHER_SWITCH_NUMBER]() self.hass.block_till_done() diff --git a/tests/components/test_litejet.py b/tests/components/test_litejet.py index 6d62e1ab0cd..dfbcb9d99d8 100644 --- a/tests/components/test_litejet.py +++ b/tests/components/test_litejet.py @@ -22,16 +22,19 @@ class TestLiteJet(unittest.TestCase): self.hass.stop() def test_is_ignored_unspecified(self): + """Ensure it is ignored when unspecified.""" self.hass.data['litejet_config'] = {} assert not litejet.is_ignored(self.hass, 'Test') def test_is_ignored_empty(self): + """Ensure it is ignored when empty.""" self.hass.data['litejet_config'] = { litejet.CONF_EXCLUDE_NAMES: [] } assert not litejet.is_ignored(self.hass, 'Test') def test_is_ignored_normal(self): + """Test if usually ignored.""" self.hass.data['litejet_config'] = { litejet.CONF_EXCLUDE_NAMES: ['Test', 'Other One'] } diff --git a/tests/components/test_websocket_api.py b/tests/components/test_websocket_api.py index bdad5032a24..a6748e7fc16 100644 --- a/tests/components/test_websocket_api.py +++ b/tests/components/test_websocket_api.py @@ -1,3 +1,4 @@ +"""Tests for the Home Assistant Websocket API.""" import asyncio from unittest.mock import patch @@ -213,7 +214,7 @@ def test_subscribe_unsubscribe_events(hass, websocket_client): @asyncio.coroutine def test_get_states(hass, websocket_client): - """ Test get_states command.""" + """Test get_states command.""" hass.states.async_set('greeting.hello', 'world') hass.states.async_set('greeting.bye', 'universe') @@ -239,7 +240,7 @@ def test_get_states(hass, websocket_client): @asyncio.coroutine def test_get_services(hass, websocket_client): - """ Test get_services command.""" + """Test get_services command.""" websocket_client.send_json({ 'id': 5, 'type': wapi.TYPE_GET_SERVICES, @@ -254,7 +255,7 @@ def test_get_services(hass, websocket_client): @asyncio.coroutine def test_get_config(hass, websocket_client): - """ Test get_config command.""" + """Test get_config command.""" websocket_client.send_json({ 'id': 5, 'type': wapi.TYPE_GET_CONFIG, @@ -269,7 +270,7 @@ def test_get_config(hass, websocket_client): @asyncio.coroutine def test_get_panels(hass, websocket_client): - """ Test get_panels command.""" + """Test get_panels command.""" frontend.register_built_in_panel(hass, 'map', 'Map', 'mdi:account-location') @@ -287,7 +288,7 @@ def test_get_panels(hass, websocket_client): @asyncio.coroutine def test_ping(websocket_client): - """ Test get_panels command.""" + """Test get_panels command.""" websocket_client.send_json({ 'id': 5, 'type': wapi.TYPE_PING, diff --git a/tests/util/test_async.py b/tests/util/test_async.py index f88887e3c6e..a3da7e7f4e1 100644 --- a/tests/util/test_async.py +++ b/tests/util/test_async.py @@ -86,6 +86,7 @@ class RunCoroutineThreadsafeTests(test_utils.TestCase): """Test case for asyncio.run_coroutine_threadsafe.""" def setUp(self): + """Test setup method.""" self.loop = asyncio.new_event_loop() self.set_event_loop(self.loop) # Will cleanup properly @@ -126,16 +127,14 @@ class RunCoroutineThreadsafeTests(test_utils.TestCase): self.assertEqual(result, 3) def test_run_coroutine_threadsafe_with_exception(self): - """Test coroutine submission from a thread to an event loop - when an exception is raised.""" + """Test coroutine submission from thread to event loop on exception.""" future = self.loop.run_in_executor(None, self.target, True) with self.assertRaises(RuntimeError) as exc_context: self.loop.run_until_complete(future) self.assertIn("Fail!", exc_context.exception.args) def test_run_coroutine_threadsafe_with_timeout(self): - """Test coroutine submission from a thread to an event loop - when a timeout is raised.""" + """Test coroutine submission from thread to event loop on timeout.""" callback = lambda: self.target(timeout=0) # noqa future = self.loop.run_in_executor(None, callback) with self.assertRaises(asyncio.TimeoutError): @@ -146,8 +145,7 @@ class RunCoroutineThreadsafeTests(test_utils.TestCase): self.assertTrue(task.done()) def test_run_coroutine_threadsafe_task_cancelled(self): - """Test coroutine submission from a tread to an event loop - when the task is cancelled.""" + """Test coroutine submission from tread to event loop on cancel.""" callback = lambda: self.target(cancel=True) # noqa future = self.loop.run_in_executor(None, callback) with self.assertRaises(asyncio.CancelledError): From cf714f42dfa19985880a25344316b5f3e8abb6af Mon Sep 17 00:00:00 2001 From: Brent Hughes Date: Wed, 28 Dec 2016 23:21:29 -0600 Subject: [PATCH 044/189] Added Ledenet protocol support to flux_led (#5097) * Added Ledenet protocol support to flux_led * Made the protocol config lowercase --- homeassistant/components/light/flux_led.py | 12 +++++++++--- requirements_all.txt | 2 +- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/light/flux_led.py b/homeassistant/components/light/flux_led.py index a5474612496..43c5ada9b8d 100644 --- a/homeassistant/components/light/flux_led.py +++ b/homeassistant/components/light/flux_led.py @@ -10,15 +10,15 @@ import random import voluptuous as vol -from homeassistant.const import CONF_DEVICES, CONF_NAME +from homeassistant.const import CONF_DEVICES, CONF_NAME, CONF_PROTOCOL from homeassistant.components.light import ( ATTR_BRIGHTNESS, ATTR_RGB_COLOR, ATTR_EFFECT, EFFECT_RANDOM, SUPPORT_BRIGHTNESS, SUPPORT_EFFECT, SUPPORT_RGB_COLOR, Light, PLATFORM_SCHEMA) import homeassistant.helpers.config_validation as cv -REQUIREMENTS = ['https://github.com/Danielhiversen/flux_led/archive/0.10.zip' - '#flux_led==0.10'] +REQUIREMENTS = ['https://github.com/Danielhiversen/flux_led/archive/0.11.zip' + '#flux_led==0.11'] _LOGGER = logging.getLogger(__name__) @@ -34,6 +34,8 @@ DEVICE_SCHEMA = vol.Schema({ vol.Optional(CONF_NAME): cv.string, vol.Optional(ATTR_MODE, default='rgbw'): vol.All(cv.string, vol.In(['rgbw', 'rgb'])), + vol.Optional(CONF_PROTOCOL, default=None): + vol.All(cv.string, vol.In(['ledenet'])), }) PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @@ -51,6 +53,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): device = {} device['name'] = device_config[CONF_NAME] device['ipaddr'] = ipaddr + device[CONF_PROTOCOL] = device_config[CONF_PROTOCOL] device[ATTR_MODE] = device_config[ATTR_MODE] light = FluxLight(device) if light.is_valid: @@ -87,11 +90,14 @@ class FluxLight(Light): self._name = device['name'] self._ipaddr = device['ipaddr'] + self._protocol = device[CONF_PROTOCOL] self._mode = device[ATTR_MODE] self.is_valid = True self._bulb = None try: self._bulb = flux_led.WifiLedBulb(self._ipaddr) + if self._protocol: + self._bulb.setProtocol(self._protocol) except socket.error: self.is_valid = False _LOGGER.error( diff --git a/requirements_all.txt b/requirements_all.txt index cbaa90150d3..b7d140b4492 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -178,7 +178,7 @@ hikvision==0.4 http://github.com/technicalpickles/python-nest/archive/e6c9d56a8df455d4d7746389811f2c1387e8cb33.zip#python-nest==3.0.3 # homeassistant.components.light.flux_led -https://github.com/Danielhiversen/flux_led/archive/0.10.zip#flux_led==0.10 +https://github.com/Danielhiversen/flux_led/archive/0.11.zip#flux_led==0.11 # homeassistant.components.switch.tplink https://github.com/GadgetReactor/pyHS100/archive/45fc3548882628bcde3e3d365db341849457bef2.zip#pyHS100==0.2.2 From aaff8d8602824bee79f53c019c6eb8f63fd0e698 Mon Sep 17 00:00:00 2001 From: Johann Kellerman Date: Thu, 29 Dec 2016 11:08:11 +0200 Subject: [PATCH 045/189] Qwikswitch library PyPi update (#5099) --- homeassistant/components/qwikswitch.py | 3 +-- requirements_all.txt | 6 +++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/homeassistant/components/qwikswitch.py b/homeassistant/components/qwikswitch.py index bb10d72b45b..2e01d91f50f 100644 --- a/homeassistant/components/qwikswitch.py +++ b/homeassistant/components/qwikswitch.py @@ -15,8 +15,7 @@ from homeassistant.components.light import (ATTR_BRIGHTNESS, from homeassistant.components.switch import SwitchDevice DOMAIN = 'qwikswitch' -REQUIREMENTS = ['https://github.com/kellerza/pyqwikswitch/archive/v0.4.zip' - '#pyqwikswitch==0.4'] +REQUIREMENTS = ['pyqwikswitch==0.4'] _LOGGER = logging.getLogger(__name__) diff --git a/requirements_all.txt b/requirements_all.txt index b7d140b4492..f57865790ef 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -221,9 +221,6 @@ https://github.com/jabesq/pybotvac/archive/v0.0.1.zip#pybotvac==0.0.1 # homeassistant.components.sensor.sabnzbd https://github.com/jamespcole/home-assistant-nzb-clients/archive/616cad59154092599278661af17e2a9f2cf5e2a9.zip#python-sabnzbd==0.1 -# homeassistant.components.qwikswitch -https://github.com/kellerza/pyqwikswitch/archive/v0.4.zip#pyqwikswitch==0.4 - # homeassistant.components.media_player.russound_rnet https://github.com/laf/russound/archive/0.1.6.zip#russound==0.1.6 @@ -451,6 +448,9 @@ pynx584==0.2 # homeassistant.components.weather.openweathermap pyowm==2.6.0 +# homeassistant.components.qwikswitch +pyqwikswitch==0.4 + # homeassistant.components.switch.acer_projector pyserial==3.1.1 From 6892048de0183627e2bd30bfaf2195125978fb77 Mon Sep 17 00:00:00 2001 From: Gopal Date: Thu, 29 Dec 2016 18:19:11 +0530 Subject: [PATCH 046/189] Facebook Notify Started --- homeassistant/components/notify/facebook.py | 61 +++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 homeassistant/components/notify/facebook.py diff --git a/homeassistant/components/notify/facebook.py b/homeassistant/components/notify/facebook.py new file mode 100644 index 00000000000..bf5bf9cf195 --- /dev/null +++ b/homeassistant/components/notify/facebook.py @@ -0,0 +1,61 @@ +""" +Facebook platform for notify component. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/notify.facebook/ +""" +import logging + +import requests + +import voluptuous as vol + +import homeassistant.helpers.config_validation as cv +from homeassistant.components.notify import ( + PLATFORM_SCHEMA, BaseNotificationService) + +_LOGGER = logging.getLogger(__name__) + +CONF_ID = 'id' +CONF_PHONE_NUMBER = 'phone_number' +CONF_PAGE_ACCESS_TOKEN = 'page_access_token' +BASE_URL = 'https://graph.facebook.com/v2.6/me/messages' + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required(CONF_PHONE_NUMBER): cv.string, + vol.Required(CONF_PAGE_ACCESS_TOKEN): cv.string, +}) + + +def get_service(hass, config): + """Get the Twitter notification service.""" + return FacebookNotificationService( + config[CONF_PHONE_NUMBER], config[CONF_PAGE_ACCESS_TOKEN] + ) + + +class FacebookNotificationService(BaseNotificationService): + """Implementation of a notification service for the Twitter service.""" + + def __init__(self, id, access_token): + """Initialize the service.""" + self.user_id = id + self.page_access_token = access_token + + def send_message(self, message="", **kwargs): + """Send some message.""" + payload = {'access_token': self.page_access_token} + body = { + "recipient": {"phone_number": self.user_id}, + "message": {"text": message} + } + import json + resp = requests.post(BASE_URL, data=json.dumps(body), params=payload, + headers={'Content-Type': 'application/json'}) + if resp.status_code != 200: + 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) From a2f17cccbbf59b6c3b3bcfd93c18e0867cb63e69 Mon Sep 17 00:00:00 2001 From: Jesse Newland Date: Thu, 29 Dec 2016 10:26:23 -0600 Subject: [PATCH 047/189] Replace dots in Alexa built-in intent slots w/ underscores (#5092) * Replace dots in built-in intent slots w/ underscores * Add a built-in intent test --- homeassistant/components/alexa.py | 9 +++-- tests/components/test_alexa.py | 65 +++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/alexa.py b/homeassistant/components/alexa.py index 9bd0d783fee..59d2ec8852a 100644 --- a/homeassistant/components/alexa.py +++ b/homeassistant/components/alexa.py @@ -203,11 +203,12 @@ class AlexaResponse(object): self.reprompt = None self.session_attributes = {} self.should_end_session = True + self.variables = {} if intent is not None and 'slots' in intent: - self.variables = {key: value['value'] for key, value - in intent['slots'].items() if 'value' in value} - else: - self.variables = {} + for key, value in intent['slots'].items(): + if 'value' in value: + underscored_key = key.replace('.', '_') + self.variables[underscored_key] = value['value'] def add_card(self, card_type, title, content): """Add a card to the response.""" diff --git a/tests/components/test_alexa.py b/tests/components/test_alexa.py index 41e7474974d..fe980bf05b3 100644 --- a/tests/components/test_alexa.py +++ b/tests/components/test_alexa.py @@ -101,6 +101,12 @@ def setUpModule(): "text": "You told us your sign is {{ ZodiacSign }}.", } }, + "AMAZON.PlaybackAction": { + "speech": { + "type": "plaintext", + "text": "Playing {{ object_byArtist_name }}.", + } + }, "CallServiceIntent": { "speech": { "type": "plaintext", @@ -376,6 +382,65 @@ class TestAlexa(unittest.TestCase): self.assertEqual(200, req.status_code) self.assertEqual("", req.text) + def test_intent_from_built_in_intent_library(self): + """Test intents from the Built-in Intent Library.""" + data = { + 'request': { + 'intent': { + 'name': 'AMAZON.PlaybackAction', + 'slots': { + 'object.byArtist.name': { + 'name': 'object.byArtist.name', + 'value': 'the shins' + }, + 'object.composer.name': { + 'name': 'object.composer.name' + }, + 'object.contentSource': { + 'name': 'object.contentSource' + }, + 'object.era': { + 'name': 'object.era' + }, + 'object.genre': { + 'name': 'object.genre' + }, + 'object.name': { + 'name': 'object.name' + }, + 'object.owner.name': { + 'name': 'object.owner.name' + }, + 'object.select': { + 'name': 'object.select' + }, + 'object.sort': { + 'name': 'object.sort' + }, + 'object.type': { + 'name': 'object.type', + 'value': 'music' + } + } + }, + 'timestamp': '2016-12-14T23:23:37Z', + 'type': 'IntentRequest', + 'requestId': REQUEST_ID, + + }, + 'session': { + 'sessionId': SESSION_ID, + 'application': { + 'applicationId': APPLICATION_ID + } + } + } + req = _intent_req(data) + self.assertEqual(200, req.status_code) + text = req.json().get("response", {}).get("outputSpeech", + {}).get("text") + self.assertEqual("Playing the shins.", text) + def test_flash_briefing_invalid_id(self): """Test an invalid Flash Briefing ID.""" req = _flash_briefing_req() From 0ecd185f0df27c33f8987c623b5b1a18a6a9a7c1 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Thu, 29 Dec 2016 17:27:58 +0100 Subject: [PATCH 048/189] Bugfix close async log handler (#5086) --- homeassistant/util/logging.py | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/homeassistant/util/logging.py b/homeassistant/util/logging.py index 736fee0d1b3..095e906efe1 100644 --- a/homeassistant/util/logging.py +++ b/homeassistant/util/logging.py @@ -55,18 +55,11 @@ class AsyncHandler(object): When blocking=True, will wait till closed. """ - if not self._thread.is_alive(): - return yield from self._queue.put(None) if blocking: - # Python 3.4.4+ - # pylint: disable=no-member - if hasattr(self._queue, 'join'): - yield from self._queue.join() - else: - while not self._queue.empty(): - yield from asyncio.sleep(0, loop=self.loop) + while self._thread.is_alive(): + yield from asyncio.sleep(0, loop=self.loop) def emit(self, record): """Process a record.""" @@ -85,23 +78,15 @@ class AsyncHandler(object): def _process(self): """Process log in a thread.""" - support_join = hasattr(self._queue, 'task_done') - while True: record = run_coroutine_threadsafe( self._queue.get(), self.loop).result() - # pylint: disable=no-member - if record is None: self.handler.close() - if support_join: - self.loop.call_soon_threadsafe(self._queue.task_done) return self.handler.emit(record) - if support_join: - self.loop.call_soon_threadsafe(self._queue.task_done) def createLock(self): """Ignore lock stuff.""" From 9e66755baf39480d415c15238c5ab8cc25af1318 Mon Sep 17 00:00:00 2001 From: Thibault Cohen Date: Fri, 30 Dec 2016 02:51:37 -0500 Subject: [PATCH 049/189] Fix proximity issue (#5109) --- homeassistant/components/proximity.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/homeassistant/components/proximity.py b/homeassistant/components/proximity.py index 60a0a8c547b..73e72149b37 100644 --- a/homeassistant/components/proximity.py +++ b/homeassistant/components/proximity.py @@ -142,6 +142,10 @@ class Proximity(Entity): for device in self.proximity_devices: device_state = self.hass.states.get(device) + if device_state is None: + devices_to_calculate = True + continue + if device_state.state not in self.ignored_zones: devices_to_calculate = True From d04ee666693a90be13ba917ae049350d357906d1 Mon Sep 17 00:00:00 2001 From: Felix Date: Fri, 30 Dec 2016 11:16:34 +0100 Subject: [PATCH 050/189] Fixes moldindicator sensor after switch to asyncio (#5038) --- homeassistant/components/sensor/mold_indicator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/sensor/mold_indicator.py b/homeassistant/components/sensor/mold_indicator.py index 0457d8a9fa2..61cdae5fb36 100644 --- a/homeassistant/components/sensor/mold_indicator.py +++ b/homeassistant/components/sensor/mold_indicator.py @@ -163,7 +163,7 @@ class MoldIndicator(Entity): self._indoor_hum = MoldIndicator._update_hum_sensor(new_state) self.update() - self.update_ha_state() + self.schedule_update_ha_state() def _calc_dewpoint(self): """Calculate the dewpoint for the indoor air.""" From 227fb29cabab708f690e30beabdb4740c219d78c Mon Sep 17 00:00:00 2001 From: Gopal Date: Sat, 31 Dec 2016 09:59:44 +0530 Subject: [PATCH 051/189] Facebook notify updated --- homeassistant/components/notify/facebook.py | 52 +++++++++++---------- 1 file changed, 27 insertions(+), 25 deletions(-) diff --git a/homeassistant/components/notify/facebook.py b/homeassistant/components/notify/facebook.py index bf5bf9cf195..630d5453daf 100644 --- a/homeassistant/components/notify/facebook.py +++ b/homeassistant/components/notify/facebook.py @@ -12,50 +12,52 @@ import voluptuous as vol import homeassistant.helpers.config_validation as cv from homeassistant.components.notify import ( - PLATFORM_SCHEMA, BaseNotificationService) + ATTR_TARGET, PLATFORM_SCHEMA, BaseNotificationService) _LOGGER = logging.getLogger(__name__) -CONF_ID = 'id' -CONF_PHONE_NUMBER = 'phone_number' CONF_PAGE_ACCESS_TOKEN = 'page_access_token' BASE_URL = 'https://graph.facebook.com/v2.6/me/messages' PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ - vol.Required(CONF_PHONE_NUMBER): cv.string, vol.Required(CONF_PAGE_ACCESS_TOKEN): cv.string, }) def get_service(hass, config): - """Get the Twitter notification service.""" - return FacebookNotificationService( - config[CONF_PHONE_NUMBER], config[CONF_PAGE_ACCESS_TOKEN] - ) + """Get the Facebook notification service.""" + return FacebookNotificationService(config[CONF_PAGE_ACCESS_TOKEN]) class FacebookNotificationService(BaseNotificationService): - """Implementation of a notification service for the Twitter service.""" + """Implementation of a notification service for the Facebook service.""" - def __init__(self, id, access_token): + def __init__(self, access_token): """Initialize the service.""" - self.user_id = id self.page_access_token = access_token def send_message(self, message="", **kwargs): """Send some message.""" payload = {'access_token': self.page_access_token} - body = { - "recipient": {"phone_number": self.user_id}, - "message": {"text": message} - } - import json - resp = requests.post(BASE_URL, data=json.dumps(body), params=payload, - headers={'Content-Type': 'application/json'}) - if resp.status_code != 200: - 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) + targets = kwargs.get(ATTR_TARGET) + + if not targets: + _LOGGER.info("At least 1 target is required") + return + + for target in targets: + body = { + "recipient": {"phone_number": target}, + "message": {"text": message} + } + import json + resp = requests.post(BASE_URL, data=json.dumps(body), + params=payload, + headers={'Content-Type': 'application/json'}) + if resp.status_code != 200: + 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) From e89aa6b2d684045b379e77a517c07b9f15b844fe Mon Sep 17 00:00:00 2001 From: Gopal Date: Sat, 31 Dec 2016 10:11:30 +0530 Subject: [PATCH 052/189] File added to coveragerc --- .coveragerc | 1 + 1 file changed, 1 insertion(+) diff --git a/.coveragerc b/.coveragerc index 34531651358..cb0b70ac84b 100644 --- a/.coveragerc +++ b/.coveragerc @@ -219,6 +219,7 @@ omit = homeassistant/components/notify/aws_lambda.py homeassistant/components/notify/aws_sns.py homeassistant/components/notify/aws_sqs.py + homeassistant/components/notify/facebook.py homeassistant/components/notify/free_mobile.py homeassistant/components/notify/gntp.py homeassistant/components/notify/group.py From 01be70cda9febb22d573a723703328f0b0996462 Mon Sep 17 00:00:00 2001 From: Mark Date: Sun, 1 Jan 2017 19:40:34 +0000 Subject: [PATCH 053/189] Philio 3-in-1 Gen 4 zwave sensor needs the no-off-event workaround. (#5120) --- homeassistant/components/binary_sensor/zwave.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/homeassistant/components/binary_sensor/zwave.py b/homeassistant/components/binary_sensor/zwave.py index e99a2625ea2..b48b4578af9 100644 --- a/homeassistant/components/binary_sensor/zwave.py +++ b/homeassistant/components/binary_sensor/zwave.py @@ -20,6 +20,8 @@ DEPENDENCIES = [] PHILIO = 0x013c PHILIO_SLIM_SENSOR = 0x0002 PHILIO_SLIM_SENSOR_MOTION = (PHILIO, PHILIO_SLIM_SENSOR, 0) +PHILIO_3_IN_1_SENSOR_GEN_4 = 0x000d +PHILIO_3_IN_1_SENSOR_GEN_4_MOTION = (PHILIO, PHILIO_3_IN_1_SENSOR_GEN_4, 0) WENZHOU = 0x0118 WENZHOU_SLIM_SENSOR_MOTION = (WENZHOU, PHILIO_SLIM_SENSOR, 0) @@ -27,6 +29,7 @@ WORKAROUND_NO_OFF_EVENT = 'trigger_no_off_event' DEVICE_MAPPINGS = { PHILIO_SLIM_SENSOR_MOTION: WORKAROUND_NO_OFF_EVENT, + PHILIO_3_IN_1_SENSOR_GEN_4_MOTION: WORKAROUND_NO_OFF_EVENT, WENZHOU_SLIM_SENSOR_MOTION: WORKAROUND_NO_OFF_EVENT, } From 7fbf68df35808a1d2c4f57f50eb8f2887bedec4a Mon Sep 17 00:00:00 2001 From: andrey-git Date: Sun, 1 Jan 2017 22:10:45 +0200 Subject: [PATCH 054/189] Add print_config_parameter service to Z-Wave (#5121) * Add print_config_param service to z-wave * Add print_config_parameter service to z-wave * Add print_config_parameter service to z-wave * Fix typos * Fix typos * Fix typo --- homeassistant/components/zwave/__init__.py | 18 ++++++++++++++++++ homeassistant/components/zwave/const.py | 1 + homeassistant/components/zwave/services.yaml | 9 +++++++++ 3 files changed, 28 insertions(+) diff --git a/homeassistant/components/zwave/__init__.py b/homeassistant/components/zwave/__init__.py index 7c4d5e02879..c0666f77c73 100755 --- a/homeassistant/components/zwave/__init__.py +++ b/homeassistant/components/zwave/__init__.py @@ -136,6 +136,11 @@ SET_CONFIG_PARAMETER_SCHEMA = vol.Schema({ vol.Required(const.ATTR_CONFIG_VALUE): vol.Coerce(int), vol.Optional(const.ATTR_CONFIG_SIZE): vol.Coerce(int) }) +PRINT_CONFIG_PARAMETER_SCHEMA = vol.Schema({ + vol.Required(const.ATTR_NODE_ID): vol.Coerce(int), + vol.Required(const.ATTR_CONFIG_PARAMETER): vol.Coerce(int), +}) + CHANGE_ASSOCIATION_SCHEMA = vol.Schema({ vol.Required(const.ATTR_ASSOCIATION): cv.string, vol.Required(const.ATTR_NODE_ID): vol.Coerce(int), @@ -463,6 +468,14 @@ def setup(hass, config): _LOGGER.info("Setting config parameter %s on Node %s " "with value %s and size=%s", param, node_id, value, size) + def print_config_parameter(service): + """Print a config parameter from a node.""" + 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", + param, node_id, get_config_value(node, param)) + def change_association(service): """Change an association in the zwave network.""" association_type = service.data.get(const.ATTR_ASSOCIATION) @@ -548,6 +561,11 @@ def setup(hass, config): descriptions[ const.SERVICE_SET_CONFIG_PARAMETER], schema=SET_CONFIG_PARAMETER_SCHEMA) + hass.services.register(DOMAIN, const.SERVICE_PRINT_CONFIG_PARAMETER, + print_config_parameter, + descriptions[ + const.SERVICE_PRINT_CONFIG_PARAMETER], + schema=PRINT_CONFIG_PARAMETER_SCHEMA) hass.services.register(DOMAIN, const.SERVICE_CHANGE_ASSOCIATION, change_association, descriptions[ diff --git a/homeassistant/components/zwave/const.py b/homeassistant/components/zwave/const.py index d30cb6c5f92..b5dbf2f402a 100644 --- a/homeassistant/components/zwave/const.py +++ b/homeassistant/components/zwave/const.py @@ -24,6 +24,7 @@ SERVICE_HEAL_NETWORK = "heal_network" SERVICE_SOFT_RESET = "soft_reset" SERVICE_TEST_NETWORK = "test_network" SERVICE_SET_CONFIG_PARAMETER = "set_config_parameter" +SERVICE_PRINT_CONFIG_PARAMETER = "print_config_parameter" SERVICE_STOP_NETWORK = "stop_network" SERVICE_START_NETWORK = "start_network" SERVICE_RENAME_NODE = "rename_node" diff --git a/homeassistant/components/zwave/services.yaml b/homeassistant/components/zwave/services.yaml index cfe2edab5c9..2a44096ce0e 100644 --- a/homeassistant/components/zwave/services.yaml +++ b/homeassistant/components/zwave/services.yaml @@ -38,6 +38,15 @@ set_config_parameter: description: Value to set on parameter. (integer). size: description: (Optional) The size of the value. Defaults to 2. + +print_config_parameter: + description: Prints a Z-Wave node config parameter value to log. + fields: + node_id: + description: Node id of the device to print the parameter from (integer). + parameter: + description: Parameter number to print (integer). + start_network: description: Start the Z-Wave network. This might take a while, depending on how big your Z-Wave network is. From a8a98f258547c6bb209e3059fbfdce92fc5d7537 Mon Sep 17 00:00:00 2001 From: jtscott Date: Mon, 2 Jan 2017 03:17:52 -0700 Subject: [PATCH 055/189] [climate] Fix typo in services.yaml (#5136) --- homeassistant/components/climate/services.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/climate/services.yaml b/homeassistant/components/climate/services.yaml index ac8e2ab1dea..801052b31ff 100644 --- a/homeassistant/components/climate/services.yaml +++ b/homeassistant/components/climate/services.yaml @@ -76,7 +76,7 @@ set_operation_mode: fields: entity_id: description: Name(s) of entities to change - example: 'climet.nest' + example: 'climate.nest' operation_mode: description: New value of operation mode From 9af1e0ccf3512b5fad84e01f3eb18b863ff46569 Mon Sep 17 00:00:00 2001 From: pavoni Date: Mon, 2 Jan 2017 14:15:38 +0000 Subject: [PATCH 056/189] Bump pyloopenergy to catch SSL exception. --- homeassistant/components/sensor/loopenergy.py | 2 +- requirements_all.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/sensor/loopenergy.py b/homeassistant/components/sensor/loopenergy.py index c7217044c26..d537d8067cb 100644 --- a/homeassistant/components/sensor/loopenergy.py +++ b/homeassistant/components/sensor/loopenergy.py @@ -17,7 +17,7 @@ from homeassistant.const import EVENT_HOMEASSISTANT_STOP _LOGGER = logging.getLogger(__name__) -REQUIREMENTS = ['pyloopenergy==0.0.15'] +REQUIREMENTS = ['pyloopenergy==0.0.16'] CONF_ELEC = 'electricity' CONF_GAS = 'gas' diff --git a/requirements_all.txt b/requirements_all.txt index f57865790ef..cb04ecbab75 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -426,7 +426,7 @@ pylast==1.6.0 pylitejet==0.1 # homeassistant.components.sensor.loopenergy -pyloopenergy==0.0.15 +pyloopenergy==0.0.16 # homeassistant.components.mochad pymochad==0.1.1 From 23f16bb68f18d5675aebce4854de7e265b9ced30 Mon Sep 17 00:00:00 2001 From: John Arild Berentsen Date: Mon, 2 Jan 2017 18:45:10 +0100 Subject: [PATCH 057/189] Catch RuntimeError (#5134) --- homeassistant/components/zwave/__init__.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/zwave/__init__.py b/homeassistant/components/zwave/__init__.py index c0666f77c73..40675c8b91b 100755 --- a/homeassistant/components/zwave/__init__.py +++ b/homeassistant/components/zwave/__init__.py @@ -621,7 +621,12 @@ class ZWaveDeviceEntity: const.ATTR_NODE_ID: self._value.node.node_id, } - battery_level = self._value.node.get_battery_level() + try: + battery_level = self._value.node.get_battery_level() + except RuntimeError: + # If we get an runtime error the dict has changed while + # we was looking for a value, just do it again + battery_level = self._value.node.get_battery_level() if battery_level is not None: attrs[ATTR_BATTERY_LEVEL] = battery_level From a7cc7ce476b2ed00761637cbe334db43b69ff687 Mon Sep 17 00:00:00 2001 From: andrey-git Date: Mon, 2 Jan 2017 19:45:44 +0200 Subject: [PATCH 058/189] Clean up DEFAULT_DEBUG constant in zwave (#5138) Nice :+1: --- homeassistant/components/zwave/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/zwave/__init__.py b/homeassistant/components/zwave/__init__.py index 40675c8b91b..be4add384c3 100755 --- a/homeassistant/components/zwave/__init__.py +++ b/homeassistant/components/zwave/__init__.py @@ -38,7 +38,7 @@ CONF_REFRESH_DELAY = 'delay' DEFAULT_CONF_AUTOHEAL = True DEFAULT_CONF_USB_STICK_PATH = '/zwaveusbstick' DEFAULT_POLLING_INTERVAL = 60000 -DEFAULT_DEBUG = True +DEFAULT_DEBUG = False DEFAULT_CONF_IGNORED = False DEFAULT_CONF_REFRESH_VALUE = False DEFAULT_CONF_REFRESH_DELAY = 2 @@ -165,7 +165,7 @@ CONFIG_SCHEMA = vol.Schema({ vol.Optional(CONF_CONFIG_PATH): cv.string, vol.Optional(CONF_CUSTOMIZE, default={}): vol.Schema({cv.string: CUSTOMIZE_SCHEMA}), - vol.Optional(CONF_DEBUG, default=False): cv.boolean, + vol.Optional(CONF_DEBUG, default=DEFAULT_DEBUG): cv.boolean, vol.Optional(CONF_POLLING_INTERVAL, default=DEFAULT_POLLING_INTERVAL): cv.positive_int, vol.Optional(CONF_USB_STICK_PATH, default=DEFAULT_CONF_USB_STICK_PATH): From 5c006cd2d272a17622fc8e8236c3ef61bd2d4df8 Mon Sep 17 00:00:00 2001 From: John Arild Berentsen Date: Mon, 2 Jan 2017 18:53:46 +0100 Subject: [PATCH 059/189] Prevent Homeassistant to create a segfault with OZW (#5085) --- homeassistant/components/zwave/__init__.py | 26 ++++++++++++++++++---- homeassistant/components/zwave/const.py | 1 + 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/zwave/__init__.py b/homeassistant/components/zwave/__init__.py index be4add384c3..82c116aaa5c 100755 --- a/homeassistant/components/zwave/__init__.py +++ b/homeassistant/components/zwave/__init__.py @@ -462,11 +462,29 @@ 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) - value = service.data.get(const.ATTR_CONFIG_VALUE) + selection = service.data.get(const.ATTR_CONFIG_VALUE) size = service.data.get(const.ATTR_CONFIG_SIZE, 2) - node.set_config_param(param, value, size) - _LOGGER.info("Setting config parameter %s on Node %s " - "with value %s and size=%s", param, node_id, value, size) + i = 0 + for value in ( + 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, + 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) + 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, + selection, size) def print_config_parameter(service): """Print a config parameter from a node.""" diff --git a/homeassistant/components/zwave/const.py b/homeassistant/components/zwave/const.py index b5dbf2f402a..2350b4bee75 100644 --- a/homeassistant/components/zwave/const.py +++ b/homeassistant/components/zwave/const.py @@ -302,3 +302,4 @@ TYPE_BYTE = "Byte" TYPE_BOOL = "Bool" TYPE_DECIMAL = "Decimal" TYPE_INT = "Int" +TYPE_LIST = "List" From 9c6a985c56d6509f880c81d3664bccf54685d261 Mon Sep 17 00:00:00 2001 From: John Arild Berentsen Date: Mon, 2 Jan 2017 18:55:56 +0100 Subject: [PATCH 060/189] [zwave]Use schedule_ha_state and add debug message (#5143) * Use schedule_ha_state and add debug message * Logger not defined --- homeassistant/components/binary_sensor/zwave.py | 1 + homeassistant/components/climate/zwave.py | 2 +- homeassistant/components/cover/zwave.py | 8 ++++---- homeassistant/components/light/zwave.py | 5 +++-- homeassistant/components/lock/zwave.py | 1 + homeassistant/components/sensor/zwave.py | 6 +++++- homeassistant/components/switch/zwave.py | 6 +++++- 7 files changed, 20 insertions(+), 9 deletions(-) diff --git a/homeassistant/components/binary_sensor/zwave.py b/homeassistant/components/binary_sensor/zwave.py index b48b4578af9..32de0f653a7 100644 --- a/homeassistant/components/binary_sensor/zwave.py +++ b/homeassistant/components/binary_sensor/zwave.py @@ -99,6 +99,7 @@ class ZWaveBinarySensor(BinarySensorDevice, zwave.ZWaveDeviceEntity, Entity): """Called when a value has changed on the network.""" if self._value.value_id == value.value_id or \ self._value.node == value.node: + _LOGGER.debug('Value changed for label %s', self._value.label) self.schedule_update_ha_state() diff --git a/homeassistant/components/climate/zwave.py b/homeassistant/components/climate/zwave.py index eb3aca7be5b..f7bbe341cf7 100755 --- a/homeassistant/components/climate/zwave.py +++ b/homeassistant/components/climate/zwave.py @@ -89,9 +89,9 @@ class ZWaveClimate(ZWaveDeviceEntity, ClimateDevice): """Called when a value has changed on the network.""" if self._value.value_id == value.value_id or \ self._value.node == value.node: + _LOGGER.debug('Value changed for label %s', self._value.label) self.update_properties() self.schedule_update_ha_state() - _LOGGER.debug("Value changed on network %s", value) def update_properties(self): """Callback on data change for the registered node/value pair.""" diff --git a/homeassistant/components/cover/zwave.py b/homeassistant/components/cover/zwave.py index a190e69bf53..89947e3e4fc 100644 --- a/homeassistant/components/cover/zwave.py +++ b/homeassistant/components/cover/zwave.py @@ -78,9 +78,9 @@ class ZwaveRollershutter(zwave.ZWaveDeviceEntity, CoverDevice): """Called when a value has changed on the network.""" if self._value.value_id == value.value_id or \ self._value.node == value.node: + _LOGGER.debug('Value changed for label %s', self._value.label) self.update_properties() - self.update_ha_state() - _LOGGER.debug("Value changed on network %s", value) + self.schedule_update_ha_state() def update_properties(self): """Callback on data change for the registered node/value pair.""" @@ -170,9 +170,9 @@ class ZwaveGarageDoor(zwave.ZWaveDeviceEntity, CoverDevice): def value_changed(self, value): """Called when a value has changed on the network.""" if self._value.value_id == value.value_id: + _LOGGER.debug('Value changed for label %s', self._value.label) self._state = value.data - self.update_ha_state() - _LOGGER.debug("Value changed on network %s", value) + self.schedule_update_ha_state() @property def is_closed(self): diff --git a/homeassistant/components/light/zwave.py b/homeassistant/components/light/zwave.py index de471db4957..30fa0611e45 100644 --- a/homeassistant/components/light/zwave.py +++ b/homeassistant/components/light/zwave.py @@ -127,6 +127,7 @@ class ZwaveDimmer(zwave.ZWaveDeviceEntity, Light): """Called when a value has changed on the network.""" if self._value.value_id == value.value_id or \ self._value.node == value.node: + _LOGGER.debug('Value changed for label %s', self._value.label) if self._refresh_value: if self._refreshing: self._refreshing = False @@ -142,10 +143,10 @@ class ZwaveDimmer(zwave.ZWaveDeviceEntity, Light): self._timer = Timer(self._delay, _refresh_value) self._timer.start() - self.update_ha_state() + self.schedule_update_ha_state() else: self.update_properties() - self.update_ha_state() + self.schedule_update_ha_state() @property def brightness(self): diff --git a/homeassistant/components/lock/zwave.py b/homeassistant/components/lock/zwave.py index d359cacba8f..17fc30e93cf 100644 --- a/homeassistant/components/lock/zwave.py +++ b/homeassistant/components/lock/zwave.py @@ -76,6 +76,7 @@ class ZwaveLock(zwave.ZWaveDeviceEntity, LockDevice): """Called when a value has changed on the network.""" if self._value.value_id == value.value_id or \ self._value.node == value.node: + _LOGGER.debug('Value changed for label %s', self._value.label) self.update_properties() self.schedule_update_ha_state() diff --git a/homeassistant/components/sensor/zwave.py b/homeassistant/components/sensor/zwave.py index 3a70e0d521f..67e2801974f 100644 --- a/homeassistant/components/sensor/zwave.py +++ b/homeassistant/components/sensor/zwave.py @@ -4,6 +4,7 @@ Interfaces with Z-Wave sensors. For more details about this platform, please refer to the documentation at https://home-assistant.io/components/sensor.zwave/ """ +import logging # Because we do not compile openzwave on CI # pylint: disable=import-error from homeassistant.components.sensor import DOMAIN @@ -11,6 +12,8 @@ from homeassistant.components import zwave from homeassistant.const import TEMP_CELSIUS, TEMP_FAHRENHEIT from homeassistant.helpers.entity import Entity +_LOGGER = logging.getLogger(__name__) + def setup_platform(hass, config, add_devices, discovery_info=None): """Setup Z-Wave sensors.""" @@ -72,7 +75,8 @@ class ZWaveSensor(zwave.ZWaveDeviceEntity, Entity): """Called when a value has changed on the network.""" if self._value.value_id == value.value_id or \ self._value.node == value.node: - self.update_ha_state() + _LOGGER.debug('Value changed for label %s', self._value.label) + self.schedule_update_ha_state() class ZWaveMultilevelSensor(ZWaveSensor): diff --git a/homeassistant/components/switch/zwave.py b/homeassistant/components/switch/zwave.py index 4ba9cff378e..2f409f94ef3 100644 --- a/homeassistant/components/switch/zwave.py +++ b/homeassistant/components/switch/zwave.py @@ -4,11 +4,14 @@ Z-Wave platform that handles simple binary switches. For more details about this platform, please refer to the documentation at https://home-assistant.io/components/switch.zwave/ """ +import logging # Because we do not compile openzwave on CI # pylint: disable=import-error from homeassistant.components.switch import DOMAIN, SwitchDevice from homeassistant.components import zwave +_LOGGER = logging.getLogger(__name__) + # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): @@ -46,8 +49,9 @@ class ZwaveSwitch(zwave.ZWaveDeviceEntity, SwitchDevice): def _value_changed(self, value): """Called when a value has changed on the network.""" if self._value.value_id == value.value_id: + _LOGGER.debug('Value changed for label %s', self._value.label) self._state = value.data - self.update_ha_state() + self.schedule_update_ha_state() @property def is_on(self): From b2371c66147f7c2e0e2148560af1c5fd6c0774a0 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Mon, 2 Jan 2017 20:50:42 +0100 Subject: [PATCH 061/189] Update device_traker for async platforms (#5102) Async DeviceScanner object, migrate to async, cleanups --- .../components/device_tracker/__init__.py | 71 +++++++++++++++---- .../components/device_tracker/actiontec.py | 5 +- .../components/device_tracker/aruba.py | 5 +- .../components/device_tracker/asuswrt.py | 5 +- .../components/device_tracker/automatic.py | 4 +- .../components/device_tracker/bbox.py | 4 +- .../device_tracker/bluetooth_le_tracker.py | 9 +-- .../device_tracker/bt_home_hub_5.py | 5 +- .../components/device_tracker/cisco_ios.py | 5 +- .../components/device_tracker/ddwrt.py | 5 +- .../components/device_tracker/fritz.py | 5 +- .../components/device_tracker/icloud.py | 4 +- .../components/device_tracker/locative.py | 5 +- .../components/device_tracker/luci.py | 5 +- .../components/device_tracker/netgear.py | 5 +- .../components/device_tracker/nmap_tracker.py | 5 +- .../components/device_tracker/snmp.py | 5 +- .../components/device_tracker/swisscom.py | 5 +- .../components/device_tracker/thomson.py | 5 +- .../components/device_tracker/tomato.py | 5 +- .../components/device_tracker/tplink.py | 5 +- .../components/device_tracker/ubus.py | 5 +- .../components/device_tracker/unifi.py | 5 +- .../components/device_tracker/volvooncall.py | 7 +- tests/components/device_tracker/test_init.py | 3 +- .../custom_components/device_tracker/test.py | 4 +- 26 files changed, 124 insertions(+), 72 deletions(-) diff --git a/homeassistant/components/device_tracker/__init__.py b/homeassistant/components/device_tracker/__init__.py index 902ff509b3e..30c9fbe9a3a 100644 --- a/homeassistant/components/device_tracker/__init__.py +++ b/homeassistant/components/device_tracker/__init__.py @@ -8,7 +8,7 @@ import asyncio from datetime import timedelta import logging import os -from typing import Any, Sequence, Callable +from typing import Any, List, Sequence, Callable import aiohttp import async_timeout @@ -142,23 +142,34 @@ def async_setup(hass: HomeAssistantType, config: ConfigType): if platform is None: return + _LOGGER.info("Setting up %s.%s", DOMAIN, p_type) try: - if hasattr(platform, 'get_scanner'): + scanner = None + setup = None + if hasattr(platform, 'async_get_scanner'): + scanner = yield from platform.async_get_scanner( + hass, {DOMAIN: p_config}) + elif hasattr(platform, 'get_scanner'): scanner = yield from hass.loop.run_in_executor( None, platform.get_scanner, hass, {DOMAIN: p_config}) + elif hasattr(platform, 'async_setup_scanner'): + setup = yield from platform.setup_scanner( + hass, p_config, tracker.see) + elif hasattr(platform, 'setup_scanner'): + setup = yield from hass.loop.run_in_executor( + None, platform.setup_scanner, hass, p_config, tracker.see) + else: + raise HomeAssistantError("Invalid device_tracker platform.") - if scanner is None: - _LOGGER.error('Error setting up platform %s', p_type) - return - + if scanner: yield from async_setup_scanner_platform( hass, p_config, scanner, tracker.async_see) return - ret = yield from hass.loop.run_in_executor( - None, platform.setup_scanner, hass, p_config, tracker.see) - if not ret: + if not setup: _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) @@ -526,6 +537,34 @@ class Device(Entity): yield from resp.release() +class DeviceScanner(object): + """Device scanner object.""" + + hass = None # type: HomeAssistantType + + def scan_devices(self) -> List[str]: + """Scan for devices.""" + raise NotImplementedError() + + def async_scan_devices(self) -> Any: + """Scan for devices. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor(None, self.scan_devices) + + def get_device_name(self, mac: str) -> str: + """Get device name from mac.""" + raise NotImplementedError() + + def async_get_device_name(self, mac: str) -> Any: + """Get device name from mac. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor(None, self.get_device_name, mac) + + def load_config(path: str, hass: HomeAssistantType, consider_home: timedelta): """Load devices from YAML configuration file.""" return run_coroutine_threadsafe( @@ -582,26 +621,28 @@ def async_setup_scanner_platform(hass: HomeAssistantType, config: ConfigType, This method is a coroutine. """ interval = config.get(CONF_SCAN_INTERVAL, DEFAULT_SCAN_INTERVAL) + scanner.hass = hass # Initial scan of each mac we also tell about host name for config seen = set() # type: Any - def device_tracker_scan(now: dt_util.dt.datetime): + @asyncio.coroutine + def async_device_tracker_scan(now: dt_util.dt.datetime): """Called when interval matches.""" - found_devices = scanner.scan_devices() + found_devices = yield from scanner.async_scan_devices() for mac in found_devices: if mac in seen: host_name = None else: - host_name = scanner.get_device_name(mac) + host_name = yield from scanner.async_get_device_name(mac) seen.add(mac) - hass.add_job(async_see_device(mac=mac, host_name=host_name)) + hass.async_add_job(async_see_device(mac=mac, host_name=host_name)) async_track_utc_time_change( - hass, device_tracker_scan, second=range(0, 60, interval)) + hass, async_device_tracker_scan, second=range(0, 60, interval)) - hass.async_add_job(device_tracker_scan, None) + hass.async_add_job(async_device_tracker_scan, None) def update_config(path: str, dev_id: str, device: Device): diff --git a/homeassistant/components/device_tracker/actiontec.py b/homeassistant/components/device_tracker/actiontec.py index 9583237a912..95286800b3c 100644 --- a/homeassistant/components/device_tracker/actiontec.py +++ b/homeassistant/components/device_tracker/actiontec.py @@ -14,7 +14,8 @@ import voluptuous as vol import homeassistant.helpers.config_validation as cv import homeassistant.util.dt as dt_util -from homeassistant.components.device_tracker import (DOMAIN, PLATFORM_SCHEMA) +from homeassistant.components.device_tracker import ( + DOMAIN, PLATFORM_SCHEMA, DeviceScanner) from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME from homeassistant.util import Throttle @@ -46,7 +47,7 @@ def get_scanner(hass, config): Device = namedtuple("Device", ["mac", "ip", "last_update"]) -class ActiontecDeviceScanner(object): +class ActiontecDeviceScanner(DeviceScanner): """This class queries a an actiontec router for connected devices.""" def __init__(self, config): diff --git a/homeassistant/components/device_tracker/aruba.py b/homeassistant/components/device_tracker/aruba.py index 6383bc962a4..42e8a5b2d5c 100644 --- a/homeassistant/components/device_tracker/aruba.py +++ b/homeassistant/components/device_tracker/aruba.py @@ -12,7 +12,8 @@ from datetime import timedelta import voluptuous as vol import homeassistant.helpers.config_validation as cv -from homeassistant.components.device_tracker import DOMAIN, PLATFORM_SCHEMA +from homeassistant.components.device_tracker import ( + DOMAIN, PLATFORM_SCHEMA, DeviceScanner) from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME from homeassistant.util import Throttle @@ -42,7 +43,7 @@ def get_scanner(hass, config): return scanner if scanner.success_init else None -class ArubaDeviceScanner(object): +class ArubaDeviceScanner(DeviceScanner): """This class queries a Aruba Access Point for connected devices.""" def __init__(self, config): diff --git a/homeassistant/components/device_tracker/asuswrt.py b/homeassistant/components/device_tracker/asuswrt.py index 4e860846f8e..be530abc9e2 100644 --- a/homeassistant/components/device_tracker/asuswrt.py +++ b/homeassistant/components/device_tracker/asuswrt.py @@ -14,7 +14,8 @@ from datetime import timedelta import voluptuous as vol -from homeassistant.components.device_tracker import DOMAIN, PLATFORM_SCHEMA +from homeassistant.components.device_tracker import ( + DOMAIN, PLATFORM_SCHEMA, DeviceScanner) from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME from homeassistant.util import Throttle import homeassistant.helpers.config_validation as cv @@ -97,7 +98,7 @@ def get_scanner(hass, config): AsusWrtResult = namedtuple('AsusWrtResult', 'neighbors leases arp nvram') -class AsusWrtDeviceScanner(object): +class AsusWrtDeviceScanner(DeviceScanner): """This class queries a router running ASUSWRT firmware.""" # Eighth attribute needed for mode (AP mode vs router mode) diff --git a/homeassistant/components/device_tracker/automatic.py b/homeassistant/components/device_tracker/automatic.py index a07db8ec404..d47aa818673 100644 --- a/homeassistant/components/device_tracker/automatic.py +++ b/homeassistant/components/device_tracker/automatic.py @@ -11,8 +11,8 @@ import requests import voluptuous as vol -from homeassistant.components.device_tracker import (PLATFORM_SCHEMA, - ATTR_ATTRIBUTES) +from homeassistant.components.device_tracker import ( + PLATFORM_SCHEMA, ATTR_ATTRIBUTES) from homeassistant.const import CONF_USERNAME, CONF_PASSWORD import homeassistant.helpers.config_validation as cv from homeassistant.helpers.event import track_utc_time_change diff --git a/homeassistant/components/device_tracker/bbox.py b/homeassistant/components/device_tracker/bbox.py index 50864f47be1..60b9738cc71 100644 --- a/homeassistant/components/device_tracker/bbox.py +++ b/homeassistant/components/device_tracker/bbox.py @@ -9,7 +9,7 @@ import logging from datetime import timedelta import homeassistant.util.dt as dt_util -from homeassistant.components.device_tracker import DOMAIN +from homeassistant.components.device_tracker import DOMAIN, DeviceScanner from homeassistant.util import Throttle REQUIREMENTS = ['pybbox==0.0.5-alpha'] @@ -29,7 +29,7 @@ def get_scanner(hass, config): Device = namedtuple('Device', ['mac', 'name', 'ip', 'last_update']) -class BboxDeviceScanner(object): +class BboxDeviceScanner(DeviceScanner): """This class scans for devices connected to the bbox.""" def __init__(self, config): diff --git a/homeassistant/components/device_tracker/bluetooth_le_tracker.py b/homeassistant/components/device_tracker/bluetooth_le_tracker.py index 5b5b9ce2411..2505d6670a0 100644 --- a/homeassistant/components/device_tracker/bluetooth_le_tracker.py +++ b/homeassistant/components/device_tracker/bluetooth_le_tracker.py @@ -5,13 +5,8 @@ from datetime import timedelta import voluptuous as vol from homeassistant.helpers.event import track_point_in_utc_time from homeassistant.components.device_tracker import ( - YAML_DEVICES, - CONF_TRACK_NEW, - CONF_SCAN_INTERVAL, - DEFAULT_SCAN_INTERVAL, - PLATFORM_SCHEMA, - load_config, - DEFAULT_TRACK_NEW + YAML_DEVICES, CONF_TRACK_NEW, CONF_SCAN_INTERVAL, DEFAULT_SCAN_INTERVAL, + PLATFORM_SCHEMA, load_config, DEFAULT_TRACK_NEW ) import homeassistant.util as util import homeassistant.util.dt as dt_util diff --git a/homeassistant/components/device_tracker/bt_home_hub_5.py b/homeassistant/components/device_tracker/bt_home_hub_5.py index 3b4115ff355..301ec61abc2 100644 --- a/homeassistant/components/device_tracker/bt_home_hub_5.py +++ b/homeassistant/components/device_tracker/bt_home_hub_5.py @@ -16,7 +16,8 @@ import requests import voluptuous as vol import homeassistant.helpers.config_validation as cv -from homeassistant.components.device_tracker import DOMAIN, PLATFORM_SCHEMA +from homeassistant.components.device_tracker import ( + DOMAIN, PLATFORM_SCHEMA, DeviceScanner) from homeassistant.const import CONF_HOST from homeassistant.util import Throttle @@ -40,7 +41,7 @@ def get_scanner(hass, config): return scanner if scanner.success_init else None -class BTHomeHub5DeviceScanner(object): +class BTHomeHub5DeviceScanner(DeviceScanner): """This class queries a BT Home Hub 5.""" def __init__(self, config): diff --git a/homeassistant/components/device_tracker/cisco_ios.py b/homeassistant/components/device_tracker/cisco_ios.py index 0d42282b17c..95319a872ae 100644 --- a/homeassistant/components/device_tracker/cisco_ios.py +++ b/homeassistant/components/device_tracker/cisco_ios.py @@ -10,7 +10,8 @@ from datetime import timedelta import voluptuous as vol import homeassistant.helpers.config_validation as cv -from homeassistant.components.device_tracker import DOMAIN, PLATFORM_SCHEMA +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 @@ -39,7 +40,7 @@ def get_scanner(hass, config): return scanner if scanner.success_init else None -class CiscoDeviceScanner(object): +class CiscoDeviceScanner(DeviceScanner): """This class queries a wireless router running Cisco IOS firmware.""" def __init__(self, config): diff --git a/homeassistant/components/device_tracker/ddwrt.py b/homeassistant/components/device_tracker/ddwrt.py index a67ee3d1d39..2c8a2ec4907 100644 --- a/homeassistant/components/device_tracker/ddwrt.py +++ b/homeassistant/components/device_tracker/ddwrt.py @@ -13,7 +13,8 @@ import requests import voluptuous as vol import homeassistant.helpers.config_validation as cv -from homeassistant.components.device_tracker import DOMAIN, PLATFORM_SCHEMA +from homeassistant.components.device_tracker import ( + DOMAIN, PLATFORM_SCHEMA, DeviceScanner) from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME from homeassistant.util import Throttle @@ -41,7 +42,7 @@ def get_scanner(hass, config): return None -class DdWrtDeviceScanner(object): +class DdWrtDeviceScanner(DeviceScanner): """This class queries a wireless router running DD-WRT firmware.""" def __init__(self, config): diff --git a/homeassistant/components/device_tracker/fritz.py b/homeassistant/components/device_tracker/fritz.py index fd30946c919..055c3bc85c0 100644 --- a/homeassistant/components/device_tracker/fritz.py +++ b/homeassistant/components/device_tracker/fritz.py @@ -10,7 +10,8 @@ from datetime import timedelta import voluptuous as vol import homeassistant.helpers.config_validation as cv -from homeassistant.components.device_tracker import DOMAIN, PLATFORM_SCHEMA +from homeassistant.components.device_tracker import ( + DOMAIN, PLATFORM_SCHEMA, DeviceScanner) from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME from homeassistant.util import Throttle @@ -38,7 +39,7 @@ def get_scanner(hass, config): return scanner if scanner.success_init else None -class FritzBoxScanner(object): +class FritzBoxScanner(DeviceScanner): """This class queries a FRITZ!Box router.""" def __init__(self, config): diff --git a/homeassistant/components/device_tracker/icloud.py b/homeassistant/components/device_tracker/icloud.py index b5ae5ded01a..0878f8b005b 100644 --- a/homeassistant/components/device_tracker/icloud.py +++ b/homeassistant/components/device_tracker/icloud.py @@ -12,7 +12,7 @@ import voluptuous as vol from homeassistant.const import CONF_USERNAME, CONF_PASSWORD from homeassistant.components.device_tracker import ( - PLATFORM_SCHEMA, DOMAIN, ATTR_ATTRIBUTES, ENTITY_ID_FORMAT) + PLATFORM_SCHEMA, DOMAIN, ATTR_ATTRIBUTES, ENTITY_ID_FORMAT, DeviceScanner) from homeassistant.components.zone import active_zone from homeassistant.helpers.event import track_utc_time_change import homeassistant.helpers.config_validation as cv @@ -131,7 +131,7 @@ def setup_scanner(hass, config: dict, see): return True -class Icloud(object): +class Icloud(DeviceScanner): """Represent an icloud account in Home Assistant.""" def __init__(self, hass, username, password, name, see): diff --git a/homeassistant/components/device_tracker/locative.py b/homeassistant/components/device_tracker/locative.py index 10641b3a921..40d1ab8a12f 100644 --- a/homeassistant/components/device_tracker/locative.py +++ b/homeassistant/components/device_tracker/locative.py @@ -8,9 +8,8 @@ import asyncio from functools import partial import logging -from homeassistant.const import (ATTR_LATITUDE, ATTR_LONGITUDE, - STATE_NOT_HOME, - HTTP_UNPROCESSABLE_ENTITY) +from homeassistant.const import ( + ATTR_LATITUDE, ATTR_LONGITUDE, STATE_NOT_HOME, HTTP_UNPROCESSABLE_ENTITY) from homeassistant.components.http import HomeAssistantView # pylint: disable=unused-import from homeassistant.components.device_tracker import ( # NOQA diff --git a/homeassistant/components/device_tracker/luci.py b/homeassistant/components/device_tracker/luci.py index f9e90fee6c7..9dd9a11c426 100644 --- a/homeassistant/components/device_tracker/luci.py +++ b/homeassistant/components/device_tracker/luci.py @@ -14,7 +14,8 @@ import requests import voluptuous as vol import homeassistant.helpers.config_validation as cv -from homeassistant.components.device_tracker import DOMAIN, PLATFORM_SCHEMA +from homeassistant.components.device_tracker import ( + DOMAIN, PLATFORM_SCHEMA, DeviceScanner) from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME from homeassistant.util import Throttle @@ -37,7 +38,7 @@ def get_scanner(hass, config): return scanner if scanner.success_init else None -class LuciDeviceScanner(object): +class LuciDeviceScanner(DeviceScanner): """This class queries a wireless router running OpenWrt firmware. Adapted from Tomato scanner. diff --git a/homeassistant/components/device_tracker/netgear.py b/homeassistant/components/device_tracker/netgear.py index ff6fe2f1e41..d6716dfb9b1 100644 --- a/homeassistant/components/device_tracker/netgear.py +++ b/homeassistant/components/device_tracker/netgear.py @@ -11,7 +11,8 @@ from datetime import timedelta import voluptuous as vol import homeassistant.helpers.config_validation as cv -from homeassistant.components.device_tracker import DOMAIN, PLATFORM_SCHEMA +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 @@ -47,7 +48,7 @@ def get_scanner(hass, config): return scanner if scanner.success_init else None -class NetgearDeviceScanner(object): +class NetgearDeviceScanner(DeviceScanner): """Queries a Netgear wireless router using the SOAP-API.""" def __init__(self, host, username, password, port): diff --git a/homeassistant/components/device_tracker/nmap_tracker.py b/homeassistant/components/device_tracker/nmap_tracker.py index 404492e35cf..182826a1f62 100644 --- a/homeassistant/components/device_tracker/nmap_tracker.py +++ b/homeassistant/components/device_tracker/nmap_tracker.py @@ -14,7 +14,8 @@ import voluptuous as vol import homeassistant.helpers.config_validation as cv import homeassistant.util.dt as dt_util -from homeassistant.components.device_tracker import DOMAIN, PLATFORM_SCHEMA +from homeassistant.components.device_tracker import ( + DOMAIN, PLATFORM_SCHEMA, DeviceScanner) from homeassistant.const import CONF_HOSTS from homeassistant.util import Throttle @@ -63,7 +64,7 @@ def _arp(ip_address): return None -class NmapDeviceScanner(object): +class NmapDeviceScanner(DeviceScanner): """This class scans for devices using nmap.""" exclude = [] diff --git a/homeassistant/components/device_tracker/snmp.py b/homeassistant/components/device_tracker/snmp.py index 39315ebfd7a..43c0662e568 100644 --- a/homeassistant/components/device_tracker/snmp.py +++ b/homeassistant/components/device_tracker/snmp.py @@ -12,7 +12,8 @@ from datetime import timedelta import voluptuous as vol import homeassistant.helpers.config_validation as cv -from homeassistant.components.device_tracker import DOMAIN, PLATFORM_SCHEMA +from homeassistant.components.device_tracker import ( + DOMAIN, PLATFORM_SCHEMA, DeviceScanner) from homeassistant.const import CONF_HOST from homeassistant.util import Throttle @@ -46,7 +47,7 @@ def get_scanner(hass, config): return scanner if scanner.success_init else None -class SnmpScanner(object): +class SnmpScanner(DeviceScanner): """Queries any SNMP capable Access Point for connected devices.""" def __init__(self, config): diff --git a/homeassistant/components/device_tracker/swisscom.py b/homeassistant/components/device_tracker/swisscom.py index 7966fe3ea6a..530e39d3e57 100644 --- a/homeassistant/components/device_tracker/swisscom.py +++ b/homeassistant/components/device_tracker/swisscom.py @@ -12,7 +12,8 @@ import requests import voluptuous as vol import homeassistant.helpers.config_validation as cv -from homeassistant.components.device_tracker import DOMAIN, PLATFORM_SCHEMA +from homeassistant.components.device_tracker import ( + DOMAIN, PLATFORM_SCHEMA, DeviceScanner) from homeassistant.const import CONF_HOST from homeassistant.util import Throttle @@ -35,7 +36,7 @@ def get_scanner(hass, config): return scanner if scanner.success_init else None -class SwisscomDeviceScanner(object): +class SwisscomDeviceScanner(DeviceScanner): """This class queries a router running Swisscom Internet-Box firmware.""" def __init__(self, config): diff --git a/homeassistant/components/device_tracker/thomson.py b/homeassistant/components/device_tracker/thomson.py index cf8f808f82a..e9ab4e347eb 100644 --- a/homeassistant/components/device_tracker/thomson.py +++ b/homeassistant/components/device_tracker/thomson.py @@ -13,7 +13,8 @@ from datetime import timedelta import voluptuous as vol import homeassistant.helpers.config_validation as cv -from homeassistant.components.device_tracker import DOMAIN, PLATFORM_SCHEMA +from homeassistant.components.device_tracker import ( + DOMAIN, PLATFORM_SCHEMA, DeviceScanner) from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME from homeassistant.util import Throttle @@ -46,7 +47,7 @@ def get_scanner(hass, config): return scanner if scanner.success_init else None -class ThomsonDeviceScanner(object): +class ThomsonDeviceScanner(DeviceScanner): """This class queries a router running THOMSON firmware.""" def __init__(self, config): diff --git a/homeassistant/components/device_tracker/tomato.py b/homeassistant/components/device_tracker/tomato.py index f463c5a809d..3f01600259b 100644 --- a/homeassistant/components/device_tracker/tomato.py +++ b/homeassistant/components/device_tracker/tomato.py @@ -14,7 +14,8 @@ import requests import voluptuous as vol import homeassistant.helpers.config_validation as cv -from homeassistant.components.device_tracker import DOMAIN, PLATFORM_SCHEMA +from homeassistant.components.device_tracker import ( + DOMAIN, PLATFORM_SCHEMA, DeviceScanner) from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME from homeassistant.util import Throttle @@ -38,7 +39,7 @@ def get_scanner(hass, config): return TomatoDeviceScanner(config[DOMAIN]) -class TomatoDeviceScanner(object): +class TomatoDeviceScanner(DeviceScanner): """This class queries a wireless router running Tomato firmware.""" def __init__(self, config): diff --git a/homeassistant/components/device_tracker/tplink.py b/homeassistant/components/device_tracker/tplink.py index 3e691a7149d..8d476136d23 100755 --- a/homeassistant/components/device_tracker/tplink.py +++ b/homeassistant/components/device_tracker/tplink.py @@ -15,7 +15,8 @@ import requests import voluptuous as vol import homeassistant.helpers.config_validation as cv -from homeassistant.components.device_tracker import DOMAIN, PLATFORM_SCHEMA +from homeassistant.components.device_tracker import ( + DOMAIN, PLATFORM_SCHEMA, DeviceScanner) from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME from homeassistant.util import Throttle @@ -42,7 +43,7 @@ def get_scanner(hass, config): return None -class TplinkDeviceScanner(object): +class TplinkDeviceScanner(DeviceScanner): """This class queries a wireless router running TP-Link firmware.""" def __init__(self, config): diff --git a/homeassistant/components/device_tracker/ubus.py b/homeassistant/components/device_tracker/ubus.py index 9d9b8e718d6..083e1599d11 100644 --- a/homeassistant/components/device_tracker/ubus.py +++ b/homeassistant/components/device_tracker/ubus.py @@ -14,7 +14,8 @@ import requests import voluptuous as vol import homeassistant.helpers.config_validation as cv -from homeassistant.components.device_tracker import DOMAIN, PLATFORM_SCHEMA +from homeassistant.components.device_tracker import ( + DOMAIN, PLATFORM_SCHEMA, DeviceScanner) from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME from homeassistant.util import Throttle @@ -37,7 +38,7 @@ def get_scanner(hass, config): return scanner if scanner.success_init else None -class UbusDeviceScanner(object): +class UbusDeviceScanner(DeviceScanner): """ This class queries a wireless router running OpenWrt firmware. diff --git a/homeassistant/components/device_tracker/unifi.py b/homeassistant/components/device_tracker/unifi.py index ab84eb22e04..fa6668638f5 100644 --- a/homeassistant/components/device_tracker/unifi.py +++ b/homeassistant/components/device_tracker/unifi.py @@ -10,7 +10,8 @@ import voluptuous as vol import homeassistant.helpers.config_validation as cv import homeassistant.loader as loader -from homeassistant.components.device_tracker import DOMAIN, PLATFORM_SCHEMA +from homeassistant.components.device_tracker import ( + DOMAIN, PLATFORM_SCHEMA, DeviceScanner) from homeassistant.const import CONF_HOST, CONF_USERNAME, CONF_PASSWORD # Unifi package doesn't list urllib3 as a requirement @@ -59,7 +60,7 @@ def get_scanner(hass, config): return UnifiScanner(ctrl) -class UnifiScanner(object): +class UnifiScanner(DeviceScanner): """Provide device_tracker support from Unifi WAP client data.""" def __init__(self, controller): diff --git a/homeassistant/components/device_tracker/volvooncall.py b/homeassistant/components/device_tracker/volvooncall.py index 36e0d96cdf1..a7dba230831 100644 --- a/homeassistant/components/device_tracker/volvooncall.py +++ b/homeassistant/components/device_tracker/volvooncall.py @@ -14,12 +14,9 @@ from homeassistant.helpers.event import track_point_in_utc_time from homeassistant.util.dt import utcnow from homeassistant.util import slugify from homeassistant.const import ( - CONF_PASSWORD, - CONF_SCAN_INTERVAL, - CONF_USERNAME) + CONF_PASSWORD, CONF_SCAN_INTERVAL, CONF_USERNAME) from homeassistant.components.device_tracker import ( - DEFAULT_SCAN_INTERVAL, - PLATFORM_SCHEMA) + DEFAULT_SCAN_INTERVAL, PLATFORM_SCHEMA) MIN_TIME_BETWEEN_SCANS = timedelta(minutes=1) diff --git a/tests/components/device_tracker/test_init.py b/tests/components/device_tracker/test_init.py index 555efd97ed5..ffcb1e8acd6 100644 --- a/tests/components/device_tracker/test_init.py +++ b/tests/components/device_tracker/test_init.py @@ -315,7 +315,8 @@ class TestComponentsDeviceTracker(unittest.TestCase): scanner = get_component('device_tracker.test').SCANNER with patch.dict(device_tracker.DISCOVERY_PLATFORMS, {'test': 'test'}): - with patch.object(scanner, 'scan_devices') as mock_scan: + with patch.object(scanner, 'scan_devices', + autospec=True) as mock_scan: with assert_setup_component(1, device_tracker.DOMAIN): assert setup_component( self.hass, device_tracker.DOMAIN, TEST_PLATFORM) diff --git a/tests/testing_config/custom_components/device_tracker/test.py b/tests/testing_config/custom_components/device_tracker/test.py index 70ec0c4cef9..6f4314b767d 100644 --- a/tests/testing_config/custom_components/device_tracker/test.py +++ b/tests/testing_config/custom_components/device_tracker/test.py @@ -1,12 +1,14 @@ """Provide a mock device scanner.""" +from homeassistant.components.device_tracker import DeviceScanner + def get_scanner(hass, config): """Return a mock scanner.""" return SCANNER -class MockScanner(object): +class MockScanner(DeviceScanner): """Mock device scanner.""" def __init__(self): From c864ea60c9829d38d8bc75181d532174205804e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Arnauts?= Date: Mon, 2 Jan 2017 22:04:09 +0100 Subject: [PATCH 062/189] Improve development workflow in docker (#5079) * Allow bower install of frontend components as root. Needed for frontend development in docker since everything runs as root in the docker image. * Improve development workflow in docker * Use LANG=C.UTF-8 in tox. Fixes installation of libraries with UTF-8 in it's readme. * Install mysqlclient psycopg2 uvloop after requirements_all.txt again, but with a --no-cache-dir this time. Allows bootstrap_frontend to be executed in a different path like the other scripts. --- Dockerfile | 2 +- script/bootstrap | 6 +-- script/bootstrap_frontend | 16 +++++++- script/bootstrap_server | 6 +++ script/build_frontend | 20 +++++++--- script/build_python_openzwave | 8 +++- script/dev_docker | 8 +++- script/dev_openzwave_docker | 4 +- script/fingerprint_frontend.py | 2 +- script/lint | 4 +- script/lint_docker | 7 +++- script/release | 6 ++- script/server | 6 +-- script/setup | 8 +++- script/test | 4 +- script/test_docker | 9 +++-- script/update | 5 ++- script/update_mdi.py | 2 +- tox.ini | 2 +- virtualization/Docker/Dockerfile.dev | 56 +++++++++++++++++++++++++++ virtualization/Docker/Dockerfile.test | 32 --------------- 21 files changed, 142 insertions(+), 71 deletions(-) create mode 100644 virtualization/Docker/Dockerfile.dev delete mode 100644 virtualization/Docker/Dockerfile.test diff --git a/Dockerfile b/Dockerfile index 634edb8af59..1141149d9fd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -23,7 +23,7 @@ RUN script/build_python_openzwave && \ COPY requirements_all.txt requirements_all.txt RUN pip3 install --no-cache-dir -r requirements_all.txt && \ - pip3 install mysqlclient psycopg2 uvloop + pip3 install --no-cache-dir mysqlclient psycopg2 uvloop # Copy source COPY . . diff --git a/script/bootstrap b/script/bootstrap index f4cb6753fe8..4e77ba60ed5 100755 --- a/script/bootstrap +++ b/script/bootstrap @@ -1,9 +1,9 @@ #!/bin/sh +# Resolve all dependencies that the application requires to run. -# script/bootstrap: Resolve all dependencies that the application requires to -# run. +# Stop on errors +set -e cd "$(dirname "$0")/.." - script/bootstrap_server script/bootstrap_frontend diff --git a/script/bootstrap_frontend b/script/bootstrap_frontend index 7062ecf3db5..296f56c8f88 100755 --- a/script/bootstrap_frontend +++ b/script/bootstrap_frontend @@ -1,7 +1,21 @@ +#!/bin/sh +# Resolve all frontend dependencies that the application requires to run. + +# Stop on errors +set -e + +cd "$(dirname "$0")/.." + echo "Bootstrapping frontend..." + git submodule update cd homeassistant/components/frontend/www_static/home-assistant-polymer + +# Install node modules npm install -./node_modules/.bin/bower install + +# Install bower web components. Allow to download the components as root since the user in docker is root. +./node_modules/.bin/bower install --allow-root + npm run setup_js_dev cd ../../../../.. diff --git a/script/bootstrap_server b/script/bootstrap_server index f71abda0e65..ccb7d1a8464 100755 --- a/script/bootstrap_server +++ b/script/bootstrap_server @@ -1,3 +1,9 @@ +#!/bin/sh +# Resolve all server dependencies that the application requires to run. + +# Stop on errors +set -e + cd "$(dirname "$0")/.." echo "Installing dependencies..." diff --git a/script/build_frontend b/script/build_frontend index a00f89f1eea..0cb976d4fa5 100755 --- a/script/build_frontend +++ b/script/build_frontend @@ -1,22 +1,30 @@ +#!/bin/sh # Builds the frontend for production +# Stop on errors +set -e + cd "$(dirname "$0")/.." -cd homeassistant/components/frontend/www_static -rm -rf core.js* frontend.html* webcomponents-lite.min.js* panels -cd home-assistant-polymer +# Clean up +rm -rf homeassistant/components/frontend/www_static/core.js* \ + homeassistant/components/frontend/www_static/frontend.html* \ + homeassistant/components/frontend/www_static/webcomponents-lite.min.js* \ + homeassistant/components/frontend/www_static/panels +cd homeassistant/components/frontend/www_static/home-assistant-polymer npm run clean -npm run frontend_prod +# Build frontend +npm run frontend_prod cp bower_components/webcomponentsjs/webcomponents-lite.min.js .. cp -r build/* .. BUILD_DEV=0 node script/gen-service-worker.js cp build/service_worker.js .. - cd .. +# Pack frontend gzip -f -k -9 *.html *.js ./panels/*.html +cd ../../../.. # Generate the MD5 hash of the new frontend -cd ../../../.. script/fingerprint_frontend.py diff --git a/script/build_python_openzwave b/script/build_python_openzwave index d4e3e07b769..db82fe08d8b 100755 --- a/script/build_python_openzwave +++ b/script/build_python_openzwave @@ -1,7 +1,11 @@ -# Sets up and builds python open zwave to be used with Home Assistant +#!/bin/sh +# Sets up and builds python open zwave to be used with Home Assistant. # Dependencies that need to be installed: # apt-get install cython3 libudev-dev python3-sphinx python3-setuptools +# Stop on errors +set -e + cd "$(dirname "$0")/.." if [ ! -d build ]; then @@ -15,7 +19,7 @@ if [ -d python-openzwave ]; then git pull --recurse-submodules=yes git submodule update --init --recursive else - git clone --recursive --depth 1 https://github.com/OpenZWave/python-openzwave.git + git clone --branch python3 --recursive --depth 1 https://github.com/OpenZWave/python-openzwave.git cd python-openzwave fi diff --git a/script/dev_docker b/script/dev_docker index b63afaa36da..73c4ee60d0a 100755 --- a/script/dev_docker +++ b/script/dev_docker @@ -1,11 +1,15 @@ -# Build and run Home Assinstant in Docker +#!/bin/sh +# Build and run Home Assinstant in Docker. # Optional: pass in a timezone as first argument # If not given will attempt to mount /etc/localtime +# Stop on errors +set -e + cd "$(dirname "$0")/.." -docker build -t home-assistant-dev . +docker build -t home-assistant-dev -f virtualization/Docker/Dockerfile.dev . if [ $# -gt 0 ] then diff --git a/script/dev_openzwave_docker b/script/dev_openzwave_docker index 387c38ef6da..7304995f3e1 100755 --- a/script/dev_openzwave_docker +++ b/script/dev_openzwave_docker @@ -1,5 +1,5 @@ -# Open a docker that can be used to debug/dev python-openzwave -# Pass in a command line argument to build +#!/bin/sh +# Open a docker that can be used to debug/dev python-openzwave. Pass in a command line argument to build cd "$(dirname "$0")/.." diff --git a/script/fingerprint_frontend.py b/script/fingerprint_frontend.py index e04f3eefe6a..23b959cdc37 100755 --- a/script/fingerprint_frontend.py +++ b/script/fingerprint_frontend.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 - """Generate a file with all md5 hashes of the assets.""" + from collections import OrderedDict import glob import hashlib diff --git a/script/lint b/script/lint index d607aa87bb6..624ff0e5093 100755 --- a/script/lint +++ b/script/lint @@ -1,7 +1,5 @@ #!/bin/sh -# -# NOTE: all testing is now driven through tox. The tox command below -# performs roughly what this test did in the past. +# Execute lint to spot code mistakes. if [ "$1" = "--changed" ]; then export files="`git diff upstream/dev --name-only | grep -e '\.py$'`" diff --git a/script/lint_docker b/script/lint_docker index 61f4e4be96a..dca877d49ff 100755 --- a/script/lint_docker +++ b/script/lint_docker @@ -1,5 +1,8 @@ -#!/bin/bash +#!/bin/sh +# Execute lint in a docker container to spot code mistakes. + +# Stop on errors set -e -docker build -t home-assistant-test -f virtualization/Docker/Dockerfile.test . +docker build -t home-assistant-test -f virtualization/Docker/Dockerfile.dev . docker run --rm -it home-assistant-test tox -e lint diff --git a/script/release b/script/release index 43af9b92cb1..3bcddcfef76 100755 --- a/script/release +++ b/script/release @@ -1,4 +1,8 @@ -# Pushes a new version to PyPi +#!/bin/sh +# Pushes a new version to PyPi. + +# Stop on errors +set -e cd "$(dirname "$0")/.." diff --git a/script/server b/script/server index 0904bfd728e..4d246c8be44 100755 --- a/script/server +++ b/script/server @@ -1,8 +1,8 @@ #!/bin/sh +# Launch the application and any extra required processes locally. -# script/server: Launch the application and any extra required processes -# locally. +# Stop on errors +set -e cd "$(dirname "$0")/.." - python3 -m homeassistant -c config diff --git a/script/setup b/script/setup index 443dee7889f..3dbfc1d2c97 100755 --- a/script/setup +++ b/script/setup @@ -1,6 +1,10 @@ -#!/usr/bin/env sh -cd "$(dirname "$0")/.." +#!/bin/sh +# Setups the repository. +# Stop on errors +set -e + +cd "$(dirname "$0")/.." git submodule init script/bootstrap python3 setup.py develop diff --git a/script/test b/script/test index dac5c43d2de..7aca00421b3 100755 --- a/script/test +++ b/script/test @@ -1,6 +1,4 @@ #!/bin/sh -# -# NOTE: all testing is now driven through tox. The tox command below -# performs roughly what this test did in the past. +# Excutes the tests with tox. tox -e py34 diff --git a/script/test_docker b/script/test_docker index ab2296cf5fc..78b4247857b 100755 --- a/script/test_docker +++ b/script/test_docker @@ -1,5 +1,8 @@ -#!/bin/bash +#!/bin/sh +# Excutes the tests with tox in a docker container. + +# Stop on errors set -e -docker build -t home-assistant-test -f virtualization/Docker/Dockerfile.test . -docker run --rm -it home-assistant-test tox -e py34 +docker build -t home-assistant-test -f virtualization/Docker/Dockerfile.dev . +docker run --rm -it home-assistant-test tox -e py35 diff --git a/script/update b/script/update index 9f8b2530a7e..7866cd7a18d 100755 --- a/script/update +++ b/script/update @@ -1,8 +1,9 @@ #!/bin/sh +# Update application to run for its current checkout. -# script/update: Update application to run for its current checkout. +# Stop on errors +set -e cd "$(dirname "$0")/.." - git pull git submodule update diff --git a/script/update_mdi.py b/script/update_mdi.py index af9ee26c949..f9a0a8aca9f 100755 --- a/script/update_mdi.py +++ b/script/update_mdi.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 - """Download the latest Polymer v1 iconset for materialdesignicons.com.""" + import gzip import os import re diff --git a/tox.ini b/tox.ini index 1cf402468b5..a5f6ea45f53 100644 --- a/tox.ini +++ b/tox.ini @@ -8,7 +8,7 @@ setenv = ; which get read in from setup.py. If we don't force our locale to a ; utf8 one, tox's env is reset. And the install of these 2 packages ; fail. - LANG=en_US.UTF-8 + LANG=C.UTF-8 PYTHONPATH = {toxinidir}:{toxinidir}/homeassistant commands = py.test --timeout=30 --duration=10 --cov --cov-report= {posargs} diff --git a/virtualization/Docker/Dockerfile.dev b/virtualization/Docker/Dockerfile.dev new file mode 100644 index 00000000000..3b5eb493f82 --- /dev/null +++ b/virtualization/Docker/Dockerfile.dev @@ -0,0 +1,56 @@ +# Dockerfile for development +# Based on the production Dockerfile, but with development additions. +# Keep this file as close as possible to the production Dockerfile, so the environments match. + +FROM python:3.5 +MAINTAINER Paulus Schoutsen + +VOLUME /config + +RUN mkdir -p /usr/src/app +WORKDIR /usr/src/app + +RUN pip3 install --no-cache-dir colorlog cython + +# For the nmap tracker, bluetooth tracker, Z-Wave, tellstick +RUN echo "deb http://download.telldus.com/debian/ stable main" >> /etc/apt/sources.list.d/telldus.list && \ + wget -qO - http://download.telldus.se/debian/telldus-public.key | apt-key add - && \ + apt-get update && \ + apt-get install -y --no-install-recommends nmap net-tools cython3 libudev-dev sudo libglib2.0-dev bluetooth libbluetooth-dev \ + libtelldus-core2 && \ + apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + +COPY script/build_python_openzwave script/build_python_openzwave +RUN script/build_python_openzwave && \ + mkdir -p /usr/local/share/python-openzwave && \ + ln -sf /usr/src/app/build/python-openzwave/openzwave/config /usr/local/share/python-openzwave/config + +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 + +# BEGIN: Development additions + +# Install nodejs +RUN curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash - && \ + apt-get install -y nodejs + +# Install tox +RUN pip3 install --no-cache-dir tox + +# Copy over everything required to run tox +COPY requirements_test.txt . +COPY setup.cfg . +COPY setup.py . +COPY tox.ini . +COPY homeassistant/const.py homeassistant/const.py + +# Get all dependencies +RUN tox -e py35 --notest + +# END: Development additions + +# Copy source +COPY . . + +CMD [ "python", "-m", "homeassistant", "--config", "/config" ] diff --git a/virtualization/Docker/Dockerfile.test b/virtualization/Docker/Dockerfile.test deleted file mode 100644 index 651f19e4720..00000000000 --- a/virtualization/Docker/Dockerfile.test +++ /dev/null @@ -1,32 +0,0 @@ -FROM python:3.4 -MAINTAINER Paulus Schoutsen - -VOLUME /config - -RUN mkdir -p /usr/src/app -WORKDIR /usr/src/app - -RUN pip3 install --no-cache-dir colorlog cython - -# For the nmap tracker, bluetooth tracker, Z-Wave -RUN apt-get update && \ - apt-get install -y --no-install-recommends nmap net-tools cython3 libudev-dev sudo libglib2.0-dev locales-all bluetooth libbluetooth-dev && \ - apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* - -RUN pip3 install --no-cache-dir tox - -# Copy over everything required to run tox -COPY requirements_all.txt requirements_all.txt -COPY requirements_test.txt requirements_test.txt -COPY setup.cfg setup.cfg -COPY setup.py setup.py -COPY tox.ini tox.ini -COPY homeassistant/const.py homeassistant/const.py - -# Get deps -RUN tox --notest - -# Copy source and run tests -COPY . . - -CMD [ "tox" ] From 328ff6027b4468d2e86894ab10bfef3d7cdd6b0d Mon Sep 17 00:00:00 2001 From: Zac-HD Date: Tue, 3 Jan 2017 14:26:24 +1100 Subject: [PATCH 063/189] Fix link to pull request advice for contributors --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a63c1400723..9a3238e665d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -4,7 +4,7 @@ Everybody is invited and welcome to contribute to Home Assistant. There is a lot The process is straight-forward. - - Read [How to get faster PR reviews](https://github.com/kubernetes/kubernetes/blob/master/docs/devel/faster_reviews.md) by Kubernetes (but skip step 0) + - Read [How to get faster PR reviews](https://github.com/kubernetes/community/blob/master/contributors/devel/faster_reviews.md) by Kubernetes (but skip step 0) - Fork the Home Assistant [git repository](https://github.com/home-assistant/home-assistant). - Write the code for your device, notification service, sensor, or IoT thing. - Ensure tests work. From f71027a9c70164a3d56134d6eaa95ebf9578d586 Mon Sep 17 00:00:00 2001 From: Dan Smith Date: Mon, 2 Jan 2017 23:19:33 -0800 Subject: [PATCH 064/189] Nx584 maint (#5149) * Update nx584 requirement to 0.4 There have been a few bug fixes to nx584 since 0.2, so this just updates our requirement to pull in the newer version. * Fix nx584 if no partitions are found If we succeed in our connection to the panel but find no configured partitions, then we will fall through to the bypass probe and fail because 'zones' is never initialized. This fixes both exception paths and adds a test that would poke it. --- homeassistant/components/alarm_control_panel/nx584.py | 4 +++- homeassistant/components/binary_sensor/nx584.py | 2 +- requirements_all.txt | 2 +- tests/components/binary_sensor/test_nx584.py | 6 ++++++ 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/alarm_control_panel/nx584.py b/homeassistant/components/alarm_control_panel/nx584.py index 58ec8d915ab..b7b3beec72d 100644 --- a/homeassistant/components/alarm_control_panel/nx584.py +++ b/homeassistant/components/alarm_control_panel/nx584.py @@ -16,7 +16,7 @@ from homeassistant.const import ( STATE_UNKNOWN, CONF_NAME, CONF_HOST, CONF_PORT) import homeassistant.helpers.config_validation as cv -REQUIREMENTS = ['pynx584==0.2'] +REQUIREMENTS = ['pynx584==0.4'] _LOGGER = logging.getLogger(__name__) @@ -86,9 +86,11 @@ class NX584Alarm(alarm.AlarmControlPanel): _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') self._state = STATE_UNKNOWN + zones = [] bypassed = False for zone in zones: diff --git a/homeassistant/components/binary_sensor/nx584.py b/homeassistant/components/binary_sensor/nx584.py index b21e40dc5dd..ad7612d11a6 100644 --- a/homeassistant/components/binary_sensor/nx584.py +++ b/homeassistant/components/binary_sensor/nx584.py @@ -16,7 +16,7 @@ from homeassistant.components.binary_sensor import ( from homeassistant.const import (CONF_HOST, CONF_PORT) import homeassistant.helpers.config_validation as cv -REQUIREMENTS = ['pynx584==0.2'] +REQUIREMENTS = ['pynx584==0.4'] _LOGGER = logging.getLogger(__name__) diff --git a/requirements_all.txt b/requirements_all.txt index cb04ecbab75..79cfbb5c588 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -442,7 +442,7 @@ pynut2==2.1.2 # homeassistant.components.alarm_control_panel.nx584 # homeassistant.components.binary_sensor.nx584 -pynx584==0.2 +pynx584==0.4 # homeassistant.components.sensor.openweathermap # homeassistant.components.weather.openweathermap diff --git a/tests/components/binary_sensor/test_nx584.py b/tests/components/binary_sensor/test_nx584.py index 5481bbc9198..ef8861e12ce 100644 --- a/tests/components/binary_sensor/test_nx584.py +++ b/tests/components/binary_sensor/test_nx584.py @@ -106,6 +106,12 @@ class TestNX584SensorSetup(unittest.TestCase): requests.exceptions.ConnectionError self._test_assert_graceful_fail({}) + def test_setup_no_partitions(self): + """Test the setup with connection failure.""" + nx584_client.Client.return_value.list_zones.side_effect = \ + IndexError + self._test_assert_graceful_fail({}) + def test_setup_version_too_old(self): """"Test if version is too old.""" nx584_client.Client.return_value.get_version.return_value = '1.0' From 52f6fe3e0638691e910b668a1eaf6d6c80b48eec Mon Sep 17 00:00:00 2001 From: Brandon Weeks Date: Tue, 3 Jan 2017 08:47:33 -0800 Subject: [PATCH 065/189] Add version test for monkey_patch_asyncio() (#5127) * Add version test for monkey_patch_asyncio() * Update __main__.py --- homeassistant/__main__.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/homeassistant/__main__.py b/homeassistant/__main__.py index 510b98b6bdd..d9ab410b745 100644 --- a/homeassistant/__main__.py +++ b/homeassistant/__main__.py @@ -356,7 +356,8 @@ def try_to_restart() -> None: def main() -> int: """Start Home Assistant.""" - monkey_patch_asyncio() + if sys.version_info[:3] < (3, 5, 3): + monkey_patch_asyncio() validate_python() From a0a9f26312f94eb06c794244dd68a0204b33447a Mon Sep 17 00:00:00 2001 From: andrey-git Date: Tue, 3 Jan 2017 21:31:44 +0200 Subject: [PATCH 066/189] Keep previous brightness of dimming zwave light upon turning it on/off (#5160) * Keep previous brightness of dimming zwave light upon turning it on/off * Fix initialization * Use value 255 to set dimmer to previous value --- homeassistant/components/light/zwave.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/homeassistant/components/light/zwave.py b/homeassistant/components/light/zwave.py index 30fa0611e45..d973f8d8dd2 100644 --- a/homeassistant/components/light/zwave.py +++ b/homeassistant/components/light/zwave.py @@ -79,7 +79,7 @@ def brightness_state(value): if value.data > 0: return (value.data / 99) * 255, STATE_ON else: - return 255, STATE_OFF + return 0, STATE_OFF class ZwaveDimmer(zwave.ZWaveDeviceEntity, Light): @@ -165,12 +165,13 @@ class ZwaveDimmer(zwave.ZWaveDeviceEntity, Light): def turn_on(self, **kwargs): """Turn the device on.""" + # Zwave multilevel switches use a range of [0, 99] to control + # brightness. Level 255 means to set it to previous value. if ATTR_BRIGHTNESS in kwargs: self._brightness = kwargs[ATTR_BRIGHTNESS] - - # Zwave multilevel switches use a range of [0, 99] to control - # brightness. - brightness = int((self._brightness / 255) * 99) + brightness = int((self._brightness / 255) * 99) + else: + brightness = 255 if self._value.node.set_dimmer(self._value.value_id, brightness): self._state = STATE_ON From 6ec500f2e7232ad1001e6e3b067fdde3d5ac7bdc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20H=C3=B8yer=20Iversen?= Date: Tue, 3 Jan 2017 21:13:02 +0100 Subject: [PATCH 067/189] issue #5101 (#5161) --- homeassistant/components/media_player/vlc.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/media_player/vlc.py b/homeassistant/components/media_player/vlc.py index ee4fef3cfde..da6e9a696b9 100644 --- a/homeassistant/components/media_player/vlc.py +++ b/homeassistant/components/media_player/vlc.py @@ -62,8 +62,10 @@ class VlcDevice(MediaPlayerDevice): else: self._state = STATE_IDLE self._media_duration = self._vlc.get_length()/1000 - self._media_position = self._vlc.get_position() * self._media_duration - self._media_position_updated_at = dt_util.utcnow() + position = self._vlc.get_position() * self._media_duration + if position != self._media_position: + self._media_position_updated_at = dt_util.utcnow() + self._media_position = position self._volume = self._vlc.audio_get_volume() / 100 self._muted = (self._vlc.audio_get_mute() == 1) From fdd3fa7d80762c3e01cdffd20b0a0ec72fbbe0ab Mon Sep 17 00:00:00 2001 From: eieste Date: Tue, 3 Jan 2017 21:32:40 +0100 Subject: [PATCH 068/189] Apple TouchBar icon Support (mask-icon) (#5159) * Update index.html Add Apple TouchBar icon Color Support * Add svg icon * Change path to SVG icon * Rename mask-icon.svg to home-assistant-icon.svg * Remove useless whitespace * Update index.html --- .../components/frontend/templates/index.html | 1 + .../www_static/icons/home-assistant-icon.svg | 2814 +++++++++++++++++ 2 files changed, 2815 insertions(+) create mode 100644 homeassistant/components/frontend/www_static/icons/home-assistant-icon.svg diff --git a/homeassistant/components/frontend/templates/index.html b/homeassistant/components/frontend/templates/index.html index afa9ca68af9..a13d640a579 100644 --- a/homeassistant/components/frontend/templates/index.html +++ b/homeassistant/components/frontend/templates/index.html @@ -8,6 +8,7 @@ + {% for panel in panels.values() -%} {% endfor -%} diff --git a/homeassistant/components/frontend/www_static/icons/home-assistant-icon.svg b/homeassistant/components/frontend/www_static/icons/home-assistant-icon.svg new file mode 100644 index 00000000000..1ff4c190f59 --- /dev/null +++ b/homeassistant/components/frontend/www_static/icons/home-assistant-icon.svg @@ -0,0 +1,2814 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 9eed03108f6aa4ae19cf07f879727969654b1b1a Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Tue, 3 Jan 2017 21:33:48 +0100 Subject: [PATCH 069/189] Run tests on Python 3.6 (#5162) * Run tests on Python 3.6 * Fix dsmr test * Fix async util tests * Fix rest sensor test --- .travis.yml | 2 ++ tests/components/sensor/test_dsmr.py | 5 +++-- tests/components/sensor/test_rest.py | 2 +- tests/util/test_async.py | 1 + tox.ini | 2 +- 5 files changed, 8 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 9cf13f2c831..f4c696a2236 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,6 +12,8 @@ matrix: env: TOXENV=typing - python: "3.5" env: TOXENV=py35 + - python: "3.6" + env: TOXENV=py36 allow_failures: - python: "3.5" env: TOXENV=typing diff --git a/tests/components/sensor/test_dsmr.py b/tests/components/sensor/test_dsmr.py index e76b26a811b..35e224253ee 100644 --- a/tests/components/sensor/test_dsmr.py +++ b/tests/components/sensor/test_dsmr.py @@ -11,7 +11,7 @@ from unittest.mock import Mock from homeassistant.bootstrap import async_setup_component from homeassistant.components.sensor.dsmr import DerivativeDSMREntity from homeassistant.const import STATE_UNKNOWN -from tests.common import assert_setup_component +from tests.common import assert_setup_component, mock_coro @asyncio.coroutine @@ -35,7 +35,7 @@ def test_default_setup(hass, monkeypatch): } # mock for injecting DSMR telegram - dsmr = Mock(return_value=Mock()) + dsmr = Mock(return_value=mock_coro([Mock(), None])) monkeypatch.setattr('dsmr_parser.protocol.create_dsmr_reader', dsmr) with assert_setup_component(1): @@ -66,6 +66,7 @@ def test_default_setup(hass, monkeypatch): assert power_tariff.attributes.get('unit_of_measurement') is None +@asyncio.coroutine def test_derivative(): """Test calculation of derivative value.""" from dsmr_parser.objects import MBusObject diff --git a/tests/components/sensor/test_rest.py b/tests/components/sensor/test_rest.py index ab5a255c885..4abfb2d4551 100644 --- a/tests/components/sensor/test_rest.py +++ b/tests/components/sensor/test_rest.py @@ -200,7 +200,7 @@ class TestRestData(unittest.TestCase): self.rest.update() self.assertEqual('test data', self.rest.data) - @patch('requests.get', side_effect=RequestException) + @patch('requests.Session', side_effect=RequestException) def test_update_request_exception(self, mock_req): """Test update when a request exception occurs.""" self.rest.update() diff --git a/tests/util/test_async.py b/tests/util/test_async.py index a3da7e7f4e1..1d6e669e1d6 100644 --- a/tests/util/test_async.py +++ b/tests/util/test_async.py @@ -87,6 +87,7 @@ class RunCoroutineThreadsafeTests(test_utils.TestCase): def setUp(self): """Test setup method.""" + super().setUp() self.loop = asyncio.new_event_loop() self.set_event_loop(self.loop) # Will cleanup properly diff --git a/tox.ini b/tox.ini index a5f6ea45f53..3da1de04bf3 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = py34, py35, lint, requirements, typing +envlist = py34, py35, py36, lint, requirements, typing skip_missing_interpreters = True [testenv] From 254eb4e88a1dbac856638f60da8b49866102770c Mon Sep 17 00:00:00 2001 From: Mike Hennessy Date: Tue, 3 Jan 2017 15:39:42 -0500 Subject: [PATCH 070/189] Change zeroconf to use local ip not base_url (#5151) Rather than rely on base_url being unconfigured and therefore be set as the host ip in the api component, get the local ip directly. Use server port from the http component instead of the api component where it will be None if base_url is set. Change the exception catch meant to check for ipv4 vs ipv6 to wrap the address encoding only instead of the zeroconf service info declaration. --- homeassistant/components/zeroconf.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/homeassistant/components/zeroconf.py b/homeassistant/components/zeroconf.py index ab4a3b497fe..104abd19260 100644 --- a/homeassistant/components/zeroconf.py +++ b/homeassistant/components/zeroconf.py @@ -9,6 +9,7 @@ import socket import voluptuous as vol +from homeassistant import util from homeassistant.const import (EVENT_HOMEASSISTANT_STOP, __version__) _LOGGER = logging.getLogger(__name__) @@ -40,16 +41,15 @@ def setup(hass, config): 'requires_api_password': requires_api_password, } + host_ip = util.get_local_ip() + try: - info = ServiceInfo(ZEROCONF_TYPE, zeroconf_name, - socket.inet_pton( - socket.AF_INET, hass.config.api.host), - hass.config.api.port, 0, 0, params) + host_ip_pton = socket.inet_pton(socket.AF_INET, host_ip) except socket.error: - info = ServiceInfo(ZEROCONF_TYPE, zeroconf_name, - socket.inet_pton( - socket.AF_INET6, hass.config.api.host), - hass.config.api.port, 0, 0, params) + host_ip_pton = socket.inet_pton(socket.AF_INET6, host_ip) + + info = ServiceInfo(ZEROCONF_TYPE, zeroconf_name, host_ip_pton, + hass.http.server_port, 0, 0, params) zeroconf.register_service(info) From 018d786f36986a7a3e47b73628fe923a627e0c85 Mon Sep 17 00:00:00 2001 From: Adam Mills Date: Tue, 3 Jan 2017 15:41:42 -0500 Subject: [PATCH 071/189] Kodi cleanup and config update (#5098) --- homeassistant/components/media_player/kodi.py | 71 ++++++++----------- 1 file changed, 30 insertions(+), 41 deletions(-) diff --git a/homeassistant/components/media_player/kodi.py b/homeassistant/components/media_player/kodi.py index 9676fe451c7..0a88336b5a3 100644 --- a/homeassistant/components/media_player/kodi.py +++ b/homeassistant/components/media_player/kodi.py @@ -43,27 +43,24 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ }) -def setup_platform(hass, config, add_devices, discovery_info=None): +def setup_platform(hass, config, add_entities, discovery_info=None): """Setup the Kodi platform.""" - url = '{}:{}'.format(config.get(CONF_HOST), config.get(CONF_PORT)) + host = config.get(CONF_HOST) + port = config.get(CONF_PORT) - jsonrpc_url = config.get('url') # deprecated - if jsonrpc_url: - url = jsonrpc_url.rstrip('/jsonrpc') + if host.startswith('http://') or host.startswith('https://'): + host = host.lstrip('http://').lstrip('https://') + _LOGGER.warning( + "Kodi host name should no longer conatin http:// See updated " + "definitions here: " + "https://home-assistant.io/components/media_player.kodi/") - username = config.get(CONF_USERNAME) - password = config.get(CONF_PASSWORD) - - if username is not None: - auth = (username, password) - else: - auth = None - - add_devices([ + add_entities([ KodiDevice( config.get(CONF_NAME), - url, - auth=auth, + host=host, port=port, + username=config.get(CONF_USERNAME), + password=config.get(CONF_PASSWORD), turn_off_action=config.get(CONF_TURN_OFF_ACTION)), ]) @@ -71,25 +68,25 @@ def setup_platform(hass, config, add_devices, discovery_info=None): class KodiDevice(MediaPlayerDevice): """Representation of a XBMC/Kodi device.""" - def __init__(self, name, url, auth=None, turn_off_action=None): + def __init__(self, name, host, port, username=None, password=None, + turn_off_action=None): """Initialize the Kodi device.""" import jsonrpc_requests self._name = name - self._url = url - self._basic_auth_url = None kwargs = {'timeout': 5} - if auth is not None: - kwargs['auth'] = auth - scheme, netloc, path, query, fragment = urllib.parse.urlsplit(url) - self._basic_auth_url = \ - urllib.parse.urlunsplit((scheme, '{}:{}@{}'.format - (auth[0], auth[1], netloc), - path, query, fragment)) + if username is not None: + kwargs['auth'] = (username, password) + image_auth_string = "{}:{}@".format(username, password) + else: + image_auth_string = "" - self._server = jsonrpc_requests.Server( - '{}/jsonrpc'.format(self._url), **kwargs) + self._http_url = 'http://{}:{}/jsonrpc'.format(host, port) + self._image_url = 'http://{}{}:{}/image'.format( + image_auth_string, host, port) + + self._server = jsonrpc_requests.Server(self._http_url, **kwargs) self._turn_off_action = turn_off_action self._players = list() @@ -110,7 +107,7 @@ class KodiDevice(MediaPlayerDevice): return self._server.Player.GetActivePlayers() except jsonrpc_requests.jsonrpc.TransportError: if self._players is not None: - _LOGGER.warning('Unable to fetch kodi data') + _LOGGER.info('Unable to fetch kodi data') _LOGGER.debug('Unable to fetch kodi data', exc_info=True) return None @@ -193,21 +190,13 @@ class KodiDevice(MediaPlayerDevice): @property def media_image_url(self): """Image url of current playing media.""" - if self._item is not None: - return self._get_image_url() + if self._item is None: + return None - def _get_image_url(self): - """Helper function that parses the thumbnail URLs used by Kodi.""" url_components = urllib.parse.urlparse(self._item['thumbnail']) - if url_components.scheme == 'image': - if self._basic_auth_url is not None: - return '{}/image/{}'.format( - self._basic_auth_url, - urllib.parse.quote_plus(self._item['thumbnail'])) - - return '{}/image/{}'.format( - self._url, + return '{}/{}'.format( + self._image_url, urllib.parse.quote_plus(self._item['thumbnail'])) @property From 4692ea85b7e53ab21cefc9bfe4b73fc436d5238d Mon Sep 17 00:00:00 2001 From: Johann Kellerman Date: Wed, 4 Jan 2017 00:17:56 +0200 Subject: [PATCH 072/189] [mqtt] Embedded MQTT server fix (#5132) * Embedded MQTT server fix and schema * feedback --- homeassistant/components/mqtt/__init__.py | 29 +++++++------ homeassistant/components/mqtt/server.py | 16 ++++++- tests/components/mqtt/test_init.py | 52 ++++++++++++++--------- 3 files changed, 62 insertions(+), 35 deletions(-) diff --git a/homeassistant/components/mqtt/__init__.py b/homeassistant/components/mqtt/__init__.py index 87c1a783e6e..ad4cce15cf3 100644 --- a/homeassistant/components/mqtt/__init__.py +++ b/homeassistant/components/mqtt/__init__.py @@ -20,6 +20,7 @@ from homeassistant.helpers.event import threaded_listener_factory from homeassistant.const import ( EVENT_HOMEASSISTANT_START, EVENT_HOMEASSISTANT_STOP, CONF_VALUE_TEMPLATE, CONF_USERNAME, CONF_PASSWORD, CONF_PORT, CONF_PROTOCOL, CONF_PAYLOAD) +from homeassistant.components.mqtt.server import HBMQTT_CONFIG_SCHEMA _LOGGER = logging.getLogger(__name__) @@ -80,7 +81,6 @@ def valid_publish_topic(value): _VALID_QOS_SCHEMA = vol.All(vol.Coerce(int), vol.In([0, 1, 2])) -_HBMQTT_CONFIG_SCHEMA = vol.Schema(dict) CLIENT_KEY_AUTH_MSG = 'client_key and client_cert must both be present in ' \ 'the mqtt broker config' @@ -109,7 +109,7 @@ CONFIG_SCHEMA = vol.Schema({ vol.Optional(CONF_TLS_INSECURE): cv.boolean, vol.Optional(CONF_PROTOCOL, default=DEFAULT_PROTOCOL): vol.All(cv.string, vol.In([PROTOCOL_31, PROTOCOL_311])), - vol.Optional(CONF_EMBEDDED): _HBMQTT_CONFIG_SCHEMA, + vol.Optional(CONF_EMBEDDED): HBMQTT_CONFIG_SCHEMA, vol.Optional(CONF_WILL_MESSAGE): MQTT_WILL_BIRTH_SCHEMA, vol.Optional(CONF_BIRTH_MESSAGE): MQTT_WILL_BIRTH_SCHEMA }), @@ -222,18 +222,7 @@ def setup(hass, config): broker_config = _setup_server(hass, config) - broker_in_conf = CONF_BROKER in conf - - # Only auto config if no server config was passed in - if broker_config and CONF_EMBEDDED not in conf: - broker, port, username, password, certificate, protocol = broker_config - # Embedded broker doesn't have some ssl variables - client_key, client_cert, tls_insecure = None, None, None - elif not broker_config and not broker_in_conf: - _LOGGER.error("Unable to start broker and auto-configure MQTT") - return False - - if broker_in_conf: + if CONF_BROKER in conf: broker = conf[CONF_BROKER] port = conf[CONF_PORT] username = conf.get(CONF_USERNAME) @@ -243,6 +232,18 @@ def setup(hass, config): client_cert = conf.get(CONF_CLIENT_CERT) tls_insecure = conf.get(CONF_TLS_INSECURE) protocol = conf[CONF_PROTOCOL] + elif broker_config: + # If no broker passed in, auto config to internal server + broker, port, username, password, certificate, protocol = broker_config + # Embedded broker doesn't have some ssl variables + client_key, client_cert, tls_insecure = None, None, None + else: + err = "Unable to start MQTT broker." + if conf.get(CONF_EMBEDDED) is not None: + # Explicit embedded config, requires explicit broker config + err += " (Broker configuration required.)" + _LOGGER.error(err) + return False # For cloudmqtt.com, secured connection, auto fill in certificate if certificate is None and 19999 < port < 30000 and \ diff --git a/homeassistant/components/mqtt/server.py b/homeassistant/components/mqtt/server.py index 7910477c808..57ad04fd18d 100644 --- a/homeassistant/components/mqtt/server.py +++ b/homeassistant/components/mqtt/server.py @@ -7,14 +7,27 @@ https://home-assistant.io/components/mqtt/#use-the-embedded-broker import logging import tempfile +import voluptuous as vol + from homeassistant.core import callback -from homeassistant.components.mqtt import PROTOCOL_311 from homeassistant.const import EVENT_HOMEASSISTANT_STOP +import homeassistant.helpers.config_validation as cv from homeassistant.util.async import run_coroutine_threadsafe REQUIREMENTS = ['hbmqtt==0.8'] DEPENDENCIES = ['http'] +# None allows custom config to be created through generate_config +HBMQTT_CONFIG_SCHEMA = vol.Any(None, vol.Schema({ + vol.Optional('auth'): vol.Schema({ + vol.Optional('password-file'): cv.isfile, + }, extra=vol.ALLOW_EXTRA), + vol.Optional('listeners'): vol.Schema({ + vol.Required('default'): vol.Schema(dict), + str: vol.Schema(dict) + }) +}, extra=vol.ALLOW_EXTRA)) + def start(hass, server_config): """Initialize MQTT Server.""" @@ -48,6 +61,7 @@ def start(hass, server_config): def generate_config(hass, passwd): """Generate a configuration based on current Home Assistant instance.""" + from homeassistant.components.mqtt import PROTOCOL_311 config = { 'listeners': { 'default': { diff --git a/tests/components/mqtt/test_init.py b/tests/components/mqtt/test_init.py index ff74c070d85..54566a09f59 100644 --- a/tests/components/mqtt/test_init.py +++ b/tests/components/mqtt/test_init.py @@ -17,6 +17,7 @@ from tests.common import ( get_test_home_assistant, mock_mqtt_component, fire_mqtt_message) +# pylint: disable=invalid-name class TestMQTT(unittest.TestCase): """Test the MQTT component.""" @@ -49,27 +50,37 @@ class TestMQTT(unittest.TestCase): self.hass.block_till_done() self.assertTrue(mqtt.MQTT_CLIENT.stop.called) - def test_setup_fails_if_no_connect_broker(self): + @mock.patch('paho.mqtt.client.Client') + def test_setup_fails_if_no_connect_broker(self, _): """Test for setup failure if connection to broker is missing.""" + test_broker_cfg = {mqtt.DOMAIN: {mqtt.CONF_BROKER: 'test-broker'}} + with mock.patch('homeassistant.components.mqtt.MQTT', side_effect=socket.error()): self.hass.config.components = [] - assert not setup_component(self.hass, mqtt.DOMAIN, { - mqtt.DOMAIN: { - mqtt.CONF_BROKER: 'test-broker', - } - }) + assert not setup_component(self.hass, mqtt.DOMAIN, test_broker_cfg) - def test_setup_protocol_validation(self): - """Test for setup failure if connection to broker is missing.""" - with mock.patch('paho.mqtt.client.Client'): + # Ensure if we dont raise it sets up correctly + self.hass.config.components = [] + assert setup_component(self.hass, mqtt.DOMAIN, test_broker_cfg) + + @mock.patch('paho.mqtt.client.Client') + def test_setup_embedded(self, _): + """Test setting up embedded server with no config.""" + client_config = ('localhost', 1883, 'user', 'pass', None, '3.1.1') + + with mock.patch('homeassistant.components.mqtt.server.start', + return_value=(True, client_config)) as _start: self.hass.config.components = [] - assert setup_component(self.hass, mqtt.DOMAIN, { - mqtt.DOMAIN: { - mqtt.CONF_BROKER: 'test-broker', - mqtt.CONF_PROTOCOL: 3.1, - } - }) + assert setup_component(self.hass, mqtt.DOMAIN, + {mqtt.DOMAIN: {}}) + assert _start.call_count == 1 + + # Test with `embedded: None` + self.hass.config.components = [] + assert setup_component(self.hass, mqtt.DOMAIN, + {mqtt.DOMAIN: {'embedded': None}}) + assert _start.call_count == 2 # Another call def test_publish_calls_service(self): """Test the publishing of call to services.""" @@ -81,11 +92,11 @@ class TestMQTT(unittest.TestCase): self.assertEqual(1, len(self.calls)) self.assertEqual( - 'test-topic', - self.calls[0][0].data['service_data'][mqtt.ATTR_TOPIC]) + 'test-topic', + self.calls[0][0].data['service_data'][mqtt.ATTR_TOPIC]) self.assertEqual( - 'test-payload', - self.calls[0][0].data['service_data'][mqtt.ATTR_PAYLOAD]) + 'test-payload', + self.calls[0][0].data['service_data'][mqtt.ATTR_PAYLOAD]) def test_service_call_without_topic_does_not_publish(self): """Test the service call if topic is missing.""" @@ -293,7 +304,8 @@ class TestMQTTCallbacks(unittest.TestCase): 3: 'home/sensor', }, mqtt.MQTT_CLIENT.progress) - def test_mqtt_birth_message_on_connect(self): + def test_mqtt_birth_message_on_connect(self): \ + # pylint: disable=no-self-use """Test birth message on connect.""" mqtt.MQTT_CLIENT._mqtt_on_connect(None, None, 0, 0) mqtt.MQTT_CLIENT._mqttc.publish.assert_called_with('birth', 'birth', 0, From 2970196f61d47497f0f95ca3bf254fb19a749a6c Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Tue, 3 Jan 2017 16:19:28 -0600 Subject: [PATCH 073/189] Add support for limiting which entities are recorded (#4733) --- homeassistant/components/history.py | 8 +--- homeassistant/components/recorder/__init__.py | 44 ++++++++++++++++--- homeassistant/const.py | 4 ++ 3 files changed, 44 insertions(+), 12 deletions(-) diff --git a/homeassistant/components/history.py b/homeassistant/components/history.py index eee0570c9bc..a077ad09ec7 100644 --- a/homeassistant/components/history.py +++ b/homeassistant/components/history.py @@ -10,7 +10,8 @@ from datetime import timedelta from itertools import groupby import voluptuous as vol -from homeassistant.const import HTTP_BAD_REQUEST +from homeassistant.const import ( + HTTP_BAD_REQUEST, CONF_DOMAINS, CONF_ENTITIES, CONF_EXCLUDE, CONF_INCLUDE) import homeassistant.helpers.config_validation as cv import homeassistant.util.dt as dt_util from homeassistant.components import recorder, script @@ -21,11 +22,6 @@ from homeassistant.const import ATTR_HIDDEN DOMAIN = 'history' DEPENDENCIES = ['recorder', 'http'] -CONF_EXCLUDE = 'exclude' -CONF_INCLUDE = 'include' -CONF_ENTITIES = 'entities' -CONF_DOMAINS = 'domains' - CONFIG_SCHEMA = vol.Schema({ DOMAIN: vol.Schema({ CONF_EXCLUDE: vol.Schema({ diff --git a/homeassistant/components/recorder/__init__.py b/homeassistant/components/recorder/__init__.py index 8de8925e093..41a7991c32f 100644 --- a/homeassistant/components/recorder/__init__.py +++ b/homeassistant/components/recorder/__init__.py @@ -12,14 +12,15 @@ import queue import threading import time from datetime import timedelta, datetime -from typing import Any, Union, Optional, List +from typing import Any, Union, Optional, List, Dict import voluptuous as vol from homeassistant.core import HomeAssistant, callback -from homeassistant.const import (EVENT_HOMEASSISTANT_START, - EVENT_HOMEASSISTANT_STOP, EVENT_STATE_CHANGED, - EVENT_TIME_CHANGED, MATCH_ALL) +from homeassistant.const import ( + ATTR_ENTITY_ID, ATTR_DOMAIN, CONF_ENTITIES, CONF_EXCLUDE, CONF_DOMAINS, + CONF_INCLUDE, EVENT_HOMEASSISTANT_START, EVENT_HOMEASSISTANT_STOP, + EVENT_STATE_CHANGED, EVENT_TIME_CHANGED, MATCH_ALL) import homeassistant.helpers.config_validation as cv from homeassistant.helpers.event import track_point_in_utc_time from homeassistant.helpers.typing import ConfigType, QueryType @@ -44,6 +45,16 @@ CONFIG_SCHEMA = vol.Schema({ vol.Optional(CONF_PURGE_DAYS): vol.All(vol.Coerce(int), vol.Range(min=1)), vol.Optional(CONF_DB_URL): cv.string, + 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]) + }) }) }, extra=vol.ALLOW_EXTRA) @@ -110,7 +121,10 @@ def setup(hass: HomeAssistant, config: ConfigType) -> bool: db_url = DEFAULT_URL.format( hass_config_path=hass.config.path(DEFAULT_DB_FILE)) - _INSTANCE = Recorder(hass, purge_days=purge_days, uri=db_url) + include = config.get(DOMAIN, {}).get(CONF_INCLUDE, {}) + exclude = config.get(DOMAIN, {}).get(CONF_EXCLUDE, {}) + _INSTANCE = Recorder(hass, purge_days=purge_days, uri=db_url, + include=include, exclude=exclude) return True @@ -153,7 +167,8 @@ def log_error(e: Exception, retry_wait: Optional[float]=0, class Recorder(threading.Thread): """A threaded recorder class.""" - def __init__(self, hass: HomeAssistant, purge_days: int, uri: str) -> None: + def __init__(self, hass: HomeAssistant, purge_days: int, uri: str, + include: Dict, exclude: Dict) -> None: """Initialize the recorder.""" threading.Thread.__init__(self) @@ -166,6 +181,11 @@ class Recorder(threading.Thread): self.engine = None # type: Any self._run = None # type: Any + self.include = include.get(CONF_ENTITIES, []) + \ + include.get(CONF_DOMAINS, []) + self.exclude = exclude.get(CONF_ENTITIES, []) + \ + exclude.get(CONF_DOMAINS, []) + def start_recording(event): """Start recording.""" self.start() @@ -210,6 +230,18 @@ class Recorder(threading.Thread): self.queue.task_done() continue + entity_id = event.data.get(ATTR_ENTITY_ID) + domain = event.data.get(ATTR_DOMAIN) + + if entity_id in self.exclude or domain in self.exclude: + self.queue.task_done() + continue + + if (self.include and entity_id not in self.include and + domain not in self.include): + self.queue.task_done() + continue + dbevent = Events.from_event(event) self._commit(dbevent) diff --git a/homeassistant/const.py b/homeassistant/const.py index 0789531e9a3..d266a3aae55 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -81,11 +81,14 @@ CONF_DEVICES = 'devices' CONF_DISARM_AFTER_TRIGGER = 'disarm_after_trigger' CONF_DISCOVERY = 'discovery' CONF_DISPLAY_OPTIONS = 'display_options' +CONF_DOMAINS = 'domains' CONF_ELEVATION = 'elevation' CONF_EMAIL = 'email' +CONF_ENTITIES = 'entities' CONF_ENTITY_ID = 'entity_id' CONF_ENTITY_NAMESPACE = 'entity_namespace' CONF_EVENT = 'event' +CONF_EXCLUDE = 'exclude' CONF_FILE_PATH = 'file_path' CONF_FILENAME = 'filename' CONF_FRIENDLY_NAME = 'friendly_name' @@ -93,6 +96,7 @@ CONF_HEADERS = 'headers' CONF_HOST = 'host' CONF_HOSTS = 'hosts' CONF_ICON = 'icon' +CONF_INCLUDE = 'include' CONF_ID = 'id' CONF_LATITUDE = 'latitude' CONF_LONGITUDE = 'longitude' From c14a5fa7c161531ebe7c90d138d6d000725c5a3f Mon Sep 17 00:00:00 2001 From: Brandon Weeks Date: Tue, 3 Jan 2017 14:28:23 -0800 Subject: [PATCH 074/189] Upgrade samsungctl to 0.6.0 (#5126) --- .../components/media_player/samsungtv.py | 22 ++++++++++++++----- requirements_all.txt | 2 +- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/homeassistant/components/media_player/samsungtv.py b/homeassistant/components/media_player/samsungtv.py index c7705393381..85e32947fb0 100644 --- a/homeassistant/components/media_player/samsungtv.py +++ b/homeassistant/components/media_player/samsungtv.py @@ -17,7 +17,7 @@ from homeassistant.const import ( CONF_HOST, CONF_NAME, STATE_OFF, STATE_ON, STATE_UNKNOWN, CONF_PORT) import homeassistant.helpers.config_validation as cv -REQUIREMENTS = ['samsungctl==0.5.1'] +REQUIREMENTS = ['samsungctl==0.6.0'] _LOGGER = logging.getLogger(__name__) @@ -81,8 +81,10 @@ class SamsungTVDevice(MediaPlayerDevice): def __init__(self, host, port, name, timeout): """Initialize the Samsung device.""" + from samsungctl import exceptions from samsungctl import Remote - # Save a reference to the imported class + # Save a reference to the imported classes + self._exceptions_class = exceptions self._remote_class = Remote self._name = name # Assume that the TV is not muted @@ -101,6 +103,11 @@ class SamsungTVDevice(MediaPlayerDevice): 'timeout': timeout, } + if self._config['port'] == 8001: + self._config['method'] = 'websocket' + else: + self._config['method'] = 'legacy' + def update(self): """Retrieve the latest data.""" # Send an empty key to see if we are still connected @@ -119,14 +126,14 @@ class SamsungTVDevice(MediaPlayerDevice): try: self.get_remote().control(key) self._state = STATE_ON - except (self._remote_class.UnhandledResponse, - self._remote_class.AccessDenied, BrokenPipeError): + except (self._exceptions_class.UnhandledResponse, + self._exceptions_class.AccessDenied, BrokenPipeError): # We got a response so it's on. # BrokenPipe can occur when the commands is sent to fast self._state = STATE_ON self._remote = None return False - except (self._remote_class.ConnectionClosed, OSError): + except (self._exceptions_class.ConnectionClosed, OSError): self._state = STATE_OFF self._remote = None return False @@ -155,7 +162,10 @@ class SamsungTVDevice(MediaPlayerDevice): def turn_off(self): """Turn off media player.""" - self.send_key('KEY_POWEROFF') + if self._config['method'] == 'websocket': + self.send_key('KEY_POWER') + else: + self.send_key('KEY_POWEROFF') # Force closing of remote session to provide instant UI feedback self.get_remote().close() diff --git a/requirements_all.txt b/requirements_all.txt index 79cfbb5c588..e7e066290e2 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -525,7 +525,7 @@ radiotherm==1.2 rxv==0.4.0 # homeassistant.components.media_player.samsungtv -samsungctl==0.5.1 +samsungctl==0.6.0 # homeassistant.components.sensor.deutsche_bahn schiene==0.18 From 67b74abf8d38a1df42a0fb72ed19b1f99d10ecb3 Mon Sep 17 00:00:00 2001 From: Giannie Date: Tue, 3 Jan 2017 22:34:51 +0000 Subject: [PATCH 075/189] Allow selection of bluetooth device to use (#5104) Adding the device_id key to the bevice tracker component allows selecting the bluetooth device to use in case the default device does not have BLE Capabilities --- .../components/device_tracker/bluetooth_le_tracker.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/device_tracker/bluetooth_le_tracker.py b/homeassistant/components/device_tracker/bluetooth_le_tracker.py index 2505d6670a0..8c29bc94be5 100644 --- a/homeassistant/components/device_tracker/bluetooth_le_tracker.py +++ b/homeassistant/components/device_tracker/bluetooth_le_tracker.py @@ -19,9 +19,11 @@ REQUIREMENTS = ['gattlib==0.20150805'] BLE_PREFIX = 'BLE_' MIN_SEEN_NEW = 5 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_SCAN_DURATION, default=10): cv.positive_int, + vol.Optional(CONF_BLUETOOTH_DEVICE, default="hci0"): cv.string }) @@ -55,7 +57,7 @@ def setup_scanner(hass, config, see): """Discover Bluetooth LE devices.""" _LOGGER.debug("Discovering Bluetooth LE devices") try: - service = DiscoveryService() + service = DiscoveryService(ble_dev_id) devices = service.discover(duration) _LOGGER.debug("Bluetooth LE devices discovered = %s", devices) except RuntimeError as error: @@ -65,6 +67,7 @@ def setup_scanner(hass, config, see): yaml_path = hass.config.path(YAML_DEVICES) duration = config.get(CONF_SCAN_DURATION) + ble_dev_id = config.get(CONF_BLUETOOTH_DEVICE) devs_to_track = [] devs_donot_track = [] From e17ce4f374dacd9cb80f71674f5941df2836e5ca Mon Sep 17 00:00:00 2001 From: Thibault Cohen Date: Tue, 3 Jan 2017 17:38:21 -0500 Subject: [PATCH 076/189] Improve Sharp Aquos TV component - Fixes #4973 (#5108) --- .../components/media_player/aquostv.py | 150 ++++++++++++++---- requirements_all.txt | 2 +- 2 files changed, 124 insertions(+), 28 deletions(-) diff --git a/homeassistant/components/media_player/aquostv.py b/homeassistant/components/media_player/aquostv.py index c39986d7588..5dc6635f8cc 100644 --- a/homeassistant/components/media_player/aquostv.py +++ b/homeassistant/components/media_player/aquostv.py @@ -9,18 +9,19 @@ import logging import voluptuous as vol from homeassistant.components.media_player import ( - SUPPORT_TURN_ON, SUPPORT_TURN_OFF, + SUPPORT_NEXT_TRACK, SUPPORT_PAUSE, SUPPORT_PREVIOUS_TRACK, + SUPPORT_TURN_ON, SUPPORT_TURN_OFF, SUPPORT_SELECT_SOURCE, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_STEP, SUPPORT_VOLUME_SET, MediaPlayerDevice, PLATFORM_SCHEMA) from homeassistant.const import ( CONF_HOST, CONF_NAME, STATE_OFF, STATE_ON, STATE_UNKNOWN, - CONF_PORT, CONF_USERNAME, CONF_PASSWORD) + CONF_PORT, CONF_USERNAME, CONF_PASSWORD, CONF_TIMEOUT) import homeassistant.helpers.config_validation as cv -REQUIREMENTS = ['sharp-aquos-rc==0.2'] +REQUIREMENTS = ['sharp_aquos_rc==0.3.2'] _LOGGER = logging.getLogger(__name__) @@ -28,10 +29,13 @@ DEFAULT_NAME = 'Sharp Aquos TV' DEFAULT_PORT = 10002 DEFAULT_USERNAME = 'admin' DEFAULT_PASSWORD = 'password' +DEFAULT_TIMEOUT = 0.5 +DEFAULT_RETRIES = 2 -SUPPORT_SHARPTV = SUPPORT_VOLUME_STEP | \ - SUPPORT_VOLUME_SET | SUPPORT_VOLUME_MUTE | \ - SUPPORT_TURN_OFF | SUPPORT_TURN_ON +SUPPORT_SHARPTV = SUPPORT_TURN_OFF | \ + SUPPORT_NEXT_TRACK | SUPPORT_PAUSE | SUPPORT_PREVIOUS_TRACK | \ + SUPPORT_SELECT_SOURCE | SUPPORT_VOLUME_MUTE | SUPPORT_VOLUME_STEP | \ + SUPPORT_VOLUME_SET PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_HOST): cv.string, @@ -39,8 +43,21 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Optional(CONF_PORT, default=DEFAULT_PORT): cv.port, vol.Optional(CONF_USERNAME, default=DEFAULT_USERNAME): cv.string, vol.Optional(CONF_PASSWORD, default=DEFAULT_PASSWORD): cv.string, + vol.Optional(CONF_TIMEOUT, default=DEFAULT_TIMEOUT): cv.string, + vol.Optional('retries', default=DEFAULT_RETRIES): cv.string, + vol.Optional('power_on_enabled', default=False): cv.boolean, }) +SOURCES = {0: 'TV / Antenna', + 1: 'HDMI_IN_1', + 2: 'HDMI_IN_2', + 3: 'HDMI_IN_3', + 4: 'HDMI_IN_4', + 5: 'COMPONENT IN', + 6: 'VIDEO_IN_1', + 7: 'VIDEO_IN_2', + 8: 'PC_IN'} + # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): @@ -51,6 +68,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): port = config.get(CONF_PORT) username = config.get(CONF_USERNAME) password = config.get(CONF_PASSWORD) + power_on_enabled = config.get('power_on_enabled') if discovery_info: _LOGGER.debug('%s', discovery_info) @@ -62,54 +80,85 @@ def setup_platform(hass, config, add_devices, discovery_info=None): remote = sharp_aquos_rc.TV(host, port, username, - password) - add_devices([SharpAquosTVDevice(name, remote)]) + 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) + password, + 15, + 1) - add_devices([SharpAquosTVDevice(name, remote)]) + add_devices([SharpAquosTVDevice(name, remote, power_on_enabled)]) return True +def _retry(func): + """Decorator to handle query retries.""" + def wrapper(obj, *args, **kwargs): + """Wrapper for all query functions.""" + update_retries = 5 + while update_retries > 0: + try: + func(obj, *args, **kwargs) + break + except (OSError, TypeError, ValueError): + update_retries -= 1 + if update_retries == 0: + obj.set_state(STATE_OFF) + return wrapper + + # pylint: disable=abstract-method class SharpAquosTVDevice(MediaPlayerDevice): """Representation of a Aquos TV.""" # pylint: disable=too-many-public-methods - def __init__(self, name, remote): + def __init__(self, name, remote, power_on_enabled=False): """Initialize the aquos device.""" + global SUPPORT_SHARPTV + self._power_on_enabled = power_on_enabled + if self._power_on_enabled: + SUPPORT_SHARPTV = SUPPORT_SHARPTV | SUPPORT_TURN_ON # Save a reference to the imported class self._name = name # Assume that the TV is not muted self._muted = False - # Assume that the TV is in Play mode - self._playing = True self._state = STATE_UNKNOWN self._remote = remote self._volume = 0 + self._source = None + self._source_list = list(SOURCES.values()) + def set_state(self, state): + """Set TV state.""" + self._state = state + + @_retry def update(self): """Retrieve the latest data.""" - try: - if self._remote.power() == 1: - self._state = STATE_ON - else: - self._state = STATE_OFF - - # Set TV to be able to remotely power on - # self._remote.power_on_command_settings(2) - if self._remote.mute() == 2: - self._muted = False - else: - self._muted = True - self._volume = self._remote.volume() / 60 - except OSError: + if self._remote.power() == 1: + self._state = STATE_ON + else: self._state = STATE_OFF + # Set TV to be able to remotely power on + if self._power_on_enabled: + self._remote.power_on_command_settings(2) + else: + self._remote.power_on_command_settings(0) + # Get mute state + if self._remote.mute() == 2: + self._muted = False + else: + self._muted = True + # Get source + self._source = SOURCES.get(self._remote.input()) + # Get volume + self._volume = self._remote.volume() / 60 @property def name(self): @@ -121,6 +170,16 @@ class SharpAquosTVDevice(MediaPlayerDevice): """Return the state of the device.""" return self._state + @property + def source(self): + """Return the current source.""" + return self._source + + @property + def source_list(self): + """Return the source list.""" + return self._source_list + @property def volume_level(self): """Volume level of the media player (0..1).""" @@ -136,26 +195,63 @@ class SharpAquosTVDevice(MediaPlayerDevice): """Flag of media commands that are supported.""" return SUPPORT_SHARPTV + @_retry def turn_off(self): """Turn off tvplayer.""" self._remote.power(0) + @_retry def volume_up(self): """Volume up the media player.""" self._remote.volume(int(self._volume * 60) + 2) + @_retry def volume_down(self): """Volume down media player.""" self._remote.volume(int(self._volume * 60) - 2) + @_retry def set_volume_level(self, level): """Set Volume media player.""" self._remote.volume(int(level * 60)) + @_retry def mute_volume(self, mute): """Send mute command.""" self._remote.mute(0) + @_retry def turn_on(self): """Turn the media player on.""" self._remote.power(1) + + @_retry + def media_play_pause(self): + """Simulate play pause media player.""" + self._remote.remote_button(40) + + @_retry + def media_play(self): + """Send play command.""" + self._remote.remote_button(16) + + @_retry + def media_pause(self): + """Send pause command.""" + self._remote.remote_button(16) + + @_retry + def media_next_track(self): + """Send next track command.""" + self._remote.remote_button(21) + + @_retry + def media_previous_track(self): + """Send the previous track command.""" + self._remote.remote_button(19) + + def select_source(self, source): + """Set the input source.""" + for key, value in SOURCES.items(): + if source == value: + self._remote.input(key) diff --git a/requirements_all.txt b/requirements_all.txt index e7e066290e2..92d5f39abb4 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -540,7 +540,7 @@ sendgrid==3.6.3 sense-hat==2.2.0 # homeassistant.components.media_player.aquostv -sharp-aquos-rc==0.2 +sharp_aquos_rc==0.3.2 # homeassistant.components.notify.slack slacker==0.9.30 From ebfb2c9b26bba08680f09118aa1226c2cc1a2656 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20H=C3=B8yer=20Iversen?= Date: Tue, 3 Jan 2017 23:45:11 +0100 Subject: [PATCH 077/189] Broadlink fix (#5065) * Broadlink fix * style fix * style fix * typo * restructure * Update broadlink.py * Update broadlink.py * Add support for more devices * fix library version * fix library version * fix library version * fix library version * fix library version * Update broadlink.py * lib version * remove lower * remove lower * refactor * refactor * refactor * authorization * authorization * refactor * lib version * lib version --- homeassistant/components/sensor/broadlink.py | 21 +++-- homeassistant/components/switch/broadlink.py | 95 +++++++++++--------- requirements_all.txt | 2 +- 3 files changed, 69 insertions(+), 49 deletions(-) diff --git a/homeassistant/components/sensor/broadlink.py b/homeassistant/components/sensor/broadlink.py index 53aac3d353a..5fda261b61c 100644 --- a/homeassistant/components/sensor/broadlink.py +++ b/homeassistant/components/sensor/broadlink.py @@ -19,7 +19,7 @@ from homeassistant.helpers.entity import Entity from homeassistant.util import Throttle import homeassistant.helpers.config_validation as cv -REQUIREMENTS = ['broadlink==0.2'] +REQUIREMENTS = ['broadlink==0.3'] _LOGGER = logging.getLogger(__name__) @@ -111,9 +111,7 @@ class BroadlinkData(object): self._device = broadlink.a1((ip_addr, 80), mac_addr) self._device.timeout = timeout self.update = Throttle(interval)(self._update) - try: - self._device.auth() - except socket.timeout: + if not self._auth(): _LOGGER.error("Failed to connect to device.") def _update(self, retry=2): @@ -123,8 +121,15 @@ class BroadlinkData(object): if retry < 1: _LOGGER.error(error) return - try: - self._device.auth() - except socket.timeout: - pass + if not self._auth(): + return return self._update(max(0, retry-1)) + + def _auth(self, retry=2): + try: + auth = self._device.auth() + except socket.timeout: + auth = False + if not auth and retry > 0: + return self._auth(max(0, retry-1)) + return auth diff --git a/homeassistant/components/switch/broadlink.py b/homeassistant/components/switch/broadlink.py index c2ae18ac5b3..7c561a3eb1f 100644 --- a/homeassistant/components/switch/broadlink.py +++ b/homeassistant/components/switch/broadlink.py @@ -21,7 +21,7 @@ from homeassistant.const import (CONF_FRIENDLY_NAME, CONF_SWITCHES, CONF_TYPE) import homeassistant.helpers.config_validation as cv -REQUIREMENTS = ['broadlink==0.2'] +REQUIREMENTS = ['broadlink==0.3'] _LOGGER = logging.getLogger(__name__) @@ -30,7 +30,13 @@ DEFAULT_NAME = 'Broadlink switch' DEFAULT_TIMEOUT = 10 SERVICE_LEARN = "learn_command" -SENSOR_TYPES = ["rm", "sp1", "sp2"] +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 SWITCH_SCHEMA = vol.Schema({ vol.Optional(CONF_COMMAND_OFF, default=None): cv.string, @@ -39,10 +45,12 @@ SWITCH_SCHEMA = vol.Schema({ }) PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ - vol.Optional(CONF_SWITCHES): vol.Schema({cv.slug: SWITCH_SCHEMA}), + vol.Optional(CONF_SWITCHES, default={}): + vol.Schema({cv.slug: SWITCH_SCHEMA}), vol.Required(CONF_HOST): cv.string, vol.Required(CONF_MAC): cv.string, - vol.Optional(CONF_TYPE, default=SENSOR_TYPES[0]): vol.In(SENSOR_TYPES), + vol.Optional(CONF_FRIENDLY_NAME, default=DEFAULT_NAME): cv.string, + vol.Optional(CONF_TYPE, default=SWITCH_TYPES[0]): vol.In(SWITCH_TYPES), vol.Optional(CONF_TIMEOUT, default=DEFAULT_TIMEOUT): cv.positive_int }) @@ -51,21 +59,26 @@ def setup_platform(hass, config, add_devices, discovery_info=None): """Setup Broadlink switches.""" import broadlink devices = config.get(CONF_SWITCHES, {}) - switches = [] ip_addr = config.get(CONF_HOST) + friendly_name = config.get(CONF_FRIENDLY_NAME) mac_addr = binascii.unhexlify( config.get(CONF_MAC).encode().replace(b':', b'')) - sensor_type = config.get(CONF_TYPE) + switch_type = config.get(CONF_TYPE) persistent_notification = loader.get_component('persistent_notification') @asyncio.coroutine def _learn_command(call): try: - yield from hass.loop.run_in_executor(None, broadlink_device.auth) + auth = yield from hass.loop.run_in_executor(None, + broadlink_device.auth) except socket.timeout: + _LOGGER.error("Failed to connect to device, timeout.") + return + if not auth: _LOGGER.error("Failed to connect to device.") return + yield from hass.loop.run_in_executor(None, broadlink_device.enter_learning) @@ -88,17 +101,26 @@ def setup_platform(hass, config, add_devices, discovery_info=None): "Did not received any signal", title='Broadlink switch') - if sensor_type == "rm": + if switch_type in RM_TYPES: broadlink_device = broadlink.rm((ip_addr, 80), mac_addr) - switch = BroadlinkRMSwitch hass.services.register(DOMAIN, SERVICE_LEARN + '_' + ip_addr, _learn_command) - elif sensor_type == "sp1": + switches = [] + for object_id, device_config in devices.items(): + switches.append( + BroadlinkRMSwitch( + device_config.get(CONF_FRIENDLY_NAME, object_id), + broadlink_device, + device_config.get(CONF_COMMAND_ON), + device_config.get(CONF_COMMAND_OFF) + ) + ) + elif switch_type in SP1_TYPES: broadlink_device = broadlink.sp1((ip_addr, 80), mac_addr) - switch = BroadlinkSP1Switch - elif sensor_type == "sp2": + switches = [BroadlinkSP1Switch(friendly_name, broadlink_device)] + elif switch_type in SP2_TYPES: broadlink_device = broadlink.sp2((ip_addr, 80), mac_addr) - switch = BroadlinkSP2Switch + switches = [BroadlinkSP2Switch(friendly_name, broadlink_device)] broadlink_device.timeout = config.get(CONF_TIMEOUT) try: @@ -106,23 +128,13 @@ def setup_platform(hass, config, add_devices, discovery_info=None): except socket.timeout: _LOGGER.error("Failed to connect to device.") - for object_id, device_config in devices.items(): - switches.append( - switch( - device_config.get(CONF_FRIENDLY_NAME, object_id), - device_config.get(CONF_COMMAND_ON), - device_config.get(CONF_COMMAND_OFF), - broadlink_device - ) - ) - add_devices(switches) class BroadlinkRMSwitch(SwitchDevice): """Representation of an Broadlink switch.""" - def __init__(self, friendly_name, command_on, command_off, device): + def __init__(self, friendly_name, device, command_on, command_off): """Initialize the switch.""" self._name = friendly_name self._state = False @@ -173,20 +185,27 @@ class BroadlinkRMSwitch(SwitchDevice): if retry < 1: _LOGGER.error(error) return False - try: - self._device.auth() - except socket.timeout: - pass + if not self._auth(): + return False return self._sendpacket(packet, max(0, retry-1)) return True + def _auth(self, retry=2): + try: + auth = self._device.auth() + except socket.timeout: + auth = False + if not auth and retry > 0: + return self._auth(max(0, retry-1)) + return auth + class BroadlinkSP1Switch(BroadlinkRMSwitch): """Representation of an Broadlink switch.""" - def __init__(self, friendly_name, command_on, command_off, device): + def __init__(self, friendly_name, device): """Initialize the switch.""" - super().__init__(friendly_name, command_on, command_off, device) + super().__init__(friendly_name, device, None, None) self._command_on = 1 self._command_off = 0 @@ -198,10 +217,8 @@ class BroadlinkSP1Switch(BroadlinkRMSwitch): if retry < 1: _LOGGER.error(error) return False - try: - self._device.auth() - except socket.timeout: - pass + if not self._auth(): + return False return self._sendpacket(packet, max(0, retry-1)) return True @@ -209,9 +226,9 @@ class BroadlinkSP1Switch(BroadlinkRMSwitch): class BroadlinkSP2Switch(BroadlinkSP1Switch): """Representation of an Broadlink switch.""" - def __init__(self, friendly_name, command_on, command_off, device): + def __init__(self, friendly_name, device): """Initialize the switch.""" - super().__init__(friendly_name, command_on, command_off, device) + super().__init__(friendly_name, device) @property def assumed_state(self): @@ -234,10 +251,8 @@ class BroadlinkSP2Switch(BroadlinkSP1Switch): if retry < 1: _LOGGER.error(error) return - try: - self._device.auth() - except socket.timeout: - pass + if not self._auth(): + return return self._update(max(0, retry-1)) if state is None and retry > 0: return self._update(max(0, retry-1)) diff --git a/requirements_all.txt b/requirements_all.txt index 92d5f39abb4..4e25d3e2362 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -68,7 +68,7 @@ boto3==1.3.1 # homeassistant.components.sensor.broadlink # homeassistant.components.switch.broadlink -broadlink==0.2 +broadlink==0.3 # homeassistant.components.sensor.coinmarketcap coinmarketcap==2.0.1 From b78cf4772df9efc83c11b4c6e3f3d3916a335a05 Mon Sep 17 00:00:00 2001 From: Nathan Henrie Date: Tue, 3 Jan 2017 15:46:30 -0700 Subject: [PATCH 078/189] Add ability to set rpi_rf `tx_repeats` attribute (#5070) * Add ability to set rpi_rf `tx_repeats` attribute Uses the current `rpi_rf` default of 10 Closes home-assistant/home-assistant#5069 * Use `signal_repetitions` instead of `repeats` for consistency --- homeassistant/components/switch/rpi_rf.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/switch/rpi_rf.py b/homeassistant/components/switch/rpi_rf.py index 2822f2fc9d4..361f4e0e934 100644 --- a/homeassistant/components/switch/rpi_rf.py +++ b/homeassistant/components/switch/rpi_rf.py @@ -21,13 +21,17 @@ CONF_CODE_ON = 'code_on' CONF_GPIO = 'gpio' CONF_PROTOCOL = 'protocol' CONF_PULSELENGTH = 'pulselength' +CONF_SIGNAL_REPETITIONS = 'signal_repetitions' DEFAULT_PROTOCOL = 1 +DEFAULT_SIGNAL_REPETITIONS = 10 SWITCH_SCHEMA = vol.Schema({ vol.Required(CONF_CODE_OFF): cv.positive_int, vol.Required(CONF_CODE_ON): cv.positive_int, vol.Optional(CONF_PULSELENGTH): cv.positive_int, + vol.Optional(CONF_SIGNAL_REPETITIONS, + default=DEFAULT_SIGNAL_REPETITIONS): cv.positive_int, vol.Optional(CONF_PROTOCOL, default=DEFAULT_PROTOCOL): cv.positive_int, }) @@ -55,6 +59,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): rfdevice, properties.get(CONF_PROTOCOL), properties.get(CONF_PULSELENGTH), + properties.get(CONF_SIGNAL_REPETITIONS), properties.get(CONF_CODE_ON), properties.get(CONF_CODE_OFF) ) @@ -69,7 +74,7 @@ class RPiRFSwitch(SwitchDevice): """Representation of a GPIO RF switch.""" def __init__(self, hass, name, rfdevice, protocol, pulselength, - code_on, code_off): + signal_repetitions, code_on, code_off): """Initialize the switch.""" self._hass = hass self._name = name @@ -79,6 +84,7 @@ class RPiRFSwitch(SwitchDevice): self._pulselength = pulselength self._code_on = code_on self._code_off = code_off + self._rfdevice.tx_repeat = signal_repetitions @property def should_poll(self): From 2a7a419ff3e3f964608d16f6bf77774f040f6578 Mon Sep 17 00:00:00 2001 From: Adam Mills Date: Tue, 3 Jan 2017 17:51:23 -0500 Subject: [PATCH 079/189] Async support in media player component (#4995) * Async support in media player component * Removed redundant new tests * Update to new 'reduce coroutine' standards * Remove extra create_task --- .../components/media_player/__init__.py | 375 ++++++++++++------ tests/components/media_player/test_demo.py | 3 +- 2 files changed, 244 insertions(+), 134 deletions(-) diff --git a/homeassistant/components/media_player/__init__.py b/homeassistant/components/media_player/__init__.py index 3dea75df874..aa30c1abdb1 100644 --- a/homeassistant/components/media_player/__init__.py +++ b/homeassistant/components/media_player/__init__.py @@ -5,6 +5,7 @@ For more details about this component, please refer to the documentation at https://home-assistant.io/components/media_player/ """ import asyncio +import functools as ft import hashlib import logging import os @@ -100,20 +101,62 @@ SUPPORT_SELECT_SOURCE = 2048 SUPPORT_STOP = 4096 SUPPORT_CLEAR_PLAYLIST = 8192 -# simple services that only take entity_id(s) as optional argument +# Service call validation schemas +MEDIA_PLAYER_SCHEMA = vol.Schema({ + ATTR_ENTITY_ID: cv.entity_ids, +}) + +MEDIA_PLAYER_SET_VOLUME_SCHEMA = MEDIA_PLAYER_SCHEMA.extend({ + vol.Required(ATTR_MEDIA_VOLUME_LEVEL): cv.small_float, +}) + +MEDIA_PLAYER_MUTE_VOLUME_SCHEMA = MEDIA_PLAYER_SCHEMA.extend({ + vol.Required(ATTR_MEDIA_VOLUME_MUTED): cv.boolean, +}) + +MEDIA_PLAYER_MEDIA_SEEK_SCHEMA = MEDIA_PLAYER_SCHEMA.extend({ + vol.Required(ATTR_MEDIA_SEEK_POSITION): + vol.All(vol.Coerce(float), vol.Range(min=0)), +}) + +MEDIA_PLAYER_SELECT_SOURCE_SCHEMA = MEDIA_PLAYER_SCHEMA.extend({ + vol.Required(ATTR_INPUT_SOURCE): cv.string, +}) + +MEDIA_PLAYER_PLAY_MEDIA_SCHEMA = MEDIA_PLAYER_SCHEMA.extend({ + vol.Required(ATTR_MEDIA_CONTENT_TYPE): cv.string, + vol.Required(ATTR_MEDIA_CONTENT_ID): cv.string, + vol.Optional(ATTR_MEDIA_ENQUEUE): cv.boolean, +}) + SERVICE_TO_METHOD = { - SERVICE_TURN_ON: 'turn_on', - SERVICE_TURN_OFF: 'turn_off', - SERVICE_TOGGLE: 'toggle', - SERVICE_VOLUME_UP: 'volume_up', - SERVICE_VOLUME_DOWN: 'volume_down', - SERVICE_MEDIA_PLAY_PAUSE: 'media_play_pause', - SERVICE_MEDIA_PLAY: 'media_play', - SERVICE_MEDIA_PAUSE: 'media_pause', - SERVICE_MEDIA_STOP: 'media_stop', - SERVICE_MEDIA_NEXT_TRACK: 'media_next_track', - SERVICE_MEDIA_PREVIOUS_TRACK: 'media_previous_track', - SERVICE_CLEAR_PLAYLIST: 'clear_playlist' + SERVICE_TURN_ON: {'method': 'async_turn_on'}, + SERVICE_TURN_OFF: {'method': 'async_turn_off'}, + SERVICE_TOGGLE: {'method': 'async_toggle'}, + SERVICE_VOLUME_UP: {'method': 'async_volume_up'}, + SERVICE_VOLUME_DOWN: {'method': 'async_volume_down'}, + SERVICE_MEDIA_PLAY_PAUSE: {'method': 'async_media_play_pause'}, + SERVICE_MEDIA_PLAY: {'method': 'async_media_play'}, + SERVICE_MEDIA_PAUSE: {'method': 'async_media_pause'}, + SERVICE_MEDIA_STOP: {'method': 'async_media_stop'}, + SERVICE_MEDIA_NEXT_TRACK: {'method': 'async_media_next_track'}, + SERVICE_MEDIA_PREVIOUS_TRACK: {'method': 'async_media_previous_track'}, + SERVICE_CLEAR_PLAYLIST: {'method': 'async_clear_playlist'}, + SERVICE_VOLUME_SET: { + 'method': 'async_set_volume_level', + 'schema': MEDIA_PLAYER_SET_VOLUME_SCHEMA}, + SERVICE_VOLUME_MUTE: { + 'method': 'async_mute_volume', + 'schema': MEDIA_PLAYER_MUTE_VOLUME_SCHEMA}, + SERVICE_MEDIA_SEEK: { + 'method': 'async_media_seek', + 'schema': MEDIA_PLAYER_MEDIA_SEEK_SCHEMA}, + SERVICE_SELECT_SOURCE: { + 'method': 'async_select_source', + 'schema': MEDIA_PLAYER_SELECT_SOURCE_SCHEMA}, + SERVICE_PLAY_MEDIA: { + 'method': 'async_play_media', + 'schema': MEDIA_PLAYER_PLAY_MEDIA_SCHEMA}, } ATTR_TO_PROPERTY = [ @@ -141,34 +184,6 @@ ATTR_TO_PROPERTY = [ ATTR_INPUT_SOURCE_LIST, ] -# Service call validation schemas -MEDIA_PLAYER_SCHEMA = vol.Schema({ - ATTR_ENTITY_ID: cv.entity_ids, -}) - -MEDIA_PLAYER_MUTE_VOLUME_SCHEMA = MEDIA_PLAYER_SCHEMA.extend({ - vol.Required(ATTR_MEDIA_VOLUME_MUTED): cv.boolean, -}) - -MEDIA_PLAYER_SET_VOLUME_SCHEMA = MEDIA_PLAYER_SCHEMA.extend({ - vol.Required(ATTR_MEDIA_VOLUME_LEVEL): cv.small_float, -}) - -MEDIA_PLAYER_MEDIA_SEEK_SCHEMA = MEDIA_PLAYER_SCHEMA.extend({ - vol.Required(ATTR_MEDIA_SEEK_POSITION): - vol.All(vol.Coerce(float), vol.Range(min=0)), -}) - -MEDIA_PLAYER_PLAY_MEDIA_SCHEMA = MEDIA_PLAYER_SCHEMA.extend({ - vol.Required(ATTR_MEDIA_CONTENT_TYPE): cv.string, - vol.Required(ATTR_MEDIA_CONTENT_ID): cv.string, - vol.Optional(ATTR_MEDIA_ENQUEUE): cv.boolean, -}) - -MEDIA_PLAYER_SELECT_SOURCE_SCHEMA = MEDIA_PLAYER_SCHEMA.extend({ - vol.Required(ATTR_INPUT_SOURCE): cv.string, -}) - def is_on(hass, entity_id=None): """ @@ -304,109 +319,67 @@ def clear_playlist(hass, entity_id=None): hass.services.call(DOMAIN, SERVICE_CLEAR_PLAYLIST, data) -def setup(hass, config): +@asyncio.coroutine +def async_setup(hass, config): """Track states and offer events for media_players.""" component = EntityComponent( logging.getLogger(__name__), DOMAIN, hass, SCAN_INTERVAL) hass.http.register_view(MediaPlayerImageView(component.entities)) - component.setup(config) + yield from component.async_setup(config) - descriptions = load_yaml_config_file( - os.path.join(os.path.dirname(__file__), 'services.yaml')) + descriptions = yield from hass.loop.run_in_executor( + None, load_yaml_config_file, os.path.join( + os.path.dirname(__file__), 'services.yaml')) - def media_player_service_handler(service): + @asyncio.coroutine + def async_service_handler(service): """Map services to methods on MediaPlayerDevice.""" - method = SERVICE_TO_METHOD[service.service] + method = SERVICE_TO_METHOD.get(service.service) + if not method: + return - for player in component.extract_from_service(service): - getattr(player, method)() + params = {} + if service.service == SERVICE_VOLUME_SET: + params['volume'] = service.data.get(ATTR_MEDIA_VOLUME_LEVEL) + elif service.service == SERVICE_VOLUME_MUTE: + params['mute'] = service.data.get(ATTR_MEDIA_VOLUME_MUTED) + elif service.service == SERVICE_MEDIA_SEEK: + params['position'] = service.data.get(ATTR_MEDIA_SEEK_POSITION) + elif service.service == SERVICE_SELECT_SOURCE: + params['source'] = service.data.get(ATTR_INPUT_SOURCE) + elif service.service == SERVICE_PLAY_MEDIA: + params['media_type'] = \ + service.data.get(ATTR_MEDIA_CONTENT_TYPE) + params['media_id'] = service.data.get(ATTR_MEDIA_CONTENT_ID) + params[ATTR_MEDIA_ENQUEUE] = \ + service.data.get(ATTR_MEDIA_ENQUEUE) + target_players = component.async_extract_from_service(service) - if player.should_poll: - player.update_ha_state(True) + update_tasks = [] + for player in target_players: + yield from getattr(player, method['method'])(**params) + + for player in target_players: + if not player.should_poll: + continue + + update_coro = player.async_update_ha_state(True) + if hasattr(player, 'async_update'): + update_tasks.append(update_coro) + else: + yield from update_coro + + if update_tasks: + yield from asyncio.wait(update_tasks, loop=hass.loop) for service in SERVICE_TO_METHOD: - hass.services.register(DOMAIN, service, media_player_service_handler, - descriptions.get(service), - schema=MEDIA_PLAYER_SCHEMA) - - def volume_set_service(service): - """Set specified volume on the media player.""" - volume = service.data.get(ATTR_MEDIA_VOLUME_LEVEL) - - for player in component.extract_from_service(service): - player.set_volume_level(volume) - - if player.should_poll: - player.update_ha_state(True) - - hass.services.register(DOMAIN, SERVICE_VOLUME_SET, volume_set_service, - descriptions.get(SERVICE_VOLUME_SET), - schema=MEDIA_PLAYER_SET_VOLUME_SCHEMA) - - def volume_mute_service(service): - """Mute (true) or unmute (false) the media player.""" - mute = service.data.get(ATTR_MEDIA_VOLUME_MUTED) - - for player in component.extract_from_service(service): - player.mute_volume(mute) - - if player.should_poll: - player.update_ha_state(True) - - hass.services.register(DOMAIN, SERVICE_VOLUME_MUTE, volume_mute_service, - descriptions.get(SERVICE_VOLUME_MUTE), - schema=MEDIA_PLAYER_MUTE_VOLUME_SCHEMA) - - def media_seek_service(service): - """Seek to a position.""" - position = service.data.get(ATTR_MEDIA_SEEK_POSITION) - - for player in component.extract_from_service(service): - player.media_seek(position) - - if player.should_poll: - player.update_ha_state(True) - - hass.services.register(DOMAIN, SERVICE_MEDIA_SEEK, media_seek_service, - descriptions.get(SERVICE_MEDIA_SEEK), - schema=MEDIA_PLAYER_MEDIA_SEEK_SCHEMA) - - def select_source_service(service): - """Change input to selected source.""" - input_source = service.data.get(ATTR_INPUT_SOURCE) - - for player in component.extract_from_service(service): - player.select_source(input_source) - - if player.should_poll: - player.update_ha_state(True) - - hass.services.register(DOMAIN, SERVICE_SELECT_SOURCE, - select_source_service, - descriptions.get(SERVICE_SELECT_SOURCE), - schema=MEDIA_PLAYER_SELECT_SOURCE_SCHEMA) - - def play_media_service(service): - """Play specified media_id on the media player.""" - media_type = service.data.get(ATTR_MEDIA_CONTENT_TYPE) - media_id = service.data.get(ATTR_MEDIA_CONTENT_ID) - enqueue = service.data.get(ATTR_MEDIA_ENQUEUE) - - kwargs = { - ATTR_MEDIA_ENQUEUE: enqueue, - } - - for player in component.extract_from_service(service): - player.play_media(media_type, media_id, **kwargs) - - if player.should_poll: - player.update_ha_state(True) - - hass.services.register(DOMAIN, SERVICE_PLAY_MEDIA, play_media_service, - descriptions.get(SERVICE_PLAY_MEDIA), - schema=MEDIA_PLAYER_PLAY_MEDIA_SCHEMA) + schema = SERVICE_TO_METHOD[service].get( + 'schema', MEDIA_PLAYER_SCHEMA) + hass.services.async_register( + DOMAIN, service, async_service_handler, + descriptions.get(service), schema=schema) return True @@ -548,54 +521,158 @@ class MediaPlayerDevice(Entity): """Turn the media player on.""" raise NotImplementedError() + def async_turn_on(self): + """Turn the media player on. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( + None, self.turn_on) + def turn_off(self): """Turn the media player off.""" raise NotImplementedError() + def async_turn_off(self): + """Turn the media player off. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( + None, self.turn_off) + def mute_volume(self, mute): """Mute the volume.""" raise NotImplementedError() + def async_mute_volume(self, mute): + """Mute the volume. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( + None, self.mute_volume, mute) + def set_volume_level(self, volume): """Set volume level, range 0..1.""" raise NotImplementedError() + def async_set_volume_level(self, volume): + """Set volume level, range 0..1. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( + None, self.set_volume_level, volume) + def media_play(self): """Send play commmand.""" raise NotImplementedError() + def async_media_play(self): + """Send play commmand. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( + None, self.media_play) + def media_pause(self): """Send pause command.""" raise NotImplementedError() + def async_media_pause(self): + """Send pause command. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( + None, self.media_pause) + def media_stop(self): """Send stop command.""" raise NotImplementedError() + def async_media_stop(self): + """Send stop command. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( + None, self.media_stop) + def media_previous_track(self): """Send previous track command.""" raise NotImplementedError() + def async_media_previous_track(self): + """Send previous track command. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( + None, self.media_previous_track) + def media_next_track(self): """Send next track command.""" raise NotImplementedError() + def async_media_next_track(self): + """Send next track command. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( + None, self.media_next_track) + def media_seek(self, position): """Send seek command.""" raise NotImplementedError() - def play_media(self, media_type, media_id): + def async_media_seek(self, position): + """Send seek command. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( + None, self.media_seek, position) + + def play_media(self, media_type, media_id, **kwargs): """Play a piece of media.""" raise NotImplementedError() + def async_play_media(self, media_type, media_id, **kwargs): + """Play a piece of media. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( + None, ft.partial(self.play_media, media_type, media_id, **kwargs)) + def select_source(self, source): """Select input source.""" raise NotImplementedError() + def async_select_source(self, source): + """Select input source. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( + None, self.select_source, source) + def clear_playlist(self): """Clear players playlist.""" raise NotImplementedError() + def async_clear_playlist(self): + """Clear players playlist. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( + None, self.clear_playlist) + # No need to overwrite these. @property def support_pause(self): @@ -654,16 +731,40 @@ class MediaPlayerDevice(Entity): else: self.turn_off() + def async_toggle(self): + """Toggle the power on the media player. + + This method must be run in the event loop and returns a coroutine. + """ + if self.state in [STATE_OFF, STATE_IDLE]: + return self.async_turn_on() + else: + return self.async_turn_off() + def volume_up(self): """Turn volume up for media player.""" if self.volume_level < 1: self.set_volume_level(min(1, self.volume_level + .1)) + def async_volume_up(self): + """Turn volume up for media player. + + This method must be run in the event loop and returns a coroutine. + """ + return self.async_set_volume_level(min(1, self.volume_level + .1)) + def volume_down(self): """Turn volume down for media player.""" if self.volume_level > 0: self.set_volume_level(max(0, self.volume_level - .1)) + def async_volume_down(self): + """Turn volume down for media player. + + This method must be run in the event loop and returns a coroutine. + """ + return self.async_set_volume_level(max(0, self.volume_level - .1)) + def media_play_pause(self): """Play or pause the media player.""" if self.state == STATE_PLAYING: @@ -671,6 +772,16 @@ class MediaPlayerDevice(Entity): else: self.media_play() + def async_media_play_pause(self): + """Play or pause the media player. + + This method must be run in the event loop and returns a coroutine. + """ + if self.state == STATE_PLAYING: + return self.async_media_pause() + else: + return self.async_media_play() + @property def entity_picture(self): """Return image of the media playing.""" diff --git a/tests/components/media_player/test_demo.py b/tests/components/media_player/test_demo.py index 4da1fb6a725..a9c75e90d37 100644 --- a/tests/components/media_player/test_demo.py +++ b/tests/components/media_player/test_demo.py @@ -69,7 +69,6 @@ class TestDemoMediaPlayer(unittest.TestCase): self.hass, mp.DOMAIN, {'media_player': {'platform': 'demo'}}) state = self.hass.states.get(entity_id) - print(state) assert 1.0 == state.attributes.get('volume_level') mp.set_volume_level(self.hass, None, entity_id) @@ -203,7 +202,7 @@ class TestDemoMediaPlayer(unittest.TestCase): state.attributes.get('supported_media_commands')) @patch('homeassistant.components.media_player.demo.DemoYoutubePlayer.' - 'media_seek') + 'media_seek', autospec=True) def test_play_media(self, mock_seek): """Test play_media .""" assert setup_component( From d9614cff464b5bbbfb9e8e6b0645b48ae75ad4b1 Mon Sep 17 00:00:00 2001 From: Magnus Ihse Bursie Date: Tue, 3 Jan 2017 23:54:11 +0100 Subject: [PATCH 080/189] Improve async/multithreaded behavior of tellstick code (#4989) * Refactor tellstick code for increased readability. Especially highlight if "device" is a telldus core device or a HA entity. * Refactor Tellstick object model for increased clarity. * Update comments. Unify better with sensors. Fix typo bug. Add debug logging. * Refactor tellstick code for increased readability. Especially highlight if "device" is a telldus core device or a HA entity. * Refactor Tellstick object model for increased clarity. * Update comments. Unify better with sensors. Fix typo bug. Add debug logging. * Fix lint issues. * Remove global variable according to hint from balloob. * Better async/threading behavior for tellstick. * Fix lint/style checks. * Use hass.async_add_job --- homeassistant/components/light/tellstick.py | 9 +- homeassistant/components/switch/tellstick.py | 6 +- homeassistant/components/tellstick.py | 106 ++++++++++++------- 3 files changed, 77 insertions(+), 44 deletions(-) diff --git a/homeassistant/components/light/tellstick.py b/homeassistant/components/light/tellstick.py index d23d5e2c4d6..ea908fda02f 100644 --- a/homeassistant/components/light/tellstick.py +++ b/homeassistant/components/light/tellstick.py @@ -80,9 +80,10 @@ class TellstickLight(TellstickDevice, Light): else: self._state = False - def _send_tellstick_command(self): - """Let tellcore update the device to match the current state.""" - if self._state: - self._tellcore_device.dim(self._brightness) + def _send_device_command(self, requested_state, requested_data): + """Let tellcore update the actual device to the requested state.""" + if requested_state: + brightness = requested_data + self._tellcore_device.dim(brightness) else: self._tellcore_device.turn_off() diff --git a/homeassistant/components/switch/tellstick.py b/homeassistant/components/switch/tellstick.py index 46b1ad0aa49..094db06c49f 100644 --- a/homeassistant/components/switch/tellstick.py +++ b/homeassistant/components/switch/tellstick.py @@ -46,9 +46,9 @@ class TellstickSwitch(TellstickDevice, ToggleEntity): """Update the device entity state to match the arguments.""" self._state = new_state - def _send_tellstick_command(self): - """Let tellcore update the device to match the current state.""" - if self._state: + def _send_device_command(self, requested_state, requested_data): + """Let tellcore update the actual device to the requested state.""" + if requested_state: self._tellcore_device.turn_on() else: self._tellcore_device.turn_off() diff --git a/homeassistant/components/tellstick.py b/homeassistant/components/tellstick.py index e957ef5e2a8..e6031a91ab4 100644 --- a/homeassistant/components/tellstick.py +++ b/homeassistant/components/tellstick.py @@ -27,7 +27,7 @@ ATTR_DISCOVER_CONFIG = 'config' # Use a global tellstick domain lock to avoid getting Tellcore errors when # calling concurrently. -TELLSTICK_LOCK = threading.Lock() +TELLSTICK_LOCK = threading.RLock() # A TellstickRegistry that keeps a map from tellcore_id to the corresponding # tellcore_device and HA device (entity). @@ -59,12 +59,12 @@ def _discover(hass, config, component_name, found_tellcore_devices): def setup(hass, config): """Setup the Tellstick component.""" from tellcore.constants import TELLSTICK_DIM - from tellcore.library import DirectCallbackDispatcher + from tellcore.telldus import AsyncioCallbackDispatcher from tellcore.telldus import TelldusCore try: tellcore_lib = TelldusCore( - callback_dispatcher=DirectCallbackDispatcher()) + callback_dispatcher=AsyncioCallbackDispatcher(hass.loop)) except OSError: _LOGGER.exception('Could not initialize Tellstick') return False @@ -115,8 +115,7 @@ class TellstickRegistry(object): ha_device = self._id_to_ha_device_map.get(tellcore_id, None) if ha_device is not None: # Pass it on to the HA device object - ha_device.update_from_tellcore(tellcore_command, tellcore_data) - ha_device.schedule_update_ha_state() + ha_device.update_from_callback(tellcore_command, tellcore_data) def _setup_tellcore_callback(self, hass, tellcore_lib): """Register the callback handler.""" @@ -156,12 +155,17 @@ class TellstickDevice(Entity): """Initalize the Tellstick device.""" self._signal_repetitions = signal_repetitions self._state = None + self._requested_state = None + self._requested_data = None + self._repeats_left = 0 + # Look up our corresponding tellcore device self._tellcore_device = tellcore_registry.get_tellcore_device( tellcore_id) + self._name = self._tellcore_device.name # Query tellcore for the current state - self.update() - # Add ourselves to the mapping + self._update_from_tellcore() + # Add ourselves to the mapping for callbacks tellcore_registry.register_ha_device(tellcore_id, self) @property @@ -177,7 +181,7 @@ class TellstickDevice(Entity): @property def name(self): """Return the name of the device as reported by tellcore.""" - return self._tellcore_device.name + return self._name @property def is_on(self): @@ -196,60 +200,88 @@ class TellstickDevice(Entity): """Update the device entity state to match the arguments.""" raise NotImplementedError - def _send_tellstick_command(self): - """Let tellcore update the device to match the current state.""" + def _send_device_command(self, requested_state, requested_data): + """Let tellcore update the actual device to the requested state.""" raise NotImplementedError - def _do_action(self, new_state, data): - """The logic for actually turning on or off the device.""" + def _send_repeated_command(self): + """Send a tellstick command once and decrease the repeat count.""" from tellcore.library import TelldusError with TELLSTICK_LOCK: - # Update self with requested new state + if self._repeats_left > 0: + self._repeats_left -= 1 + try: + self._send_device_command(self._requested_state, + self._requested_data) + except TelldusError as err: + _LOGGER.error(err) + + def _change_device_state(self, new_state, data): + """The logic for actually turning 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 + # made from the callback. (We don't want to queue a lot of commands + # in case the user toggles the switch the other way before the + # queue is fully processed.) + self._requested_state = new_state + self._requested_data = data + self._repeats_left = self._signal_repetitions + self._send_repeated_command() + + # Sooner or later this will propagate to the model from the + # callback, but for a fluid UI experience update it directly. self._update_model(new_state, data) - # ... and then send this new state to the Tellstick - try: - for _ in range(self._signal_repetitions): - self._send_tellstick_command() - except TelldusError: - _LOGGER.error(TelldusError) - self.update_ha_state() + self.schedule_update_ha_state() def turn_on(self, **kwargs): """Turn the switch on.""" - self._do_action(True, self._parse_ha_data(kwargs)) + self._change_device_state(True, self._parse_ha_data(kwargs)) def turn_off(self, **kwargs): """Turn the switch off.""" - self._do_action(False, None) + self._change_device_state(False, None) - def update_from_tellcore(self, tellcore_command, tellcore_data): - """Handle updates from the tellcore callback.""" + 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) if tellcore_command not in [TELLSTICK_TURNON, TELLSTICK_TURNOFF, TELLSTICK_DIM]: - _LOGGER.debug("Unhandled tellstick command: %d", - tellcore_command) + _LOGGER.debug("Unhandled tellstick command: %d", tellcore_command) return self._update_model(tellcore_command != TELLSTICK_TURNOFF, self._parse_tellcore_data(tellcore_data)) - def update(self): - """Poll the current state of the device.""" + def update_from_callback(self, tellcore_command, tellcore_data): + """Handle updates from the tellcore callback.""" + self._update_model_from_command(tellcore_command, tellcore_data) + self.schedule_update_ha_state() + + # This is a benign race on _repeats_left -- it's checked with the lock + # in _send_repeated_command. + if self._repeats_left > 0: + self.hass.async_add_job(self._send_repeated_command) + + 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) - try: - last_tellcore_command = self._tellcore_device.last_sent_command( - TELLSTICK_TURNON | TELLSTICK_TURNOFF | TELLSTICK_DIM - ) - last_tellcore_data = self._tellcore_device.last_sent_value() + with TELLSTICK_LOCK: + try: + last_command = self._tellcore_device.last_sent_command( + TELLSTICK_TURNON | TELLSTICK_TURNOFF | TELLSTICK_DIM) + last_data = self._tellcore_device.last_sent_value() + self._update_model_from_command(last_command, last_data) + except TelldusError as err: + _LOGGER.error(err) - self.update_from_tellcore(last_tellcore_command, - last_tellcore_data) - except TelldusError: - _LOGGER.error(TelldusError) + def update(self): + """Poll the current state of the device.""" + self._update_from_tellcore() + self.schedule_update_ha_state() From 8e61fab579fabbf78360d7b4c6baee7a7d71d938 Mon Sep 17 00:00:00 2001 From: Oliver Date: Wed, 4 Jan 2017 00:02:44 +0100 Subject: [PATCH 081/189] Pushed to another version of denonavr library with fixes for AVR-nonX devices (#5156) --- 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 5784fd6c829..edae45e564d 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.2.2'] +REQUIREMENTS = ['denonavr==0.3.0'] _LOGGER = logging.getLogger(__name__) diff --git a/requirements_all.txt b/requirements_all.txt index 4e25d3e2362..ca0530912cc 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -81,7 +81,7 @@ colorlog>2.1,<3 concord232==0.14 # homeassistant.components.media_player.denonavr -denonavr==0.2.2 +denonavr==0.3.0 # homeassistant.components.media_player.directv directpy==0.1 From 3f7a6290797dd31285d58c2a9f14b71a30153684 Mon Sep 17 00:00:00 2001 From: Florian Holzapfel Date: Wed, 4 Jan 2017 13:16:52 +0100 Subject: [PATCH 082/189] fix #5157 (#5173) --- homeassistant/components/media_player/panasonic_viera.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/media_player/panasonic_viera.py b/homeassistant/components/media_player/panasonic_viera.py index b345fcf4884..4585d251d9f 100644 --- a/homeassistant/components/media_player/panasonic_viera.py +++ b/homeassistant/components/media_player/panasonic_viera.py @@ -133,10 +133,13 @@ class PanasonicVieraTVDevice(MediaPlayerDevice): """Turn on the media player.""" if self._mac: self._wol.send_magic_packet(self._mac) + self._state = STATE_ON def turn_off(self): """Turn off media player.""" - self.send_key('NRC_POWER-ONOFF') + if self._state != STATE_OFF: + self.send_key('NRC_POWER-ONOFF') + self._state = STATE_OFF def volume_up(self): """Volume up the media player.""" From d09dcc4b03426e2f0216c64153ca8baedc6e0d90 Mon Sep 17 00:00:00 2001 From: Gopal Date: Wed, 4 Jan 2017 18:23:29 +0530 Subject: [PATCH 083/189] Timeout and Constant added --- homeassistant/components/notify/facebook.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/notify/facebook.py b/homeassistant/components/notify/facebook.py index 630d5453daf..2acabcf02c0 100644 --- a/homeassistant/components/notify/facebook.py +++ b/homeassistant/components/notify/facebook.py @@ -13,6 +13,7 @@ import voluptuous as vol import homeassistant.helpers.config_validation as cv from homeassistant.components.notify import ( ATTR_TARGET, PLATFORM_SCHEMA, BaseNotificationService) +from homeassistant.const import CONTENT_TYPE_JSON _LOGGER = logging.getLogger(__name__) @@ -42,7 +43,7 @@ class FacebookNotificationService(BaseNotificationService): targets = kwargs.get(ATTR_TARGET) if not targets: - _LOGGER.info("At least 1 target is required") + _LOGGER.error("At least 1 target is required") return for target in targets: @@ -53,7 +54,8 @@ class FacebookNotificationService(BaseNotificationService): import json resp = requests.post(BASE_URL, data=json.dumps(body), params=payload, - headers={'Content-Type': 'application/json'}) + headers={'Content-Type': CONTENT_TYPE_JSON}, + timeout=10) if resp.status_code != 200: obj = resp.json() error_message = obj['error']['message'] From 6ed3c6960480df4f6c2c0f2d6c76ad4ed6c24896 Mon Sep 17 00:00:00 2001 From: Dan Smith Date: Wed, 4 Jan 2017 10:55:16 -0800 Subject: [PATCH 084/189] Bump uvcclient to 0.10.0 (#5175) This brings fixes for newer versions of unifi-video and a few fixes. --- homeassistant/components/camera/uvc.py | 2 +- requirements_all.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/camera/uvc.py b/homeassistant/components/camera/uvc.py index c29100ecaad..c5252209996 100644 --- a/homeassistant/components/camera/uvc.py +++ b/homeassistant/components/camera/uvc.py @@ -14,7 +14,7 @@ from homeassistant.const import CONF_PORT from homeassistant.components.camera import Camera, PLATFORM_SCHEMA import homeassistant.helpers.config_validation as cv -REQUIREMENTS = ['uvcclient==0.9.0'] +REQUIREMENTS = ['uvcclient==0.10.0'] _LOGGER = logging.getLogger(__name__) diff --git a/requirements_all.txt b/requirements_all.txt index ca0530912cc..709f7ccd8ec 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -597,7 +597,7 @@ uber_rides==0.2.7 urllib3 # homeassistant.components.camera.uvc -uvcclient==0.9.0 +uvcclient==0.10.0 # homeassistant.components.device_tracker.volvooncall volvooncall==0.1.1 From 5e8e2a8312e3de769267f3c8d06341b3b310dd5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Arnauts?= Date: Wed, 4 Jan 2017 21:06:09 +0100 Subject: [PATCH 085/189] Ping device tracker (#5176) * Ping device tracker * Style fixes --- .coveragerc | 1 + .../components/device_tracker/ping.py | 92 +++++++++++++++++++ 2 files changed, 93 insertions(+) create mode 100644 homeassistant/components/device_tracker/ping.py diff --git a/.coveragerc b/.coveragerc index 34531651358..bd0376ee87a 100644 --- a/.coveragerc +++ b/.coveragerc @@ -157,6 +157,7 @@ omit = homeassistant/components/device_tracker/luci.py homeassistant/components/device_tracker/netgear.py homeassistant/components/device_tracker/nmap_tracker.py + homeassistant/components/device_tracker/ping.py homeassistant/components/device_tracker/snmp.py homeassistant/components/device_tracker/swisscom.py homeassistant/components/device_tracker/thomson.py diff --git a/homeassistant/components/device_tracker/ping.py b/homeassistant/components/device_tracker/ping.py new file mode 100644 index 00000000000..de75a09a943 --- /dev/null +++ b/homeassistant/components/device_tracker/ping.py @@ -0,0 +1,92 @@ +""" +Tracks devices by sending a ICMP ping. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/device_tracker.ping/ + +device_tracker: + - platform: ping + count: 2 + hosts: + host_one: pc.local + host_two: 192.168.2.25 +""" +import logging +import subprocess +import sys +from datetime import timedelta + +import voluptuous as vol + +from homeassistant.components.device_tracker import ( + PLATFORM_SCHEMA, DEFAULT_SCAN_INTERVAL) +from homeassistant.helpers.event import track_point_in_utc_time +from homeassistant import util +from homeassistant import const +import homeassistant.helpers.config_validation as cv + +DEPENDENCIES = [] + +_LOGGER = logging.getLogger(__name__) + +CONF_PING_COUNT = 'count' + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required(const.CONF_HOSTS): {cv.string: cv.string}, + vol.Optional(CONF_PING_COUNT, default=1): cv.positive_int, +}) + + +class Host: + """Host object with ping detection.""" + + def __init__(self, ip_address, dev_id, hass, config): + """Initialize the Host pinger.""" + self.hass = hass + 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] + else: + self._ping_cmd = ['ping', '-n', '-q', '-c1', '-W1', + self.ip_address] + + def ping(self): + """Send ICMP ping and return True if success.""" + pinger = subprocess.Popen(self._ping_cmd, stdout=subprocess.PIPE) + try: + pinger.communicate() + return pinger.returncode == 0 + except subprocess.CalledProcessError: + return False + + def update(self, see): + """Update device state by sending one or more ping messages.""" + failed = 0 + while failed < self._count: # check more times if host in unreachable + if self.ping(): + see(dev_id=self.dev_id) + return True + failed += 1 + + _LOGGER.debug("ping KO on ip=%s failed=%d", self.ip_address, failed) + + +def setup_scanner(hass, config, see): + """Setup 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] + + DEFAULT_SCAN_INTERVAL) + _LOGGER.info("Started ping tracker with interval=%s on hosts: %s", + interval, ",".join([host.ip_address for host in hosts])) + + def update(now): + """Update all the hosts on every interval time.""" + for host in hosts: + host.update(see) + track_point_in_utc_time(hass, update, now + interval) + return True + + return update(util.dt.utcnow()) From 67ab1f69d8e0f5c03c455cbe08c851ecb841c64c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20H=C3=B8yer=20Iversen?= Date: Wed, 4 Jan 2017 21:15:50 +0100 Subject: [PATCH 086/189] user agent header (#5172) * user agent in header * update user agent info * Use user-agent from lib --- homeassistant/helpers/aiohttp_client.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/homeassistant/helpers/aiohttp_client.py b/homeassistant/helpers/aiohttp_client.py index a1ec8ac85da..b0bf2b8e1d3 100644 --- a/homeassistant/helpers/aiohttp_client.py +++ b/homeassistant/helpers/aiohttp_client.py @@ -1,16 +1,19 @@ """Helper for aiohttp webclient stuff.""" +import sys import asyncio - import aiohttp +from aiohttp.hdrs import USER_AGENT from homeassistant.core import callback from homeassistant.const import EVENT_HOMEASSISTANT_STOP - +from homeassistant.const import __version__ DATA_CONNECTOR = 'aiohttp_connector' DATA_CONNECTOR_NOTVERIFY = 'aiohttp_connector_notverify' DATA_CLIENTSESSION = 'aiohttp_clientsession' DATA_CLIENTSESSION_NOTVERIFY = 'aiohttp_clientsession_notverify' +SERVER_SOFTWARE = 'HomeAssistant/{0} aiohttp/{1} Python/{2[0]}.{2[1]}'.format( + __version__, aiohttp.__version__, sys.version_info) @callback @@ -28,7 +31,8 @@ def async_get_clientsession(hass, verify_ssl=True): connector = _async_get_connector(hass, verify_ssl) clientsession = aiohttp.ClientSession( loop=hass.loop, - connector=connector + connector=connector, + headers={USER_AGENT: SERVER_SOFTWARE} ) _async_register_clientsession_shutdown(hass, clientsession) hass.data[key] = clientsession @@ -52,6 +56,7 @@ def async_create_clientsession(hass, verify_ssl=True, auto_cleanup=True, clientsession = aiohttp.ClientSession( loop=hass.loop, connector=connector, + headers={USER_AGENT: SERVER_SOFTWARE}, **kwargs ) From 9f65b8fef50ce9ebfdb963d4bad6eac32631bee1 Mon Sep 17 00:00:00 2001 From: doudz Date: Wed, 4 Jan 2017 22:05:41 +0100 Subject: [PATCH 087/189] add offline tts using pico (#5005) * add offline tts using pico * Update picotts.py * Update picotts.py * Update picotts.py * Update picotts.py * Update picotts.py * Update picotts.py * Update picotts.py * Update .coveragerc --- .coveragerc | 1 + homeassistant/components/tts/picotts.py | 57 +++++++++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 homeassistant/components/tts/picotts.py diff --git a/.coveragerc b/.coveragerc index bd0376ee87a..38bea01387a 100644 --- a/.coveragerc +++ b/.coveragerc @@ -345,6 +345,7 @@ omit = homeassistant/components/switch/transmission.py homeassistant/components/switch/wake_on_lan.py homeassistant/components/thingspeak.py + homeassistant/components/tts/picotts.py homeassistant/components/upnp.py homeassistant/components/weather/openweathermap.py homeassistant/components/zeroconf.py diff --git a/homeassistant/components/tts/picotts.py b/homeassistant/components/tts/picotts.py new file mode 100644 index 00000000000..366973813a2 --- /dev/null +++ b/homeassistant/components/tts/picotts.py @@ -0,0 +1,57 @@ +""" +Support for the picotts speech service. + +For more details about this component, please refer to the documentation at +https://home-assistant.io/components/tts/picotts/ +""" +import os +import tempfile +import shutil +import subprocess +import logging +import voluptuous as vol + +from homeassistant.components.tts import Provider, PLATFORM_SCHEMA, CONF_LANG + +_LOGGER = logging.getLogger(__name__) + +SUPPORT_LANGUAGES = ['en-US', 'en-GB', 'de-DE', 'es-ES', 'fr-FR', 'it-IT'] + +DEFAULT_LANG = 'en-US' + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Optional(CONF_LANG, default=DEFAULT_LANG): vol.In(SUPPORT_LANGUAGES), +}) + + +def get_engine(hass, config): + """Setup pico speech component.""" + if shutil.which("pico2wave") is None: + _LOGGER.error("'pico2wave' was not found") + return False + return PicoProvider() + + +class PicoProvider(Provider): + """pico speech api provider.""" + + def get_tts_audio(self, message, language=None): + """Load TTS using pico2wave.""" + if language not in SUPPORT_LANGUAGES: + language = self.language + with tempfile.NamedTemporaryFile(suffix='.wav', delete=False) as tmpf: + fname = tmpf.name + cmd = ['pico2wave', '--wave', fname, '-l', language, message] + subprocess.call(cmd) + data = None + try: + with open(fname, 'rb') as voice: + data = voice.read() + except OSError: + _LOGGER.error("Error trying to read %s", fname) + return (None, None) + finally: + os.remove(fname) + if data: + return ("wav", data) + return (None, None) From ff0788324c73ebecb57d67960c05870c93e680bd Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Wed, 4 Jan 2017 13:31:31 -0800 Subject: [PATCH 088/189] Add support for Tikteck Bluetooth bulbs (#4843) * Add support for Tikteck Bluetooth bulbs Adds support for the Tikteck RGBW BLE bulbs. These don't provide "true" RGBW support - at a certain point in RGB space, the white LEDs turn on. Each bulb has a specific key that needs to be extracted from the Android app. * Update tikteck.py --- .coveragerc | 1 + homeassistant/components/light/tikteck.py | 134 ++++++++++++++++++++++ requirements_all.txt | 3 + 3 files changed, 138 insertions(+) create mode 100644 homeassistant/components/light/tikteck.py diff --git a/.coveragerc b/.coveragerc index 38bea01387a..d3bc2bf18e9 100644 --- a/.coveragerc +++ b/.coveragerc @@ -184,6 +184,7 @@ omit = homeassistant/components/light/lifx.py homeassistant/components/light/limitlessled.py homeassistant/components/light/osramlightify.py + homeassistant/components/light/tikteck.py homeassistant/components/light/x10.py homeassistant/components/light/yeelight.py homeassistant/components/lirc.py diff --git a/homeassistant/components/light/tikteck.py b/homeassistant/components/light/tikteck.py new file mode 100644 index 00000000000..7b0222107a2 --- /dev/null +++ b/homeassistant/components/light/tikteck.py @@ -0,0 +1,134 @@ +""" +Support for Tikteck lights. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/light.tikteck/ +""" +import logging + +import voluptuous as vol + +from homeassistant.const import CONF_DEVICES, CONF_NAME, CONF_PASSWORD +from homeassistant.components.light import ( + ATTR_BRIGHTNESS, ATTR_RGB_COLOR, SUPPORT_BRIGHTNESS, SUPPORT_RGB_COLOR, + Light, PLATFORM_SCHEMA) +import homeassistant.helpers.config_validation as cv + +REQUIREMENTS = ['tikteck==0.4'] + +_LOGGER = logging.getLogger(__name__) + +SUPPORT_TIKTECK_LED = (SUPPORT_BRIGHTNESS | SUPPORT_RGB_COLOR) + +DEVICE_SCHEMA = vol.Schema({ + vol.Optional(CONF_NAME): cv.string, + vol.Required(CONF_PASSWORD): cv.string, +}) + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Optional(CONF_DEVICES, default={}): {cv.string: DEVICE_SCHEMA}, +}) + + +# pylint: disable=unused-argument +def setup_platform(hass, config, add_devices, discovery_info=None): + """Set up the Tikteck platform.""" + lights = [] + for address, device_config in config[CONF_DEVICES].items(): + device = {} + device['name'] = device_config[CONF_NAME] + device['password'] = device_config[CONF_PASSWORD] + device['address'] = address + light = TikteckLight(device) + if light.is_valid: + lights.append(light) + + add_devices(lights) + + +class TikteckLight(Light): + """Representation of a Tikteck light.""" + + def __init__(self, device): + """Initialize the light.""" + import tikteck + + self._name = device['name'] + self._address = device['address'] + self._password = device['password'] + self._brightness = 255 + self._rgb = [255, 255, 255] + self._state = False + self.is_valid = True + self._bulb = tikteck.tikteck(self._address, "Smart Light", + self._password) + if self._bulb.connect() is False: + self.is_valid = False + _LOGGER.error( + "Failed to connect to bulb %s, %s", self._address, self._name) + + @property + def unique_id(self): + """Return the ID of this light.""" + return "{}.{}".format(self.__class__, self._address) + + @property + def name(self): + """Return the name of the device if any.""" + return self._name + + @property + def is_on(self): + """Return true if device is on.""" + return self._state + + @property + def brightness(self): + """Return the brightness of this light between 0..255.""" + return self._brightness + + @property + def rgb_color(self): + """Return the color property.""" + return self._rgb + + @property + def supported_features(self): + """Flag supported features.""" + return SUPPORT_TIKTECK_LED + + @property + def should_poll(self): + """Don't poll.""" + return False + + @property + def assumed_state(self): + """We can't read the actual state, so assume it matches.""" + return True + + def set_state(self, red, green, blue, brightness): + """Set the bulb state.""" + return self._bulb.set_state(red, green, blue, brightness) + + def turn_on(self, **kwargs): + """Turn the specified light on.""" + self._state = True + + rgb = kwargs.get(ATTR_RGB_COLOR) + brightness = kwargs.get(ATTR_BRIGHTNESS) + + if rgb is not None: + self._rgb = rgb + if brightness is not None: + self._brightness = brightness + + self.set_state(self._rgb[0], self._rgb[1], self._rgb[2], + self.brightness) + self.schedule_update_ha_state() + + def turn_off(self, **kwargs): + """Turn the specified light off.""" + self._state = False + self.set_state(0, 0, 0, 0) + self.schedule_update_ha_state() diff --git a/requirements_all.txt b/requirements_all.txt index 709f7ccd8ec..fed2d1296a0 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -583,6 +583,9 @@ temperusb==1.5.1 # homeassistant.components.thingspeak thingspeak==0.4.0 +# homeassistant.components.light.tikteck +tikteck==0.4 + # homeassistant.components.sensor.transmission # homeassistant.components.switch.transmission transmissionrpc==0.11 From 4ef7e08553b224f8d28bd4a7e797ac7a65a4e515 Mon Sep 17 00:00:00 2001 From: Brent Hughes Date: Wed, 4 Jan 2017 15:36:54 -0600 Subject: [PATCH 089/189] Rewrite influxdb metrics to be more consistent (#4791) * Updated to make all metrics consistent * Updated existing test for new format * Updated checks on lists and dictionarys --- homeassistant/components/influxdb.py | 61 ++++--- tests/components/test_influxdb.py | 252 ++++++++++----------------- 2 files changed, 124 insertions(+), 189 deletions(-) diff --git a/homeassistant/components/influxdb.py b/homeassistant/components/influxdb.py index c712cf6a27e..0250efae818 100644 --- a/homeassistant/components/influxdb.py +++ b/homeassistant/components/influxdb.py @@ -9,9 +9,8 @@ import logging 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) + EVENT_STATE_CHANGED, CONF_HOST, CONF_PORT, CONF_SSL, CONF_VERIFY_SSL, + CONF_USERNAME, CONF_BLACKLIST, CONF_PASSWORD, CONF_WHITELIST) from homeassistant.helpers import state as state_helper import homeassistant.helpers.config_validation as cv @@ -38,7 +37,6 @@ CONFIG_SCHEMA = vol.Schema({ vol.Optional(CONF_DB_NAME, default=DEFAULT_DATABASE): cv.string, vol.Optional(CONF_PORT): cv.port, vol.Optional(CONF_SSL): cv.boolean, - vol.Optional(CONF_DEFAULT_MEASUREMENT): cv.string, vol.Optional(CONF_TAGS, default={}): vol.Schema({cv.string: cv.string}), vol.Optional(CONF_WHITELIST, default=[]): @@ -78,7 +76,6 @@ def setup(hass, config): blacklist = conf.get(CONF_BLACKLIST) whitelist = conf.get(CONF_WHITELIST) tags = conf.get(CONF_TAGS) - default_measurement = conf.get(CONF_DEFAULT_MEASUREMENT) try: influx = InfluxDBClient(**kwargs) @@ -92,51 +89,57 @@ def setup(hass, config): def influx_event_listener(event): """Listen for new messages on the bus and sends them to Influx.""" state = event.data.get('new_state') - if state is None or state.state in ( - STATE_UNKNOWN, '', STATE_UNAVAILABLE) or \ - state.entity_id in blacklist: + if state is None or state.entity_id in blacklist: + return + + if whitelist and state.entity_id not in whitelist: return try: - if len(whitelist) > 0 and state.entity_id not in whitelist: - return - _state = state_helper.state_as_number(state) except ValueError: _state = state.state - measurement = state.attributes.get('unit_of_measurement') - if measurement in (None, ''): - if default_measurement: - measurement = default_measurement - else: - measurement = state.entity_id - + # Create a counter for this state change json_body = [ { - 'measurement': measurement, + 'measurement': "hass.state.count", 'tags': { 'domain': state.domain, 'entity_id': state.object_id, }, 'time': event.time_fired, 'fields': { - 'value': _state, + 'value': 1 } } ] - for key, value in state.attributes.items(): - if key != 'unit_of_measurement': - if isinstance(value, (str, float, bool)) or \ - key.endswith('_id'): - json_body[0]['fields'][key] = value - elif isinstance(value, int): - # Prevent column data errors in influxDB. - json_body[0]['fields'][key] = float(value) - json_body[0]['tags'].update(tags) + state_fields = {} + if isinstance(_state, (int, float)): + state_fields['value'] = float(_state) + + for key, value in state.attributes.items(): + if isinstance(value, (int, float)): + state_fields[key] = float(value) + + if state_fields: + json_body.append( + { + 'measurement': "hass.state", + 'tags': { + 'domain': state.domain, + 'entity_id': state.object_id + }, + 'time': event.time_fired, + 'fields': state_fields + } + ) + + json_body[1]['tags'].update(tags) + try: influx.write_points(json_body) except exceptions.InfluxDBClientError: diff --git a/tests/components/test_influxdb.py b/tests/components/test_influxdb.py index f7536958283..1e64351e406 100644 --- a/tests/components/test_influxdb.py +++ b/tests/components/test_influxdb.py @@ -106,36 +106,43 @@ class TestInfluxDB(unittest.TestCase): """Test the event listener.""" self._setup() - valid = { - '1': 1, - '1.0': 1.0, - STATE_ON: 1, - STATE_OFF: 0, - 'foo': 'foo' - } + valid = {'1': 1, '1.0': 1.0, STATE_ON: 1, STATE_OFF: 0, 'str': 'str'} for in_, out in valid.items(): - attrs = { - 'unit_of_measurement': 'foobars', - 'longitude': '1.1', - 'latitude': '2.2' - } - state = mock.MagicMock( - state=in_, domain='fake', object_id='entity', attributes=attrs) + state = mock.MagicMock(state=in_, domain='fake', + object_id='entity') event = mock.MagicMock(data={'new_state': state}, time_fired=12345) - body = [{ - 'measurement': 'foobars', - 'tags': { - 'domain': 'fake', - 'entity_id': 'entity', - }, - 'time': 12345, - 'fields': { - 'value': out, - 'longitude': '1.1', - 'latitude': '2.2' - }, - }] + + body = [ + { + 'measurement': 'hass.state.count', + 'tags': { + 'domain': 'fake', + 'entity_id': 'entity', + }, + 'time': 12345, + 'fields': { + 'value': 1, + } + } + ] + + if isinstance(out, (int, float)): + body.append( + { + 'measurement': 'hass.state', + 'tags': { + 'domain': 'fake', + 'entity_id': 'entity', + }, + 'time': 12345, + 'fields': { + 'value': float(out) + } + } + ) + self.handler_method(event) + self.assertEqual( mock_client.return_value.write_points.call_count, 1 ) @@ -143,40 +150,7 @@ class TestInfluxDB(unittest.TestCase): mock_client.return_value.write_points.call_args, mock.call(body) ) - mock_client.return_value.write_points.reset_mock() - def test_event_listener_no_units(self, mock_client): - """Test the event listener for missing units.""" - self._setup() - - for unit in (None, ''): - if unit: - attrs = {'unit_of_measurement': unit} - else: - attrs = {} - state = mock.MagicMock( - state=1, domain='fake', entity_id='entity-id', - object_id='entity', attributes=attrs) - event = mock.MagicMock(data={'new_state': state}, time_fired=12345) - body = [{ - 'measurement': 'entity-id', - 'tags': { - 'domain': 'fake', - 'entity_id': 'entity', - }, - 'time': 12345, - 'fields': { - 'value': 1, - }, - }] - self.handler_method(event) - self.assertEqual( - mock_client.return_value.write_points.call_count, 1 - ) - self.assertEqual( - mock_client.return_value.write_points.call_args, - mock.call(body) - ) mock_client.return_value.write_points.reset_mock() def test_event_listener_fail_write(self, mock_client): @@ -191,39 +165,6 @@ class TestInfluxDB(unittest.TestCase): influx_client.exceptions.InfluxDBClientError('foo') self.handler_method(event) - def test_event_listener_states(self, mock_client): - """Test the event listener against ignored states.""" - self._setup() - - for state_state in (1, 'unknown', '', 'unavailable'): - state = mock.MagicMock( - state=state_state, domain='fake', entity_id='entity-id', - object_id='entity', attributes={}) - event = mock.MagicMock(data={'new_state': state}, time_fired=12345) - body = [{ - 'measurement': 'entity-id', - 'tags': { - 'domain': 'fake', - 'entity_id': 'entity', - }, - 'time': 12345, - 'fields': { - 'value': 1, - }, - }] - self.handler_method(event) - if state_state == 1: - 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_blacklist(self, mock_client): """Test the event listener against a blacklist.""" self._setup() @@ -233,18 +174,34 @@ class TestInfluxDB(unittest.TestCase): 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, + + body = [ + { + 'measurement': 'hass.state.count', + 'tags': { + 'domain': 'fake', + 'entity_id': entity_id, + }, + 'time': 12345, + 'fields': { + 'value': 1, + } }, - 'time': 12345, - 'fields': { - 'value': 1, - }, - }] + { + 'measurement': 'hass.state', + 'tags': { + 'domain': 'fake', + 'entity_id': entity_id, + }, + 'time': 12345, + 'fields': { + 'value': 1 + } + } + ] + self.handler_method(event) + if entity_id == 'ok': self.assertEqual( mock_client.return_value.write_points.call_count, 1 @@ -255,6 +212,7 @@ class TestInfluxDB(unittest.TestCase): ) 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): @@ -271,27 +229,43 @@ class TestInfluxDB(unittest.TestCase): for in_, out in valid.items(): attrs = { 'unit_of_measurement': 'foobars', - 'longitude': '1.1', - 'latitude': '2.2', 'invalid_attribute': ['value1', 'value2'] } state = mock.MagicMock( state=in_, domain='fake', object_id='entity', attributes=attrs) event = mock.MagicMock(data={'new_state': state}, time_fired=12345) - body = [{ - 'measurement': 'foobars', - 'tags': { - 'domain': 'fake', - 'entity_id': 'entity', - }, - 'time': 12345, - 'fields': { - 'value': out, - 'longitude': '1.1', - 'latitude': '2.2' - }, - }] + + body = [ + { + 'measurement': 'hass.state.count', + 'tags': { + 'domain': 'fake', + 'entity_id': 'entity', + }, + 'time': 12345, + 'fields': { + 'value': 1, + } + } + ] + + if isinstance(out, (int, float)): + body.append( + { + 'measurement': 'hass.state', + 'tags': { + 'domain': 'fake', + 'entity_id': 'entity', + }, + 'time': 12345, + 'fields': { + 'value': float(out) + } + } + ) + self.handler_method(event) + self.assertEqual( mock_client.return_value.write_points.call_count, 1 ) @@ -299,47 +273,5 @@ class TestInfluxDB(unittest.TestCase): mock_client.return_value.write_points.call_args, mock.call(body) ) - mock_client.return_value.write_points.reset_mock() - def test_event_listener_default_measurement(self, mock_client): - """Test the event listener with a default measurement.""" - config = { - 'influxdb': { - 'host': 'host', - 'username': 'user', - 'password': 'pass', - 'default_measurement': 'state', - 'blacklist': ['fake.blacklisted'] - } - } - 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 ('ok', 'blacklisted'): - 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': 'state', - 'tags': { - 'domain': 'fake', - 'entity_id': entity_id, - }, - 'time': 12345, - 'fields': { - 'value': 1, - }, - }] - self.handler_method(event) - if entity_id == '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() From 2f907696f30bfd15ae6372a2238f4339d62367f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20H=C3=B8yer=20Iversen?= Date: Wed, 4 Jan 2017 23:20:30 +0100 Subject: [PATCH 090/189] =?UTF-8?q?[WIP]=20Spread=20the=20traffic=20to=20y?= =?UTF-8?q?r.no=20servers=20and=20remove=20yr.no=20from=20the=20default?= =?UTF-8?q?=E2=80=A6=20(#5171)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Spread the traffic to yr.no servers and remove yr.no from the default config * use unique address for yr.no * update yr tests * Wait 10 min extra before requesting new data * Update config.py * Update yr.py --- homeassistant/components/sensor/yr.py | 8 +++++--- tests/components/sensor/test_yr.py | 6 ++++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/homeassistant/components/sensor/yr.py b/homeassistant/components/sensor/yr.py index ef12ba392e1..7da72b6fd38 100644 --- a/homeassistant/components/sensor/yr.py +++ b/homeassistant/components/sensor/yr.py @@ -82,8 +82,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=0, - second=randrange(5, 25)) + async_track_utc_time_change(hass, weather.async_update, + minute=randrange(1, 10), + second=randrange(0, 59)) yield from weather.async_update() @@ -139,7 +140,8 @@ class YrData(object): def __init__(self, hass, coordinates, devices): """Initialize the data object.""" - self._url = 'http://api.yr.no/weatherapi/locationforecast/1.9/' + self._url = 'https://aa015h6buqvih86i1.api.met.no/'\ + 'weatherapi/locationforecast/1.9/' self._urlparams = coordinates self._nextrun = None self.devices = devices diff --git a/tests/components/sensor/test_yr.py b/tests/components/sensor/test_yr.py index 8d54037a379..d0504db963c 100644 --- a/tests/components/sensor/test_yr.py +++ b/tests/components/sensor/test_yr.py @@ -14,7 +14,8 @@ NOW = datetime(2016, 6, 9, 1, tzinfo=dt_util.UTC) @asyncio.coroutine def test_default_setup(hass, aioclient_mock): """Test the default setup.""" - aioclient_mock.get('http://api.yr.no/weatherapi/locationforecast/1.9/', + aioclient_mock.get('https://aa015h6buqvih86i1.api.met.no/' + 'weatherapi/locationforecast/1.9/', text=load_fixture('yr.no.json')) config = {'platform': 'yr', 'elevation': 0} @@ -32,7 +33,8 @@ def test_default_setup(hass, aioclient_mock): @asyncio.coroutine def test_custom_setup(hass, aioclient_mock): """Test a custom setup.""" - aioclient_mock.get('http://api.yr.no/weatherapi/locationforecast/1.9/', + aioclient_mock.get('https://aa015h6buqvih86i1.api.met.no/' + 'weatherapi/locationforecast/1.9/', text=load_fixture('yr.no.json')) config = {'platform': 'yr', From 497a1c84b508eecb7d55ecaa2d0a8e7e1416b205 Mon Sep 17 00:00:00 2001 From: Sander de Leeuw Date: Thu, 5 Jan 2017 09:05:39 +0100 Subject: [PATCH 091/189] Fixed invalid response when sending a test-request from Locative iOS app (#5179) --- homeassistant/components/device_tracker/locative.py | 12 ++++++------ tests/components/device_tracker/test_locative.py | 7 +++++++ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/homeassistant/components/device_tracker/locative.py b/homeassistant/components/device_tracker/locative.py index 40d1ab8a12f..32eb033a284 100644 --- a/homeassistant/components/device_tracker/locative.py +++ b/homeassistant/components/device_tracker/locative.py @@ -63,18 +63,18 @@ class LocativeView(HomeAssistantView): return ('Device id not specified.', HTTP_UNPROCESSABLE_ENTITY) - if 'id' not in data: - _LOGGER.error('Location id not specified.') - return ('Location id not specified.', - HTTP_UNPROCESSABLE_ENTITY) - if 'trigger' not in data: _LOGGER.error('Trigger is not specified.') return ('Trigger is not specified.', HTTP_UNPROCESSABLE_ENTITY) + if 'id' not in data and data['trigger'] != 'test': + _LOGGER.error('Location id not specified.') + return ('Location id not specified.', + HTTP_UNPROCESSABLE_ENTITY) + device = data['device'].replace('-', '') - location_name = data['id'].lower() + location_name = data.get('id', data['trigger']).lower() direction = data['trigger'] gps_location = (data[ATTR_LATITUDE], data[ATTR_LONGITUDE]) diff --git a/tests/components/device_tracker/test_locative.py b/tests/components/device_tracker/test_locative.py index 20257d5d1f5..33f1b078166 100644 --- a/tests/components/device_tracker/test_locative.py +++ b/tests/components/device_tracker/test_locative.py @@ -108,6 +108,13 @@ class TestLocative(unittest.TestCase): req = requests.get(_url(copy)) self.assertEqual(200, req.status_code) + # Test message, no location + copy = data.copy() + copy['trigger'] = 'test' + del copy['id'] + req = requests.get(_url(copy)) + self.assertEqual(200, req.status_code) + # Unknown trigger copy = data.copy() copy['trigger'] = 'foobar' From 74aa8194d77825156ca9b7591ca7386718a73f42 Mon Sep 17 00:00:00 2001 From: happyleavesaoc Date: Thu, 5 Jan 2017 03:44:15 -0500 Subject: [PATCH 092/189] USPS sensor (#5180) * usps sensor * Update usps.py --- .coveragerc | 1 + homeassistant/components/sensor/usps.py | 92 +++++++++++++++++++++++++ requirements_all.txt | 3 + 3 files changed, 96 insertions(+) create mode 100644 homeassistant/components/sensor/usps.py diff --git a/.coveragerc b/.coveragerc index d3bc2bf18e9..9d53970762d 100644 --- a/.coveragerc +++ b/.coveragerc @@ -321,6 +321,7 @@ omit = homeassistant/components/sensor/transmission.py homeassistant/components/sensor/twitch.py homeassistant/components/sensor/uber.py + homeassistant/components/sensor/usps.py homeassistant/components/sensor/vasttrafik.py homeassistant/components/sensor/waqi.py homeassistant/components/sensor/xbox_live.py diff --git a/homeassistant/components/sensor/usps.py b/homeassistant/components/sensor/usps.py new file mode 100644 index 00000000000..2290749a717 --- /dev/null +++ b/homeassistant/components/sensor/usps.py @@ -0,0 +1,92 @@ +""" +Sensor for USPS packages. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/sensor.usps/ +""" +from collections import defaultdict +import logging +from datetime import timedelta + +import voluptuous as vol + +from homeassistant.components.sensor import PLATFORM_SCHEMA +from homeassistant.const import CONF_USERNAME, CONF_PASSWORD, ATTR_ATTRIBUTION +from homeassistant.helpers.entity import Entity +from homeassistant.util import slugify +from homeassistant.util import Throttle +import homeassistant.helpers.config_validation as cv + +REQUIREMENTS = ['myusps==1.0.0'] + +_LOGGER = logging.getLogger(__name__) + +CONF_UPDATE_INTERVAL = 'update_interval' +ICON = 'mdi:package-variant-closed' + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required(CONF_USERNAME): cv.string, + vol.Required(CONF_PASSWORD): cv.string, + vol.Optional(CONF_UPDATE_INTERVAL, default=timedelta(seconds=1800)): ( + vol.All(cv.time_period, cv.positive_timedelta)), +}) + + +# pylint: disable=unused-argument +def setup_platform(hass, config, add_devices, discovery_info=None): + """Setup the USPS platform.""" + import myusps + try: + session = myusps.get_session(config.get(CONF_USERNAME), + config.get(CONF_PASSWORD)) + except myusps.USPSError: + _LOGGER.exception('Could not connect to My USPS') + return False + + add_devices([USPSSensor(session, config.get(CONF_UPDATE_INTERVAL))]) + + +class USPSSensor(Entity): + """USPS Sensor.""" + + def __init__(self, session, interval): + """Initialize the sensor.""" + import myusps + self._session = session + self._profile = myusps.get_profile(session) + self._packages = None + self.update = Throttle(interval)(self._update) + self.update() + + @property + def name(self): + """Return the name of the sensor.""" + return self._profile.get('address') + + @property + def state(self): + """Return the state of the sensor.""" + return len(self._packages) + + def _update(self): + """Update device state.""" + import myusps + self._packages = myusps.get_packages(self._session) + + @property + def device_state_attributes(self): + """Return the state attributes.""" + import myusps + status_counts = defaultdict(int) + for package in self._packages: + status_counts[slugify(package['status'])] += 1 + attributes = { + ATTR_ATTRIBUTION: myusps.ATTRIBUTION + } + attributes.update(status_counts) + return attributes + + @property + def icon(self): + """Icon to use in the frontend.""" + return ICON diff --git a/requirements_all.txt b/requirements_all.txt index fed2d1296a0..c55dab4738b 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -303,6 +303,9 @@ mficlient==0.3.0 # homeassistant.components.sensor.miflora miflora==0.1.14 +# homeassistant.components.sensor.usps +myusps==1.0.0 + # homeassistant.components.discovery netdisco==0.8.1 From cb851283044c05e3f8da6795ef3ded353ebbcbe6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Arnauts?= Date: Thu, 5 Jan 2017 09:45:14 +0100 Subject: [PATCH 093/189] Speeds up lint and test in docker by keeping the cache between invocations. (#5177) * Add a volume to store the tox cache on the host. This gives quite some speed boost when running lint_docker and test_docker. * Only map .tox directory for cache. --- script/lint | 2 ++ script/lint_docker | 7 ++++++- script/test | 4 +++- script/test_docker | 9 +++++++-- 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/script/lint b/script/lint index 624ff0e5093..ab7561b9a5b 100755 --- a/script/lint +++ b/script/lint @@ -1,6 +1,8 @@ #!/bin/sh # Execute lint to spot code mistakes. +cd "$(dirname "$0")/.." + if [ "$1" = "--changed" ]; then export files="`git diff upstream/dev --name-only | grep -e '\.py$'`" echo "=================================================" diff --git a/script/lint_docker b/script/lint_docker index dca877d49ff..7e6ff42e074 100755 --- a/script/lint_docker +++ b/script/lint_docker @@ -4,5 +4,10 @@ # Stop on errors set -e +cd "$(dirname "$0")/.." + docker build -t home-assistant-test -f virtualization/Docker/Dockerfile.dev . -docker run --rm -it home-assistant-test tox -e lint +docker run --rm \ + -v `pwd`/.tox/:/usr/src/app/.tox/ \ + -t -i home-assistant-test \ + tox -e lint diff --git a/script/test b/script/test index 7aca00421b3..2f3f3557094 100755 --- a/script/test +++ b/script/test @@ -1,4 +1,6 @@ #!/bin/sh -# Excutes the tests with tox. +# Executes the tests with tox. + +cd "$(dirname "$0")/.." tox -e py34 diff --git a/script/test_docker b/script/test_docker index 78b4247857b..75b7cddf970 100755 --- a/script/test_docker +++ b/script/test_docker @@ -1,8 +1,13 @@ #!/bin/sh -# Excutes the tests with tox in a docker container. +# Executes the tests with tox in a docker container. # Stop on errors set -e +cd "$(dirname "$0")/.." + docker build -t home-assistant-test -f virtualization/Docker/Dockerfile.dev . -docker run --rm -it home-assistant-test tox -e py35 +docker run --rm \ + -v `pwd`/.tox/:/usr/src/app/.tox/ \ + -t -i home-assistant-test \ + tox -e py35 From cbda516af992a6e19dcb58527469d7ad21dcb722 Mon Sep 17 00:00:00 2001 From: Johann Kellerman Date: Thu, 5 Jan 2017 21:33:22 +0200 Subject: [PATCH 094/189] ensure_list validator - Allow None to return an empty list (#5133) --- homeassistant/helpers/config_validation.py | 2 + tests/helpers/test_config_validation.py | 96 ++++++++++++++-------- 2 files changed, 62 insertions(+), 36 deletions(-) diff --git a/homeassistant/helpers/config_validation.py b/homeassistant/helpers/config_validation.py index 4755c1b03a4..57ab1582454 100644 --- a/homeassistant/helpers/config_validation.py +++ b/homeassistant/helpers/config_validation.py @@ -85,6 +85,8 @@ def isfile(value: Any) -> str: def ensure_list(value: Union[T, Sequence[T]]) -> Sequence[T]: """Wrap value in list if it is not one.""" + if value is None: + return [] return value if isinstance(value, list) else [value] diff --git a/tests/helpers/test_config_validation.py b/tests/helpers/test_config_validation.py index 60972b7e494..9d8f60279e9 100644 --- a/tests/helpers/test_config_validation.py +++ b/tests/helpers/test_config_validation.py @@ -4,10 +4,10 @@ from datetime import timedelta, datetime, date import enum import os from socket import _GLOBAL_DEFAULT_TIMEOUT +from unittest.mock import Mock, patch import pytest import voluptuous as vol -from unittest.mock import Mock, patch import homeassistant.helpers.config_validation as cv @@ -100,20 +100,33 @@ def test_url(): def test_platform_config(): """Test platform config validation.""" - for value in ( + options = ( {}, {'hello': 'world'}, - ): + ) + for value in options: with pytest.raises(vol.MultipleInvalid): cv.PLATFORM_SCHEMA(value) - for value in ( + options = ( {'platform': 'mqtt'}, {'platform': 'mqtt', 'beer': 'yes'}, - ): + ) + for value in options: cv.PLATFORM_SCHEMA(value) +def test_ensure_list(): + """Test ensure_list.""" + schema = vol.Schema(cv.ensure_list) + assert [] == schema(None) + assert [1] == schema(1) + assert [1] == schema([1]) + assert ['1'] == schema('1') + assert ['1'] == schema(['1']) + assert [{'1': '2'}] == schema({'1': '2'}) + + def test_entity_id(): """Test entity ID validation.""" schema = vol.Schema(cv.entity_id) @@ -121,28 +134,30 @@ def test_entity_id(): with pytest.raises(vol.MultipleInvalid): schema('invalid_entity') - assert 'sensor.light' == schema('sensor.LIGHT') + assert schema('sensor.LIGHT') == 'sensor.light' def test_entity_ids(): """Test entity ID validation.""" schema = vol.Schema(cv.entity_ids) - for value in ( + options = ( 'invalid_entity', 'sensor.light,sensor_invalid', ['invalid_entity'], ['sensor.light', 'sensor_invalid'], ['sensor.light,sensor_invalid'], - ): + ) + for value in options: with pytest.raises(vol.MultipleInvalid): schema(value) - for value in ( + options = ( [], ['sensor.light'], 'sensor.light' - ): + ) + for value in options: schema(value) assert schema('sensor.LIGHT, light.kitchen ') == [ @@ -152,7 +167,7 @@ def test_entity_ids(): def test_event_schema(): """Test event_schema validation.""" - for value in ( + options = ( {}, None, { 'event_data': {}, @@ -161,14 +176,16 @@ def test_event_schema(): 'event': 'state_changed', 'event_data': 1, }, - ): + ) + for value in options: with pytest.raises(vol.MultipleInvalid): cv.EVENT_SCHEMA(value) - for value in ( + options = ( {'event': 'state_changed'}, {'event': 'state_changed', 'event_data': {'hello': 'world'}}, - ): + ) + for value in options: cv.EVENT_SCHEMA(value) @@ -200,16 +217,19 @@ def test_time_period(): """Test time_period validation.""" schema = vol.Schema(cv.time_period) - for value in ( + options = ( None, '', 'hello:world', '12:', '12:34:56:78', {}, {'wrong_key': -10} - ): + ) + for value in options: + with pytest.raises(vol.MultipleInvalid): schema(value) - for value in ( + options = ( '8:20', '23:59', '-8:20', '-23:59:59', '-48:00', {'minutes': 5}, 1, '5' - ): + ) + for value in options: schema(value) assert timedelta(seconds=180) == schema('180') @@ -229,7 +249,7 @@ def test_service(): def test_service_schema(): """Test service_schema validation.""" - for value in ( + options = ( {}, None, { 'service': 'homeassistant.turn_on', @@ -248,11 +268,12 @@ def test_service_schema(): 'brightness': '{{ no_end' } }, - ): + ) + for value in options: with pytest.raises(vol.MultipleInvalid): cv.SERVICE_SCHEMA(value) - for value in ( + options = ( {'service': 'homeassistant.turn_on'}, { 'service': 'homeassistant.turn_on', @@ -262,7 +283,8 @@ def test_service_schema(): 'service': 'homeassistant.turn_on', 'entity_id': ['light.kitchen', 'light.ceiling'], }, - ): + ) + for value in options: cv.SERVICE_SCHEMA(value) @@ -321,11 +343,12 @@ def test_template(): message='{} not considered invalid'.format(value)): schema(value) - for value in ( + options = ( 1, 'Hello', '{{ beer }}', '{% if 1 == 1 %}Hello{% else %}World{% endif %}', - ): + ) + for value in options: schema(value) @@ -337,13 +360,14 @@ def test_template_complex(): with pytest.raises(vol.MultipleInvalid): schema(value) - for value in ( + options = ( 1, 'Hello', '{{ beer }}', '{% if 1 == 1 %}Hello{% else %}World{% endif %}', {'test': 1, 'test2': '{{ beer }}'}, ['{{ beer }}', 1] - ): + ) + for value in options: schema(value) @@ -373,16 +397,18 @@ def test_key_dependency(): """Test key_dependency validator.""" schema = vol.Schema(cv.key_dependency('beer', 'soda')) - for value in ( + options = ( {'beer': None} - ): + ) + for value in options: with pytest.raises(vol.MultipleInvalid): schema(value) - for value in ( + options = ( {'beer': None, 'soda': None}, {'soda': None}, {} - ): + ) + for value in options: schema(value) @@ -429,7 +455,7 @@ def test_ordered_dict_key_validator(): schema({1: 'works'}) -def test_ordered_dict_value_validator(): +def test_ordered_dict_value_validator(): # pylint: disable=invalid-name """Test ordered_dict validator.""" schema = vol.Schema(cv.ordered_dict(cv.string)) @@ -459,12 +485,10 @@ def test_enum(): with pytest.raises(vol.Invalid): schema('value3') - TestEnum['value1'] - -def test_socket_timeout(): +def test_socket_timeout(): # pylint: disable=invalid-name """Test socket timeout validator.""" - TEST_CONF_TIMEOUT = 'timeout' + TEST_CONF_TIMEOUT = 'timeout' # pylint: disable=invalid-name schema = vol.Schema( {vol.Required(TEST_CONF_TIMEOUT, default=None): cv.socket_timeout}) @@ -478,4 +502,4 @@ def test_socket_timeout(): assert _GLOBAL_DEFAULT_TIMEOUT == schema({TEST_CONF_TIMEOUT: None})[TEST_CONF_TIMEOUT] - assert 1.0 == schema({TEST_CONF_TIMEOUT: 1})[TEST_CONF_TIMEOUT] + assert schema({TEST_CONF_TIMEOUT: 1})[TEST_CONF_TIMEOUT] == 1.0 From 6b682d0d81517a7e9be93c8a0918d69d6c5ed785 Mon Sep 17 00:00:00 2001 From: Martin Vacula Date: Thu, 5 Jan 2017 20:53:48 +0100 Subject: [PATCH 095/189] Beaglebone black GPIO control by switch v2 (#4908) * Added support for BBB GPIO * Requirements updated * unnecessary pylint statement removed * Changed according arduino switch * typo corrected * Hound errors solved * lint error * Update bbb_gpio.py --- .coveragerc | 3 + homeassistant/components/bbb_gpio.py | 68 +++++++++++++ homeassistant/components/switch/bbb_gpio.py | 100 ++++++++++++++++++++ requirements_all.txt | 3 + 4 files changed, 174 insertions(+) create mode 100644 homeassistant/components/bbb_gpio.py create mode 100644 homeassistant/components/switch/bbb_gpio.py diff --git a/.coveragerc b/.coveragerc index 9d53970762d..cee3448936c 100644 --- a/.coveragerc +++ b/.coveragerc @@ -13,6 +13,9 @@ omit = homeassistant/components/arduino.py homeassistant/components/*/arduino.py + homeassistant/components/bbb_gpio.py + homeassistant/components/*/bbb_gpio.py + homeassistant/components/bloomsky.py homeassistant/components/*/bloomsky.py diff --git a/homeassistant/components/bbb_gpio.py b/homeassistant/components/bbb_gpio.py new file mode 100644 index 00000000000..e85c027882f --- /dev/null +++ b/homeassistant/components/bbb_gpio.py @@ -0,0 +1,68 @@ +""" +Support for controlling GPIO pins of a Beaglebone Black. + +For more details about this component, please refer to the documentation at +https://home-assistant.io/components/bbb_gpio/ +""" +import logging + +from homeassistant.const import ( + EVENT_HOMEASSISTANT_START, EVENT_HOMEASSISTANT_STOP) + +REQUIREMENTS = ['Adafruit_BBIO==1.0.0'] + +_LOGGER = logging.getLogger(__name__) + +DOMAIN = 'bbb_gpio' + + +# pylint: disable=no-member +def setup(hass, config): + """Setup the Beaglebone black GPIO component.""" + import Adafruit_BBIO.GPIO as GPIO + + def cleanup_gpio(event): + """Stuff to do before stopping.""" + GPIO.cleanup() + + def prepare_gpio(event): + """Stuff to do when home assistant starts.""" + hass.bus.listen_once(EVENT_HOMEASSISTANT_STOP, cleanup_gpio) + + hass.bus.listen_once(EVENT_HOMEASSISTANT_START, prepare_gpio) + return True + + +def setup_output(pin): + """Setup a GPIO as output.""" + import Adafruit_BBIO.GPIO as GPIO + GPIO.setup(pin, GPIO.OUT) + + +def setup_input(pin, pull_mode): + """Setup a GPIO as input.""" + import Adafruit_BBIO.GPIO as GPIO + GPIO.setup(pin, GPIO.IN, + GPIO.PUD_DOWN if pull_mode == 'DOWN' else GPIO.PUD_UP) + + +def write_output(pin, value): + """Write a value to a GPIO.""" + import Adafruit_BBIO.GPIO as GPIO + GPIO.output(pin, value) + + +def read_input(pin): + """Read a value from a GPIO.""" + import Adafruit_BBIO.GPIO as GPIO + return GPIO.input(pin) + + +def edge_detect(pin, event_callback, bounce): + """Add detection for RISING and FALLING events.""" + import Adafruit_BBIO.GPIO as GPIO + GPIO.add_event_detect( + pin, + GPIO.BOTH, + callback=event_callback, + bouncetime=bounce) diff --git a/homeassistant/components/switch/bbb_gpio.py b/homeassistant/components/switch/bbb_gpio.py new file mode 100644 index 00000000000..f765cb95e1f --- /dev/null +++ b/homeassistant/components/switch/bbb_gpio.py @@ -0,0 +1,100 @@ +""" +Allows to configure a switch using BBB GPIO. + +Switch example for two GPIOs pins P9_12 and P9_42 +Allowed GPIO pin name is GPIOxxx or Px_x + +switch: + - platform: bbb_gpio + pins: + GPIO0_7: + name: LED Red + P9_12: + name: LED Green + initial: true + invert_logic: true +""" +import logging + +import voluptuous as vol + +from homeassistant.components.switch import PLATFORM_SCHEMA +import homeassistant.components.bbb_gpio as bbb_gpio +from homeassistant.const import (DEVICE_DEFAULT_NAME, CONF_NAME) +from homeassistant.helpers.entity import ToggleEntity +import homeassistant.helpers.config_validation as cv + +_LOGGER = logging.getLogger(__name__) + +DEPENDENCIES = ['bbb_gpio'] + +CONF_PINS = 'pins' +CONF_INITIAL = 'initial' +CONF_INVERT_LOGIC = 'invert_logic' + +PIN_SCHEMA = vol.Schema({ + vol.Required(CONF_NAME): cv.string, + vol.Optional(CONF_INITIAL, default=False): cv.boolean, + vol.Optional(CONF_INVERT_LOGIC, default=False): cv.boolean, +}) + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required(CONF_PINS, default={}): + vol.Schema({cv.string: PIN_SCHEMA}), +}) + + +# pylint: disable=unused-argument +def setup_platform(hass, config, add_devices, discovery_info=None): + """Setup the Beaglebone GPIO devices.""" + pins = config.get(CONF_PINS) + + switches = [] + for pin, params in pins.items(): + switches.append(BBBGPIOSwitch(pin, params)) + add_devices(switches) + + +class BBBGPIOSwitch(ToggleEntity): + """Representation of a Beaglebone GPIO.""" + + def __init__(self, pin, params): + """Initialize the pin.""" + self._pin = pin + self._name = params.get(CONF_NAME) or DEVICE_DEFAULT_NAME + self._state = params.get(CONF_INITIAL) + self._invert_logic = params.get(CONF_INVERT_LOGIC) + + bbb_gpio.setup_output(self._pin) + + if self._state is False: + bbb_gpio.write_output(self._pin, 1 if self._invert_logic else 0) + else: + bbb_gpio.write_output(self._pin, 0 if self._invert_logic else 1) + + @property + def name(self): + """Return the name of the switch.""" + return self._name + + @property + def should_poll(self): + """No polling needed.""" + return False + + @property + def is_on(self): + """Return true if device is on.""" + return self._state + + def turn_on(self): + """Turn the device on.""" + bbb_gpio.write_output(self._pin, 0 if self._invert_logic else 1) + self._state = True + self.schedule_update_ha_state() + + def turn_off(self): + """Turn the device off.""" + bbb_gpio.write_output(self._pin, 1 if self._invert_logic else 0) + self._state = False + self.schedule_update_ha_state() diff --git a/requirements_all.txt b/requirements_all.txt index c55dab4738b..dd43d13fd4f 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -12,6 +12,9 @@ async_timeout==1.1.0 # homeassistant.components.nuimo_controller --only-binary=all http://github.com/getSenic/nuimo-linux-python/archive/29fc42987f74d8090d0e2382e8f248ff5990b8c9.zip#nuimo==1.0.0 +# homeassistant.components.bbb_gpio +Adafruit_BBIO==1.0.0 + # homeassistant.components.isy994 PyISY==1.0.7 From 276a29c8f483298f372e343a1302cabc1e3fa3df Mon Sep 17 00:00:00 2001 From: Adam Mills Date: Thu, 5 Jan 2017 15:01:13 -0500 Subject: [PATCH 096/189] Convert Kodi platform to async (#5167) * Convert Kodi platform to async * Remove unnecessary async_update_ha_state --- homeassistant/components/media_player/kodi.py | 210 +++++++++++------- requirements_all.txt | 2 + 2 files changed, 127 insertions(+), 85 deletions(-) diff --git a/homeassistant/components/media_player/kodi.py b/homeassistant/components/media_player/kodi.py index 0a88336b5a3..abab433eb38 100644 --- a/homeassistant/components/media_player/kodi.py +++ b/homeassistant/components/media_player/kodi.py @@ -4,9 +4,11 @@ Support for interfacing with the XBMC/Kodi JSON-RPC API. For more details about this platform, please refer to the documentation at https://home-assistant.io/components/media_player.kodi/ """ +import asyncio import logging import urllib +import aiohttp import voluptuous as vol from homeassistant.components.media_player import ( @@ -16,9 +18,10 @@ from homeassistant.components.media_player import ( from homeassistant.const import ( STATE_IDLE, STATE_OFF, STATE_PAUSED, STATE_PLAYING, CONF_HOST, CONF_NAME, CONF_PORT, CONF_USERNAME, CONF_PASSWORD) +from homeassistant.helpers.aiohttp_client import async_get_clientsession import homeassistant.helpers.config_validation as cv -REQUIREMENTS = ['jsonrpc-requests==0.3'] +REQUIREMENTS = ['jsonrpc-async==0.1'] _LOGGER = logging.getLogger(__name__) @@ -26,6 +29,7 @@ CONF_TURN_OFF_ACTION = 'turn_off_action' DEFAULT_NAME = 'Kodi' DEFAULT_PORT = 8080 +DEFAULT_TIMEOUT = 5 TURN_OFF_ACTION = [None, 'quit', 'hibernate', 'suspend', 'reboot', 'shutdown'] @@ -43,7 +47,9 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ }) -def setup_platform(hass, config, add_entities, discovery_info=None): +@asyncio.coroutine +def async_setup_platform(hass, config, async_add_entities, + discovery_info=None): """Setup the Kodi platform.""" host = config.get(CONF_HOST) port = config.get(CONF_PORT) @@ -55,29 +61,34 @@ def setup_platform(hass, config, add_entities, discovery_info=None): "definitions here: " "https://home-assistant.io/components/media_player.kodi/") - add_entities([ - KodiDevice( - config.get(CONF_NAME), - host=host, port=port, - username=config.get(CONF_USERNAME), - password=config.get(CONF_PASSWORD), - turn_off_action=config.get(CONF_TURN_OFF_ACTION)), - ]) + entity = KodiDevice( + hass, + name=config.get(CONF_NAME), + host=host, port=port, + username=config.get(CONF_USERNAME), + password=config.get(CONF_PASSWORD), + turn_off_action=config.get(CONF_TURN_OFF_ACTION)) + + yield from async_add_entities([entity], update_before_add=True) class KodiDevice(MediaPlayerDevice): """Representation of a XBMC/Kodi device.""" - def __init__(self, name, host, port, username=None, password=None, + def __init__(self, hass, name, host, port, username=None, password=None, turn_off_action=None): """Initialize the Kodi device.""" - import jsonrpc_requests + import jsonrpc_async + self.hass = hass self._name = name - kwargs = {'timeout': 5} + kwargs = { + 'timeout': DEFAULT_TIMEOUT, + 'session': async_get_clientsession(hass), + } if username is not None: - kwargs['auth'] = (username, password) + kwargs['auth'] = aiohttp.BasicAuth(username, password) image_auth_string = "{}:{}@".format(username, password) else: image_auth_string = "" @@ -86,26 +97,26 @@ class KodiDevice(MediaPlayerDevice): self._image_url = 'http://{}{}:{}/image'.format( image_auth_string, host, port) - self._server = jsonrpc_requests.Server(self._http_url, **kwargs) + self._server = jsonrpc_async.Server(self._http_url, **kwargs) self._turn_off_action = turn_off_action self._players = list() self._properties = None self._item = None self._app_properties = None - self.update() @property def name(self): """Return the name of the device.""" return self._name + @asyncio.coroutine def _get_players(self): """Return the active player objects or None.""" - import jsonrpc_requests + import jsonrpc_async try: - return self._server.Player.GetActivePlayers() - except jsonrpc_requests.jsonrpc.TransportError: + return (yield from self._server.Player.GetActivePlayers()) + except jsonrpc_async.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) @@ -125,28 +136,30 @@ class KodiDevice(MediaPlayerDevice): else: return STATE_PLAYING - def update(self): + @asyncio.coroutine + def async_update(self): """Retrieve latest state.""" - self._players = self._get_players() + self._players = yield from self._get_players() if self._players is not None and len(self._players) > 0: player_id = self._players[0]['playerid'] assert isinstance(player_id, int) - self._properties = self._server.Player.GetProperties( + self._properties = yield from self._server.Player.GetProperties( player_id, ['time', 'totaltime', 'speed', 'live'] ) - self._item = self._server.Player.GetItem( + self._item = (yield from self._server.Player.GetItem( player_id, ['title', 'file', 'uniqueid', 'thumbnail', 'artist'] - )['item'] + ))['item'] - self._app_properties = self._server.Application.GetProperties( - ['volume', 'muted'] - ) + self._app_properties = \ + yield from self._server.Application.GetProperties( + ['volume', 'muted'] + ) else: self._properties = None self._item = None @@ -218,94 +231,118 @@ class KodiDevice(MediaPlayerDevice): return supported_media_commands - def turn_off(self): + @asyncio.coroutine + def async_turn_off(self): """Execute turn_off_action to turn off media player.""" if self._turn_off_action == 'quit': - self._server.Application.Quit() + yield from self._server.Application.Quit() elif self._turn_off_action == 'hibernate': - self._server.System.Hibernate() + yield from self._server.System.Hibernate() elif self._turn_off_action == 'suspend': - self._server.System.Suspend() + yield from self._server.System.Suspend() elif self._turn_off_action == 'reboot': - self._server.System.Reboot() + yield from self._server.System.Reboot() elif self._turn_off_action == 'shutdown': - self._server.System.Shutdown() + yield from self._server.System.Shutdown() else: _LOGGER.warning('turn_off requested but turn_off_action is none') - self.update_ha_state() - - def volume_up(self): + @asyncio.coroutine + def async_volume_up(self): """Volume up the media player.""" - assert self._server.Input.ExecuteAction('volumeup') == 'OK' - self.update_ha_state() + assert ( + yield from self._server.Input.ExecuteAction('volumeup')) == 'OK' - def volume_down(self): + @asyncio.coroutine + def async_volume_down(self): """Volume down the media player.""" - assert self._server.Input.ExecuteAction('volumedown') == 'OK' - self.update_ha_state() + assert ( + yield from self._server.Input.ExecuteAction('volumedown')) == 'OK' - def set_volume_level(self, volume): - """Set volume level, range 0..1.""" - self._server.Application.SetVolume(int(volume * 100)) - self.update_ha_state() + def async_set_volume_level(self, volume): + """Set volume level, range 0..1. - def mute_volume(self, mute): - """Mute (true) or unmute (false) media player.""" - self._server.Application.SetMute(mute) - self.update_ha_state() + This method must be run in the event loop and returns a coroutine. + """ + return self._server.Application.SetVolume(int(volume * 100)) - def _set_play_state(self, state): + def async_mute_volume(self, mute): + """Mute (true) or unmute (false) media player. + + This method must be run in the event loop and returns a coroutine. + """ + return self._server.Application.SetMute(mute) + + @asyncio.coroutine + def async_set_play_state(self, state): """Helper method for play/pause/toggle.""" - players = self._get_players() + players = yield from self._get_players() if len(players) != 0: - self._server.Player.PlayPause(players[0]['playerid'], state) + yield from self._server.Player.PlayPause( + players[0]['playerid'], state) - self.update_ha_state() + def async_media_play_pause(self): + """Pause media on media player. - def media_play_pause(self): - """Pause media on media player.""" - self._set_play_state('toggle') + This method must be run in the event loop and returns a coroutine. + """ + return self.async_set_play_state('toggle') - def media_play(self): - """Play media.""" - self._set_play_state(True) + def async_media_play(self): + """Play media. - def media_pause(self): - """Pause the media player.""" - self._set_play_state(False) + This method must be run in the event loop and returns a coroutine. + """ + return self.async_set_play_state(True) - def media_stop(self): + def async_media_pause(self): + """Pause the media player. + + This method must be run in the event loop and returns a coroutine. + """ + return self.async_set_play_state(False) + + @asyncio.coroutine + def async_media_stop(self): """Stop the media player.""" - players = self._get_players() + players = yield from self._get_players() if len(players) != 0: - self._server.Player.Stop(players[0]['playerid']) + yield from self._server.Player.Stop(players[0]['playerid']) + @asyncio.coroutine def _goto(self, direction): """Helper method used for previous/next track.""" - players = self._get_players() + players = yield from self._get_players() if len(players) != 0: - self._server.Player.GoTo(players[0]['playerid'], direction) + if direction == 'previous': + # 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) - self.update_ha_state() + yield from self._server.Player.GoTo( + players[0]['playerid'], direction) - def media_next_track(self): - """Send next track command.""" - self._goto('next') + def async_media_next_track(self): + """Send next track command. - def media_previous_track(self): - """Send next track command.""" - # first seek to position 0, Kodi seems to go to the beginning - # of the current track current track is not at the beginning - self.media_seek(0) - self._goto('previous') + This method must be run in the event loop and returns a coroutine. + """ + return self._goto('next') - def media_seek(self, position): + def async_media_previous_track(self): + """Send next track command. + + This method must be run in the event loop and returns a coroutine. + """ + return self._goto('previous') + + @asyncio.coroutine + def async_media_seek(self, position): """Send seek command.""" - players = self._get_players() + players = yield from self._get_players() time = {} @@ -321,13 +358,16 @@ class KodiDevice(MediaPlayerDevice): time['hours'] = int(position) if len(players) != 0: - self._server.Player.Seek(players[0]['playerid'], time) + yield from self._server.Player.Seek(players[0]['playerid'], time) - self.update_ha_state() + def async_play_media(self, media_type, media_id, **kwargs): + """Send the play_media command to the media player. - def play_media(self, media_type, media_id, **kwargs): - """Send the play_media command to the media player.""" + This method must be run in the event loop and returns a coroutine. + """ if media_type == "CHANNEL": - self._server.Player.Open({"item": {"channelid": int(media_id)}}) + return self._server.Player.Open( + {"item": {"channelid": int(media_id)}}) else: - self._server.Player.Open({"item": {"file": str(media_id)}}) + return self._server.Player.Open( + {"item": {"file": str(media_id)}}) diff --git a/requirements_all.txt b/requirements_all.txt index dd43d13fd4f..9892551f9f8 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -272,6 +272,8 @@ influxdb==3.0.0 insteon_hub==0.4.5 # homeassistant.components.media_player.kodi +jsonrpc-async==0.1 + # homeassistant.components.notify.kodi jsonrpc-requests==0.3 From 95ddef31fe2866e03d8433a0c25c15b1fac4b725 Mon Sep 17 00:00:00 2001 From: MrMep Date: Thu, 5 Jan 2017 22:03:05 +0100 Subject: [PATCH 097/189] Update keyboard_remote.py (#5112) * Update keyboard_remote.py I changed os.path.isFile() to os.path.exists: as far as I know isFile doesn't work with device files. At least on my Ubuntu it wasn't working. Then I added some error control in case the keyboard disconnects: with bluetooth keyboards this happen often due to battery saving. Now it reconnects automatically when the keyboard wakes up. We could fire an event to hass when the keyboard connects-disconnects, maybe I'll do this later. We should also manage errors due to permissions problems on the device file, or at least give some info in the docs about how to allow HA to grab control over an system input file. I'm sorry if my coding isn't up to some standard practice I'm not aware of: I'm new to HA and to python itself, I'm just trying to be of help. Gianluca * Update keyboard_remote.py I changed some other few things. Not the component gets loaded even if the keyboard is disconnected. When it connects, it starts to fire events when keys are pressed. I also added a sleep(0.1) that reduces a lot the load on the CPU, but without many consequences on key pressed detection. --- homeassistant/components/keyboard_remote.py | 55 +++++++++++++++++---- 1 file changed, 46 insertions(+), 9 deletions(-) diff --git a/homeassistant/components/keyboard_remote.py b/homeassistant/components/keyboard_remote.py index 9a6a2a5d89b..de7eacf96dd 100644 --- a/homeassistant/components/keyboard_remote.py +++ b/homeassistant/components/keyboard_remote.py @@ -1,5 +1,5 @@ """ -Recieve signals from a keyboard and use it as a remote control. +Receive signals from a keyboard and use it as a remote control. This component allows to use a keyboard as remote control. It will fire ´keyboard_remote_command_received´ events witch can then be used @@ -12,7 +12,7 @@ because `evdev` will block it. Example: keyboard_remote: device_descriptor: '/dev/input/by-id/foo' - key_value: 'key_up' # optional alternaive 'key_down' and 'key_hold' + type: 'key_up' # optional alternaive 'key_down' and 'key_hold' # be carefull, 'key_hold' fires a lot of events and an automation rule to bring breath live into it. @@ -33,6 +33,7 @@ Example: import threading import logging import os +import time import voluptuous as vol @@ -65,8 +66,8 @@ def setup(hass, config): """Setup keyboard_remote.""" config = config.get(DOMAIN) device_descriptor = config.get(DEVICE_DESCRIPTOR) - if not device_descriptor or not os.path.isfile(device_descriptor): - id_folder = '/dev/input/by-id/' + if not device_descriptor: + id_folder = '/dev/input/' _LOGGER.error( 'A device_descriptor must be defined. ' 'Possible descriptors are %s:\n%s', @@ -107,7 +108,20 @@ class KeyboardRemote(threading.Thread): """Construct a KeyboardRemote interface object.""" from evdev import InputDevice - self.dev = InputDevice(device_descriptor) + self.device_descriptor = device_descriptor + try: + self.dev = InputDevice(device_descriptor) + except OSError: # Keyboard not present + _LOGGER.debug( + 'KeyboardRemote: keyboard not connected, %s', + self.device_descriptor) + self.keyboard_connected = False + else: + self.keyboard_connected = True + _LOGGER.debug( + 'KeyboardRemote: keyboard connected, %s', + self.dev) + threading.Thread.__init__(self) self.stopped = threading.Event() self.hass = hass @@ -115,13 +129,36 @@ class KeyboardRemote(threading.Thread): def run(self): """Main loop of the KeyboardRemote.""" - from evdev import categorize, ecodes - _LOGGER.debug('KeyboardRemote interface started for %s', self.dev) + from evdev import categorize, ecodes, InputDevice - self.dev.grab() + if self.keyboard_connected: + self.dev.grab() + _LOGGER.debug( + 'KeyboardRemote interface started for %s', + self.dev) while not self.stopped.isSet(): - event = self.dev.read_one() + # Sleeps to ease load on processor + time.sleep(.1) + + if not self.keyboard_connected: + try: + self.dev = InputDevice(self.device_descriptor) + except OSError: # still disconnected + continue + else: + self.dev.grab() + self.keyboard_connected = True + _LOGGER.debug('KeyboardRemote: keyboard re-connected, %s', + self.device_descriptor) + + try: + event = self.dev.read_one() + except IOError: # Keyboard Disconnected + self.keyboard_connected = False + _LOGGER.debug('KeyboardRemote: keyard disconnected, %s', + self.device_descriptor) + continue if not event: continue From 51446e0772e25a1e55e0f10e92ca0086bb968949 Mon Sep 17 00:00:00 2001 From: webworxshop Date: Fri, 6 Jan 2017 10:16:00 +1300 Subject: [PATCH 098/189] Add support for customised Kankun SP3 Wifi switches. (#5089) * Add support for customised Kankun SP3 Wifi switches. * Add config validation for Kankun SP3 wifi switch. * Update kankun.py --- .coveragerc | 1 + homeassistant/components/switch/kankun.py | 120 ++++++++++++++++++++++ 2 files changed, 121 insertions(+) create mode 100644 homeassistant/components/switch/kankun.py diff --git a/.coveragerc b/.coveragerc index cee3448936c..4957221dd94 100644 --- a/.coveragerc +++ b/.coveragerc @@ -339,6 +339,7 @@ omit = homeassistant/components/switch/edimax.py homeassistant/components/switch/hikvisioncam.py homeassistant/components/switch/hook.py + homeassistant/components/switch/kankun.py homeassistant/components/switch/mystrom.py homeassistant/components/switch/netio.py homeassistant/components/switch/orvibo.py diff --git a/homeassistant/components/switch/kankun.py b/homeassistant/components/switch/kankun.py new file mode 100644 index 00000000000..252839004ee --- /dev/null +++ b/homeassistant/components/switch/kankun.py @@ -0,0 +1,120 @@ +""" +Support for customised Kankun SP3 wifi switch. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/switch.kankun/ +""" +import logging +import requests +import voluptuous as vol + +from homeassistant.components.switch import SwitchDevice, PLATFORM_SCHEMA +from homeassistant.const import ( + CONF_HOST, CONF_NAME, CONF_PORT, CONF_PATH, CONF_USERNAME, CONF_PASSWORD, + CONF_SWITCHES) +import homeassistant.helpers.config_validation as cv + +_LOGGER = logging.getLogger(__name__) + +DEFAULT_PORT = 80 +DEFAULT_PATH = "/cgi-bin/json.cgi" + +SWITCH_SCHEMA = vol.Schema({ + vol.Required(CONF_HOST): cv.string, + vol.Optional(CONF_NAME): cv.string, + vol.Optional(CONF_PORT, default=DEFAULT_PORT): cv.port, + vol.Optional(CONF_PATH, default=DEFAULT_PATH): cv.string, + vol.Optional(CONF_USERNAME): cv.string, + vol.Optional(CONF_PASSWORD): cv.string, +}) + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required(CONF_SWITCHES): vol.Schema({cv.slug: SWITCH_SCHEMA}), +}) + + +# pylint: disable=unused-argument +def setup_platform(hass, config, add_devices_callback, discovery_info=None): + """Find and return kankun switches.""" + switches = config.get('switches', {}) + devices = [] + + for dev_name, properties in switches.items(): + devices.append( + KankunSwitch( + hass, + properties.get(CONF_NAME, dev_name), + properties.get(CONF_HOST, None), + properties.get(CONF_PORT, DEFAULT_PORT), + properties.get(CONF_PATH, DEFAULT_PATH), + properties.get(CONF_USERNAME, None), + properties.get(CONF_PASSWORD))) + + add_devices_callback(devices) + + +class KankunSwitch(SwitchDevice): + """Represents a Kankun wifi switch.""" + + # pylint: disable=too-many-arguments + def __init__(self, hass, name, host, port, path, user, passwd): + """Initialise device.""" + self._hass = hass + self._name = name + self._state = False + self._url = "http://{}:{}{}".format(host, port, path) + if user is not None: + self._auth = (user, passwd) + else: + self._auth = None + + def _switch(self, newstate): + """Switch on or off.""" + _LOGGER.info('Switching to state: %s', newstate) + + try: + req = requests.get("{}?set={}".format(self._url, newstate), + auth=self._auth) + return req.json()['ok'] + except requests.RequestException: + _LOGGER.error('Switching failed.') + + def _query_state(self): + """Query switch state.""" + _LOGGER.info('Querying state from: %s', self._url) + + try: + req = requests.get("{}?get=state".format(self._url), + auth=self._auth) + return req.json()['state'] == "on" + except requests.RequestException: + _LOGGER.error('State query failed.') + + @property + def should_poll(self): + """Switch should always be polled.""" + return True + + @property + def name(self): + """The name of the switch.""" + return self._name + + @property + def is_on(self): + """True if device is on.""" + return self._state + + def update(self): + """Update device state.""" + self._state = self._query_state() + + def turn_on(self, **kwargs): + """Turn the device on.""" + if self._switch('on'): + self._state = True + + def turn_off(self, **kwargs): + """Turn the device off.""" + if self._switch('off'): + self._state = False From f88b5a9c5e015c0943d289f30ac16276a4f6b48e Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Thu, 5 Jan 2017 22:28:48 +0100 Subject: [PATCH 099/189] Update frontend --- homeassistant/components/frontend/version.py | 6 +++--- .../frontend/www_static/frontend.html | 4 ++-- .../frontend/www_static/frontend.html.gz | Bin 131040 -> 131102 bytes .../www_static/home-assistant-polymer | 2 +- .../www_static/panels/ha-panel-history.html | 2 +- .../panels/ha-panel-history.html.gz | Bin 6842 -> 6844 bytes .../www_static/panels/ha-panel-logbook.html | 2 +- .../panels/ha-panel-logbook.html.gz | Bin 7344 -> 7322 bytes .../frontend/www_static/service_worker.js | 2 +- .../frontend/www_static/service_worker.js.gz | Bin 2324 -> 2323 bytes 10 files changed, 9 insertions(+), 9 deletions(-) diff --git a/homeassistant/components/frontend/version.py b/homeassistant/components/frontend/version.py index b24c2a6819f..ba7937662a1 100644 --- a/homeassistant/components/frontend/version.py +++ b/homeassistant/components/frontend/version.py @@ -2,7 +2,7 @@ FINGERPRINTS = { "core.js": "ad1ebcd0614c98a390d982087a7ca75c", - "frontend.html": "826ee6a4b39c939e31aa468b1ef618f9", + "frontend.html": "d6132d3aaac78e1a91efe7bc130b6f45", "mdi.html": "48fcee544a61b668451faf2b7295df70", "micromarkdown-js.html": "93b5ec4016f0bba585521cf4d18dec1a", "panels/ha-panel-dev-event.html": "c2d5ec676be98d4474d19f94d0262c1e", @@ -10,9 +10,9 @@ FINGERPRINTS = { "panels/ha-panel-dev-service.html": "ac74f7ce66fd7136d25c914ea12f4351", "panels/ha-panel-dev-state.html": "65e5f791cc467561719bf591f1386054", "panels/ha-panel-dev-template.html": "7d744ab7f7c08b6d6ad42069989de400", - "panels/ha-panel-history.html": "efe1bcdd7733b09e55f4f965d171c295", + "panels/ha-panel-history.html": "8f7b538b7bedc83149112aea9c11b77a", "panels/ha-panel-iframe.html": "d920f0aa3c903680f2f8795e2255daab", - "panels/ha-panel-logbook.html": "4bc5c8370a85a4215413fbae8f85addb", + "panels/ha-panel-logbook.html": "1a9017aaeaf45453cae0a1a8c56992ad", "panels/ha-panel-map.html": "3b0ca63286cbe80f27bd36dbc2434e89", "websocket_test.html": "575de64b431fe11c3785bf96d7813450" } diff --git a/homeassistant/components/frontend/www_static/frontend.html b/homeassistant/components/frontend/www_static/frontend.html index d8ab01b320f..545d1f50fc7 100644 --- a/homeassistant/components/frontend/www_static/frontend.html +++ b/homeassistant/components/frontend/www_static/frontend.html @@ -1,5 +1,5 @@

\ No newline at end of file +n&&e.updateNativeStyleProperties(document.documentElement,this.customStyle)}};return r}(),function(){"use strict";var e=Polymer.Base.serializeValueToAttribute,t=Polymer.StyleProperties,n=Polymer.StyleTransformer,r=Polymer.StyleDefaults,s=Polymer.Settings.useNativeShadow,i=Polymer.Settings.useNativeCSSProperties;Polymer.Base._addFeature({_prepStyleProperties:function(){i||(this._ownStylePropertyNames=this._styles&&this._styles.length?t.decorateStyles(this._styles,this):null)},customStyle:null,getComputedStyleValue:function(e){return i||this._styleProperties||this._computeStyleProperties(),!i&&this._styleProperties&&this._styleProperties[e]||getComputedStyle(this).getPropertyValue(e)},_setupStyleProperties:function(){this.customStyle={},this._styleCache=null,this._styleProperties=null,this._scopeSelector=null,this._ownStyleProperties=null,this._customStyle=null},_needsStyleProperties:function(){return Boolean(!i&&this._ownStylePropertyNames&&this._ownStylePropertyNames.length)},_validateApplyShim:function(){if(this.__applyShimInvalid){Polymer.ApplyShim.transform(this._styles,this.__proto__);var e=n.elementStyles(this);if(s){var t=this._template.content.querySelector("style");t&&(t.textContent=e)}else{var r=this._scopeStyle&&this._scopeStyle.nextSibling;r&&(r.textContent=e)}}},_beforeAttached:function(){this._scopeSelector&&!this.__stylePropertiesInvalid||!this._needsStyleProperties()||(this.__stylePropertiesInvalid=!1,this._updateStyleProperties())},_findStyleHost:function(){for(var e,t=this;e=Polymer.dom(t).getOwnerRoot();){if(Polymer.isInstance(e.host))return e.host;t=e.host}return r},_updateStyleProperties:function(){var e,n=this._findStyleHost();n._styleProperties||n._computeStyleProperties(),n._styleCache||(n._styleCache=new Polymer.StyleCache);var r=t.propertyDataFromStyles(n._styles,this),i=!this.__notStyleScopeCacheable;i&&(r.key.customStyle=this.customStyle,e=n._styleCache.retrieve(this.is,r.key,this._styles));var a=Boolean(e);a?this._styleProperties=e._styleProperties:this._computeStyleProperties(r.properties),this._computeOwnStyleProperties(),a||(e=o.retrieve(this.is,this._ownStyleProperties,this._styles));var l=Boolean(e)&&!a,c=this._applyStyleProperties(e);a||(c=c&&s?c.cloneNode(!0):c,e={style:c,_scopeSelector:this._scopeSelector,_styleProperties:this._styleProperties},i&&(r.key.customStyle={},this.mixin(r.key.customStyle,this.customStyle),n._styleCache.store(this.is,e,r.key,this._styles)),l||o.store(this.is,Object.create(e),this._ownStyleProperties,this._styles))},_computeStyleProperties:function(e){var n=this._findStyleHost();n._styleProperties||n._computeStyleProperties();var r=Object.create(n._styleProperties),s=t.hostAndRootPropertiesForScope(this);this.mixin(r,s.hostProps),e=e||t.propertyDataFromStyles(n._styles,this).properties,this.mixin(r,e),this.mixin(r,s.rootProps),t.mixinCustomStyle(r,this.customStyle),t.reify(r),this._styleProperties=r},_computeOwnStyleProperties:function(){for(var e,t={},n=0;n0&&l.push(t);return[{removed:a,added:l}]}},Polymer.Collection.get=function(e){return Polymer._collections.get(e)||new Polymer.Collection(e)},Polymer.Collection.applySplices=function(e,t){var n=Polymer._collections.get(e);return n?n._applySplices(t):null},Polymer({is:"dom-repeat",extends:"template",_template:null,properties:{items:{type:Array},as:{type:String,value:"item"},indexAs:{type:String,value:"index"},sort:{type:Function,observer:"_sortChanged"},filter:{type:Function,observer:"_filterChanged"},observe:{type:String,observer:"_observeChanged"},delay:Number,renderedItemCount:{type:Number,notify:!0,readOnly:!0},initialCount:{type:Number,observer:"_initializeChunking"},targetFramerate:{type:Number,value:20},_targetFrameTime:{type:Number,computed:"_computeFrameTime(targetFramerate)"}},behaviors:[Polymer.Templatizer],observers:["_itemsChanged(items.*)"],created:function(){this._instances=[],this._pool=[],this._limit=1/0;var e=this;this._boundRenderChunk=function(){e._renderChunk()}},detached:function(){this.__isDetached=!0;for(var e=0;e=0;t--){var n=this._instances[t];n.isPlaceholder&&t=this._limit&&(n=this._downgradeInstance(t,n.__key__)),e[n.__key__]=t,n.isPlaceholder||n.__setProperty(this.indexAs,t,!0)}this._pool.length=0,this._setRenderedItemCount(this._instances.length),this.fire("dom-change"),this._tryRenderChunk()},_applyFullRefresh:function(){var e,t=this.collection;if(this._sortFn)e=t?t.getKeys():[];else{e=[];var n=this.items;if(n)for(var r=0;r=r;a--)this._detachAndRemoveInstance(a)},_numericSort:function(e,t){return e-t},_applySplicesUserSort:function(e){for(var t,n,r=this.collection,s={},i=0;i=0;i--){var c=a[i];void 0!==c&&this._detachAndRemoveInstance(c)}var h=this;if(l.length){this._filterFn&&(l=l.filter(function(e){return h._filterFn(r.getItem(e))})),l.sort(function(e,t){return h._sortFn(r.getItem(e),r.getItem(t))});var u=0;for(i=0;i>1,a=this._instances[o].__key__,l=this._sortFn(n.getItem(a),r);if(l<0)e=o+1;else{if(!(l>0)){i=o;break}s=o-1}}return i<0&&(i=s+1),this._insertPlaceholder(i,t),i},_applySplicesArrayOrder:function(e){for(var t,n=0;n=0?(e=this.as+"."+e.substring(n+1),i._notifyPath(e,t,!0)):i.__setProperty(this.as,t,!0))}},itemForElement:function(e){var t=this.modelForElement(e);return t&&t[this.as]},keyForElement:function(e){var t=this.modelForElement(e);return t&&t.__key__},indexForElement:function(e){var t=this.modelForElement(e);return t&&t[this.indexAs]}}),Polymer({is:"array-selector",_template:null,properties:{items:{type:Array,observer:"clearSelection"},multi:{type:Boolean,value:!1,observer:"clearSelection"},selected:{type:Object,notify:!0},selectedItem:{type:Object,notify:!0},toggle:{type:Boolean,value:!1}},clearSelection:function(){if(Array.isArray(this.selected))for(var e=0;e \ 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 3708f52a28065a5713abca93a753c689e6d1d4b8..cf5960d5805d5476f6676f719af498050f1bfe84 100644 GIT binary patch delta 103531 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%0Dp+2{k1`(IfRm&B0@3s%YMaV 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%0DSU2}NhXPgG-1-($bTeUYLLC7bgK&7b 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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 b5c3575cb5f..029ed863957 160000 --- a/homeassistant/components/frontend/www_static/home-assistant-polymer +++ b/homeassistant/components/frontend/www_static/home-assistant-polymer @@ -1 +1 @@ -Subproject commit b5c3575cb5f284178e52d75db24c46131afb4cfa +Subproject commit 029ed86395786b40cf57079e749d898f88019b20 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 95bfe398184..7b4fa03057c 100644 --- a/homeassistant/components/frontend/www_static/panels/ha-panel-history.html +++ b/homeassistant/components/frontend/www_static/panels/ha-panel-history.html @@ -1,4 +1,4 @@ \ No newline at end of file + */.pika-single{z-index:9999;display:block;position:relative;color:#333;background:#fff;border:1px solid #ccc;border-bottom-color:#bbb;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}.pika-single:after,.pika-single:before{content:" ";display:table}.pika-single:after{clear:both}.pika-single.is-hidden{display:none}.pika-single.is-bound{position:absolute;box-shadow:0 5px 15px -5px rgba(0,0,0,.5)}.pika-lendar{float:left;width:240px;margin:8px}.pika-title{position:relative;text-align:center}.pika-label{display:inline-block;position:relative;z-index:9999;overflow:hidden;margin:0;padding:5px 3px;font-size:14px;line-height:20px;font-weight:700;background-color:#fff}.pika-title select{cursor:pointer;position:absolute;z-index:9998;margin:0;left:0;top:5px;filter:alpha(opacity=0);opacity:0}.pika-next,.pika-prev{display:block;cursor:pointer;position:relative;outline:0;border:0;padding:0;width:20px;height:30px;text-indent:20px;white-space:nowrap;overflow:hidden;background-color:transparent;background-position:center center;background-repeat:no-repeat;background-size:75% 75%;opacity:.5}.pika-next:hover,.pika-prev:hover{opacity:1}.is-rtl .pika-next,.pika-prev{float:left;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAUklEQVR42u3VMQoAIBADQf8Pgj+OD9hG2CtONJB2ymQkKe0HbwAP0xucDiQWARITIDEBEnMgMQ8S8+AqBIl6kKgHiXqQqAeJepBo/z38J/U0uAHlaBkBl9I4GwAAAABJRU5ErkJggg==)}.is-rtl .pika-prev,.pika-next{float:right;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAU0lEQVR42u3VOwoAMAgE0dwfAnNjU26bYkBCFGwfiL9VVWoO+BJ4Gf3gtsEKKoFBNTCoCAYVwaAiGNQGMUHMkjGbgjk2mIONuXo0nC8XnCf1JXgArVIZAQh5TKYAAAAASUVORK5CYII=)}.pika-next.is-disabled,.pika-prev.is-disabled{cursor:default;opacity:.2}.pika-select{display:inline-block}.pika-table{width:100%;border-collapse:collapse;border-spacing:0;border:0}.pika-table td,.pika-table th{width:14.285714285714286%;padding:0}.pika-table th{color:#999;font-size:12px;line-height:25px;font-weight:700;text-align:center}.pika-button{cursor:pointer;display:block;box-sizing:border-box;-moz-box-sizing:border-box;outline:0;border:0;margin:0;width:100%;padding:5px;color:#666;font-size:12px;line-height:15px;text-align:right;background:#f5f5f5}.pika-week{font-size:11px;color:#999}.is-today .pika-button{color:#3af;font-weight:700}.is-selected .pika-button{color:#fff;font-weight:700;background:#3af;box-shadow:inset 0 1px 3px #178fe5;border-radius:3px}.is-inrange .pika-button{background:#D5E9F7}.is-startrange .pika-button{color:#fff;background:#6CB31D;box-shadow:none;border-radius:3px}.is-endrange .pika-button{color:#fff;background:#3af;box-shadow:none;border-radius:3px}.is-disabled .pika-button{pointer-events:none;cursor:default;color:#999;opacity:.3}.pika-button:hover{color:#fff;background:#ff8000;box-shadow:none;border-radius:3px}.pika-table abbr{border-bottom:none;cursor:help}} \ 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 6a8e59f4d2f09722141dbfa61a9151719b045c97..3025b732cdd8960f82e4704fa7280d37ae34fa26 100644 GIT binary patch literal 6844 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 literal 6842 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 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 1a2398a061f..e8d615caba0 100644 --- a/homeassistant/components/frontend/www_static/panels/ha-panel-logbook.html +++ b/homeassistant/components/frontend/www_static/panels/ha-panel-logbook.html @@ -1,4 +1,4 @@ \ No newline at end of file + */.pika-single{z-index:9999;display:block;position:relative;color:#333;background:#fff;border:1px solid #ccc;border-bottom-color:#bbb;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}.pika-single:after,.pika-single:before{content:" ";display:table}.pika-single:after{clear:both}.pika-single.is-hidden{display:none}.pika-single.is-bound{position:absolute;box-shadow:0 5px 15px -5px rgba(0,0,0,.5)}.pika-lendar{float:left;width:240px;margin:8px}.pika-title{position:relative;text-align:center}.pika-label{display:inline-block;position:relative;z-index:9999;overflow:hidden;margin:0;padding:5px 3px;font-size:14px;line-height:20px;font-weight:700;background-color:#fff}.pika-title select{cursor:pointer;position:absolute;z-index:9998;margin:0;left:0;top:5px;filter:alpha(opacity=0);opacity:0}.pika-next,.pika-prev{display:block;cursor:pointer;position:relative;outline:0;border:0;padding:0;width:20px;height:30px;text-indent:20px;white-space:nowrap;overflow:hidden;background-color:transparent;background-position:center center;background-repeat:no-repeat;background-size:75% 75%;opacity:.5}.pika-next:hover,.pika-prev:hover{opacity:1}.is-rtl .pika-next,.pika-prev{float:left;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAUklEQVR42u3VMQoAIBADQf8Pgj+OD9hG2CtONJB2ymQkKe0HbwAP0xucDiQWARITIDEBEnMgMQ8S8+AqBIl6kKgHiXqQqAeJepBo/z38J/U0uAHlaBkBl9I4GwAAAABJRU5ErkJggg==)}.is-rtl .pika-prev,.pika-next{float:right;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAU0lEQVR42u3VOwoAMAgE0dwfAnNjU26bYkBCFGwfiL9VVWoO+BJ4Gf3gtsEKKoFBNTCoCAYVwaAiGNQGMUHMkjGbgjk2mIONuXo0nC8XnCf1JXgArVIZAQh5TKYAAAAASUVORK5CYII=)}.pika-next.is-disabled,.pika-prev.is-disabled{cursor:default;opacity:.2}.pika-select{display:inline-block}.pika-table{width:100%;border-collapse:collapse;border-spacing:0;border:0}.pika-table td,.pika-table th{width:14.285714285714286%;padding:0}.pika-table th{color:#999;font-size:12px;line-height:25px;font-weight:700;text-align:center}.pika-button{cursor:pointer;display:block;box-sizing:border-box;-moz-box-sizing:border-box;outline:0;border:0;margin:0;width:100%;padding:5px;color:#666;font-size:12px;line-height:15px;text-align:right;background:#f5f5f5}.pika-week{font-size:11px;color:#999}.is-today .pika-button{color:#3af;font-weight:700}.is-selected .pika-button{color:#fff;font-weight:700;background:#3af;box-shadow:inset 0 1px 3px #178fe5;border-radius:3px}.is-inrange .pika-button{background:#D5E9F7}.is-startrange .pika-button{color:#fff;background:#6CB31D;box-shadow:none;border-radius:3px}.is-endrange .pika-button{color:#fff;background:#3af;box-shadow:none;border-radius:3px}.is-disabled .pika-button{pointer-events:none;cursor:default;color:#999;opacity:.3}.pika-button:hover{color:#fff;background:#ff8000;box-shadow:none;border-radius:3px}.pika-table abbr{border-bottom:none;cursor:help}} \ 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 4bc730683e0dc6e895ce50c295f2be694ab7ba01..ebdf2fc7e724247381ca825a206fe8da955ae30b 100644 GIT binary patch delta 6973 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 delta 7012 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 JVQiHY004xRojU*k From a36ca6244517e52f2fefac5911343c3625f60b59 Mon Sep 17 00:00:00 2001 From: Nick Touran Date: Thu, 5 Jan 2017 14:05:16 -0800 Subject: [PATCH 100/189] Support longer-than-60-second scan_interval and interval_seconds (#5147) * Update scan_interval and interval_seconds max to 1 day vs. 60 seconds * Format fixes * Add docstring on unittest. * Added and implemented new async_track_time_interval helper. * Format fixes, removed unused import. * Undid whoops on unsub_polling. * Updated unit tests for scan_interval. * Added unit test for track_time_interval. * Allow other forms of time interval input for scan_interval and interval_seconds --- .../components/device_tracker/__init__.py | 8 +++-- homeassistant/helpers/config_validation.py | 3 +- homeassistant/helpers/entity_component.py | 8 +++-- homeassistant/helpers/event.py | 29 ++++++++++++++++++- tests/helpers/test_entity_component.py | 20 ++++++++----- tests/helpers/test_event.py | 29 +++++++++++++++++++ 6 files changed, 81 insertions(+), 16 deletions(-) diff --git a/homeassistant/components/device_tracker/__init__.py b/homeassistant/components/device_tracker/__init__.py index 30c9fbe9a3a..6467869610d 100644 --- a/homeassistant/components/device_tracker/__init__.py +++ b/homeassistant/components/device_tracker/__init__.py @@ -24,6 +24,7 @@ from homeassistant.exceptions import HomeAssistantError from homeassistant.helpers.aiohttp_client import async_get_clientsession from homeassistant.helpers import config_per_platform, discovery from homeassistant.helpers.entity import Entity +from homeassistant.helpers.event import async_track_time_interval from homeassistant.helpers.typing import GPSType, ConfigType, HomeAssistantType import homeassistant.helpers.config_validation as cv import homeassistant.util as util @@ -71,7 +72,7 @@ ATTR_BATTERY = 'battery' ATTR_ATTRIBUTES = 'attributes' PLATFORM_SCHEMA = cv.PLATFORM_SCHEMA.extend({ - vol.Optional(CONF_SCAN_INTERVAL): cv.positive_int, # seconds + vol.Optional(CONF_SCAN_INTERVAL): cv.time_period, vol.Optional(CONF_TRACK_NEW, default=DEFAULT_TRACK_NEW): cv.boolean, vol.Optional(CONF_CONSIDER_HOME, default=timedelta(seconds=DEFAULT_CONSIDER_HOME)): vol.All( @@ -639,8 +640,9 @@ def async_setup_scanner_platform(hass: HomeAssistantType, config: ConfigType, seen.add(mac) hass.async_add_job(async_see_device(mac=mac, host_name=host_name)) - async_track_utc_time_change( - hass, async_device_tracker_scan, second=range(0, 60, interval)) + async_track_time_interval( + hass, async_device_tracker_scan, + timedelta(seconds=interval)) hass.async_add_job(async_device_tracker_scan, None) diff --git a/homeassistant/helpers/config_validation.py b/homeassistant/helpers/config_validation.py index 57ab1582454..b78eedec8c2 100644 --- a/homeassistant/helpers/config_validation.py +++ b/homeassistant/helpers/config_validation.py @@ -405,8 +405,7 @@ def key_dependency(key, dependency): PLATFORM_SCHEMA = vol.Schema({ vol.Required(CONF_PLATFORM): string, - vol.Optional(CONF_SCAN_INTERVAL): - vol.All(vol.Coerce(int), vol.Range(min=1)), + vol.Optional(CONF_SCAN_INTERVAL): time_period }, extra=vol.ALLOW_EXTRA) EVENT_SCHEMA = vol.Schema({ diff --git a/homeassistant/helpers/entity_component.py b/homeassistant/helpers/entity_component.py index cd49a5e237e..71ae352c39f 100644 --- a/homeassistant/helpers/entity_component.py +++ b/homeassistant/helpers/entity_component.py @@ -1,5 +1,6 @@ """Helpers for components that manage entities.""" import asyncio +from datetime import timedelta from homeassistant import config as conf_util from homeassistant.bootstrap import ( @@ -12,7 +13,7 @@ from homeassistant.exceptions import HomeAssistantError from homeassistant.loader import get_component from homeassistant.helpers import config_per_platform, discovery from homeassistant.helpers.entity import async_generate_entity_id -from homeassistant.helpers.event import async_track_utc_time_change +from homeassistant.helpers.event import async_track_time_interval from homeassistant.helpers.service import extract_entity_ids from homeassistant.util.async import ( run_callback_threadsafe, run_coroutine_threadsafe) @@ -324,9 +325,10 @@ class EntityPlatform(object): in self.platform_entities): return - self._async_unsub_polling = async_track_utc_time_change( + self._async_unsub_polling = async_track_time_interval( self.component.hass, self._update_entity_states, - second=range(0, 60, self.scan_interval)) + timedelta(seconds=self.scan_interval) + ) @asyncio.coroutine def _async_process_entity(self, new_entity, update_before_add): diff --git a/homeassistant/helpers/event.py b/homeassistant/helpers/event.py index dd00cfee30e..29d3d131f5c 100644 --- a/homeassistant/helpers/event.py +++ b/homeassistant/helpers/event.py @@ -85,7 +85,7 @@ track_state_change = threaded_listener_factory(async_track_state_change) def async_track_point_in_time(hass, action, point_in_time): - """Add a listener that fires once after a spefic point in time.""" + """Add a listener that fires once after a specific point in time.""" utc_point_in_time = dt_util.as_utc(point_in_time) @callback @@ -133,6 +133,33 @@ track_point_in_utc_time = threaded_listener_factory( async_track_point_in_utc_time) +def async_track_time_interval(hass, action, interval): + """Add a listener that fires repetitively at every timedelta interval.""" + def next_interval(): + """Return the next interval.""" + return dt_util.utcnow() + interval + + @callback + def interval_listener(now): + """Called when when the interval has elapsed.""" + nonlocal remove + remove = async_track_point_in_utc_time( + hass, interval_listener, next_interval()) + hass.async_run_job(action, now) + + remove = async_track_point_in_utc_time( + hass, interval_listener, next_interval()) + + def remove_listener(): + """Remove interval listener.""" + remove() + + return remove_listener + + +track_time_interval = threaded_listener_factory(async_track_time_interval) + + def async_track_sunrise(hass, action, offset=None): """Add a listener that will fire a specified offset from sunrise daily.""" from homeassistant.components import sun diff --git a/tests/helpers/test_entity_component.py b/tests/helpers/test_entity_component.py index 1e12d7c3ea3..69c314a8208 100644 --- a/tests/helpers/test_entity_component.py +++ b/tests/helpers/test_entity_component.py @@ -5,12 +5,15 @@ from collections import OrderedDict import logging import unittest from unittest.mock import patch, Mock +from datetime import timedelta import homeassistant.core as ha import homeassistant.loader as loader from homeassistant.components import group from homeassistant.helpers.entity import Entity, generate_entity_id -from homeassistant.helpers.entity_component import EntityComponent +from homeassistant.helpers.entity_component import ( + EntityComponent, DEFAULT_SCAN_INTERVAL) + from homeassistant.helpers import discovery import homeassistant.util.dt as dt_util @@ -106,7 +109,7 @@ class TestHelpersEntityComponent(unittest.TestCase): no_poll_ent.async_update.reset_mock() poll_ent.async_update.reset_mock() - fire_time_changed(self.hass, dt_util.utcnow().replace(second=0)) + fire_time_changed(self.hass, dt_util.utcnow() + timedelta(seconds=20)) self.hass.block_till_done() assert not no_poll_ent.async_update.called @@ -123,7 +126,10 @@ class TestHelpersEntityComponent(unittest.TestCase): assert 1 == len(self.hass.states.entity_ids()) ent2.update = lambda *_: component.add_entities([ent1]) - fire_time_changed(self.hass, dt_util.utcnow().replace(second=0)) + fire_time_changed( + self.hass, dt_util.utcnow() + + timedelta(seconds=DEFAULT_SCAN_INTERVAL) + ) self.hass.block_till_done() assert 2 == len(self.hass.states.entity_ids()) @@ -311,7 +317,7 @@ class TestHelpersEntityComponent(unittest.TestCase): mock_setup.call_args[0] @patch('homeassistant.helpers.entity_component.' - 'async_track_utc_time_change') + 'async_track_time_interval') def test_set_scan_interval_via_config(self, mock_track): """Test the setting of the scan interval via configuration.""" def platform_setup(hass, config, add_devices, discovery_info=None): @@ -331,10 +337,10 @@ class TestHelpersEntityComponent(unittest.TestCase): }) assert mock_track.called - assert [0, 30] == list(mock_track.call_args[1]['second']) + assert timedelta(seconds=30) == mock_track.call_args[0][2] @patch('homeassistant.helpers.entity_component.' - 'async_track_utc_time_change') + 'async_track_time_interval') def test_set_scan_interval_via_platform(self, mock_track): """Test the setting of the scan interval via platform.""" def platform_setup(hass, config, add_devices, discovery_info=None): @@ -355,7 +361,7 @@ class TestHelpersEntityComponent(unittest.TestCase): }) assert mock_track.called - assert [0, 30] == list(mock_track.call_args[1]['second']) + assert timedelta(seconds=30) == mock_track.call_args[0][2] def test_set_entity_namespace_via_config(self): """Test setting an entity namespace.""" diff --git a/tests/helpers/test_event.py b/tests/helpers/test_event.py index 77518241080..05d5953d08a 100644 --- a/tests/helpers/test_event.py +++ b/tests/helpers/test_event.py @@ -15,6 +15,7 @@ from homeassistant.helpers.event import ( track_utc_time_change, track_time_change, track_state_change, + track_time_interval, track_sunrise, track_sunset, ) @@ -187,6 +188,34 @@ class TestEventHelpers(unittest.TestCase): self.assertEqual(5, len(wildcard_runs)) self.assertEqual(6, len(wildercard_runs)) + def test_track_time_interval(self): + """Test tracking time interval.""" + specific_runs = [] + + utc_now = dt_util.utcnow() + unsub = track_time_interval( + self.hass, lambda x: specific_runs.append(1), + timedelta(seconds=10) + ) + + self._send_time_changed(utc_now + timedelta(seconds=5)) + self.hass.block_till_done() + self.assertEqual(0, len(specific_runs)) + + self._send_time_changed(utc_now + timedelta(seconds=13)) + self.hass.block_till_done() + self.assertEqual(1, len(specific_runs)) + + self._send_time_changed(utc_now + timedelta(minutes=20)) + self.hass.block_till_done() + self.assertEqual(2, len(specific_runs)) + + unsub() + + self._send_time_changed(utc_now + timedelta(seconds=30)) + self.hass.block_till_done() + self.assertEqual(2, len(specific_runs)) + def test_track_sunrise(self): """Test track the sunrise.""" latitude = 32.87336 From 50a8ec733526a594a6e1dce61bd9df4accafcd69 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Thu, 5 Jan 2017 23:09:04 +0100 Subject: [PATCH 101/189] Bugfix aiohttp connector pool close on shutdown (#5190) * Bugfix aiohttp connector pool close on shutdown * fix circular import * remove lint disable --- homeassistant/core.py | 5 +++++ homeassistant/helpers/aiohttp_client.py | 26 +++++++++++-------------- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/homeassistant/core.py b/homeassistant/core.py index de272beeeea..7fd6006f916 100644 --- a/homeassistant/core.py +++ b/homeassistant/core.py @@ -288,6 +288,8 @@ class HomeAssistant(object): This method is a coroutine. """ + import homeassistant.helpers.aiohttp_client as aiohttp_client + self.state = CoreState.stopping self.async_track_tasks() self.bus.async_fire(EVENT_HOMEASSISTANT_STOP) @@ -295,6 +297,9 @@ class HomeAssistant(object): self.executor.shutdown() self.state = CoreState.not_running + # cleanup connector pool from aiohttp + yield from aiohttp_client.async_cleanup_websession(self) + # cleanup async layer from python logging if self.data.get(DATA_ASYNCHANDLER): handler = self.data.pop(DATA_ASYNCHANDLER) diff --git a/homeassistant/helpers/aiohttp_client.py b/homeassistant/helpers/aiohttp_client.py index b0bf2b8e1d3..b44b6aebefe 100644 --- a/homeassistant/helpers/aiohttp_client.py +++ b/homeassistant/helpers/aiohttp_client.py @@ -92,33 +92,29 @@ def _async_get_connector(hass, verify_ssl=True): if DATA_CONNECTOR not in hass.data: connector = aiohttp.TCPConnector(loop=hass.loop) hass.data[DATA_CONNECTOR] = connector - - _async_register_connector_shutdown(hass, connector) else: connector = hass.data[DATA_CONNECTOR] else: if DATA_CONNECTOR_NOTVERIFY not in hass.data: connector = aiohttp.TCPConnector(loop=hass.loop, verify_ssl=False) hass.data[DATA_CONNECTOR_NOTVERIFY] = connector - - _async_register_connector_shutdown(hass, connector) else: connector = hass.data[DATA_CONNECTOR_NOTVERIFY] return connector -@callback -# pylint: disable=invalid-name -def _async_register_connector_shutdown(hass, connector): - """Register connector pool close on homeassistant shutdown. +@asyncio.coroutine +def async_cleanup_websession(hass): + """Cleanup aiohttp connector pool. - This method must be run in the event loop. + This method is a coroutine. """ - @asyncio.coroutine - def _async_close_connector(event): - """Close websession on shutdown.""" - yield from connector.close() + tasks = [] + if DATA_CONNECTOR in hass.data: + tasks.append(hass.data[DATA_CONNECTOR].close()) + if DATA_CONNECTOR_NOTVERIFY in hass.data: + tasks.append(hass.data[DATA_CONNECTOR_NOTVERIFY].close()) - hass.bus.async_listen_once( - EVENT_HOMEASSISTANT_STOP, _async_close_connector) + if tasks: + yield from asyncio.wait(tasks, loop=hass.loop) From 93d462b010f35b08d00beb089d3e4b7aa123d78a Mon Sep 17 00:00:00 2001 From: Adam Mills Date: Thu, 5 Jan 2017 17:10:43 -0500 Subject: [PATCH 102/189] Fix for async device_tracker (#5192) --- homeassistant/components/device_tracker/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/device_tracker/__init__.py b/homeassistant/components/device_tracker/__init__.py index 6467869610d..5cedfc5cb09 100644 --- a/homeassistant/components/device_tracker/__init__.py +++ b/homeassistant/components/device_tracker/__init__.py @@ -154,7 +154,7 @@ def async_setup(hass: HomeAssistantType, config: ConfigType): scanner = yield from hass.loop.run_in_executor( None, platform.get_scanner, hass, {DOMAIN: p_config}) elif hasattr(platform, 'async_setup_scanner'): - setup = yield from platform.setup_scanner( + setup = yield from platform.async_setup_scanner( hass, p_config, tracker.see) elif hasattr(platform, 'setup_scanner'): setup = yield from hass.loop.run_in_executor( From ba29ba0fc3c45e37f1c6a683f3a43453579164bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Arnauts?= Date: Thu, 5 Jan 2017 23:15:26 +0100 Subject: [PATCH 103/189] Universal media_player returns ATTR_MEDIA_POSITION and ATTR_MEDIA_POSITION_UPDATED_AT from it's active child now. (#5184) --- homeassistant/components/media_player/universal.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/media_player/universal.py b/homeassistant/components/media_player/universal.py index 85a3eb42aa5..45c30b979a6 100644 --- a/homeassistant/components/media_player/universal.py +++ b/homeassistant/components/media_player/universal.py @@ -15,7 +15,8 @@ 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_SUPPORTED_MEDIA_COMMANDS, DOMAIN, SERVICE_PLAY_MEDIA, + ATTR_SUPPORTED_MEDIA_COMMANDS, ATTR_MEDIA_POSITION, + 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, @@ -380,6 +381,16 @@ class UniversalMediaPlayer(MediaPlayerDevice): return {ATTR_ACTIVE_CHILD: active_child.entity_id} \ if active_child else {} + @property + def media_position(self): + """Position of current playing media in seconds.""" + return self._child_attr(ATTR_MEDIA_POSITION) + + @property + def media_position_updated_at(self): + """When was the position of the current playing media valid.""" + return self._child_attr(ATTR_MEDIA_POSITION_UPDATED_AT) + def turn_on(self): """Turn the media player on.""" self._call_service(SERVICE_TURN_ON, allow_override=True) From db623040a4a2c9dfd21b00e22aa22956735a6a6e Mon Sep 17 00:00:00 2001 From: Ryan Kraus Date: Thu, 5 Jan 2017 17:33:52 -0500 Subject: [PATCH 104/189] Re-enabled Weather Sensors for the ISY component. (#5148) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Re-enabled Weather Sensors for the ISY component. As the ISY component had been updated to support newer components and have better UOM support, the support for ISY’s weather module was dropped. This adds that support back into Home Assistant. * Cleanup of the ISY Weather support. Cleaned up the for loops used to generate nodes representing weather data from the ISY. Moved the weather_node named tuple to the top of the file so that it can be more easily identified. * Update isy994.py --- homeassistant/components/isy994.py | 19 +++++++++ homeassistant/components/sensor/isy994.py | 47 +++++++++++++++++++++++ 2 files changed, 66 insertions(+) diff --git a/homeassistant/components/isy994.py b/homeassistant/components/isy994.py index 0539469f198..7451b3286f7 100644 --- a/homeassistant/components/isy994.py +++ b/homeassistant/components/isy994.py @@ -4,6 +4,7 @@ Support the ISY-994 controllers. For configuration details please visit the documentation for this component at https://home-assistant.io/components/isy994/ """ +from collections import namedtuple import logging from urllib.parse import urlparse import voluptuous as vol @@ -47,6 +48,7 @@ CONFIG_SCHEMA = vol.Schema({ }, extra=vol.ALLOW_EXTRA) SENSOR_NODES = [] +WEATHER_NODES = [] NODES = [] GROUPS = [] PROGRAMS = {} @@ -59,6 +61,9 @@ SUPPORTED_DOMAINS = ['binary_sensor', 'cover', 'fan', 'light', 'lock', 'sensor', 'switch'] +WeatherNode = namedtuple('WeatherNode', ('status', 'name', 'uom')) + + def filter_nodes(nodes: list, units: list=None, states: list=None) -> list: """Filter a list of ISY nodes based on the units and states provided.""" filtered_nodes = [] @@ -132,6 +137,17 @@ def _categorize_programs() -> None: PROGRAMS[component].append(program) +def _categorize_weather() -> None: + """Categorize the ISY994 weather data.""" + global WEATHER_NODES + + climate_attrs = dir(ISY.climate) + WEATHER_NODES = [WeatherNode(getattr(ISY.climate, attr), attr, + getattr(ISY.climate, attr + '_units')) + for attr in climate_attrs + if attr + '_units' in climate_attrs] + + def setup(hass: HomeAssistant, config: ConfigType) -> bool: """Set up the ISY 994 platform.""" isy_config = config.get(DOMAIN) @@ -178,6 +194,9 @@ def setup(hass: HomeAssistant, config: ConfigType) -> bool: _categorize_programs() + if ISY.configuration.get('Weather Information'): + _categorize_weather() + # Listen for HA stop to disconnect. hass.bus.listen_once(EVENT_HOMEASSISTANT_STOP, stop) diff --git a/homeassistant/components/sensor/isy994.py b/homeassistant/components/sensor/isy994.py index df3ae9ed7ba..d35c76b81dc 100644 --- a/homeassistant/components/sensor/isy994.py +++ b/homeassistant/components/sensor/isy994.py @@ -251,6 +251,9 @@ def setup_platform(hass, config: ConfigType, _LOGGER.debug('LOADING %s', node.name) devices.append(ISYSensorDevice(node)) + for node in isy.WEATHER_NODES: + devices.append(ISYWeatherDevice(node)) + add_devices(devices) @@ -309,3 +312,47 @@ class ISYSensorDevice(isy.ISYDevice): return self.hass.config.units.temperature_unit else: return raw_units + + +class ISYWeatherDevice(isy.ISYDevice): + """Representation of an ISY994 weather device.""" + + _domain = 'sensor' + + def __init__(self, node) -> None: + """Initialize the ISY994 weather device.""" + isy.ISYDevice.__init__(self, node) + + @property + def unique_id(self) -> str: + """Return the unique identifier for the node.""" + return self._node.name + + @property + def raw_units(self) -> str: + """Return the raw unit of measurement.""" + if self._node.uom == 'F': + return TEMP_FAHRENHEIT + if self._node.uom == 'C': + return TEMP_CELSIUS + return self._node.uom + + @property + def state(self) -> object: + """Return the value of the node.""" + # pylint: disable=protected-access + val = self._node.status._val + raw_units = self._node.uom + + if raw_units in [TEMP_CELSIUS, TEMP_FAHRENHEIT]: + return self.hass.config.units.temperature(val, raw_units) + return val + + @property + def unit_of_measurement(self) -> str: + """Return the unit of measurement for the node.""" + raw_units = self.raw_units + + if raw_units in [TEMP_CELSIUS, TEMP_FAHRENHEIT]: + return self.hass.config.units.temperature_unit + return raw_units From c959637ebebcd8651a7d9ecfacb7369c4b2c2b8f Mon Sep 17 00:00:00 2001 From: Jared J Date: Thu, 5 Jan 2017 17:39:28 -0500 Subject: [PATCH 105/189] Add Yeelight auto discovery, color temp (#5145) * Add Yeelight auto discovery, color temp * Fixing linting issues --- homeassistant/components/discovery.py | 1 + homeassistant/components/light/yeelight.py | 36 +++++++++++++++++++--- 2 files changed, 32 insertions(+), 5 deletions(-) diff --git a/homeassistant/components/discovery.py b/homeassistant/components/discovery.py index 32cb205fa0f..32d57b4bf85 100644 --- a/homeassistant/components/discovery.py +++ b/homeassistant/components/discovery.py @@ -38,6 +38,7 @@ SERVICE_HANDLERS = { 'directv': ('media_player', 'directv'), 'denonavr': ('media_player', 'denonavr'), 'samsung_tv': ('media_player', 'samsungtv'), + 'yeelight': ('light', 'yeelight'), } CONFIG_SCHEMA = vol.Schema({ diff --git a/homeassistant/components/light/yeelight.py b/homeassistant/components/light/yeelight.py index d8aa138af47..a8a2ec9b3fc 100644 --- a/homeassistant/components/light/yeelight.py +++ b/homeassistant/components/light/yeelight.py @@ -11,10 +11,15 @@ import voluptuous as vol from homeassistant.const import CONF_DEVICES, CONF_NAME from homeassistant.components.light import (ATTR_BRIGHTNESS, ATTR_RGB_COLOR, + ATTR_COLOR_TEMP, SUPPORT_BRIGHTNESS, - SUPPORT_RGB_COLOR, Light, - PLATFORM_SCHEMA) + SUPPORT_RGB_COLOR, + SUPPORT_COLOR_TEMP, + Light, PLATFORM_SCHEMA) import homeassistant.helpers.config_validation as cv +from homeassistant.util import color as color_util +from homeassistant.util.color import \ + color_temperature_mired_to_kelvin as mired_to_kelvin REQUIREMENTS = ['pyyeelight==1.0-beta'] @@ -22,7 +27,8 @@ _LOGGER = logging.getLogger(__name__) DOMAIN = 'yeelight' -SUPPORT_YEELIGHT = (SUPPORT_BRIGHTNESS | SUPPORT_RGB_COLOR) +SUPPORT_YEELIGHT = (SUPPORT_BRIGHTNESS | SUPPORT_RGB_COLOR | + SUPPORT_COLOR_TEMP) DEVICE_SCHEMA = vol.Schema({vol.Optional(CONF_NAME): cv.string, }) @@ -33,9 +39,14 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend( def setup_platform(hass, config, add_devices, discovery_info=None): """Setup the Yeelight bulbs.""" lights = [] - for ipaddr, device_config in config[CONF_DEVICES].items(): - device = {'name': device_config[CONF_NAME], 'ipaddr': ipaddr} + if discovery_info is not None: + device = {'name': discovery_info['hostname'], + 'ipaddr': discovery_info['host']} lights.append(YeelightLight(device)) + else: + for ipaddr, device_config in config[CONF_DEVICES].items(): + device = {'name': device_config[CONF_NAME], 'ipaddr': ipaddr} + lights.append(YeelightLight(device)) add_devices(lights) @@ -54,6 +65,7 @@ class YeelightLight(Light): self._state = None self._bright = None self._rgb = None + self._ct = None try: self._bulb = pyyeelight.YeelightBulb(self._ipaddr) except socket.error: @@ -86,6 +98,11 @@ class YeelightLight(Light): """Return the color property.""" return self._rgb + @property + def color_temp(self): + """Return the color temperature.""" + return color_util.color_temperature_kelvin_to_mired(self._ct) + @property def supported_features(self): """Flag supported features.""" @@ -101,6 +118,11 @@ class YeelightLight(Light): self._bulb.set_rgb_color(rgb[0], rgb[1], rgb[2]) self._rgb = [rgb[0], rgb[1], rgb[2]] + if ATTR_COLOR_TEMP in kwargs: + kelvin = int(mired_to_kelvin(kwargs[ATTR_COLOR_TEMP])) + self._bulb.set_color_temperature(kelvin) + self._ct = kelvin + if ATTR_BRIGHTNESS in kwargs: bright = int(kwargs[ATTR_BRIGHTNESS] * 100 / 255) self._bulb.set_brightness(bright) @@ -134,3 +156,7 @@ class YeelightLight(Light): green = int((raw_rgb - (red * 65536)) / 256) blue = raw_rgb - (red * 65536) - (green * 256) self._rgb = [red, green, blue] + + # Update CT value + self._ct = int(self._bulb.get_property( + self._bulb.PROPERTY_NAME_COLOR_TEMPERATURE)) From 1719d88602bd0ec959aa9dd934533201644d35b3 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Fri, 6 Jan 2017 00:16:12 +0100 Subject: [PATCH 106/189] Bugfix default values to timedelta (#5193) * Bugfix default values to timedelta * fix unittests --- .../components/alarm_control_panel/__init__.py | 3 ++- .../components/alarm_control_panel/concord232.py | 3 ++- homeassistant/components/binary_sensor/__init__.py | 3 ++- .../components/binary_sensor/command_line.py | 3 ++- .../components/binary_sensor/concord232.py | 2 +- homeassistant/components/camera/__init__.py | 3 ++- homeassistant/components/climate/__init__.py | 7 ++++--- homeassistant/components/cover/__init__.py | 3 ++- .../components/device_tracker/__init__.py | 14 +++++--------- homeassistant/components/fan/__init__.py | 3 ++- homeassistant/components/light/__init__.py | 3 ++- homeassistant/components/lock/__init__.py | 2 +- homeassistant/components/media_player/__init__.py | 3 ++- homeassistant/components/remote/__init__.py | 2 +- homeassistant/components/sensor/__init__.py | 3 ++- homeassistant/components/sensor/command_line.py | 3 ++- homeassistant/components/sensor/eliqonline.py | 3 ++- homeassistant/components/switch/__init__.py | 2 +- homeassistant/helpers/entity_component.py | 5 ++--- tests/helpers/test_entity_component.py | 10 +++++----- 20 files changed, 44 insertions(+), 36 deletions(-) diff --git a/homeassistant/components/alarm_control_panel/__init__.py b/homeassistant/components/alarm_control_panel/__init__.py index ea7727cea33..f6fbc933467 100644 --- a/homeassistant/components/alarm_control_panel/__init__.py +++ b/homeassistant/components/alarm_control_panel/__init__.py @@ -5,6 +5,7 @@ For more details about this platform, please refer to the documentation at https://home-assistant.io/components/alarm_control_panel/ """ import asyncio +from datetime import timedelta import logging import os @@ -20,7 +21,7 @@ from homeassistant.helpers.entity import Entity from homeassistant.helpers.entity_component import EntityComponent DOMAIN = 'alarm_control_panel' -SCAN_INTERVAL = 30 +SCAN_INTERVAL = timedelta(seconds=30) ATTR_CHANGED_BY = 'changed_by' ENTITY_ID_FORMAT = DOMAIN + '.{}' diff --git a/homeassistant/components/alarm_control_panel/concord232.py b/homeassistant/components/alarm_control_panel/concord232.py index de153a9e0a5..18a492d6c12 100755 --- a/homeassistant/components/alarm_control_panel/concord232.py +++ b/homeassistant/components/alarm_control_panel/concord232.py @@ -5,6 +5,7 @@ For more details about this platform, please refer to the documentation at https://home-assistant.io/components/alarm_control_panel.concord232/ """ import datetime +from datetime import timedelta import logging import requests @@ -25,7 +26,7 @@ DEFAULT_HOST = 'localhost' DEFAULT_NAME = 'CONCORD232' DEFAULT_PORT = 5007 -SCAN_INTERVAL = 1 +SCAN_INTERVAL = timedelta(seconds=1) PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Optional(CONF_PORT, default=DEFAULT_PORT): cv.port, diff --git a/homeassistant/components/binary_sensor/__init__.py b/homeassistant/components/binary_sensor/__init__.py index 38b08fd32b4..26a19ce3f59 100644 --- a/homeassistant/components/binary_sensor/__init__.py +++ b/homeassistant/components/binary_sensor/__init__.py @@ -5,6 +5,7 @@ For more details about this component, please refer to the documentation at https://home-assistant.io/components/binary_sensor/ """ import asyncio +from datetime import timedelta import logging import voluptuous as vol @@ -15,7 +16,7 @@ from homeassistant.const import (STATE_ON, STATE_OFF) from homeassistant.helpers.config_validation import PLATFORM_SCHEMA # noqa DOMAIN = 'binary_sensor' -SCAN_INTERVAL = 30 +SCAN_INTERVAL = timedelta(seconds=30) ENTITY_ID_FORMAT = DOMAIN + '.{}' SENSOR_CLASSES = [ diff --git a/homeassistant/components/binary_sensor/command_line.py b/homeassistant/components/binary_sensor/command_line.py index 72d0a240809..f051120d680 100644 --- a/homeassistant/components/binary_sensor/command_line.py +++ b/homeassistant/components/binary_sensor/command_line.py @@ -4,6 +4,7 @@ Support for custom shell commands to retrieve values. For more details about this platform, please refer to the documentation at https://home-assistant.io/components/binary_sensor.command_line/ """ +from datetime import timedelta import logging import voluptuous as vol @@ -22,7 +23,7 @@ DEFAULT_NAME = 'Binary Command Sensor' DEFAULT_PAYLOAD_ON = 'ON' DEFAULT_PAYLOAD_OFF = 'OFF' -SCAN_INTERVAL = 60 +SCAN_INTERVAL = timedelta(seconds=60) PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_COMMAND): cv.string, diff --git a/homeassistant/components/binary_sensor/concord232.py b/homeassistant/components/binary_sensor/concord232.py index d9cb11ba6a7..109eed1fdc2 100755 --- a/homeassistant/components/binary_sensor/concord232.py +++ b/homeassistant/components/binary_sensor/concord232.py @@ -27,7 +27,7 @@ DEFAULT_NAME = 'Alarm' DEFAULT_PORT = '5007' DEFAULT_SSL = False -SCAN_INTERVAL = 1 +SCAN_INTERVAL = datetime.timedelta(seconds=1) ZONE_TYPES_SCHEMA = vol.Schema({ cv.positive_int: vol.In(SENSOR_CLASSES), diff --git a/homeassistant/components/camera/__init__.py b/homeassistant/components/camera/__init__.py index 8a114cb627d..5b2aa463607 100644 --- a/homeassistant/components/camera/__init__.py +++ b/homeassistant/components/camera/__init__.py @@ -6,6 +6,7 @@ For more details about this component, please refer to the documentation at https://home-assistant.io/components/camera/ """ import asyncio +from datetime import timedelta import logging from aiohttp import web @@ -17,7 +18,7 @@ from homeassistant.components.http import HomeAssistantView, KEY_AUTHENTICATED DOMAIN = 'camera' DEPENDENCIES = ['http'] -SCAN_INTERVAL = 30 +SCAN_INTERVAL = timedelta(seconds=30) ENTITY_ID_FORMAT = DOMAIN + '.{}' STATE_RECORDING = 'recording' diff --git a/homeassistant/components/climate/__init__.py b/homeassistant/components/climate/__init__.py index 79d0fbbb2de..3058258c75a 100644 --- a/homeassistant/components/climate/__init__.py +++ b/homeassistant/components/climate/__init__.py @@ -5,16 +5,17 @@ For more details about this component, please refer to the documentation at https://home-assistant.io/components/climate/ """ import asyncio +from datetime import timedelta import logging import os import functools as ft from numbers import Number -import voluptuous as vol -from homeassistant.helpers.entity_component import EntityComponent +import voluptuous as vol from homeassistant.config import load_yaml_config_file from homeassistant.util.temperature import convert as convert_temperature +from homeassistant.helpers.entity_component import EntityComponent from homeassistant.helpers.entity import Entity from homeassistant.helpers.config_validation import PLATFORM_SCHEMA # noqa import homeassistant.helpers.config_validation as cv @@ -25,7 +26,7 @@ from homeassistant.const import ( DOMAIN = "climate" ENTITY_ID_FORMAT = DOMAIN + ".{}" -SCAN_INTERVAL = 60 +SCAN_INTERVAL = timedelta(seconds=60) SERVICE_SET_AWAY_MODE = "set_away_mode" SERVICE_SET_AUX_HEAT = "set_aux_heat" diff --git a/homeassistant/components/cover/__init__.py b/homeassistant/components/cover/__init__.py index 6c268e49be6..da473df111e 100644 --- a/homeassistant/components/cover/__init__.py +++ b/homeassistant/components/cover/__init__.py @@ -5,6 +5,7 @@ For more details about this platform, please refer to the documentation at https://home-assistant.io/components/cover/ """ import os +from datetime import timedelta import logging import voluptuous as vol @@ -23,7 +24,7 @@ from homeassistant.const import ( DOMAIN = 'cover' -SCAN_INTERVAL = 15 +SCAN_INTERVAL = timedelta(seconds=15) GROUP_NAME_ALL_COVERS = 'all covers' ENTITY_ID_ALL_COVERS = group.ENTITY_ID_FORMAT.format('all_covers') diff --git a/homeassistant/components/device_tracker/__init__.py b/homeassistant/components/device_tracker/__init__.py index 5cedfc5cb09..9b5556d7ace 100644 --- a/homeassistant/components/device_tracker/__init__.py +++ b/homeassistant/components/device_tracker/__init__.py @@ -51,10 +51,10 @@ CONF_TRACK_NEW = 'track_new_devices' DEFAULT_TRACK_NEW = True CONF_CONSIDER_HOME = 'consider_home' -DEFAULT_CONSIDER_HOME = 180 +DEFAULT_CONSIDER_HOME = timedelta(seconds=180) CONF_SCAN_INTERVAL = 'interval_seconds' -DEFAULT_SCAN_INTERVAL = 12 +DEFAULT_SCAN_INTERVAL = timedelta(seconds=12) CONF_AWAY_HIDE = 'hide_if_away' DEFAULT_AWAY_HIDE = False @@ -75,7 +75,7 @@ PLATFORM_SCHEMA = cv.PLATFORM_SCHEMA.extend({ vol.Optional(CONF_SCAN_INTERVAL): cv.time_period, vol.Optional(CONF_TRACK_NEW, default=DEFAULT_TRACK_NEW): cv.boolean, vol.Optional(CONF_CONSIDER_HOME, - default=timedelta(seconds=DEFAULT_CONSIDER_HOME)): vol.All( + default=DEFAULT_CONSIDER_HOME): vol.All( cv.time_period, cv.positive_timedelta) }) @@ -122,8 +122,7 @@ def async_setup(hass: HomeAssistantType, config: ConfigType): return False else: conf = conf[0] if len(conf) > 0 else {} - consider_home = conf.get(CONF_CONSIDER_HOME, - timedelta(seconds=DEFAULT_CONSIDER_HOME)) + consider_home = conf.get(CONF_CONSIDER_HOME, DEFAULT_CONSIDER_HOME) track_new = conf.get(CONF_TRACK_NEW, DEFAULT_TRACK_NEW) devices = yield from async_load_config(yaml_path, hass, consider_home) @@ -640,10 +639,7 @@ def async_setup_scanner_platform(hass: HomeAssistantType, config: ConfigType, seen.add(mac) hass.async_add_job(async_see_device(mac=mac, host_name=host_name)) - async_track_time_interval( - hass, async_device_tracker_scan, - timedelta(seconds=interval)) - + async_track_time_interval(hass, async_device_tracker_scan, interval) hass.async_add_job(async_device_tracker_scan, None) diff --git a/homeassistant/components/fan/__init__.py b/homeassistant/components/fan/__init__.py index 79793435625..b67b4d2ad24 100644 --- a/homeassistant/components/fan/__init__.py +++ b/homeassistant/components/fan/__init__.py @@ -4,6 +4,7 @@ Provides functionality to interact with fans. For more details about this component, please refer to the documentation at https://home-assistant.io/components/fan/ """ +from datetime import timedelta import logging import os @@ -21,7 +22,7 @@ import homeassistant.helpers.config_validation as cv DOMAIN = 'fan' -SCAN_INTERVAL = 30 +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/light/__init__.py b/homeassistant/components/light/__init__.py index d98d8b0d5fc..efbb9447fcf 100644 --- a/homeassistant/components/light/__init__.py +++ b/homeassistant/components/light/__init__.py @@ -5,6 +5,7 @@ For more details about this component, please refer to the documentation at https://home-assistant.io/components/light/ """ import asyncio +from datetime import timedelta import logging import os import csv @@ -26,7 +27,7 @@ from homeassistant.util.async import run_callback_threadsafe DOMAIN = "light" -SCAN_INTERVAL = 30 +SCAN_INTERVAL = timedelta(seconds=30) GROUP_NAME_ALL_LIGHTS = 'all lights' ENTITY_ID_ALL_LIGHTS = group.ENTITY_ID_FORMAT.format('all_lights') diff --git a/homeassistant/components/lock/__init__.py b/homeassistant/components/lock/__init__.py index e74b675733b..a7d392b321e 100644 --- a/homeassistant/components/lock/__init__.py +++ b/homeassistant/components/lock/__init__.py @@ -21,7 +21,7 @@ from homeassistant.const import ( from homeassistant.components import group DOMAIN = 'lock' -SCAN_INTERVAL = 30 +SCAN_INTERVAL = timedelta(seconds=30) ATTR_CHANGED_BY = 'changed_by' GROUP_NAME_ALL_LOCKS = 'all locks' diff --git a/homeassistant/components/media_player/__init__.py b/homeassistant/components/media_player/__init__.py index aa30c1abdb1..e29e950a7f9 100644 --- a/homeassistant/components/media_player/__init__.py +++ b/homeassistant/components/media_player/__init__.py @@ -5,6 +5,7 @@ For more details about this component, please refer to the documentation at https://home-assistant.io/components/media_player/ """ import asyncio +from datetime import timedelta import functools as ft import hashlib import logging @@ -34,7 +35,7 @@ _LOGGER = logging.getLogger(__name__) DOMAIN = 'media_player' DEPENDENCIES = ['http'] -SCAN_INTERVAL = 10 +SCAN_INTERVAL = timedelta(seconds=10) ENTITY_ID_FORMAT = DOMAIN + '.{}' diff --git a/homeassistant/components/remote/__init__.py b/homeassistant/components/remote/__init__.py index 118a160c305..485ee681209 100755 --- a/homeassistant/components/remote/__init__.py +++ b/homeassistant/components/remote/__init__.py @@ -36,7 +36,7 @@ GROUP_NAME_ALL_REMOTES = 'all remotes' MIN_TIME_BETWEEN_SCANS = timedelta(seconds=10) -SCAN_INTERVAL = 30 +SCAN_INTERVAL = timedelta(seconds=30) SERVICE_SEND_COMMAND = 'send_command' SERVICE_SYNC = 'sync' diff --git a/homeassistant/components/sensor/__init__.py b/homeassistant/components/sensor/__init__.py index b4a467e240f..a3f361bdffe 100644 --- a/homeassistant/components/sensor/__init__.py +++ b/homeassistant/components/sensor/__init__.py @@ -5,13 +5,14 @@ For more details about this component, please refer to the documentation at https://home-assistant.io/components/sensor/ """ import asyncio +from datetime import timedelta import logging from homeassistant.helpers.entity_component import EntityComponent from homeassistant.helpers.config_validation import PLATFORM_SCHEMA # noqa DOMAIN = 'sensor' -SCAN_INTERVAL = 30 +SCAN_INTERVAL = timedelta(seconds=30) ENTITY_ID_FORMAT = DOMAIN + '.{}' diff --git a/homeassistant/components/sensor/command_line.py b/homeassistant/components/sensor/command_line.py index e0700e12903..227b133535d 100644 --- a/homeassistant/components/sensor/command_line.py +++ b/homeassistant/components/sensor/command_line.py @@ -4,6 +4,7 @@ Allows to configure custom shell commands to turn a value for a sensor. For more details about this platform, please refer to the documentation at https://home-assistant.io/components/sensor.command_line/ """ +from datetime import timedelta import logging import subprocess @@ -20,7 +21,7 @@ _LOGGER = logging.getLogger(__name__) DEFAULT_NAME = 'Command Sensor' -SCAN_INTERVAL = 60 +SCAN_INTERVAL = timedelta(seconds=60) PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_COMMAND): cv.string, diff --git a/homeassistant/components/sensor/eliqonline.py b/homeassistant/components/sensor/eliqonline.py index 7029be9fca2..4feb3c66694 100644 --- a/homeassistant/components/sensor/eliqonline.py +++ b/homeassistant/components/sensor/eliqonline.py @@ -4,6 +4,7 @@ Monitors home energy use for the ELIQ Online service. For more details about this platform, please refer to the documentation at https://home-assistant.io/components/sensor.eliqonline/ """ +from datetime import timedelta import logging from urllib.error import URLError @@ -24,7 +25,7 @@ DEFAULT_NAME = 'ELIQ Online' ICON = 'mdi:speedometer' -SCAN_INTERVAL = 60 +SCAN_INTERVAL = timedelta(seconds=60) UNIT_OF_MEASUREMENT = 'W' diff --git a/homeassistant/components/switch/__init__.py b/homeassistant/components/switch/__init__.py index fe74711dff0..56ad5ea8966 100644 --- a/homeassistant/components/switch/__init__.py +++ b/homeassistant/components/switch/__init__.py @@ -22,7 +22,7 @@ from homeassistant.const import ( from homeassistant.components import group DOMAIN = 'switch' -SCAN_INTERVAL = 30 +SCAN_INTERVAL = timedelta(seconds=30) GROUP_NAME_ALL_SWITCHES = 'all switches' ENTITY_ID_ALL_SWITCHES = group.ENTITY_ID_FORMAT.format('all_switches') diff --git a/homeassistant/helpers/entity_component.py b/homeassistant/helpers/entity_component.py index 71ae352c39f..4b773d50bb9 100644 --- a/homeassistant/helpers/entity_component.py +++ b/homeassistant/helpers/entity_component.py @@ -18,7 +18,7 @@ from homeassistant.helpers.service import extract_entity_ids from homeassistant.util.async import ( run_callback_threadsafe, run_coroutine_threadsafe) -DEFAULT_SCAN_INTERVAL = 15 +DEFAULT_SCAN_INTERVAL = timedelta(seconds=15) class EntityComponent(object): @@ -326,8 +326,7 @@ class EntityPlatform(object): return self._async_unsub_polling = async_track_time_interval( - self.component.hass, self._update_entity_states, - timedelta(seconds=self.scan_interval) + self.component.hass, self._update_entity_states, self.scan_interval ) @asyncio.coroutine diff --git a/tests/helpers/test_entity_component.py b/tests/helpers/test_entity_component.py index 69c314a8208..59f75bdfb16 100644 --- a/tests/helpers/test_entity_component.py +++ b/tests/helpers/test_entity_component.py @@ -97,7 +97,8 @@ class TestHelpersEntityComponent(unittest.TestCase): def test_polling_only_updates_entities_it_should_poll(self): """Test the polling of only updated entities.""" - component = EntityComponent(_LOGGER, DOMAIN, self.hass, 20) + component = EntityComponent( + _LOGGER, DOMAIN, self.hass, timedelta(seconds=20)) no_poll_ent = EntityTest(should_poll=False) no_poll_ent.async_update = Mock() @@ -127,8 +128,7 @@ class TestHelpersEntityComponent(unittest.TestCase): ent2.update = lambda *_: component.add_entities([ent1]) fire_time_changed( - self.hass, dt_util.utcnow() + - timedelta(seconds=DEFAULT_SCAN_INTERVAL) + self.hass, dt_util.utcnow() + DEFAULT_SCAN_INTERVAL ) self.hass.block_till_done() @@ -332,7 +332,7 @@ class TestHelpersEntityComponent(unittest.TestCase): component.setup({ DOMAIN: { 'platform': 'platform', - 'scan_interval': 30, + 'scan_interval': timedelta(seconds=30), } }) @@ -348,7 +348,7 @@ class TestHelpersEntityComponent(unittest.TestCase): add_devices([EntityTest(should_poll=True)]) platform = MockPlatform(platform_setup) - platform.SCAN_INTERVAL = 30 + platform.SCAN_INTERVAL = timedelta(seconds=30) loader.set_component('test_domain.platform', platform) From 2b991e2f3221cf69aeef951c635f43c25a1fe859 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Fri, 6 Jan 2017 23:42:53 +0100 Subject: [PATCH 107/189] [new] component rest_command (#5055) * New component rest_command * add unittests * change handling like other command * change unittest * address @balloob comments --- homeassistant/components/rest_command.py | 115 ++++++++++++ tests/components/test_rest_command.py | 223 +++++++++++++++++++++++ 2 files changed, 338 insertions(+) create mode 100644 homeassistant/components/rest_command.py create mode 100644 tests/components/test_rest_command.py diff --git a/homeassistant/components/rest_command.py b/homeassistant/components/rest_command.py new file mode 100644 index 00000000000..dfcb5610073 --- /dev/null +++ b/homeassistant/components/rest_command.py @@ -0,0 +1,115 @@ +""" +Exposes regular rest commands as services. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/rest_command/ +""" +import asyncio +import logging + +import aiohttp +import async_timeout +import voluptuous as vol + +from homeassistant.const import ( + CONF_TIMEOUT, CONF_USERNAME, CONF_PASSWORD, CONF_URL, CONF_PAYLOAD, + CONF_METHOD) +from homeassistant.helpers.aiohttp_client import async_get_clientsession +import homeassistant.helpers.config_validation as cv + +DOMAIN = 'rest_command' + +_LOGGER = logging.getLogger(__name__) + +DEFAULT_TIMEOUT = 10 +DEFAULT_METHOD = 'get' + +SUPPORT_REST_METHODS = [ + 'get', + 'post', + 'put', + 'delete', +] + +COMMAND_SCHEMA = vol.Schema({ + vol.Required(CONF_URL): cv.template, + vol.Optional(CONF_METHOD, default=DEFAULT_METHOD): + vol.All(vol.Lower, vol.In(SUPPORT_REST_METHODS)), + vol.Inclusive(CONF_USERNAME, 'authentication'): cv.string, + vol.Inclusive(CONF_PASSWORD, 'authentication'): cv.string, + vol.Optional(CONF_PAYLOAD): cv.template, + vol.Optional(CONF_TIMEOUT, default=DEFAULT_TIMEOUT): vol.Coerce(int), +}) + +CONFIG_SCHEMA = vol.Schema({ + DOMAIN: vol.Schema({ + cv.slug: COMMAND_SCHEMA, + }), +}, extra=vol.ALLOW_EXTRA) + + +@asyncio.coroutine +def async_setup(hass, config): + """Setup the rest_command component.""" + websession = async_get_clientsession(hass) + + def async_register_rest_command(name, command_config): + """Create service for rest command.""" + timeout = command_config[CONF_TIMEOUT] + method = command_config[CONF_METHOD] + + template_url = command_config[CONF_URL] + template_url.hass = hass + + auth = None + if CONF_USERNAME in command_config: + username = command_config[CONF_USERNAME] + password = command_config.get(CONF_PASSWORD, '') + auth = aiohttp.BasicAuth(username, password=password) + + template_payload = None + if CONF_PAYLOAD in command_config: + template_payload = command_config[CONF_PAYLOAD] + template_payload.hass = hass + + @asyncio.coroutine + def async_service_handler(service): + """Execute a shell command service.""" + payload = None + if template_payload: + payload = bytes( + template_payload.async_render(variables=service.data), + 'utf-8') + + request = None + try: + with async_timeout.timeout(timeout, loop=hass.loop): + request = yield from getattr(websession, method)( + template_url.async_render(variables=service.data), + data=payload, + auth=auth + ) + + if request.status == 200: + _LOGGER.info("Success call %s.", request.url) + return + + _LOGGER.warning( + "Error %d on call %s.", request.status, request.url) + except asyncio.TimeoutError: + _LOGGER.warning("Timeout call %s.", request.url) + + except aiohttp.errors.ClientError: + _LOGGER.error("Client error %s.", request.url) + + finally: + if request is not None: + yield from request.release() + + # register services + hass.services.async_register(DOMAIN, name, async_service_handler) + + for command, command_config in config[DOMAIN].items(): + async_register_rest_command(command, command_config) + + return True diff --git a/tests/components/test_rest_command.py b/tests/components/test_rest_command.py new file mode 100644 index 00000000000..8fe9523801d --- /dev/null +++ b/tests/components/test_rest_command.py @@ -0,0 +1,223 @@ +"""The tests for the rest command platform.""" +import asyncio + +import aiohttp + +import homeassistant.components.rest_command as rc +from homeassistant.bootstrap import setup_component + +from tests.common import ( + get_test_home_assistant, assert_setup_component) + + +class TestRestCommandSetup(object): + """Test the rest command component.""" + + def setup_method(self): + """Setup things to be run when tests are started.""" + self.hass = get_test_home_assistant() + + self.config = { + rc.DOMAIN: {'test_get': { + 'url': 'http://example.com/' + }} + } + + def teardown_method(self): + """Stop everything that was started.""" + self.hass.stop() + + def test_setup_component(self): + """Test setup component.""" + with assert_setup_component(1): + setup_component(self.hass, rc.DOMAIN, self.config) + + def test_setup_component_timeout(self): + """Test setup component timeout.""" + self.config[rc.DOMAIN]['test_get']['timeout'] = 10 + + with assert_setup_component(1): + setup_component(self.hass, rc.DOMAIN, self.config) + + def test_setup_component_test_service(self): + """Test setup component and check if service exits.""" + with assert_setup_component(1): + setup_component(self.hass, rc.DOMAIN, self.config) + + assert self.hass.services.has_service(rc.DOMAIN, 'test_get') + + +class TestRestCommandComponent(object): + """Test the rest command component.""" + + def setup_method(self): + """Setup things to be run when tests are started.""" + self.url = "https://example.com/" + self.config = { + rc.DOMAIN: { + 'get_test': { + 'url': self.url, + 'method': 'get', + }, + 'post_test': { + 'url': self.url, + 'method': 'post', + }, + 'put_test': { + 'url': self.url, + 'method': 'put', + }, + 'delete_test': { + 'url': self.url, + 'method': 'delete', + }, + } + } + + self.hass = get_test_home_assistant() + + def teardown_method(self): + """Stop everything that was started.""" + self.hass.stop() + + def test_setup_tests(self): + """Setup test config and test it.""" + with assert_setup_component(4): + setup_component(self.hass, rc.DOMAIN, self.config) + + assert self.hass.services.has_service(rc.DOMAIN, 'get_test') + assert self.hass.services.has_service(rc.DOMAIN, 'post_test') + assert self.hass.services.has_service(rc.DOMAIN, 'put_test') + assert self.hass.services.has_service(rc.DOMAIN, 'delete_test') + + def test_rest_command_timeout(self, aioclient_mock): + """Call a rest command with timeout.""" + with assert_setup_component(4): + setup_component(self.hass, rc.DOMAIN, self.config) + + aioclient_mock.get(self.url, exc=asyncio.TimeoutError()) + + self.hass.services.call(rc.DOMAIN, 'get_test', {}) + self.hass.block_till_done() + + assert len(aioclient_mock.mock_calls) == 1 + + def test_rest_command_aiohttp_error(self, aioclient_mock): + """Call a rest command with aiohttp exception.""" + with assert_setup_component(4): + setup_component(self.hass, rc.DOMAIN, self.config) + + aioclient_mock.get(self.url, exc=aiohttp.errors.ClientError()) + + self.hass.services.call(rc.DOMAIN, 'get_test', {}) + self.hass.block_till_done() + + assert len(aioclient_mock.mock_calls) == 1 + + def test_rest_command_http_error(self, aioclient_mock): + """Call a rest command with status code 400.""" + with assert_setup_component(4): + setup_component(self.hass, rc.DOMAIN, self.config) + + aioclient_mock.get(self.url, status=400) + + self.hass.services.call(rc.DOMAIN, 'get_test', {}) + self.hass.block_till_done() + + assert len(aioclient_mock.mock_calls) == 1 + + def test_rest_command_auth(self, aioclient_mock): + """Call a rest command with auth credential.""" + data = { + 'username': 'test', + 'password': '123456', + } + self.config[rc.DOMAIN]['get_test'].update(data) + + with assert_setup_component(4): + setup_component(self.hass, rc.DOMAIN, self.config) + + aioclient_mock.get(self.url, content=b'success') + + self.hass.services.call(rc.DOMAIN, 'get_test', {}) + self.hass.block_till_done() + + assert len(aioclient_mock.mock_calls) == 1 + + def test_rest_command_form_data(self, aioclient_mock): + """Call a rest command with post form data.""" + data = { + 'payload': 'test' + } + self.config[rc.DOMAIN]['post_test'].update(data) + + with assert_setup_component(4): + setup_component(self.hass, rc.DOMAIN, self.config) + + aioclient_mock.post(self.url, content=b'success') + + self.hass.services.call(rc.DOMAIN, 'post_test', {}) + self.hass.block_till_done() + + assert len(aioclient_mock.mock_calls) == 1 + assert aioclient_mock.mock_calls[0][2] == b'test' + + def test_rest_command_get(self, aioclient_mock): + """Call a rest command with get.""" + with assert_setup_component(4): + setup_component(self.hass, rc.DOMAIN, self.config) + + aioclient_mock.get(self.url, content=b'success') + + self.hass.services.call(rc.DOMAIN, 'get_test', {}) + self.hass.block_till_done() + + assert len(aioclient_mock.mock_calls) == 1 + + def test_rest_command_delete(self, aioclient_mock): + """Call a rest command with delete.""" + with assert_setup_component(4): + setup_component(self.hass, rc.DOMAIN, self.config) + + aioclient_mock.delete(self.url, content=b'success') + + self.hass.services.call(rc.DOMAIN, 'delete_test', {}) + self.hass.block_till_done() + + assert len(aioclient_mock.mock_calls) == 1 + + def test_rest_command_post(self, aioclient_mock): + """Call a rest command with post.""" + data = { + 'payload': 'data', + } + self.config[rc.DOMAIN]['post_test'].update(data) + + with assert_setup_component(4): + setup_component(self.hass, rc.DOMAIN, self.config) + + aioclient_mock.post(self.url, content=b'success') + + self.hass.services.call(rc.DOMAIN, 'post_test', {}) + self.hass.block_till_done() + + assert len(aioclient_mock.mock_calls) == 1 + assert aioclient_mock.mock_calls[0][2] == b'data' + + def test_rest_command_put(self, aioclient_mock): + """Call a rest command with put.""" + data = { + 'payload': 'data', + } + self.config[rc.DOMAIN]['put_test'].update(data) + + with assert_setup_component(4): + setup_component(self.hass, rc.DOMAIN, self.config) + + aioclient_mock.put(self.url, content=b'success') + + self.hass.services.call(rc.DOMAIN, 'put_test', {}) + self.hass.block_till_done() + + assert len(aioclient_mock.mock_calls) == 1 + assert aioclient_mock.mock_calls[0][2] == b'data' From aa1e4c564cb8660bf6b7637bc25317ee58869214 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 7 Jan 2017 01:47:25 +0100 Subject: [PATCH 108/189] Fix tests closing properly (#5203) --- .../components/binary_sensor/test_sleepiq.py | 4 + .../components/device_tracker/test_asuswrt.py | 1 + .../device_tracker/test_automatic.py | 1 + tests/components/device_tracker/test_ddwrt.py | 1 + tests/components/device_tracker/test_mqtt.py | 1 + .../device_tracker/test_owntracks.py | 4 + .../components/device_tracker/test_tplink.py | 1 + tests/components/notify/test_apns.py | 141 +++++++++--------- tests/components/sensor/test_darksky.py | 4 + tests/components/sensor/test_sleepiq.py | 4 + tests/components/sensor/test_sonarr.py | 4 + tests/components/sensor/test_wunderground.py | 4 + tests/components/switch/test_command_line.py | 4 - tests/helpers/test_config_validation.py | 17 ++- 14 files changed, 108 insertions(+), 83 deletions(-) diff --git a/tests/components/binary_sensor/test_sleepiq.py b/tests/components/binary_sensor/test_sleepiq.py index 94a51832d56..fb86e2b3ee5 100644 --- a/tests/components/binary_sensor/test_sleepiq.py +++ b/tests/components/binary_sensor/test_sleepiq.py @@ -31,6 +31,10 @@ class TestSleepIQBinarySensorSetup(unittest.TestCase): 'password': self.password, } + def tearDown(self): # pylint: disable=invalid-name + """Stop everything that was started.""" + self.hass.stop() + @requests_mock.Mocker() def test_setup(self, mock): """Test for successfully setting up the SleepIQ platform.""" diff --git a/tests/components/device_tracker/test_asuswrt.py b/tests/components/device_tracker/test_asuswrt.py index ad42fd9d9a6..9dfa010edb3 100644 --- a/tests/components/device_tracker/test_asuswrt.py +++ b/tests/components/device_tracker/test_asuswrt.py @@ -47,6 +47,7 @@ class TestComponentsDeviceTrackerASUSWRT(unittest.TestCase): def teardown_method(self, _): """Stop everything that was started.""" + self.hass.stop() try: os.remove(self.hass.config.path(device_tracker.YAML_DEVICES)) except FileNotFoundError: diff --git a/tests/components/device_tracker/test_automatic.py b/tests/components/device_tracker/test_automatic.py index 2e476ac742d..8e7d37d8798 100644 --- a/tests/components/device_tracker/test_automatic.py +++ b/tests/components/device_tracker/test_automatic.py @@ -210,6 +210,7 @@ class TestAutomatic(unittest.TestCase): def tearDown(self): """Tear down test data.""" + self.hass.stop() @patch('requests.get', side_effect=mocked_requests) @patch('requests.post', side_effect=mocked_requests) diff --git a/tests/components/device_tracker/test_ddwrt.py b/tests/components/device_tracker/test_ddwrt.py index e86432e1659..f7a1c011d10 100644 --- a/tests/components/device_tracker/test_ddwrt.py +++ b/tests/components/device_tracker/test_ddwrt.py @@ -43,6 +43,7 @@ class TestDdwrt(unittest.TestCase): def teardown_method(self, _): """Stop everything that was started.""" + self.hass.stop() try: os.remove(self.hass.config.path(device_tracker.YAML_DEVICES)) except FileNotFoundError: diff --git a/tests/components/device_tracker/test_mqtt.py b/tests/components/device_tracker/test_mqtt.py index 7a34318bd79..6eb5ba2381c 100644 --- a/tests/components/device_tracker/test_mqtt.py +++ b/tests/components/device_tracker/test_mqtt.py @@ -24,6 +24,7 @@ class TestComponentsDeviceTrackerMQTT(unittest.TestCase): def tearDown(self): # pylint: disable=invalid-name """Stop everything that was started.""" + self.hass.stop() try: os.remove(self.hass.config.path(device_tracker.YAML_DEVICES)) except FileNotFoundError: diff --git a/tests/components/device_tracker/test_owntracks.py b/tests/components/device_tracker/test_owntracks.py index 85529c6ed96..183bbbd994f 100644 --- a/tests/components/device_tracker/test_owntracks.py +++ b/tests/components/device_tracker/test_owntracks.py @@ -691,6 +691,10 @@ class TestDeviceTrackerOwnTrackConfigs(BaseMQTT): self.hass = get_test_home_assistant() mock_mqtt_component(self.hass) + def teardown_method(self, method): + """Tear down resources.""" + self.hass.stop() + def mock_cipher(): # pylint: disable=no-method-argument """Return a dummy pickle-based cipher.""" def mock_decrypt(ciphertext, key): diff --git a/tests/components/device_tracker/test_tplink.py b/tests/components/device_tracker/test_tplink.py index 6c424033a8a..171548358db 100644 --- a/tests/components/device_tracker/test_tplink.py +++ b/tests/components/device_tracker/test_tplink.py @@ -21,6 +21,7 @@ class TestTplink4DeviceScanner(unittest.TestCase): def tearDown(self): # pylint: disable=invalid-name """Stop everything that was started.""" + self.hass.stop() try: os.remove(self.hass.config.path(device_tracker.YAML_DEVICES)) except FileNotFoundError: diff --git a/tests/components/notify/test_apns.py b/tests/components/notify/test_apns.py index 8be04de9b23..e0363f2d8b8 100644 --- a/tests/components/notify/test_apns.py +++ b/tests/components/notify/test_apns.py @@ -14,6 +14,14 @@ from apns2.errors import Unregistered class TestApns(unittest.TestCase): """Test the APNS component.""" + def setUp(self): # pylint: disable=invalid-name + """Setup things to be run when tests are started.""" + self.hass = get_test_home_assistant() + + def tearDown(self): # pylint: disable=invalid-name + """Stop everything that was started.""" + self.hass.stop() + def test_apns_setup_full(self): """Test setup with all data.""" config = { @@ -25,9 +33,8 @@ class TestApns(unittest.TestCase): 'cert_file': 'test_app.pem' } } - hass = get_test_home_assistant() - self.assertTrue(notify.setup(hass, config)) + self.assertTrue(notify.setup(self.hass, config)) def test_apns_setup_missing_name(self): """Test setup with missing name.""" @@ -39,8 +46,7 @@ class TestApns(unittest.TestCase): 'cert_file': 'test_app.pem' } } - hass = get_test_home_assistant() - self.assertFalse(notify.setup(hass, config)) + self.assertFalse(notify.setup(self.hass, config)) def test_apns_setup_missing_certificate(self): """Test setup with missing name.""" @@ -51,8 +57,7 @@ class TestApns(unittest.TestCase): 'name': 'test_app' } } - hass = get_test_home_assistant() - self.assertFalse(notify.setup(hass, config)) + self.assertFalse(notify.setup(self.hass, config)) def test_apns_setup_missing_topic(self): """Test setup with missing topic.""" @@ -63,8 +68,7 @@ class TestApns(unittest.TestCase): 'name': 'test_app' } } - hass = get_test_home_assistant() - self.assertFalse(notify.setup(hass, config)) + self.assertFalse(notify.setup(self.hass, config)) def test_register_new_device(self): """Test registering a new device with a name.""" @@ -76,18 +80,17 @@ class TestApns(unittest.TestCase): 'cert_file': 'test_app.pem' } } - hass = get_test_home_assistant() - devices_path = hass.config.path('test_app_apns.yaml') + devices_path = self.hass.config.path('test_app_apns.yaml') with open(devices_path, 'w+') as out: out.write('5678: {name: test device 2}\n') - notify.setup(hass, config) - self.assertTrue(hass.services.call('apns', - 'test_app', - {'push_id': '1234', - 'name': 'test device'}, - blocking=True)) + notify.setup(self.hass, config) + self.assertTrue(self.hass.services.call('apns', + 'test_app', + {'push_id': '1234', + 'name': 'test device'}, + blocking=True)) devices = {str(key): value for (key, value) in load_yaml_config_file(devices_path).items()} @@ -112,16 +115,15 @@ class TestApns(unittest.TestCase): 'cert_file': 'test_app.pem' } } - hass = get_test_home_assistant() - devices_path = hass.config.path('test_app_apns.yaml') + devices_path = self.hass.config.path('test_app_apns.yaml') with open(devices_path, 'w+') as out: out.write('5678: {name: test device 2}\n') - notify.setup(hass, config) - self.assertTrue(hass.services.call('apns', 'test_app', - {'push_id': '1234'}, - blocking=True)) + notify.setup(self.hass, config) + self.assertTrue(self.hass.services.call('apns', 'test_app', + {'push_id': '1234'}, + blocking=True)) devices = {str(key): value for (key, value) in load_yaml_config_file(devices_path).items()} @@ -143,19 +145,18 @@ class TestApns(unittest.TestCase): 'cert_file': 'test_app.pem' } } - hass = get_test_home_assistant() - devices_path = hass.config.path('test_app_apns.yaml') + devices_path = self.hass.config.path('test_app_apns.yaml') with open(devices_path, 'w+') as out: out.write('1234: {name: test device 1}\n') out.write('5678: {name: test device 2}\n') - notify.setup(hass, config) - self.assertTrue(hass.services.call('apns', - 'test_app', - {'push_id': '1234', - 'name': 'updated device 1'}, - blocking=True)) + notify.setup(self.hass, config) + self.assertTrue(self.hass.services.call('apns', + 'test_app', + {'push_id': '1234', + 'name': 'updated device 1'}, + blocking=True)) devices = {str(key): value for (key, value) in load_yaml_config_file(devices_path).items()} @@ -180,21 +181,20 @@ class TestApns(unittest.TestCase): 'cert_file': 'test_app.pem' } } - hass = get_test_home_assistant() - devices_path = hass.config.path('test_app_apns.yaml') + devices_path = self.hass.config.path('test_app_apns.yaml') with open(devices_path, 'w+') as out: out.write('1234: {name: test device 1, ' 'tracking_device_id: tracking123}\n') out.write('5678: {name: test device 2, ' 'tracking_device_id: tracking456}\n') - notify.setup(hass, config) - self.assertTrue(hass.services.call('apns', - 'test_app', - {'push_id': '1234', - 'name': 'updated device 1'}, - blocking=True)) + notify.setup(self.hass, config) + self.assertTrue(self.hass.services.call('apns', + 'test_app', + {'push_id': '1234', + 'name': 'updated device 1'}, + blocking=True)) devices = {str(key): value for (key, value) in load_yaml_config_file(devices_path).items()} @@ -224,23 +224,22 @@ class TestApns(unittest.TestCase): 'cert_file': 'test_app.pem' } } - hass = get_test_home_assistant() - devices_path = hass.config.path('test_app_apns.yaml') + devices_path = self.hass.config.path('test_app_apns.yaml') with open(devices_path, 'w+') as out: out.write('1234: {name: test device 1}\n') - notify.setup(hass, config) + notify.setup(self.hass, config) - self.assertTrue(hass.services.call('notify', 'test_app', - {'message': 'Hello', - 'data': { - 'badge': 1, - 'sound': 'test.mp3', - 'category': 'testing' - } - }, - blocking=True)) + self.assertTrue(self.hass.services.call('notify', 'test_app', + {'message': 'Hello', + 'data': { + 'badge': 1, + 'sound': 'test.mp3', + 'category': 'testing' + } + }, + blocking=True)) self.assertTrue(send.called) self.assertEqual(1, len(send.mock_calls)) @@ -266,23 +265,22 @@ class TestApns(unittest.TestCase): 'cert_file': 'test_app.pem' } } - hass = get_test_home_assistant() - devices_path = hass.config.path('test_app_apns.yaml') + devices_path = self.hass.config.path('test_app_apns.yaml') with open(devices_path, 'w+') as out: out.write('1234: {name: test device 1, disabled: True}\n') - notify.setup(hass, config) + notify.setup(self.hass, config) - self.assertTrue(hass.services.call('notify', 'test_app', - {'message': 'Hello', - 'data': { - 'badge': 1, - 'sound': 'test.mp3', - 'category': 'testing' - } - }, - blocking=True)) + self.assertTrue(self.hass.services.call('notify', 'test_app', + {'message': 'Hello', + 'data': { + 'badge': 1, + 'sound': 'test.mp3', + 'category': 'testing' + } + }, + blocking=True)) self.assertFalse(send.called) @@ -291,9 +289,7 @@ class TestApns(unittest.TestCase): """Test updating an existing device.""" send = mock_client.return_value.send_notification - hass = get_test_home_assistant() - - devices_path = hass.config.path('test_app_apns.yaml') + devices_path = self.hass.config.path('test_app_apns.yaml') with open(devices_path, 'w+') as out: out.write('1234: {name: test device 1, ' 'tracking_device_id: tracking123}\n') @@ -301,7 +297,7 @@ class TestApns(unittest.TestCase): 'tracking_device_id: tracking456}\n') notify_service = ApnsNotificationService( - hass, + self.hass, 'test_app', 'testapp.appname', False, @@ -313,7 +309,7 @@ class TestApns(unittest.TestCase): State('device_tracker.tracking456', None), State('device_tracker.tracking456', 'home')) - hass.block_till_done() + self.hass.block_till_done() notify_service.send_message(message='Hello', target='home') @@ -340,17 +336,16 @@ class TestApns(unittest.TestCase): 'cert_file': 'test_app.pem' } } - hass = get_test_home_assistant() - devices_path = hass.config.path('test_app_apns.yaml') + devices_path = self.hass.config.path('test_app_apns.yaml') with open(devices_path, 'w+') as out: out.write('1234: {name: test device 1}\n') - notify.setup(hass, config) + notify.setup(self.hass, config) - self.assertTrue(hass.services.call('notify', 'test_app', - {'message': 'Hello'}, - blocking=True)) + self.assertTrue(self.hass.services.call('notify', 'test_app', + {'message': 'Hello'}, + blocking=True)) devices = {str(key): value for (key, value) in load_yaml_config_file(devices_path).items()} diff --git a/tests/components/sensor/test_darksky.py b/tests/components/sensor/test_darksky.py index 976a9278452..e3c83bad2a6 100644 --- a/tests/components/sensor/test_darksky.py +++ b/tests/components/sensor/test_darksky.py @@ -41,6 +41,10 @@ class TestDarkSkySetup(unittest.TestCase): self.hass.config.longitude = self.lon self.entities = [] + def tearDown(self): # pylint: disable=invalid-name + """Stop everything that was started.""" + self.hass.stop() + def test_setup_with_config(self): """Test the platform setup with configuration.""" self.assertTrue( diff --git a/tests/components/sensor/test_sleepiq.py b/tests/components/sensor/test_sleepiq.py index b0c937c4025..765acb56ec9 100644 --- a/tests/components/sensor/test_sleepiq.py +++ b/tests/components/sensor/test_sleepiq.py @@ -30,6 +30,10 @@ class TestSleepIQSensorSetup(unittest.TestCase): 'password': self.password, } + def tearDown(self): # pylint: disable=invalid-name + """Stop everything that was started.""" + self.hass.stop() + @requests_mock.Mocker() def test_setup(self, mock): """Test for successfully setting up the SleepIQ platform.""" diff --git a/tests/components/sensor/test_sonarr.py b/tests/components/sensor/test_sonarr.py index 24a733e6565..dbf918812cc 100644 --- a/tests/components/sensor/test_sonarr.py +++ b/tests/components/sensor/test_sonarr.py @@ -572,6 +572,10 @@ class TestSonarrSetup(unittest.TestCase): self.hass = get_test_home_assistant() self.hass.config.time_zone = 'America/Los_Angeles' + def tearDown(self): # pylint: disable=invalid-name + """Stop everything that was started.""" + self.hass.stop() + @unittest.mock.patch('requests.get', side_effect=mocked_requests_get) def test_diskspace_no_paths(self, req_mock): """Test getting all disk space.""" diff --git a/tests/components/sensor/test_wunderground.py b/tests/components/sensor/test_wunderground.py index 7c92ac20424..286f9d959e2 100644 --- a/tests/components/sensor/test_wunderground.py +++ b/tests/components/sensor/test_wunderground.py @@ -129,6 +129,10 @@ class TestWundergroundSetup(unittest.TestCase): self.hass.config.latitude = self.lat self.hass.config.longitude = self.lon + def tearDown(self): # pylint: disable=invalid-name + """Stop everything that was started.""" + self.hass.stop() + @unittest.mock.patch('requests.get', side_effect=mocked_requests_get) def test_setup(self, req_mock): """Test that the component is loaded if passed in PWS Id.""" diff --git a/tests/components/switch/test_command_line.py b/tests/components/switch/test_command_line.py index de122df0479..008727df7f8 100644 --- a/tests/components/switch/test_command_line.py +++ b/tests/components/switch/test_command_line.py @@ -161,8 +161,6 @@ class TestCommandSwitch(unittest.TestCase): def test_assumed_state_should_be_true_if_command_state_is_false(self): """Test with state value.""" - self.hass = get_test_home_assistant() - # args: hass, device_name, friendly_name, command_on, command_off, # command_state, value_template init_args = [ @@ -186,8 +184,6 @@ class TestCommandSwitch(unittest.TestCase): def test_entity_id_set_correctly(self): """Test that entity_id is set correctly from object_id.""" - self.hass = get_test_home_assistant() - init_args = [ self.hass, "test_device_name", diff --git a/tests/helpers/test_config_validation.py b/tests/helpers/test_config_validation.py index 9d8f60279e9..252f7f60c95 100644 --- a/tests/helpers/test_config_validation.py +++ b/tests/helpers/test_config_validation.py @@ -191,15 +191,20 @@ def test_event_schema(): def test_platform_validator(): """Test platform validation.""" - # Prepares loading - get_test_home_assistant() + hass = None - schema = vol.Schema(cv.platform_validator('light')) + try: + hass = get_test_home_assistant() - with pytest.raises(vol.MultipleInvalid): - schema('platform_that_does_not_exist') + schema = vol.Schema(cv.platform_validator('light')) - schema('hue') + with pytest.raises(vol.MultipleInvalid): + schema('platform_that_does_not_exist') + + schema('hue') + finally: + if hass is not None: + hass.stop() def test_icon(): From 81922b88a23987e31b599c659a7e79fa3f2fe4df Mon Sep 17 00:00:00 2001 From: Lewis Juggins Date: Sat, 7 Jan 2017 10:24:25 +0000 Subject: [PATCH 109/189] [calendar] Fix scan interval (#5205) --- homeassistant/components/calendar/__init__.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/calendar/__init__.py b/homeassistant/components/calendar/__init__.py index 503b97a2b13..63083f46bba 100644 --- a/homeassistant/components/calendar/__init__.py +++ b/homeassistant/components/calendar/__init__.py @@ -6,6 +6,8 @@ https://home-assistant.io/components/calendar/ """ import logging +from datetime import timedelta + import re from homeassistant.components.google import (CONF_OFFSET, @@ -20,6 +22,7 @@ from homeassistant.util import dt _LOGGER = logging.getLogger(__name__) +SCAN_INTERVAL = timedelta(seconds=60) DOMAIN = 'calendar' ENTITY_ID_FORMAT = DOMAIN + '.{}' @@ -27,7 +30,7 @@ ENTITY_ID_FORMAT = DOMAIN + '.{}' def setup(hass, config): """Track states and offer events for calendars.""" component = EntityComponent( - logging.getLogger(__name__), DOMAIN, hass, 60, DOMAIN) + logging.getLogger(__name__), DOMAIN, hass, SCAN_INTERVAL, DOMAIN) component.setup(config) From ca4a857532bce95e04956c859c6f15d642a09b69 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sat, 7 Jan 2017 21:11:19 +0100 Subject: [PATCH 110/189] Improve aiohttp default clientsession close with connector (#5208) --- homeassistant/helpers/aiohttp_client.py | 5 ++++- tests/components/media_player/test_demo.py | 3 +-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/homeassistant/helpers/aiohttp_client.py b/homeassistant/helpers/aiohttp_client.py index b44b6aebefe..32e0861ff53 100644 --- a/homeassistant/helpers/aiohttp_client.py +++ b/homeassistant/helpers/aiohttp_client.py @@ -34,7 +34,6 @@ def async_get_clientsession(hass, verify_ssl=True): connector=connector, headers={USER_AGENT: SERVER_SOFTWARE} ) - _async_register_clientsession_shutdown(hass, clientsession) hass.data[key] = clientsession return hass.data[key] @@ -111,8 +110,12 @@ def async_cleanup_websession(hass): This method is a coroutine. """ tasks = [] + if DATA_CLIENTSESSION in hass.data: + hass.data[DATA_CLIENTSESSION].detach() if DATA_CONNECTOR in hass.data: tasks.append(hass.data[DATA_CONNECTOR].close()) + if DATA_CLIENTSESSION_NOTVERIFY in hass.data: + hass.data[DATA_CLIENTSESSION_NOTVERIFY].detach() if DATA_CONNECTOR_NOTVERIFY in hass.data: tasks.append(hass.data[DATA_CONNECTOR_NOTVERIFY].close()) diff --git a/tests/components/media_player/test_demo.py b/tests/components/media_player/test_demo.py index a9c75e90d37..d6079ee0351 100644 --- a/tests/components/media_player/test_demo.py +++ b/tests/components/media_player/test_demo.py @@ -284,8 +284,7 @@ class TestMediaPlayerWeb(unittest.TestCase): def get(self, url): return MockResponse() - @asyncio.coroutine - def close(self): + def detach(self): pass self.hass.data[DATA_CLIENTSESSION] = MockWebsession() From 41ef6228be15cdd2639673c7c6573d866a0c6c48 Mon Sep 17 00:00:00 2001 From: Lewis Juggins Date: Sat, 7 Jan 2017 21:09:07 +0000 Subject: [PATCH 111/189] [device_tracker] Use home zone GPS coordinates for router based devices. (#4852) --- .../components/device_tracker/__init__.py | 52 +++++++++++---- tests/components/device_tracker/test_init.py | 64 +++++++++++++++++++ 2 files changed, 105 insertions(+), 11 deletions(-) diff --git a/homeassistant/components/device_tracker/__init__.py b/homeassistant/components/device_tracker/__init__.py index 9b5556d7ace..f08a9badb6f 100644 --- a/homeassistant/components/device_tracker/__init__.py +++ b/homeassistant/components/device_tracker/__init__.py @@ -70,6 +70,10 @@ ATTR_LOCATION_NAME = 'location_name' ATTR_GPS = 'gps' ATTR_BATTERY = 'battery' ATTR_ATTRIBUTES = 'attributes' +ATTR_SOURCE_TYPE = 'source_type' + +SOURCE_TYPE_GPS = 'gps' +SOURCE_TYPE_ROUTER = 'router' PLATFORM_SCHEMA = cv.PLATFORM_SCHEMA.extend({ vol.Optional(CONF_SCAN_INTERVAL): cv.time_period, @@ -234,17 +238,19 @@ class DeviceTracker(object): def see(self, mac: str=None, dev_id: str=None, host_name: str=None, location_name: str=None, gps: GPSType=None, gps_accuracy=None, - battery: str=None, attributes: dict=None): + battery: str=None, attributes: dict=None, + source_type: str=SOURCE_TYPE_GPS): """Notify the device tracker that you see a device.""" self.hass.add_job( self.async_see(mac, dev_id, host_name, location_name, gps, - gps_accuracy, battery, attributes) + gps_accuracy, battery, attributes, source_type) ) @asyncio.coroutine def async_see(self, mac: str=None, dev_id: str=None, host_name: str=None, location_name: str=None, gps: GPSType=None, - gps_accuracy=None, battery: str=None, attributes: dict=None): + gps_accuracy=None, battery: str=None, attributes: dict=None, + source_type: str=SOURCE_TYPE_GPS): """Notify the device tracker that you see a device. This method is a coroutine. @@ -262,7 +268,8 @@ class DeviceTracker(object): if device: yield from device.async_seen(host_name, location_name, gps, - gps_accuracy, battery, attributes) + gps_accuracy, battery, attributes, + source_type) if device.track: yield from device.async_update_ha_state() return @@ -277,7 +284,8 @@ class DeviceTracker(object): self.mac_to_dev[mac] = device yield from device.async_seen(host_name, location_name, gps, - gps_accuracy, battery, attributes) + gps_accuracy, battery, attributes, + source_type) if device.track: yield from device.async_update_ha_state() @@ -381,6 +389,9 @@ class Device(Entity): self.away_hide = hide_if_away self.vendor = vendor + + self.source_type = None + self._attributes = {} @property @@ -401,7 +412,9 @@ class Device(Entity): @property def state_attributes(self): """Return the device state attributes.""" - attr = {} + attr = { + ATTR_SOURCE_TYPE: self.source_type + } if self.gps: attr[ATTR_LATITUDE] = self.gps[0] @@ -426,12 +439,13 @@ class Device(Entity): @asyncio.coroutine def async_seen(self, host_name: str=None, location_name: str=None, gps: GPSType=None, gps_accuracy=0, battery: str=None, - attributes: dict=None): + attributes: dict=None, source_type: str=SOURCE_TYPE_GPS): """Mark the device as seen.""" + self.source_type = source_type self.last_seen = dt_util.utcnow() self.host_name = host_name self.location_name = location_name - self.gps_accuracy = gps_accuracy or 0 + if battery: self.battery = battery if attributes: @@ -442,7 +456,10 @@ class Device(Entity): if gps is not None: try: self.gps = float(gps[0]), float(gps[1]) + self.gps_accuracy = gps_accuracy or 0 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) @@ -467,7 +484,7 @@ class Device(Entity): return elif self.location_name: self._state = self.location_name - elif self.gps is not None: + elif self.gps is not None and self.source_type == SOURCE_TYPE_GPS: zone_state = zone.async_active_zone( self.hass, self.gps[0], self.gps[1], self.gps_accuracy) if zone_state is None: @@ -476,9 +493,9 @@ class Device(Entity): self._state = STATE_HOME else: self._state = zone_state.name - elif self.stale(): self._state = STATE_NOT_HOME + self.gps = None self.last_update_home = False else: self._state = STATE_HOME @@ -637,7 +654,20 @@ def async_setup_scanner_platform(hass: HomeAssistantType, config: ConfigType, else: host_name = yield from scanner.async_get_device_name(mac) seen.add(mac) - hass.async_add_job(async_see_device(mac=mac, host_name=host_name)) + + kwargs = { + 'mac': mac, + 'host_name': host_name, + 'source_type': SOURCE_TYPE_ROUTER + } + + zone_home = hass.states.get(zone.ENTITY_ID_HOME) + if zone_home: + kwargs['gps'] = [zone_home.attributes[ATTR_LATITUDE], + zone_home.attributes[ATTR_LONGITUDE]] + kwargs['gps_accuracy'] = 0 + + hass.async_add_job(async_see_device(**kwargs)) async_track_time_interval(hass, async_device_tracker_scan, interval) hass.async_add_job(async_device_tracker_scan, None) diff --git a/tests/components/device_tracker/test_init.py b/tests/components/device_tracker/test_init.py index ffcb1e8acd6..c083557294b 100644 --- a/tests/components/device_tracker/test_init.py +++ b/tests/components/device_tracker/test_init.py @@ -8,6 +8,7 @@ from unittest.mock import call, patch from datetime import datetime, timedelta import os +from homeassistant.components import zone from homeassistant.core import callback from homeassistant.bootstrap import setup_component from homeassistant.loader import get_component @@ -541,8 +542,71 @@ class TestComponentsDeviceTracker(unittest.TestCase): self.assertEqual(attrs['longitude'], 0.8) self.assertEqual(attrs['test'], 'test') self.assertEqual(attrs['gps_accuracy'], 1) + self.assertEqual(attrs['source_type'], 'gps') self.assertEqual(attrs['number'], 1) + def test_see_passive_zone_state(self): + """Test that the device tracker sets gps for passive trackers.""" + register_time = datetime(2015, 9, 15, 23, tzinfo=dt_util.UTC) + scan_time = datetime(2015, 9, 15, 23, 1, tzinfo=dt_util.UTC) + + with assert_setup_component(1, zone.DOMAIN): + zone_info = { + 'name': 'Home', + 'latitude': 1, + 'longitude': 2, + 'radius': 250, + 'passive': False + } + + setup_component(self.hass, zone.DOMAIN, { + 'zone': zone_info + }) + + scanner = get_component('device_tracker.test').SCANNER + scanner.reset() + scanner.come_home('dev1') + + with patch('homeassistant.components.device_tracker.dt_util.utcnow', + return_value=register_time): + with assert_setup_component(1, device_tracker.DOMAIN): + assert setup_component(self.hass, device_tracker.DOMAIN, { + device_tracker.DOMAIN: { + CONF_PLATFORM: 'test', + device_tracker.CONF_CONSIDER_HOME: 59, + }}) + + state = self.hass.states.get('device_tracker.dev1') + attrs = state.attributes + self.assertEqual(STATE_HOME, state.state) + self.assertEqual(state.object_id, 'dev1') + self.assertEqual(state.name, 'dev1') + self.assertEqual(attrs.get('friendly_name'), 'dev1') + self.assertEqual(attrs.get('latitude'), 1) + self.assertEqual(attrs.get('longitude'), 2) + self.assertEqual(attrs.get('gps_accuracy'), 0) + self.assertEqual(attrs.get('source_type'), + device_tracker.SOURCE_TYPE_ROUTER) + + scanner.leave_home('dev1') + + with patch('homeassistant.components.device_tracker.dt_util.utcnow', + return_value=scan_time): + fire_time_changed(self.hass, scan_time) + self.hass.block_till_done() + + state = self.hass.states.get('device_tracker.dev1') + attrs = state.attributes + self.assertEqual(STATE_NOT_HOME, state.state) + self.assertEqual(state.object_id, 'dev1') + self.assertEqual(state.name, 'dev1') + self.assertEqual(attrs.get('friendly_name'), 'dev1') + self.assertEqual(attrs.get('latitude'), None) + self.assertEqual(attrs.get('longitude'), None) + self.assertEqual(attrs.get('gps_accuracy'), None) + self.assertEqual(attrs.get('source_type'), + device_tracker.SOURCE_TYPE_ROUTER) + @patch('homeassistant.components.device_tracker._LOGGER.warning') def test_see_failures(self, mock_warning): """Test that the device tracker see failures.""" From a65388e778b4110d9d54f418caf9b6580840c85e Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sun, 8 Jan 2017 14:06:15 +0100 Subject: [PATCH 112/189] Bugfix segfault with new helper track_time_interval (#5222) * Bugfix sigfault with new helper track_time_interval * Add none init also to sunrise/sunset for consistance --- homeassistant/helpers/event.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/homeassistant/helpers/event.py b/homeassistant/helpers/event.py index 29d3d131f5c..802a1dc1a7d 100644 --- a/homeassistant/helpers/event.py +++ b/homeassistant/helpers/event.py @@ -135,6 +135,8 @@ track_point_in_utc_time = threaded_listener_factory( def async_track_time_interval(hass, action, interval): """Add a listener that fires repetitively at every timedelta interval.""" + remove = None + def next_interval(): """Return the next interval.""" return dt_util.utcnow() + interval @@ -164,6 +166,7 @@ def async_track_sunrise(hass, action, offset=None): """Add a listener that will fire a specified offset from sunrise daily.""" from homeassistant.components import sun offset = offset or timedelta() + remove = None def next_rise(): """Return the next sunrise.""" @@ -199,6 +202,7 @@ def async_track_sunset(hass, action, offset=None): """Add a listener that will fire a specified offset from sunset daily.""" from homeassistant.components import sun offset = offset or timedelta() + remove = None def next_set(): """Return next sunrise.""" From 469aad5fc8eb8efcb310205843b31f271787fd10 Mon Sep 17 00:00:00 2001 From: Jan Losinski Date: Sun, 8 Jan 2017 14:23:01 +0100 Subject: [PATCH 113/189] Add teardown method to pilight tests (#5195) * Add teardown method to pilight tests This is necessary to stop the HomeAssistant instance that was started in the setUp method. Without this there happen random test failures. This is necessary to stabilize the tests for PR #5045. Signed-off-by: Jan Losinski * Update test_pilight.py --- tests/components/test_pilight.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tests/components/test_pilight.py b/tests/components/test_pilight.py index 0fe68b4fbe5..036beb0c139 100644 --- a/tests/components/test_pilight.py +++ b/tests/components/test_pilight.py @@ -69,6 +69,12 @@ class TestPilight(unittest.TestCase): def setUp(self): # pylint: disable=invalid-name """Setup things to be run when tests are started.""" self.hass = get_test_home_assistant() + self.skip_teardown_stop = False + + def tearDown(self): + """Stop everything that was started.""" + if not self.skip_teardown_stop: + self.hass.stop() @patch('homeassistant.components.pilight._LOGGER.error') def test_connection_failed_error(self, mock_error): @@ -208,6 +214,7 @@ class TestPilight(unittest.TestCase): 'PilightDaemonSim start' in str(error_log_call)) # Test stop + self.skip_teardown_stop = True self.hass.stop() error_log_call = mock_pilight_error.call_args_list[-1] self.assertTrue( @@ -344,6 +351,10 @@ class TestPilightCallrateThrottler(unittest.TestCase): """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_call_rate_delay_throttle_disabled(self): """Test that the limiter is a noop if no delay set.""" runs = [] From fd50201407f32f185bde846966ce9918c7310a17 Mon Sep 17 00:00:00 2001 From: dasos Date: Sun, 8 Jan 2017 13:32:15 +0000 Subject: [PATCH 114/189] Squeezebox JSON-RPC (#5084) * Refactor of Squeezebox connection code * Refactor of Squeezebox connection code * Typos * Make Python 3.4 friendly * Addressing comments * Improving docstring * Using discovered port * Style better * Accept new disco object * Revert "Accept new disco object" * Make it obvious that port isn't discovered yet * Flake8. ;) --- .../components/media_player/squeezebox.py | 270 ++++++++---------- 1 file changed, 120 insertions(+), 150 deletions(-) diff --git a/homeassistant/components/media_player/squeezebox.py b/homeassistant/components/media_player/squeezebox.py index c51834057d2..08d498053ce 100644 --- a/homeassistant/components/media_player/squeezebox.py +++ b/homeassistant/components/media_player/squeezebox.py @@ -5,8 +5,11 @@ For more details about this platform, please refer to the documentation at https://home-assistant.io/components/media_player.squeezebox/ """ import logging -import telnetlib +import asyncio import urllib.parse +import json +import aiohttp +import async_timeout import voluptuous as vol @@ -19,10 +22,12 @@ from homeassistant.const import ( CONF_HOST, CONF_PASSWORD, CONF_USERNAME, STATE_IDLE, STATE_OFF, STATE_PAUSED, STATE_PLAYING, STATE_UNKNOWN, CONF_PORT) import homeassistant.helpers.config_validation as cv +from homeassistant.helpers.aiohttp_client import async_get_clientsession _LOGGER = logging.getLogger(__name__) -DEFAULT_PORT = 9090 +DEFAULT_PORT = 9000 +TIMEOUT = 10 KNOWN_DEVICES = [] @@ -38,7 +43,8 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ }) -def setup_platform(hass, config, add_devices, discovery_info=None): +@asyncio.coroutine +def async_setup_platform(hass, config, async_add_devices, discovery_info=None): """Setup the squeezebox platform.""" import socket @@ -47,11 +53,15 @@ def setup_platform(hass, config, add_devices, discovery_info=None): if discovery_info is not None: host = discovery_info[0] - port = DEFAULT_PORT + port = None # Port is not collected in netdisco 0.8.1 else: host = config.get(CONF_HOST) port = config.get(CONF_PORT) + # In case the port is not discovered + if port is None: + port = DEFAULT_PORT + # Get IP of host, to prevent duplication of same host (different DNS names) try: ipaddr = socket.gethostbyname(host) @@ -68,13 +78,13 @@ def setup_platform(hass, config, add_devices, discovery_info=None): return False KNOWN_DEVICES.append(key) - _LOGGER.debug("Creating LMS object for %s", key) - lms = LogitechMediaServer(host, port, username, password) - - if not lms.init_success: + _LOGGER.debug("Creating LMS object for %s", ipaddr) + lms = LogitechMediaServer(hass, host, port, username, password) + if lms is False: return False - add_devices(lms.create_players()) + players = yield from lms.create_players() + yield from async_add_devices(players) return True @@ -82,107 +92,86 @@ def setup_platform(hass, config, add_devices, discovery_info=None): class LogitechMediaServer(object): """Representation of a Logitech media server.""" - def __init__(self, host, port, username, password): + def __init__(self, hass, host, port, username, password): """Initialize the Logitech device.""" + self.hass = hass self.host = host self.port = port self._username = username self._password = password - self.http_port = self._get_http_port() - self.init_success = True if self.http_port else False - - def _get_http_port(self): - """Get http port from media server, it is used to get cover art.""" - http_port = self.query('pref', 'httpport', '?') - if not http_port: - _LOGGER.error("Failed to connect to server %s:%s", - self.host, self.port) - return http_port + @asyncio.coroutine def create_players(self): - """Create a list of SqueezeBoxDevices connected to the LMS.""" - players = [] - count = self.query('player', 'count', '?') - for index in range(0, int(count)): - player_id = self.query('player', 'id', str(index), '?') - player = SqueezeBoxDevice(self, player_id) - players.append(player) - return players + """Create a list of devices connected to LMS.""" + result = [] + data = yield from self.async_query('players', 'status') - def query(self, *parameters): - """Send request and await response from server.""" - response = self.get(' '.join(parameters)) - response = response.split(' ')[-1].strip() - response = urllib.parse.unquote(response) + for players in data['players_loop']: + player = SqueezeBoxDevice( + self, players['playerid'], players['name']) + yield from player.async_update() + result.append(player) + return result - return response + @asyncio.coroutine + def async_query(self, *command, player=""): + """Abstract out the JSON-RPC connection.""" + response = None + auth = None if self._username is None else aiohttp.BasicAuth( + self._username, self._password) + url = "http://{}:{}/jsonrpc.js".format( + self.host, self.port) + data = json.dumps({ + "id": "1", + "method": "slim.request", + "params": [player, command] + }) - def get_player_status(self, player): - """Get the status of a player.""" - # (title) : Song title - # Requested Information - # a (artist): Artist name 'artist' - # d (duration): Song duration in seconds 'duration' - # K (artwork_url): URL to remote artwork - # l (album): Album, including the server's "(N of M)" - tags = 'adKl' - new_status = {} - response = self.get('{player} status - 1 tags:{tags}\n' - .format(player=player, tags=tags)) + _LOGGER.debug("URL: %s Data: %s", url, data) - if not response: - return {} - - response = response.split(' ') - - for item in response: - parts = urllib.parse.unquote(item).partition(':') - new_status[parts[0]] = parts[2] - return new_status - - def get(self, command): - """Abstract out the telnet connection.""" try: - telnet = telnetlib.Telnet(self.host, self.port) + websession = async_get_clientsession(self.hass) + with async_timeout.timeout(TIMEOUT, loop=self.hass.loop): + response = yield from websession.post( + url, + data=data, + auth=auth) - if self._username and self._password: - _LOGGER.debug("Logging in") + if response.status == 200: + data = yield from response.json() + else: + _LOGGER.error( + "Query failed, response code: %s Full message: %s", + response.status, response) + return False - telnet.write('login {username} {password}\n'.format( - username=self._username, - password=self._password).encode('UTF-8')) - telnet.read_until(b'\n', timeout=3) + except (asyncio.TimeoutError, + aiohttp.errors.ClientError, + aiohttp.errors.ClientDisconnectedError) as error: + _LOGGER.error("Failed communicating with LMS: %s", type(error)) + return False + finally: + if response is not None: + yield from response.release() - _LOGGER.debug("About to send message: %s", command) - message = '{}\n'.format(command) - telnet.write(message.encode('UTF-8')) - - response = telnet.read_until(b'\n', timeout=3)\ - .decode('UTF-8')\ - - telnet.write(b'exit\n') - _LOGGER.debug("Response: %s", response) - - return response - - except (OSError, EOFError) as error: - _LOGGER.error("Could not communicate with %s:%d: %s", - self.host, - self.port, - error) - return None + try: + return data['result'] + except AttributeError: + _LOGGER.error("Received invalid response: %s", data) + return False class SqueezeBoxDevice(MediaPlayerDevice): """Representation of a SqueezeBox device.""" - def __init__(self, lms, player_id): + def __init__(self, lms, player_id, name): """Initialize the SqueezeBox device.""" super(SqueezeBoxDevice, self).__init__() self._lms = lms self._id = player_id - self._name = self._lms.query(self._id, 'name', '?') - self._status = self._lms.get_player_status(self._id) + self._status = {} + self._name = name + _LOGGER.debug("Creating SqueezeBox object: %s, %s", name, player_id) @property def name(self): @@ -203,9 +192,31 @@ class SqueezeBoxDevice(MediaPlayerDevice): return STATE_IDLE return STATE_UNKNOWN - def update(self): - """Retrieve latest state.""" - self._status = self._lms.get_player_status(self._id) + def async_query(self, *parameters): + """Send a command to the LMS. + + This method must be run in the event loop and returns a coroutine. + """ + return self._lms.async_query( + *parameters, player=self._id) + + def query(self, *parameters): + """Queue up a command to send the LMS.""" + self.hass.loop.create_task(self.async_query(*parameters)) + + @asyncio.coroutine + def async_update(self): + """Retrieve the current state of the player.""" + tags = 'adKl' + response = yield from self.async_query( + "status", "-", "1", "tags:{tags}" + .format(tags=tags)) + + try: + self._status = response.copy() + self._status.update(response["remoteMeta"]) + except KeyError: + pass @property def volume_level(self): @@ -217,7 +228,7 @@ class SqueezeBoxDevice(MediaPlayerDevice): def is_volume_muted(self): """Return true if volume is muted.""" if 'mixer volume' in self._status: - return self._status['mixer volume'].startswith('-') + return str(self._status['mixer volume']).startswith('-') @property def media_content_id(self): @@ -254,15 +265,14 @@ class SqueezeBoxDevice(MediaPlayerDevice): username=self._lms._username, password=self._lms._password, server=self._lms.host, - port=self._lms.http_port) + port=self._lms.port) else: base_url = 'http://{server}:{port}/'.format( server=self._lms.host, - port=self._lms.http_port) + port=self._lms.port) url = urllib.parse.urljoin(base_url, media_url) - _LOGGER.debug("Media image url: %s", url) return url @property @@ -284,7 +294,7 @@ class SqueezeBoxDevice(MediaPlayerDevice): def media_album_name(self): """Album of current playing media.""" if 'album' in self._status: - return self._status['album'].rstrip() + return self._status['album'] @property def supported_media_commands(self): @@ -293,64 +303,64 @@ class SqueezeBoxDevice(MediaPlayerDevice): def turn_off(self): """Turn off media player.""" - self._lms.query(self._id, 'power', '0') + self.query('power', '0') self.update_ha_state() def volume_up(self): """Volume up media player.""" - self._lms.query(self._id, 'mixer', 'volume', '+5') + self.query('mixer', 'volume', '+5') self.update_ha_state() def volume_down(self): """Volume down media player.""" - self._lms.query(self._id, 'mixer', 'volume', '-5') + self.query('mixer', 'volume', '-5') self.update_ha_state() def set_volume_level(self, volume): """Set volume level, range 0..1.""" volume_percent = str(int(volume*100)) - self._lms.query(self._id, 'mixer', 'volume', volume_percent) + self.query('mixer', 'volume', volume_percent) self.update_ha_state() def mute_volume(self, mute): """Mute (true) or unmute (false) media player.""" mute_numeric = '1' if mute else '0' - self._lms.query(self._id, 'mixer', 'muting', mute_numeric) + self.query('mixer', 'muting', mute_numeric) self.update_ha_state() def media_play_pause(self): """Send pause command to media player.""" - self._lms.query(self._id, 'pause') + self.query('pause') self.update_ha_state() def media_play(self): """Send play command to media player.""" - self._lms.query(self._id, 'play') + self.query('play') self.update_ha_state() def media_pause(self): """Send pause command to media player.""" - self._lms.query(self._id, 'pause', '1') + self.query('pause', '1') self.update_ha_state() def media_next_track(self): """Send next track command.""" - self._lms.query(self._id, 'playlist', 'index', '+1') + self.query('playlist', 'index', '+1') self.update_ha_state() def media_previous_track(self): """Send next track command.""" - self._lms.query(self._id, 'playlist', 'index', '-1') + self.query('playlist', 'index', '-1') self.update_ha_state() def media_seek(self, position): """Send seek command.""" - self._lms.query(self._id, 'time', position) + self.query('time', position) self.update_ha_state() def turn_on(self): """Turn the media player on.""" - self._lms.query(self._id, 'power', '1') + self.query('power', '1') self.update_ha_state() def play_media(self, media_type, media_id, **kwargs): @@ -365,51 +375,11 @@ class SqueezeBoxDevice(MediaPlayerDevice): self._play_uri(media_id) def _play_uri(self, media_id): - """ - Replace the current play list with the uri. - - Telnet Command Structure: - playlist play <fadeInSecs> - - The "playlist play" command puts the specified song URL, - playlist or directory contents into the current playlist - and plays starting at the first item. Any songs previously - in the playlist are discarded. An optional title value may be - passed to set a title. This can be useful for remote URLs. - The "fadeInSecs" parameter may be passed to specify fade-in period. - - Examples: - Request: "04:20:00:12:23:45 playlist play - /music/abba/01_Voulez_Vous.mp3<LF>" - Response: "04:20:00:12:23:45 playlist play - /music/abba/01_Voulez_Vous.mp3<LF>" - - """ - self._lms.query(self._id, 'playlist', 'play', media_id) + """Replace the current play list with the uri.""" + self.query('playlist', 'play', media_id) self.update_ha_state() def _add_uri_to_playlist(self, media_id): - """ - Add a items to the existing playlist. - - Telnet Command Structure: - <playerid> playlist add <item> - - The "playlist add" command adds the specified song URL, playlist or - directory contents to the end of the current playlist. Songs - currently playing or already on the playlist are not affected. - - Examples: - Request: "04:20:00:12:23:45 playlist add - /music/abba/01_Voulez_Vous.mp3<LF>" - Response: "04:20:00:12:23:45 playlist add - /music/abba/01_Voulez_Vous.mp3<LF>" - - Request: "04:20:00:12:23:45 playlist add - /playlists/abba.m3u<LF>" - Response: "04:20:00:12:23:45 playlist add - /playlists/abba.m3u<LF>" - - """ - self._lms.query(self._id, 'playlist', 'add', media_id) + """Add a items to the existing playlist.""" + self.query('playlist', 'add', media_id) self.update_ha_state() From f643149d2464454952275ae034537f86337c2cf5 Mon Sep 17 00:00:00 2001 From: happyleavesaoc <happyleaves.tfr@gmail.com> Date: Sun, 8 Jan 2017 08:35:14 -0500 Subject: [PATCH 115/189] usps sensor: better delivery handling (#5202) * better delivery handling * bump dep version --- homeassistant/components/sensor/usps.py | 32 +++++++++++++++---------- requirements_all.txt | 2 +- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/homeassistant/components/sensor/usps.py b/homeassistant/components/sensor/usps.py index 2290749a717..e9562667f6d 100644 --- a/homeassistant/components/sensor/usps.py +++ b/homeassistant/components/sensor/usps.py @@ -15,14 +15,16 @@ from homeassistant.const import CONF_USERNAME, CONF_PASSWORD, ATTR_ATTRIBUTION from homeassistant.helpers.entity import Entity from homeassistant.util import slugify from homeassistant.util import Throttle +from homeassistant.util.dt import now, parse_datetime import homeassistant.helpers.config_validation as cv -REQUIREMENTS = ['myusps==1.0.0'] +REQUIREMENTS = ['myusps==1.0.1'] _LOGGER = logging.getLogger(__name__) CONF_UPDATE_INTERVAL = 'update_interval' ICON = 'mdi:package-variant-closed' +STATUS_DELIVERED = 'delivered' PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_USERNAME): cv.string, @@ -54,7 +56,8 @@ class USPSSensor(Entity): import myusps self._session = session self._profile = myusps.get_profile(session) - self._packages = None + self._attributes = None + self._state = None self.update = Throttle(interval)(self._update) self.update() @@ -66,25 +69,28 @@ class USPSSensor(Entity): @property def state(self): """Return the state of the sensor.""" - return len(self._packages) + return self._state def _update(self): """Update device state.""" import myusps - self._packages = myusps.get_packages(self._session) + status_counts = defaultdict(int) + for package in myusps.get_packages(self._session): + status = slugify(package['primary_status']) + if status == STATUS_DELIVERED and \ + parse_datetime(package['date']).date() < now().date(): + continue + status_counts[status] += 1 + self._attributes = { + ATTR_ATTRIBUTION: myusps.ATTRIBUTION + } + self._attributes.update(status_counts) + self._state = sum(status_counts.values()) @property def device_state_attributes(self): """Return the state attributes.""" - import myusps - status_counts = defaultdict(int) - for package in self._packages: - status_counts[slugify(package['status'])] += 1 - attributes = { - ATTR_ATTRIBUTION: myusps.ATTRIBUTION - } - attributes.update(status_counts) - return attributes + return self._attributes @property def icon(self): diff --git a/requirements_all.txt b/requirements_all.txt index 9892551f9f8..e17c6b2c8a8 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -309,7 +309,7 @@ mficlient==0.3.0 miflora==0.1.14 # homeassistant.components.sensor.usps -myusps==1.0.0 +myusps==1.0.1 # homeassistant.components.discovery netdisco==0.8.1 From 81f988cf9ece775a1bf2b594063ec8378ca54712 Mon Sep 17 00:00:00 2001 From: happyleavesaoc <happyleaves.tfr@gmail.com> Date: Sun, 8 Jan 2017 17:50:42 -0500 Subject: [PATCH 116/189] date fix (#5227) --- homeassistant/components/calendar/__init__.py | 6 +++--- homeassistant/components/calendar/google.py | 2 +- tests/components/calendar/test_google.py | 8 ++++---- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/homeassistant/components/calendar/__init__.py b/homeassistant/components/calendar/__init__.py index 63083f46bba..e4de69c3ce8 100644 --- a/homeassistant/components/calendar/__init__.py +++ b/homeassistant/components/calendar/__init__.py @@ -147,10 +147,10 @@ class CalendarEventDevice(Entity): def _get_date(date): """Get the dateTime from date or dateTime as a local.""" if 'date' in date: - return dt.as_utc(dt.dt.datetime.combine( - dt.parse_date(date['date']), dt.dt.time())) + return dt.start_of_local_day(dt.dt.datetime.combine( + dt.parse_date(date['date']), dt.dt.time.min)) else: - return dt.parse_datetime(date['dateTime']) + return dt.as_local(dt.parse_datetime(date['dateTime'])) start = _get_date(self.data.event['start']) end = _get_date(self.data.event['end']) diff --git a/homeassistant/components/calendar/google.py b/homeassistant/components/calendar/google.py index 741b3238b49..022d39b602b 100644 --- a/homeassistant/components/calendar/google.py +++ b/homeassistant/components/calendar/google.py @@ -66,7 +66,7 @@ class GoogleCalendarData(object): """Get the latest data.""" service = self.calendar_service.get() params = dict(DEFAULT_GOOGLE_SEARCH_PARAMS) - params['timeMin'] = dt.utcnow().isoformat('T') + params['timeMin'] = dt.start_of_local_day().isoformat('T') params['calendarId'] = self.calendar_id if self.search: params['q'] = self.search diff --git a/tests/components/calendar/test_google.py b/tests/components/calendar/test_google.py index 014e52304c1..7496b4519ab 100755 --- a/tests/components/calendar/test_google.py +++ b/tests/components/calendar/test_google.py @@ -96,8 +96,8 @@ class TestComponentsGoogleCalendar(unittest.TestCase): 'message': event['summary'], 'all_day': True, 'offset_reached': False, - 'start_time': '{} 06:00:00'.format(event['start']['date']), - 'end_time': '{} 06:00:00'.format(event['end']['date']), + 'start_time': '{} 00:00:00'.format(event['start']['date']), + 'end_time': '{} 00:00:00'.format(event['end']['date']), 'location': event['location'], 'description': event['description'] }) @@ -416,8 +416,8 @@ class TestComponentsGoogleCalendar(unittest.TestCase): 'message': event_summary, 'all_day': True, 'offset_reached': False, - 'start_time': '{} 06:00:00'.format(event['start']['date']), - 'end_time': '{} 06:00:00'.format(event['end']['date']), + 'start_time': '{} 00:00:00'.format(event['start']['date']), + 'end_time': '{} 00:00:00'.format(event['end']['date']), 'location': event['location'], 'description': event['description'] }) From 2b14d407c09ee31727d699f1063d37d256bd3ade Mon Sep 17 00:00:00 2001 From: markferry <mark@markferry.net> Date: Sun, 8 Jan 2017 22:59:26 +0000 Subject: [PATCH 117/189] onkyo: fix selecting sources with only one name (#5221) --- homeassistant/components/media_player/onkyo.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/media_player/onkyo.py b/homeassistant/components/media_player/onkyo.py index 28f8dd1bf6b..fa06f938b58 100644 --- a/homeassistant/components/media_player/onkyo.py +++ b/homeassistant/components/media_player/onkyo.py @@ -111,13 +111,21 @@ class OnkyoDevice(MediaPlayerDevice): current_source_raw = self.command('input-selector query') if not (volume_raw and mute_raw and current_source_raw): return - for source in current_source_raw[1]: + + # eiscp can return string or tuple. Make everything tuples. + if isinstance(current_source_raw[1], str): + current_source_tuples = \ + (current_source_raw[0], (current_source_raw[1],)) + else: + current_source_tuples = current_source_raw + + for source in current_source_tuples[1]: if source in self._source_mapping: self._current_source = self._source_mapping[source] break else: self._current_source = '_'.join( - [i for i in current_source_raw[1]]) + [i for i in current_source_tuples[1]]) self._muted = bool(mute_raw[1] == 'on') self._volume = int(volume_raw[1], 16) / 80.0 From a3971d7ad163f20e087b5e50cf6e210840b1e6cf Mon Sep 17 00:00:00 2001 From: "Craig J. Ward" <ward.craig.j@gmail.com> Date: Sun, 8 Jan 2017 17:33:35 -0600 Subject: [PATCH 118/189] Insteon local (#5088) * platform set-up begin components * lights seem to be getting set up properly, not sure why they aren't being added... * typo * Dependencies line * toggle working * toggle working * added the switch to insteon_local First commit hope to test tonight or in the morning * Update insteon_local.py * Update insteon_local.py * Update insteon_local.py * Update insteon_local.py * Update insteon_local.py * Update insteon_local.py * Update insteon_local.py * Update insteon_local.py * Update insteon_local.py * Update insteon_local.py * Update insteon_local.py * move dependency declaration before import? * Move dependencies in Switch * Update insteon_local.py * wait for response * switched the while to an if switched the while 'cmd2' not in resp: to an if 'cmd2' not in resp: this seems to have the updater working * Switched the while sleep loop to an if switched the wile cmd2 not ins resp to be if cmd2 not in resp seems to be working. * Update insteon_local.py * import statement Updated the import statement to import the instance of the insteon_local component not the hub Instance. * updated import and the device assignment update the import to import the instance of the insteon_local component not the hub. * more changes to support the import change * more changes to support the import change * change to hass.data and add loop logic * && * Update insteon_local.py * Update insteon_local.py * logic fixes and throttle * reduce polling time * brightness support * import util * hound fixes * requirements file * more hound fixes * newline * newline weirdness * lint fixes * more lint fixes * switch state * Update insteon_local.py * log cmd2 for debugging * assume success * remove check for none * fix comments * fix comments again * fix comments, add fixed version of lib, add support for timeout, add support for port, handle invalid login and connection problems * fix logging exception * fix hounceci-bot errors * fix hounceci-bot errors * requirements fix * unique-id changes * make dimmer off use saved ramp rate * configurator working for lights * configurator working for switches? * configurator working for switches? * include model names and fix lint errors * lint fix * fix exception order * lint fixes * fix lint errors * update to use insteon local 0.38 * fix device id * move status check to library * move status check to library * add SKU to setup * lint fixes * requirements * linting --- .coveragerc | 3 + .../www_static/images/config_insteon.png | Bin 0 -> 30851 bytes homeassistant/components/insteon_local.py | 74 +++++++ .../components/light/insteon_local.py | 191 ++++++++++++++++++ .../components/switch/insteon_local.py | 176 ++++++++++++++++ requirements_all.txt | 3 + 6 files changed, 447 insertions(+) create mode 100644 homeassistant/components/frontend/www_static/images/config_insteon.png create mode 100644 homeassistant/components/insteon_local.py create mode 100644 homeassistant/components/light/insteon_local.py create mode 100644 homeassistant/components/switch/insteon_local.py diff --git a/.coveragerc b/.coveragerc index 4957221dd94..f3c7d950965 100644 --- a/.coveragerc +++ b/.coveragerc @@ -37,6 +37,9 @@ omit = homeassistant/components/insteon_hub.py homeassistant/components/*/insteon_hub.py + homeassistant/components/insteon_local.py + homeassistant/components/*/insteon_local.py + homeassistant/components/ios.py homeassistant/components/*/ios.py diff --git a/homeassistant/components/frontend/www_static/images/config_insteon.png b/homeassistant/components/frontend/www_static/images/config_insteon.png new file mode 100644 index 0000000000000000000000000000000000000000..0039cf3d160f844e2ba2d5e2230d35997574cf3f GIT binary patch literal 30851 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 literal 0 HcmV?d00001 diff --git a/homeassistant/components/insteon_local.py b/homeassistant/components/insteon_local.py new file mode 100644 index 00000000000..7b35b45293c --- /dev/null +++ b/homeassistant/components/insteon_local.py @@ -0,0 +1,74 @@ +""" +Local Support for Insteon. + +Based on the insteonlocal library +https://github.com/phareous/insteonlocal + +For more details about this component, please refer to the documentation at +https://home-assistant.io/components/insteon_local/ +""" +import logging +import voluptuous as vol +import requests +from homeassistant.const import (CONF_PASSWORD, CONF_USERNAME, CONF_HOST, + CONF_PORT, CONF_TIMEOUT) +import homeassistant.helpers.config_validation as cv + +REQUIREMENTS = ['insteonlocal==0.39'] + +_LOGGER = logging.getLogger(__name__) + +DOMAIN = 'insteon_local' + +DEFAULT_PORT = 25105 + +DEFAULT_TIMEOUT = 10 + +CONFIG_SCHEMA = vol.Schema({ + DOMAIN: vol.Schema({ + vol.Required(CONF_HOST): cv.string, + vol.Required(CONF_PASSWORD): cv.string, + vol.Required(CONF_USERNAME): cv.string, + vol.Optional(CONF_PORT, default=DEFAULT_PORT): cv.port, + vol.Optional(CONF_TIMEOUT, default=DEFAULT_TIMEOUT): cv.positive_int + }) +}, extra=vol.ALLOW_EXTRA) + + +def setup(hass, config): + """Setup Insteon Hub component. + + This will automatically import associated lights. + """ + from insteonlocal.Hub import Hub + + conf = config[DOMAIN] + username = conf.get(CONF_USERNAME) + password = conf.get(CONF_PASSWORD) + host = conf.get(CONF_HOST) + port = conf.get(CONF_PORT) + timeout = conf.get(CONF_TIMEOUT) + + try: + insteonhub = Hub(host, username, password, port, timeout, _LOGGER) + # check for successful connection + insteonhub.get_buffer_status() + except requests.exceptions.ConnectTimeout: + _LOGGER.error("Error on insteon_local." + "Could not connect. Check config", exc_info=True) + return False + except requests.exceptions.ConnectionError: + _LOGGER.error("Error on insteon_local. Could not connect." + "Check config", exc_info=True) + return False + except requests.exceptions.RequestException: + if insteonhub.http_code == 401: + _LOGGER.error("Bad user/pass for insteon_local hub") + return False + else: + _LOGGER.error("Error on insteon_local hub check", exc_info=True) + return False + + hass.data['insteon_local'] = insteonhub + + return True diff --git a/homeassistant/components/light/insteon_local.py b/homeassistant/components/light/insteon_local.py new file mode 100644 index 00000000000..9c40ec9c4f7 --- /dev/null +++ b/homeassistant/components/light/insteon_local.py @@ -0,0 +1,191 @@ +""" +Support for Insteon dimmers via local hub control. + +Based on the insteonlocal library +https://github.com/phareous/insteonlocal + +For more details about this component, please refer to the documentation at +https://home-assistant.io/components/light.insteon_local/ + +-- +Example platform config +-- + +insteon_local: + host: YOUR HUB IP + username: YOUR HUB USERNAME + password: YOUR HUB PASSWORD + timeout: 10 + port: 25105 + +""" +import json +import logging +import os +from datetime import timedelta +from homeassistant.components.light import (ATTR_BRIGHTNESS, + SUPPORT_BRIGHTNESS, Light) +from homeassistant.loader import get_component +import homeassistant.util as util + +INSTEON_LOCAL_LIGHTS_CONF = 'insteon_local_lights.conf' + +DEPENDENCIES = ['insteon_local'] + +SUPPORT_INSTEON_LOCAL = SUPPORT_BRIGHTNESS + +MIN_TIME_BETWEEN_SCANS = timedelta(seconds=5) +MIN_TIME_BETWEEN_FORCED_SCANS = timedelta(milliseconds=100) + +DOMAIN = "light" + +_LOGGER = logging.getLogger(__name__) +_CONFIGURING = {} + + +def setup_platform(hass, config, add_devices, discovery_info=None): + """Setup the Insteon local light platform.""" + insteonhub = hass.data['insteon_local'] + + conf_lights = config_from_file(hass.config.path(INSTEON_LOCAL_LIGHTS_CONF)) + if len(conf_lights): + for device_id in conf_lights: + setup_light(device_id, conf_lights[device_id], insteonhub, hass, + add_devices) + + linked = insteonhub.get_linked() + + for device_id in linked: + if (linked[device_id]['cat_type'] == 'dimmer' and + device_id not in conf_lights): + request_configuration(device_id, + insteonhub, + linked[device_id]['model_name'] + ' ' + + linked[device_id]['sku'], hass, add_devices) + + +def request_configuration(device_id, insteonhub, model, hass, + add_devices_callback): + """Request configuration steps from the user.""" + configurator = get_component('configurator') + + # We got an error if this method is called while we are configuring + if device_id in _CONFIGURING: + configurator.notify_errors( + _CONFIGURING[device_id], 'Failed to register, please try again.') + + return + + def insteon_light_config_callback(data): + """The actions to do when our configuration callback is called.""" + setup_light(device_id, data.get('name'), insteonhub, hass, + add_devices_callback) + + _CONFIGURING[device_id] = configurator.request_config( + hass, 'Insteon ' + model + ' addr: ' + device_id, + insteon_light_config_callback, + description=('Enter a name for ' + model + ' addr: ' + device_id), + entity_picture='/static/images/config_insteon.png', + submit_caption='Confirm', + fields=[{'id': 'name', 'name': 'Name', 'type': ''}] + ) + + +def setup_light(device_id, name, insteonhub, hass, add_devices_callback): + """Setup light.""" + if device_id in _CONFIGURING: + request_id = _CONFIGURING.pop(device_id) + configurator = get_component('configurator') + configurator.request_done(request_id) + _LOGGER.info('Device configuration done!') + + conf_lights = config_from_file(hass.config.path(INSTEON_LOCAL_LIGHTS_CONF)) + if device_id not in conf_lights: + conf_lights[device_id] = name + + if not config_from_file( + hass.config.path(INSTEON_LOCAL_LIGHTS_CONF), + conf_lights): + _LOGGER.error('failed to save config file') + + device = insteonhub.dimmer(device_id) + add_devices_callback([InsteonLocalDimmerDevice(device, name)]) + + +def config_from_file(filename, config=None): + """Small configuration file management function.""" + if config: + # We're writing configuration + try: + with open(filename, 'w') as fdesc: + fdesc.write(json.dumps(config)) + except IOError as error: + _LOGGER.error('Saving config file failed: %s', error) + return False + return True + else: + # We're reading config + if os.path.isfile(filename): + try: + with open(filename, 'r') as fdesc: + return json.loads(fdesc.read()) + except IOError as error: + _LOGGER.error('Reading config file failed: %s', error) + # This won't work yet + return False + else: + return {} + + +class InsteonLocalDimmerDevice(Light): + """An abstract Class for an Insteon node.""" + + def __init__(self, node, name): + """Initialize the device.""" + self.node = node + self.node.deviceName = name + self._value = 0 + + @property + def name(self): + """Return the the name of the node.""" + return self.node.deviceName + + @property + def unique_id(self): + """Return the ID of this insteon node.""" + return 'insteon_local_' + self.node.device_id + + @property + def brightness(self): + """Return the brightness of this light between 0..255.""" + return self._value + + @util.Throttle(MIN_TIME_BETWEEN_SCANS, MIN_TIME_BETWEEN_FORCED_SCANS) + def update(self): + """Update state of the light.""" + resp = self.node.status(0) + if 'cmd2' in resp: + self._value = int(resp['cmd2'], 16) + + @property + def is_on(self): + """Return the boolean response if the node is on.""" + return self._value != 0 + + @property + def supported_features(self): + """Flag supported features.""" + return SUPPORT_INSTEON_LOCAL + + def turn_on(self, **kwargs): + """Turn device on.""" + brightness = 100 + if ATTR_BRIGHTNESS in kwargs: + brightness = int(kwargs[ATTR_BRIGHTNESS]) / 255 * 100 + + self.node.on(brightness) + + def turn_off(self, **kwargs): + """Turn device off.""" + self.node.off() diff --git a/homeassistant/components/switch/insteon_local.py b/homeassistant/components/switch/insteon_local.py new file mode 100644 index 00000000000..cc6a732bb7f --- /dev/null +++ b/homeassistant/components/switch/insteon_local.py @@ -0,0 +1,176 @@ +""" +Support for Insteon switch devices via local hub support. + +Based on the insteonlocal library +https://github.com/phareous/insteonlocal + +For more details about this component, please refer to the documentation at +https://home-assistant.io/components/switch.insteon_local/ + +-- +Example platform config +-- + +insteon_local: + host: YOUR HUB IP + username: YOUR HUB USERNAME + password: YOUR HUB PASSWORD + timeout: 10 + port: 25105 +""" +import json +import logging +import os +from datetime import timedelta +from homeassistant.components.switch import SwitchDevice +from homeassistant.loader import get_component +import homeassistant.util as util + +INSTEON_LOCAL_SWITCH_CONF = 'insteon_local_switch.conf' + +DEPENDENCIES = ['insteon_local'] + +_LOGGER = logging.getLogger(__name__) + +MIN_TIME_BETWEEN_SCANS = timedelta(seconds=5) +MIN_TIME_BETWEEN_FORCED_SCANS = timedelta(milliseconds=100) + +DOMAIN = "switch" + +_LOGGER = logging.getLogger(__name__) +_CONFIGURING = {} + + +def setup_platform(hass, config, add_devices, discovery_info=None): + """Setup the Insteon local switch platform.""" + insteonhub = hass.data['insteon_local'] + + conf_switches = config_from_file(hass.config.path( + INSTEON_LOCAL_SWITCH_CONF)) + if len(conf_switches): + for device_id in conf_switches: + setup_switch(device_id, conf_switches[device_id], insteonhub, + hass, add_devices) + + linked = insteonhub.get_inked() + + for device_id in linked: + if linked[device_id]['cat_type'] == 'switch'\ + and device_id not in conf_switches: + request_configuration(device_id, insteonhub, + linked[device_id]['model_name'] + ' ' + + linked[device_id]['sku'], hass, add_devices) + + +def request_configuration(device_id, insteonhub, model, hass, + add_devices_callback): + """Request configuration steps from the user.""" + configurator = get_component('configurator') + + # We got an error if this method is called while we are configuring + if device_id in _CONFIGURING: + configurator.notify_errors( + _CONFIGURING[device_id], 'Failed to register, please try again.') + + return + + def insteon_switch_config_callback(data): + """The actions to do when our configuration callback is called.""" + setup_switch(device_id, data.get('name'), insteonhub, hass, + add_devices_callback) + + _CONFIGURING[device_id] = configurator.request_config( + hass, 'Insteon Switch ' + model + ' addr: ' + device_id, + insteon_switch_config_callback, + description=('Enter a name for ' + model + ' addr: ' + device_id), + entity_picture='/static/images/config_insteon.png', + submit_caption='Confirm', + fields=[{'id': 'name', 'name': 'Name', 'type': ''}] + ) + + +def setup_switch(device_id, name, insteonhub, hass, add_devices_callback): + """Setup switch.""" + if device_id in _CONFIGURING: + request_id = _CONFIGURING.pop(device_id) + configurator = get_component('configurator') + configurator.request_done(request_id) + _LOGGER.info('Device configuration done!') + + conf_switch = config_from_file(hass.config.path(INSTEON_LOCAL_SWITCH_CONF)) + if device_id not in conf_switch: + conf_switch[device_id] = name + + if not config_from_file( + hass.config.path(INSTEON_LOCAL_SWITCH_CONF), conf_switch): + _LOGGER.error('failed to save config file') + + device = insteonhub.switch(device_id) + add_devices_callback([InsteonLocalSwitchDevice(device, name)]) + + +def config_from_file(filename, config=None): + """Small configuration file management function.""" + if config: + # We're writing configuration + try: + with open(filename, 'w') as fdesc: + fdesc.write(json.dumps(config)) + except IOError as error: + _LOGGER.error('Saving config file failed: %s', error) + return False + return True + else: + # We're reading config + if os.path.isfile(filename): + try: + with open(filename, 'r') as fdesc: + return json.loads(fdesc.read()) + except IOError as error: + _LOGGER.error('Reading config file failed: %s', error) + # This won't work yet + return False + else: + return {} + + +class InsteonLocalSwitchDevice(SwitchDevice): + """An abstract Class for an Insteon node.""" + + def __init__(self, node, name): + """Initialize the device.""" + self.node = node + self.node.deviceName = name + self._state = False + + @property + def name(self): + """Return the the name of the node.""" + return self.node.deviceName + + @property + def unique_id(self): + """Return the ID of this insteon node.""" + return 'insteon_local_' + self.node.device_id + + @util.Throttle(MIN_TIME_BETWEEN_SCANS, MIN_TIME_BETWEEN_FORCED_SCANS) + def update(self): + """Get the updated status of the switch.""" + resp = self.node.status(0) + if 'cmd2' in resp: + self._state = int(resp['cmd2'], 16) > 0 + + @property + def is_on(self): + """Return the boolean response if the node is on.""" + return self._state + + def turn_on(self, **kwargs): + """Turn device on.""" + self.node.on() + self._state = True + + def turn_off(self, **kwargs): + """Turn device off.""" + self.node.off() + self._state = False diff --git a/requirements_all.txt b/requirements_all.txt index e17c6b2c8a8..a2412504bdb 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -271,6 +271,9 @@ influxdb==3.0.0 # homeassistant.components.insteon_hub insteon_hub==0.4.5 +# homeassistant.components.insteon_local +insteonlocal==0.39 + # homeassistant.components.media_player.kodi jsonrpc-async==0.1 From 469472914b029b3392fc22cf3e8edebe42d6342a Mon Sep 17 00:00:00 2001 From: Adam Mills <adam@armills.info> Date: Sun, 8 Jan 2017 19:09:30 -0500 Subject: [PATCH 119/189] Add SUPPORT_PLAY flag (#5181) * Add SUPPORT_PLAY flag * Add SUPPPORT_PLAY to existing media players * Leave usage of new flag to device devs --- homeassistant/components/media_player/__init__.py | 6 ++++++ homeassistant/components/media_player/aquostv.py | 4 ++-- homeassistant/components/media_player/braviatv.py | 4 ++-- homeassistant/components/media_player/cast.py | 4 ++-- homeassistant/components/media_player/cmus.py | 4 ++-- homeassistant/components/media_player/demo.py | 10 ++++++---- homeassistant/components/media_player/denon.py | 4 ++-- homeassistant/components/media_player/denonavr.py | 4 ++-- homeassistant/components/media_player/directv.py | 5 +++-- homeassistant/components/media_player/dunehd.py | 5 +++-- homeassistant/components/media_player/emby.py | 4 ++-- homeassistant/components/media_player/firetv.py | 5 +++-- homeassistant/components/media_player/gpmdp.py | 6 +++--- homeassistant/components/media_player/itunes.py | 4 ++-- homeassistant/components/media_player/kodi.py | 4 ++-- homeassistant/components/media_player/lg_netcast.py | 5 +++-- homeassistant/components/media_player/mpchc.py | 7 ++++--- homeassistant/components/media_player/mpd.py | 4 ++-- homeassistant/components/media_player/onkyo.py | 4 ++-- .../components/media_player/panasonic_viera.py | 4 ++-- homeassistant/components/media_player/pandora.py | 4 ++-- homeassistant/components/media_player/philips_js.py | 4 ++-- homeassistant/components/media_player/pioneer.py | 6 ++++-- homeassistant/components/media_player/plex.py | 4 ++-- homeassistant/components/media_player/roku.py | 4 ++-- homeassistant/components/media_player/russound_rnet.py | 4 ++-- homeassistant/components/media_player/samsungtv.py | 4 ++-- homeassistant/components/media_player/snapcast.py | 4 ++-- homeassistant/components/media_player/sonos.py | 5 +++-- homeassistant/components/media_player/soundtouch.py | 5 +++-- homeassistant/components/media_player/squeezebox.py | 5 +++-- homeassistant/components/media_player/vlc.py | 4 ++-- homeassistant/components/media_player/webostv.py | 4 ++-- homeassistant/components/media_player/yamaha.py | 6 +++--- tests/components/media_player/test_soundtouch.py | 2 +- 35 files changed, 90 insertions(+), 72 deletions(-) diff --git a/homeassistant/components/media_player/__init__.py b/homeassistant/components/media_player/__init__.py index e29e950a7f9..f5948e1eecd 100644 --- a/homeassistant/components/media_player/__init__.py +++ b/homeassistant/components/media_player/__init__.py @@ -101,6 +101,7 @@ SUPPORT_VOLUME_STEP = 1024 SUPPORT_SELECT_SOURCE = 2048 SUPPORT_STOP = 4096 SUPPORT_CLEAR_PLAYLIST = 8192 +SUPPORT_PLAY = 16384 # Service call validation schemas MEDIA_PLAYER_SCHEMA = vol.Schema({ @@ -675,6 +676,11 @@ class MediaPlayerDevice(Entity): None, self.clear_playlist) # No need to overwrite these. + @property + def support_play(self): + """Boolean if play is supported.""" + return bool(self.supported_media_commands & SUPPORT_PLAY) + @property def support_pause(self): """Boolean if pause is supported.""" diff --git a/homeassistant/components/media_player/aquostv.py b/homeassistant/components/media_player/aquostv.py index 5dc6635f8cc..0654e393780 100644 --- a/homeassistant/components/media_player/aquostv.py +++ b/homeassistant/components/media_player/aquostv.py @@ -11,7 +11,7 @@ import voluptuous as vol from homeassistant.components.media_player import ( SUPPORT_NEXT_TRACK, SUPPORT_PAUSE, SUPPORT_PREVIOUS_TRACK, SUPPORT_TURN_ON, SUPPORT_TURN_OFF, SUPPORT_SELECT_SOURCE, - SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_STEP, + SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_STEP, SUPPORT_PLAY, SUPPORT_VOLUME_SET, MediaPlayerDevice, PLATFORM_SCHEMA) from homeassistant.const import ( @@ -35,7 +35,7 @@ DEFAULT_RETRIES = 2 SUPPORT_SHARPTV = SUPPORT_TURN_OFF | \ SUPPORT_NEXT_TRACK | SUPPORT_PAUSE | SUPPORT_PREVIOUS_TRACK | \ SUPPORT_SELECT_SOURCE | SUPPORT_VOLUME_MUTE | SUPPORT_VOLUME_STEP | \ - SUPPORT_VOLUME_SET + SUPPORT_VOLUME_SET | SUPPORT_PLAY PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_HOST): cv.string, diff --git a/homeassistant/components/media_player/braviatv.py b/homeassistant/components/media_player/braviatv.py index 004682b402e..20eb4fc7cca 100644 --- a/homeassistant/components/media_player/braviatv.py +++ b/homeassistant/components/media_player/braviatv.py @@ -14,7 +14,7 @@ import voluptuous as vol from homeassistant.loader import get_component from homeassistant.components.media_player import ( SUPPORT_NEXT_TRACK, SUPPORT_PAUSE, SUPPORT_PREVIOUS_TRACK, SUPPORT_TURN_ON, - SUPPORT_TURN_OFF, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_STEP, + SUPPORT_TURN_OFF, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_STEP, SUPPORT_PLAY, SUPPORT_VOLUME_SET, SUPPORT_SELECT_SOURCE, MediaPlayerDevice, PLATFORM_SCHEMA) from homeassistant.const import (CONF_HOST, CONF_NAME, STATE_OFF, STATE_ON) @@ -41,7 +41,7 @@ SUPPORT_BRAVIA = SUPPORT_PAUSE | SUPPORT_VOLUME_STEP | \ SUPPORT_VOLUME_MUTE | SUPPORT_VOLUME_SET | \ SUPPORT_PREVIOUS_TRACK | SUPPORT_NEXT_TRACK | \ SUPPORT_TURN_ON | SUPPORT_TURN_OFF | \ - SUPPORT_SELECT_SOURCE + SUPPORT_SELECT_SOURCE | SUPPORT_PLAY PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_HOST): cv.string, diff --git a/homeassistant/components/media_player/cast.py b/homeassistant/components/media_player/cast.py index 7e96e0dbed6..faa204e675e 100644 --- a/homeassistant/components/media_player/cast.py +++ b/homeassistant/components/media_player/cast.py @@ -13,7 +13,7 @@ from homeassistant.components.media_player import ( MEDIA_TYPE_MUSIC, MEDIA_TYPE_TVSHOW, MEDIA_TYPE_VIDEO, SUPPORT_NEXT_TRACK, SUPPORT_PAUSE, SUPPORT_PLAY_MEDIA, SUPPORT_PREVIOUS_TRACK, SUPPORT_TURN_OFF, SUPPORT_TURN_ON, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_SET, - SUPPORT_STOP, MediaPlayerDevice, PLATFORM_SCHEMA) + SUPPORT_STOP, SUPPORT_PLAY, MediaPlayerDevice, PLATFORM_SCHEMA) from homeassistant.const import ( CONF_HOST, STATE_IDLE, STATE_OFF, STATE_PAUSED, STATE_PLAYING, STATE_UNKNOWN) @@ -31,7 +31,7 @@ DEFAULT_PORT = 8009 SUPPORT_CAST = SUPPORT_PAUSE | SUPPORT_VOLUME_SET | SUPPORT_VOLUME_MUTE | \ SUPPORT_TURN_ON | SUPPORT_TURN_OFF | SUPPORT_PREVIOUS_TRACK | \ - SUPPORT_NEXT_TRACK | SUPPORT_PLAY_MEDIA | SUPPORT_STOP + SUPPORT_NEXT_TRACK | SUPPORT_PLAY_MEDIA | SUPPORT_STOP | SUPPORT_PLAY KNOWN_HOSTS = [] diff --git a/homeassistant/components/media_player/cmus.py b/homeassistant/components/media_player/cmus.py index 16f3360a2ad..ac6885e3450 100644 --- a/homeassistant/components/media_player/cmus.py +++ b/homeassistant/components/media_player/cmus.py @@ -11,7 +11,7 @@ import voluptuous as vol from homeassistant.components.media_player import ( MEDIA_TYPE_MUSIC, MEDIA_TYPE_PLAYLIST, SUPPORT_NEXT_TRACK, SUPPORT_PAUSE, - SUPPORT_PREVIOUS_TRACK, SUPPORT_TURN_OFF, SUPPORT_TURN_ON, + SUPPORT_PREVIOUS_TRACK, SUPPORT_TURN_OFF, SUPPORT_TURN_ON, SUPPORT_PLAY, SUPPORT_VOLUME_SET, SUPPORT_PLAY_MEDIA, SUPPORT_SEEK, PLATFORM_SCHEMA, MediaPlayerDevice) from homeassistant.const import ( @@ -28,7 +28,7 @@ DEFAULT_PORT = 3000 SUPPORT_CMUS = SUPPORT_PAUSE | SUPPORT_VOLUME_SET | SUPPORT_TURN_OFF | \ SUPPORT_TURN_ON | SUPPORT_PREVIOUS_TRACK | SUPPORT_NEXT_TRACK | \ - SUPPORT_PLAY_MEDIA | SUPPORT_SEEK + SUPPORT_PLAY_MEDIA | SUPPORT_SEEK | SUPPORT_PLAY PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Inclusive(CONF_HOST, 'remote'): cv.string, diff --git a/homeassistant/components/media_player/demo.py b/homeassistant/components/media_player/demo.py index 226ddfe4769..4e9867b49e9 100644 --- a/homeassistant/components/media_player/demo.py +++ b/homeassistant/components/media_player/demo.py @@ -8,7 +8,8 @@ from homeassistant.components.media_player import ( MEDIA_TYPE_MUSIC, MEDIA_TYPE_TVSHOW, MEDIA_TYPE_VIDEO, SUPPORT_NEXT_TRACK, 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, MediaPlayerDevice) + SUPPORT_SELECT_SOURCE, SUPPORT_CLEAR_PLAYLIST, SUPPORT_PLAY, + MediaPlayerDevice) from homeassistant.const import STATE_OFF, STATE_PAUSED, STATE_PLAYING import homeassistant.util.dt as dt_util @@ -30,14 +31,15 @@ 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_TURN_ON | SUPPORT_TURN_OFF | SUPPORT_PLAY_MEDIA | SUPPORT_PLAY MUSIC_PLAYER_SUPPORT = \ SUPPORT_PAUSE | SUPPORT_VOLUME_SET | SUPPORT_VOLUME_MUTE | \ - SUPPORT_TURN_ON | SUPPORT_TURN_OFF | SUPPORT_CLEAR_PLAYLIST + SUPPORT_TURN_ON | SUPPORT_TURN_OFF | SUPPORT_CLEAR_PLAYLIST | SUPPORT_PLAY NETFLIX_PLAYER_SUPPORT = \ - SUPPORT_PAUSE | SUPPORT_TURN_ON | SUPPORT_TURN_OFF | SUPPORT_SELECT_SOURCE + SUPPORT_PAUSE | SUPPORT_TURN_ON | SUPPORT_TURN_OFF | \ + SUPPORT_SELECT_SOURCE | SUPPORT_PLAY class AbstractDemoPlayer(MediaPlayerDevice): diff --git a/homeassistant/components/media_player/denon.py b/homeassistant/components/media_player/denon.py index badbae162a2..1feee79635d 100755 --- a/homeassistant/components/media_player/denon.py +++ b/homeassistant/components/media_player/denon.py @@ -13,7 +13,7 @@ from homeassistant.components.media_player import ( PLATFORM_SCHEMA, SUPPORT_NEXT_TRACK, SUPPORT_SELECT_SOURCE, SUPPORT_PAUSE, SUPPORT_PREVIOUS_TRACK, SUPPORT_TURN_OFF, SUPPORT_TURN_ON, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_SET, - SUPPORT_STOP, MediaPlayerDevice) + SUPPORT_STOP, SUPPORT_PLAY, MediaPlayerDevice) from homeassistant.const import ( CONF_HOST, CONF_NAME, STATE_OFF, STATE_ON, STATE_UNKNOWN) import homeassistant.helpers.config_validation as cv @@ -26,7 +26,7 @@ SUPPORT_DENON = SUPPORT_VOLUME_SET | SUPPORT_VOLUME_MUTE | \ SUPPORT_TURN_ON | SUPPORT_TURN_OFF | SUPPORT_SELECT_SOURCE \ SUPPORT_MEDIA_MODES = SUPPORT_PAUSE | SUPPORT_STOP | \ - SUPPORT_PREVIOUS_TRACK | SUPPORT_NEXT_TRACK + SUPPORT_PREVIOUS_TRACK | SUPPORT_NEXT_TRACK | SUPPORT_PLAY PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_HOST): cv.string, diff --git a/homeassistant/components/media_player/denonavr.py b/homeassistant/components/media_player/denonavr.py index edae45e564d..50b16afc811 100644 --- a/homeassistant/components/media_player/denonavr.py +++ b/homeassistant/components/media_player/denonavr.py @@ -13,7 +13,7 @@ from homeassistant.components.media_player import ( SUPPORT_TURN_OFF, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_STEP, SUPPORT_SELECT_SOURCE, SUPPORT_PLAY_MEDIA, MEDIA_TYPE_CHANNEL, MediaPlayerDevice, PLATFORM_SCHEMA, SUPPORT_TURN_ON, - MEDIA_TYPE_MUSIC, SUPPORT_VOLUME_SET) + MEDIA_TYPE_MUSIC, SUPPORT_VOLUME_SET, SUPPORT_PLAY) from homeassistant.const import ( CONF_HOST, STATE_OFF, STATE_PLAYING, STATE_PAUSED, CONF_NAME, STATE_ON) @@ -30,7 +30,7 @@ SUPPORT_DENON = SUPPORT_VOLUME_STEP | SUPPORT_VOLUME_MUTE | \ SUPPORT_TURN_ON | SUPPORT_TURN_OFF | \ SUPPORT_SELECT_SOURCE | SUPPORT_PLAY_MEDIA | \ SUPPORT_PAUSE | SUPPORT_PREVIOUS_TRACK | \ - SUPPORT_NEXT_TRACK | SUPPORT_VOLUME_SET + SUPPORT_NEXT_TRACK | SUPPORT_VOLUME_SET | SUPPORT_PLAY PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Optional(CONF_HOST): cv.string, diff --git a/homeassistant/components/media_player/directv.py b/homeassistant/components/media_player/directv.py index 397014992ea..e63301db4d9 100644 --- a/homeassistant/components/media_player/directv.py +++ b/homeassistant/components/media_player/directv.py @@ -9,7 +9,8 @@ import voluptuous as vol from homeassistant.components.media_player import ( MEDIA_TYPE_TVSHOW, MEDIA_TYPE_VIDEO, SUPPORT_PAUSE, SUPPORT_PLAY_MEDIA, SUPPORT_TURN_OFF, SUPPORT_TURN_ON, SUPPORT_STOP, PLATFORM_SCHEMA, - SUPPORT_NEXT_TRACK, SUPPORT_PREVIOUS_TRACK, MediaPlayerDevice) + SUPPORT_NEXT_TRACK, SUPPORT_PREVIOUS_TRACK, SUPPORT_PLAY, + MediaPlayerDevice) from homeassistant.const import ( CONF_HOST, CONF_NAME, STATE_OFF, STATE_PLAYING, CONF_PORT) import homeassistant.helpers.config_validation as cv @@ -21,7 +22,7 @@ DEFAULT_PORT = 8080 SUPPORT_DTV = SUPPORT_PAUSE | SUPPORT_TURN_ON | SUPPORT_TURN_OFF | \ SUPPORT_PLAY_MEDIA | SUPPORT_STOP | SUPPORT_NEXT_TRACK | \ - SUPPORT_PREVIOUS_TRACK + SUPPORT_PREVIOUS_TRACK | SUPPORT_PLAY KNOWN_HOSTS = [] diff --git a/homeassistant/components/media_player/dunehd.py b/homeassistant/components/media_player/dunehd.py index d0851a2e088..9deab4bcdff 100644 --- a/homeassistant/components/media_player/dunehd.py +++ b/homeassistant/components/media_player/dunehd.py @@ -10,7 +10,7 @@ import homeassistant.helpers.config_validation as cv from homeassistant.components.media_player import ( SUPPORT_PAUSE, SUPPORT_TURN_OFF, SUPPORT_TURN_ON, SUPPORT_NEXT_TRACK, SUPPORT_PREVIOUS_TRACK, SUPPORT_SELECT_SOURCE, PLATFORM_SCHEMA, - MediaPlayerDevice) + SUPPORT_PLAY, MediaPlayerDevice) from homeassistant.const import ( CONF_HOST, CONF_NAME, STATE_OFF, STATE_PAUSED, STATE_ON, STATE_PLAYING) @@ -28,7 +28,8 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ DUNEHD_PLAYER_SUPPORT = \ SUPPORT_PAUSE | SUPPORT_TURN_ON | SUPPORT_TURN_OFF | \ - SUPPORT_SELECT_SOURCE | SUPPORT_PREVIOUS_TRACK | SUPPORT_NEXT_TRACK + SUPPORT_SELECT_SOURCE | SUPPORT_PREVIOUS_TRACK | SUPPORT_NEXT_TRACK | \ + SUPPORT_PLAY # pylint: disable=unused-argument diff --git a/homeassistant/components/media_player/emby.py b/homeassistant/components/media_player/emby.py index 3fae52dd052..4aac93c42d9 100644 --- a/homeassistant/components/media_player/emby.py +++ b/homeassistant/components/media_player/emby.py @@ -14,7 +14,7 @@ import homeassistant.helpers.config_validation as cv from homeassistant.components.media_player import ( MEDIA_TYPE_TVSHOW, MEDIA_TYPE_VIDEO, SUPPORT_NEXT_TRACK, SUPPORT_PAUSE, SUPPORT_SEEK, SUPPORT_STOP, SUPPORT_PREVIOUS_TRACK, MediaPlayerDevice, - PLATFORM_SCHEMA) + SUPPORT_PLAY, PLATFORM_SCHEMA) from homeassistant.const import ( CONF_HOST, CONF_API_KEY, CONF_PORT, CONF_SSL, DEVICE_DEFAULT_NAME, STATE_IDLE, STATE_OFF, STATE_PAUSED, STATE_PLAYING, STATE_UNKNOWN) @@ -34,7 +34,7 @@ DEFAULT_PORT = 8096 _LOGGER = logging.getLogger(__name__) SUPPORT_EMBY = SUPPORT_PAUSE | SUPPORT_PREVIOUS_TRACK | SUPPORT_NEXT_TRACK | \ - SUPPORT_STOP | SUPPORT_SEEK + SUPPORT_STOP | SUPPORT_SEEK | SUPPORT_PLAY PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Optional(CONF_HOST, default='localhost'): cv.string, diff --git a/homeassistant/components/media_player/firetv.py b/homeassistant/components/media_player/firetv.py index c8cdc9e7422..1b0a9b02b63 100644 --- a/homeassistant/components/media_player/firetv.py +++ b/homeassistant/components/media_player/firetv.py @@ -11,7 +11,8 @@ import voluptuous as vol from homeassistant.components.media_player import ( SUPPORT_NEXT_TRACK, SUPPORT_PAUSE, SUPPORT_PREVIOUS_TRACK, PLATFORM_SCHEMA, - SUPPORT_TURN_OFF, SUPPORT_TURN_ON, SUPPORT_VOLUME_SET, MediaPlayerDevice) + SUPPORT_TURN_OFF, SUPPORT_TURN_ON, SUPPORT_VOLUME_SET, SUPPORT_PLAY, + MediaPlayerDevice) from homeassistant.const import ( STATE_IDLE, STATE_OFF, STATE_PAUSED, STATE_PLAYING, STATE_STANDBY, STATE_UNKNOWN, CONF_HOST, CONF_PORT, CONF_NAME, CONF_DEVICE, CONF_DEVICES) @@ -21,7 +22,7 @@ _LOGGER = logging.getLogger(__name__) SUPPORT_FIRETV = SUPPORT_PAUSE | \ SUPPORT_TURN_ON | SUPPORT_TURN_OFF | SUPPORT_PREVIOUS_TRACK | \ - SUPPORT_NEXT_TRACK | SUPPORT_VOLUME_SET + SUPPORT_NEXT_TRACK | SUPPORT_VOLUME_SET | SUPPORT_PLAY DEFAULT_DEVICE = 'default' DEFAULT_HOST = 'localhost' diff --git a/homeassistant/components/media_player/gpmdp.py b/homeassistant/components/media_player/gpmdp.py index f81c63e71a1..c98b32137c7 100644 --- a/homeassistant/components/media_player/gpmdp.py +++ b/homeassistant/components/media_player/gpmdp.py @@ -14,8 +14,8 @@ import voluptuous as vol from homeassistant.components.media_player import ( MEDIA_TYPE_MUSIC, SUPPORT_NEXT_TRACK, SUPPORT_PREVIOUS_TRACK, - SUPPORT_PAUSE, SUPPORT_VOLUME_SET, SUPPORT_SEEK, MediaPlayerDevice, - PLATFORM_SCHEMA) + SUPPORT_PAUSE, SUPPORT_VOLUME_SET, SUPPORT_SEEK, SUPPORT_PLAY, + MediaPlayerDevice, PLATFORM_SCHEMA) from homeassistant.const import ( STATE_PLAYING, STATE_PAUSED, STATE_OFF, CONF_HOST, CONF_PORT, CONF_NAME) from homeassistant.loader import get_component @@ -33,7 +33,7 @@ DEFAULT_PORT = 5672 GPMDP_CONFIG_FILE = 'gpmpd.conf' SUPPORT_GPMDP = SUPPORT_PAUSE | SUPPORT_PREVIOUS_TRACK | SUPPORT_NEXT_TRACK | \ - SUPPORT_SEEK | SUPPORT_VOLUME_SET + SUPPORT_SEEK | SUPPORT_VOLUME_SET | SUPPORT_PLAY PLAYBACK_DICT = {'0': STATE_PAUSED, # Stopped '1': STATE_PAUSED, diff --git a/homeassistant/components/media_player/itunes.py b/homeassistant/components/media_player/itunes.py index 7b869e14267..4dc41c7e085 100644 --- a/homeassistant/components/media_player/itunes.py +++ b/homeassistant/components/media_player/itunes.py @@ -13,7 +13,7 @@ from homeassistant.components.media_player import ( MEDIA_TYPE_MUSIC, MEDIA_TYPE_PLAYLIST, SUPPORT_NEXT_TRACK, SUPPORT_PAUSE, SUPPORT_PLAY_MEDIA, SUPPORT_PREVIOUS_TRACK, SUPPORT_SEEK, SUPPORT_TURN_OFF, SUPPORT_TURN_ON, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_SET, PLATFORM_SCHEMA, - MediaPlayerDevice) + SUPPORT_PLAY, MediaPlayerDevice) from homeassistant.const import ( STATE_IDLE, STATE_OFF, STATE_ON, STATE_PAUSED, STATE_PLAYING, CONF_NAME, CONF_HOST, CONF_PORT, CONF_SSL) @@ -29,7 +29,7 @@ DOMAIN = 'itunes' SUPPORT_ITUNES = SUPPORT_PAUSE | SUPPORT_VOLUME_SET | SUPPORT_VOLUME_MUTE | \ SUPPORT_PREVIOUS_TRACK | SUPPORT_NEXT_TRACK | SUPPORT_SEEK | \ - SUPPORT_PLAY_MEDIA + SUPPORT_PLAY_MEDIA | SUPPORT_PLAY SUPPORT_AIRPLAY = SUPPORT_VOLUME_SET | SUPPORT_TURN_ON | SUPPORT_TURN_OFF diff --git a/homeassistant/components/media_player/kodi.py b/homeassistant/components/media_player/kodi.py index abab433eb38..54b95deee47 100644 --- a/homeassistant/components/media_player/kodi.py +++ b/homeassistant/components/media_player/kodi.py @@ -14,7 +14,7 @@ import voluptuous as vol from homeassistant.components.media_player import ( SUPPORT_NEXT_TRACK, SUPPORT_PAUSE, SUPPORT_PREVIOUS_TRACK, SUPPORT_SEEK, SUPPORT_PLAY_MEDIA, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_SET, SUPPORT_STOP, - SUPPORT_TURN_OFF, MediaPlayerDevice, PLATFORM_SCHEMA) + SUPPORT_TURN_OFF, SUPPORT_PLAY, MediaPlayerDevice, PLATFORM_SCHEMA) from homeassistant.const import ( STATE_IDLE, STATE_OFF, STATE_PAUSED, STATE_PLAYING, CONF_HOST, CONF_NAME, CONF_PORT, CONF_USERNAME, CONF_PASSWORD) @@ -35,7 +35,7 @@ TURN_OFF_ACTION = [None, 'quit', 'hibernate', 'suspend', 'reboot', 'shutdown'] SUPPORT_KODI = SUPPORT_PAUSE | SUPPORT_VOLUME_SET | SUPPORT_VOLUME_MUTE | \ SUPPORT_PREVIOUS_TRACK | SUPPORT_NEXT_TRACK | SUPPORT_SEEK | \ - SUPPORT_PLAY_MEDIA | SUPPORT_STOP + SUPPORT_PLAY_MEDIA | SUPPORT_STOP | SUPPORT_PLAY PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_HOST): cv.string, diff --git a/homeassistant/components/media_player/lg_netcast.py b/homeassistant/components/media_player/lg_netcast.py index 1f15153dbe8..ab6cfa701ca 100644 --- a/homeassistant/components/media_player/lg_netcast.py +++ b/homeassistant/components/media_player/lg_netcast.py @@ -14,7 +14,7 @@ import homeassistant.helpers.config_validation as cv from homeassistant.components.media_player import ( SUPPORT_NEXT_TRACK, SUPPORT_PAUSE, SUPPORT_PREVIOUS_TRACK, PLATFORM_SCHEMA, SUPPORT_TURN_OFF, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_STEP, - SUPPORT_SELECT_SOURCE, MEDIA_TYPE_CHANNEL, MediaPlayerDevice) + SUPPORT_SELECT_SOURCE, SUPPORT_PLAY, MEDIA_TYPE_CHANNEL, MediaPlayerDevice) from homeassistant.const import ( CONF_HOST, CONF_NAME, CONF_ACCESS_TOKEN, STATE_OFF, STATE_PLAYING, STATE_PAUSED, STATE_UNKNOWN) @@ -32,7 +32,8 @@ MIN_TIME_BETWEEN_SCANS = timedelta(seconds=10) SUPPORT_LGTV = SUPPORT_PAUSE | SUPPORT_VOLUME_STEP | \ SUPPORT_VOLUME_MUTE | SUPPORT_PREVIOUS_TRACK | \ - SUPPORT_NEXT_TRACK | SUPPORT_TURN_OFF | SUPPORT_SELECT_SOURCE + SUPPORT_NEXT_TRACK | SUPPORT_TURN_OFF | \ + SUPPORT_SELECT_SOURCE | SUPPORT_PLAY PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, diff --git a/homeassistant/components/media_player/mpchc.py b/homeassistant/components/media_player/mpchc.py index 0cbd548f23f..e51d91aa95c 100644 --- a/homeassistant/components/media_player/mpchc.py +++ b/homeassistant/components/media_player/mpchc.py @@ -12,8 +12,8 @@ import voluptuous as vol from homeassistant.components.media_player import ( SUPPORT_VOLUME_MUTE, SUPPORT_PAUSE, SUPPORT_STOP, SUPPORT_NEXT_TRACK, - SUPPORT_PREVIOUS_TRACK, SUPPORT_VOLUME_STEP, MediaPlayerDevice, - PLATFORM_SCHEMA) + SUPPORT_PREVIOUS_TRACK, SUPPORT_VOLUME_STEP, SUPPORT_PLAY, + MediaPlayerDevice, PLATFORM_SCHEMA) from homeassistant.const import ( STATE_OFF, STATE_IDLE, STATE_PAUSED, STATE_PLAYING, CONF_NAME, CONF_HOST, CONF_PORT) @@ -25,7 +25,8 @@ DEFAULT_NAME = 'MPC-HC' DEFAULT_PORT = 13579 SUPPORT_MPCHC = SUPPORT_VOLUME_MUTE | SUPPORT_PAUSE | SUPPORT_STOP | \ - SUPPORT_PREVIOUS_TRACK | SUPPORT_NEXT_TRACK | SUPPORT_VOLUME_STEP + SUPPORT_PREVIOUS_TRACK | SUPPORT_NEXT_TRACK | SUPPORT_VOLUME_STEP | \ + SUPPORT_PLAY PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_HOST): cv.string, diff --git a/homeassistant/components/media_player/mpd.py b/homeassistant/components/media_player/mpd.py index acfd0e9307c..015ba2fd0ac 100644 --- a/homeassistant/components/media_player/mpd.py +++ b/homeassistant/components/media_player/mpd.py @@ -12,7 +12,7 @@ import voluptuous as vol from homeassistant.components.media_player import ( MEDIA_TYPE_MUSIC, SUPPORT_NEXT_TRACK, SUPPORT_PAUSE, PLATFORM_SCHEMA, SUPPORT_PREVIOUS_TRACK, SUPPORT_TURN_OFF, SUPPORT_TURN_ON, - SUPPORT_VOLUME_SET, SUPPORT_PLAY_MEDIA, MEDIA_TYPE_PLAYLIST, + SUPPORT_VOLUME_SET, SUPPORT_PLAY_MEDIA, SUPPORT_PLAY, MEDIA_TYPE_PLAYLIST, MediaPlayerDevice) from homeassistant.const import ( STATE_OFF, STATE_PAUSED, STATE_PLAYING, CONF_PORT, CONF_PASSWORD, @@ -30,7 +30,7 @@ DEFAULT_PORT = 6600 SUPPORT_MPD = SUPPORT_PAUSE | SUPPORT_VOLUME_SET | SUPPORT_TURN_OFF | \ SUPPORT_TURN_ON | SUPPORT_PREVIOUS_TRACK | SUPPORT_NEXT_TRACK | \ - SUPPORT_PLAY_MEDIA + SUPPORT_PLAY_MEDIA | SUPPORT_PLAY PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_HOST): cv.string, diff --git a/homeassistant/components/media_player/onkyo.py b/homeassistant/components/media_player/onkyo.py index fa06f938b58..3db9413490f 100644 --- a/homeassistant/components/media_player/onkyo.py +++ b/homeassistant/components/media_player/onkyo.py @@ -10,7 +10,7 @@ import voluptuous as vol from homeassistant.components.media_player import ( SUPPORT_TURN_OFF, SUPPORT_TURN_ON, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_SET, - SUPPORT_SELECT_SOURCE, MediaPlayerDevice, PLATFORM_SCHEMA) + SUPPORT_SELECT_SOURCE, SUPPORT_PLAY, MediaPlayerDevice, PLATFORM_SCHEMA) from homeassistant.const import (STATE_OFF, STATE_ON, CONF_HOST, CONF_NAME) import homeassistant.helpers.config_validation as cv @@ -24,7 +24,7 @@ CONF_SOURCES = 'sources' DEFAULT_NAME = 'Onkyo Receiver' SUPPORT_ONKYO = SUPPORT_VOLUME_SET | SUPPORT_VOLUME_MUTE | \ - SUPPORT_TURN_ON | SUPPORT_TURN_OFF | SUPPORT_SELECT_SOURCE + SUPPORT_TURN_ON | SUPPORT_TURN_OFF | SUPPORT_SELECT_SOURCE | SUPPORT_PLAY KNOWN_HOSTS = [] # type: List[str] DEFAULT_SOURCES = {'tv': 'TV', 'bd': 'Bluray', 'game': 'Game', 'aux1': 'Aux1', diff --git a/homeassistant/components/media_player/panasonic_viera.py b/homeassistant/components/media_player/panasonic_viera.py index 4585d251d9f..09f4845effe 100644 --- a/homeassistant/components/media_player/panasonic_viera.py +++ b/homeassistant/components/media_player/panasonic_viera.py @@ -10,7 +10,7 @@ import voluptuous as vol from homeassistant.components.media_player import ( SUPPORT_NEXT_TRACK, SUPPORT_PAUSE, SUPPORT_PREVIOUS_TRACK, - SUPPORT_TURN_ON, SUPPORT_TURN_OFF, + SUPPORT_TURN_ON, SUPPORT_TURN_OFF, SUPPORT_PLAY, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_SET, SUPPORT_VOLUME_STEP, MediaPlayerDevice, PLATFORM_SCHEMA) from homeassistant.const import ( @@ -30,7 +30,7 @@ DEFAULT_PORT = 55000 SUPPORT_VIERATV = SUPPORT_PAUSE | SUPPORT_VOLUME_STEP | \ SUPPORT_VOLUME_SET | SUPPORT_VOLUME_MUTE | \ SUPPORT_PREVIOUS_TRACK | SUPPORT_NEXT_TRACK | \ - SUPPORT_TURN_OFF + SUPPORT_TURN_OFF | SUPPORT_PLAY PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_HOST): cv.string, diff --git a/homeassistant/components/media_player/pandora.py b/homeassistant/components/media_player/pandora.py index 3d42e4a11e1..0d554093be2 100644 --- a/homeassistant/components/media_player/pandora.py +++ b/homeassistant/components/media_player/pandora.py @@ -15,7 +15,7 @@ import shutil from homeassistant.const import EVENT_HOMEASSISTANT_STOP from homeassistant.components.media_player import ( SUPPORT_NEXT_TRACK, SUPPORT_PAUSE, MEDIA_TYPE_MUSIC, - SUPPORT_TURN_OFF, SUPPORT_TURN_ON, + SUPPORT_TURN_OFF, SUPPORT_TURN_ON, SUPPORT_PLAY, SUPPORT_SELECT_SOURCE, SERVICE_MEDIA_NEXT_TRACK, SERVICE_MEDIA_PLAY_PAUSE, SERVICE_MEDIA_PLAY, SERVICE_VOLUME_UP, SERVICE_VOLUME_DOWN, MediaPlayerDevice) @@ -31,7 +31,7 @@ _LOGGER = logging.getLogger(__name__) PANDORA_SUPPORT = \ SUPPORT_PAUSE | \ SUPPORT_TURN_ON | SUPPORT_TURN_OFF | SUPPORT_NEXT_TRACK | \ - SUPPORT_SELECT_SOURCE + SUPPORT_SELECT_SOURCE | SUPPORT_PLAY CMD_MAP = {SERVICE_MEDIA_NEXT_TRACK: 'n', SERVICE_MEDIA_PLAY_PAUSE: 'p', diff --git a/homeassistant/components/media_player/philips_js.py b/homeassistant/components/media_player/philips_js.py index b7665b199a4..22f257f31dc 100644 --- a/homeassistant/components/media_player/philips_js.py +++ b/homeassistant/components/media_player/philips_js.py @@ -13,7 +13,7 @@ import homeassistant.helpers.config_validation as cv from homeassistant.components.media_player import ( PLATFORM_SCHEMA, SUPPORT_NEXT_TRACK, SUPPORT_PREVIOUS_TRACK, SUPPORT_SELECT_SOURCE, SUPPORT_TURN_OFF, SUPPORT_VOLUME_MUTE, - SUPPORT_VOLUME_STEP, MediaPlayerDevice) + SUPPORT_VOLUME_STEP, SUPPORT_PLAY, MediaPlayerDevice) from homeassistant.const import ( CONF_HOST, CONF_NAME, STATE_OFF, STATE_ON, STATE_UNKNOWN) from homeassistant.util import Throttle @@ -28,7 +28,7 @@ SUPPORT_PHILIPS_JS = SUPPORT_TURN_OFF | SUPPORT_VOLUME_STEP | \ SUPPORT_VOLUME_MUTE | SUPPORT_SELECT_SOURCE SUPPORT_PHILIPS_JS_TV = SUPPORT_PHILIPS_JS | SUPPORT_NEXT_TRACK | \ - SUPPORT_PREVIOUS_TRACK + SUPPORT_PREVIOUS_TRACK | SUPPORT_PLAY DEFAULT_DEVICE = 'default' DEFAULT_HOST = '127.0.0.1' diff --git a/homeassistant/components/media_player/pioneer.py b/homeassistant/components/media_player/pioneer.py index 14e4c753765..dec8bd12bb2 100644 --- a/homeassistant/components/media_player/pioneer.py +++ b/homeassistant/components/media_player/pioneer.py @@ -11,7 +11,8 @@ import voluptuous as vol from homeassistant.components.media_player import ( SUPPORT_PAUSE, SUPPORT_SELECT_SOURCE, MediaPlayerDevice, PLATFORM_SCHEMA, - SUPPORT_TURN_OFF, SUPPORT_TURN_ON, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_SET) + SUPPORT_TURN_OFF, SUPPORT_TURN_ON, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_SET, + SUPPORT_PLAY) from homeassistant.const import ( CONF_HOST, STATE_OFF, STATE_ON, STATE_UNKNOWN, CONF_NAME, CONF_PORT, CONF_TIMEOUT) @@ -24,7 +25,8 @@ DEFAULT_PORT = 23 # telnet default. Some Pioneer AVRs use 8102 DEFAULT_TIMEOUT = None SUPPORT_PIONEER = SUPPORT_PAUSE | SUPPORT_VOLUME_SET | SUPPORT_VOLUME_MUTE | \ - SUPPORT_TURN_ON | SUPPORT_TURN_OFF | SUPPORT_SELECT_SOURCE + SUPPORT_TURN_ON | SUPPORT_TURN_OFF | \ + SUPPORT_SELECT_SOURCE | SUPPORT_PLAY MAX_VOLUME = 185 MAX_SOURCE_NUMBERS = 60 diff --git a/homeassistant/components/media_player/plex.py b/homeassistant/components/media_player/plex.py index 5aaee6a341e..409a480443a 100644 --- a/homeassistant/components/media_player/plex.py +++ b/homeassistant/components/media_player/plex.py @@ -14,7 +14,7 @@ import homeassistant.util as util from homeassistant.components.media_player import ( MEDIA_TYPE_TVSHOW, MEDIA_TYPE_VIDEO, MEDIA_TYPE_MUSIC, SUPPORT_NEXT_TRACK, SUPPORT_PREVIOUS_TRACK, SUPPORT_PAUSE, SUPPORT_STOP, SUPPORT_VOLUME_SET, - MediaPlayerDevice) + SUPPORT_PLAY, MediaPlayerDevice) from homeassistant.const import ( DEVICE_DEFAULT_NAME, STATE_IDLE, STATE_OFF, STATE_PAUSED, STATE_PLAYING, STATE_UNKNOWN) @@ -32,7 +32,7 @@ _CONFIGURING = {} _LOGGER = logging.getLogger(__name__) SUPPORT_PLEX = SUPPORT_PAUSE | SUPPORT_PREVIOUS_TRACK | SUPPORT_NEXT_TRACK | \ - SUPPORT_STOP | SUPPORT_VOLUME_SET + SUPPORT_STOP | SUPPORT_VOLUME_SET | SUPPORT_PLAY def config_from_file(filename, config=None): diff --git a/homeassistant/components/media_player/roku.py b/homeassistant/components/media_player/roku.py index dfeb6196750..5a4e993aee5 100644 --- a/homeassistant/components/media_player/roku.py +++ b/homeassistant/components/media_player/roku.py @@ -11,7 +11,7 @@ import voluptuous as vol from homeassistant.components.media_player import ( MEDIA_TYPE_VIDEO, SUPPORT_NEXT_TRACK, SUPPORT_PLAY_MEDIA, SUPPORT_PREVIOUS_TRACK, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_SET, - SUPPORT_SELECT_SOURCE, MediaPlayerDevice, PLATFORM_SCHEMA) + SUPPORT_SELECT_SOURCE, SUPPORT_PLAY, MediaPlayerDevice, PLATFORM_SCHEMA) from homeassistant.const import ( CONF_HOST, STATE_IDLE, STATE_PLAYING, STATE_UNKNOWN, STATE_HOME) import homeassistant.helpers.config_validation as cv @@ -27,7 +27,7 @@ _LOGGER = logging.getLogger(__name__) SUPPORT_ROKU = SUPPORT_PREVIOUS_TRACK | SUPPORT_NEXT_TRACK |\ SUPPORT_PLAY_MEDIA | SUPPORT_VOLUME_SET | SUPPORT_VOLUME_MUTE |\ - SUPPORT_SELECT_SOURCE + SUPPORT_SELECT_SOURCE | SUPPORT_PLAY PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Optional(CONF_HOST): cv.string, diff --git a/homeassistant/components/media_player/russound_rnet.py b/homeassistant/components/media_player/russound_rnet.py index 3128aebe04f..b8f79c45cec 100644 --- a/homeassistant/components/media_player/russound_rnet.py +++ b/homeassistant/components/media_player/russound_rnet.py @@ -10,7 +10,7 @@ import voluptuous as vol from homeassistant.components.media_player import ( SUPPORT_TURN_OFF, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_SET, - SUPPORT_SELECT_SOURCE, MediaPlayerDevice, PLATFORM_SCHEMA) + SUPPORT_SELECT_SOURCE, SUPPORT_PLAY, MediaPlayerDevice, PLATFORM_SCHEMA) from homeassistant.const import ( CONF_HOST, CONF_PORT, STATE_OFF, STATE_ON, CONF_NAME) import homeassistant.helpers.config_validation as cv @@ -25,7 +25,7 @@ CONF_ZONES = 'zones' CONF_SOURCES = 'sources' SUPPORT_RUSSOUND = SUPPORT_VOLUME_MUTE | SUPPORT_VOLUME_SET | \ - SUPPORT_TURN_OFF | SUPPORT_SELECT_SOURCE + SUPPORT_TURN_OFF | SUPPORT_SELECT_SOURCE | SUPPORT_PLAY ZONE_SCHEMA = vol.Schema({ vol.Required(CONF_NAME): cv.string, diff --git a/homeassistant/components/media_player/samsungtv.py b/homeassistant/components/media_player/samsungtv.py index 85e32947fb0..d2d3d2e25a6 100644 --- a/homeassistant/components/media_player/samsungtv.py +++ b/homeassistant/components/media_player/samsungtv.py @@ -12,7 +12,7 @@ import voluptuous as vol from homeassistant.components.media_player import ( SUPPORT_NEXT_TRACK, SUPPORT_PAUSE, SUPPORT_PREVIOUS_TRACK, SUPPORT_TURN_OFF, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_STEP, - MediaPlayerDevice, PLATFORM_SCHEMA) + SUPPORT_PLAY, MediaPlayerDevice, PLATFORM_SCHEMA) from homeassistant.const import ( CONF_HOST, CONF_NAME, STATE_OFF, STATE_ON, STATE_UNKNOWN, CONF_PORT) import homeassistant.helpers.config_validation as cv @@ -31,7 +31,7 @@ KNOWN_DEVICES_KEY = 'samsungtv_known_devices' SUPPORT_SAMSUNGTV = SUPPORT_PAUSE | SUPPORT_VOLUME_STEP | \ SUPPORT_VOLUME_MUTE | SUPPORT_PREVIOUS_TRACK | \ - SUPPORT_NEXT_TRACK | SUPPORT_TURN_OFF + SUPPORT_NEXT_TRACK | SUPPORT_TURN_OFF | SUPPORT_PLAY PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_HOST): cv.string, diff --git a/homeassistant/components/media_player/snapcast.py b/homeassistant/components/media_player/snapcast.py index 37e9c4d3109..98dad3486a2 100644 --- a/homeassistant/components/media_player/snapcast.py +++ b/homeassistant/components/media_player/snapcast.py @@ -11,7 +11,7 @@ import voluptuous as vol from homeassistant.components.media_player import ( SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_SET, SUPPORT_SELECT_SOURCE, - PLATFORM_SCHEMA, MediaPlayerDevice) + SUPPORT_PLAY, PLATFORM_SCHEMA, MediaPlayerDevice) from homeassistant.const import ( STATE_OFF, STATE_IDLE, STATE_PLAYING, STATE_UNKNOWN, CONF_HOST, CONF_PORT) import homeassistant.helpers.config_validation as cv @@ -23,7 +23,7 @@ _LOGGER = logging.getLogger(__name__) DOMAIN = 'snapcast' SUPPORT_SNAPCAST = SUPPORT_VOLUME_SET | SUPPORT_VOLUME_MUTE | \ - SUPPORT_SELECT_SOURCE + SUPPORT_SELECT_SOURCE | SUPPORT_PLAY PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ diff --git a/homeassistant/components/media_player/sonos.py b/homeassistant/components/media_player/sonos.py index 621fc03a7c3..7e9a553fd97 100644 --- a/homeassistant/components/media_player/sonos.py +++ b/homeassistant/components/media_player/sonos.py @@ -15,7 +15,8 @@ from homeassistant.components.media_player import ( ATTR_MEDIA_ENQUEUE, DOMAIN, MEDIA_TYPE_MUSIC, SUPPORT_NEXT_TRACK, SUPPORT_PAUSE, SUPPORT_PLAY_MEDIA, SUPPORT_PREVIOUS_TRACK, SUPPORT_SEEK, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_SET, SUPPORT_CLEAR_PLAYLIST, - SUPPORT_SELECT_SOURCE, MediaPlayerDevice, PLATFORM_SCHEMA, SUPPORT_STOP) + SUPPORT_SELECT_SOURCE, MediaPlayerDevice, PLATFORM_SCHEMA, SUPPORT_STOP, + SUPPORT_PLAY) from homeassistant.const import ( STATE_IDLE, STATE_PAUSED, STATE_PLAYING, STATE_OFF, ATTR_ENTITY_ID, CONF_HOSTS) @@ -39,7 +40,7 @@ _REQUESTS_LOGGER.setLevel(logging.ERROR) SUPPORT_SONOS = SUPPORT_STOP | SUPPORT_PAUSE | SUPPORT_VOLUME_SET |\ SUPPORT_VOLUME_MUTE | SUPPORT_PREVIOUS_TRACK | SUPPORT_NEXT_TRACK |\ SUPPORT_PLAY_MEDIA | SUPPORT_SEEK | SUPPORT_CLEAR_PLAYLIST |\ - SUPPORT_SELECT_SOURCE + SUPPORT_SELECT_SOURCE | SUPPORT_PLAY SERVICE_GROUP_PLAYERS = 'sonos_group_players' SERVICE_UNJOIN = 'sonos_unjoin' diff --git a/homeassistant/components/media_player/soundtouch.py b/homeassistant/components/media_player/soundtouch.py index c33422f871e..22191a0ee17 100644 --- a/homeassistant/components/media_player/soundtouch.py +++ b/homeassistant/components/media_player/soundtouch.py @@ -8,7 +8,8 @@ import homeassistant.helpers.config_validation as cv from homeassistant.components.media_player import ( SUPPORT_NEXT_TRACK, SUPPORT_PAUSE, SUPPORT_PREVIOUS_TRACK, SUPPORT_TURN_OFF, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_STEP, - SUPPORT_VOLUME_SET, SUPPORT_TURN_ON, MediaPlayerDevice, PLATFORM_SCHEMA) + SUPPORT_VOLUME_SET, SUPPORT_TURN_ON, SUPPORT_PLAY, MediaPlayerDevice, + PLATFORM_SCHEMA) from homeassistant.config import load_yaml_config_file from homeassistant.const import (CONF_HOST, CONF_NAME, STATE_OFF, CONF_PORT, STATE_PAUSED, STATE_PLAYING, @@ -58,7 +59,7 @@ DEVICES = [] SUPPORT_SOUNDTOUCH = SUPPORT_PAUSE | SUPPORT_VOLUME_STEP | \ SUPPORT_VOLUME_MUTE | SUPPORT_PREVIOUS_TRACK | \ SUPPORT_NEXT_TRACK | SUPPORT_TURN_OFF | \ - SUPPORT_VOLUME_SET | SUPPORT_TURN_ON + SUPPORT_VOLUME_SET | SUPPORT_TURN_ON | SUPPORT_PLAY PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_HOST): cv.string, diff --git a/homeassistant/components/media_player/squeezebox.py b/homeassistant/components/media_player/squeezebox.py index 08d498053ce..c338c6dffd8 100644 --- a/homeassistant/components/media_player/squeezebox.py +++ b/homeassistant/components/media_player/squeezebox.py @@ -17,7 +17,7 @@ from homeassistant.components.media_player import ( ATTR_MEDIA_ENQUEUE, SUPPORT_PLAY_MEDIA, MEDIA_TYPE_MUSIC, SUPPORT_NEXT_TRACK, SUPPORT_PAUSE, PLATFORM_SCHEMA, SUPPORT_PREVIOUS_TRACK, SUPPORT_SEEK, SUPPORT_TURN_OFF, SUPPORT_TURN_ON, - SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_SET, MediaPlayerDevice) + SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_SET, SUPPORT_PLAY, MediaPlayerDevice) from homeassistant.const import ( CONF_HOST, CONF_PASSWORD, CONF_USERNAME, STATE_IDLE, STATE_OFF, STATE_PAUSED, STATE_PLAYING, STATE_UNKNOWN, CONF_PORT) @@ -33,7 +33,8 @@ KNOWN_DEVICES = [] SUPPORT_SQUEEZEBOX = SUPPORT_PAUSE | SUPPORT_VOLUME_SET | \ SUPPORT_VOLUME_MUTE | SUPPORT_PREVIOUS_TRACK | SUPPORT_NEXT_TRACK | \ - SUPPORT_SEEK | SUPPORT_TURN_ON | SUPPORT_TURN_OFF | SUPPORT_PLAY_MEDIA + SUPPORT_SEEK | SUPPORT_TURN_ON | SUPPORT_TURN_OFF | SUPPORT_PLAY_MEDIA | \ + SUPPORT_PLAY PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_HOST): cv.string, diff --git a/homeassistant/components/media_player/vlc.py b/homeassistant/components/media_player/vlc.py index da6e9a696b9..3398e7093cc 100644 --- a/homeassistant/components/media_player/vlc.py +++ b/homeassistant/components/media_player/vlc.py @@ -10,7 +10,7 @@ import voluptuous as vol from homeassistant.components.media_player import ( SUPPORT_PAUSE, SUPPORT_PLAY_MEDIA, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_SET, - MediaPlayerDevice, PLATFORM_SCHEMA, MEDIA_TYPE_MUSIC) + SUPPORT_PLAY, MediaPlayerDevice, PLATFORM_SCHEMA, MEDIA_TYPE_MUSIC) from homeassistant.const import (CONF_NAME, STATE_IDLE, STATE_PAUSED, STATE_PLAYING) import homeassistant.helpers.config_validation as cv @@ -22,7 +22,7 @@ _LOGGER = logging.getLogger(__name__) SUPPORT_VLC = SUPPORT_PAUSE | SUPPORT_VOLUME_SET | SUPPORT_VOLUME_MUTE | \ - SUPPORT_PLAY_MEDIA + SUPPORT_PLAY_MEDIA | SUPPORT_PLAY PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Optional(CONF_NAME): cv.string, diff --git a/homeassistant/components/media_player/webostv.py b/homeassistant/components/media_player/webostv.py index a2f49cc3f21..fbd3bb14e74 100644 --- a/homeassistant/components/media_player/webostv.py +++ b/homeassistant/components/media_player/webostv.py @@ -12,7 +12,7 @@ import voluptuous as vol import homeassistant.util as util from homeassistant.components.media_player import ( - SUPPORT_TURN_ON, SUPPORT_TURN_OFF, + SUPPORT_TURN_ON, SUPPORT_TURN_OFF, SUPPORT_PLAY, SUPPORT_NEXT_TRACK, SUPPORT_PAUSE, SUPPORT_PREVIOUS_TRACK, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_STEP, SUPPORT_SELECT_SOURCE, SUPPORT_PLAY_MEDIA, MEDIA_TYPE_CHANNEL, @@ -40,7 +40,7 @@ DEFAULT_NAME = 'LG webOS Smart TV' SUPPORT_WEBOSTV = SUPPORT_TURN_OFF | \ SUPPORT_NEXT_TRACK | SUPPORT_PAUSE | SUPPORT_PREVIOUS_TRACK | \ SUPPORT_VOLUME_MUTE | SUPPORT_VOLUME_STEP | \ - SUPPORT_SELECT_SOURCE | SUPPORT_PLAY_MEDIA + SUPPORT_SELECT_SOURCE | SUPPORT_PLAY_MEDIA | SUPPORT_PLAY MIN_TIME_BETWEEN_SCANS = timedelta(seconds=10) MIN_TIME_BETWEEN_FORCED_SCANS = timedelta(seconds=1) diff --git a/homeassistant/components/media_player/yamaha.py b/homeassistant/components/media_player/yamaha.py index 05f60cf06d8..2596e7a4ca9 100644 --- a/homeassistant/components/media_player/yamaha.py +++ b/homeassistant/components/media_player/yamaha.py @@ -11,7 +11,7 @@ import voluptuous as vol from homeassistant.components.media_player import ( SUPPORT_TURN_OFF, SUPPORT_TURN_ON, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_SET, SUPPORT_SELECT_SOURCE, SUPPORT_PLAY_MEDIA, SUPPORT_PAUSE, SUPPORT_STOP, - SUPPORT_NEXT_TRACK, SUPPORT_PREVIOUS_TRACK, + SUPPORT_NEXT_TRACK, SUPPORT_PREVIOUS_TRACK, SUPPORT_PLAY, MEDIA_TYPE_MUSIC, MediaPlayerDevice, PLATFORM_SCHEMA) from homeassistant.const import (CONF_NAME, CONF_HOST, STATE_OFF, STATE_ON, @@ -23,7 +23,7 @@ REQUIREMENTS = ['rxv==0.4.0'] _LOGGER = logging.getLogger(__name__) SUPPORT_YAMAHA = SUPPORT_VOLUME_SET | SUPPORT_VOLUME_MUTE | \ - SUPPORT_TURN_ON | SUPPORT_TURN_OFF | SUPPORT_SELECT_SOURCE + SUPPORT_TURN_ON | SUPPORT_TURN_OFF | SUPPORT_SELECT_SOURCE | SUPPORT_PLAY CONF_SOURCE_NAMES = 'source_names' CONF_SOURCE_IGNORE = 'source_ignore' @@ -184,7 +184,7 @@ class YamahaDevice(MediaPlayerDevice): supported_commands = SUPPORT_YAMAHA supports = self._receiver.get_playback_support() - mapping = {'play': SUPPORT_PLAY_MEDIA, + mapping = {'play': (SUPPORT_PLAY | SUPPORT_PLAY_MEDIA), 'pause': SUPPORT_PAUSE, 'stop': SUPPORT_STOP, 'skip_f': SUPPORT_NEXT_TRACK, diff --git a/tests/components/media_player/test_soundtouch.py b/tests/components/media_player/test_soundtouch.py index 16f1065767a..69d80e30f59 100644 --- a/tests/components/media_player/test_soundtouch.py +++ b/tests/components/media_player/test_soundtouch.py @@ -318,7 +318,7 @@ class TestSoundtouchMediaPlayer(unittest.TestCase): default_component(), mock.MagicMock()) self.assertEqual(mocked_sountouch_device.call_count, 1) - self.assertEqual(soundtouch.DEVICES[0].supported_media_commands, 1469) + self.assertEqual(soundtouch.DEVICES[0].supported_media_commands, 17853) @mock.patch('libsoundtouch.device.SoundTouchDevice.power_off') @mock.patch('libsoundtouch.device.SoundTouchDevice.volume') From 5983dc232f093c1351dcce4bbb70630484fa4609 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen <paulus.schoutsen@mycase.com> Date: Mon, 9 Jan 2017 01:14:13 +0100 Subject: [PATCH 120/189] Update frontend --- homeassistant/components/frontend/version.py | 18 +++++++++--------- .../components/frontend/www_static/core.js | 8 ++++---- .../components/frontend/www_static/core.js.gz | Bin 32904 -> 32917 bytes .../frontend/www_static/frontend.html | 4 ++-- .../frontend/www_static/frontend.html.gz | Bin 131102 -> 131138 bytes .../www_static/home-assistant-polymer | 2 +- .../www_static/panels/ha-panel-dev-event.html | 2 +- .../panels/ha-panel-dev-event.html.gz | Bin 2656 -> 2719 bytes .../www_static/panels/ha-panel-dev-info.html | 2 +- .../panels/ha-panel-dev-info.html.gz | Bin 1343 -> 1341 bytes .../panels/ha-panel-dev-service.html | 2 +- .../panels/ha-panel-dev-service.html.gz | Bin 17796 -> 17837 bytes .../www_static/panels/ha-panel-dev-state.html | 2 +- .../panels/ha-panel-dev-state.html.gz | Bin 2811 -> 2880 bytes .../panels/ha-panel-dev-template.html | 2 +- .../panels/ha-panel-dev-template.html.gz | Bin 7309 -> 7366 bytes .../www_static/panels/ha-panel-history.html | 2 +- .../panels/ha-panel-history.html.gz | Bin 6844 -> 6791 bytes .../www_static/panels/ha-panel-logbook.html | 2 +- .../panels/ha-panel-logbook.html.gz | Bin 7322 -> 7322 bytes .../frontend/www_static/service_worker.js | 2 +- .../frontend/www_static/service_worker.js.gz | Bin 2323 -> 2323 bytes 22 files changed, 24 insertions(+), 24 deletions(-) diff --git a/homeassistant/components/frontend/version.py b/homeassistant/components/frontend/version.py index ba7937662a1..3cae814daff 100644 --- a/homeassistant/components/frontend/version.py +++ b/homeassistant/components/frontend/version.py @@ -1,18 +1,18 @@ """DO NOT MODIFY. Auto-generated by script/fingerprint_frontend.""" FINGERPRINTS = { - "core.js": "ad1ebcd0614c98a390d982087a7ca75c", - "frontend.html": "d6132d3aaac78e1a91efe7bc130b6f45", + "core.js": "22d39af274e1d824ca1302e10971f2d8", + "frontend.html": "5aef64bf1b94cc197ac45f87e26f57b5", "mdi.html": "48fcee544a61b668451faf2b7295df70", "micromarkdown-js.html": "93b5ec4016f0bba585521cf4d18dec1a", - "panels/ha-panel-dev-event.html": "c2d5ec676be98d4474d19f94d0262c1e", - "panels/ha-panel-dev-info.html": "a9c07bf281fe9791fb15827ec1286825", - "panels/ha-panel-dev-service.html": "ac74f7ce66fd7136d25c914ea12f4351", - "panels/ha-panel-dev-state.html": "65e5f791cc467561719bf591f1386054", - "panels/ha-panel-dev-template.html": "7d744ab7f7c08b6d6ad42069989de400", - "panels/ha-panel-history.html": "8f7b538b7bedc83149112aea9c11b77a", + "panels/ha-panel-dev-event.html": "f19840b9a6a46f57cb064b384e1353f5", + "panels/ha-panel-dev-info.html": "3765a371478cc66d677cf6dcc35267c6", + "panels/ha-panel-dev-service.html": "e32bcd3afdf485417a3e20b4fc760776", + "panels/ha-panel-dev-state.html": "8257d99a38358a150eafdb23fa6727e0", + "panels/ha-panel-dev-template.html": "cbb251acabd5e7431058ed507b70522b", + "panels/ha-panel-history.html": "7baeb4bd7d9ce0def4f95eab6f10812e", "panels/ha-panel-iframe.html": "d920f0aa3c903680f2f8795e2255daab", - "panels/ha-panel-logbook.html": "1a9017aaeaf45453cae0a1a8c56992ad", + "panels/ha-panel-logbook.html": "93de4cee3a2352a6813b5c218421d534", "panels/ha-panel-map.html": "3b0ca63286cbe80f27bd36dbc2434e89", "websocket_test.html": "575de64b431fe11c3785bf96d7813450" } diff --git a/homeassistant/components/frontend/www_static/core.js b/homeassistant/components/frontend/www_static/core.js index 6cab0b713f3..e3134a1ea79 100644 --- a/homeassistant/components/frontend/www_static/core.js +++ b/homeassistant/components/frontend/www_static/core.js @@ -1,4 +1,4 @@ -!(function(){"use strict";function t(t){return t&&t.__esModule?t.default:t}function e(t,e){return e={exports:{}},t(e,e.exports),e.exports}function n(t,e){var n=e.authToken,r=e.host;return xe({authToken:n,host:r,isValidating:!0,isInvalid:!1,errorMessage:""})}function r(){return Ve.getInitialState()}function i(t,e){var n=e.errorMessage;return t.withMutations((function(t){return t.set("isValidating",!1).set("isInvalid",!0).set("errorMessage",n)}))}function o(t,e){var n=e.authToken,r=e.host;return Fe({authToken:n,host:r})}function u(){return Ge.getInitialState()}function a(t,e){var n=e.rememberAuth;return n}function s(t){return t.withMutations((function(t){t.set("isStreaming",!0).set("hasError",!1)}))}function c(t){return t.withMutations((function(t){t.set("isStreaming",!1).set("hasError",!0)}))}function f(){return Xe.getInitialState()}function h(t){return{type:"auth",api_password:t}}function l(){return{type:"get_states"}}function p(){return{type:"get_config"}}function _(){return{type:"get_services"}}function d(){return{type:"get_panels"}}function v(t,e,n){var r={type:"call_service",domain:t,service:e};return n&&(r.service_data=n),r}function y(t){var e={type:"subscribe_events"};return t&&(e.event_type=t),e}function m(t){return{type:"unsubscribe_events",subscription:t}}function g(){return{type:"ping"}}function S(t,e){return{type:"result",success:!1,error:{code:t,message:e}}}function b(t){return t.result}function E(t,e){var n=new tn(t,e);return n.connect()}function I(t,e,n,r){void 0===r&&(r=null);var i=t.evaluate(Mo.authInfo),o=i.host+"/api/"+n;return new Promise(function(t,n){var u=new XMLHttpRequest;u.open(e,o,!0),u.setRequestHeader("X-HA-access",i.authToken),u.onload=function(){var e;try{e="application/json"===u.getResponseHeader("content-type")?JSON.parse(u.responseText):u.responseText}catch(t){e=u.responseText}u.status>199&&u.status<300?t(e):n(e)},u.onerror=function(){return n({})},r?(u.setRequestHeader("Content-Type","application/json;charset=UTF-8"),u.send(JSON.stringify(r))):u.send()})}function O(t,e){var n=e.model,r=e.result,i=e.params,o=n.entity;if(!r)return t;var u=i.replace?sn({}):t.get(o),a=Array.isArray(r)?r:[r],s=n.fromJSON||sn;return t.set(o,u.withMutations((function(t){for(var e=0;e<a.length;e++){var n=s(a[e]);t.set(n.id,n)}})))}function w(t,e){var n=e.model,r=e.params;return t.removeIn([n.entity,r.id])}function T(t){if(null===t||void 0===t)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}function A(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de","5"===Object.getOwnPropertyNames(t)[0])return!1;for(var e={},n=0;n<10;n++)e["_"+String.fromCharCode(n)]=n;var r=Object.getOwnPropertyNames(e).map((function(t){return e[t]}));if("0123456789"!==r.join(""))return!1;var i={};return"abcdefghijklmnopqrst".split("").forEach((function(t){i[t]=t})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},i)).join("")}catch(t){return!1}}function D(t){var e={};return e.incrementData=function(e,n,r){void 0===r&&(r={}),C(e,t,r,n)},e.replaceData=function(e,n,r){void 0===r&&(r={}),C(e,t,ln({},r,{replace:!0}),n)},e.removeData=function(e,n){L(e,t,{id:n})},t.fetch&&(e.fetch=function(e,n){return void 0===n&&(n={}),e.dispatch(un.API_FETCH_START,{model:t,params:n,method:"fetch"}),t.fetch(e,n).then(C.bind(null,e,t,n),z.bind(null,e,t,n))}),e.fetchAll=function(e,n){return void 0===n&&(n={}),e.dispatch(un.API_FETCH_START,{model:t,params:n,method:"fetchAll"}),t.fetchAll(e,n).then(C.bind(null,e,t,ln({},n,{replace:!0})),z.bind(null,e,t,n))},t.save&&(e.save=function(e,n){return void 0===n&&(n={}),e.dispatch(un.API_SAVE_START,{params:n}),t.save(e,n).then(R.bind(null,e,t,n),M.bind(null,e,t,n))}),t.delete&&(e.delete=function(e,n){return void 0===n&&(n={}),e.dispatch(un.API_DELETE_START,{params:n}),t.delete(e,n).then(L.bind(null,e,t,n),j.bind(null,e,t,n))}),e}function C(t,e,n,r){return t.dispatch(un.API_FETCH_SUCCESS,{model:e,params:n,result:r}),r}function z(t,e,n,r){return t.dispatch(un.API_FETCH_FAIL,{model:e,params:n,reason:r}),Promise.reject(r)}function R(t,e,n,r){return t.dispatch(un.API_SAVE_SUCCESS,{model:e,params:n,result:r}),r}function M(t,e,n,r){return t.dispatch(un.API_SAVE_FAIL,{model:e,params:n,reason:r}),Promise.reject(r)}function L(t,e,n,r){return t.dispatch(un.API_DELETE_SUCCESS,{model:e,params:n,result:r}),r}function j(t,e,n,r){return t.dispatch(un.API_DELETE_FAIL,{model:e,params:n,reason:r}),Promise.reject(r)}function N(t){t.registerStores({restApiCache:cn})}function k(t){return[["restApiCache",t.entity],function(t){return!!t}]}function P(t){return[["restApiCache",t.entity],function(t){return t||pn({})}]}function U(t){return function(e){return["restApiCache",t.entity,e]}}function H(t){return new Date(t)}function x(t,e){var n=e.message;return t.set(t.size,n)}function V(){return kn.getInitialState()}function q(t,e){t.dispatch(Ln.NOTIFICATION_CREATED,{message:e})}function F(t){t.registerStores({notifications:kn})}function G(t,e){if("lock"===t)return!0;if("garage_door"===t)return!0;var n=e.get(t);return!!n&&n.services.has("turn_on")}function K(t,e){return!!t&&("group"===t.domain?"on"===t.state||"off"===t.state:G(t.domain,e))}function B(t,e){return[Qn(t),function(t){return!!t&&t.services.has(e)}]}function Y(t){return[Rn.byId(t),Xn,K]}function J(t,e){var n=e.component;return t.push(n)}function W(t,e){var n=e.components;return yr(n)}function X(){return mr.getInitialState()}function Q(t,e){var n=e.latitude,r=e.longitude,i=e.location_name,o=e.unit_system,u=e.time_zone,a=e.config_dir,s=e.version;return Sr({latitude:n,longitude:r,location_name:i,unit_system:o,time_zone:u,config_dir:a,serverVersion:s})}function Z(){return br.getInitialState()}function $(t,e){t.dispatch(dr.SERVER_CONFIG_LOADED,e)}function tt(t){on(t,"GET","config").then((function(e){return $(t,e)}))}function et(t,e){t.dispatch(dr.COMPONENT_LOADED,{component:e})}function nt(t){return[["serverComponent"],function(e){return e.contains(t)}]}function rt(t){t.registerStores({serverComponent:mr,serverConfig:br})}function it(t,e){var n=e.pane;return n}function ot(){return Lr.getInitialState()}function ut(t,e){var n=e.panels;return Nr(n)}function at(){return kr.getInitialState()}function st(t,e){var n=e.show;return!!n}function ct(){return Ur.getInitialState()}function ft(t,e){t.dispatch(Rr.SHOW_SIDEBAR,{show:e})}function ht(t,e){t.dispatch(Rr.NAVIGATE,{pane:e})}function lt(t,e){t.dispatch(Rr.PANELS_LOADED,{panels:e})}function pt(t,e){var n=e.entityId;return n}function _t(){return Yr.getInitialState()}function dt(t,e){t.dispatch(Kr.SELECT_ENTITY,{entityId:e})}function vt(t){t.dispatch(Kr.SELECT_ENTITY,{entityId:null})}function yt(t){return!t||(new Date).getTime()-t>6e4}function mt(t,e){var n=e.date;return n.toISOString()}function gt(){return Qr.getInitialState()}function St(t,e){var n=e.date,r=e.stateHistory;return 0===r.length?t.set(n,$r({})):t.withMutations((function(t){r.forEach((function(e){return t.setIn([n,e[0].entity_id],$r(e.map(In.fromJSON)))}))}))}function bt(){return ti.getInitialState()}function Et(t,e){var n=e.stateHistory;return t.withMutations((function(t){n.forEach((function(e){return t.set(e[0].entity_id,ii(e.map(In.fromJSON)))}))}))}function It(){return oi.getInitialState()}function Ot(t,e){var n=e.stateHistory,r=(new Date).getTime();return t.withMutations((function(t){n.forEach((function(e){return t.set(e[0].entity_id,r)})),history.length>1&&t.set(si,r)}))}function wt(){return ci.getInitialState()}function Tt(t,e){t.dispatch(Wr.ENTITY_HISTORY_DATE_SELECTED,{date:e})}function At(t,e){void 0===e&&(e=null),t.dispatch(Wr.RECENT_ENTITY_HISTORY_FETCH_START,{});var n="history/period";return null!==e&&(n+="?filter_entity_id="+e),on(t,"GET",n).then((function(e){return t.dispatch(Wr.RECENT_ENTITY_HISTORY_FETCH_SUCCESS,{stateHistory:e})}),(function(){return t.dispatch(Wr.RECENT_ENTITY_HISTORY_FETCH_ERROR,{})}))}function Dt(t,e){return t.dispatch(Wr.ENTITY_HISTORY_FETCH_START,{date:e}),on(t,"GET","history/period/"+e).then((function(n){return t.dispatch(Wr.ENTITY_HISTORY_FETCH_SUCCESS,{date:e,stateHistory:n})}),(function(){return t.dispatch(Wr.ENTITY_HISTORY_FETCH_ERROR,{})}))}function Ct(t){var e=t.evaluate(li);return Dt(t,e)}function zt(t){t.registerStores({currentEntityHistoryDate:Qr,entityHistory:ti,isLoadingEntityHistory:ni,recentEntityHistory:oi,recentEntityHistoryUpdated:ci})}function Rt(t){t.registerStores({moreInfoEntityId:Yr})}function Mt(t,e){var n=e.model,r=e.result,i=e.params;if(null===t||"entity"!==n.entity||!i.replace)return t;for(var o=0;o<r.length;o++)if(r[o].entity_id===t)return t;return null}function Lt(t,e){t.dispatch(Mi.SELECT_VIEW,{view:e})}function jt(t,e,n,r){void 0===r&&(r=!0),n.attributes.entity_id.forEach((function(n){if(!t.has(n)){var i=e.get(n);i&&!i.attributes.hidden&&(t.set(n,i),"group"===i.domain&&r&&jt(t,e,i,!1))}}))}function Nt(t){t.registerStores({currentView:ji})}function kt(t){return Ji[t.hassId]}function Pt(t,e){var n={pane:t};return"states"===t&&(n.view=e||null),n}function Ut(t,e){return"states"===t&&e?"/"+t+"/"+e:"/"+t}function Ht(t){var e,n;if("/"===window.location.pathname)e=t.evaluate(Vr),n=t.evaluate(Gi.currentView);else{var r=window.location.pathname.substr(1).split("/");e=r[0],n=r[1],t.batch((function(){ht(t,e),n&&Fi.selectView(t,n)}))}history.replaceState(Pt(e,n),Yi,Ut(e,n))}function xt(t,e){var n=e.state,r=n.pane,i=n.view;t.evaluate(zi.hasCurrentEntityId)?(kt(t).ignoreNextDeselectEntity=!0,Ci.deselectEntity(t)):r===t.evaluate(Vr)&&i===t.evaluate(Gi.currentView)||t.batch((function(){ht(t,r),void 0!==i&&Fi.selectView(t,i)}))}function Vt(t){if(Bi){Ht(t);var e={ignoreNextDeselectEntity:!1,popstateChangeListener:xt.bind(null,t),unwatchNavigationObserver:t.observe(Vr,(function(t){t!==history.state.pane&&history.pushState(Pt(t,history.state.view),Yi,Ut(t,history.state.view))})),unwatchViewObserver:t.observe(Gi.currentView,(function(t){t!==history.state.view&&history.pushState(Pt(history.state.pane,t),Yi,Ut(history.state.pane,t))})),unwatchMoreInfoObserver:t.observe(zi.hasCurrentEntityId,(function(t){t?history.pushState(history.state,Yi,window.location.pathname):e.ignoreNextDeselectEntity?e.ignoreNextDeselectEntity=!1:setTimeout((function(){return history.back()}),0)}))};Ji[t.hassId]=e,window.addEventListener("popstate",e.popstateChangeListener)}}function qt(t){if(Bi){var e=kt(t);e&&(e.unwatchNavigationObserver(),e.unwatchViewObserver(),e.unwatchMoreInfoObserver(),window.removeEventListener("popstate",e.popstateChangeListener),Ji[t.hassId]=!1)}}function Ft(t){t.registerStores({currentPanel:Lr,panels:kr,showSidebar:Ur})}function Gt(t){return t.dispatch(en.API_FETCH_ALL_START,{}),on(t,"GET","bootstrap").then((function(e){t.batch((function(){zn.replaceData(t,e.states),tr.replaceData(t,e.services),lr.replaceData(t,e.events),Dr.configLoaded(t,e.config),Xi.panelsLoaded(t,e.panels),t.dispatch(en.API_FETCH_ALL_SUCCESS,{})}))}),(function(e){return t.dispatch(en.API_FETCH_ALL_FAIL,{message:e}),Promise.reject(e)}))}function Kt(t){t.registerStores({isFetchingData:rn})}function Bt(t,e,n){function r(){var c=(new Date).getTime()-a;c<e&&c>0?i=setTimeout(r,e-c):(i=null,n||(s=t.apply(u,o),i||(u=o=null)))}var i,o,u,a,s;null==e&&(e=100);var c=function(){u=this,o=arguments,a=(new Date).getTime();var c=n&&!i;return i||(i=setTimeout(r,e)),c&&(s=t.apply(u,o),u=o=null),s};return c.clear=function(){i&&(clearTimeout(i),i=null)},c}function Yt(t){var e=fo[t.hassId];e&&(e.scheduleHealthCheck.clear(),e.conn.close(),fo[t.hassId]=!1)}function Jt(t,e){void 0===e&&(e={});var n=e.syncOnInitialConnect;void 0===n&&(n=!0),Yt(t);var r=t.evaluate(Mo.authToken),i="https:"===document.location.protocol?"wss://":"ws://";i+=document.location.hostname,document.location.port&&(i+=":"+document.location.port),i+="/api/websocket",E(i,{authToken:r}).then((function(e){var r=Bt((function(){return e.ping()}),so);r(),e.socket.addEventListener("message",r),fo[t.hassId]={conn:e,scheduleHealthCheck:r},co.forEach((function(n){return e.subscribeEvents(ao.bind(null,t),n)})),t.batch((function(){t.dispatch(Ye.STREAM_START),n&&io.fetchAll(t)})),e.addEventListener("disconnected",(function(){t.dispatch(Ye.STREAM_ERROR)})),e.addEventListener("ready",(function(){t.batch((function(){t.dispatch(Ye.STREAM_START),io.fetchAll(t)}))}))}))}function Wt(t){t.registerStores({streamStatus:Xe})}function Xt(t,e,n){void 0===n&&(n={});var r=n.rememberAuth;void 0===r&&(r=!1);var i=n.host;void 0===i&&(i=""),t.dispatch(Ue.VALIDATING_AUTH_TOKEN,{authToken:e,host:i}),io.fetchAll(t).then((function(){t.dispatch(Ue.VALID_AUTH_TOKEN,{authToken:e,host:i,rememberAuth:r}),vo.start(t,{syncOnInitialConnect:!1})}),(function(e){void 0===e&&(e={});var n=e.message;void 0===n&&(n=go),t.dispatch(Ue.INVALID_AUTH_TOKEN,{errorMessage:n})}))}function Qt(t){t.dispatch(Ue.LOG_OUT,{})}function Zt(t){t.registerStores({authAttempt:Ve,authCurrent:Ge,rememberAuth:Be})}function $t(){if(!("localStorage"in window))return{};var t=window.localStorage,e="___test";try{return t.setItem(e,e),t.removeItem(e),t}catch(t){return{}}}function te(){var t=new Uo({debug:!1});return t.hassId=Ho++,t}function ee(t,e,n){Object.keys(n).forEach((function(r){var i=n[r];if("register"in i&&i.register(e),"getters"in i&&Object.defineProperty(t,r+"Getters",{value:i.getters,enumerable:!0}),"actions"in i){var o={};Object.getOwnPropertyNames(i.actions).forEach((function(t){"function"==typeof i.actions[t]&&Object.defineProperty(o,t,{value:i.actions[t].bind(null,e),enumerable:!0})})),Object.defineProperty(t,r+"Actions",{value:o,enumerable:!0})}}))}function ne(t,e){return xo(t.attributes.entity_id.map((function(t){return e.get(t)})).filter((function(t){return!!t})))}function re(t){return on(t,"GET","error_log")}function ie(t,e){var n=e.date;return n.toISOString()}function oe(){return Jo.getInitialState()}function ue(t,e){var n=e.date,r=e.entries;return t.set(n,eu(r.map($o.fromJSON)))}function ae(){return nu.getInitialState()}function se(t,e){var n=e.date;return t.set(n,(new Date).getTime())}function ce(){return ou.getInitialState()}function fe(t,e){t.dispatch(Bo.LOGBOOK_DATE_SELECTED,{date:e})}function he(t,e){t.dispatch(Bo.LOGBOOK_ENTRIES_FETCH_START,{date:e}),on(t,"GET","logbook/"+e).then((function(n){return t.dispatch(Bo.LOGBOOK_ENTRIES_FETCH_SUCCESS,{date:e,entries:n})}),(function(){return t.dispatch(Bo.LOGBOOK_ENTRIES_FETCH_ERROR,{})}))}function le(t){return!t||(new Date).getTime()-t>su}function pe(t){t.registerStores({currentLogbookDate:Jo,isLoadingLogbookEntries:Xo,logbookEntries:nu,logbookEntriesUpdated:ou})}function _e(t){return t.set("active",!0)}function de(t){return t.set("active",!1)}function ve(){return Su.getInitialState()}function ye(t){return navigator.serviceWorker.getRegistration().then((function(t){if(!t)throw new Error("No service worker registered.");return t.pushManager.subscribe({userVisibleOnly:!0})})).then((function(e){var n;return n=navigator.userAgent.toLowerCase().indexOf("firefox")>-1?"firefox":"chrome",on(t,"POST","notify.html5",{subscription:e,browser:n}).then((function(){return t.dispatch(yu.PUSH_NOTIFICATIONS_SUBSCRIBE,{})})).then((function(){return!0}))})).catch((function(e){var n;return n=e.message&&e.message.indexOf("gcm_sender_id")!==-1?"Please setup the notify.html5 platform.":"Notification registration failed.",console.error(e),Vn.createNotification(t,n),!1}))}function me(t){return navigator.serviceWorker.getRegistration().then((function(t){if(!t)throw new Error("No service worker registered");return t.pushManager.subscribe({userVisibleOnly:!0})})).then((function(e){return on(t,"DELETE","notify.html5",{subscription:e}).then((function(){return e.unsubscribe()})).then((function(){return t.dispatch(yu.PUSH_NOTIFICATIONS_UNSUBSCRIBE,{})})).then((function(){return!0}))})).catch((function(e){var n="Failed unsubscribing for push notifications.";return console.error(e),Vn.createNotification(t,n),!1}))}function ge(t){t.registerStores({pushNotifications:Su})}function Se(t,e){return on(t,"POST","template",{template:e})}function be(t){return t.set("isListening",!0)}function Ee(t,e){var n=e.interimTranscript,r=e.finalTranscript;return t.withMutations((function(t){return t.set("isListening",!0).set("isTransmitting",!1).set("interimTranscript",n).set("finalTranscript",r)}))}function Ie(t,e){var n=e.finalTranscript;return t.withMutations((function(t){return t.set("isListening",!1).set("isTransmitting",!0).set("interimTranscript","").set("finalTranscript",n)}))}function Oe(){return ku.getInitialState()}function we(){return ku.getInitialState()}function Te(){return ku.getInitialState()}function Ae(t){return Pu[t.hassId]}function De(t){var e=Ae(t);if(e){var n=e.finalTranscript||e.interimTranscript;t.dispatch(Lu.VOICE_TRANSMITTING,{finalTranscript:n}),tr.callService(t,"conversation","process",{text:n}).then((function(){t.dispatch(Lu.VOICE_DONE)}),(function(){t.dispatch(Lu.VOICE_ERROR)}))}}function Ce(t){var e=Ae(t);e&&(e.recognition.stop(),Pu[t.hassId]=!1)}function ze(t){De(t),Ce(t)}function Re(t){var e=ze.bind(null,t);e();var n=new webkitSpeechRecognition;Pu[t.hassId]={recognition:n,interimTranscript:"",finalTranscript:""},n.interimResults=!0,n.onstart=function(){return t.dispatch(Lu.VOICE_START)},n.onerror=function(){return t.dispatch(Lu.VOICE_ERROR)},n.onend=e,n.onresult=function(e){var n=Ae(t);if(n){for(var r="",i="",o=e.resultIndex;o<e.results.length;o++)e.results[o].isFinal?r+=e.results[o][0].transcript:i+=e.results[o][0].transcript;n.interimTranscript=i,n.finalTranscript+=r,t.dispatch(Lu.VOICE_RESULT,{interimTranscript:i,finalTranscript:n.finalTranscript})}},n.start()}function Me(t){t.registerStores({currentVoiceCommand:ku,isVoiceSupported:Mu})}var Le="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},je=e((function(t,e){!(function(n,r){"object"==typeof e&&"object"==typeof t?t.exports=r():"function"==typeof define&&define.amd?define([],r):"object"==typeof e?e.Nuclear=r():n.Nuclear=r()})(Le,(function(){return (function(t){function e(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,loaded:!1};return t[r].call(i.exports,i,i.exports,e),i.loaded=!0,i.exports}var n={};return e.m=t,e.c=n,e.p="",e(0)})([function(t,e,n){function r(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0}),n(1);var i=n(2),o=r(i),u=n(6),a=r(u),s=n(3),c=r(s),f=n(5),h=n(11),l=n(10),p=n(7),_=r(p);e.default={Reactor:a.default,Store:o.default,Immutable:c.default,isKeyPath:h.isKeyPath,isGetter:l.isGetter,toJS:f.toJS,toImmutable:f.toImmutable,isImmutable:f.isImmutable,createReactMixin:_.default},t.exports=e.default},function(t,e){try{window.console&&console.log||(console={log:function(){},debug:function(){},info:function(){},warn:function(){},error:function(){}})}catch(t){}},function(t,e,n){function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t){return t instanceof c}Object.defineProperty(e,"__esModule",{value:!0});var o=(function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}})();e.isStore=i;var u=n(3),a=n(4),s=n(5),c=(function(){function t(e){r(this,t),this.__handlers=(0,u.Map)({}),e&&(0,a.extend)(this,e),this.initialize()}return o(t,[{key:"initialize",value:function(){}},{key:"getInitialState",value:function(){return(0,u.Map)()}},{key:"handle",value:function(t,e,n){var r=this.__handlers.get(e);return"function"==typeof r?r.call(this,t,n,e):t}},{key:"handleReset",value:function(t){return this.getInitialState()}},{key:"on",value:function(t,e){this.__handlers=this.__handlers.set(t,e)}},{key:"serialize",value:function(t){return(0,s.toJS)(t)}},{key:"deserialize",value:function(t){return(0,s.toImmutable)(t)}}]),t})();e.default=(0,a.toFactory)(c)},function(t,e,n){!(function(e,n){t.exports=n()})(this,(function(){function t(t,e){e&&(t.prototype=Object.create(e.prototype)),t.prototype.constructor=t}function e(t){return t.value=!1,t}function n(t){t&&(t.value=!0)}function r(){}function i(t,e){e=e||0;for(var n=Math.max(0,t.length-e),r=new Array(n),i=0;i<n;i++)r[i]=t[i+e];return r}function o(t){return void 0===t.size&&(t.size=t.__iterate(a)),t.size}function u(t,e){if("number"!=typeof e){var n=+e;if(""+n!==e)return NaN;e=n}return e<0?o(t)+e:e}function a(){return!0}function s(t,e,n){return(0===t||void 0!==n&&t<=-n)&&(void 0===e||void 0!==n&&e>=n)}function c(t,e){return h(t,e,0)}function f(t,e){return h(t,e,e)}function h(t,e,n){return void 0===t?n:t<0?Math.max(0,e+t):void 0===e?t:Math.min(e,t)}function l(t){return v(t)?t:C(t)}function p(t){return y(t)?t:z(t)}function _(t){return m(t)?t:R(t)}function d(t){return v(t)&&!g(t)?t:M(t)}function v(t){return!(!t||!t[dn])}function y(t){return!(!t||!t[vn])}function m(t){return!(!t||!t[yn])}function g(t){return y(t)||m(t)}function S(t){return!(!t||!t[mn])}function b(t){this.next=t}function E(t,e,n,r){var i=0===t?e:1===t?n:[e,n];return r?r.value=i:r={value:i,done:!1},r}function I(){return{value:void 0,done:!0}}function O(t){return!!A(t)}function w(t){return t&&"function"==typeof t.next}function T(t){var e=A(t);return e&&e.call(t)}function A(t){var e=t&&(En&&t[En]||t[In]);if("function"==typeof e)return e}function D(t){return t&&"number"==typeof t.length}function C(t){return null===t||void 0===t?U():v(t)?t.toSeq():V(t)}function z(t){return null===t||void 0===t?U().toKeyedSeq():v(t)?y(t)?t.toSeq():t.fromEntrySeq():H(t)}function R(t){return null===t||void 0===t?U():v(t)?y(t)?t.entrySeq():t.toIndexedSeq():x(t)}function M(t){return(null===t||void 0===t?U():v(t)?y(t)?t.entrySeq():t:x(t)).toSetSeq()}function L(t){this._array=t,this.size=t.length}function j(t){var e=Object.keys(t);this._object=t,this._keys=e,this.size=e.length}function N(t){this._iterable=t,this.size=t.length||t.size}function k(t){this._iterator=t,this._iteratorCache=[]}function P(t){return!(!t||!t[wn])}function U(){return Tn||(Tn=new L([]))}function H(t){var e=Array.isArray(t)?new L(t).fromEntrySeq():w(t)?new k(t).fromEntrySeq():O(t)?new N(t).fromEntrySeq():"object"==typeof t?new j(t):void 0;if(!e)throw new TypeError("Expected Array or iterable object of [k, v] entries, or keyed object: "+t);return e}function x(t){var e=q(t);if(!e)throw new TypeError("Expected Array or iterable object of values: "+t);return e}function V(t){var e=q(t)||"object"==typeof t&&new j(t);if(!e)throw new TypeError("Expected Array or iterable object of values, or keyed object: "+t);return e}function q(t){return D(t)?new L(t):w(t)?new k(t):O(t)?new N(t):void 0}function F(t,e,n,r){var i=t._cache;if(i){for(var o=i.length-1,u=0;u<=o;u++){var a=i[n?o-u:u];if(e(a[1],r?a[0]:u,t)===!1)return u+1}return u}return t.__iterateUncached(e,n)}function G(t,e,n,r){var i=t._cache;if(i){var o=i.length-1,u=0;return new b(function(){var t=i[n?o-u:u];return u++>o?I():E(e,r?t[0]:u-1,t[1])})}return t.__iteratorUncached(e,n)}function K(){throw TypeError("Abstract")}function B(){}function Y(){}function J(){}function W(t,e){if(t===e||t!==t&&e!==e)return!0;if(!t||!e)return!1;if("function"==typeof t.valueOf&&"function"==typeof e.valueOf){if(t=t.valueOf(),e=e.valueOf(),t===e||t!==t&&e!==e)return!0;if(!t||!e)return!1}return!("function"!=typeof t.equals||"function"!=typeof e.equals||!t.equals(e))}function X(t,e){return e?Q(e,t,"",{"":t}):Z(t)}function Q(t,e,n,r){return Array.isArray(e)?t.call(r,n,R(e).map((function(n,r){return Q(t,n,r,e)}))):$(e)?t.call(r,n,z(e).map((function(n,r){return Q(t,n,r,e)}))):e}function Z(t){return Array.isArray(t)?R(t).map(Z).toList():$(t)?z(t).map(Z).toMap():t}function $(t){return t&&(t.constructor===Object||void 0===t.constructor)}function tt(t){return t>>>1&1073741824|3221225471&t}function et(t){if(t===!1||null===t||void 0===t)return 0;if("function"==typeof t.valueOf&&(t=t.valueOf(),t===!1||null===t||void 0===t))return 0;if(t===!0)return 1;var e=typeof t;if("number"===e){var n=0|t;for(n!==t&&(n^=4294967295*t);t>4294967295;)t/=4294967295,n^=t;return tt(n)}return"string"===e?t.length>jn?nt(t):rt(t):"function"==typeof t.hashCode?t.hashCode():it(t)}function nt(t){var e=Pn[t];return void 0===e&&(e=rt(t),kn===Nn&&(kn=0,Pn={}),kn++,Pn[t]=e),e}function rt(t){for(var e=0,n=0;n<t.length;n++)e=31*e+t.charCodeAt(n)|0;return tt(e)}function it(t){var e;if(Rn&&(e=An.get(t),void 0!==e))return e;if(e=t[Ln],void 0!==e)return e;if(!zn){if(e=t.propertyIsEnumerable&&t.propertyIsEnumerable[Ln],void 0!==e)return e;if(e=ot(t),void 0!==e)return e}if(e=++Mn,1073741824&Mn&&(Mn=0),Rn)An.set(t,e);else{if(void 0!==Cn&&Cn(t)===!1)throw new Error("Non-extensible objects are not allowed as keys.");if(zn)Object.defineProperty(t,Ln,{enumerable:!1,configurable:!1,writable:!1,value:e});else if(void 0!==t.propertyIsEnumerable&&t.propertyIsEnumerable===t.constructor.prototype.propertyIsEnumerable)t.propertyIsEnumerable=function(){return this.constructor.prototype.propertyIsEnumerable.apply(this,arguments)},t.propertyIsEnumerable[Ln]=e;else{if(void 0===t.nodeType)throw new Error("Unable to set a non-enumerable property on object.");t[Ln]=e}}return e}function ot(t){if(t&&t.nodeType>0)switch(t.nodeType){case 1:return t.uniqueID;case 9:return t.documentElement&&t.documentElement.uniqueID}}function ut(t,e){if(!t)throw new Error(e)}function at(t){ut(t!==1/0,"Cannot perform this action with an infinite size.")}function st(t,e){this._iter=t,this._useKeys=e,this.size=t.size}function ct(t){this._iter=t,this.size=t.size}function ft(t){this._iter=t,this.size=t.size}function ht(t){this._iter=t,this.size=t.size}function lt(t){var e=Lt(t);return e._iter=t,e.size=t.size,e.flip=function(){return t},e.reverse=function(){var e=t.reverse.apply(this);return e.flip=function(){return t.reverse()},e},e.has=function(e){return t.includes(e)},e.includes=function(e){return t.has(e)},e.cacheResult=jt,e.__iterateUncached=function(e,n){var r=this;return t.__iterate((function(t,n){return e(n,t,r)!==!1}),n)},e.__iteratorUncached=function(e,n){if(e===bn){var r=t.__iterator(e,n);return new b(function(){var t=r.next();if(!t.done){var e=t.value[0];t.value[0]=t.value[1],t.value[1]=e}return t})}return t.__iterator(e===Sn?gn:Sn,n)},e}function pt(t,e,n){var r=Lt(t);return r.size=t.size,r.has=function(e){return t.has(e)},r.get=function(r,i){var o=t.get(r,ln);return o===ln?i:e.call(n,o,r,t)},r.__iterateUncached=function(r,i){var o=this;return t.__iterate((function(t,i,u){return r(e.call(n,t,i,u),i,o)!==!1}),i)},r.__iteratorUncached=function(r,i){var o=t.__iterator(bn,i);return new b(function(){var i=o.next();if(i.done)return i;var u=i.value,a=u[0];return E(r,a,e.call(n,u[1],a,t),i)})},r}function _t(t,e){var n=Lt(t);return n._iter=t,n.size=t.size,n.reverse=function(){return t},t.flip&&(n.flip=function(){var e=lt(t);return e.reverse=function(){return t.flip()},e}),n.get=function(n,r){return t.get(e?n:-1-n,r)},n.has=function(n){return t.has(e?n:-1-n)},n.includes=function(e){return t.includes(e)},n.cacheResult=jt,n.__iterate=function(e,n){var r=this;return t.__iterate((function(t,n){return e(t,n,r)}),!n)},n.__iterator=function(e,n){return t.__iterator(e,!n)},n}function dt(t,e,n,r){var i=Lt(t);return r&&(i.has=function(r){var i=t.get(r,ln);return i!==ln&&!!e.call(n,i,r,t)},i.get=function(r,i){var o=t.get(r,ln);return o!==ln&&e.call(n,o,r,t)?o:i}),i.__iterateUncached=function(i,o){var u=this,a=0;return t.__iterate((function(t,o,s){if(e.call(n,t,o,s))return a++,i(t,r?o:a-1,u)}),o),a},i.__iteratorUncached=function(i,o){var u=t.__iterator(bn,o),a=0;return new b(function(){for(;;){var o=u.next();if(o.done)return o;var s=o.value,c=s[0],f=s[1];if(e.call(n,f,c,t))return E(i,r?c:a++,f,o)}})},i}function vt(t,e,n){var r=Pt().asMutable();return t.__iterate((function(i,o){r.update(e.call(n,i,o,t),0,(function(t){return t+1}))})),r.asImmutable()}function yt(t,e,n){var r=y(t),i=(S(t)?Ie():Pt()).asMutable();t.__iterate((function(o,u){i.update(e.call(n,o,u,t),(function(t){return t=t||[],t.push(r?[u,o]:o),t}))}));var o=Mt(t);return i.map((function(e){return Ct(t,o(e))}))}function mt(t,e,n,r){var i=t.size;if(void 0!==e&&(e|=0),void 0!==n&&(n|=0),s(e,n,i))return t;var o=c(e,i),a=f(n,i);if(o!==o||a!==a)return mt(t.toSeq().cacheResult(),e,n,r);var h,l=a-o;l===l&&(h=l<0?0:l);var p=Lt(t);return p.size=0===h?h:t.size&&h||void 0,!r&&P(t)&&h>=0&&(p.get=function(e,n){return e=u(this,e),e>=0&&e<h?t.get(e+o,n):n}),p.__iterateUncached=function(e,n){var i=this;if(0===h)return 0;if(n)return this.cacheResult().__iterate(e,n);var u=0,a=!0,s=0;return t.__iterate((function(t,n){if(!a||!(a=u++<o))return s++,e(t,r?n:s-1,i)!==!1&&s!==h})),s},p.__iteratorUncached=function(e,n){if(0!==h&&n)return this.cacheResult().__iterator(e,n);var i=0!==h&&t.__iterator(e,n),u=0,a=0;return new b(function(){for(;u++<o;)i.next();if(++a>h)return I();var t=i.next();return r||e===Sn?t:e===gn?E(e,a-1,void 0,t):E(e,a-1,t.value[1],t)})},p}function gt(t,e,n){var r=Lt(t);return r.__iterateUncached=function(r,i){var o=this;if(i)return this.cacheResult().__iterate(r,i);var u=0;return t.__iterate((function(t,i,a){return e.call(n,t,i,a)&&++u&&r(t,i,o)})),u},r.__iteratorUncached=function(r,i){var o=this;if(i)return this.cacheResult().__iterator(r,i);var u=t.__iterator(bn,i),a=!0;return new b(function(){if(!a)return I();var t=u.next();if(t.done)return t;var i=t.value,s=i[0],c=i[1];return e.call(n,c,s,o)?r===bn?t:E(r,s,c,t):(a=!1,I())})},r}function St(t,e,n,r){var i=Lt(t);return i.__iterateUncached=function(i,o){var u=this;if(o)return this.cacheResult().__iterate(i,o);var a=!0,s=0;return t.__iterate((function(t,o,c){if(!a||!(a=e.call(n,t,o,c)))return s++,i(t,r?o:s-1,u)})),s},i.__iteratorUncached=function(i,o){var u=this;if(o)return this.cacheResult().__iterator(i,o);var a=t.__iterator(bn,o),s=!0,c=0;return new b(function(){var t,o,f;do{if(t=a.next(),t.done)return r||i===Sn?t:i===gn?E(i,c++,void 0,t):E(i,c++,t.value[1],t);var h=t.value;o=h[0],f=h[1],s&&(s=e.call(n,f,o,u))}while(s);return i===bn?t:E(i,o,f,t)})},i}function bt(t,e){var n=y(t),r=[t].concat(e).map((function(t){return v(t)?n&&(t=p(t)):t=n?H(t):x(Array.isArray(t)?t:[t]),t})).filter((function(t){return 0!==t.size}));if(0===r.length)return t;if(1===r.length){var i=r[0];if(i===t||n&&y(i)||m(t)&&m(i))return i}var o=new L(r);return n?o=o.toKeyedSeq():m(t)||(o=o.toSetSeq()),o=o.flatten(!0),o.size=r.reduce((function(t,e){if(void 0!==t){var n=e.size;if(void 0!==n)return t+n}}),0),o}function Et(t,e,n){var r=Lt(t);return r.__iterateUncached=function(r,i){function o(t,s){var c=this;t.__iterate((function(t,i){return(!e||s<e)&&v(t)?o(t,s+1):r(t,n?i:u++,c)===!1&&(a=!0),!a}),i)}var u=0,a=!1;return o(t,0),u},r.__iteratorUncached=function(r,i){var o=t.__iterator(r,i),u=[],a=0;return new b(function(){for(;o;){var t=o.next();if(t.done===!1){var s=t.value;if(r===bn&&(s=s[1]),e&&!(u.length<e)||!v(s))return n?t:E(r,a++,s,t);u.push(o),o=s.__iterator(r,i)}else o=u.pop()}return I()})},r}function It(t,e,n){var r=Mt(t);return t.toSeq().map((function(i,o){return r(e.call(n,i,o,t))})).flatten(!0)}function Ot(t,e){var n=Lt(t);return n.size=t.size&&2*t.size-1,n.__iterateUncached=function(n,r){var i=this,o=0;return t.__iterate((function(t,r){return(!o||n(e,o++,i)!==!1)&&n(t,o++,i)!==!1}),r),o},n.__iteratorUncached=function(n,r){var i,o=t.__iterator(Sn,r),u=0;return new b(function(){return(!i||u%2)&&(i=o.next(),i.done)?i:u%2?E(n,u++,e):E(n,u++,i.value,i)})},n}function wt(t,e,n){e||(e=Nt);var r=y(t),i=0,o=t.toSeq().map((function(e,r){return[r,e,i++,n?n(e,r,t):e]})).toArray();return o.sort((function(t,n){return e(t[3],n[3])||t[2]-n[2]})).forEach(r?function(t,e){o[e].length=2}:function(t,e){o[e]=t[1]}),r?z(o):m(t)?R(o):M(o)}function Tt(t,e,n){if(e||(e=Nt),n){var r=t.toSeq().map((function(e,r){return[e,n(e,r,t)]})).reduce((function(t,n){return At(e,t[1],n[1])?n:t}));return r&&r[0]}return t.reduce((function(t,n){return At(e,t,n)?n:t}))}function At(t,e,n){var r=t(n,e);return 0===r&&n!==e&&(void 0===n||null===n||n!==n)||r>0}function Dt(t,e,n){var r=Lt(t);return r.size=new L(n).map((function(t){return t.size})).min(),r.__iterate=function(t,e){for(var n,r=this,i=this.__iterator(Sn,e),o=0;!(n=i.next()).done&&t(n.value,o++,r)!==!1;);return o},r.__iteratorUncached=function(t,r){var i=n.map((function(t){return t=l(t),T(r?t.reverse():t)})),o=0,u=!1; -return new b(function(){var n;return u||(n=i.map((function(t){return t.next()})),u=n.some((function(t){return t.done}))),u?I():E(t,o++,e.apply(null,n.map((function(t){return t.value}))))})},r}function Ct(t,e){return P(t)?e:t.constructor(e)}function zt(t){if(t!==Object(t))throw new TypeError("Expected [K, V] tuple: "+t)}function Rt(t){return at(t.size),o(t)}function Mt(t){return y(t)?p:m(t)?_:d}function Lt(t){return Object.create((y(t)?z:m(t)?R:M).prototype)}function jt(){return this._iter.cacheResult?(this._iter.cacheResult(),this.size=this._iter.size,this):C.prototype.cacheResult.call(this)}function Nt(t,e){return t>e?1:t<e?-1:0}function kt(t){var e=T(t);if(!e){if(!D(t))throw new TypeError("Expected iterable or array-like: "+t);e=T(l(t))}return e}function Pt(t){return null===t||void 0===t?Jt():Ut(t)&&!S(t)?t:Jt().withMutations((function(e){var n=p(t);at(n.size),n.forEach((function(t,n){return e.set(n,t)}))}))}function Ut(t){return!(!t||!t[Un])}function Ht(t,e){this.ownerID=t,this.entries=e}function xt(t,e,n){this.ownerID=t,this.bitmap=e,this.nodes=n}function Vt(t,e,n){this.ownerID=t,this.count=e,this.nodes=n}function qt(t,e,n){this.ownerID=t,this.keyHash=e,this.entries=n}function Ft(t,e,n){this.ownerID=t,this.keyHash=e,this.entry=n}function Gt(t,e,n){this._type=e,this._reverse=n,this._stack=t._root&&Bt(t._root)}function Kt(t,e){return E(t,e[0],e[1])}function Bt(t,e){return{node:t,index:0,__prev:e}}function Yt(t,e,n,r){var i=Object.create(Hn);return i.size=t,i._root=e,i.__ownerID=n,i.__hash=r,i.__altered=!1,i}function Jt(){return xn||(xn=Yt(0))}function Wt(t,n,r){var i,o;if(t._root){var u=e(pn),a=e(_n);if(i=Xt(t._root,t.__ownerID,0,void 0,n,r,u,a),!a.value)return t;o=t.size+(u.value?r===ln?-1:1:0)}else{if(r===ln)return t;o=1,i=new Ht(t.__ownerID,[[n,r]])}return t.__ownerID?(t.size=o,t._root=i,t.__hash=void 0,t.__altered=!0,t):i?Yt(o,i):Jt()}function Xt(t,e,r,i,o,u,a,s){return t?t.update(e,r,i,o,u,a,s):u===ln?t:(n(s),n(a),new Ft(e,i,[o,u]))}function Qt(t){return t.constructor===Ft||t.constructor===qt}function Zt(t,e,n,r,i){if(t.keyHash===r)return new qt(e,r,[t.entry,i]);var o,u=(0===n?t.keyHash:t.keyHash>>>n)&hn,a=(0===n?r:r>>>n)&hn,s=u===a?[Zt(t,e,n+cn,r,i)]:(o=new Ft(e,r,i),u<a?[t,o]:[o,t]);return new xt(e,1<<u|1<<a,s)}function $t(t,e,n,i){t||(t=new r);for(var o=new Ft(t,et(n),[n,i]),u=0;u<e.length;u++){var a=e[u];o=o.update(t,0,void 0,a[0],a[1])}return o}function te(t,e,n,r){for(var i=0,o=0,u=new Array(n),a=0,s=1,c=e.length;a<c;a++,s<<=1){var f=e[a];void 0!==f&&a!==r&&(i|=s,u[o++]=f)}return new xt(t,i,u)}function ee(t,e,n,r,i){for(var o=0,u=new Array(fn),a=0;0!==n;a++,n>>>=1)u[a]=1&n?e[o++]:void 0;return u[r]=i,new Vt(t,o+1,u)}function ne(t,e,n){for(var r=[],i=0;i<n.length;i++){var o=n[i],u=p(o);v(o)||(u=u.map((function(t){return X(t)}))),r.push(u)}return ie(t,e,r)}function re(t){return function(e,n,r){return e&&e.mergeDeepWith&&v(n)?e.mergeDeepWith(t,n):t?t(e,n,r):n}}function ie(t,e,n){return n=n.filter((function(t){return 0!==t.size})),0===n.length?t:0!==t.size||t.__ownerID||1!==n.length?t.withMutations((function(t){for(var r=e?function(n,r){t.update(r,ln,(function(t){return t===ln?n:e(t,n,r)}))}:function(e,n){t.set(n,e)},i=0;i<n.length;i++)n[i].forEach(r)})):t.constructor(n[0])}function oe(t,e,n,r){var i=t===ln,o=e.next();if(o.done){var u=i?n:t,a=r(u);return a===u?t:a}ut(i||t&&t.set,"invalid keyPath");var s=o.value,c=i?ln:t.get(s,ln),f=oe(c,e,n,r);return f===c?t:f===ln?t.remove(s):(i?Jt():t).set(s,f)}function ue(t){return t-=t>>1&1431655765,t=(858993459&t)+(t>>2&858993459),t=t+(t>>4)&252645135,t+=t>>8,t+=t>>16,127&t}function ae(t,e,n,r){var o=r?t:i(t);return o[e]=n,o}function se(t,e,n,r){var i=t.length+1;if(r&&e+1===i)return t[e]=n,t;for(var o=new Array(i),u=0,a=0;a<i;a++)a===e?(o[a]=n,u=-1):o[a]=t[a+u];return o}function ce(t,e,n){var r=t.length-1;if(n&&e===r)return t.pop(),t;for(var i=new Array(r),o=0,u=0;u<r;u++)u===e&&(o=1),i[u]=t[u+o];return i}function fe(t){var e=de();if(null===t||void 0===t)return e;if(he(t))return t;var n=_(t),r=n.size;return 0===r?e:(at(r),r>0&&r<fn?_e(0,r,cn,null,new le(n.toArray())):e.withMutations((function(t){t.setSize(r),n.forEach((function(e,n){return t.set(n,e)}))})))}function he(t){return!(!t||!t[Gn])}function le(t,e){this.array=t,this.ownerID=e}function pe(t,e){function n(t,e,n){return 0===e?r(t,n):i(t,e,n)}function r(t,n){var r=n===a?s&&s.array:t&&t.array,i=n>o?0:o-n,c=u-n;return c>fn&&(c=fn),function(){if(i===c)return Yn;var t=e?--c:i++;return r&&r[t]}}function i(t,r,i){var a,s=t&&t.array,c=i>o?0:o-i>>r,f=(u-i>>r)+1;return f>fn&&(f=fn),function(){for(;;){if(a){var t=a();if(t!==Yn)return t;a=null}if(c===f)return Yn;var o=e?--f:c++;a=n(s&&s[o],r-cn,i+(o<<r))}}}var o=t._origin,u=t._capacity,a=Ee(u),s=t._tail;return n(t._root,t._level,0)}function _e(t,e,n,r,i,o,u){var a=Object.create(Kn);return a.size=e-t,a._origin=t,a._capacity=e,a._level=n,a._root=r,a._tail=i,a.__ownerID=o,a.__hash=u,a.__altered=!1,a}function de(){return Bn||(Bn=_e(0,0,cn))}function ve(t,n,r){if(n=u(t,n),n!==n)return t;if(n>=t.size||n<0)return t.withMutations((function(t){n<0?Se(t,n).set(0,r):Se(t,0,n+1).set(n,r)}));n+=t._origin;var i=t._tail,o=t._root,a=e(_n);return n>=Ee(t._capacity)?i=ye(i,t.__ownerID,0,n,r,a):o=ye(o,t.__ownerID,t._level,n,r,a),a.value?t.__ownerID?(t._root=o,t._tail=i,t.__hash=void 0,t.__altered=!0,t):_e(t._origin,t._capacity,t._level,o,i):t}function ye(t,e,r,i,o,u){var a=i>>>r&hn,s=t&&a<t.array.length;if(!s&&void 0===o)return t;var c;if(r>0){var f=t&&t.array[a],h=ye(f,e,r-cn,i,o,u);return h===f?t:(c=me(t,e),c.array[a]=h,c)}return s&&t.array[a]===o?t:(n(u),c=me(t,e),void 0===o&&a===c.array.length-1?c.array.pop():c.array[a]=o,c)}function me(t,e){return e&&t&&e===t.ownerID?t:new le(t?t.array.slice():[],e)}function ge(t,e){if(e>=Ee(t._capacity))return t._tail;if(e<1<<t._level+cn){for(var n=t._root,r=t._level;n&&r>0;)n=n.array[e>>>r&hn],r-=cn;return n}}function Se(t,e,n){void 0!==e&&(e|=0),void 0!==n&&(n|=0);var i=t.__ownerID||new r,o=t._origin,u=t._capacity,a=o+e,s=void 0===n?u:n<0?u+n:o+n;if(a===o&&s===u)return t;if(a>=s)return t.clear();for(var c=t._level,f=t._root,h=0;a+h<0;)f=new le(f&&f.array.length?[void 0,f]:[],i),c+=cn,h+=1<<c;h&&(a+=h,o+=h,s+=h,u+=h);for(var l=Ee(u),p=Ee(s);p>=1<<c+cn;)f=new le(f&&f.array.length?[f]:[],i),c+=cn;var _=t._tail,d=p<l?ge(t,s-1):p>l?new le([],i):_;if(_&&p>l&&a<u&&_.array.length){f=me(f,i);for(var v=f,y=c;y>cn;y-=cn){var m=l>>>y&hn;v=v.array[m]=me(v.array[m],i)}v.array[l>>>cn&hn]=_}if(s<u&&(d=d&&d.removeAfter(i,0,s)),a>=p)a-=p,s-=p,c=cn,f=null,d=d&&d.removeBefore(i,0,a);else if(a>o||p<l){for(h=0;f;){var g=a>>>c&hn;if(g!==p>>>c&hn)break;g&&(h+=(1<<c)*g),c-=cn,f=f.array[g]}f&&a>o&&(f=f.removeBefore(i,c,a-h)),f&&p<l&&(f=f.removeAfter(i,c,p-h)),h&&(a-=h,s-=h)}return t.__ownerID?(t.size=s-a,t._origin=a,t._capacity=s,t._level=c,t._root=f,t._tail=d,t.__hash=void 0,t.__altered=!0,t):_e(a,s,c,f,d)}function be(t,e,n){for(var r=[],i=0,o=0;o<n.length;o++){var u=n[o],a=_(u);a.size>i&&(i=a.size),v(u)||(a=a.map((function(t){return X(t)}))),r.push(a)}return i>t.size&&(t=t.setSize(i)),ie(t,e,r)}function Ee(t){return t<fn?0:t-1>>>cn<<cn}function Ie(t){return null===t||void 0===t?Te():Oe(t)?t:Te().withMutations((function(e){var n=p(t);at(n.size),n.forEach((function(t,n){return e.set(n,t)}))}))}function Oe(t){return Ut(t)&&S(t)}function we(t,e,n,r){var i=Object.create(Ie.prototype);return i.size=t?t.size:0,i._map=t,i._list=e,i.__ownerID=n,i.__hash=r,i}function Te(){return Jn||(Jn=we(Jt(),de()))}function Ae(t,e,n){var r,i,o=t._map,u=t._list,a=o.get(e),s=void 0!==a;if(n===ln){if(!s)return t;u.size>=fn&&u.size>=2*o.size?(i=u.filter((function(t,e){return void 0!==t&&a!==e})),r=i.toKeyedSeq().map((function(t){return t[0]})).flip().toMap(),t.__ownerID&&(r.__ownerID=i.__ownerID=t.__ownerID)):(r=o.remove(e),i=a===u.size-1?u.pop():u.set(a,void 0))}else if(s){if(n===u.get(a)[1])return t;r=o,i=u.set(a,[e,n])}else r=o.set(e,u.size),i=u.set(u.size,[e,n]);return t.__ownerID?(t.size=r.size,t._map=r,t._list=i,t.__hash=void 0,t):we(r,i)}function De(t){return null===t||void 0===t?Re():Ce(t)?t:Re().unshiftAll(t)}function Ce(t){return!(!t||!t[Wn])}function ze(t,e,n,r){var i=Object.create(Xn);return i.size=t,i._head=e,i.__ownerID=n,i.__hash=r,i.__altered=!1,i}function Re(){return Qn||(Qn=ze(0))}function Me(t){return null===t||void 0===t?ke():Le(t)&&!S(t)?t:ke().withMutations((function(e){var n=d(t);at(n.size),n.forEach((function(t){return e.add(t)}))}))}function Le(t){return!(!t||!t[Zn])}function je(t,e){return t.__ownerID?(t.size=e.size,t._map=e,t):e===t._map?t:0===e.size?t.__empty():t.__make(e)}function Ne(t,e){var n=Object.create($n);return n.size=t?t.size:0,n._map=t,n.__ownerID=e,n}function ke(){return tr||(tr=Ne(Jt()))}function Pe(t){return null===t||void 0===t?xe():Ue(t)?t:xe().withMutations((function(e){var n=d(t);at(n.size),n.forEach((function(t){return e.add(t)}))}))}function Ue(t){return Le(t)&&S(t)}function He(t,e){var n=Object.create(er);return n.size=t?t.size:0,n._map=t,n.__ownerID=e,n}function xe(){return nr||(nr=He(Te()))}function Ve(t,e){var n,r=function(o){if(o instanceof r)return o;if(!(this instanceof r))return new r(o);if(!n){n=!0;var u=Object.keys(t);Ge(i,u),i.size=u.length,i._name=e,i._keys=u,i._defaultValues=t}this._map=Pt(o)},i=r.prototype=Object.create(rr);return i.constructor=r,r}function qe(t,e,n){var r=Object.create(Object.getPrototypeOf(t));return r._map=e,r.__ownerID=n,r}function Fe(t){return t._name||t.constructor.name||"Record"}function Ge(t,e){try{e.forEach(Ke.bind(void 0,t))}catch(t){}}function Ke(t,e){Object.defineProperty(t,e,{get:function(){return this.get(e)},set:function(t){ut(this.__ownerID,"Cannot set on an immutable record."),this.set(e,t)}})}function Be(t,e){if(t===e)return!0;if(!v(e)||void 0!==t.size&&void 0!==e.size&&t.size!==e.size||void 0!==t.__hash&&void 0!==e.__hash&&t.__hash!==e.__hash||y(t)!==y(e)||m(t)!==m(e)||S(t)!==S(e))return!1;if(0===t.size&&0===e.size)return!0;var n=!g(t);if(S(t)){var r=t.entries();return e.every((function(t,e){var i=r.next().value;return i&&W(i[1],t)&&(n||W(i[0],e))}))&&r.next().done}var i=!1;if(void 0===t.size)if(void 0===e.size)"function"==typeof t.cacheResult&&t.cacheResult();else{i=!0;var o=t;t=e,e=o}var u=!0,a=e.__iterate((function(e,r){if(n?!t.has(e):i?!W(e,t.get(r,ln)):!W(t.get(r,ln),e))return u=!1,!1}));return u&&t.size===a}function Ye(t,e,n){if(!(this instanceof Ye))return new Ye(t,e,n);if(ut(0!==n,"Cannot step a Range by 0"),t=t||0,void 0===e&&(e=1/0),n=void 0===n?1:Math.abs(n),e<t&&(n=-n),this._start=t,this._end=e,this._step=n,this.size=Math.max(0,Math.ceil((e-t)/n-1)+1),0===this.size){if(ir)return ir;ir=this}}function Je(t,e){if(!(this instanceof Je))return new Je(t,e);if(this._value=t,this.size=void 0===e?1/0:Math.max(0,e),0===this.size){if(or)return or;or=this}}function We(t,e){var n=function(n){t.prototype[n]=e[n]};return Object.keys(e).forEach(n),Object.getOwnPropertySymbols&&Object.getOwnPropertySymbols(e).forEach(n),t}function Xe(t,e){return e}function Qe(t,e){return[e,t]}function Ze(t){return function(){return!t.apply(this,arguments)}}function $e(t){return function(){return-t.apply(this,arguments)}}function tn(t){return"string"==typeof t?JSON.stringify(t):t}function en(){return i(arguments)}function nn(t,e){return t<e?1:t>e?-1:0}function rn(t){if(t.size===1/0)return 0;var e=S(t),n=y(t),r=e?1:0,i=t.__iterate(n?e?function(t,e){r=31*r+un(et(t),et(e))|0}:function(t,e){r=r+un(et(t),et(e))|0}:e?function(t){r=31*r+et(t)|0}:function(t){r=r+et(t)|0});return on(i,r)}function on(t,e){return e=Dn(e,3432918353),e=Dn(e<<15|e>>>-15,461845907),e=Dn(e<<13|e>>>-13,5),e=(e+3864292196|0)^t,e=Dn(e^e>>>16,2246822507),e=Dn(e^e>>>13,3266489909),e=tt(e^e>>>16)}function un(t,e){return t^e+2654435769+(t<<6)+(t>>2)|0}var an=Array.prototype.slice,sn="delete",cn=5,fn=1<<cn,hn=fn-1,ln={},pn={value:!1},_n={value:!1};t(p,l),t(_,l),t(d,l),l.isIterable=v,l.isKeyed=y,l.isIndexed=m,l.isAssociative=g,l.isOrdered=S,l.Keyed=p,l.Indexed=_,l.Set=d;var dn="@@__IMMUTABLE_ITERABLE__@@",vn="@@__IMMUTABLE_KEYED__@@",yn="@@__IMMUTABLE_INDEXED__@@",mn="@@__IMMUTABLE_ORDERED__@@",gn=0,Sn=1,bn=2,En="function"==typeof Symbol&&Symbol.iterator,In="@@iterator",On=En||In;b.prototype.toString=function(){return"[Iterator]"},b.KEYS=gn,b.VALUES=Sn,b.ENTRIES=bn,b.prototype.inspect=b.prototype.toSource=function(){return this.toString()},b.prototype[On]=function(){return this},t(C,l),C.of=function(){return C(arguments)},C.prototype.toSeq=function(){return this},C.prototype.toString=function(){return this.__toString("Seq {","}")},C.prototype.cacheResult=function(){return!this._cache&&this.__iterateUncached&&(this._cache=this.entrySeq().toArray(),this.size=this._cache.length),this},C.prototype.__iterate=function(t,e){return F(this,t,e,!0)},C.prototype.__iterator=function(t,e){return G(this,t,e,!0)},t(z,C),z.prototype.toKeyedSeq=function(){return this},t(R,C),R.of=function(){return R(arguments)},R.prototype.toIndexedSeq=function(){return this},R.prototype.toString=function(){return this.__toString("Seq [","]")},R.prototype.__iterate=function(t,e){return F(this,t,e,!1)},R.prototype.__iterator=function(t,e){return G(this,t,e,!1)},t(M,C),M.of=function(){return M(arguments)},M.prototype.toSetSeq=function(){return this},C.isSeq=P,C.Keyed=z,C.Set=M,C.Indexed=R;var wn="@@__IMMUTABLE_SEQ__@@";C.prototype[wn]=!0,t(L,R),L.prototype.get=function(t,e){return this.has(t)?this._array[u(this,t)]:e},L.prototype.__iterate=function(t,e){for(var n=this,r=this._array,i=r.length-1,o=0;o<=i;o++)if(t(r[e?i-o:o],o,n)===!1)return o+1;return o},L.prototype.__iterator=function(t,e){var n=this._array,r=n.length-1,i=0;return new b(function(){return i>r?I():E(t,i,n[e?r-i++:i++])})},t(j,z),j.prototype.get=function(t,e){return void 0===e||this.has(t)?this._object[t]:e},j.prototype.has=function(t){return this._object.hasOwnProperty(t)},j.prototype.__iterate=function(t,e){for(var n=this,r=this._object,i=this._keys,o=i.length-1,u=0;u<=o;u++){var a=i[e?o-u:u];if(t(r[a],a,n)===!1)return u+1}return u},j.prototype.__iterator=function(t,e){var n=this._object,r=this._keys,i=r.length-1,o=0;return new b(function(){var u=r[e?i-o:o];return o++>i?I():E(t,u,n[u])})},j.prototype[mn]=!0,t(N,R),N.prototype.__iterateUncached=function(t,e){var n=this;if(e)return this.cacheResult().__iterate(t,e);var r=this._iterable,i=T(r),o=0;if(w(i))for(var u;!(u=i.next()).done&&t(u.value,o++,n)!==!1;);return o},N.prototype.__iteratorUncached=function(t,e){if(e)return this.cacheResult().__iterator(t,e);var n=this._iterable,r=T(n);if(!w(r))return new b(I);var i=0;return new b(function(){var e=r.next();return e.done?e:E(t,i++,e.value)})},t(k,R),k.prototype.__iterateUncached=function(t,e){var n=this;if(e)return this.cacheResult().__iterate(t,e);for(var r=this._iterator,i=this._iteratorCache,o=0;o<i.length;)if(t(i[o],o++,n)===!1)return o;for(var u;!(u=r.next()).done;){var a=u.value;if(i[o]=a,t(a,o++,n)===!1)break}return o},k.prototype.__iteratorUncached=function(t,e){if(e)return this.cacheResult().__iterator(t,e);var n=this._iterator,r=this._iteratorCache,i=0;return new b(function(){if(i>=r.length){var e=n.next();if(e.done)return e;r[i]=e.value}return E(t,i,r[i++])})};var Tn;t(K,l),t(B,K),t(Y,K),t(J,K),K.Keyed=B,K.Indexed=Y,K.Set=J;var An,Dn="function"==typeof Math.imul&&Math.imul(4294967295,2)===-2?Math.imul:function(t,e){t|=0,e|=0;var n=65535&t,r=65535&e;return n*r+((t>>>16)*r+n*(e>>>16)<<16>>>0)|0},Cn=Object.isExtensible,zn=(function(){try{return Object.defineProperty({},"@",{}),!0}catch(t){return!1}})(),Rn="function"==typeof WeakMap;Rn&&(An=new WeakMap);var Mn=0,Ln="__immutablehash__";"function"==typeof Symbol&&(Ln=Symbol(Ln));var jn=16,Nn=255,kn=0,Pn={};t(st,z),st.prototype.get=function(t,e){return this._iter.get(t,e)},st.prototype.has=function(t){return this._iter.has(t)},st.prototype.valueSeq=function(){return this._iter.valueSeq()},st.prototype.reverse=function(){var t=this,e=_t(this,!0);return this._useKeys||(e.valueSeq=function(){return t._iter.toSeq().reverse()}),e},st.prototype.map=function(t,e){var n=this,r=pt(this,t,e);return this._useKeys||(r.valueSeq=function(){return n._iter.toSeq().map(t,e)}),r},st.prototype.__iterate=function(t,e){var n,r=this;return this._iter.__iterate(this._useKeys?function(e,n){return t(e,n,r)}:(n=e?Rt(this):0,function(i){return t(i,e?--n:n++,r)}),e)},st.prototype.__iterator=function(t,e){if(this._useKeys)return this._iter.__iterator(t,e);var n=this._iter.__iterator(Sn,e),r=e?Rt(this):0;return new b(function(){var i=n.next();return i.done?i:E(t,e?--r:r++,i.value,i)})},st.prototype[mn]=!0,t(ct,R),ct.prototype.includes=function(t){return this._iter.includes(t)},ct.prototype.__iterate=function(t,e){var n=this,r=0;return this._iter.__iterate((function(e){return t(e,r++,n)}),e)},ct.prototype.__iterator=function(t,e){var n=this._iter.__iterator(Sn,e),r=0;return new b(function(){var e=n.next();return e.done?e:E(t,r++,e.value,e)})},t(ft,M),ft.prototype.has=function(t){return this._iter.includes(t)},ft.prototype.__iterate=function(t,e){var n=this;return this._iter.__iterate((function(e){return t(e,e,n)}),e)},ft.prototype.__iterator=function(t,e){var n=this._iter.__iterator(Sn,e);return new b(function(){var e=n.next();return e.done?e:E(t,e.value,e.value,e)})},t(ht,z),ht.prototype.entrySeq=function(){return this._iter.toSeq()},ht.prototype.__iterate=function(t,e){var n=this;return this._iter.__iterate((function(e){if(e){zt(e);var r=v(e);return t(r?e.get(1):e[1],r?e.get(0):e[0],n)}}),e)},ht.prototype.__iterator=function(t,e){var n=this._iter.__iterator(Sn,e);return new b(function(){for(;;){var e=n.next();if(e.done)return e;var r=e.value;if(r){zt(r);var i=v(r);return E(t,i?r.get(0):r[0],i?r.get(1):r[1],e)}}})},ct.prototype.cacheResult=st.prototype.cacheResult=ft.prototype.cacheResult=ht.prototype.cacheResult=jt,t(Pt,B),Pt.prototype.toString=function(){return this.__toString("Map {","}")},Pt.prototype.get=function(t,e){return this._root?this._root.get(0,void 0,t,e):e},Pt.prototype.set=function(t,e){return Wt(this,t,e)},Pt.prototype.setIn=function(t,e){return this.updateIn(t,ln,(function(){return e}))},Pt.prototype.remove=function(t){return Wt(this,t,ln)},Pt.prototype.deleteIn=function(t){return this.updateIn(t,(function(){return ln}))},Pt.prototype.update=function(t,e,n){return 1===arguments.length?t(this):this.updateIn([t],e,n)},Pt.prototype.updateIn=function(t,e,n){n||(n=e,e=void 0);var r=oe(this,kt(t),e,n);return r===ln?void 0:r},Pt.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._root=null,this.__hash=void 0,this.__altered=!0,this):Jt()},Pt.prototype.merge=function(){return ne(this,void 0,arguments)},Pt.prototype.mergeWith=function(t){var e=an.call(arguments,1);return ne(this,t,e)},Pt.prototype.mergeIn=function(t){var e=an.call(arguments,1);return this.updateIn(t,Jt(),(function(t){return"function"==typeof t.merge?t.merge.apply(t,e):e[e.length-1]}))},Pt.prototype.mergeDeep=function(){return ne(this,re(void 0),arguments)},Pt.prototype.mergeDeepWith=function(t){var e=an.call(arguments,1);return ne(this,re(t),e)},Pt.prototype.mergeDeepIn=function(t){var e=an.call(arguments,1);return this.updateIn(t,Jt(),(function(t){return"function"==typeof t.mergeDeep?t.mergeDeep.apply(t,e):e[e.length-1]}))},Pt.prototype.sort=function(t){return Ie(wt(this,t))},Pt.prototype.sortBy=function(t,e){return Ie(wt(this,e,t))},Pt.prototype.withMutations=function(t){var e=this.asMutable();return t(e),e.wasAltered()?e.__ensureOwner(this.__ownerID):this},Pt.prototype.asMutable=function(){return this.__ownerID?this:this.__ensureOwner(new r)},Pt.prototype.asImmutable=function(){return this.__ensureOwner()},Pt.prototype.wasAltered=function(){return this.__altered},Pt.prototype.__iterator=function(t,e){return new Gt(this,t,e)},Pt.prototype.__iterate=function(t,e){var n=this,r=0;return this._root&&this._root.iterate((function(e){return r++,t(e[1],e[0],n)}),e),r},Pt.prototype.__ensureOwner=function(t){return t===this.__ownerID?this:t?Yt(this.size,this._root,t,this.__hash):(this.__ownerID=t,this.__altered=!1,this)},Pt.isMap=Ut;var Un="@@__IMMUTABLE_MAP__@@",Hn=Pt.prototype;Hn[Un]=!0,Hn[sn]=Hn.remove,Hn.removeIn=Hn.deleteIn,Ht.prototype.get=function(t,e,n,r){for(var i=this.entries,o=0,u=i.length;o<u;o++)if(W(n,i[o][0]))return i[o][1];return r},Ht.prototype.update=function(t,e,r,o,u,a,s){for(var c=u===ln,f=this.entries,h=0,l=f.length;h<l&&!W(o,f[h][0]);h++);var p=h<l;if(p?f[h][1]===u:c)return this;if(n(s),(c||!p)&&n(a),!c||1!==f.length){if(!p&&!c&&f.length>=Vn)return $t(t,f,o,u);var _=t&&t===this.ownerID,d=_?f:i(f);return p?c?h===l-1?d.pop():d[h]=d.pop():d[h]=[o,u]:d.push([o,u]),_?(this.entries=d,this):new Ht(t,d)}},xt.prototype.get=function(t,e,n,r){void 0===e&&(e=et(n));var i=1<<((0===t?e:e>>>t)&hn),o=this.bitmap;return 0===(o&i)?r:this.nodes[ue(o&i-1)].get(t+cn,e,n,r)},xt.prototype.update=function(t,e,n,r,i,o,u){void 0===n&&(n=et(r));var a=(0===e?n:n>>>e)&hn,s=1<<a,c=this.bitmap,f=0!==(c&s);if(!f&&i===ln)return this;var h=ue(c&s-1),l=this.nodes,p=f?l[h]:void 0,_=Xt(p,t,e+cn,n,r,i,o,u);if(_===p)return this;if(!f&&_&&l.length>=qn)return ee(t,l,c,a,_);if(f&&!_&&2===l.length&&Qt(l[1^h]))return l[1^h];if(f&&_&&1===l.length&&Qt(_))return _;var d=t&&t===this.ownerID,v=f?_?c:c^s:c|s,y=f?_?ae(l,h,_,d):ce(l,h,d):se(l,h,_,d);return d?(this.bitmap=v,this.nodes=y,this):new xt(t,v,y)},Vt.prototype.get=function(t,e,n,r){void 0===e&&(e=et(n));var i=(0===t?e:e>>>t)&hn,o=this.nodes[i];return o?o.get(t+cn,e,n,r):r},Vt.prototype.update=function(t,e,n,r,i,o,u){void 0===n&&(n=et(r));var a=(0===e?n:n>>>e)&hn,s=i===ln,c=this.nodes,f=c[a];if(s&&!f)return this;var h=Xt(f,t,e+cn,n,r,i,o,u);if(h===f)return this;var l=this.count;if(f){if(!h&&(l--,l<Fn))return te(t,c,l,a)}else l++;var p=t&&t===this.ownerID,_=ae(c,a,h,p);return p?(this.count=l,this.nodes=_,this):new Vt(t,l,_)},qt.prototype.get=function(t,e,n,r){for(var i=this.entries,o=0,u=i.length;o<u;o++)if(W(n,i[o][0]))return i[o][1];return r},qt.prototype.update=function(t,e,r,o,u,a,s){void 0===r&&(r=et(o));var c=u===ln;if(r!==this.keyHash)return c?this:(n(s),n(a),Zt(this,t,e,r,[o,u]));for(var f=this.entries,h=0,l=f.length;h<l&&!W(o,f[h][0]);h++);var p=h<l;if(p?f[h][1]===u:c)return this;if(n(s),(c||!p)&&n(a),c&&2===l)return new Ft(t,this.keyHash,f[1^h]);var _=t&&t===this.ownerID,d=_?f:i(f);return p?c?h===l-1?d.pop():d[h]=d.pop():d[h]=[o,u]:d.push([o,u]),_?(this.entries=d,this):new qt(t,this.keyHash,d)},Ft.prototype.get=function(t,e,n,r){return W(n,this.entry[0])?this.entry[1]:r},Ft.prototype.update=function(t,e,r,i,o,u,a){var s=o===ln,c=W(i,this.entry[0]);return(c?o===this.entry[1]:s)?this:(n(a),s?void n(u):c?t&&t===this.ownerID?(this.entry[1]=o,this):new Ft(t,this.keyHash,[i,o]):(n(u),Zt(this,t,e,et(i),[i,o])))},Ht.prototype.iterate=qt.prototype.iterate=function(t,e){for(var n=this.entries,r=0,i=n.length-1;r<=i;r++)if(t(n[e?i-r:r])===!1)return!1},xt.prototype.iterate=Vt.prototype.iterate=function(t,e){for(var n=this.nodes,r=0,i=n.length-1;r<=i;r++){var o=n[e?i-r:r];if(o&&o.iterate(t,e)===!1)return!1}},Ft.prototype.iterate=function(t,e){return t(this.entry)},t(Gt,b),Gt.prototype.next=function(){for(var t=this,e=this._type,n=this._stack;n;){var r,i=n.node,o=n.index++;if(i.entry){if(0===o)return Kt(e,i.entry)}else if(i.entries){if(r=i.entries.length-1,o<=r)return Kt(e,i.entries[t._reverse?r-o:o])}else if(r=i.nodes.length-1,o<=r){var u=i.nodes[t._reverse?r-o:o];if(u){if(u.entry)return Kt(e,u.entry);n=t._stack=Bt(u,n)}continue}n=t._stack=t._stack.__prev}return I()};var xn,Vn=fn/4,qn=fn/2,Fn=fn/4;t(fe,Y),fe.of=function(){return this(arguments)},fe.prototype.toString=function(){return this.__toString("List [","]")},fe.prototype.get=function(t,e){if(t=u(this,t),t>=0&&t<this.size){t+=this._origin;var n=ge(this,t);return n&&n.array[t&hn]}return e},fe.prototype.set=function(t,e){return ve(this,t,e)},fe.prototype.remove=function(t){return this.has(t)?0===t?this.shift():t===this.size-1?this.pop():this.splice(t,1):this},fe.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=this._origin=this._capacity=0,this._level=cn,this._root=this._tail=null,this.__hash=void 0,this.__altered=!0,this):de()},fe.prototype.push=function(){var t=arguments,e=this.size;return this.withMutations((function(n){Se(n,0,e+t.length);for(var r=0;r<t.length;r++)n.set(e+r,t[r])}))},fe.prototype.pop=function(){return Se(this,0,-1)},fe.prototype.unshift=function(){var t=arguments;return this.withMutations((function(e){Se(e,-t.length);for(var n=0;n<t.length;n++)e.set(n,t[n])}))},fe.prototype.shift=function(){return Se(this,1)},fe.prototype.merge=function(){return be(this,void 0,arguments)},fe.prototype.mergeWith=function(t){var e=an.call(arguments,1);return be(this,t,e)},fe.prototype.mergeDeep=function(){return be(this,re(void 0),arguments)},fe.prototype.mergeDeepWith=function(t){var e=an.call(arguments,1);return be(this,re(t),e)},fe.prototype.setSize=function(t){return Se(this,0,t)},fe.prototype.slice=function(t,e){var n=this.size;return s(t,e,n)?this:Se(this,c(t,n),f(e,n))},fe.prototype.__iterator=function(t,e){var n=0,r=pe(this,e);return new b(function(){var e=r();return e===Yn?I():E(t,n++,e)})},fe.prototype.__iterate=function(t,e){for(var n,r=this,i=0,o=pe(this,e);(n=o())!==Yn&&t(n,i++,r)!==!1;);return i},fe.prototype.__ensureOwner=function(t){return t===this.__ownerID?this:t?_e(this._origin,this._capacity,this._level,this._root,this._tail,t,this.__hash):(this.__ownerID=t,this)},fe.isList=he;var Gn="@@__IMMUTABLE_LIST__@@",Kn=fe.prototype;Kn[Gn]=!0,Kn[sn]=Kn.remove,Kn.setIn=Hn.setIn,Kn.deleteIn=Kn.removeIn=Hn.removeIn,Kn.update=Hn.update,Kn.updateIn=Hn.updateIn,Kn.mergeIn=Hn.mergeIn,Kn.mergeDeepIn=Hn.mergeDeepIn,Kn.withMutations=Hn.withMutations,Kn.asMutable=Hn.asMutable,Kn.asImmutable=Hn.asImmutable,Kn.wasAltered=Hn.wasAltered,le.prototype.removeBefore=function(t,e,n){if(n===e?1<<e:0===this.array.length)return this;var r=n>>>e&hn;if(r>=this.array.length)return new le([],t);var i,o=0===r;if(e>0){var u=this.array[r];if(i=u&&u.removeBefore(t,e-cn,n),i===u&&o)return this}if(o&&!i)return this;var a=me(this,t);if(!o)for(var s=0;s<r;s++)a.array[s]=void 0;return i&&(a.array[r]=i),a},le.prototype.removeAfter=function(t,e,n){if(n===(e?1<<e:0)||0===this.array.length)return this;var r=n-1>>>e&hn;if(r>=this.array.length)return this;var i;if(e>0){var o=this.array[r];if(i=o&&o.removeAfter(t,e-cn,n),i===o&&r===this.array.length-1)return this}var u=me(this,t);return u.array.splice(r+1),i&&(u.array[r]=i),u};var Bn,Yn={};t(Ie,Pt),Ie.of=function(){return this(arguments)},Ie.prototype.toString=function(){return this.__toString("OrderedMap {","}")},Ie.prototype.get=function(t,e){var n=this._map.get(t);return void 0!==n?this._list.get(n)[1]:e},Ie.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._map.clear(),this._list.clear(),this):Te()},Ie.prototype.set=function(t,e){return Ae(this,t,e)},Ie.prototype.remove=function(t){return Ae(this,t,ln)},Ie.prototype.wasAltered=function(){return this._map.wasAltered()||this._list.wasAltered()},Ie.prototype.__iterate=function(t,e){var n=this;return this._list.__iterate((function(e){return e&&t(e[1],e[0],n)}),e)},Ie.prototype.__iterator=function(t,e){return this._list.fromEntrySeq().__iterator(t,e)},Ie.prototype.__ensureOwner=function(t){if(t===this.__ownerID)return this;var e=this._map.__ensureOwner(t),n=this._list.__ensureOwner(t);return t?we(e,n,t,this.__hash):(this.__ownerID=t,this._map=e,this._list=n,this)},Ie.isOrderedMap=Oe,Ie.prototype[mn]=!0,Ie.prototype[sn]=Ie.prototype.remove;var Jn;t(De,Y),De.of=function(){return this(arguments)},De.prototype.toString=function(){return this.__toString("Stack [","]")},De.prototype.get=function(t,e){var n=this._head;for(t=u(this,t);n&&t--;)n=n.next;return n?n.value:e},De.prototype.peek=function(){return this._head&&this._head.value},De.prototype.push=function(){var t=arguments;if(0===arguments.length)return this;for(var e=this.size+arguments.length,n=this._head,r=arguments.length-1;r>=0;r--)n={value:t[r],next:n};return this.__ownerID?(this.size=e,this._head=n,this.__hash=void 0,this.__altered=!0,this):ze(e,n)},De.prototype.pushAll=function(t){if(t=_(t),0===t.size)return this;at(t.size);var e=this.size,n=this._head;return t.reverse().forEach((function(t){e++,n={value:t,next:n}})),this.__ownerID?(this.size=e,this._head=n,this.__hash=void 0,this.__altered=!0,this):ze(e,n)},De.prototype.pop=function(){return this.slice(1)},De.prototype.unshift=function(){return this.push.apply(this,arguments)},De.prototype.unshiftAll=function(t){return this.pushAll(t)},De.prototype.shift=function(){return this.pop.apply(this,arguments)},De.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._head=void 0,this.__hash=void 0,this.__altered=!0,this):Re()},De.prototype.slice=function(t,e){if(s(t,e,this.size))return this;var n=c(t,this.size),r=f(e,this.size);if(r!==this.size)return Y.prototype.slice.call(this,t,e);for(var i=this.size-n,o=this._head;n--;)o=o.next;return this.__ownerID?(this.size=i,this._head=o,this.__hash=void 0,this.__altered=!0,this):ze(i,o)},De.prototype.__ensureOwner=function(t){return t===this.__ownerID?this:t?ze(this.size,this._head,t,this.__hash):(this.__ownerID=t,this.__altered=!1,this)},De.prototype.__iterate=function(t,e){var n=this;if(e)return this.reverse().__iterate(t);for(var r=0,i=this._head;i&&t(i.value,r++,n)!==!1;)i=i.next;return r},De.prototype.__iterator=function(t,e){if(e)return this.reverse().__iterator(t);var n=0,r=this._head;return new b(function(){if(r){var e=r.value;return r=r.next,E(t,n++,e)}return I()})},De.isStack=Ce;var Wn="@@__IMMUTABLE_STACK__@@",Xn=De.prototype;Xn[Wn]=!0,Xn.withMutations=Hn.withMutations,Xn.asMutable=Hn.asMutable,Xn.asImmutable=Hn.asImmutable,Xn.wasAltered=Hn.wasAltered;var Qn;t(Me,J),Me.of=function(){return this(arguments)},Me.fromKeys=function(t){return this(p(t).keySeq())},Me.prototype.toString=function(){return this.__toString("Set {","}")},Me.prototype.has=function(t){return this._map.has(t)},Me.prototype.add=function(t){return je(this,this._map.set(t,!0))},Me.prototype.remove=function(t){return je(this,this._map.remove(t))},Me.prototype.clear=function(){return je(this,this._map.clear())},Me.prototype.union=function(){var t=an.call(arguments,0);return t=t.filter((function(t){return 0!==t.size})),0===t.length?this:0!==this.size||this.__ownerID||1!==t.length?this.withMutations((function(e){for(var n=0;n<t.length;n++)d(t[n]).forEach((function(t){return e.add(t)}))})):this.constructor(t[0])},Me.prototype.intersect=function(){var t=an.call(arguments,0);if(0===t.length)return this;t=t.map((function(t){return d(t)}));var e=this;return this.withMutations((function(n){e.forEach((function(e){t.every((function(t){return t.includes(e)}))||n.remove(e)}))}))},Me.prototype.subtract=function(){var t=an.call(arguments,0);if(0===t.length)return this;t=t.map((function(t){return d(t)}));var e=this;return this.withMutations((function(n){e.forEach((function(e){t.some((function(t){return t.includes(e)}))&&n.remove(e)}))}))},Me.prototype.merge=function(){return this.union.apply(this,arguments)},Me.prototype.mergeWith=function(t){var e=an.call(arguments,1);return this.union.apply(this,e)},Me.prototype.sort=function(t){return Pe(wt(this,t))},Me.prototype.sortBy=function(t,e){return Pe(wt(this,e,t))},Me.prototype.wasAltered=function(){return this._map.wasAltered()},Me.prototype.__iterate=function(t,e){var n=this;return this._map.__iterate((function(e,r){return t(r,r,n)}),e)},Me.prototype.__iterator=function(t,e){return this._map.map((function(t,e){return e})).__iterator(t,e)},Me.prototype.__ensureOwner=function(t){if(t===this.__ownerID)return this;var e=this._map.__ensureOwner(t);return t?this.__make(e,t):(this.__ownerID=t,this._map=e,this)},Me.isSet=Le;var Zn="@@__IMMUTABLE_SET__@@",$n=Me.prototype;$n[Zn]=!0,$n[sn]=$n.remove,$n.mergeDeep=$n.merge,$n.mergeDeepWith=$n.mergeWith,$n.withMutations=Hn.withMutations,$n.asMutable=Hn.asMutable,$n.asImmutable=Hn.asImmutable,$n.__empty=ke,$n.__make=Ne;var tr;t(Pe,Me),Pe.of=function(){return this(arguments)},Pe.fromKeys=function(t){return this(p(t).keySeq())},Pe.prototype.toString=function(){ -return this.__toString("OrderedSet {","}")},Pe.isOrderedSet=Ue;var er=Pe.prototype;er[mn]=!0,er.__empty=xe,er.__make=He;var nr;t(Ve,B),Ve.prototype.toString=function(){return this.__toString(Fe(this)+" {","}")},Ve.prototype.has=function(t){return this._defaultValues.hasOwnProperty(t)},Ve.prototype.get=function(t,e){if(!this.has(t))return e;var n=this._defaultValues[t];return this._map?this._map.get(t,n):n},Ve.prototype.clear=function(){if(this.__ownerID)return this._map&&this._map.clear(),this;var t=this.constructor;return t._empty||(t._empty=qe(this,Jt()))},Ve.prototype.set=function(t,e){if(!this.has(t))throw new Error('Cannot set unknown key "'+t+'" on '+Fe(this));var n=this._map&&this._map.set(t,e);return this.__ownerID||n===this._map?this:qe(this,n)},Ve.prototype.remove=function(t){if(!this.has(t))return this;var e=this._map&&this._map.remove(t);return this.__ownerID||e===this._map?this:qe(this,e)},Ve.prototype.wasAltered=function(){return this._map.wasAltered()},Ve.prototype.__iterator=function(t,e){var n=this;return p(this._defaultValues).map((function(t,e){return n.get(e)})).__iterator(t,e)},Ve.prototype.__iterate=function(t,e){var n=this;return p(this._defaultValues).map((function(t,e){return n.get(e)})).__iterate(t,e)},Ve.prototype.__ensureOwner=function(t){if(t===this.__ownerID)return this;var e=this._map&&this._map.__ensureOwner(t);return t?qe(this,e,t):(this.__ownerID=t,this._map=e,this)};var rr=Ve.prototype;rr[sn]=rr.remove,rr.deleteIn=rr.removeIn=Hn.removeIn,rr.merge=Hn.merge,rr.mergeWith=Hn.mergeWith,rr.mergeIn=Hn.mergeIn,rr.mergeDeep=Hn.mergeDeep,rr.mergeDeepWith=Hn.mergeDeepWith,rr.mergeDeepIn=Hn.mergeDeepIn,rr.setIn=Hn.setIn,rr.update=Hn.update,rr.updateIn=Hn.updateIn,rr.withMutations=Hn.withMutations,rr.asMutable=Hn.asMutable,rr.asImmutable=Hn.asImmutable,t(Ye,R),Ye.prototype.toString=function(){return 0===this.size?"Range []":"Range [ "+this._start+"..."+this._end+(this._step>1?" by "+this._step:"")+" ]"},Ye.prototype.get=function(t,e){return this.has(t)?this._start+u(this,t)*this._step:e},Ye.prototype.includes=function(t){var e=(t-this._start)/this._step;return e>=0&&e<this.size&&e===Math.floor(e)},Ye.prototype.slice=function(t,e){return s(t,e,this.size)?this:(t=c(t,this.size),e=f(e,this.size),e<=t?new Ye(0,0):new Ye(this.get(t,this._end),this.get(e,this._end),this._step))},Ye.prototype.indexOf=function(t){var e=t-this._start;if(e%this._step===0){var n=e/this._step;if(n>=0&&n<this.size)return n}return-1},Ye.prototype.lastIndexOf=function(t){return this.indexOf(t)},Ye.prototype.__iterate=function(t,e){for(var n=this,r=this.size-1,i=this._step,o=e?this._start+r*i:this._start,u=0;u<=r;u++){if(t(o,u,n)===!1)return u+1;o+=e?-i:i}return u},Ye.prototype.__iterator=function(t,e){var n=this.size-1,r=this._step,i=e?this._start+n*r:this._start,o=0;return new b(function(){var u=i;return i+=e?-r:r,o>n?I():E(t,o++,u)})},Ye.prototype.equals=function(t){return t instanceof Ye?this._start===t._start&&this._end===t._end&&this._step===t._step:Be(this,t)};var ir;t(Je,R),Je.prototype.toString=function(){return 0===this.size?"Repeat []":"Repeat [ "+this._value+" "+this.size+" times ]"},Je.prototype.get=function(t,e){return this.has(t)?this._value:e},Je.prototype.includes=function(t){return W(this._value,t)},Je.prototype.slice=function(t,e){var n=this.size;return s(t,e,n)?this:new Je(this._value,f(e,n)-c(t,n))},Je.prototype.reverse=function(){return this},Je.prototype.indexOf=function(t){return W(this._value,t)?0:-1},Je.prototype.lastIndexOf=function(t){return W(this._value,t)?this.size:-1},Je.prototype.__iterate=function(t,e){for(var n=this,r=0;r<this.size;r++)if(t(n._value,r,n)===!1)return r+1;return r},Je.prototype.__iterator=function(t,e){var n=this,r=0;return new b(function(){return r<n.size?E(t,r++,n._value):I()})},Je.prototype.equals=function(t){return t instanceof Je?W(this._value,t._value):Be(t)};var or;l.Iterator=b,We(l,{toArray:function(){at(this.size);var t=new Array(this.size||0);return this.valueSeq().__iterate((function(e,n){t[n]=e})),t},toIndexedSeq:function(){return new ct(this)},toJS:function(){return this.toSeq().map((function(t){return t&&"function"==typeof t.toJS?t.toJS():t})).__toJS()},toJSON:function(){return this.toSeq().map((function(t){return t&&"function"==typeof t.toJSON?t.toJSON():t})).__toJS()},toKeyedSeq:function(){return new st(this,!0)},toMap:function(){return Pt(this.toKeyedSeq())},toObject:function(){at(this.size);var t={};return this.__iterate((function(e,n){t[n]=e})),t},toOrderedMap:function(){return Ie(this.toKeyedSeq())},toOrderedSet:function(){return Pe(y(this)?this.valueSeq():this)},toSet:function(){return Me(y(this)?this.valueSeq():this)},toSetSeq:function(){return new ft(this)},toSeq:function(){return m(this)?this.toIndexedSeq():y(this)?this.toKeyedSeq():this.toSetSeq()},toStack:function(){return De(y(this)?this.valueSeq():this)},toList:function(){return fe(y(this)?this.valueSeq():this)},toString:function(){return"[Iterable]"},__toString:function(t,e){return 0===this.size?t+e:t+" "+this.toSeq().map(this.__toStringMapper).join(", ")+" "+e},concat:function(){var t=an.call(arguments,0);return Ct(this,bt(this,t))},includes:function(t){return this.some((function(e){return W(e,t)}))},entries:function(){return this.__iterator(bn)},every:function(t,e){at(this.size);var n=!0;return this.__iterate((function(r,i,o){if(!t.call(e,r,i,o))return n=!1,!1})),n},filter:function(t,e){return Ct(this,dt(this,t,e,!0))},find:function(t,e,n){var r=this.findEntry(t,e);return r?r[1]:n},findEntry:function(t,e){var n;return this.__iterate((function(r,i,o){if(t.call(e,r,i,o))return n=[i,r],!1})),n},findLastEntry:function(t,e){return this.toSeq().reverse().findEntry(t,e)},forEach:function(t,e){return at(this.size),this.__iterate(e?t.bind(e):t)},join:function(t){at(this.size),t=void 0!==t?""+t:",";var e="",n=!0;return this.__iterate((function(r){n?n=!1:e+=t,e+=null!==r&&void 0!==r?r.toString():""})),e},keys:function(){return this.__iterator(gn)},map:function(t,e){return Ct(this,pt(this,t,e))},reduce:function(t,e,n){at(this.size);var r,i;return arguments.length<2?i=!0:r=e,this.__iterate((function(e,o,u){i?(i=!1,r=e):r=t.call(n,r,e,o,u)})),r},reduceRight:function(t,e,n){var r=this.toKeyedSeq().reverse();return r.reduce.apply(r,arguments)},reverse:function(){return Ct(this,_t(this,!0))},slice:function(t,e){return Ct(this,mt(this,t,e,!0))},some:function(t,e){return!this.every(Ze(t),e)},sort:function(t){return Ct(this,wt(this,t))},values:function(){return this.__iterator(Sn)},butLast:function(){return this.slice(0,-1)},isEmpty:function(){return void 0!==this.size?0===this.size:!this.some((function(){return!0}))},count:function(t,e){return o(t?this.toSeq().filter(t,e):this)},countBy:function(t,e){return vt(this,t,e)},equals:function(t){return Be(this,t)},entrySeq:function(){var t=this;if(t._cache)return new L(t._cache);var e=t.toSeq().map(Qe).toIndexedSeq();return e.fromEntrySeq=function(){return t.toSeq()},e},filterNot:function(t,e){return this.filter(Ze(t),e)},findLast:function(t,e,n){return this.toKeyedSeq().reverse().find(t,e,n)},first:function(){return this.find(a)},flatMap:function(t,e){return Ct(this,It(this,t,e))},flatten:function(t){return Ct(this,Et(this,t,!0))},fromEntrySeq:function(){return new ht(this)},get:function(t,e){return this.find((function(e,n){return W(n,t)}),void 0,e)},getIn:function(t,e){for(var n,r=this,i=kt(t);!(n=i.next()).done;){var o=n.value;if(r=r&&r.get?r.get(o,ln):ln,r===ln)return e}return r},groupBy:function(t,e){return yt(this,t,e)},has:function(t){return this.get(t,ln)!==ln},hasIn:function(t){return this.getIn(t,ln)!==ln},isSubset:function(t){return t="function"==typeof t.includes?t:l(t),this.every((function(e){return t.includes(e)}))},isSuperset:function(t){return t="function"==typeof t.isSubset?t:l(t),t.isSubset(this)},keySeq:function(){return this.toSeq().map(Xe).toIndexedSeq()},last:function(){return this.toSeq().reverse().first()},max:function(t){return Tt(this,t)},maxBy:function(t,e){return Tt(this,e,t)},min:function(t){return Tt(this,t?$e(t):nn)},minBy:function(t,e){return Tt(this,e?$e(e):nn,t)},rest:function(){return this.slice(1)},skip:function(t){return this.slice(Math.max(0,t))},skipLast:function(t){return Ct(this,this.toSeq().reverse().skip(t).reverse())},skipWhile:function(t,e){return Ct(this,St(this,t,e,!0))},skipUntil:function(t,e){return this.skipWhile(Ze(t),e)},sortBy:function(t,e){return Ct(this,wt(this,e,t))},take:function(t){return this.slice(0,Math.max(0,t))},takeLast:function(t){return Ct(this,this.toSeq().reverse().take(t).reverse())},takeWhile:function(t,e){return Ct(this,gt(this,t,e))},takeUntil:function(t,e){return this.takeWhile(Ze(t),e)},valueSeq:function(){return this.toIndexedSeq()},hashCode:function(){return this.__hash||(this.__hash=rn(this))}});var ur=l.prototype;ur[dn]=!0,ur[On]=ur.values,ur.__toJS=ur.toArray,ur.__toStringMapper=tn,ur.inspect=ur.toSource=function(){return this.toString()},ur.chain=ur.flatMap,ur.contains=ur.includes,(function(){try{Object.defineProperty(ur,"length",{get:function(){if(!l.noLengthWarning){var t;try{throw new Error}catch(e){t=e.stack}if(t.indexOf("_wrapObject")===-1)return console&&console.warn&&console.warn("iterable.length has been deprecated, use iterable.size or iterable.count(). This warning will become a silent error in a future version. "+t),this.size}}})}catch(t){}})(),We(p,{flip:function(){return Ct(this,lt(this))},findKey:function(t,e){var n=this.findEntry(t,e);return n&&n[0]},findLastKey:function(t,e){return this.toSeq().reverse().findKey(t,e)},keyOf:function(t){return this.findKey((function(e){return W(e,t)}))},lastKeyOf:function(t){return this.findLastKey((function(e){return W(e,t)}))},mapEntries:function(t,e){var n=this,r=0;return Ct(this,this.toSeq().map((function(i,o){return t.call(e,[o,i],r++,n)})).fromEntrySeq())},mapKeys:function(t,e){var n=this;return Ct(this,this.toSeq().flip().map((function(r,i){return t.call(e,r,i,n)})).flip())}});var ar=p.prototype;ar[vn]=!0,ar[On]=ur.entries,ar.__toJS=ur.toObject,ar.__toStringMapper=function(t,e){return JSON.stringify(e)+": "+tn(t)},We(_,{toKeyedSeq:function(){return new st(this,!1)},filter:function(t,e){return Ct(this,dt(this,t,e,!1))},findIndex:function(t,e){var n=this.findEntry(t,e);return n?n[0]:-1},indexOf:function(t){var e=this.toKeyedSeq().keyOf(t);return void 0===e?-1:e},lastIndexOf:function(t){return this.toSeq().reverse().indexOf(t)},reverse:function(){return Ct(this,_t(this,!1))},slice:function(t,e){return Ct(this,mt(this,t,e,!1))},splice:function(t,e){var n=arguments.length;if(e=Math.max(0|e,0),0===n||2===n&&!e)return this;t=c(t,t<0?this.count():this.size);var r=this.slice(0,t);return Ct(this,1===n?r:r.concat(i(arguments,2),this.slice(t+e)))},findLastIndex:function(t,e){var n=this.toKeyedSeq().findLastKey(t,e);return void 0===n?-1:n},first:function(){return this.get(0)},flatten:function(t){return Ct(this,Et(this,t,!1))},get:function(t,e){return t=u(this,t),t<0||this.size===1/0||void 0!==this.size&&t>this.size?e:this.find((function(e,n){return n===t}),void 0,e)},has:function(t){return t=u(this,t),t>=0&&(void 0!==this.size?this.size===1/0||t<this.size:this.indexOf(t)!==-1)},interpose:function(t){return Ct(this,Ot(this,t))},interleave:function(){var t=[this].concat(i(arguments)),e=Dt(this.toSeq(),R.of,t),n=e.flatten(!0);return e.size&&(n.size=e.size*t.length),Ct(this,n)},last:function(){return this.get(-1)},skipWhile:function(t,e){return Ct(this,St(this,t,e,!1))},zip:function(){var t=[this].concat(i(arguments));return Ct(this,Dt(this,en,t))},zipWith:function(t){var e=i(arguments);return e[0]=this,Ct(this,Dt(this,t,e))}}),_.prototype[yn]=!0,_.prototype[mn]=!0,We(d,{get:function(t,e){return this.has(t)?t:e},includes:function(t){return this.has(t)},keySeq:function(){return this.valueSeq()}}),d.prototype.has=ur.includes,We(z,p.prototype),We(R,_.prototype),We(M,d.prototype),We(B,p.prototype),We(Y,_.prototype),We(J,d.prototype);var sr={Iterable:l,Seq:C,Collection:K,Map:Pt,OrderedMap:Ie,List:fe,Stack:De,Set:Me,OrderedSet:Pe,Record:Ve,Range:Ye,Repeat:Je,is:W,fromJS:X};return sr}))},function(t,e){function n(t){return t&&"object"==typeof t&&toString.call(t)}function r(t){return"number"==typeof t&&t>-1&&t%1===0&&t<=Number.MAX_VALUE}var i=Function.prototype.bind;e.isString=function(t){return"string"==typeof t||"[object String]"===n(t)},e.isArray=Array.isArray||function(t){return"[object Array]"===n(t)},"function"!=typeof/./&&"object"!=typeof Int8Array?e.isFunction=function(t){return"function"==typeof t||!1}:e.isFunction=function(t){return"[object Function]"===toString.call(t)},e.isObject=function(t){var e=typeof t;return"function"===e||"object"===e&&!!t},e.extend=function(t){var e=arguments,n=arguments.length;if(!t||n<2)return t||{};for(var r=1;r<n;r++)for(var i=e[r],o=Object.keys(i),u=o.length,a=0;a<u;a++){var s=o[a];t[s]=i[s]}return t},e.clone=function(t){return e.isObject(t)?e.isArray(t)?t.slice():e.extend({},t):t},e.each=function(t,e,n){var i,o,u=t?t.length:0,a=-1;if(n&&(o=e,e=function(t,e,r){return o.call(n,t,e,r)}),r(u))for(;++a<u&&e(t[a],a,t)!==!1;);else for(i=Object.keys(t),u=i.length;++a<u&&e(t[i[a]],i[a],t)!==!1;);return t},e.partial=function(t){var e=Array.prototype.slice,n=e.call(arguments,1);return function(){return t.apply(this,n.concat(e.call(arguments)))}},e.toFactory=function(t){var e=function(){for(var e=arguments,n=arguments.length,r=Array(n),o=0;o<n;o++)r[o]=e[o];return new(i.apply(t,[null].concat(r)))};return e.__proto__=t,e.prototype=t.prototype,e}},function(t,e,n){function r(t){return t&&t.__esModule?t:{default:t}}function i(t){return c.default.Iterable.isIterable(t)}function o(t){return i(t)||!(0,f.isObject)(t)}function u(t){return i(t)?t.toJS():t}function a(t){return i(t)?t:c.default.fromJS(t)}Object.defineProperty(e,"__esModule",{value:!0}),e.isImmutable=i,e.isImmutableValue=o,e.toJS=u,e.toImmutable=a;var s=n(3),c=r(s),f=n(4)},function(t,e,n){function r(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}function i(t){return t&&t.__esModule?t:{default:t}}function o(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function u(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var a=(function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}})(),s=n(3),c=i(s),f=n(7),h=i(f),l=n(8),p=r(l),_=n(11),d=n(10),v=n(5),y=n(4),m=n(12),g=(function(){function t(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];u(this,t);var n=!!e.debug,r=n?m.DEBUG_OPTIONS:m.PROD_OPTIONS,i=new m.ReactorState({debug:n,options:r.merge(e.options||{})});this.prevReactorState=i,this.reactorState=i,this.observerState=new m.ObserverState,this.ReactMixin=(0,h.default)(this),this.__batchDepth=0,this.__isDispatching=!1}return a(t,[{key:"evaluate",value:function(t){var e=p.evaluate(this.reactorState,t),n=e.result,r=e.reactorState;return this.reactorState=r,n}},{key:"evaluateToJS",value:function(t){return(0,v.toJS)(this.evaluate(t))}},{key:"observe",value:function(t,e){var n=this;1===arguments.length&&(e=t,t=[]);var r=p.addObserver(this.observerState,t,e),i=r.observerState,o=r.entry;return this.observerState=i,function(){n.observerState=p.removeObserverByEntry(n.observerState,o)}}},{key:"unobserve",value:function(t,e){if(0===arguments.length)throw new Error("Must call unobserve with a Getter");if(!(0,d.isGetter)(t)&&!(0,_.isKeyPath)(t))throw new Error("Must call unobserve with a Getter");this.observerState=p.removeObserver(this.observerState,t,e)}},{key:"dispatch",value:function(t,e){if(0===this.__batchDepth){if(p.getOption(this.reactorState,"throwOnDispatchInDispatch")&&this.__isDispatching)throw this.__isDispatching=!1,new Error("Dispatch may not be called while a dispatch is in progress");this.__isDispatching=!0}try{this.reactorState=p.dispatch(this.reactorState,t,e)}catch(t){throw this.__isDispatching=!1,t}try{this.__notify()}finally{this.__isDispatching=!1}}},{key:"batch",value:function(t){this.batchStart(),t(),this.batchEnd()}},{key:"registerStore",value:function(t,e){console.warn("Deprecation warning: `registerStore` will no longer be supported in 1.1, use `registerStores` instead"),this.registerStores(o({},t,e))}},{key:"registerStores",value:function(t){this.reactorState=p.registerStores(this.reactorState,t),this.__notify()}},{key:"replaceStores",value:function(t){this.reactorState=p.replaceStores(this.reactorState,t)}},{key:"serialize",value:function(){return p.serialize(this.reactorState)}},{key:"loadState",value:function(t){this.reactorState=p.loadState(this.reactorState,t),this.__notify()}},{key:"reset",value:function(){var t=p.reset(this.reactorState);this.reactorState=t,this.prevReactorState=t,this.observerState=new m.ObserverState}},{key:"__notify",value:function(){var t=this;if(!(this.__batchDepth>0)){var e=this.reactorState.get("dirtyStores");if(0!==e.size){var n=c.default.Set().withMutations((function(n){n.union(t.observerState.get("any")),e.forEach((function(e){var r=t.observerState.getIn(["stores",e]);r&&n.union(r)}))}));n.forEach((function(e){var n=t.observerState.getIn(["observersMap",e]);if(n){var r=n.get("getter"),i=n.get("handler"),o=p.evaluate(t.prevReactorState,r),u=p.evaluate(t.reactorState,r);t.prevReactorState=o.reactorState,t.reactorState=u.reactorState;var a=o.result,s=u.result;c.default.is(a,s)||i.call(null,s)}}));var r=p.resetDirtyStores(this.reactorState);this.prevReactorState=r,this.reactorState=r}}}},{key:"batchStart",value:function(){this.__batchDepth++}},{key:"batchEnd",value:function(){if(this.__batchDepth--,this.__batchDepth<=0){this.__isDispatching=!0;try{this.__notify()}catch(t){throw this.__isDispatching=!1,t}this.__isDispatching=!1}}}]),t})();e.default=(0,y.toFactory)(g),t.exports=e.default},function(t,e,n){function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(t,e){var n={};return(0,o.each)(e,(function(e,r){n[r]=t.evaluate(e)})),n}Object.defineProperty(e,"__esModule",{value:!0});var o=n(4);e.default=function(t){return{getInitialState:function(){return i(t,this.getDataBindings())},componentDidMount:function(){var e=this;this.__unwatchFns=[],(0,o.each)(this.getDataBindings(),(function(n,i){var o=t.observe(n,(function(t){e.setState(r({},i,t))}));e.__unwatchFns.push(o)}))},componentWillUnmount:function(){for(var t=this;this.__unwatchFns.length;)t.__unwatchFns.shift()()}}},t.exports=e.default},function(t,e,n){function r(t){return t&&t.__esModule?t:{default:t}}function i(t,e){return new M({result:t,reactorState:e})}function o(t,e){return t.withMutations((function(t){(0,R.each)(e,(function(e,n){t.getIn(["stores",n])&&console.warn("Store already defined for id = "+n);var r=e.getInitialState();if(void 0===r&&f(t,"throwOnUndefinedStoreReturnValue"))throw new Error("Store getInitialState() must return a value, did you forget a return statement");if(f(t,"throwOnNonImmutableStore")&&!(0,D.isImmutableValue)(r))throw new Error("Store getInitialState() must return an immutable value, did you forget to call toImmutable");t.update("stores",(function(t){return t.set(n,e)})).update("state",(function(t){return t.set(n,r)})).update("dirtyStores",(function(t){return t.add(n)})).update("storeStates",(function(t){return I(t,[n])}))})),E(t)}))}function u(t,e){return t.withMutations((function(t){(0,R.each)(e,(function(e,n){t.update("stores",(function(t){return t.set(n,e)}))}))}))}function a(t,e,n){if(void 0===e&&f(t,"throwOnUndefinedActionType"))throw new Error("`dispatch` cannot be called with an `undefined` action type.");var r=t.get("state"),i=t.get("dirtyStores"),o=r.withMutations((function(r){A.default.dispatchStart(t,e,n),t.get("stores").forEach((function(o,u){var a=r.get(u),s=void 0;try{s=o.handle(a,e,n)}catch(e){throw A.default.dispatchError(t,e.message),e}if(void 0===s&&f(t,"throwOnUndefinedStoreReturnValue")){var c="Store handler must return a value, did you forget a return statement";throw A.default.dispatchError(t,c),new Error(c)}r.set(u,s),a!==s&&(i=i.add(u))})),A.default.dispatchEnd(t,r,i)})),u=t.set("state",o).set("dirtyStores",i).update("storeStates",(function(t){return I(t,i)}));return E(u)}function s(t,e){var n=[],r=(0,D.toImmutable)({}).withMutations((function(r){(0,R.each)(e,(function(e,i){var o=t.getIn(["stores",i]);if(o){var u=o.deserialize(e);void 0!==u&&(r.set(i,u),n.push(i))}}))})),i=w.default.Set(n);return t.update("state",(function(t){return t.merge(r)})).update("dirtyStores",(function(t){return t.union(i)})).update("storeStates",(function(t){return I(t,n)}))}function c(t,e,n){var r=e;(0,z.isKeyPath)(e)&&(e=(0,C.fromKeyPath)(e));var i=t.get("nextId"),o=(0,C.getStoreDeps)(e),u=w.default.Map({id:i,storeDeps:o,getterKey:r,getter:e,handler:n}),a=void 0;return a=0===o.size?t.update("any",(function(t){return t.add(i)})):t.withMutations((function(t){o.forEach((function(e){var n=["stores",e];t.hasIn(n)||t.setIn(n,w.default.Set()),t.updateIn(["stores",e],(function(t){return t.add(i)}))}))})),a=a.set("nextId",i+1).setIn(["observersMap",i],u),{observerState:a,entry:u}}function f(t,e){var n=t.getIn(["options",e]);if(void 0===n)throw new Error("Invalid option: "+e);return n}function h(t,e,n){var r=t.get("observersMap").filter((function(t){var r=t.get("getterKey"),i=!n||t.get("handler")===n;return!!i&&((0,z.isKeyPath)(e)&&(0,z.isKeyPath)(r)?(0,z.isEqual)(e,r):e===r)}));return t.withMutations((function(t){r.forEach((function(e){return l(t,e)}))}))}function l(t,e){return t.withMutations((function(t){var n=e.get("id"),r=e.get("storeDeps");0===r.size?t.update("any",(function(t){return t.remove(n)})):r.forEach((function(e){t.updateIn(["stores",e],(function(t){return t?t.remove(n):t}))})),t.removeIn(["observersMap",n])}))}function p(t){var e=t.get("state");return t.withMutations((function(t){var n=t.get("stores"),r=n.keySeq().toJS();n.forEach((function(n,r){var i=e.get(r),o=n.handleReset(i);if(void 0===o&&f(t,"throwOnUndefinedStoreReturnValue"))throw new Error("Store handleReset() must return a value, did you forget a return statement");if(f(t,"throwOnNonImmutableStore")&&!(0,D.isImmutableValue)(o))throw new Error("Store reset state must be an immutable value, did you forget to call toImmutable");t.setIn(["state",r],o)})),t.update("storeStates",(function(t){return I(t,r)})),v(t)}))}function _(t,e){var n=t.get("state");if((0,z.isKeyPath)(e))return i(n.getIn(e),t);if(!(0,C.isGetter)(e))throw new Error("evaluate must be passed a keyPath or Getter");if(g(t,e))return i(b(t,e),t);var r=(0,C.getDeps)(e).map((function(e){return _(t,e).result})),o=(0,C.getComputeFn)(e).apply(null,r);return i(o,S(t,e,o))}function d(t){var e={};return t.get("stores").forEach((function(n,r){var i=t.getIn(["state",r]),o=n.serialize(i);void 0!==o&&(e[r]=o)})),e}function v(t){return t.set("dirtyStores",w.default.Set())}function y(t){return t}function m(t,e){var n=y(e);return t.getIn(["cache",n])}function g(t,e){var n=m(t,e);if(!n)return!1;var r=n.get("storeStates");return 0!==r.size&&r.every((function(e,n){return t.getIn(["storeStates",n])===e}))}function S(t,e,n){var r=y(e),i=t.get("dispatchId"),o=(0,C.getStoreDeps)(e),u=(0,D.toImmutable)({}).withMutations((function(e){o.forEach((function(n){var r=t.getIn(["storeStates",n]);e.set(n,r)}))}));return t.setIn(["cache",r],w.default.Map({value:n,storeStates:u,dispatchId:i}))}function b(t,e){var n=y(e);return t.getIn(["cache",n,"value"])}function E(t){return t.update("dispatchId",(function(t){return t+1}))}function I(t,e){return t.withMutations((function(t){e.forEach((function(e){var n=t.has(e)?t.get(e)+1:1;t.set(e,n)}))}))}Object.defineProperty(e,"__esModule",{value:!0}),e.registerStores=o,e.replaceStores=u,e.dispatch=a,e.loadState=s,e.addObserver=c,e.getOption=f,e.removeObserver=h,e.removeObserverByEntry=l,e.reset=p,e.evaluate=_,e.serialize=d,e.resetDirtyStores=v;var O=n(3),w=r(O),T=n(9),A=r(T),D=n(5),C=n(10),z=n(11),R=n(4),M=w.default.Record({result:null,reactorState:null})},function(t,e,n){var r=n(8);e.dispatchStart=function(t,e,n){(0,r.getOption)(t,"logDispatches")&&console.group&&(console.groupCollapsed("Dispatch: %s",e),console.group("payload"),console.debug(n),console.groupEnd())},e.dispatchError=function(t,e){(0,r.getOption)(t,"logDispatches")&&console.group&&(console.debug("Dispatch error: "+e),console.groupEnd())},e.dispatchEnd=function(t,e,n){(0,r.getOption)(t,"logDispatches")&&console.group&&((0,r.getOption)(t,"logDirtyStores")&&console.log("Stores updated:",n.toList().toJS()),(0,r.getOption)(t,"logAppState")&&console.debug("Dispatch done, new state: ",e.toJS()),console.groupEnd())}},function(t,e,n){function r(t){return t&&t.__esModule?t:{default:t}}function i(t){return(0,l.isArray)(t)&&(0,l.isFunction)(t[t.length-1])}function o(t){return t[t.length-1]}function u(t){return t.slice(0,t.length-1)}function a(t,e){e||(e=h.default.Set());var n=h.default.Set().withMutations((function(e){if(!i(t))throw new Error("getFlattenedDeps must be passed a Getter");u(t).forEach((function(t){if((0,p.isKeyPath)(t))e.add((0,f.List)(t));else{if(!i(t))throw new Error("Invalid getter, each dependency must be a KeyPath or Getter");e.union(a(t))}}))}));return e.union(n)}function s(t){if(!(0,p.isKeyPath)(t))throw new Error("Cannot create Getter from KeyPath: "+t);return[t,_]}function c(t){if(t.hasOwnProperty("__storeDeps"))return t.__storeDeps;var e=a(t).map((function(t){return t.first()})).filter((function(t){return!!t}));return Object.defineProperty(t,"__storeDeps",{enumerable:!1,configurable:!1,writable:!1,value:e}),e}Object.defineProperty(e,"__esModule",{value:!0});var f=n(3),h=r(f),l=n(4),p=n(11),_=function(t){return t};e.default={isGetter:i,getComputeFn:o,getFlattenedDeps:a,getStoreDeps:c,getDeps:u,fromKeyPath:s},t.exports=e.default},function(t,e,n){function r(t){return t&&t.__esModule?t:{default:t}}function i(t){return(0,s.isArray)(t)&&!(0,s.isFunction)(t[t.length-1])}function o(t,e){var n=a.default.List(t),r=a.default.List(e);return a.default.is(n,r)}Object.defineProperty(e,"__esModule",{value:!0}),e.isKeyPath=i,e.isEqual=o;var u=n(3),a=r(u),s=n(4)},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(3),i=(0,r.Map)({logDispatches:!1,logAppState:!1,logDirtyStores:!1,throwOnUndefinedActionType:!1,throwOnUndefinedStoreReturnValue:!1,throwOnNonImmutableStore:!1,throwOnDispatchInDispatch:!1});e.PROD_OPTIONS=i;var o=(0,r.Map)({logDispatches:!0,logAppState:!0,logDirtyStores:!0,throwOnUndefinedActionType:!0,throwOnUndefinedStoreReturnValue:!0,throwOnNonImmutableStore:!0,throwOnDispatchInDispatch:!0});e.DEBUG_OPTIONS=o;var u=(0,r.Record)({dispatchId:0,state:(0,r.Map)(),stores:(0,r.Map)(),cache:(0,r.Map)(),storeStates:(0,r.Map)(),dirtyStores:(0,r.Set)(),debug:!1,options:i});e.ReactorState=u;var a=(0,r.Record)({any:(0,r.Set)(),stores:(0,r.Map)({}),observersMap:(0,r.Map)({}),nextId:1});e.ObserverState=a}])}))})),Ne=t(je),ke=function(t){var e,n={};if(!(t instanceof Object)||Array.isArray(t))throw new Error("keyMirror(...): Argument must be an object.");for(e in t)t.hasOwnProperty(e)&&(n[e]=e);return n},Pe=ke,Ue=Pe({VALIDATING_AUTH_TOKEN:null,VALID_AUTH_TOKEN:null,INVALID_AUTH_TOKEN:null,LOG_OUT:null}),He=Ne.Store,xe=Ne.toImmutable,Ve=new He({getInitialState:function(){return xe({isValidating:!1,authToken:!1,host:null,isInvalid:!1,errorMessage:""})},initialize:function(){this.on(Ue.VALIDATING_AUTH_TOKEN,n),this.on(Ue.VALID_AUTH_TOKEN,r),this.on(Ue.INVALID_AUTH_TOKEN,i)}}),qe=Ne.Store,Fe=Ne.toImmutable,Ge=new qe({getInitialState:function(){return Fe({authToken:null,host:""})},initialize:function(){this.on(Ue.VALID_AUTH_TOKEN,o),this.on(Ue.LOG_OUT,u)}}),Ke=Ne.Store,Be=new Ke({getInitialState:function(){return!0},initialize:function(){this.on(Ue.VALID_AUTH_TOKEN,a)}}),Ye=Pe({STREAM_START:null,STREAM_STOP:null,STREAM_ERROR:null}),Je=Ne.Store,We=Ne.toImmutable,Xe=new Je({getInitialState:function(){return We({isStreaming:!1,hasError:!1})},initialize:function(){this.on(Ye.STREAM_START,s),this.on(Ye.STREAM_ERROR,c),this.on(Ye.LOG_OUT,f)}}),Qe=1,Ze=2,$e=3,tn=function(t,e){this.url=t,this.options=e||{},this.commandId=1,this.commands={},this.connectionTries=0,this.eventListeners={},this.closeRequested=!1};tn.prototype.addEventListener=function(t,e){var n=this.eventListeners[t];n||(n=this.eventListeners[t]=[]),n.push(e)},tn.prototype.fireEvent=function(t){var e=this;(this.eventListeners[t]||[]).forEach((function(t){return t(e)}))},tn.prototype.connect=function(){var t=this;return new Promise(function(e,n){var r=t.commands;Object.keys(r).forEach((function(t){var e=r[t];e.reject&&e.reject(S($e,"Connection lost"))}));var i=!1;t.connectionTries+=1,t.socket=new WebSocket(t.url),t.socket.addEventListener("open",(function(){t.connectionTries=0})),t.socket.addEventListener("message",(function(o){var u=JSON.parse(o.data);switch(u.type){case"event":t.commands[u.id].eventCallback(u.event);break;case"result":u.success?t.commands[u.id].resolve(u):t.commands[u.id].reject(u.error),delete t.commands[u.id];break;case"pong":break;case"auth_required":t.sendMessage(h(t.options.authToken));break;case"auth_invalid":n(Ze),i=!0;break;case"auth_ok":e(t),t.fireEvent("ready"),t.commandId=1,t.commands={},Object.keys(r).forEach((function(e){var n=r[e];n.eventType&&t.subscribeEvents(n.eventCallback,n.eventType).then((function(t){n.unsubscribe=t}))}))}})),t.socket.addEventListener("close",(function(){if(!i&&!t.closeRequested){0===t.connectionTries?t.fireEvent("disconnected"):n(Qe);var e=1e3*Math.min(t.connectionTries,5);setTimeout((function(){return t.connect()}),e)}}))})},tn.prototype.close=function(){this.closeRequested=!0,this.socket.close()},tn.prototype.getStates=function(){return this.sendMessagePromise(l()).then(b)},tn.prototype.getServices=function(){return this.sendMessagePromise(_()).then(b)},tn.prototype.getPanels=function(){return this.sendMessagePromise(d()).then(b)},tn.prototype.getConfig=function(){return this.sendMessagePromise(p()).then(b)},tn.prototype.callService=function(t,e,n){return this.sendMessagePromise(v(t,e,n))},tn.prototype.subscribeEvents=function(t,e){var n=this;return this.sendMessagePromise(y(e)).then((function(r){var i={eventCallback:t,eventType:e,unsubscribe:function(){return n.sendMessagePromise(m(r.id)).then((function(){delete n.commands[r.id]}))}};return n.commands[r.id]=i,function(){return i.unsubscribe()}}))},tn.prototype.ping=function(){return this.sendMessagePromise(g())},tn.prototype.sendMessage=function(t){this.socket.send(JSON.stringify(t))},tn.prototype.sendMessagePromise=function(t){var e=this;return new Promise(function(n,r){e.commandId+=1;var i=e.commandId;t.id=i,e.commands[i]={resolve:n,reject:r},e.sendMessage(t)})};var en=Pe({API_FETCH_ALL_START:null,API_FETCH_ALL_SUCCESS:null,API_FETCH_ALL_FAIL:null,SYNC_SCHEDULED:null,SYNC_SCHEDULE_CANCELLED:null}),nn=Ne.Store,rn=new nn({getInitialState:function(){return!0},initialize:function(){this.on(en.API_FETCH_ALL_START,(function(){return!0})),this.on(en.API_FETCH_ALL_SUCCESS,(function(){return!1})),this.on(en.API_FETCH_ALL_FAIL,(function(){return!1})),this.on(en.LOG_OUT,(function(){return!1}))}}),on=I,un=Pe({API_FETCH_SUCCESS:null,API_FETCH_START:null,API_FETCH_FAIL:null,API_SAVE_SUCCESS:null,API_SAVE_START:null,API_SAVE_FAIL:null,API_DELETE_SUCCESS:null,API_DELETE_START:null,API_DELETE_FAIL:null,LOG_OUT:null}),an=Ne.Store,sn=Ne.toImmutable,cn=new an({getInitialState:function(){return sn({})},initialize:function(){var t=this;this.on(un.API_FETCH_SUCCESS,O),this.on(un.API_SAVE_SUCCESS,O),this.on(un.API_DELETE_SUCCESS,w),this.on(un.LOG_OUT,(function(){return t.getInitialState()}))}}),fn=Object.prototype.hasOwnProperty,hn=Object.prototype.propertyIsEnumerable,ln=A()?Object.assign:function(t,e){for(var n,r,i=arguments,o=T(t),u=1;u<arguments.length;u++){n=Object(i[u]);for(var a in n)fn.call(n,a)&&(o[a]=n[a]);if(Object.getOwnPropertySymbols){r=Object.getOwnPropertySymbols(n);for(var s=0;s<r.length;s++)hn.call(n,r[s])&&(o[r[s]]=n[r[s]]); -}}return o},pn=Ne.toImmutable,_n=D,dn=Object.freeze({createApiActions:_n,register:N,createHasDataGetter:k,createEntityMapGetter:P,createByIdGetter:U}),vn=["playing","paused","unknown"],yn=function(t,e){this.serviceActions=t.serviceActions,this.stateObj=e},mn={isOff:{},isIdle:{},isMuted:{},isPaused:{},isPlaying:{},isMusic:{},isTVShow:{},hasMediaControl:{},volumeSliderValue:{},showProgress:{},currentProgress:{},supportsPause:{},supportsVolumeSet:{},supportsVolumeMute:{},supportsPreviousTrack:{},supportsNextTrack:{},supportsTurnOn:{},supportsTurnOff:{},supportsPlayMedia:{},supportsVolumeButtons:{},primaryText:{},secondaryText:{}};mn.isOff.get=function(){return"off"===this.stateObj.state},mn.isIdle.get=function(){return"idle"===this.stateObj.state},mn.isMuted.get=function(){return this.stateObj.attributes.is_volume_muted},mn.isPaused.get=function(){return"paused"===this.stateObj.state},mn.isPlaying.get=function(){return"playing"===this.stateObj.state},mn.isMusic.get=function(){return"music"===this.stateObj.attributes.media_content_type},mn.isTVShow.get=function(){return"tvshow"===this.stateObj.attributes.media_content_type},mn.hasMediaControl.get=function(){return vn.indexOf(this.stateObj.state)!==-1},mn.volumeSliderValue.get=function(){return 100*this.stateObj.attributes.volume_level},mn.showProgress.get=function(){return(this.isPlaying||this.isPaused)&&"media_position"in this.stateObj.attributes&&"media_position_updated_at"in this.stateObj.attributes},mn.currentProgress.get=function(){return this.stateObj.attributes.media_position+(Date.now()-new Date(this.stateObj.attributes.media_position_updated_at))/1e3},mn.supportsPause.get=function(){return 0!==(1&this.stateObj.attributes.supported_media_commands)},mn.supportsVolumeSet.get=function(){return 0!==(4&this.stateObj.attributes.supported_media_commands)},mn.supportsVolumeMute.get=function(){return 0!==(8&this.stateObj.attributes.supported_media_commands)},mn.supportsPreviousTrack.get=function(){return 0!==(16&this.stateObj.attributes.supported_media_commands)},mn.supportsNextTrack.get=function(){return 0!==(32&this.stateObj.attributes.supported_media_commands)},mn.supportsTurnOn.get=function(){return 0!==(128&this.stateObj.attributes.supported_media_commands)},mn.supportsTurnOff.get=function(){return 0!==(256&this.stateObj.attributes.supported_media_commands)},mn.supportsPlayMedia.get=function(){return 0!==(512&this.stateObj.attributes.supported_media_commands)},mn.supportsVolumeButtons.get=function(){return 0!==(1024&this.stateObj.attributes.supported_media_commands)},mn.primaryText.get=function(){return this.stateObj.attributes.media_title||this.stateObj.stateDisplay},mn.secondaryText.get=function(){if(this.isMusic)return this.stateObj.attributes.media_artist;if(this.isTVShow){var t=this.stateObj.attributes.media_series_title;return this.stateObj.attributes.media_season&&(t+=" S"+this.stateObj.attributes.media_season,this.stateObj.attributes.media_episode&&(t+="E"+this.stateObj.attributes.media_episode)),t}return this.stateObj.attributes.app_name?this.stateObj.attributes.app_name:""},yn.prototype.mediaPlayPause=function(){this.callService("media_play_pause")},yn.prototype.nextTrack=function(){this.callService("media_next_track")},yn.prototype.playbackControl=function(){this.callService("media_play_pause")},yn.prototype.previousTrack=function(){this.callService("media_previous_track")},yn.prototype.setVolume=function(t){this.callService("volume_set",{volume_level:t})},yn.prototype.togglePower=function(){this.isOff?this.turnOn():this.turnOff()},yn.prototype.turnOff=function(){this.callService("turn_off")},yn.prototype.turnOn=function(){this.callService("turn_on")},yn.prototype.volumeDown=function(){this.callService("volume_down")},yn.prototype.volumeMute=function(t){if(!this.supportsVolumeMute)throw new Error("Muting volume not supported");this.callService("volume_mute",{is_volume_muted:t})},yn.prototype.volumeUp=function(){this.callService("volume_down")},yn.prototype.callService=function(t,e){var n=e||{};n.entity_id=this.stateObj.entityId,this.serviceActions.callService("media_player",t,n)},Object.defineProperties(yn.prototype,mn);var gn=Ne.Immutable,Sn=Ne.toJS,bn="entity",En=new gn.Record({entityId:null,domain:null,objectId:null,state:null,entityDisplay:null,stateDisplay:null,lastChanged:null,lastChangedAsDate:null,lastUpdated:null,lastUpdatedAsDate:null,attributes:{},isCustomGroup:null},"Entity"),In=(function(t){function e(e,n,r,i,o){void 0===o&&(o={});var u=e.split("."),a=u[0],s=u[1],c=n.replace(/_/g," ");o.unit_of_measurement&&(c+=" "+o.unit_of_measurement),t.call(this,{entityId:e,domain:a,objectId:s,state:n,stateDisplay:c,lastChanged:r,lastUpdated:i,attributes:o,entityDisplay:o.friendly_name||s.replace(/_/g," "),lastChangedAsDate:H(r),lastUpdatedAsDate:H(i),isCustomGroup:"group"===a&&!o.auto})}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var n={id:{}};return n.id.get=function(){return this.entityId},e.prototype.domainModel=function(t){if("media_player"!==this.domain)throw new Error("Domain does not have a model");return new yn(t,this)},e.delete=function(t,e){return on(t,"DELETE","states/"+e.entityId)},e.save=function(t,e){var n=Sn(e),r=n.entityId,i=n.state,o=n.attributes;void 0===o&&(o={});var u={state:i,attributes:o};return on(t,"POST","states/"+r,u)},e.fetch=function(t,e){return on(t,"GET","states/"+e)},e.fetchAll=function(t){return on(t,"GET","states")},e.fromJSON=function(t){var n=t.entity_id,r=t.state,i=t.last_changed,o=t.last_updated,u=t.attributes;return new e(n,r,i,o,u)},Object.defineProperties(e.prototype,n),e})(En);In.entity=bn;var On=_n(In),wn=k(In),Tn=P(In),An=U(In),Dn=[Tn,function(t){return t.filter((function(t){return!t.attributes.hidden}))}],Cn=Object.freeze({hasData:wn,entityMap:Tn,byId:An,visibleEntityMap:Dn}),zn=On,Rn=Cn,Mn=Object.freeze({actions:zn,getters:Rn}),Ln=Pe({NOTIFICATION_CREATED:null}),jn=Ne.Store,Nn=Ne.Immutable,kn=new jn({getInitialState:function(){return new Nn.OrderedMap},initialize:function(){this.on(Ln.NOTIFICATION_CREATED,x),this.on(Ln.LOG_OUT,V)}}),Pn=Object.freeze({createNotification:q}),Un=["notifications"],Hn=[Un,function(t){return t.last()}],xn=Object.freeze({notificationMap:Un,lastNotificationMessage:Hn}),Vn=Pn,qn=xn,Fn=Object.freeze({register:F,actions:Vn,getters:qn}),Gn=Ne.Immutable,Kn=Ne.toImmutable,Bn="service",Yn=new Gn.Record({domain:null,services:[]},"ServiceDomain"),Jn=(function(t){function e(e,n){t.call(this,{domain:e,services:n})}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var n={id:{}};return n.id.get=function(){return this.domain},e.fetchAll=function(){return on("GET","services")},e.fromJSON=function(t){var n=t.domain,r=t.services;return new e(n,Kn(r))},Object.defineProperties(e.prototype,n),e})(Yn);Jn.entity=Bn;var Wn=k(Jn),Xn=P(Jn),Qn=U(Jn),Zn=Object.freeze({hasData:Wn,entityMap:Xn,byDomain:Qn,hasService:B,canToggleEntity:Y}),$n=_n(Jn);$n.serviceRegistered=function(t,e,n){var r=t.evaluateToJS(Qn(e));if(r)r.services[n]={};else{var i;r={domain:e,services:(i={},i[n]={},i)}}$n.incrementData(t,r)},$n.callTurnOn=function(t,e,n){return void 0===n&&(n={}),$n.callService(t,"homeassistant","turn_on",ln({},n,{entity_id:e}))},$n.callTurnOff=function(t,e,n){return void 0===n&&(n={}),$n.callService(t,"homeassistant","turn_off",ln({},n,{entity_id:e}))},$n.callService=function(t,e,n,r){return void 0===r&&(r={}),on(t,"POST","services/"+e+"/"+n,r).then((function(i){"turn_on"===n&&r.entity_id?Vn.createNotification(t,"Turned on "+r.entity_id+"."):"turn_off"===n&&r.entity_id?Vn.createNotification(t,"Turned off "+r.entity_id+"."):Vn.createNotification(t,"Service "+e+"/"+n+" called."),zn.incrementData(t,i)}))};var tr=$n,er=Zn,nr=Object.freeze({actions:tr,getters:er}),rr=Ne.Immutable,ir="event",or=new rr.Record({event:null,listenerCount:0},"Event"),ur=(function(t){function e(e,n){void 0===n&&(n=0),t.call(this,{event:e,listenerCount:n})}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var n={id:{}};return n.id.get=function(){return this.event},e.fetchAll=function(t){return on(t,"GET","events")},e.fromJSON=function(t){var n=t.event,r=t.listener_count;return new e(n,r)},Object.defineProperties(e.prototype,n),e})(or);ur.entity=ir;var ar=_n(ur);ar.fireEvent=function(t,e,n){return void 0===n&&(n={}),on(t,"POST","events/"+e,n).then((function(){Vn.createNotification(t,"Event "+e+" successful fired!")}))};var sr=k(ur),cr=P(ur),fr=U(ur),hr=Object.freeze({hasData:sr,entityMap:cr,byId:fr}),lr=ar,pr=hr,_r=Object.freeze({actions:lr,getters:pr}),dr=Pe({SERVER_CONFIG_LOADED:null,COMPONENT_LOADED:null,LOG_OUT:null}),vr=Ne.Store,yr=Ne.toImmutable,mr=new vr({getInitialState:function(){return yr([])},initialize:function(){this.on(dr.COMPONENT_LOADED,J),this.on(dr.SERVER_CONFIG_LOADED,W),this.on(dr.LOG_OUT,X)}}),gr=Ne.Store,Sr=Ne.toImmutable,br=new gr({getInitialState:function(){return Sr({latitude:null,longitude:null,location_name:"Home",unit_system:"metric",time_zone:"UTC",config_dir:null,serverVersion:"unknown"})},initialize:function(){this.on(dr.SERVER_CONFIG_LOADED,Q),this.on(dr.LOG_OUT,Z)}}),Er=Object.freeze({configLoaded:$,fetchAll:tt,componentLoaded:et}),Ir=[["serverConfig","latitude"],["serverConfig","longitude"],function(t,e){return{latitude:t,longitude:e}}],Or=["serverConfig","location_name"],wr=["serverConfig","config_dir"],Tr=["serverConfig","serverVersion"],Ar=Object.freeze({locationGPS:Ir,locationName:Or,configDir:wr,serverVersion:Tr,isComponentLoaded:nt}),Dr=Er,Cr=Ar,zr=Object.freeze({register:rt,actions:Dr,getters:Cr}),Rr=Pe({NAVIGATE:null,SHOW_SIDEBAR:null,PANELS_LOADED:null,LOG_OUT:null}),Mr=Ne.Store,Lr=new Mr({getInitialState:function(){return"states"},initialize:function(){this.on(Rr.NAVIGATE,it),this.on(Rr.LOG_OUT,ot)}}),jr=Ne.Store,Nr=Ne.toImmutable,kr=new jr({getInitialState:function(){return Nr({})},initialize:function(){this.on(Rr.PANELS_LOADED,ut),this.on(Rr.LOG_OUT,at)}}),Pr=Ne.Store,Ur=new Pr({getInitialState:function(){return!1},initialize:function(){this.on(Rr.SHOW_SIDEBAR,st),this.on(Rr.LOG_OUT,ct)}}),Hr=Object.freeze({showSidebar:ft,navigate:ht,panelsLoaded:lt}),xr=["panels"],Vr=["currentPanel"],qr=[xr,Vr,function(t,e){return t.get(e)||null}],Fr=["showSidebar"],Gr=Object.freeze({panels:xr,activePanelName:Vr,activePanel:qr,showSidebar:Fr}),Kr=Pe({SELECT_ENTITY:null,LOG_OUT:null}),Br=Ne.Store,Yr=new Br({getInitialState:function(){return null},initialize:function(){this.on(Kr.SELECT_ENTITY,pt),this.on(Kr.LOG_OUT,_t)}}),Jr=Object.freeze({selectEntity:dt,deselectEntity:vt}),Wr=Pe({ENTITY_HISTORY_DATE_SELECTED:null,ENTITY_HISTORY_FETCH_START:null,ENTITY_HISTORY_FETCH_ERROR:null,ENTITY_HISTORY_FETCH_SUCCESS:null,RECENT_ENTITY_HISTORY_FETCH_START:null,RECENT_ENTITY_HISTORY_FETCH_ERROR:null,RECENT_ENTITY_HISTORY_FETCH_SUCCESS:null,LOG_OUT:null}),Xr=Ne.Store,Qr=new Xr({getInitialState:function(){var t=new Date;return t.setDate(t.getDate()-1),t.setHours(0,0,0,0),t.toISOString()},initialize:function(){this.on(Wr.ENTITY_HISTORY_DATE_SELECTED,mt),this.on(Wr.LOG_OUT,gt)}}),Zr=Ne.Store,$r=Ne.toImmutable,ti=new Zr({getInitialState:function(){return $r({})},initialize:function(){this.on(Wr.ENTITY_HISTORY_FETCH_SUCCESS,St),this.on(Wr.LOG_OUT,bt)}}),ei=Ne.Store,ni=new ei({getInitialState:function(){return!1},initialize:function(){this.on(Wr.ENTITY_HISTORY_FETCH_START,(function(){return!0})),this.on(Wr.ENTITY_HISTORY_FETCH_SUCCESS,(function(){return!1})),this.on(Wr.ENTITY_HISTORY_FETCH_ERROR,(function(){return!1})),this.on(Wr.RECENT_ENTITY_HISTORY_FETCH_START,(function(){return!0})),this.on(Wr.RECENT_ENTITY_HISTORY_FETCH_SUCCESS,(function(){return!1})),this.on(Wr.RECENT_ENTITY_HISTORY_FETCH_ERROR,(function(){return!1})),this.on(Wr.LOG_OUT,(function(){return!1}))}}),ri=Ne.Store,ii=Ne.toImmutable,oi=new ri({getInitialState:function(){return ii({})},initialize:function(){this.on(Wr.RECENT_ENTITY_HISTORY_FETCH_SUCCESS,Et),this.on(Wr.LOG_OUT,It)}}),ui=Ne.Store,ai=Ne.toImmutable,si="ALL_ENTRY_FETCH",ci=new ui({getInitialState:function(){return ai({})},initialize:function(){this.on(Wr.RECENT_ENTITY_HISTORY_FETCH_SUCCESS,Ot),this.on(Wr.LOG_OUT,wt)}}),fi=Ne.toImmutable,hi=["isLoadingEntityHistory"],li=["currentEntityHistoryDate"],pi=["entityHistory"],_i=[li,pi,function(t,e){return e.get(t)||fi({})}],di=[li,pi,function(t,e){return!!e.get(t)}],vi=["recentEntityHistory"],yi=["recentEntityHistory"],mi=Object.freeze({isLoadingEntityHistory:hi,currentDate:li,entityHistoryMap:pi,entityHistoryForCurrentDate:_i,hasDataForCurrentDate:di,recentEntityHistoryMap:vi,recentEntityHistoryUpdatedMap:yi}),gi=Object.freeze({changeCurrentDate:Tt,fetchRecent:At,fetchDate:Dt,fetchSelectedDate:Ct}),Si=gi,bi=mi,Ei=Object.freeze({register:zt,actions:Si,getters:bi}),Ii=["moreInfoEntityId"],Oi=[Ii,function(t){return null!==t}],wi=[Ii,Rn.entityMap,function(t,e){return e.get(t)||null}],Ti=[Ii,bi.recentEntityHistoryMap,function(t,e){return e.get(t)}],Ai=[Ii,bi.recentEntityHistoryUpdatedMap,function(t,e){return yt(e.get(t))}],Di=Object.freeze({currentEntityId:Ii,hasCurrentEntityId:Oi,currentEntity:wi,currentEntityHistory:Ti,isCurrentEntityHistoryStale:Ai}),Ci=Jr,zi=Di,Ri=Object.freeze({register:Rt,actions:Ci,getters:zi}),Mi=Pe({SELECT_VIEW:null}),Li=Ne.Store,ji=new Li({getInitialState:function(){return null},initialize:function(){this.on(Mi.SELECT_VIEW,(function(t,e){var n=e.view;return n})),this.on(un.API_FETCH_SUCCESS,Mt)}}),Ni=Object.freeze({selectView:Lt}),ki=Ne.Immutable,Pi="group.default_view",Ui=["persistent_notification","configurator"],Hi=["currentView"],xi=[Rn.entityMap,function(t){return t.filter((function(t){return"group"===t.domain&&t.attributes.view&&t.entityId!==Pi}))}],Vi=[Rn.entityMap,Hi,function(t,e){var n;return n=e?t.get(e):t.get(Pi),n?(new ki.Map).withMutations((function(e){jt(e,t,n),t.valueSeq().forEach((function(t,n){Ui.indexOf(t.domain)!==-1&&e.set(n,t)}))})):t.filter((function(t){return!t.attributes.hidden}))}],qi=Object.freeze({currentView:Hi,views:xi,currentViewEntities:Vi}),Fi=Ni,Gi=qi,Ki=Object.freeze({register:Nt,actions:Fi,getters:Gi}),Bi=history.pushState&&!0,Yi="Home Assistant",Ji={},Wi=Object.freeze({startSync:Vt,stopSync:qt}),Xi=Hr,Qi=Gr,Zi=Wi,$i=Object.freeze({register:Ft,actions:Xi,getters:Qi,urlSync:Zi}),to=Object.freeze({fetchAll:Gt}),eo=[Rn.hasData,pr.hasData,er.hasData,function(t,e,n){return t&&e&&n}],no=["isFetchingData"],ro=Object.freeze({isDataLoaded:eo,isFetching:no}),io=to,oo=ro,uo=Object.freeze({register:Kt,actions:io,getters:oo}),ao=function(t,e){switch(e.event_type){case"state_changed":e.data.new_state?zn.incrementData(t,e.data.new_state):zn.removeData(t,e.data.entity_id);break;case"component_loaded":Dr.componentLoaded(t,e.data.component);break;case"service_registered":tr.serviceRegistered(t,e.data.domain,e.data.service)}},so=6e4,co=["state_changed","component_loaded","service_registered"],fo={},ho=Object.freeze({start:Jt}),lo=["streamStatus","isStreaming"],po=["streamStatus","hasError"],_o=Object.freeze({isStreamingEvents:lo,hasStreamingEventsError:po}),vo=ho,yo=_o,mo=Object.freeze({register:Wt,actions:vo,getters:yo}),go="Unexpected error",So=Object.freeze({validate:Xt,logOut:Qt}),bo=["authAttempt","isValidating"],Eo=["authAttempt","isInvalid"],Io=["authAttempt","errorMessage"],Oo=["rememberAuth"],wo=[["authAttempt","authToken"],["authAttempt","host"],function(t,e){return{authToken:t,host:e}}],To=["authCurrent","authToken"],Ao=[To,["authCurrent","host"],function(t,e){return{authToken:t,host:e}}],Do=[bo,["authAttempt","authToken"],["authCurrent","authToken"],function(t,e,n){return t?e:n}],Co=[bo,wo,Ao,function(t,e,n){return t?e:n}],zo=Object.freeze({isValidating:bo,isInvalidAttempt:Eo,attemptErrorMessage:Io,rememberAuth:Oo,attemptAuthInfo:wo,currentAuthToken:To,currentAuthInfo:Ao,authToken:Do,authInfo:Co}),Ro=So,Mo=zo,Lo=Object.freeze({register:Zt,actions:Ro,getters:Mo}),jo=$t(),No={authToken:{getter:[Mo.currentAuthToken,Mo.rememberAuth,function(t,e){return e?t:null}],defaultValue:null},showSidebar:{getter:Qi.showSidebar,defaultValue:!1}},ko={};Object.keys(No).forEach((function(t){t in jo||(jo[t]=No[t].defaultValue),Object.defineProperty(ko,t,{get:function(){try{return JSON.parse(jo[t])}catch(e){return No[t].defaultValue}}})})),ko.startSync=function(t){Object.keys(No).forEach((function(e){var n=No[e],r=n.getter,i=function(t){jo[e]=JSON.stringify(t)};t.observe(r,i),i(t.evaluate(r))}))};var Po=ko,Uo=Ne.Reactor,Ho=0,xo=Ne.toImmutable,Vo={UNIT_TEMP_C:"°C",UNIT_TEMP_F:"°F"},qo={expandGroup:ne,isStaleTime:yt,parseDateTime:H,temperatureUnits:Vo},Fo=Object.freeze({fetchErrorLog:re}),Go=Fo,Ko=Object.freeze({actions:Go}),Bo=Pe({LOGBOOK_DATE_SELECTED:null,LOGBOOK_ENTRIES_FETCH_START:null,LOGBOOK_ENTRIES_FETCH_ERROR:null,LOGBOOK_ENTRIES_FETCH_SUCCESS:null}),Yo=Ne.Store,Jo=new Yo({getInitialState:function(){var t=new Date;return t.setHours(0,0,0,0),t.toISOString()},initialize:function(){this.on(Bo.LOGBOOK_DATE_SELECTED,ie),this.on(Bo.LOG_OUT,oe)}}),Wo=Ne.Store,Xo=new Wo({getInitialState:function(){return!1},initialize:function(){this.on(Bo.LOGBOOK_ENTRIES_FETCH_START,(function(){return!0})),this.on(Bo.LOGBOOK_ENTRIES_FETCH_SUCCESS,(function(){return!1})),this.on(Bo.LOGBOOK_ENTRIES_FETCH_ERROR,(function(){return!1})),this.on(Bo.LOG_OUT,(function(){return!1}))}}),Qo=Ne.Immutable,Zo=new Qo.Record({when:null,name:null,message:null,domain:null,entityId:null},"LogbookEntry"),$o=(function(t){function e(e,n,r,i,o){t.call(this,{when:e,name:n,message:r,domain:i,entityId:o})}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.fromJSON=function(t){var n=t.when,r=t.name,i=t.message,o=t.domain,u=t.entity_id;return new e(H(n),r,i,o,u)},e})(Zo),tu=Ne.Store,eu=Ne.toImmutable,nu=new tu({getInitialState:function(){return eu({})},initialize:function(){this.on(Bo.LOGBOOK_ENTRIES_FETCH_SUCCESS,ue),this.on(Bo.LOG_OUT,ae)}}),ru=Ne.Store,iu=Ne.toImmutable,ou=new ru({getInitialState:function(){return iu({})},initialize:function(){this.on(Bo.LOGBOOK_ENTRIES_FETCH_SUCCESS,se),this.on(Bo.LOG_OUT,ce)}}),uu=Object.freeze({changeCurrentDate:fe,fetchDate:he}),au=Ne.toImmutable,su=6e4,cu=["currentLogbookDate"],fu=[cu,["logbookEntriesUpdated"],function(t,e){return le(e.get(t))}],hu=[cu,["logbookEntries"],function(t,e){return e.get(t)||au([])}],lu=["isLoadingLogbookEntries"],pu=Object.freeze({currentDate:cu,isCurrentStale:fu,currentEntries:hu,isLoadingEntries:lu}),_u=uu,du=pu,vu=Object.freeze({register:pe,actions:_u,getters:du}),yu=Pe({PUSH_NOTIFICATIONS_SUBSCRIBE:null,PUSH_NOTIFICATIONS_UNSUBSCRIBE:null}),mu=Ne.Store,gu=Ne.toImmutable,Su=new mu({getInitialState:function(){return gu({supported:"PushManager"in window&&("https:"===document.location.protocol||"localhost"===document.location.hostname||"127.0.0.1"===document.location.hostname),active:"Notification"in window&&"granted"===Notification.permission})},initialize:function(){this.on(yu.PUSH_NOTIFICATIONS_SUBSCRIBE,_e),this.on(yu.PUSH_NOTIFICATIONS_UNSUBSCRIBE,de),this.on(yu.LOG_OUT,ve)}}),bu=Object.freeze({subscribePushNotifications:ye,unsubscribePushNotifications:me}),Eu=["pushNotifications","supported"],Iu=["pushNotifications","active"],Ou=Object.freeze({isSupported:Eu,isActive:Iu}),wu=bu,Tu=Ou,Au=Object.freeze({register:ge,actions:wu,getters:Tu}),Du=Object.freeze({render:Se}),Cu=Du,zu=Object.freeze({actions:Cu}),Ru=Ne.Store,Mu=new Ru({getInitialState:function(){return"webkitSpeechRecognition"in window}}),Lu=Pe({VOICE_START:null,VOICE_RESULT:null,VOICE_TRANSMITTING:null,VOICE_DONE:null,VOICE_ERROR:null}),ju=Ne.Store,Nu=Ne.toImmutable,ku=new ju({getInitialState:function(){return Nu({isListening:!1,isTransmitting:!1,interimTranscript:"",finalTranscript:""})},initialize:function(){this.on(Lu.VOICE_START,be),this.on(Lu.VOICE_RESULT,Ee),this.on(Lu.VOICE_TRANSMITTING,Ie),this.on(Lu.VOICE_DONE,Oe),this.on(Lu.VOICE_ERROR,we),this.on(Lu.LOG_OUT,Te)}}),Pu={},Uu=Object.freeze({stop:Ce,finish:ze,listen:Re}),Hu=["isVoiceSupported"],xu=["currentVoiceCommand","isListening"],Vu=["currentVoiceCommand","isTransmitting"],qu=["currentVoiceCommand","interimTranscript"],Fu=["currentVoiceCommand","finalTranscript"],Gu=[qu,Fu,function(t,e){return t.slice(e.length)}],Ku=Object.freeze({isVoiceSupported:Hu,isListening:xu,isTransmitting:Vu,interimTranscript:qu,finalTranscript:Fu,extraInterimTranscript:Gu}),Bu=Uu,Yu=Ku,Ju=Object.freeze({register:Me,actions:Bu,getters:Yu}),Wu=function(){var t=te();Object.defineProperties(this,{demo:{value:!1,enumerable:!0},dev:{value:!1,enumerable:!0},localStoragePreferences:{value:Po,enumerable:!0},reactor:{value:t,enumerable:!0},util:{value:qo,enumerable:!0},callApi:{value:on.bind(null,t)},startLocalStoragePreferencesSync:{value:Po.startSync.bind(Po,t)},startUrlSync:{value:Zi.startSync.bind(null,t)},stopUrlSync:{value:Zi.stopSync.bind(null,t)}}),ee(this,t,{auth:Lo,config:zr,entity:Mn,entityHistory:Ei,errorLog:Ko,event:_r,logbook:vu,moreInfo:Ri,navigation:$i,notification:Fn,pushNotification:Au,restApi:dn,service:nr,stream:mo,sync:uo,template:zu,view:Ki,voice:Ju})},Xu=new Wu;window.validateAuth=function(t,e){Xu.authActions.validate(t,{rememberAuth:e,useStreaming:Xu.localStoragePreferences.useStreaming})},window.removeInitMsg=function(){var t=document.getElementById("ha-init-skeleton");t&&t.parentElement.removeChild(t)},Xu.reactor.batch((function(){Xu.navigationActions.showSidebar(Xu.localStoragePreferences.showSidebar),window.noAuth?window.validateAuth("",!1):Xu.localStoragePreferences.authToken&&window.validateAuth(Xu.localStoragePreferences.authToken,!0)})),setTimeout(Xu.startLocalStoragePreferencesSync,5e3),"serviceWorker"in navigator&&window.addEventListener("load",(function(){navigator.serviceWorker.register("/service_worker.js")})),window.hass=Xu})(); +!(function(){"use strict";function t(t){return t&&t.__esModule?t.default:t}function e(t,e){return e={exports:{}},t(e,e.exports),e.exports}function n(t,e){var n=e.authToken,r=e.host;return xe({authToken:n,host:r,isValidating:!0,isInvalid:!1,errorMessage:""})}function r(){return Ve.getInitialState()}function i(t,e){var n=e.errorMessage;return t.withMutations((function(t){return t.set("isValidating",!1).set("isInvalid",!0).set("errorMessage",n)}))}function o(t,e){var n=e.authToken,r=e.host;return Fe({authToken:n,host:r})}function u(){return Ge.getInitialState()}function a(t,e){var n=e.rememberAuth;return n}function s(t){return t.withMutations((function(t){t.set("isStreaming",!0).set("hasError",!1)}))}function c(t){return t.withMutations((function(t){t.set("isStreaming",!1).set("hasError",!0)}))}function f(){return Xe.getInitialState()}function h(t){return{type:"auth",api_password:t}}function l(){return{type:"get_states"}}function p(){return{type:"get_config"}}function _(){return{type:"get_services"}}function d(){return{type:"get_panels"}}function v(t,e,n){var r={type:"call_service",domain:t,service:e};return n&&(r.service_data=n),r}function y(t){var e={type:"subscribe_events"};return t&&(e.event_type=t),e}function m(t){return{type:"unsubscribe_events",subscription:t}}function g(){return{type:"ping"}}function S(t,e){return{type:"result",success:!1,error:{code:t,message:e}}}function b(t){return t.result}function E(t,e){var n=new tn(t,e);return n.connect()}function I(t,e,n,r){void 0===r&&(r=null);var i=t.evaluate(Mo.authInfo),o=i.host+"/api/"+n;return new Promise(function(t,n){var u=new XMLHttpRequest;u.open(e,o,!0),u.setRequestHeader("X-HA-access",i.authToken),u.onload=function(){var e;try{e="application/json"===u.getResponseHeader("content-type")?JSON.parse(u.responseText):u.responseText}catch(t){e=u.responseText}u.status>199&&u.status<300?t(e):n(e)},u.onerror=function(){return n({})},r?(u.setRequestHeader("Content-Type","application/json;charset=UTF-8"),u.send(JSON.stringify(r))):u.send()})}function O(t,e){var n=e.model,r=e.result,i=e.params,o=n.entity;if(!r)return t;var u=i.replace?sn({}):t.get(o),a=Array.isArray(r)?r:[r],s=n.fromJSON||sn;return t.set(o,u.withMutations((function(t){for(var e=0;e<a.length;e++){var n=s(a[e]);t.set(n.id,n)}})))}function w(t,e){var n=e.model,r=e.params;return t.removeIn([n.entity,r.id])}function T(t){if(null===t||void 0===t)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}function A(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de","5"===Object.getOwnPropertyNames(t)[0])return!1;for(var e={},n=0;n<10;n++)e["_"+String.fromCharCode(n)]=n;var r=Object.getOwnPropertyNames(e).map((function(t){return e[t]}));if("0123456789"!==r.join(""))return!1;var i={};return"abcdefghijklmnopqrst".split("").forEach((function(t){i[t]=t})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},i)).join("")}catch(t){return!1}}function D(t){var e={};return e.incrementData=function(e,n,r){void 0===r&&(r={}),C(e,t,r,n)},e.replaceData=function(e,n,r){void 0===r&&(r={}),C(e,t,ln({},r,{replace:!0}),n)},e.removeData=function(e,n){j(e,t,{id:n})},t.fetch&&(e.fetch=function(e,n){return void 0===n&&(n={}),e.dispatch(un.API_FETCH_START,{model:t,params:n,method:"fetch"}),t.fetch(e,n).then(C.bind(null,e,t,n),z.bind(null,e,t,n))}),e.fetchAll=function(e,n){return void 0===n&&(n={}),e.dispatch(un.API_FETCH_START,{model:t,params:n,method:"fetchAll"}),t.fetchAll(e,n).then(C.bind(null,e,t,ln({},n,{replace:!0})),z.bind(null,e,t,n))},t.save&&(e.save=function(e,n){return void 0===n&&(n={}),e.dispatch(un.API_SAVE_START,{params:n}),t.save(e,n).then(R.bind(null,e,t,n),M.bind(null,e,t,n))}),t.delete&&(e.delete=function(e,n){return void 0===n&&(n={}),e.dispatch(un.API_DELETE_START,{params:n}),t.delete(e,n).then(j.bind(null,e,t,n),L.bind(null,e,t,n))}),e}function C(t,e,n,r){return t.dispatch(un.API_FETCH_SUCCESS,{model:e,params:n,result:r}),r}function z(t,e,n,r){return t.dispatch(un.API_FETCH_FAIL,{model:e,params:n,reason:r}),Promise.reject(r)}function R(t,e,n,r){return t.dispatch(un.API_SAVE_SUCCESS,{model:e,params:n,result:r}),r}function M(t,e,n,r){return t.dispatch(un.API_SAVE_FAIL,{model:e,params:n,reason:r}),Promise.reject(r)}function j(t,e,n,r){return t.dispatch(un.API_DELETE_SUCCESS,{model:e,params:n,result:r}),r}function L(t,e,n,r){return t.dispatch(un.API_DELETE_FAIL,{model:e,params:n,reason:r}),Promise.reject(r)}function N(t){t.registerStores({restApiCache:cn})}function k(t){return[["restApiCache",t.entity],function(t){return!!t}]}function P(t){return[["restApiCache",t.entity],function(t){return t||pn({})}]}function U(t){return function(e){return["restApiCache",t.entity,e]}}function H(t){return new Date(t)}function x(t,e){var n=e.message;return t.set(t.size,n)}function V(){return kn.getInitialState()}function q(t,e){t.dispatch(jn.NOTIFICATION_CREATED,{message:e})}function F(t){t.registerStores({notifications:kn})}function G(t,e){if("lock"===t)return!0;if("garage_door"===t)return!0;var n=e.get(t);return!!n&&n.services.has("turn_on")}function K(t,e){return!!t&&("group"===t.domain?"on"===t.state||"off"===t.state:G(t.domain,e))}function B(t,e){return[Qn(t),function(t){return!!t&&t.services.has(e)}]}function Y(t){return[Rn.byId(t),Xn,K]}function J(t,e){var n=e.component;return t.push(n)}function W(t,e){var n=e.components;return yr(n)}function X(){return mr.getInitialState()}function Q(t,e){var n=e.latitude,r=e.longitude,i=e.location_name,o=e.unit_system,u=e.time_zone,a=e.config_dir,s=e.version;return Sr({latitude:n,longitude:r,location_name:i,unit_system:o,time_zone:u,config_dir:a,serverVersion:s})}function Z(){return br.getInitialState()}function $(t,e){t.dispatch(dr.SERVER_CONFIG_LOADED,e)}function tt(t){on(t,"GET","config").then((function(e){return $(t,e)}))}function et(t,e){t.dispatch(dr.COMPONENT_LOADED,{component:e})}function nt(t){return[["serverComponent"],function(e){return e.contains(t)}]}function rt(t){t.registerStores({serverComponent:mr,serverConfig:br})}function it(t,e){var n=e.pane;return n}function ot(){return jr.getInitialState()}function ut(t,e){var n=e.panels;return Nr(n)}function at(){return kr.getInitialState()}function st(t,e){var n=e.show;return!!n}function ct(){return Ur.getInitialState()}function ft(t,e){t.dispatch(Rr.SHOW_SIDEBAR,{show:e})}function ht(t,e){t.dispatch(Rr.NAVIGATE,{pane:e})}function lt(t,e){t.dispatch(Rr.PANELS_LOADED,{panels:e})}function pt(t,e){var n=e.entityId;return n}function _t(){return Yr.getInitialState()}function dt(t,e){t.dispatch(Kr.SELECT_ENTITY,{entityId:e})}function vt(t){t.dispatch(Kr.SELECT_ENTITY,{entityId:null})}function yt(t){return!t||(new Date).getTime()-t>6e4}function mt(t,e){var n=e.date;return n.toISOString()}function gt(){return Qr.getInitialState()}function St(t,e){var n=e.date,r=e.stateHistory;return 0===r.length?t.set(n,$r({})):t.withMutations((function(t){r.forEach((function(e){return t.setIn([n,e[0].entity_id],$r(e.map(In.fromJSON)))}))}))}function bt(){return ti.getInitialState()}function Et(t,e){var n=e.stateHistory;return t.withMutations((function(t){n.forEach((function(e){return t.set(e[0].entity_id,ii(e.map(In.fromJSON)))}))}))}function It(){return oi.getInitialState()}function Ot(t,e){var n=e.stateHistory,r=(new Date).getTime();return t.withMutations((function(t){n.forEach((function(e){return t.set(e[0].entity_id,r)})),history.length>1&&t.set(si,r)}))}function wt(){return ci.getInitialState()}function Tt(t,e){t.dispatch(Wr.ENTITY_HISTORY_DATE_SELECTED,{date:e})}function At(t,e){void 0===e&&(e=null),t.dispatch(Wr.RECENT_ENTITY_HISTORY_FETCH_START,{});var n="history/period";return null!==e&&(n+="?filter_entity_id="+e),on(t,"GET",n).then((function(e){return t.dispatch(Wr.RECENT_ENTITY_HISTORY_FETCH_SUCCESS,{stateHistory:e})}),(function(){return t.dispatch(Wr.RECENT_ENTITY_HISTORY_FETCH_ERROR,{})}))}function Dt(t,e){return t.dispatch(Wr.ENTITY_HISTORY_FETCH_START,{date:e}),on(t,"GET","history/period/"+e).then((function(n){return t.dispatch(Wr.ENTITY_HISTORY_FETCH_SUCCESS,{date:e,stateHistory:n})}),(function(){return t.dispatch(Wr.ENTITY_HISTORY_FETCH_ERROR,{})}))}function Ct(t){var e=t.evaluate(li);return Dt(t,e)}function zt(t){t.registerStores({currentEntityHistoryDate:Qr,entityHistory:ti,isLoadingEntityHistory:ni,recentEntityHistory:oi,recentEntityHistoryUpdated:ci})}function Rt(t){t.registerStores({moreInfoEntityId:Yr})}function Mt(t,e){var n=e.model,r=e.result,i=e.params;if(null===t||"entity"!==n.entity||!i.replace)return t;for(var o=0;o<r.length;o++)if(r[o].entity_id===t)return t;return null}function jt(t,e){t.dispatch(Mi.SELECT_VIEW,{view:e})}function Lt(t,e,n,r){void 0===r&&(r=!0),n.attributes.entity_id.forEach((function(n){if(!t.has(n)){var i=e.get(n);i&&!i.attributes.hidden&&(t.set(n,i),"group"===i.domain&&r&&Lt(t,e,i,!1))}}))}function Nt(t){t.registerStores({currentView:Li})}function kt(t){return Ji[t.hassId]}function Pt(t,e){var n={pane:t};return"states"===t&&(n.view=e||null),n}function Ut(t,e){return"states"===t&&e?"/"+t+"/"+e:"/"+t}function Ht(t){var e,n;if("/"===window.location.pathname)e=t.evaluate(Vr),n=t.evaluate(Gi.currentView);else{var r=window.location.pathname.substr(1).split("/");e=r[0],n=r[1],t.batch((function(){ht(t,e),n&&Fi.selectView(t,n)}))}history.replaceState(Pt(e,n),Yi,Ut(e,n))}function xt(t,e){var n=e.state,r=n.pane,i=n.view;t.evaluate(zi.hasCurrentEntityId)?(kt(t).ignoreNextDeselectEntity=!0,Ci.deselectEntity(t)):r===t.evaluate(Vr)&&i===t.evaluate(Gi.currentView)||t.batch((function(){ht(t,r),void 0!==i&&Fi.selectView(t,i)}))}function Vt(t){if(Bi){Ht(t);var e={ignoreNextDeselectEntity:!1,popstateChangeListener:xt.bind(null,t),unwatchNavigationObserver:t.observe(Vr,(function(t){t!==history.state.pane&&history.pushState(Pt(t,history.state.view),Yi,Ut(t,history.state.view))})),unwatchViewObserver:t.observe(Gi.currentView,(function(t){t!==history.state.view&&history.pushState(Pt(history.state.pane,t),Yi,Ut(history.state.pane,t))})),unwatchMoreInfoObserver:t.observe(zi.hasCurrentEntityId,(function(t){t?history.pushState(history.state,Yi,window.location.pathname):e.ignoreNextDeselectEntity?e.ignoreNextDeselectEntity=!1:setTimeout((function(){return history.back()}),0)}))};Ji[t.hassId]=e,window.addEventListener("popstate",e.popstateChangeListener)}}function qt(t){if(Bi){var e=kt(t);e&&(e.unwatchNavigationObserver(),e.unwatchViewObserver(),e.unwatchMoreInfoObserver(),window.removeEventListener("popstate",e.popstateChangeListener),Ji[t.hassId]=!1)}}function Ft(t){t.registerStores({currentPanel:jr,panels:kr,showSidebar:Ur})}function Gt(t){return t.dispatch(en.API_FETCH_ALL_START,{}),on(t,"GET","bootstrap").then((function(e){t.batch((function(){zn.replaceData(t,e.states),tr.replaceData(t,e.services),lr.replaceData(t,e.events),Dr.configLoaded(t,e.config),Xi.panelsLoaded(t,e.panels),t.dispatch(en.API_FETCH_ALL_SUCCESS,{})}))}),(function(e){return t.dispatch(en.API_FETCH_ALL_FAIL,{message:e}),Promise.reject(e)}))}function Kt(t){t.registerStores({isFetchingData:rn})}function Bt(t,e,n){function r(){var c=(new Date).getTime()-a;c<e&&c>0?i=setTimeout(r,e-c):(i=null,n||(s=t.apply(u,o),i||(u=o=null)))}var i,o,u,a,s;null==e&&(e=100);var c=function(){u=this,o=arguments,a=(new Date).getTime();var c=n&&!i;return i||(i=setTimeout(r,e)),c&&(s=t.apply(u,o),u=o=null),s};return c.clear=function(){i&&(clearTimeout(i),i=null)},c}function Yt(t){var e=fo[t.hassId];e&&(e.scheduleHealthCheck.clear(),e.conn.close(),fo[t.hassId]=!1)}function Jt(t,e){void 0===e&&(e={});var n=e.syncOnInitialConnect;void 0===n&&(n=!0),Yt(t);var r=t.evaluate(Mo.authToken),i="https:"===document.location.protocol?"wss://":"ws://";i+=document.location.hostname,document.location.port&&(i+=":"+document.location.port),i+="/api/websocket",E(i,{authToken:r}).then((function(e){var r=Bt((function(){return e.ping()}),so);r(),e.socket.addEventListener("message",r),fo[t.hassId]={conn:e,scheduleHealthCheck:r},co.forEach((function(n){return e.subscribeEvents(ao.bind(null,t),n)})),t.batch((function(){t.dispatch(Ye.STREAM_START),n&&io.fetchAll(t)})),e.addEventListener("disconnected",(function(){t.dispatch(Ye.STREAM_ERROR)})),e.addEventListener("ready",(function(){t.batch((function(){t.dispatch(Ye.STREAM_START),io.fetchAll(t)}))}))}))}function Wt(t){t.registerStores({streamStatus:Xe})}function Xt(t,e,n){void 0===n&&(n={});var r=n.rememberAuth;void 0===r&&(r=!1);var i=n.host;void 0===i&&(i=""),t.dispatch(Ue.VALIDATING_AUTH_TOKEN,{authToken:e,host:i}),io.fetchAll(t).then((function(){t.dispatch(Ue.VALID_AUTH_TOKEN,{authToken:e,host:i,rememberAuth:r}),vo.start(t,{syncOnInitialConnect:!1})}),(function(e){void 0===e&&(e={});var n=e.message;void 0===n&&(n=go),t.dispatch(Ue.INVALID_AUTH_TOKEN,{errorMessage:n})}))}function Qt(t){t.dispatch(Ue.LOG_OUT,{})}function Zt(t){t.registerStores({authAttempt:Ve,authCurrent:Ge,rememberAuth:Be})}function $t(){if(!("localStorage"in window))return{};var t=window.localStorage,e="___test";try{return t.setItem(e,e),t.removeItem(e),t}catch(t){return{}}}function te(){var t=new Uo({debug:!1});return t.hassId=Ho++,t}function ee(t,e,n){Object.keys(n).forEach((function(r){var i=n[r];if("register"in i&&i.register(e),"getters"in i&&Object.defineProperty(t,r+"Getters",{value:i.getters,enumerable:!0}),"actions"in i){var o={};Object.getOwnPropertyNames(i.actions).forEach((function(t){"function"==typeof i.actions[t]&&Object.defineProperty(o,t,{value:i.actions[t].bind(null,e),enumerable:!0})})),Object.defineProperty(t,r+"Actions",{value:o,enumerable:!0})}}))}function ne(t,e){return xo(t.attributes.entity_id.map((function(t){return e.get(t)})).filter((function(t){return!!t})))}function re(t){return on(t,"GET","error_log")}function ie(t,e){var n=e.date;return n.toISOString()}function oe(){return Jo.getInitialState()}function ue(t,e){var n=e.date,r=e.entries;return t.set(n,eu(r.map($o.fromJSON)))}function ae(){return nu.getInitialState()}function se(t,e){var n=e.date;return t.set(n,(new Date).getTime())}function ce(){return ou.getInitialState()}function fe(t,e){t.dispatch(Bo.LOGBOOK_DATE_SELECTED,{date:e})}function he(t,e){t.dispatch(Bo.LOGBOOK_ENTRIES_FETCH_START,{date:e}),on(t,"GET","logbook/"+e).then((function(n){return t.dispatch(Bo.LOGBOOK_ENTRIES_FETCH_SUCCESS,{date:e,entries:n})}),(function(){return t.dispatch(Bo.LOGBOOK_ENTRIES_FETCH_ERROR,{})}))}function le(t){return!t||(new Date).getTime()-t>su}function pe(t){t.registerStores({currentLogbookDate:Jo,isLoadingLogbookEntries:Xo,logbookEntries:nu,logbookEntriesUpdated:ou})}function _e(t){return t.set("active",!0)}function de(t){return t.set("active",!1)}function ve(){return Su.getInitialState()}function ye(t){return navigator.serviceWorker.getRegistration().then((function(t){if(!t)throw new Error("No service worker registered.");return t.pushManager.subscribe({userVisibleOnly:!0})})).then((function(e){var n;return n=navigator.userAgent.toLowerCase().indexOf("firefox")>-1?"firefox":"chrome",on(t,"POST","notify.html5",{subscription:e,browser:n}).then((function(){return t.dispatch(yu.PUSH_NOTIFICATIONS_SUBSCRIBE,{})})).then((function(){return!0}))})).catch((function(e){var n;return n=e.message&&e.message.indexOf("gcm_sender_id")!==-1?"Please setup the notify.html5 platform.":"Notification registration failed.",console.error(e),Vn.createNotification(t,n),!1}))}function me(t){return navigator.serviceWorker.getRegistration().then((function(t){if(!t)throw new Error("No service worker registered");return t.pushManager.subscribe({userVisibleOnly:!0})})).then((function(e){return on(t,"DELETE","notify.html5",{subscription:e}).then((function(){return e.unsubscribe()})).then((function(){return t.dispatch(yu.PUSH_NOTIFICATIONS_UNSUBSCRIBE,{})})).then((function(){return!0}))})).catch((function(e){var n="Failed unsubscribing for push notifications.";return console.error(e),Vn.createNotification(t,n),!1}))}function ge(t){t.registerStores({pushNotifications:Su})}function Se(t,e){return on(t,"POST","template",{template:e})}function be(t){return t.set("isListening",!0)}function Ee(t,e){var n=e.interimTranscript,r=e.finalTranscript;return t.withMutations((function(t){return t.set("isListening",!0).set("isTransmitting",!1).set("interimTranscript",n).set("finalTranscript",r)}))}function Ie(t,e){var n=e.finalTranscript;return t.withMutations((function(t){return t.set("isListening",!1).set("isTransmitting",!0).set("interimTranscript","").set("finalTranscript",n)}))}function Oe(){return ku.getInitialState()}function we(){return ku.getInitialState()}function Te(){return ku.getInitialState()}function Ae(t){return Pu[t.hassId]}function De(t){var e=Ae(t);if(e){var n=e.finalTranscript||e.interimTranscript;t.dispatch(ju.VOICE_TRANSMITTING,{finalTranscript:n}),tr.callService(t,"conversation","process",{text:n}).then((function(){t.dispatch(ju.VOICE_DONE)}),(function(){t.dispatch(ju.VOICE_ERROR)}))}}function Ce(t){var e=Ae(t);e&&(e.recognition.stop(),Pu[t.hassId]=!1)}function ze(t){De(t),Ce(t)}function Re(t){var e=ze.bind(null,t);e();var n=new webkitSpeechRecognition;Pu[t.hassId]={recognition:n,interimTranscript:"",finalTranscript:""},n.interimResults=!0,n.onstart=function(){return t.dispatch(ju.VOICE_START)},n.onerror=function(){return t.dispatch(ju.VOICE_ERROR)},n.onend=e,n.onresult=function(e){var n=Ae(t);if(n){for(var r="",i="",o=e.resultIndex;o<e.results.length;o++)e.results[o].isFinal?r+=e.results[o][0].transcript:i+=e.results[o][0].transcript;n.interimTranscript=i,n.finalTranscript+=r,t.dispatch(ju.VOICE_RESULT,{interimTranscript:i,finalTranscript:n.finalTranscript})}},n.start()}function Me(t){t.registerStores({currentVoiceCommand:ku,isVoiceSupported:Mu})}var je="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},Le=e((function(t,e){!(function(n,r){"object"==typeof e&&"object"==typeof t?t.exports=r():"function"==typeof define&&define.amd?define([],r):"object"==typeof e?e.Nuclear=r():n.Nuclear=r()})(je,(function(){return (function(t){function e(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,loaded:!1};return t[r].call(i.exports,i,i.exports,e),i.loaded=!0,i.exports}var n={};return e.m=t,e.c=n,e.p="",e(0)})([function(t,e,n){function r(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0}),n(1);var i=n(2),o=r(i),u=n(6),a=r(u),s=n(3),c=r(s),f=n(5),h=n(11),l=n(10),p=n(7),_=r(p);e.default={Reactor:a.default,Store:o.default,Immutable:c.default,isKeyPath:h.isKeyPath,isGetter:l.isGetter,toJS:f.toJS,toImmutable:f.toImmutable,isImmutable:f.isImmutable,createReactMixin:_.default},t.exports=e.default},function(t,e){try{window.console&&console.log||(console={log:function(){},debug:function(){},info:function(){},warn:function(){},error:function(){}})}catch(t){}},function(t,e,n){function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t){return t instanceof c}Object.defineProperty(e,"__esModule",{value:!0});var o=(function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}})();e.isStore=i;var u=n(3),a=n(4),s=n(5),c=(function(){function t(e){r(this,t),this.__handlers=(0,u.Map)({}),e&&(0,a.extend)(this,e),this.initialize()}return o(t,[{key:"initialize",value:function(){}},{key:"getInitialState",value:function(){return(0,u.Map)()}},{key:"handle",value:function(t,e,n){var r=this.__handlers.get(e);return"function"==typeof r?r.call(this,t,n,e):t}},{key:"handleReset",value:function(t){return this.getInitialState()}},{key:"on",value:function(t,e){this.__handlers=this.__handlers.set(t,e)}},{key:"serialize",value:function(t){return(0,s.toJS)(t)}},{key:"deserialize",value:function(t){return(0,s.toImmutable)(t)}}]),t})();e.default=(0,a.toFactory)(c)},function(t,e,n){!(function(e,n){t.exports=n()})(this,(function(){function t(t,e){e&&(t.prototype=Object.create(e.prototype)),t.prototype.constructor=t}function e(t){return t.value=!1,t}function n(t){t&&(t.value=!0)}function r(){}function i(t,e){e=e||0;for(var n=Math.max(0,t.length-e),r=new Array(n),i=0;i<n;i++)r[i]=t[i+e];return r}function o(t){return void 0===t.size&&(t.size=t.__iterate(a)),t.size}function u(t,e){if("number"!=typeof e){var n=+e;if(""+n!==e)return NaN;e=n}return e<0?o(t)+e:e}function a(){return!0}function s(t,e,n){return(0===t||void 0!==n&&t<=-n)&&(void 0===e||void 0!==n&&e>=n)}function c(t,e){return h(t,e,0)}function f(t,e){return h(t,e,e)}function h(t,e,n){return void 0===t?n:t<0?Math.max(0,e+t):void 0===e?t:Math.min(e,t)}function l(t){return v(t)?t:C(t)}function p(t){return y(t)?t:z(t)}function _(t){return m(t)?t:R(t)}function d(t){return v(t)&&!g(t)?t:M(t)}function v(t){return!(!t||!t[dn])}function y(t){return!(!t||!t[vn])}function m(t){return!(!t||!t[yn])}function g(t){return y(t)||m(t)}function S(t){return!(!t||!t[mn])}function b(t){this.next=t}function E(t,e,n,r){var i=0===t?e:1===t?n:[e,n];return r?r.value=i:r={value:i,done:!1},r}function I(){return{value:void 0,done:!0}}function O(t){return!!A(t)}function w(t){return t&&"function"==typeof t.next}function T(t){var e=A(t);return e&&e.call(t)}function A(t){var e=t&&(En&&t[En]||t[In]);if("function"==typeof e)return e}function D(t){return t&&"number"==typeof t.length}function C(t){return null===t||void 0===t?U():v(t)?t.toSeq():V(t)}function z(t){return null===t||void 0===t?U().toKeyedSeq():v(t)?y(t)?t.toSeq():t.fromEntrySeq():H(t)}function R(t){return null===t||void 0===t?U():v(t)?y(t)?t.entrySeq():t.toIndexedSeq():x(t)}function M(t){return(null===t||void 0===t?U():v(t)?y(t)?t.entrySeq():t:x(t)).toSetSeq()}function j(t){this._array=t,this.size=t.length}function L(t){var e=Object.keys(t);this._object=t,this._keys=e,this.size=e.length}function N(t){this._iterable=t,this.size=t.length||t.size}function k(t){this._iterator=t,this._iteratorCache=[]}function P(t){return!(!t||!t[wn])}function U(){return Tn||(Tn=new j([]))}function H(t){var e=Array.isArray(t)?new j(t).fromEntrySeq():w(t)?new k(t).fromEntrySeq():O(t)?new N(t).fromEntrySeq():"object"==typeof t?new L(t):void 0;if(!e)throw new TypeError("Expected Array or iterable object of [k, v] entries, or keyed object: "+t);return e}function x(t){var e=q(t);if(!e)throw new TypeError("Expected Array or iterable object of values: "+t);return e}function V(t){var e=q(t)||"object"==typeof t&&new L(t);if(!e)throw new TypeError("Expected Array or iterable object of values, or keyed object: "+t);return e}function q(t){return D(t)?new j(t):w(t)?new k(t):O(t)?new N(t):void 0}function F(t,e,n,r){var i=t._cache;if(i){for(var o=i.length-1,u=0;u<=o;u++){var a=i[n?o-u:u];if(e(a[1],r?a[0]:u,t)===!1)return u+1}return u}return t.__iterateUncached(e,n)}function G(t,e,n,r){var i=t._cache;if(i){var o=i.length-1,u=0;return new b(function(){var t=i[n?o-u:u];return u++>o?I():E(e,r?t[0]:u-1,t[1])})}return t.__iteratorUncached(e,n)}function K(){throw TypeError("Abstract")}function B(){}function Y(){}function J(){}function W(t,e){if(t===e||t!==t&&e!==e)return!0;if(!t||!e)return!1;if("function"==typeof t.valueOf&&"function"==typeof e.valueOf){if(t=t.valueOf(),e=e.valueOf(),t===e||t!==t&&e!==e)return!0;if(!t||!e)return!1}return!("function"!=typeof t.equals||"function"!=typeof e.equals||!t.equals(e))}function X(t,e){return e?Q(e,t,"",{"":t}):Z(t)}function Q(t,e,n,r){return Array.isArray(e)?t.call(r,n,R(e).map((function(n,r){return Q(t,n,r,e)}))):$(e)?t.call(r,n,z(e).map((function(n,r){return Q(t,n,r,e)}))):e}function Z(t){return Array.isArray(t)?R(t).map(Z).toList():$(t)?z(t).map(Z).toMap():t}function $(t){return t&&(t.constructor===Object||void 0===t.constructor)}function tt(t){return t>>>1&1073741824|3221225471&t}function et(t){if(t===!1||null===t||void 0===t)return 0;if("function"==typeof t.valueOf&&(t=t.valueOf(),t===!1||null===t||void 0===t))return 0;if(t===!0)return 1;var e=typeof t;if("number"===e){var n=0|t;for(n!==t&&(n^=4294967295*t);t>4294967295;)t/=4294967295,n^=t;return tt(n)}return"string"===e?t.length>Ln?nt(t):rt(t):"function"==typeof t.hashCode?t.hashCode():it(t)}function nt(t){var e=Pn[t];return void 0===e&&(e=rt(t),kn===Nn&&(kn=0,Pn={}),kn++,Pn[t]=e),e}function rt(t){for(var e=0,n=0;n<t.length;n++)e=31*e+t.charCodeAt(n)|0;return tt(e)}function it(t){var e;if(Rn&&(e=An.get(t),void 0!==e))return e;if(e=t[jn],void 0!==e)return e;if(!zn){if(e=t.propertyIsEnumerable&&t.propertyIsEnumerable[jn],void 0!==e)return e;if(e=ot(t),void 0!==e)return e}if(e=++Mn,1073741824&Mn&&(Mn=0),Rn)An.set(t,e);else{if(void 0!==Cn&&Cn(t)===!1)throw new Error("Non-extensible objects are not allowed as keys.");if(zn)Object.defineProperty(t,jn,{enumerable:!1,configurable:!1,writable:!1,value:e});else if(void 0!==t.propertyIsEnumerable&&t.propertyIsEnumerable===t.constructor.prototype.propertyIsEnumerable)t.propertyIsEnumerable=function(){return this.constructor.prototype.propertyIsEnumerable.apply(this,arguments)},t.propertyIsEnumerable[jn]=e;else{if(void 0===t.nodeType)throw new Error("Unable to set a non-enumerable property on object.");t[jn]=e}}return e}function ot(t){if(t&&t.nodeType>0)switch(t.nodeType){case 1:return t.uniqueID;case 9:return t.documentElement&&t.documentElement.uniqueID}}function ut(t,e){if(!t)throw new Error(e)}function at(t){ut(t!==1/0,"Cannot perform this action with an infinite size.")}function st(t,e){this._iter=t,this._useKeys=e,this.size=t.size}function ct(t){this._iter=t,this.size=t.size}function ft(t){this._iter=t,this.size=t.size}function ht(t){this._iter=t,this.size=t.size}function lt(t){var e=jt(t);return e._iter=t,e.size=t.size,e.flip=function(){return t},e.reverse=function(){var e=t.reverse.apply(this);return e.flip=function(){return t.reverse()},e},e.has=function(e){return t.includes(e)},e.includes=function(e){return t.has(e)},e.cacheResult=Lt,e.__iterateUncached=function(e,n){var r=this;return t.__iterate((function(t,n){return e(n,t,r)!==!1}),n)},e.__iteratorUncached=function(e,n){if(e===bn){var r=t.__iterator(e,n);return new b(function(){var t=r.next();if(!t.done){var e=t.value[0];t.value[0]=t.value[1],t.value[1]=e}return t})}return t.__iterator(e===Sn?gn:Sn,n)},e}function pt(t,e,n){var r=jt(t);return r.size=t.size,r.has=function(e){return t.has(e)},r.get=function(r,i){var o=t.get(r,ln);return o===ln?i:e.call(n,o,r,t)},r.__iterateUncached=function(r,i){var o=this;return t.__iterate((function(t,i,u){return r(e.call(n,t,i,u),i,o)!==!1}),i)},r.__iteratorUncached=function(r,i){var o=t.__iterator(bn,i);return new b(function(){var i=o.next();if(i.done)return i;var u=i.value,a=u[0];return E(r,a,e.call(n,u[1],a,t),i)})},r}function _t(t,e){var n=jt(t);return n._iter=t,n.size=t.size,n.reverse=function(){return t},t.flip&&(n.flip=function(){var e=lt(t);return e.reverse=function(){return t.flip()},e}),n.get=function(n,r){return t.get(e?n:-1-n,r)},n.has=function(n){return t.has(e?n:-1-n)},n.includes=function(e){return t.includes(e)},n.cacheResult=Lt,n.__iterate=function(e,n){var r=this;return t.__iterate((function(t,n){return e(t,n,r)}),!n)},n.__iterator=function(e,n){return t.__iterator(e,!n)},n}function dt(t,e,n,r){var i=jt(t);return r&&(i.has=function(r){var i=t.get(r,ln);return i!==ln&&!!e.call(n,i,r,t)},i.get=function(r,i){var o=t.get(r,ln);return o!==ln&&e.call(n,o,r,t)?o:i}),i.__iterateUncached=function(i,o){var u=this,a=0;return t.__iterate((function(t,o,s){if(e.call(n,t,o,s))return a++,i(t,r?o:a-1,u)}),o),a},i.__iteratorUncached=function(i,o){var u=t.__iterator(bn,o),a=0;return new b(function(){for(;;){var o=u.next();if(o.done)return o;var s=o.value,c=s[0],f=s[1];if(e.call(n,f,c,t))return E(i,r?c:a++,f,o)}})},i}function vt(t,e,n){var r=Pt().asMutable();return t.__iterate((function(i,o){r.update(e.call(n,i,o,t),0,(function(t){return t+1}))})),r.asImmutable()}function yt(t,e,n){var r=y(t),i=(S(t)?Ie():Pt()).asMutable();t.__iterate((function(o,u){i.update(e.call(n,o,u,t),(function(t){return t=t||[],t.push(r?[u,o]:o),t}))}));var o=Mt(t);return i.map((function(e){return Ct(t,o(e))}))}function mt(t,e,n,r){var i=t.size;if(void 0!==e&&(e|=0),void 0!==n&&(n|=0),s(e,n,i))return t;var o=c(e,i),a=f(n,i);if(o!==o||a!==a)return mt(t.toSeq().cacheResult(),e,n,r);var h,l=a-o;l===l&&(h=l<0?0:l);var p=jt(t);return p.size=0===h?h:t.size&&h||void 0,!r&&P(t)&&h>=0&&(p.get=function(e,n){return e=u(this,e),e>=0&&e<h?t.get(e+o,n):n}),p.__iterateUncached=function(e,n){var i=this;if(0===h)return 0;if(n)return this.cacheResult().__iterate(e,n);var u=0,a=!0,s=0;return t.__iterate((function(t,n){if(!a||!(a=u++<o))return s++,e(t,r?n:s-1,i)!==!1&&s!==h})),s},p.__iteratorUncached=function(e,n){if(0!==h&&n)return this.cacheResult().__iterator(e,n);var i=0!==h&&t.__iterator(e,n),u=0,a=0;return new b(function(){for(;u++<o;)i.next();if(++a>h)return I();var t=i.next();return r||e===Sn?t:e===gn?E(e,a-1,void 0,t):E(e,a-1,t.value[1],t)})},p}function gt(t,e,n){var r=jt(t);return r.__iterateUncached=function(r,i){var o=this;if(i)return this.cacheResult().__iterate(r,i);var u=0;return t.__iterate((function(t,i,a){return e.call(n,t,i,a)&&++u&&r(t,i,o)})),u},r.__iteratorUncached=function(r,i){var o=this;if(i)return this.cacheResult().__iterator(r,i);var u=t.__iterator(bn,i),a=!0;return new b(function(){if(!a)return I();var t=u.next();if(t.done)return t;var i=t.value,s=i[0],c=i[1];return e.call(n,c,s,o)?r===bn?t:E(r,s,c,t):(a=!1,I())})},r}function St(t,e,n,r){var i=jt(t);return i.__iterateUncached=function(i,o){var u=this;if(o)return this.cacheResult().__iterate(i,o);var a=!0,s=0;return t.__iterate((function(t,o,c){if(!a||!(a=e.call(n,t,o,c)))return s++,i(t,r?o:s-1,u)})),s},i.__iteratorUncached=function(i,o){var u=this;if(o)return this.cacheResult().__iterator(i,o);var a=t.__iterator(bn,o),s=!0,c=0;return new b(function(){var t,o,f;do{if(t=a.next(),t.done)return r||i===Sn?t:i===gn?E(i,c++,void 0,t):E(i,c++,t.value[1],t);var h=t.value;o=h[0],f=h[1],s&&(s=e.call(n,f,o,u))}while(s);return i===bn?t:E(i,o,f,t)})},i}function bt(t,e){var n=y(t),r=[t].concat(e).map((function(t){return v(t)?n&&(t=p(t)):t=n?H(t):x(Array.isArray(t)?t:[t]),t})).filter((function(t){return 0!==t.size}));if(0===r.length)return t;if(1===r.length){var i=r[0];if(i===t||n&&y(i)||m(t)&&m(i))return i}var o=new j(r);return n?o=o.toKeyedSeq():m(t)||(o=o.toSetSeq()),o=o.flatten(!0),o.size=r.reduce((function(t,e){if(void 0!==t){var n=e.size;if(void 0!==n)return t+n}}),0),o}function Et(t,e,n){var r=jt(t);return r.__iterateUncached=function(r,i){function o(t,s){var c=this;t.__iterate((function(t,i){return(!e||s<e)&&v(t)?o(t,s+1):r(t,n?i:u++,c)===!1&&(a=!0),!a}),i)}var u=0,a=!1;return o(t,0),u},r.__iteratorUncached=function(r,i){var o=t.__iterator(r,i),u=[],a=0;return new b(function(){for(;o;){var t=o.next();if(t.done===!1){var s=t.value;if(r===bn&&(s=s[1]),e&&!(u.length<e)||!v(s))return n?t:E(r,a++,s,t);u.push(o),o=s.__iterator(r,i)}else o=u.pop()}return I()})},r}function It(t,e,n){var r=Mt(t);return t.toSeq().map((function(i,o){return r(e.call(n,i,o,t))})).flatten(!0)}function Ot(t,e){var n=jt(t);return n.size=t.size&&2*t.size-1,n.__iterateUncached=function(n,r){var i=this,o=0;return t.__iterate((function(t,r){return(!o||n(e,o++,i)!==!1)&&n(t,o++,i)!==!1}),r),o},n.__iteratorUncached=function(n,r){var i,o=t.__iterator(Sn,r),u=0;return new b(function(){return(!i||u%2)&&(i=o.next(),i.done)?i:u%2?E(n,u++,e):E(n,u++,i.value,i)})},n}function wt(t,e,n){e||(e=Nt);var r=y(t),i=0,o=t.toSeq().map((function(e,r){return[r,e,i++,n?n(e,r,t):e]})).toArray();return o.sort((function(t,n){return e(t[3],n[3])||t[2]-n[2]})).forEach(r?function(t,e){o[e].length=2}:function(t,e){o[e]=t[1]}),r?z(o):m(t)?R(o):M(o)}function Tt(t,e,n){if(e||(e=Nt),n){var r=t.toSeq().map((function(e,r){return[e,n(e,r,t)]})).reduce((function(t,n){return At(e,t[1],n[1])?n:t}));return r&&r[0]}return t.reduce((function(t,n){return At(e,t,n)?n:t}))}function At(t,e,n){var r=t(n,e);return 0===r&&n!==e&&(void 0===n||null===n||n!==n)||r>0}function Dt(t,e,n){var r=jt(t);return r.size=new j(n).map((function(t){return t.size})).min(),r.__iterate=function(t,e){for(var n,r=this,i=this.__iterator(Sn,e),o=0;!(n=i.next()).done&&t(n.value,o++,r)!==!1;);return o},r.__iteratorUncached=function(t,r){var i=n.map((function(t){return t=l(t),T(r?t.reverse():t)})),o=0,u=!1; +return new b(function(){var n;return u||(n=i.map((function(t){return t.next()})),u=n.some((function(t){return t.done}))),u?I():E(t,o++,e.apply(null,n.map((function(t){return t.value}))))})},r}function Ct(t,e){return P(t)?e:t.constructor(e)}function zt(t){if(t!==Object(t))throw new TypeError("Expected [K, V] tuple: "+t)}function Rt(t){return at(t.size),o(t)}function Mt(t){return y(t)?p:m(t)?_:d}function jt(t){return Object.create((y(t)?z:m(t)?R:M).prototype)}function Lt(){return this._iter.cacheResult?(this._iter.cacheResult(),this.size=this._iter.size,this):C.prototype.cacheResult.call(this)}function Nt(t,e){return t>e?1:t<e?-1:0}function kt(t){var e=T(t);if(!e){if(!D(t))throw new TypeError("Expected iterable or array-like: "+t);e=T(l(t))}return e}function Pt(t){return null===t||void 0===t?Jt():Ut(t)&&!S(t)?t:Jt().withMutations((function(e){var n=p(t);at(n.size),n.forEach((function(t,n){return e.set(n,t)}))}))}function Ut(t){return!(!t||!t[Un])}function Ht(t,e){this.ownerID=t,this.entries=e}function xt(t,e,n){this.ownerID=t,this.bitmap=e,this.nodes=n}function Vt(t,e,n){this.ownerID=t,this.count=e,this.nodes=n}function qt(t,e,n){this.ownerID=t,this.keyHash=e,this.entries=n}function Ft(t,e,n){this.ownerID=t,this.keyHash=e,this.entry=n}function Gt(t,e,n){this._type=e,this._reverse=n,this._stack=t._root&&Bt(t._root)}function Kt(t,e){return E(t,e[0],e[1])}function Bt(t,e){return{node:t,index:0,__prev:e}}function Yt(t,e,n,r){var i=Object.create(Hn);return i.size=t,i._root=e,i.__ownerID=n,i.__hash=r,i.__altered=!1,i}function Jt(){return xn||(xn=Yt(0))}function Wt(t,n,r){var i,o;if(t._root){var u=e(pn),a=e(_n);if(i=Xt(t._root,t.__ownerID,0,void 0,n,r,u,a),!a.value)return t;o=t.size+(u.value?r===ln?-1:1:0)}else{if(r===ln)return t;o=1,i=new Ht(t.__ownerID,[[n,r]])}return t.__ownerID?(t.size=o,t._root=i,t.__hash=void 0,t.__altered=!0,t):i?Yt(o,i):Jt()}function Xt(t,e,r,i,o,u,a,s){return t?t.update(e,r,i,o,u,a,s):u===ln?t:(n(s),n(a),new Ft(e,i,[o,u]))}function Qt(t){return t.constructor===Ft||t.constructor===qt}function Zt(t,e,n,r,i){if(t.keyHash===r)return new qt(e,r,[t.entry,i]);var o,u=(0===n?t.keyHash:t.keyHash>>>n)&hn,a=(0===n?r:r>>>n)&hn,s=u===a?[Zt(t,e,n+cn,r,i)]:(o=new Ft(e,r,i),u<a?[t,o]:[o,t]);return new xt(e,1<<u|1<<a,s)}function $t(t,e,n,i){t||(t=new r);for(var o=new Ft(t,et(n),[n,i]),u=0;u<e.length;u++){var a=e[u];o=o.update(t,0,void 0,a[0],a[1])}return o}function te(t,e,n,r){for(var i=0,o=0,u=new Array(n),a=0,s=1,c=e.length;a<c;a++,s<<=1){var f=e[a];void 0!==f&&a!==r&&(i|=s,u[o++]=f)}return new xt(t,i,u)}function ee(t,e,n,r,i){for(var o=0,u=new Array(fn),a=0;0!==n;a++,n>>>=1)u[a]=1&n?e[o++]:void 0;return u[r]=i,new Vt(t,o+1,u)}function ne(t,e,n){for(var r=[],i=0;i<n.length;i++){var o=n[i],u=p(o);v(o)||(u=u.map((function(t){return X(t)}))),r.push(u)}return ie(t,e,r)}function re(t){return function(e,n,r){return e&&e.mergeDeepWith&&v(n)?e.mergeDeepWith(t,n):t?t(e,n,r):n}}function ie(t,e,n){return n=n.filter((function(t){return 0!==t.size})),0===n.length?t:0!==t.size||t.__ownerID||1!==n.length?t.withMutations((function(t){for(var r=e?function(n,r){t.update(r,ln,(function(t){return t===ln?n:e(t,n,r)}))}:function(e,n){t.set(n,e)},i=0;i<n.length;i++)n[i].forEach(r)})):t.constructor(n[0])}function oe(t,e,n,r){var i=t===ln,o=e.next();if(o.done){var u=i?n:t,a=r(u);return a===u?t:a}ut(i||t&&t.set,"invalid keyPath");var s=o.value,c=i?ln:t.get(s,ln),f=oe(c,e,n,r);return f===c?t:f===ln?t.remove(s):(i?Jt():t).set(s,f)}function ue(t){return t-=t>>1&1431655765,t=(858993459&t)+(t>>2&858993459),t=t+(t>>4)&252645135,t+=t>>8,t+=t>>16,127&t}function ae(t,e,n,r){var o=r?t:i(t);return o[e]=n,o}function se(t,e,n,r){var i=t.length+1;if(r&&e+1===i)return t[e]=n,t;for(var o=new Array(i),u=0,a=0;a<i;a++)a===e?(o[a]=n,u=-1):o[a]=t[a+u];return o}function ce(t,e,n){var r=t.length-1;if(n&&e===r)return t.pop(),t;for(var i=new Array(r),o=0,u=0;u<r;u++)u===e&&(o=1),i[u]=t[u+o];return i}function fe(t){var e=de();if(null===t||void 0===t)return e;if(he(t))return t;var n=_(t),r=n.size;return 0===r?e:(at(r),r>0&&r<fn?_e(0,r,cn,null,new le(n.toArray())):e.withMutations((function(t){t.setSize(r),n.forEach((function(e,n){return t.set(n,e)}))})))}function he(t){return!(!t||!t[Gn])}function le(t,e){this.array=t,this.ownerID=e}function pe(t,e){function n(t,e,n){return 0===e?r(t,n):i(t,e,n)}function r(t,n){var r=n===a?s&&s.array:t&&t.array,i=n>o?0:o-n,c=u-n;return c>fn&&(c=fn),function(){if(i===c)return Yn;var t=e?--c:i++;return r&&r[t]}}function i(t,r,i){var a,s=t&&t.array,c=i>o?0:o-i>>r,f=(u-i>>r)+1;return f>fn&&(f=fn),function(){for(;;){if(a){var t=a();if(t!==Yn)return t;a=null}if(c===f)return Yn;var o=e?--f:c++;a=n(s&&s[o],r-cn,i+(o<<r))}}}var o=t._origin,u=t._capacity,a=Ee(u),s=t._tail;return n(t._root,t._level,0)}function _e(t,e,n,r,i,o,u){var a=Object.create(Kn);return a.size=e-t,a._origin=t,a._capacity=e,a._level=n,a._root=r,a._tail=i,a.__ownerID=o,a.__hash=u,a.__altered=!1,a}function de(){return Bn||(Bn=_e(0,0,cn))}function ve(t,n,r){if(n=u(t,n),n!==n)return t;if(n>=t.size||n<0)return t.withMutations((function(t){n<0?Se(t,n).set(0,r):Se(t,0,n+1).set(n,r)}));n+=t._origin;var i=t._tail,o=t._root,a=e(_n);return n>=Ee(t._capacity)?i=ye(i,t.__ownerID,0,n,r,a):o=ye(o,t.__ownerID,t._level,n,r,a),a.value?t.__ownerID?(t._root=o,t._tail=i,t.__hash=void 0,t.__altered=!0,t):_e(t._origin,t._capacity,t._level,o,i):t}function ye(t,e,r,i,o,u){var a=i>>>r&hn,s=t&&a<t.array.length;if(!s&&void 0===o)return t;var c;if(r>0){var f=t&&t.array[a],h=ye(f,e,r-cn,i,o,u);return h===f?t:(c=me(t,e),c.array[a]=h,c)}return s&&t.array[a]===o?t:(n(u),c=me(t,e),void 0===o&&a===c.array.length-1?c.array.pop():c.array[a]=o,c)}function me(t,e){return e&&t&&e===t.ownerID?t:new le(t?t.array.slice():[],e)}function ge(t,e){if(e>=Ee(t._capacity))return t._tail;if(e<1<<t._level+cn){for(var n=t._root,r=t._level;n&&r>0;)n=n.array[e>>>r&hn],r-=cn;return n}}function Se(t,e,n){void 0!==e&&(e|=0),void 0!==n&&(n|=0);var i=t.__ownerID||new r,o=t._origin,u=t._capacity,a=o+e,s=void 0===n?u:n<0?u+n:o+n;if(a===o&&s===u)return t;if(a>=s)return t.clear();for(var c=t._level,f=t._root,h=0;a+h<0;)f=new le(f&&f.array.length?[void 0,f]:[],i),c+=cn,h+=1<<c;h&&(a+=h,o+=h,s+=h,u+=h);for(var l=Ee(u),p=Ee(s);p>=1<<c+cn;)f=new le(f&&f.array.length?[f]:[],i),c+=cn;var _=t._tail,d=p<l?ge(t,s-1):p>l?new le([],i):_;if(_&&p>l&&a<u&&_.array.length){f=me(f,i);for(var v=f,y=c;y>cn;y-=cn){var m=l>>>y&hn;v=v.array[m]=me(v.array[m],i)}v.array[l>>>cn&hn]=_}if(s<u&&(d=d&&d.removeAfter(i,0,s)),a>=p)a-=p,s-=p,c=cn,f=null,d=d&&d.removeBefore(i,0,a);else if(a>o||p<l){for(h=0;f;){var g=a>>>c&hn;if(g!==p>>>c&hn)break;g&&(h+=(1<<c)*g),c-=cn,f=f.array[g]}f&&a>o&&(f=f.removeBefore(i,c,a-h)),f&&p<l&&(f=f.removeAfter(i,c,p-h)),h&&(a-=h,s-=h)}return t.__ownerID?(t.size=s-a,t._origin=a,t._capacity=s,t._level=c,t._root=f,t._tail=d,t.__hash=void 0,t.__altered=!0,t):_e(a,s,c,f,d)}function be(t,e,n){for(var r=[],i=0,o=0;o<n.length;o++){var u=n[o],a=_(u);a.size>i&&(i=a.size),v(u)||(a=a.map((function(t){return X(t)}))),r.push(a)}return i>t.size&&(t=t.setSize(i)),ie(t,e,r)}function Ee(t){return t<fn?0:t-1>>>cn<<cn}function Ie(t){return null===t||void 0===t?Te():Oe(t)?t:Te().withMutations((function(e){var n=p(t);at(n.size),n.forEach((function(t,n){return e.set(n,t)}))}))}function Oe(t){return Ut(t)&&S(t)}function we(t,e,n,r){var i=Object.create(Ie.prototype);return i.size=t?t.size:0,i._map=t,i._list=e,i.__ownerID=n,i.__hash=r,i}function Te(){return Jn||(Jn=we(Jt(),de()))}function Ae(t,e,n){var r,i,o=t._map,u=t._list,a=o.get(e),s=void 0!==a;if(n===ln){if(!s)return t;u.size>=fn&&u.size>=2*o.size?(i=u.filter((function(t,e){return void 0!==t&&a!==e})),r=i.toKeyedSeq().map((function(t){return t[0]})).flip().toMap(),t.__ownerID&&(r.__ownerID=i.__ownerID=t.__ownerID)):(r=o.remove(e),i=a===u.size-1?u.pop():u.set(a,void 0))}else if(s){if(n===u.get(a)[1])return t;r=o,i=u.set(a,[e,n])}else r=o.set(e,u.size),i=u.set(u.size,[e,n]);return t.__ownerID?(t.size=r.size,t._map=r,t._list=i,t.__hash=void 0,t):we(r,i)}function De(t){return null===t||void 0===t?Re():Ce(t)?t:Re().unshiftAll(t)}function Ce(t){return!(!t||!t[Wn])}function ze(t,e,n,r){var i=Object.create(Xn);return i.size=t,i._head=e,i.__ownerID=n,i.__hash=r,i.__altered=!1,i}function Re(){return Qn||(Qn=ze(0))}function Me(t){return null===t||void 0===t?ke():je(t)&&!S(t)?t:ke().withMutations((function(e){var n=d(t);at(n.size),n.forEach((function(t){return e.add(t)}))}))}function je(t){return!(!t||!t[Zn])}function Le(t,e){return t.__ownerID?(t.size=e.size,t._map=e,t):e===t._map?t:0===e.size?t.__empty():t.__make(e)}function Ne(t,e){var n=Object.create($n);return n.size=t?t.size:0,n._map=t,n.__ownerID=e,n}function ke(){return tr||(tr=Ne(Jt()))}function Pe(t){return null===t||void 0===t?xe():Ue(t)?t:xe().withMutations((function(e){var n=d(t);at(n.size),n.forEach((function(t){return e.add(t)}))}))}function Ue(t){return je(t)&&S(t)}function He(t,e){var n=Object.create(er);return n.size=t?t.size:0,n._map=t,n.__ownerID=e,n}function xe(){return nr||(nr=He(Te()))}function Ve(t,e){var n,r=function(o){if(o instanceof r)return o;if(!(this instanceof r))return new r(o);if(!n){n=!0;var u=Object.keys(t);Ge(i,u),i.size=u.length,i._name=e,i._keys=u,i._defaultValues=t}this._map=Pt(o)},i=r.prototype=Object.create(rr);return i.constructor=r,r}function qe(t,e,n){var r=Object.create(Object.getPrototypeOf(t));return r._map=e,r.__ownerID=n,r}function Fe(t){return t._name||t.constructor.name||"Record"}function Ge(t,e){try{e.forEach(Ke.bind(void 0,t))}catch(t){}}function Ke(t,e){Object.defineProperty(t,e,{get:function(){return this.get(e)},set:function(t){ut(this.__ownerID,"Cannot set on an immutable record."),this.set(e,t)}})}function Be(t,e){if(t===e)return!0;if(!v(e)||void 0!==t.size&&void 0!==e.size&&t.size!==e.size||void 0!==t.__hash&&void 0!==e.__hash&&t.__hash!==e.__hash||y(t)!==y(e)||m(t)!==m(e)||S(t)!==S(e))return!1;if(0===t.size&&0===e.size)return!0;var n=!g(t);if(S(t)){var r=t.entries();return e.every((function(t,e){var i=r.next().value;return i&&W(i[1],t)&&(n||W(i[0],e))}))&&r.next().done}var i=!1;if(void 0===t.size)if(void 0===e.size)"function"==typeof t.cacheResult&&t.cacheResult();else{i=!0;var o=t;t=e,e=o}var u=!0,a=e.__iterate((function(e,r){if(n?!t.has(e):i?!W(e,t.get(r,ln)):!W(t.get(r,ln),e))return u=!1,!1}));return u&&t.size===a}function Ye(t,e,n){if(!(this instanceof Ye))return new Ye(t,e,n);if(ut(0!==n,"Cannot step a Range by 0"),t=t||0,void 0===e&&(e=1/0),n=void 0===n?1:Math.abs(n),e<t&&(n=-n),this._start=t,this._end=e,this._step=n,this.size=Math.max(0,Math.ceil((e-t)/n-1)+1),0===this.size){if(ir)return ir;ir=this}}function Je(t,e){if(!(this instanceof Je))return new Je(t,e);if(this._value=t,this.size=void 0===e?1/0:Math.max(0,e),0===this.size){if(or)return or;or=this}}function We(t,e){var n=function(n){t.prototype[n]=e[n]};return Object.keys(e).forEach(n),Object.getOwnPropertySymbols&&Object.getOwnPropertySymbols(e).forEach(n),t}function Xe(t,e){return e}function Qe(t,e){return[e,t]}function Ze(t){return function(){return!t.apply(this,arguments)}}function $e(t){return function(){return-t.apply(this,arguments)}}function tn(t){return"string"==typeof t?JSON.stringify(t):t}function en(){return i(arguments)}function nn(t,e){return t<e?1:t>e?-1:0}function rn(t){if(t.size===1/0)return 0;var e=S(t),n=y(t),r=e?1:0,i=t.__iterate(n?e?function(t,e){r=31*r+un(et(t),et(e))|0}:function(t,e){r=r+un(et(t),et(e))|0}:e?function(t){r=31*r+et(t)|0}:function(t){r=r+et(t)|0});return on(i,r)}function on(t,e){return e=Dn(e,3432918353),e=Dn(e<<15|e>>>-15,461845907),e=Dn(e<<13|e>>>-13,5),e=(e+3864292196|0)^t,e=Dn(e^e>>>16,2246822507),e=Dn(e^e>>>13,3266489909),e=tt(e^e>>>16)}function un(t,e){return t^e+2654435769+(t<<6)+(t>>2)|0}var an=Array.prototype.slice,sn="delete",cn=5,fn=1<<cn,hn=fn-1,ln={},pn={value:!1},_n={value:!1};t(p,l),t(_,l),t(d,l),l.isIterable=v,l.isKeyed=y,l.isIndexed=m,l.isAssociative=g,l.isOrdered=S,l.Keyed=p,l.Indexed=_,l.Set=d;var dn="@@__IMMUTABLE_ITERABLE__@@",vn="@@__IMMUTABLE_KEYED__@@",yn="@@__IMMUTABLE_INDEXED__@@",mn="@@__IMMUTABLE_ORDERED__@@",gn=0,Sn=1,bn=2,En="function"==typeof Symbol&&Symbol.iterator,In="@@iterator",On=En||In;b.prototype.toString=function(){return"[Iterator]"},b.KEYS=gn,b.VALUES=Sn,b.ENTRIES=bn,b.prototype.inspect=b.prototype.toSource=function(){return this.toString()},b.prototype[On]=function(){return this},t(C,l),C.of=function(){return C(arguments)},C.prototype.toSeq=function(){return this},C.prototype.toString=function(){return this.__toString("Seq {","}")},C.prototype.cacheResult=function(){return!this._cache&&this.__iterateUncached&&(this._cache=this.entrySeq().toArray(),this.size=this._cache.length),this},C.prototype.__iterate=function(t,e){return F(this,t,e,!0)},C.prototype.__iterator=function(t,e){return G(this,t,e,!0)},t(z,C),z.prototype.toKeyedSeq=function(){return this},t(R,C),R.of=function(){return R(arguments)},R.prototype.toIndexedSeq=function(){return this},R.prototype.toString=function(){return this.__toString("Seq [","]")},R.prototype.__iterate=function(t,e){return F(this,t,e,!1)},R.prototype.__iterator=function(t,e){return G(this,t,e,!1)},t(M,C),M.of=function(){return M(arguments)},M.prototype.toSetSeq=function(){return this},C.isSeq=P,C.Keyed=z,C.Set=M,C.Indexed=R;var wn="@@__IMMUTABLE_SEQ__@@";C.prototype[wn]=!0,t(j,R),j.prototype.get=function(t,e){return this.has(t)?this._array[u(this,t)]:e},j.prototype.__iterate=function(t,e){for(var n=this,r=this._array,i=r.length-1,o=0;o<=i;o++)if(t(r[e?i-o:o],o,n)===!1)return o+1;return o},j.prototype.__iterator=function(t,e){var n=this._array,r=n.length-1,i=0;return new b(function(){return i>r?I():E(t,i,n[e?r-i++:i++])})},t(L,z),L.prototype.get=function(t,e){return void 0===e||this.has(t)?this._object[t]:e},L.prototype.has=function(t){return this._object.hasOwnProperty(t)},L.prototype.__iterate=function(t,e){for(var n=this,r=this._object,i=this._keys,o=i.length-1,u=0;u<=o;u++){var a=i[e?o-u:u];if(t(r[a],a,n)===!1)return u+1}return u},L.prototype.__iterator=function(t,e){var n=this._object,r=this._keys,i=r.length-1,o=0;return new b(function(){var u=r[e?i-o:o];return o++>i?I():E(t,u,n[u])})},L.prototype[mn]=!0,t(N,R),N.prototype.__iterateUncached=function(t,e){var n=this;if(e)return this.cacheResult().__iterate(t,e);var r=this._iterable,i=T(r),o=0;if(w(i))for(var u;!(u=i.next()).done&&t(u.value,o++,n)!==!1;);return o},N.prototype.__iteratorUncached=function(t,e){if(e)return this.cacheResult().__iterator(t,e);var n=this._iterable,r=T(n);if(!w(r))return new b(I);var i=0;return new b(function(){var e=r.next();return e.done?e:E(t,i++,e.value)})},t(k,R),k.prototype.__iterateUncached=function(t,e){var n=this;if(e)return this.cacheResult().__iterate(t,e);for(var r=this._iterator,i=this._iteratorCache,o=0;o<i.length;)if(t(i[o],o++,n)===!1)return o;for(var u;!(u=r.next()).done;){var a=u.value;if(i[o]=a,t(a,o++,n)===!1)break}return o},k.prototype.__iteratorUncached=function(t,e){if(e)return this.cacheResult().__iterator(t,e);var n=this._iterator,r=this._iteratorCache,i=0;return new b(function(){if(i>=r.length){var e=n.next();if(e.done)return e;r[i]=e.value}return E(t,i,r[i++])})};var Tn;t(K,l),t(B,K),t(Y,K),t(J,K),K.Keyed=B,K.Indexed=Y,K.Set=J;var An,Dn="function"==typeof Math.imul&&Math.imul(4294967295,2)===-2?Math.imul:function(t,e){t|=0,e|=0;var n=65535&t,r=65535&e;return n*r+((t>>>16)*r+n*(e>>>16)<<16>>>0)|0},Cn=Object.isExtensible,zn=(function(){try{return Object.defineProperty({},"@",{}),!0}catch(t){return!1}})(),Rn="function"==typeof WeakMap;Rn&&(An=new WeakMap);var Mn=0,jn="__immutablehash__";"function"==typeof Symbol&&(jn=Symbol(jn));var Ln=16,Nn=255,kn=0,Pn={};t(st,z),st.prototype.get=function(t,e){return this._iter.get(t,e)},st.prototype.has=function(t){return this._iter.has(t)},st.prototype.valueSeq=function(){return this._iter.valueSeq()},st.prototype.reverse=function(){var t=this,e=_t(this,!0);return this._useKeys||(e.valueSeq=function(){return t._iter.toSeq().reverse()}),e},st.prototype.map=function(t,e){var n=this,r=pt(this,t,e);return this._useKeys||(r.valueSeq=function(){return n._iter.toSeq().map(t,e)}),r},st.prototype.__iterate=function(t,e){var n,r=this;return this._iter.__iterate(this._useKeys?function(e,n){return t(e,n,r)}:(n=e?Rt(this):0,function(i){return t(i,e?--n:n++,r)}),e)},st.prototype.__iterator=function(t,e){if(this._useKeys)return this._iter.__iterator(t,e);var n=this._iter.__iterator(Sn,e),r=e?Rt(this):0;return new b(function(){var i=n.next();return i.done?i:E(t,e?--r:r++,i.value,i)})},st.prototype[mn]=!0,t(ct,R),ct.prototype.includes=function(t){return this._iter.includes(t)},ct.prototype.__iterate=function(t,e){var n=this,r=0;return this._iter.__iterate((function(e){return t(e,r++,n)}),e)},ct.prototype.__iterator=function(t,e){var n=this._iter.__iterator(Sn,e),r=0;return new b(function(){var e=n.next();return e.done?e:E(t,r++,e.value,e)})},t(ft,M),ft.prototype.has=function(t){return this._iter.includes(t)},ft.prototype.__iterate=function(t,e){var n=this;return this._iter.__iterate((function(e){return t(e,e,n)}),e)},ft.prototype.__iterator=function(t,e){var n=this._iter.__iterator(Sn,e);return new b(function(){var e=n.next();return e.done?e:E(t,e.value,e.value,e)})},t(ht,z),ht.prototype.entrySeq=function(){return this._iter.toSeq()},ht.prototype.__iterate=function(t,e){var n=this;return this._iter.__iterate((function(e){if(e){zt(e);var r=v(e);return t(r?e.get(1):e[1],r?e.get(0):e[0],n)}}),e)},ht.prototype.__iterator=function(t,e){var n=this._iter.__iterator(Sn,e);return new b(function(){for(;;){var e=n.next();if(e.done)return e;var r=e.value;if(r){zt(r);var i=v(r);return E(t,i?r.get(0):r[0],i?r.get(1):r[1],e)}}})},ct.prototype.cacheResult=st.prototype.cacheResult=ft.prototype.cacheResult=ht.prototype.cacheResult=Lt,t(Pt,B),Pt.prototype.toString=function(){return this.__toString("Map {","}")},Pt.prototype.get=function(t,e){return this._root?this._root.get(0,void 0,t,e):e},Pt.prototype.set=function(t,e){return Wt(this,t,e)},Pt.prototype.setIn=function(t,e){return this.updateIn(t,ln,(function(){return e}))},Pt.prototype.remove=function(t){return Wt(this,t,ln)},Pt.prototype.deleteIn=function(t){return this.updateIn(t,(function(){return ln}))},Pt.prototype.update=function(t,e,n){return 1===arguments.length?t(this):this.updateIn([t],e,n)},Pt.prototype.updateIn=function(t,e,n){n||(n=e,e=void 0);var r=oe(this,kt(t),e,n);return r===ln?void 0:r},Pt.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._root=null,this.__hash=void 0,this.__altered=!0,this):Jt()},Pt.prototype.merge=function(){return ne(this,void 0,arguments)},Pt.prototype.mergeWith=function(t){var e=an.call(arguments,1);return ne(this,t,e)},Pt.prototype.mergeIn=function(t){var e=an.call(arguments,1);return this.updateIn(t,Jt(),(function(t){return"function"==typeof t.merge?t.merge.apply(t,e):e[e.length-1]}))},Pt.prototype.mergeDeep=function(){return ne(this,re(void 0),arguments)},Pt.prototype.mergeDeepWith=function(t){var e=an.call(arguments,1);return ne(this,re(t),e)},Pt.prototype.mergeDeepIn=function(t){var e=an.call(arguments,1);return this.updateIn(t,Jt(),(function(t){return"function"==typeof t.mergeDeep?t.mergeDeep.apply(t,e):e[e.length-1]}))},Pt.prototype.sort=function(t){return Ie(wt(this,t))},Pt.prototype.sortBy=function(t,e){return Ie(wt(this,e,t))},Pt.prototype.withMutations=function(t){var e=this.asMutable();return t(e),e.wasAltered()?e.__ensureOwner(this.__ownerID):this},Pt.prototype.asMutable=function(){return this.__ownerID?this:this.__ensureOwner(new r)},Pt.prototype.asImmutable=function(){return this.__ensureOwner()},Pt.prototype.wasAltered=function(){return this.__altered},Pt.prototype.__iterator=function(t,e){return new Gt(this,t,e)},Pt.prototype.__iterate=function(t,e){var n=this,r=0;return this._root&&this._root.iterate((function(e){return r++,t(e[1],e[0],n)}),e),r},Pt.prototype.__ensureOwner=function(t){return t===this.__ownerID?this:t?Yt(this.size,this._root,t,this.__hash):(this.__ownerID=t,this.__altered=!1,this)},Pt.isMap=Ut;var Un="@@__IMMUTABLE_MAP__@@",Hn=Pt.prototype;Hn[Un]=!0,Hn[sn]=Hn.remove,Hn.removeIn=Hn.deleteIn,Ht.prototype.get=function(t,e,n,r){for(var i=this.entries,o=0,u=i.length;o<u;o++)if(W(n,i[o][0]))return i[o][1];return r},Ht.prototype.update=function(t,e,r,o,u,a,s){for(var c=u===ln,f=this.entries,h=0,l=f.length;h<l&&!W(o,f[h][0]);h++);var p=h<l;if(p?f[h][1]===u:c)return this;if(n(s),(c||!p)&&n(a),!c||1!==f.length){if(!p&&!c&&f.length>=Vn)return $t(t,f,o,u);var _=t&&t===this.ownerID,d=_?f:i(f);return p?c?h===l-1?d.pop():d[h]=d.pop():d[h]=[o,u]:d.push([o,u]),_?(this.entries=d,this):new Ht(t,d)}},xt.prototype.get=function(t,e,n,r){void 0===e&&(e=et(n));var i=1<<((0===t?e:e>>>t)&hn),o=this.bitmap;return 0===(o&i)?r:this.nodes[ue(o&i-1)].get(t+cn,e,n,r)},xt.prototype.update=function(t,e,n,r,i,o,u){void 0===n&&(n=et(r));var a=(0===e?n:n>>>e)&hn,s=1<<a,c=this.bitmap,f=0!==(c&s);if(!f&&i===ln)return this;var h=ue(c&s-1),l=this.nodes,p=f?l[h]:void 0,_=Xt(p,t,e+cn,n,r,i,o,u);if(_===p)return this;if(!f&&_&&l.length>=qn)return ee(t,l,c,a,_);if(f&&!_&&2===l.length&&Qt(l[1^h]))return l[1^h];if(f&&_&&1===l.length&&Qt(_))return _;var d=t&&t===this.ownerID,v=f?_?c:c^s:c|s,y=f?_?ae(l,h,_,d):ce(l,h,d):se(l,h,_,d);return d?(this.bitmap=v,this.nodes=y,this):new xt(t,v,y)},Vt.prototype.get=function(t,e,n,r){void 0===e&&(e=et(n));var i=(0===t?e:e>>>t)&hn,o=this.nodes[i];return o?o.get(t+cn,e,n,r):r},Vt.prototype.update=function(t,e,n,r,i,o,u){void 0===n&&(n=et(r));var a=(0===e?n:n>>>e)&hn,s=i===ln,c=this.nodes,f=c[a];if(s&&!f)return this;var h=Xt(f,t,e+cn,n,r,i,o,u);if(h===f)return this;var l=this.count;if(f){if(!h&&(l--,l<Fn))return te(t,c,l,a)}else l++;var p=t&&t===this.ownerID,_=ae(c,a,h,p);return p?(this.count=l,this.nodes=_,this):new Vt(t,l,_)},qt.prototype.get=function(t,e,n,r){for(var i=this.entries,o=0,u=i.length;o<u;o++)if(W(n,i[o][0]))return i[o][1];return r},qt.prototype.update=function(t,e,r,o,u,a,s){void 0===r&&(r=et(o));var c=u===ln;if(r!==this.keyHash)return c?this:(n(s),n(a),Zt(this,t,e,r,[o,u]));for(var f=this.entries,h=0,l=f.length;h<l&&!W(o,f[h][0]);h++);var p=h<l;if(p?f[h][1]===u:c)return this;if(n(s),(c||!p)&&n(a),c&&2===l)return new Ft(t,this.keyHash,f[1^h]);var _=t&&t===this.ownerID,d=_?f:i(f);return p?c?h===l-1?d.pop():d[h]=d.pop():d[h]=[o,u]:d.push([o,u]),_?(this.entries=d,this):new qt(t,this.keyHash,d)},Ft.prototype.get=function(t,e,n,r){return W(n,this.entry[0])?this.entry[1]:r},Ft.prototype.update=function(t,e,r,i,o,u,a){var s=o===ln,c=W(i,this.entry[0]);return(c?o===this.entry[1]:s)?this:(n(a),s?void n(u):c?t&&t===this.ownerID?(this.entry[1]=o,this):new Ft(t,this.keyHash,[i,o]):(n(u),Zt(this,t,e,et(i),[i,o])))},Ht.prototype.iterate=qt.prototype.iterate=function(t,e){for(var n=this.entries,r=0,i=n.length-1;r<=i;r++)if(t(n[e?i-r:r])===!1)return!1},xt.prototype.iterate=Vt.prototype.iterate=function(t,e){for(var n=this.nodes,r=0,i=n.length-1;r<=i;r++){var o=n[e?i-r:r];if(o&&o.iterate(t,e)===!1)return!1}},Ft.prototype.iterate=function(t,e){return t(this.entry)},t(Gt,b),Gt.prototype.next=function(){for(var t=this,e=this._type,n=this._stack;n;){var r,i=n.node,o=n.index++;if(i.entry){if(0===o)return Kt(e,i.entry)}else if(i.entries){if(r=i.entries.length-1,o<=r)return Kt(e,i.entries[t._reverse?r-o:o])}else if(r=i.nodes.length-1,o<=r){var u=i.nodes[t._reverse?r-o:o];if(u){if(u.entry)return Kt(e,u.entry);n=t._stack=Bt(u,n)}continue}n=t._stack=t._stack.__prev}return I()};var xn,Vn=fn/4,qn=fn/2,Fn=fn/4;t(fe,Y),fe.of=function(){return this(arguments)},fe.prototype.toString=function(){return this.__toString("List [","]")},fe.prototype.get=function(t,e){if(t=u(this,t),t>=0&&t<this.size){t+=this._origin;var n=ge(this,t);return n&&n.array[t&hn]}return e},fe.prototype.set=function(t,e){return ve(this,t,e)},fe.prototype.remove=function(t){return this.has(t)?0===t?this.shift():t===this.size-1?this.pop():this.splice(t,1):this},fe.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=this._origin=this._capacity=0,this._level=cn,this._root=this._tail=null,this.__hash=void 0,this.__altered=!0,this):de()},fe.prototype.push=function(){var t=arguments,e=this.size;return this.withMutations((function(n){Se(n,0,e+t.length);for(var r=0;r<t.length;r++)n.set(e+r,t[r])}))},fe.prototype.pop=function(){return Se(this,0,-1)},fe.prototype.unshift=function(){var t=arguments;return this.withMutations((function(e){Se(e,-t.length);for(var n=0;n<t.length;n++)e.set(n,t[n])}))},fe.prototype.shift=function(){return Se(this,1)},fe.prototype.merge=function(){return be(this,void 0,arguments)},fe.prototype.mergeWith=function(t){var e=an.call(arguments,1);return be(this,t,e)},fe.prototype.mergeDeep=function(){return be(this,re(void 0),arguments)},fe.prototype.mergeDeepWith=function(t){var e=an.call(arguments,1);return be(this,re(t),e)},fe.prototype.setSize=function(t){return Se(this,0,t)},fe.prototype.slice=function(t,e){var n=this.size;return s(t,e,n)?this:Se(this,c(t,n),f(e,n))},fe.prototype.__iterator=function(t,e){var n=0,r=pe(this,e);return new b(function(){var e=r();return e===Yn?I():E(t,n++,e)})},fe.prototype.__iterate=function(t,e){for(var n,r=this,i=0,o=pe(this,e);(n=o())!==Yn&&t(n,i++,r)!==!1;);return i},fe.prototype.__ensureOwner=function(t){return t===this.__ownerID?this:t?_e(this._origin,this._capacity,this._level,this._root,this._tail,t,this.__hash):(this.__ownerID=t,this)},fe.isList=he;var Gn="@@__IMMUTABLE_LIST__@@",Kn=fe.prototype;Kn[Gn]=!0,Kn[sn]=Kn.remove,Kn.setIn=Hn.setIn,Kn.deleteIn=Kn.removeIn=Hn.removeIn,Kn.update=Hn.update,Kn.updateIn=Hn.updateIn,Kn.mergeIn=Hn.mergeIn,Kn.mergeDeepIn=Hn.mergeDeepIn,Kn.withMutations=Hn.withMutations,Kn.asMutable=Hn.asMutable,Kn.asImmutable=Hn.asImmutable,Kn.wasAltered=Hn.wasAltered,le.prototype.removeBefore=function(t,e,n){if(n===e?1<<e:0===this.array.length)return this;var r=n>>>e&hn;if(r>=this.array.length)return new le([],t);var i,o=0===r;if(e>0){var u=this.array[r];if(i=u&&u.removeBefore(t,e-cn,n),i===u&&o)return this}if(o&&!i)return this;var a=me(this,t);if(!o)for(var s=0;s<r;s++)a.array[s]=void 0;return i&&(a.array[r]=i),a},le.prototype.removeAfter=function(t,e,n){if(n===(e?1<<e:0)||0===this.array.length)return this;var r=n-1>>>e&hn;if(r>=this.array.length)return this;var i;if(e>0){var o=this.array[r];if(i=o&&o.removeAfter(t,e-cn,n),i===o&&r===this.array.length-1)return this}var u=me(this,t);return u.array.splice(r+1),i&&(u.array[r]=i),u};var Bn,Yn={};t(Ie,Pt),Ie.of=function(){return this(arguments)},Ie.prototype.toString=function(){return this.__toString("OrderedMap {","}")},Ie.prototype.get=function(t,e){var n=this._map.get(t);return void 0!==n?this._list.get(n)[1]:e},Ie.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._map.clear(),this._list.clear(),this):Te()},Ie.prototype.set=function(t,e){return Ae(this,t,e)},Ie.prototype.remove=function(t){return Ae(this,t,ln)},Ie.prototype.wasAltered=function(){return this._map.wasAltered()||this._list.wasAltered()},Ie.prototype.__iterate=function(t,e){var n=this;return this._list.__iterate((function(e){return e&&t(e[1],e[0],n)}),e)},Ie.prototype.__iterator=function(t,e){return this._list.fromEntrySeq().__iterator(t,e)},Ie.prototype.__ensureOwner=function(t){if(t===this.__ownerID)return this;var e=this._map.__ensureOwner(t),n=this._list.__ensureOwner(t);return t?we(e,n,t,this.__hash):(this.__ownerID=t,this._map=e,this._list=n,this)},Ie.isOrderedMap=Oe,Ie.prototype[mn]=!0,Ie.prototype[sn]=Ie.prototype.remove;var Jn;t(De,Y),De.of=function(){return this(arguments)},De.prototype.toString=function(){return this.__toString("Stack [","]")},De.prototype.get=function(t,e){var n=this._head;for(t=u(this,t);n&&t--;)n=n.next;return n?n.value:e},De.prototype.peek=function(){return this._head&&this._head.value},De.prototype.push=function(){var t=arguments;if(0===arguments.length)return this;for(var e=this.size+arguments.length,n=this._head,r=arguments.length-1;r>=0;r--)n={value:t[r],next:n};return this.__ownerID?(this.size=e,this._head=n,this.__hash=void 0,this.__altered=!0,this):ze(e,n)},De.prototype.pushAll=function(t){if(t=_(t),0===t.size)return this;at(t.size);var e=this.size,n=this._head;return t.reverse().forEach((function(t){e++,n={value:t,next:n}})),this.__ownerID?(this.size=e,this._head=n,this.__hash=void 0,this.__altered=!0,this):ze(e,n)},De.prototype.pop=function(){return this.slice(1)},De.prototype.unshift=function(){return this.push.apply(this,arguments)},De.prototype.unshiftAll=function(t){return this.pushAll(t)},De.prototype.shift=function(){return this.pop.apply(this,arguments)},De.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._head=void 0,this.__hash=void 0,this.__altered=!0,this):Re()},De.prototype.slice=function(t,e){if(s(t,e,this.size))return this;var n=c(t,this.size),r=f(e,this.size);if(r!==this.size)return Y.prototype.slice.call(this,t,e);for(var i=this.size-n,o=this._head;n--;)o=o.next;return this.__ownerID?(this.size=i,this._head=o,this.__hash=void 0,this.__altered=!0,this):ze(i,o)},De.prototype.__ensureOwner=function(t){return t===this.__ownerID?this:t?ze(this.size,this._head,t,this.__hash):(this.__ownerID=t,this.__altered=!1,this)},De.prototype.__iterate=function(t,e){var n=this;if(e)return this.reverse().__iterate(t);for(var r=0,i=this._head;i&&t(i.value,r++,n)!==!1;)i=i.next;return r},De.prototype.__iterator=function(t,e){if(e)return this.reverse().__iterator(t);var n=0,r=this._head;return new b(function(){if(r){var e=r.value;return r=r.next,E(t,n++,e)}return I()})},De.isStack=Ce;var Wn="@@__IMMUTABLE_STACK__@@",Xn=De.prototype;Xn[Wn]=!0,Xn.withMutations=Hn.withMutations,Xn.asMutable=Hn.asMutable,Xn.asImmutable=Hn.asImmutable,Xn.wasAltered=Hn.wasAltered;var Qn;t(Me,J),Me.of=function(){return this(arguments)},Me.fromKeys=function(t){return this(p(t).keySeq())},Me.prototype.toString=function(){return this.__toString("Set {","}")},Me.prototype.has=function(t){return this._map.has(t)},Me.prototype.add=function(t){return Le(this,this._map.set(t,!0))},Me.prototype.remove=function(t){return Le(this,this._map.remove(t))},Me.prototype.clear=function(){return Le(this,this._map.clear())},Me.prototype.union=function(){var t=an.call(arguments,0);return t=t.filter((function(t){return 0!==t.size})),0===t.length?this:0!==this.size||this.__ownerID||1!==t.length?this.withMutations((function(e){for(var n=0;n<t.length;n++)d(t[n]).forEach((function(t){return e.add(t)}))})):this.constructor(t[0])},Me.prototype.intersect=function(){var t=an.call(arguments,0);if(0===t.length)return this;t=t.map((function(t){return d(t)}));var e=this;return this.withMutations((function(n){e.forEach((function(e){t.every((function(t){return t.includes(e)}))||n.remove(e)}))}))},Me.prototype.subtract=function(){var t=an.call(arguments,0);if(0===t.length)return this;t=t.map((function(t){return d(t)}));var e=this;return this.withMutations((function(n){e.forEach((function(e){t.some((function(t){return t.includes(e)}))&&n.remove(e)}))}))},Me.prototype.merge=function(){return this.union.apply(this,arguments)},Me.prototype.mergeWith=function(t){var e=an.call(arguments,1);return this.union.apply(this,e)},Me.prototype.sort=function(t){return Pe(wt(this,t))},Me.prototype.sortBy=function(t,e){return Pe(wt(this,e,t))},Me.prototype.wasAltered=function(){return this._map.wasAltered()},Me.prototype.__iterate=function(t,e){var n=this;return this._map.__iterate((function(e,r){return t(r,r,n)}),e)},Me.prototype.__iterator=function(t,e){return this._map.map((function(t,e){return e})).__iterator(t,e)},Me.prototype.__ensureOwner=function(t){if(t===this.__ownerID)return this;var e=this._map.__ensureOwner(t);return t?this.__make(e,t):(this.__ownerID=t,this._map=e,this)},Me.isSet=je;var Zn="@@__IMMUTABLE_SET__@@",$n=Me.prototype;$n[Zn]=!0,$n[sn]=$n.remove,$n.mergeDeep=$n.merge,$n.mergeDeepWith=$n.mergeWith,$n.withMutations=Hn.withMutations,$n.asMutable=Hn.asMutable,$n.asImmutable=Hn.asImmutable,$n.__empty=ke,$n.__make=Ne;var tr;t(Pe,Me),Pe.of=function(){return this(arguments)},Pe.fromKeys=function(t){return this(p(t).keySeq())},Pe.prototype.toString=function(){ +return this.__toString("OrderedSet {","}")},Pe.isOrderedSet=Ue;var er=Pe.prototype;er[mn]=!0,er.__empty=xe,er.__make=He;var nr;t(Ve,B),Ve.prototype.toString=function(){return this.__toString(Fe(this)+" {","}")},Ve.prototype.has=function(t){return this._defaultValues.hasOwnProperty(t)},Ve.prototype.get=function(t,e){if(!this.has(t))return e;var n=this._defaultValues[t];return this._map?this._map.get(t,n):n},Ve.prototype.clear=function(){if(this.__ownerID)return this._map&&this._map.clear(),this;var t=this.constructor;return t._empty||(t._empty=qe(this,Jt()))},Ve.prototype.set=function(t,e){if(!this.has(t))throw new Error('Cannot set unknown key "'+t+'" on '+Fe(this));var n=this._map&&this._map.set(t,e);return this.__ownerID||n===this._map?this:qe(this,n)},Ve.prototype.remove=function(t){if(!this.has(t))return this;var e=this._map&&this._map.remove(t);return this.__ownerID||e===this._map?this:qe(this,e)},Ve.prototype.wasAltered=function(){return this._map.wasAltered()},Ve.prototype.__iterator=function(t,e){var n=this;return p(this._defaultValues).map((function(t,e){return n.get(e)})).__iterator(t,e)},Ve.prototype.__iterate=function(t,e){var n=this;return p(this._defaultValues).map((function(t,e){return n.get(e)})).__iterate(t,e)},Ve.prototype.__ensureOwner=function(t){if(t===this.__ownerID)return this;var e=this._map&&this._map.__ensureOwner(t);return t?qe(this,e,t):(this.__ownerID=t,this._map=e,this)};var rr=Ve.prototype;rr[sn]=rr.remove,rr.deleteIn=rr.removeIn=Hn.removeIn,rr.merge=Hn.merge,rr.mergeWith=Hn.mergeWith,rr.mergeIn=Hn.mergeIn,rr.mergeDeep=Hn.mergeDeep,rr.mergeDeepWith=Hn.mergeDeepWith,rr.mergeDeepIn=Hn.mergeDeepIn,rr.setIn=Hn.setIn,rr.update=Hn.update,rr.updateIn=Hn.updateIn,rr.withMutations=Hn.withMutations,rr.asMutable=Hn.asMutable,rr.asImmutable=Hn.asImmutable,t(Ye,R),Ye.prototype.toString=function(){return 0===this.size?"Range []":"Range [ "+this._start+"..."+this._end+(this._step>1?" by "+this._step:"")+" ]"},Ye.prototype.get=function(t,e){return this.has(t)?this._start+u(this,t)*this._step:e},Ye.prototype.includes=function(t){var e=(t-this._start)/this._step;return e>=0&&e<this.size&&e===Math.floor(e)},Ye.prototype.slice=function(t,e){return s(t,e,this.size)?this:(t=c(t,this.size),e=f(e,this.size),e<=t?new Ye(0,0):new Ye(this.get(t,this._end),this.get(e,this._end),this._step))},Ye.prototype.indexOf=function(t){var e=t-this._start;if(e%this._step===0){var n=e/this._step;if(n>=0&&n<this.size)return n}return-1},Ye.prototype.lastIndexOf=function(t){return this.indexOf(t)},Ye.prototype.__iterate=function(t,e){for(var n=this,r=this.size-1,i=this._step,o=e?this._start+r*i:this._start,u=0;u<=r;u++){if(t(o,u,n)===!1)return u+1;o+=e?-i:i}return u},Ye.prototype.__iterator=function(t,e){var n=this.size-1,r=this._step,i=e?this._start+n*r:this._start,o=0;return new b(function(){var u=i;return i+=e?-r:r,o>n?I():E(t,o++,u)})},Ye.prototype.equals=function(t){return t instanceof Ye?this._start===t._start&&this._end===t._end&&this._step===t._step:Be(this,t)};var ir;t(Je,R),Je.prototype.toString=function(){return 0===this.size?"Repeat []":"Repeat [ "+this._value+" "+this.size+" times ]"},Je.prototype.get=function(t,e){return this.has(t)?this._value:e},Je.prototype.includes=function(t){return W(this._value,t)},Je.prototype.slice=function(t,e){var n=this.size;return s(t,e,n)?this:new Je(this._value,f(e,n)-c(t,n))},Je.prototype.reverse=function(){return this},Je.prototype.indexOf=function(t){return W(this._value,t)?0:-1},Je.prototype.lastIndexOf=function(t){return W(this._value,t)?this.size:-1},Je.prototype.__iterate=function(t,e){for(var n=this,r=0;r<this.size;r++)if(t(n._value,r,n)===!1)return r+1;return r},Je.prototype.__iterator=function(t,e){var n=this,r=0;return new b(function(){return r<n.size?E(t,r++,n._value):I()})},Je.prototype.equals=function(t){return t instanceof Je?W(this._value,t._value):Be(t)};var or;l.Iterator=b,We(l,{toArray:function(){at(this.size);var t=new Array(this.size||0);return this.valueSeq().__iterate((function(e,n){t[n]=e})),t},toIndexedSeq:function(){return new ct(this)},toJS:function(){return this.toSeq().map((function(t){return t&&"function"==typeof t.toJS?t.toJS():t})).__toJS()},toJSON:function(){return this.toSeq().map((function(t){return t&&"function"==typeof t.toJSON?t.toJSON():t})).__toJS()},toKeyedSeq:function(){return new st(this,!0)},toMap:function(){return Pt(this.toKeyedSeq())},toObject:function(){at(this.size);var t={};return this.__iterate((function(e,n){t[n]=e})),t},toOrderedMap:function(){return Ie(this.toKeyedSeq())},toOrderedSet:function(){return Pe(y(this)?this.valueSeq():this)},toSet:function(){return Me(y(this)?this.valueSeq():this)},toSetSeq:function(){return new ft(this)},toSeq:function(){return m(this)?this.toIndexedSeq():y(this)?this.toKeyedSeq():this.toSetSeq()},toStack:function(){return De(y(this)?this.valueSeq():this)},toList:function(){return fe(y(this)?this.valueSeq():this)},toString:function(){return"[Iterable]"},__toString:function(t,e){return 0===this.size?t+e:t+" "+this.toSeq().map(this.__toStringMapper).join(", ")+" "+e},concat:function(){var t=an.call(arguments,0);return Ct(this,bt(this,t))},includes:function(t){return this.some((function(e){return W(e,t)}))},entries:function(){return this.__iterator(bn)},every:function(t,e){at(this.size);var n=!0;return this.__iterate((function(r,i,o){if(!t.call(e,r,i,o))return n=!1,!1})),n},filter:function(t,e){return Ct(this,dt(this,t,e,!0))},find:function(t,e,n){var r=this.findEntry(t,e);return r?r[1]:n},findEntry:function(t,e){var n;return this.__iterate((function(r,i,o){if(t.call(e,r,i,o))return n=[i,r],!1})),n},findLastEntry:function(t,e){return this.toSeq().reverse().findEntry(t,e)},forEach:function(t,e){return at(this.size),this.__iterate(e?t.bind(e):t)},join:function(t){at(this.size),t=void 0!==t?""+t:",";var e="",n=!0;return this.__iterate((function(r){n?n=!1:e+=t,e+=null!==r&&void 0!==r?r.toString():""})),e},keys:function(){return this.__iterator(gn)},map:function(t,e){return Ct(this,pt(this,t,e))},reduce:function(t,e,n){at(this.size);var r,i;return arguments.length<2?i=!0:r=e,this.__iterate((function(e,o,u){i?(i=!1,r=e):r=t.call(n,r,e,o,u)})),r},reduceRight:function(t,e,n){var r=this.toKeyedSeq().reverse();return r.reduce.apply(r,arguments)},reverse:function(){return Ct(this,_t(this,!0))},slice:function(t,e){return Ct(this,mt(this,t,e,!0))},some:function(t,e){return!this.every(Ze(t),e)},sort:function(t){return Ct(this,wt(this,t))},values:function(){return this.__iterator(Sn)},butLast:function(){return this.slice(0,-1)},isEmpty:function(){return void 0!==this.size?0===this.size:!this.some((function(){return!0}))},count:function(t,e){return o(t?this.toSeq().filter(t,e):this)},countBy:function(t,e){return vt(this,t,e)},equals:function(t){return Be(this,t)},entrySeq:function(){var t=this;if(t._cache)return new j(t._cache);var e=t.toSeq().map(Qe).toIndexedSeq();return e.fromEntrySeq=function(){return t.toSeq()},e},filterNot:function(t,e){return this.filter(Ze(t),e)},findLast:function(t,e,n){return this.toKeyedSeq().reverse().find(t,e,n)},first:function(){return this.find(a)},flatMap:function(t,e){return Ct(this,It(this,t,e))},flatten:function(t){return Ct(this,Et(this,t,!0))},fromEntrySeq:function(){return new ht(this)},get:function(t,e){return this.find((function(e,n){return W(n,t)}),void 0,e)},getIn:function(t,e){for(var n,r=this,i=kt(t);!(n=i.next()).done;){var o=n.value;if(r=r&&r.get?r.get(o,ln):ln,r===ln)return e}return r},groupBy:function(t,e){return yt(this,t,e)},has:function(t){return this.get(t,ln)!==ln},hasIn:function(t){return this.getIn(t,ln)!==ln},isSubset:function(t){return t="function"==typeof t.includes?t:l(t),this.every((function(e){return t.includes(e)}))},isSuperset:function(t){return t="function"==typeof t.isSubset?t:l(t),t.isSubset(this)},keySeq:function(){return this.toSeq().map(Xe).toIndexedSeq()},last:function(){return this.toSeq().reverse().first()},max:function(t){return Tt(this,t)},maxBy:function(t,e){return Tt(this,e,t)},min:function(t){return Tt(this,t?$e(t):nn)},minBy:function(t,e){return Tt(this,e?$e(e):nn,t)},rest:function(){return this.slice(1)},skip:function(t){return this.slice(Math.max(0,t))},skipLast:function(t){return Ct(this,this.toSeq().reverse().skip(t).reverse())},skipWhile:function(t,e){return Ct(this,St(this,t,e,!0))},skipUntil:function(t,e){return this.skipWhile(Ze(t),e)},sortBy:function(t,e){return Ct(this,wt(this,e,t))},take:function(t){return this.slice(0,Math.max(0,t))},takeLast:function(t){return Ct(this,this.toSeq().reverse().take(t).reverse())},takeWhile:function(t,e){return Ct(this,gt(this,t,e))},takeUntil:function(t,e){return this.takeWhile(Ze(t),e)},valueSeq:function(){return this.toIndexedSeq()},hashCode:function(){return this.__hash||(this.__hash=rn(this))}});var ur=l.prototype;ur[dn]=!0,ur[On]=ur.values,ur.__toJS=ur.toArray,ur.__toStringMapper=tn,ur.inspect=ur.toSource=function(){return this.toString()},ur.chain=ur.flatMap,ur.contains=ur.includes,(function(){try{Object.defineProperty(ur,"length",{get:function(){if(!l.noLengthWarning){var t;try{throw new Error}catch(e){t=e.stack}if(t.indexOf("_wrapObject")===-1)return console&&console.warn&&console.warn("iterable.length has been deprecated, use iterable.size or iterable.count(). This warning will become a silent error in a future version. "+t),this.size}}})}catch(t){}})(),We(p,{flip:function(){return Ct(this,lt(this))},findKey:function(t,e){var n=this.findEntry(t,e);return n&&n[0]},findLastKey:function(t,e){return this.toSeq().reverse().findKey(t,e)},keyOf:function(t){return this.findKey((function(e){return W(e,t)}))},lastKeyOf:function(t){return this.findLastKey((function(e){return W(e,t)}))},mapEntries:function(t,e){var n=this,r=0;return Ct(this,this.toSeq().map((function(i,o){return t.call(e,[o,i],r++,n)})).fromEntrySeq())},mapKeys:function(t,e){var n=this;return Ct(this,this.toSeq().flip().map((function(r,i){return t.call(e,r,i,n)})).flip())}});var ar=p.prototype;ar[vn]=!0,ar[On]=ur.entries,ar.__toJS=ur.toObject,ar.__toStringMapper=function(t,e){return JSON.stringify(e)+": "+tn(t)},We(_,{toKeyedSeq:function(){return new st(this,!1)},filter:function(t,e){return Ct(this,dt(this,t,e,!1))},findIndex:function(t,e){var n=this.findEntry(t,e);return n?n[0]:-1},indexOf:function(t){var e=this.toKeyedSeq().keyOf(t);return void 0===e?-1:e},lastIndexOf:function(t){return this.toSeq().reverse().indexOf(t)},reverse:function(){return Ct(this,_t(this,!1))},slice:function(t,e){return Ct(this,mt(this,t,e,!1))},splice:function(t,e){var n=arguments.length;if(e=Math.max(0|e,0),0===n||2===n&&!e)return this;t=c(t,t<0?this.count():this.size);var r=this.slice(0,t);return Ct(this,1===n?r:r.concat(i(arguments,2),this.slice(t+e)))},findLastIndex:function(t,e){var n=this.toKeyedSeq().findLastKey(t,e);return void 0===n?-1:n},first:function(){return this.get(0)},flatten:function(t){return Ct(this,Et(this,t,!1))},get:function(t,e){return t=u(this,t),t<0||this.size===1/0||void 0!==this.size&&t>this.size?e:this.find((function(e,n){return n===t}),void 0,e)},has:function(t){return t=u(this,t),t>=0&&(void 0!==this.size?this.size===1/0||t<this.size:this.indexOf(t)!==-1)},interpose:function(t){return Ct(this,Ot(this,t))},interleave:function(){var t=[this].concat(i(arguments)),e=Dt(this.toSeq(),R.of,t),n=e.flatten(!0);return e.size&&(n.size=e.size*t.length),Ct(this,n)},last:function(){return this.get(-1)},skipWhile:function(t,e){return Ct(this,St(this,t,e,!1))},zip:function(){var t=[this].concat(i(arguments));return Ct(this,Dt(this,en,t))},zipWith:function(t){var e=i(arguments);return e[0]=this,Ct(this,Dt(this,t,e))}}),_.prototype[yn]=!0,_.prototype[mn]=!0,We(d,{get:function(t,e){return this.has(t)?t:e},includes:function(t){return this.has(t)},keySeq:function(){return this.valueSeq()}}),d.prototype.has=ur.includes,We(z,p.prototype),We(R,_.prototype),We(M,d.prototype),We(B,p.prototype),We(Y,_.prototype),We(J,d.prototype);var sr={Iterable:l,Seq:C,Collection:K,Map:Pt,OrderedMap:Ie,List:fe,Stack:De,Set:Me,OrderedSet:Pe,Record:Ve,Range:Ye,Repeat:Je,is:W,fromJS:X};return sr}))},function(t,e){function n(t){return t&&"object"==typeof t&&toString.call(t)}function r(t){return"number"==typeof t&&t>-1&&t%1===0&&t<=Number.MAX_VALUE}var i=Function.prototype.bind;e.isString=function(t){return"string"==typeof t||"[object String]"===n(t)},e.isArray=Array.isArray||function(t){return"[object Array]"===n(t)},"function"!=typeof/./&&"object"!=typeof Int8Array?e.isFunction=function(t){return"function"==typeof t||!1}:e.isFunction=function(t){return"[object Function]"===toString.call(t)},e.isObject=function(t){var e=typeof t;return"function"===e||"object"===e&&!!t},e.extend=function(t){var e=arguments,n=arguments.length;if(!t||n<2)return t||{};for(var r=1;r<n;r++)for(var i=e[r],o=Object.keys(i),u=o.length,a=0;a<u;a++){var s=o[a];t[s]=i[s]}return t},e.clone=function(t){return e.isObject(t)?e.isArray(t)?t.slice():e.extend({},t):t},e.each=function(t,e,n){var i,o,u=t?t.length:0,a=-1;if(n&&(o=e,e=function(t,e,r){return o.call(n,t,e,r)}),r(u))for(;++a<u&&e(t[a],a,t)!==!1;);else for(i=Object.keys(t),u=i.length;++a<u&&e(t[i[a]],i[a],t)!==!1;);return t},e.partial=function(t){var e=Array.prototype.slice,n=e.call(arguments,1);return function(){return t.apply(this,n.concat(e.call(arguments)))}},e.toFactory=function(t){var e=function(){for(var e=arguments,n=arguments.length,r=Array(n),o=0;o<n;o++)r[o]=e[o];return new(i.apply(t,[null].concat(r)))};return e.__proto__=t,e.prototype=t.prototype,e}},function(t,e,n){function r(t){return t&&t.__esModule?t:{default:t}}function i(t){return c.default.Iterable.isIterable(t)}function o(t){return i(t)||!(0,f.isObject)(t)}function u(t){return i(t)?t.toJS():t}function a(t){return i(t)?t:c.default.fromJS(t)}Object.defineProperty(e,"__esModule",{value:!0}),e.isImmutable=i,e.isImmutableValue=o,e.toJS=u,e.toImmutable=a;var s=n(3),c=r(s),f=n(4)},function(t,e,n){function r(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}function i(t){return t&&t.__esModule?t:{default:t}}function o(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function u(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var a=(function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}})(),s=n(3),c=i(s),f=n(7),h=i(f),l=n(8),p=r(l),_=n(11),d=n(10),v=n(5),y=n(4),m=n(12),g=(function(){function t(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];u(this,t);var n=!!e.debug,r=n?m.DEBUG_OPTIONS:m.PROD_OPTIONS,i=new m.ReactorState({debug:n,options:r.merge(e.options||{})});this.prevReactorState=i,this.reactorState=i,this.observerState=new m.ObserverState,this.ReactMixin=(0,h.default)(this),this.__batchDepth=0,this.__isDispatching=!1}return a(t,[{key:"evaluate",value:function(t){var e=p.evaluate(this.reactorState,t),n=e.result,r=e.reactorState;return this.reactorState=r,n}},{key:"evaluateToJS",value:function(t){return(0,v.toJS)(this.evaluate(t))}},{key:"observe",value:function(t,e){var n=this;1===arguments.length&&(e=t,t=[]);var r=p.addObserver(this.observerState,t,e),i=r.observerState,o=r.entry;return this.observerState=i,function(){n.observerState=p.removeObserverByEntry(n.observerState,o)}}},{key:"unobserve",value:function(t,e){if(0===arguments.length)throw new Error("Must call unobserve with a Getter");if(!(0,d.isGetter)(t)&&!(0,_.isKeyPath)(t))throw new Error("Must call unobserve with a Getter");this.observerState=p.removeObserver(this.observerState,t,e)}},{key:"dispatch",value:function(t,e){if(0===this.__batchDepth){if(p.getOption(this.reactorState,"throwOnDispatchInDispatch")&&this.__isDispatching)throw this.__isDispatching=!1,new Error("Dispatch may not be called while a dispatch is in progress");this.__isDispatching=!0}try{this.reactorState=p.dispatch(this.reactorState,t,e)}catch(t){throw this.__isDispatching=!1,t}try{this.__notify()}finally{this.__isDispatching=!1}}},{key:"batch",value:function(t){this.batchStart(),t(),this.batchEnd()}},{key:"registerStore",value:function(t,e){console.warn("Deprecation warning: `registerStore` will no longer be supported in 1.1, use `registerStores` instead"),this.registerStores(o({},t,e))}},{key:"registerStores",value:function(t){this.reactorState=p.registerStores(this.reactorState,t),this.__notify()}},{key:"replaceStores",value:function(t){this.reactorState=p.replaceStores(this.reactorState,t)}},{key:"serialize",value:function(){return p.serialize(this.reactorState)}},{key:"loadState",value:function(t){this.reactorState=p.loadState(this.reactorState,t),this.__notify()}},{key:"reset",value:function(){var t=p.reset(this.reactorState);this.reactorState=t,this.prevReactorState=t,this.observerState=new m.ObserverState}},{key:"__notify",value:function(){var t=this;if(!(this.__batchDepth>0)){var e=this.reactorState.get("dirtyStores");if(0!==e.size){var n=c.default.Set().withMutations((function(n){n.union(t.observerState.get("any")),e.forEach((function(e){var r=t.observerState.getIn(["stores",e]);r&&n.union(r)}))}));n.forEach((function(e){var n=t.observerState.getIn(["observersMap",e]);if(n){var r=n.get("getter"),i=n.get("handler"),o=p.evaluate(t.prevReactorState,r),u=p.evaluate(t.reactorState,r);t.prevReactorState=o.reactorState,t.reactorState=u.reactorState;var a=o.result,s=u.result;c.default.is(a,s)||i.call(null,s)}}));var r=p.resetDirtyStores(this.reactorState);this.prevReactorState=r,this.reactorState=r}}}},{key:"batchStart",value:function(){this.__batchDepth++}},{key:"batchEnd",value:function(){if(this.__batchDepth--,this.__batchDepth<=0){this.__isDispatching=!0;try{this.__notify()}catch(t){throw this.__isDispatching=!1,t}this.__isDispatching=!1}}}]),t})();e.default=(0,y.toFactory)(g),t.exports=e.default},function(t,e,n){function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(t,e){var n={};return(0,o.each)(e,(function(e,r){n[r]=t.evaluate(e)})),n}Object.defineProperty(e,"__esModule",{value:!0});var o=n(4);e.default=function(t){return{getInitialState:function(){return i(t,this.getDataBindings())},componentDidMount:function(){var e=this;this.__unwatchFns=[],(0,o.each)(this.getDataBindings(),(function(n,i){var o=t.observe(n,(function(t){e.setState(r({},i,t))}));e.__unwatchFns.push(o)}))},componentWillUnmount:function(){for(var t=this;this.__unwatchFns.length;)t.__unwatchFns.shift()()}}},t.exports=e.default},function(t,e,n){function r(t){return t&&t.__esModule?t:{default:t}}function i(t,e){return new M({result:t,reactorState:e})}function o(t,e){return t.withMutations((function(t){(0,R.each)(e,(function(e,n){t.getIn(["stores",n])&&console.warn("Store already defined for id = "+n);var r=e.getInitialState();if(void 0===r&&f(t,"throwOnUndefinedStoreReturnValue"))throw new Error("Store getInitialState() must return a value, did you forget a return statement");if(f(t,"throwOnNonImmutableStore")&&!(0,D.isImmutableValue)(r))throw new Error("Store getInitialState() must return an immutable value, did you forget to call toImmutable");t.update("stores",(function(t){return t.set(n,e)})).update("state",(function(t){return t.set(n,r)})).update("dirtyStores",(function(t){return t.add(n)})).update("storeStates",(function(t){return I(t,[n])}))})),E(t)}))}function u(t,e){return t.withMutations((function(t){(0,R.each)(e,(function(e,n){t.update("stores",(function(t){return t.set(n,e)}))}))}))}function a(t,e,n){if(void 0===e&&f(t,"throwOnUndefinedActionType"))throw new Error("`dispatch` cannot be called with an `undefined` action type.");var r=t.get("state"),i=t.get("dirtyStores"),o=r.withMutations((function(r){A.default.dispatchStart(t,e,n),t.get("stores").forEach((function(o,u){var a=r.get(u),s=void 0;try{s=o.handle(a,e,n)}catch(e){throw A.default.dispatchError(t,e.message),e}if(void 0===s&&f(t,"throwOnUndefinedStoreReturnValue")){var c="Store handler must return a value, did you forget a return statement";throw A.default.dispatchError(t,c),new Error(c)}r.set(u,s),a!==s&&(i=i.add(u))})),A.default.dispatchEnd(t,r,i)})),u=t.set("state",o).set("dirtyStores",i).update("storeStates",(function(t){return I(t,i)}));return E(u)}function s(t,e){var n=[],r=(0,D.toImmutable)({}).withMutations((function(r){(0,R.each)(e,(function(e,i){var o=t.getIn(["stores",i]);if(o){var u=o.deserialize(e);void 0!==u&&(r.set(i,u),n.push(i))}}))})),i=w.default.Set(n);return t.update("state",(function(t){return t.merge(r)})).update("dirtyStores",(function(t){return t.union(i)})).update("storeStates",(function(t){return I(t,n)}))}function c(t,e,n){var r=e;(0,z.isKeyPath)(e)&&(e=(0,C.fromKeyPath)(e));var i=t.get("nextId"),o=(0,C.getStoreDeps)(e),u=w.default.Map({id:i,storeDeps:o,getterKey:r,getter:e,handler:n}),a=void 0;return a=0===o.size?t.update("any",(function(t){return t.add(i)})):t.withMutations((function(t){o.forEach((function(e){var n=["stores",e];t.hasIn(n)||t.setIn(n,w.default.Set()),t.updateIn(["stores",e],(function(t){return t.add(i)}))}))})),a=a.set("nextId",i+1).setIn(["observersMap",i],u),{observerState:a,entry:u}}function f(t,e){var n=t.getIn(["options",e]);if(void 0===n)throw new Error("Invalid option: "+e);return n}function h(t,e,n){var r=t.get("observersMap").filter((function(t){var r=t.get("getterKey"),i=!n||t.get("handler")===n;return!!i&&((0,z.isKeyPath)(e)&&(0,z.isKeyPath)(r)?(0,z.isEqual)(e,r):e===r)}));return t.withMutations((function(t){r.forEach((function(e){return l(t,e)}))}))}function l(t,e){return t.withMutations((function(t){var n=e.get("id"),r=e.get("storeDeps");0===r.size?t.update("any",(function(t){return t.remove(n)})):r.forEach((function(e){t.updateIn(["stores",e],(function(t){return t?t.remove(n):t}))})),t.removeIn(["observersMap",n])}))}function p(t){var e=t.get("state");return t.withMutations((function(t){var n=t.get("stores"),r=n.keySeq().toJS();n.forEach((function(n,r){var i=e.get(r),o=n.handleReset(i);if(void 0===o&&f(t,"throwOnUndefinedStoreReturnValue"))throw new Error("Store handleReset() must return a value, did you forget a return statement");if(f(t,"throwOnNonImmutableStore")&&!(0,D.isImmutableValue)(o))throw new Error("Store reset state must be an immutable value, did you forget to call toImmutable");t.setIn(["state",r],o)})),t.update("storeStates",(function(t){return I(t,r)})),v(t)}))}function _(t,e){var n=t.get("state");if((0,z.isKeyPath)(e))return i(n.getIn(e),t);if(!(0,C.isGetter)(e))throw new Error("evaluate must be passed a keyPath or Getter");if(g(t,e))return i(b(t,e),t);var r=(0,C.getDeps)(e).map((function(e){return _(t,e).result})),o=(0,C.getComputeFn)(e).apply(null,r);return i(o,S(t,e,o))}function d(t){var e={};return t.get("stores").forEach((function(n,r){var i=t.getIn(["state",r]),o=n.serialize(i);void 0!==o&&(e[r]=o)})),e}function v(t){return t.set("dirtyStores",w.default.Set())}function y(t){return t}function m(t,e){var n=y(e);return t.getIn(["cache",n])}function g(t,e){var n=m(t,e);if(!n)return!1;var r=n.get("storeStates");return 0!==r.size&&r.every((function(e,n){return t.getIn(["storeStates",n])===e}))}function S(t,e,n){var r=y(e),i=t.get("dispatchId"),o=(0,C.getStoreDeps)(e),u=(0,D.toImmutable)({}).withMutations((function(e){o.forEach((function(n){var r=t.getIn(["storeStates",n]);e.set(n,r)}))}));return t.setIn(["cache",r],w.default.Map({value:n,storeStates:u,dispatchId:i}))}function b(t,e){var n=y(e);return t.getIn(["cache",n,"value"])}function E(t){return t.update("dispatchId",(function(t){return t+1}))}function I(t,e){return t.withMutations((function(t){e.forEach((function(e){var n=t.has(e)?t.get(e)+1:1;t.set(e,n)}))}))}Object.defineProperty(e,"__esModule",{value:!0}),e.registerStores=o,e.replaceStores=u,e.dispatch=a,e.loadState=s,e.addObserver=c,e.getOption=f,e.removeObserver=h,e.removeObserverByEntry=l,e.reset=p,e.evaluate=_,e.serialize=d,e.resetDirtyStores=v;var O=n(3),w=r(O),T=n(9),A=r(T),D=n(5),C=n(10),z=n(11),R=n(4),M=w.default.Record({result:null,reactorState:null})},function(t,e,n){var r=n(8);e.dispatchStart=function(t,e,n){(0,r.getOption)(t,"logDispatches")&&console.group&&(console.groupCollapsed("Dispatch: %s",e),console.group("payload"),console.debug(n),console.groupEnd())},e.dispatchError=function(t,e){(0,r.getOption)(t,"logDispatches")&&console.group&&(console.debug("Dispatch error: "+e),console.groupEnd())},e.dispatchEnd=function(t,e,n){(0,r.getOption)(t,"logDispatches")&&console.group&&((0,r.getOption)(t,"logDirtyStores")&&console.log("Stores updated:",n.toList().toJS()),(0,r.getOption)(t,"logAppState")&&console.debug("Dispatch done, new state: ",e.toJS()),console.groupEnd())}},function(t,e,n){function r(t){return t&&t.__esModule?t:{default:t}}function i(t){return(0,l.isArray)(t)&&(0,l.isFunction)(t[t.length-1])}function o(t){return t[t.length-1]}function u(t){return t.slice(0,t.length-1)}function a(t,e){e||(e=h.default.Set());var n=h.default.Set().withMutations((function(e){if(!i(t))throw new Error("getFlattenedDeps must be passed a Getter");u(t).forEach((function(t){if((0,p.isKeyPath)(t))e.add((0,f.List)(t));else{if(!i(t))throw new Error("Invalid getter, each dependency must be a KeyPath or Getter");e.union(a(t))}}))}));return e.union(n)}function s(t){if(!(0,p.isKeyPath)(t))throw new Error("Cannot create Getter from KeyPath: "+t);return[t,_]}function c(t){if(t.hasOwnProperty("__storeDeps"))return t.__storeDeps;var e=a(t).map((function(t){return t.first()})).filter((function(t){return!!t}));return Object.defineProperty(t,"__storeDeps",{enumerable:!1,configurable:!1,writable:!1,value:e}),e}Object.defineProperty(e,"__esModule",{value:!0});var f=n(3),h=r(f),l=n(4),p=n(11),_=function(t){return t};e.default={isGetter:i,getComputeFn:o,getFlattenedDeps:a,getStoreDeps:c,getDeps:u,fromKeyPath:s},t.exports=e.default},function(t,e,n){function r(t){return t&&t.__esModule?t:{default:t}}function i(t){return(0,s.isArray)(t)&&!(0,s.isFunction)(t[t.length-1])}function o(t,e){var n=a.default.List(t),r=a.default.List(e);return a.default.is(n,r)}Object.defineProperty(e,"__esModule",{value:!0}),e.isKeyPath=i,e.isEqual=o;var u=n(3),a=r(u),s=n(4)},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(3),i=(0,r.Map)({logDispatches:!1,logAppState:!1,logDirtyStores:!1,throwOnUndefinedActionType:!1,throwOnUndefinedStoreReturnValue:!1,throwOnNonImmutableStore:!1,throwOnDispatchInDispatch:!1});e.PROD_OPTIONS=i;var o=(0,r.Map)({logDispatches:!0,logAppState:!0,logDirtyStores:!0,throwOnUndefinedActionType:!0,throwOnUndefinedStoreReturnValue:!0,throwOnNonImmutableStore:!0,throwOnDispatchInDispatch:!0});e.DEBUG_OPTIONS=o;var u=(0,r.Record)({dispatchId:0,state:(0,r.Map)(),stores:(0,r.Map)(),cache:(0,r.Map)(),storeStates:(0,r.Map)(),dirtyStores:(0,r.Set)(),debug:!1,options:i});e.ReactorState=u;var a=(0,r.Record)({any:(0,r.Set)(),stores:(0,r.Map)({}),observersMap:(0,r.Map)({}),nextId:1});e.ObserverState=a}])}))})),Ne=t(Le),ke=function(t){var e,n={};if(!(t instanceof Object)||Array.isArray(t))throw new Error("keyMirror(...): Argument must be an object.");for(e in t)t.hasOwnProperty(e)&&(n[e]=e);return n},Pe=ke,Ue=Pe({VALIDATING_AUTH_TOKEN:null,VALID_AUTH_TOKEN:null,INVALID_AUTH_TOKEN:null,LOG_OUT:null}),He=Ne.Store,xe=Ne.toImmutable,Ve=new He({getInitialState:function(){return xe({isValidating:!1,authToken:!1,host:null,isInvalid:!1,errorMessage:""})},initialize:function(){this.on(Ue.VALIDATING_AUTH_TOKEN,n),this.on(Ue.VALID_AUTH_TOKEN,r),this.on(Ue.INVALID_AUTH_TOKEN,i)}}),qe=Ne.Store,Fe=Ne.toImmutable,Ge=new qe({getInitialState:function(){return Fe({authToken:null,host:""})},initialize:function(){this.on(Ue.VALID_AUTH_TOKEN,o),this.on(Ue.LOG_OUT,u)}}),Ke=Ne.Store,Be=new Ke({getInitialState:function(){return!0},initialize:function(){this.on(Ue.VALID_AUTH_TOKEN,a)}}),Ye=Pe({STREAM_START:null,STREAM_STOP:null,STREAM_ERROR:null}),Je=Ne.Store,We=Ne.toImmutable,Xe=new Je({getInitialState:function(){return We({isStreaming:!1,hasError:!1})},initialize:function(){this.on(Ye.STREAM_START,s),this.on(Ye.STREAM_ERROR,c),this.on(Ye.LOG_OUT,f)}}),Qe=1,Ze=2,$e=3,tn=function(t,e){this.url=t,this.options=e||{},this.commandId=1,this.commands={},this.connectionTries=0,this.eventListeners={},this.closeRequested=!1};tn.prototype.addEventListener=function(t,e){var n=this.eventListeners[t];n||(n=this.eventListeners[t]=[]),n.push(e)},tn.prototype.fireEvent=function(t){var e=this;(this.eventListeners[t]||[]).forEach((function(t){return t(e)}))},tn.prototype.connect=function(){var t=this;return new Promise(function(e,n){var r=t.commands;Object.keys(r).forEach((function(t){var e=r[t];e.reject&&e.reject(S($e,"Connection lost"))}));var i=!1;t.connectionTries+=1,t.socket=new WebSocket(t.url),t.socket.addEventListener("open",(function(){t.connectionTries=0})),t.socket.addEventListener("message",(function(o){var u=JSON.parse(o.data);switch(u.type){case"event":t.commands[u.id].eventCallback(u.event);break;case"result":u.success?t.commands[u.id].resolve(u):t.commands[u.id].reject(u.error),delete t.commands[u.id];break;case"pong":break;case"auth_required":t.sendMessage(h(t.options.authToken));break;case"auth_invalid":n(Ze),i=!0;break;case"auth_ok":e(t),t.fireEvent("ready"),t.commandId=1,t.commands={},Object.keys(r).forEach((function(e){var n=r[e];n.eventType&&t.subscribeEvents(n.eventCallback,n.eventType).then((function(t){n.unsubscribe=t}))}))}})),t.socket.addEventListener("close",(function(){if(!i&&!t.closeRequested){0===t.connectionTries?t.fireEvent("disconnected"):n(Qe);var e=1e3*Math.min(t.connectionTries,5);setTimeout((function(){return t.connect()}),e)}}))})},tn.prototype.close=function(){this.closeRequested=!0,this.socket.close()},tn.prototype.getStates=function(){return this.sendMessagePromise(l()).then(b)},tn.prototype.getServices=function(){return this.sendMessagePromise(_()).then(b)},tn.prototype.getPanels=function(){return this.sendMessagePromise(d()).then(b)},tn.prototype.getConfig=function(){return this.sendMessagePromise(p()).then(b)},tn.prototype.callService=function(t,e,n){return this.sendMessagePromise(v(t,e,n))},tn.prototype.subscribeEvents=function(t,e){var n=this;return this.sendMessagePromise(y(e)).then((function(r){var i={eventCallback:t,eventType:e,unsubscribe:function(){return n.sendMessagePromise(m(r.id)).then((function(){delete n.commands[r.id]}))}};return n.commands[r.id]=i,function(){return i.unsubscribe()}}))},tn.prototype.ping=function(){return this.sendMessagePromise(g())},tn.prototype.sendMessage=function(t){this.socket.send(JSON.stringify(t))},tn.prototype.sendMessagePromise=function(t){var e=this;return new Promise(function(n,r){e.commandId+=1;var i=e.commandId;t.id=i,e.commands[i]={resolve:n,reject:r},e.sendMessage(t)})};var en=Pe({API_FETCH_ALL_START:null,API_FETCH_ALL_SUCCESS:null,API_FETCH_ALL_FAIL:null,SYNC_SCHEDULED:null,SYNC_SCHEDULE_CANCELLED:null}),nn=Ne.Store,rn=new nn({getInitialState:function(){return!0},initialize:function(){this.on(en.API_FETCH_ALL_START,(function(){return!0})),this.on(en.API_FETCH_ALL_SUCCESS,(function(){return!1})),this.on(en.API_FETCH_ALL_FAIL,(function(){return!1})),this.on(en.LOG_OUT,(function(){return!1}))}}),on=I,un=Pe({API_FETCH_SUCCESS:null,API_FETCH_START:null,API_FETCH_FAIL:null,API_SAVE_SUCCESS:null,API_SAVE_START:null,API_SAVE_FAIL:null,API_DELETE_SUCCESS:null,API_DELETE_START:null,API_DELETE_FAIL:null,LOG_OUT:null}),an=Ne.Store,sn=Ne.toImmutable,cn=new an({getInitialState:function(){return sn({})},initialize:function(){var t=this;this.on(un.API_FETCH_SUCCESS,O),this.on(un.API_SAVE_SUCCESS,O),this.on(un.API_DELETE_SUCCESS,w),this.on(un.LOG_OUT,(function(){return t.getInitialState()}))}}),fn=Object.prototype.hasOwnProperty,hn=Object.prototype.propertyIsEnumerable,ln=A()?Object.assign:function(t,e){for(var n,r,i=arguments,o=T(t),u=1;u<arguments.length;u++){n=Object(i[u]);for(var a in n)fn.call(n,a)&&(o[a]=n[a]);if(Object.getOwnPropertySymbols){r=Object.getOwnPropertySymbols(n);for(var s=0;s<r.length;s++)hn.call(n,r[s])&&(o[r[s]]=n[r[s]]); +}}return o},pn=Ne.toImmutable,_n=D,dn=Object.freeze({createApiActions:_n,register:N,createHasDataGetter:k,createEntityMapGetter:P,createByIdGetter:U}),vn=["playing","paused","unknown"],yn=function(t,e){this.serviceActions=t.serviceActions,this.stateObj=e},mn={isOff:{},isIdle:{},isMuted:{},isPaused:{},isPlaying:{},isMusic:{},isTVShow:{},hasMediaControl:{},volumeSliderValue:{},showProgress:{},currentProgress:{},supportsPause:{},supportsVolumeSet:{},supportsVolumeMute:{},supportsPreviousTrack:{},supportsNextTrack:{},supportsTurnOn:{},supportsTurnOff:{},supportsPlayMedia:{},supportsVolumeButtons:{},supportsPlay:{},primaryText:{},secondaryText:{}};mn.isOff.get=function(){return"off"===this.stateObj.state},mn.isIdle.get=function(){return"idle"===this.stateObj.state},mn.isMuted.get=function(){return this.stateObj.attributes.is_volume_muted},mn.isPaused.get=function(){return"paused"===this.stateObj.state},mn.isPlaying.get=function(){return"playing"===this.stateObj.state},mn.isMusic.get=function(){return"music"===this.stateObj.attributes.media_content_type},mn.isTVShow.get=function(){return"tvshow"===this.stateObj.attributes.media_content_type},mn.hasMediaControl.get=function(){return vn.indexOf(this.stateObj.state)!==-1},mn.volumeSliderValue.get=function(){return 100*this.stateObj.attributes.volume_level},mn.showProgress.get=function(){return(this.isPlaying||this.isPaused)&&"media_position"in this.stateObj.attributes&&"media_position_updated_at"in this.stateObj.attributes},mn.currentProgress.get=function(){return this.stateObj.attributes.media_position+(Date.now()-new Date(this.stateObj.attributes.media_position_updated_at))/1e3},mn.supportsPause.get=function(){return 0!==(1&this.stateObj.attributes.supported_media_commands)},mn.supportsVolumeSet.get=function(){return 0!==(4&this.stateObj.attributes.supported_media_commands)},mn.supportsVolumeMute.get=function(){return 0!==(8&this.stateObj.attributes.supported_media_commands)},mn.supportsPreviousTrack.get=function(){return 0!==(16&this.stateObj.attributes.supported_media_commands)},mn.supportsNextTrack.get=function(){return 0!==(32&this.stateObj.attributes.supported_media_commands)},mn.supportsTurnOn.get=function(){return 0!==(128&this.stateObj.attributes.supported_media_commands)},mn.supportsTurnOff.get=function(){return 0!==(256&this.stateObj.attributes.supported_media_commands)},mn.supportsPlayMedia.get=function(){return 0!==(512&this.stateObj.attributes.supported_media_commands)},mn.supportsVolumeButtons.get=function(){return 0!==(1024&this.stateObj.attributes.supported_media_commands)},mn.supportsPlay.get=function(){return 0!==(16384&this.stateObj.attributes.supported_media_commands)},mn.primaryText.get=function(){return this.stateObj.attributes.media_title||this.stateObj.stateDisplay},mn.secondaryText.get=function(){if(this.isMusic)return this.stateObj.attributes.media_artist;if(this.isTVShow){var t=this.stateObj.attributes.media_series_title;return this.stateObj.attributes.media_season&&(t+=" S"+this.stateObj.attributes.media_season,this.stateObj.attributes.media_episode&&(t+="E"+this.stateObj.attributes.media_episode)),t}return this.stateObj.attributes.app_name?this.stateObj.attributes.app_name:""},yn.prototype.mediaPlayPause=function(){this.callService("media_play_pause")},yn.prototype.nextTrack=function(){this.callService("media_next_track")},yn.prototype.playbackControl=function(){this.callService("media_play_pause")},yn.prototype.previousTrack=function(){this.callService("media_previous_track")},yn.prototype.setVolume=function(t){this.callService("volume_set",{volume_level:t})},yn.prototype.togglePower=function(){this.isOff?this.turnOn():this.turnOff()},yn.prototype.turnOff=function(){this.callService("turn_off")},yn.prototype.turnOn=function(){this.callService("turn_on")},yn.prototype.volumeDown=function(){this.callService("volume_down")},yn.prototype.volumeMute=function(t){if(!this.supportsVolumeMute)throw new Error("Muting volume not supported");this.callService("volume_mute",{is_volume_muted:t})},yn.prototype.volumeUp=function(){this.callService("volume_down")},yn.prototype.callService=function(t,e){var n=e||{};n.entity_id=this.stateObj.entityId,this.serviceActions.callService("media_player",t,n)},Object.defineProperties(yn.prototype,mn);var gn=Ne.Immutable,Sn=Ne.toJS,bn="entity",En=new gn.Record({entityId:null,domain:null,objectId:null,state:null,entityDisplay:null,stateDisplay:null,lastChanged:null,lastChangedAsDate:null,lastUpdated:null,lastUpdatedAsDate:null,attributes:{},isCustomGroup:null},"Entity"),In=(function(t){function e(e,n,r,i,o){void 0===o&&(o={});var u=e.split("."),a=u[0],s=u[1],c=n.replace(/_/g," ");o.unit_of_measurement&&(c+=" "+o.unit_of_measurement),t.call(this,{entityId:e,domain:a,objectId:s,state:n,stateDisplay:c,lastChanged:r,lastUpdated:i,attributes:o,entityDisplay:o.friendly_name||s.replace(/_/g," "),lastChangedAsDate:H(r),lastUpdatedAsDate:H(i),isCustomGroup:"group"===a&&!o.auto})}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var n={id:{}};return n.id.get=function(){return this.entityId},e.prototype.domainModel=function(t){if("media_player"!==this.domain)throw new Error("Domain does not have a model");return new yn(t,this)},e.delete=function(t,e){return on(t,"DELETE","states/"+e.entityId)},e.save=function(t,e){var n=Sn(e),r=n.entityId,i=n.state,o=n.attributes;void 0===o&&(o={});var u={state:i,attributes:o};return on(t,"POST","states/"+r,u)},e.fetch=function(t,e){return on(t,"GET","states/"+e)},e.fetchAll=function(t){return on(t,"GET","states")},e.fromJSON=function(t){var n=t.entity_id,r=t.state,i=t.last_changed,o=t.last_updated,u=t.attributes;return new e(n,r,i,o,u)},Object.defineProperties(e.prototype,n),e})(En);In.entity=bn;var On=_n(In),wn=k(In),Tn=P(In),An=U(In),Dn=[Tn,function(t){return t.filter((function(t){return!t.attributes.hidden}))}],Cn=Object.freeze({hasData:wn,entityMap:Tn,byId:An,visibleEntityMap:Dn}),zn=On,Rn=Cn,Mn=Object.freeze({actions:zn,getters:Rn}),jn=Pe({NOTIFICATION_CREATED:null}),Ln=Ne.Store,Nn=Ne.Immutable,kn=new Ln({getInitialState:function(){return new Nn.OrderedMap},initialize:function(){this.on(jn.NOTIFICATION_CREATED,x),this.on(jn.LOG_OUT,V)}}),Pn=Object.freeze({createNotification:q}),Un=["notifications"],Hn=[Un,function(t){return t.last()}],xn=Object.freeze({notificationMap:Un,lastNotificationMessage:Hn}),Vn=Pn,qn=xn,Fn=Object.freeze({register:F,actions:Vn,getters:qn}),Gn=Ne.Immutable,Kn=Ne.toImmutable,Bn="service",Yn=new Gn.Record({domain:null,services:[]},"ServiceDomain"),Jn=(function(t){function e(e,n){t.call(this,{domain:e,services:n})}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var n={id:{}};return n.id.get=function(){return this.domain},e.fetchAll=function(){return on("GET","services")},e.fromJSON=function(t){var n=t.domain,r=t.services;return new e(n,Kn(r))},Object.defineProperties(e.prototype,n),e})(Yn);Jn.entity=Bn;var Wn=k(Jn),Xn=P(Jn),Qn=U(Jn),Zn=Object.freeze({hasData:Wn,entityMap:Xn,byDomain:Qn,hasService:B,canToggleEntity:Y}),$n=_n(Jn);$n.serviceRegistered=function(t,e,n){var r=t.evaluateToJS(Qn(e));if(r)r.services[n]={};else{var i;r={domain:e,services:(i={},i[n]={},i)}}$n.incrementData(t,r)},$n.callTurnOn=function(t,e,n){return void 0===n&&(n={}),$n.callService(t,"homeassistant","turn_on",ln({},n,{entity_id:e}))},$n.callTurnOff=function(t,e,n){return void 0===n&&(n={}),$n.callService(t,"homeassistant","turn_off",ln({},n,{entity_id:e}))},$n.callService=function(t,e,n,r){return void 0===r&&(r={}),on(t,"POST","services/"+e+"/"+n,r).then((function(i){"turn_on"===n&&r.entity_id?Vn.createNotification(t,"Turned on "+r.entity_id+"."):"turn_off"===n&&r.entity_id?Vn.createNotification(t,"Turned off "+r.entity_id+"."):Vn.createNotification(t,"Service "+e+"/"+n+" called."),zn.incrementData(t,i)}))};var tr=$n,er=Zn,nr=Object.freeze({actions:tr,getters:er}),rr=Ne.Immutable,ir="event",or=new rr.Record({event:null,listenerCount:0},"Event"),ur=(function(t){function e(e,n){void 0===n&&(n=0),t.call(this,{event:e,listenerCount:n})}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var n={id:{}};return n.id.get=function(){return this.event},e.fetchAll=function(t){return on(t,"GET","events")},e.fromJSON=function(t){var n=t.event,r=t.listener_count;return new e(n,r)},Object.defineProperties(e.prototype,n),e})(or);ur.entity=ir;var ar=_n(ur);ar.fireEvent=function(t,e,n){return void 0===n&&(n={}),on(t,"POST","events/"+e,n).then((function(){Vn.createNotification(t,"Event "+e+" successful fired!")}))};var sr=k(ur),cr=P(ur),fr=U(ur),hr=Object.freeze({hasData:sr,entityMap:cr,byId:fr}),lr=ar,pr=hr,_r=Object.freeze({actions:lr,getters:pr}),dr=Pe({SERVER_CONFIG_LOADED:null,COMPONENT_LOADED:null,LOG_OUT:null}),vr=Ne.Store,yr=Ne.toImmutable,mr=new vr({getInitialState:function(){return yr([])},initialize:function(){this.on(dr.COMPONENT_LOADED,J),this.on(dr.SERVER_CONFIG_LOADED,W),this.on(dr.LOG_OUT,X)}}),gr=Ne.Store,Sr=Ne.toImmutable,br=new gr({getInitialState:function(){return Sr({latitude:null,longitude:null,location_name:"Home",unit_system:"metric",time_zone:"UTC",config_dir:null,serverVersion:"unknown"})},initialize:function(){this.on(dr.SERVER_CONFIG_LOADED,Q),this.on(dr.LOG_OUT,Z)}}),Er=Object.freeze({configLoaded:$,fetchAll:tt,componentLoaded:et}),Ir=[["serverConfig","latitude"],["serverConfig","longitude"],function(t,e){return{latitude:t,longitude:e}}],Or=["serverConfig","location_name"],wr=["serverConfig","config_dir"],Tr=["serverConfig","serverVersion"],Ar=Object.freeze({locationGPS:Ir,locationName:Or,configDir:wr,serverVersion:Tr,isComponentLoaded:nt}),Dr=Er,Cr=Ar,zr=Object.freeze({register:rt,actions:Dr,getters:Cr}),Rr=Pe({NAVIGATE:null,SHOW_SIDEBAR:null,PANELS_LOADED:null,LOG_OUT:null}),Mr=Ne.Store,jr=new Mr({getInitialState:function(){return"states"},initialize:function(){this.on(Rr.NAVIGATE,it),this.on(Rr.LOG_OUT,ot)}}),Lr=Ne.Store,Nr=Ne.toImmutable,kr=new Lr({getInitialState:function(){return Nr({})},initialize:function(){this.on(Rr.PANELS_LOADED,ut),this.on(Rr.LOG_OUT,at)}}),Pr=Ne.Store,Ur=new Pr({getInitialState:function(){return!1},initialize:function(){this.on(Rr.SHOW_SIDEBAR,st),this.on(Rr.LOG_OUT,ct)}}),Hr=Object.freeze({showSidebar:ft,navigate:ht,panelsLoaded:lt}),xr=["panels"],Vr=["currentPanel"],qr=[xr,Vr,function(t,e){return t.get(e)||null}],Fr=["showSidebar"],Gr=Object.freeze({panels:xr,activePanelName:Vr,activePanel:qr,showSidebar:Fr}),Kr=Pe({SELECT_ENTITY:null,LOG_OUT:null}),Br=Ne.Store,Yr=new Br({getInitialState:function(){return null},initialize:function(){this.on(Kr.SELECT_ENTITY,pt),this.on(Kr.LOG_OUT,_t)}}),Jr=Object.freeze({selectEntity:dt,deselectEntity:vt}),Wr=Pe({ENTITY_HISTORY_DATE_SELECTED:null,ENTITY_HISTORY_FETCH_START:null,ENTITY_HISTORY_FETCH_ERROR:null,ENTITY_HISTORY_FETCH_SUCCESS:null,RECENT_ENTITY_HISTORY_FETCH_START:null,RECENT_ENTITY_HISTORY_FETCH_ERROR:null,RECENT_ENTITY_HISTORY_FETCH_SUCCESS:null,LOG_OUT:null}),Xr=Ne.Store,Qr=new Xr({getInitialState:function(){var t=new Date;return t.setDate(t.getDate()-1),t.setHours(0,0,0,0),t.toISOString()},initialize:function(){this.on(Wr.ENTITY_HISTORY_DATE_SELECTED,mt),this.on(Wr.LOG_OUT,gt)}}),Zr=Ne.Store,$r=Ne.toImmutable,ti=new Zr({getInitialState:function(){return $r({})},initialize:function(){this.on(Wr.ENTITY_HISTORY_FETCH_SUCCESS,St),this.on(Wr.LOG_OUT,bt)}}),ei=Ne.Store,ni=new ei({getInitialState:function(){return!1},initialize:function(){this.on(Wr.ENTITY_HISTORY_FETCH_START,(function(){return!0})),this.on(Wr.ENTITY_HISTORY_FETCH_SUCCESS,(function(){return!1})),this.on(Wr.ENTITY_HISTORY_FETCH_ERROR,(function(){return!1})),this.on(Wr.RECENT_ENTITY_HISTORY_FETCH_START,(function(){return!0})),this.on(Wr.RECENT_ENTITY_HISTORY_FETCH_SUCCESS,(function(){return!1})),this.on(Wr.RECENT_ENTITY_HISTORY_FETCH_ERROR,(function(){return!1})),this.on(Wr.LOG_OUT,(function(){return!1}))}}),ri=Ne.Store,ii=Ne.toImmutable,oi=new ri({getInitialState:function(){return ii({})},initialize:function(){this.on(Wr.RECENT_ENTITY_HISTORY_FETCH_SUCCESS,Et),this.on(Wr.LOG_OUT,It)}}),ui=Ne.Store,ai=Ne.toImmutable,si="ALL_ENTRY_FETCH",ci=new ui({getInitialState:function(){return ai({})},initialize:function(){this.on(Wr.RECENT_ENTITY_HISTORY_FETCH_SUCCESS,Ot),this.on(Wr.LOG_OUT,wt)}}),fi=Ne.toImmutable,hi=["isLoadingEntityHistory"],li=["currentEntityHistoryDate"],pi=["entityHistory"],_i=[li,pi,function(t,e){return e.get(t)||fi({})}],di=[li,pi,function(t,e){return!!e.get(t)}],vi=["recentEntityHistory"],yi=["recentEntityHistory"],mi=Object.freeze({isLoadingEntityHistory:hi,currentDate:li,entityHistoryMap:pi,entityHistoryForCurrentDate:_i,hasDataForCurrentDate:di,recentEntityHistoryMap:vi,recentEntityHistoryUpdatedMap:yi}),gi=Object.freeze({changeCurrentDate:Tt,fetchRecent:At,fetchDate:Dt,fetchSelectedDate:Ct}),Si=gi,bi=mi,Ei=Object.freeze({register:zt,actions:Si,getters:bi}),Ii=["moreInfoEntityId"],Oi=[Ii,function(t){return null!==t}],wi=[Ii,Rn.entityMap,function(t,e){return e.get(t)||null}],Ti=[Ii,bi.recentEntityHistoryMap,function(t,e){return e.get(t)}],Ai=[Ii,bi.recentEntityHistoryUpdatedMap,function(t,e){return yt(e.get(t))}],Di=Object.freeze({currentEntityId:Ii,hasCurrentEntityId:Oi,currentEntity:wi,currentEntityHistory:Ti,isCurrentEntityHistoryStale:Ai}),Ci=Jr,zi=Di,Ri=Object.freeze({register:Rt,actions:Ci,getters:zi}),Mi=Pe({SELECT_VIEW:null}),ji=Ne.Store,Li=new ji({getInitialState:function(){return null},initialize:function(){this.on(Mi.SELECT_VIEW,(function(t,e){var n=e.view;return n})),this.on(un.API_FETCH_SUCCESS,Mt)}}),Ni=Object.freeze({selectView:jt}),ki=Ne.Immutable,Pi="group.default_view",Ui=["persistent_notification","configurator"],Hi=["currentView"],xi=[Rn.entityMap,function(t){return t.filter((function(t){return"group"===t.domain&&t.attributes.view&&t.entityId!==Pi}))}],Vi=[Rn.entityMap,Hi,function(t,e){var n;return n=e?t.get(e):t.get(Pi),n?(new ki.Map).withMutations((function(e){Lt(e,t,n),t.valueSeq().forEach((function(t,n){Ui.indexOf(t.domain)!==-1&&e.set(n,t)}))})):t.filter((function(t){return!t.attributes.hidden}))}],qi=Object.freeze({currentView:Hi,views:xi,currentViewEntities:Vi}),Fi=Ni,Gi=qi,Ki=Object.freeze({register:Nt,actions:Fi,getters:Gi}),Bi=history.pushState&&!0,Yi="Home Assistant",Ji={},Wi=Object.freeze({startSync:Vt,stopSync:qt}),Xi=Hr,Qi=Gr,Zi=Wi,$i=Object.freeze({register:Ft,actions:Xi,getters:Qi,urlSync:Zi}),to=Object.freeze({fetchAll:Gt}),eo=[Rn.hasData,pr.hasData,er.hasData,function(t,e,n){return t&&e&&n}],no=["isFetchingData"],ro=Object.freeze({isDataLoaded:eo,isFetching:no}),io=to,oo=ro,uo=Object.freeze({register:Kt,actions:io,getters:oo}),ao=function(t,e){switch(e.event_type){case"state_changed":e.data.new_state?zn.incrementData(t,e.data.new_state):zn.removeData(t,e.data.entity_id);break;case"component_loaded":Dr.componentLoaded(t,e.data.component);break;case"service_registered":tr.serviceRegistered(t,e.data.domain,e.data.service)}},so=6e4,co=["state_changed","component_loaded","service_registered"],fo={},ho=Object.freeze({start:Jt}),lo=["streamStatus","isStreaming"],po=["streamStatus","hasError"],_o=Object.freeze({isStreamingEvents:lo,hasStreamingEventsError:po}),vo=ho,yo=_o,mo=Object.freeze({register:Wt,actions:vo,getters:yo}),go="Unexpected error",So=Object.freeze({validate:Xt,logOut:Qt}),bo=["authAttempt","isValidating"],Eo=["authAttempt","isInvalid"],Io=["authAttempt","errorMessage"],Oo=["rememberAuth"],wo=[["authAttempt","authToken"],["authAttempt","host"],function(t,e){return{authToken:t,host:e}}],To=["authCurrent","authToken"],Ao=[To,["authCurrent","host"],function(t,e){return{authToken:t,host:e}}],Do=[bo,["authAttempt","authToken"],["authCurrent","authToken"],function(t,e,n){return t?e:n}],Co=[bo,wo,Ao,function(t,e,n){return t?e:n}],zo=Object.freeze({isValidating:bo,isInvalidAttempt:Eo,attemptErrorMessage:Io,rememberAuth:Oo,attemptAuthInfo:wo,currentAuthToken:To,currentAuthInfo:Ao,authToken:Do,authInfo:Co}),Ro=So,Mo=zo,jo=Object.freeze({register:Zt,actions:Ro,getters:Mo}),Lo=$t(),No={authToken:{getter:[Mo.currentAuthToken,Mo.rememberAuth,function(t,e){return e?t:null}],defaultValue:null},showSidebar:{getter:Qi.showSidebar,defaultValue:!1}},ko={};Object.keys(No).forEach((function(t){t in Lo||(Lo[t]=No[t].defaultValue),Object.defineProperty(ko,t,{get:function(){try{return JSON.parse(Lo[t])}catch(e){return No[t].defaultValue}}})})),ko.startSync=function(t){Object.keys(No).forEach((function(e){var n=No[e],r=n.getter,i=function(t){Lo[e]=JSON.stringify(t)};t.observe(r,i),i(t.evaluate(r))}))};var Po=ko,Uo=Ne.Reactor,Ho=0,xo=Ne.toImmutable,Vo={UNIT_TEMP_C:"°C",UNIT_TEMP_F:"°F"},qo={expandGroup:ne,isStaleTime:yt,parseDateTime:H,temperatureUnits:Vo},Fo=Object.freeze({fetchErrorLog:re}),Go=Fo,Ko=Object.freeze({actions:Go}),Bo=Pe({LOGBOOK_DATE_SELECTED:null,LOGBOOK_ENTRIES_FETCH_START:null,LOGBOOK_ENTRIES_FETCH_ERROR:null,LOGBOOK_ENTRIES_FETCH_SUCCESS:null}),Yo=Ne.Store,Jo=new Yo({getInitialState:function(){var t=new Date;return t.setHours(0,0,0,0),t.toISOString()},initialize:function(){this.on(Bo.LOGBOOK_DATE_SELECTED,ie),this.on(Bo.LOG_OUT,oe)}}),Wo=Ne.Store,Xo=new Wo({getInitialState:function(){return!1},initialize:function(){this.on(Bo.LOGBOOK_ENTRIES_FETCH_START,(function(){return!0})),this.on(Bo.LOGBOOK_ENTRIES_FETCH_SUCCESS,(function(){return!1})),this.on(Bo.LOGBOOK_ENTRIES_FETCH_ERROR,(function(){return!1})),this.on(Bo.LOG_OUT,(function(){return!1}))}}),Qo=Ne.Immutable,Zo=new Qo.Record({when:null,name:null,message:null,domain:null,entityId:null},"LogbookEntry"),$o=(function(t){function e(e,n,r,i,o){t.call(this,{when:e,name:n,message:r,domain:i,entityId:o})}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.fromJSON=function(t){var n=t.when,r=t.name,i=t.message,o=t.domain,u=t.entity_id;return new e(H(n),r,i,o,u)},e})(Zo),tu=Ne.Store,eu=Ne.toImmutable,nu=new tu({getInitialState:function(){return eu({})},initialize:function(){this.on(Bo.LOGBOOK_ENTRIES_FETCH_SUCCESS,ue),this.on(Bo.LOG_OUT,ae)}}),ru=Ne.Store,iu=Ne.toImmutable,ou=new ru({getInitialState:function(){return iu({})},initialize:function(){this.on(Bo.LOGBOOK_ENTRIES_FETCH_SUCCESS,se),this.on(Bo.LOG_OUT,ce)}}),uu=Object.freeze({changeCurrentDate:fe,fetchDate:he}),au=Ne.toImmutable,su=6e4,cu=["currentLogbookDate"],fu=[cu,["logbookEntriesUpdated"],function(t,e){return le(e.get(t))}],hu=[cu,["logbookEntries"],function(t,e){return e.get(t)||au([])}],lu=["isLoadingLogbookEntries"],pu=Object.freeze({currentDate:cu,isCurrentStale:fu,currentEntries:hu,isLoadingEntries:lu}),_u=uu,du=pu,vu=Object.freeze({register:pe,actions:_u,getters:du}),yu=Pe({PUSH_NOTIFICATIONS_SUBSCRIBE:null,PUSH_NOTIFICATIONS_UNSUBSCRIBE:null}),mu=Ne.Store,gu=Ne.toImmutable,Su=new mu({getInitialState:function(){return gu({supported:"PushManager"in window&&("https:"===document.location.protocol||"localhost"===document.location.hostname||"127.0.0.1"===document.location.hostname),active:"Notification"in window&&"granted"===Notification.permission})},initialize:function(){this.on(yu.PUSH_NOTIFICATIONS_SUBSCRIBE,_e),this.on(yu.PUSH_NOTIFICATIONS_UNSUBSCRIBE,de),this.on(yu.LOG_OUT,ve)}}),bu=Object.freeze({subscribePushNotifications:ye,unsubscribePushNotifications:me}),Eu=["pushNotifications","supported"],Iu=["pushNotifications","active"],Ou=Object.freeze({isSupported:Eu,isActive:Iu}),wu=bu,Tu=Ou,Au=Object.freeze({register:ge,actions:wu,getters:Tu}),Du=Object.freeze({render:Se}),Cu=Du,zu=Object.freeze({actions:Cu}),Ru=Ne.Store,Mu=new Ru({getInitialState:function(){return"webkitSpeechRecognition"in window}}),ju=Pe({VOICE_START:null,VOICE_RESULT:null,VOICE_TRANSMITTING:null,VOICE_DONE:null,VOICE_ERROR:null}),Lu=Ne.Store,Nu=Ne.toImmutable,ku=new Lu({getInitialState:function(){return Nu({isListening:!1,isTransmitting:!1,interimTranscript:"",finalTranscript:""})},initialize:function(){this.on(ju.VOICE_START,be),this.on(ju.VOICE_RESULT,Ee),this.on(ju.VOICE_TRANSMITTING,Ie),this.on(ju.VOICE_DONE,Oe),this.on(ju.VOICE_ERROR,we),this.on(ju.LOG_OUT,Te)}}),Pu={},Uu=Object.freeze({stop:Ce,finish:ze,listen:Re}),Hu=["isVoiceSupported"],xu=["currentVoiceCommand","isListening"],Vu=["currentVoiceCommand","isTransmitting"],qu=["currentVoiceCommand","interimTranscript"],Fu=["currentVoiceCommand","finalTranscript"],Gu=[qu,Fu,function(t,e){return t.slice(e.length)}],Ku=Object.freeze({isVoiceSupported:Hu,isListening:xu,isTransmitting:Vu,interimTranscript:qu,finalTranscript:Fu,extraInterimTranscript:Gu}),Bu=Uu,Yu=Ku,Ju=Object.freeze({register:Me,actions:Bu,getters:Yu}),Wu=function(){var t=te();Object.defineProperties(this,{demo:{value:!1,enumerable:!0},dev:{value:!1,enumerable:!0},localStoragePreferences:{value:Po,enumerable:!0},reactor:{value:t,enumerable:!0},util:{value:qo,enumerable:!0},callApi:{value:on.bind(null,t)},startLocalStoragePreferencesSync:{value:Po.startSync.bind(Po,t)},startUrlSync:{value:Zi.startSync.bind(null,t)},stopUrlSync:{value:Zi.stopSync.bind(null,t)}}),ee(this,t,{auth:jo,config:zr,entity:Mn,entityHistory:Ei,errorLog:Ko,event:_r,logbook:vu,moreInfo:Ri,navigation:$i,notification:Fn,pushNotification:Au,restApi:dn,service:nr,stream:mo,sync:uo,template:zu,view:Ki,voice:Ju})},Xu=new Wu;window.validateAuth=function(t,e){Xu.authActions.validate(t,{rememberAuth:e,useStreaming:Xu.localStoragePreferences.useStreaming})},window.removeInitMsg=function(){var t=document.getElementById("ha-init-skeleton");t&&t.parentElement.removeChild(t)},Xu.reactor.batch((function(){Xu.navigationActions.showSidebar(Xu.localStoragePreferences.showSidebar),window.noAuth?window.validateAuth("",!1):Xu.localStoragePreferences.authToken&&window.validateAuth(Xu.localStoragePreferences.authToken,!0)})),setTimeout(Xu.startLocalStoragePreferencesSync,5e3),"serviceWorker"in navigator&&window.addEventListener("load",(function(){navigator.serviceWorker.register("/service_worker.js")})),window.hass=Xu})(); diff --git a/homeassistant/components/frontend/www_static/core.js.gz b/homeassistant/components/frontend/www_static/core.js.gz index 9e646886d34696758747d5460f4c0f52bbe25abc..6ecd5e7276260042ba914b2d92d39590db5a742d 100644 GIT binary patch delta 26327 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 delta 26314 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%0AyV^ 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 Rl>7_Z{{g^|q_xn^0RT*ydo}<7 diff --git a/homeassistant/components/frontend/www_static/frontend.html b/homeassistant/components/frontend/www_static/frontend.html index 545d1f50fc7..6811287dabe 100644 --- a/homeassistant/components/frontend/www_static/frontend.html +++ b/homeassistant/components/frontend/www_static/frontend.html @@ -1,5 +1,5 @@ <html><head><meta charset="UTF-8"></head><body><div hidden="" by-vulcanize=""><script>!function(){function e(){document.body.removeAttribute("unresolved")}window.WebComponents?addEventListener("WebComponentsReady",e):"interactive"===document.readyState||"complete"===document.readyState?e():addEventListener("DOMContentLoaded",e)}(),window.Polymer={Settings:function(){var e=window.Polymer||{};if(!e.noUrlSettings)for(var t,r=location.search.slice(1).split("&"),i=0;i<r.length&&(t=r[i]);i++)t=t.split("="),t[0]&&(e[t[0]]=t[1]||!0);return e.wantShadow="shadow"===e.dom,e.hasShadow=Boolean(Element.prototype.createShadowRoot),e.nativeShadow=e.hasShadow&&!window.ShadowDOMPolyfill,e.useShadow=e.wantShadow&&e.hasShadow,e.hasNativeImports=Boolean("import"in document.createElement("link")),e.useNativeImports=e.hasNativeImports,e.useNativeCustomElements=!window.CustomElements||window.CustomElements.useNative,e.useNativeShadow=e.useShadow&&e.nativeShadow,e.usePolyfillProto=!e.useNativeCustomElements&&!Object.__proto__,e.hasNativeCSSProperties=!navigator.userAgent.match("AppleWebKit/601")&&window.CSS&&CSS.supports&&CSS.supports("box-shadow","0 0 0 var(--foo)"),e.useNativeCSSProperties=e.hasNativeCSSProperties&&e.lazyRegister&&e.useNativeCSSProperties,e.isIE=navigator.userAgent.match("Trident"),e}()},function(){var e=window.Polymer;window.Polymer=function(e){"function"==typeof e&&(e=e.prototype),e||(e={});var r=t(e);e=r.prototype;var i={prototype:e};return e.extends&&(i.extends=e.extends),Polymer.telemetry._registrate(e),document.registerElement(e.is,i),r};var t=function(e){var t=Polymer.Base;return e.extends&&(t=Polymer.Base._getExtendedPrototype(e.extends)),e=Polymer.Base.chainObject(e,t),e.registerCallback(),e.constructor};if(e)for(var r in e)Polymer[r]=e[r];Polymer.Class=t}(),Polymer.telemetry={registrations:[],_regLog:function(e){console.log("["+e.is+"]: registered")},_registrate:function(e){this.registrations.push(e),Polymer.log&&this._regLog(e)},dumpRegistrations:function(){this.registrations.forEach(this._regLog)}},Object.defineProperty(window,"currentImport",{enumerable:!0,configurable:!0,get:function(){return(document._currentScript||document.currentScript||{}).ownerDocument}}),Polymer.RenderStatus={_ready:!1,_callbacks:[],whenReady:function(e){this._ready?e():this._callbacks.push(e)},_makeReady:function(){this._ready=!0;for(var e=0;e<this._callbacks.length;e++)this._callbacks[e]();this._callbacks=[]},_catchFirstRender:function(){requestAnimationFrame(function(){Polymer.RenderStatus._makeReady()})},_afterNextRenderQueue:[],_waitingNextRender:!1,afterNextRender:function(e,t,r){this._watchNextRender(),this._afterNextRenderQueue.push([e,t,r])},hasRendered:function(){return this._ready},_watchNextRender:function(){if(!this._waitingNextRender){this._waitingNextRender=!0;var e=function(){Polymer.RenderStatus._flushNextRender()};this._ready?requestAnimationFrame(e):this.whenReady(e)}},_flushNextRender:function(){var e=this;setTimeout(function(){e._flushRenderCallbacks(e._afterNextRenderQueue),e._afterNextRenderQueue=[],e._waitingNextRender=!1})},_flushRenderCallbacks:function(e){for(var t,r=0;r<e.length;r++)t=e[r],t[1].apply(t[0],t[2]||Polymer.nar)}},window.HTMLImports?HTMLImports.whenReady(function(){Polymer.RenderStatus._catchFirstRender()}):Polymer.RenderStatus._catchFirstRender(),Polymer.ImportStatus=Polymer.RenderStatus,Polymer.ImportStatus.whenLoaded=Polymer.ImportStatus.whenReady,function(){"use strict";var e=Polymer.Settings;Polymer.Base={__isPolymerInstance__:!0,_addFeature:function(e){this.extend(this,e)},registerCallback:function(){"max"===e.lazyRegister?this.beforeRegister&&this.beforeRegister():(this._desugarBehaviors(),this._doBehavior("beforeRegister")),this._registerFeatures(),e.lazyRegister||this.ensureRegisterFinished()},createdCallback:function(){this.__hasRegisterFinished||this._ensureRegisterFinished(this.__proto__),Polymer.telemetry.instanceCount++,this.root=this,this._doBehavior("created"),this._initFeatures()},ensureRegisterFinished:function(){this._ensureRegisterFinished(this)},_ensureRegisterFinished:function(t){t.__hasRegisterFinished===t.is&&t.is||("max"===e.lazyRegister&&(t._desugarBehaviors(),t._doBehaviorOnly("beforeRegister")),t.__hasRegisterFinished=t.is,t._finishRegisterFeatures&&t._finishRegisterFeatures(),t._doBehavior("registered"),e.usePolyfillProto&&t!==this&&t.extend(this,t))},attachedCallback:function(){var e=this;Polymer.RenderStatus.whenReady(function(){e.isAttached=!0,e._doBehavior("attached")})},detachedCallback:function(){var e=this;Polymer.RenderStatus.whenReady(function(){e.isAttached=!1,e._doBehavior("detached")})},attributeChangedCallback:function(e,t,r){this._attributeChangedImpl(e),this._doBehavior("attributeChanged",[e,t,r])},_attributeChangedImpl:function(e){this._setAttributeToProperty(this,e)},extend:function(e,t){if(e&&t)for(var r,i=Object.getOwnPropertyNames(t),o=0;o<i.length&&(r=i[o]);o++)this.copyOwnProperty(r,t,e);return e||t},mixin:function(e,t){for(var r in t)e[r]=t[r];return e},copyOwnProperty:function(e,t,r){var i=Object.getOwnPropertyDescriptor(t,e);i&&Object.defineProperty(r,e,i)},_logger:function(e,t){switch(1===t.length&&Array.isArray(t[0])&&(t=t[0]),e){case"log":case"warn":case"error":console[e].apply(console,t)}},_log:function(){var e=Array.prototype.slice.call(arguments,0);this._logger("log",e)},_warn:function(){var e=Array.prototype.slice.call(arguments,0);this._logger("warn",e)},_error:function(){var e=Array.prototype.slice.call(arguments,0);this._logger("error",e)},_logf:function(){return this._logPrefix.concat(this.is).concat(Array.prototype.slice.call(arguments,0))}},Polymer.Base._logPrefix=function(){var e=window.chrome&&!/edge/i.test(navigator.userAgent)||/firefox/i.test(navigator.userAgent);return e?["%c[%s::%s]:","font-weight: bold; background-color:#EEEE00;"]:["[%s::%s]:"]}(),Polymer.Base.chainObject=function(e,t){return e&&t&&e!==t&&(Object.__proto__||(e=Polymer.Base.extend(Object.create(t),e)),e.__proto__=t),e},Polymer.Base=Polymer.Base.chainObject(Polymer.Base,HTMLElement.prototype),window.CustomElements?Polymer.instanceof=CustomElements.instanceof:Polymer.instanceof=function(e,t){return e instanceof t},Polymer.isInstance=function(e){return Boolean(e&&e.__isPolymerInstance__)},Polymer.telemetry.instanceCount=0}(),function(){function e(){if(s)for(var e,t=document._currentScript||document.currentScript,r=t&&t.ownerDocument||document,i=r.querySelectorAll("dom-module"),o=i.length-1;o>=0&&(e=i[o]);o--){if(e.__upgraded__)return;CustomElements.upgrade(e)}}var t={},r={},i=function(e){return t[e]||r[e.toLowerCase()]},o=function(){return document.createElement("dom-module")};o.prototype=Object.create(HTMLElement.prototype),Polymer.Base.extend(o.prototype,{constructor:o,createdCallback:function(){this.register()},register:function(e){e=e||this.id||this.getAttribute("name")||this.getAttribute("is"),e&&(this.id=e,t[e]=this,r[e.toLowerCase()]=this)},import:function(t,r){if(t){var o=i(t);return o||(e(),o=i(t)),o&&r&&(o=o.querySelector(r)),o}}});var s=window.CustomElements&&!CustomElements.useNative;document.registerElement("dom-module",o)}(),Polymer.Base._addFeature({_prepIs:function(){if(!this.is){var e=(document._currentScript||document.currentScript).parentNode;if("dom-module"===e.localName){var t=e.id||e.getAttribute("name")||e.getAttribute("is");this.is=t}}this.is&&(this.is=this.is.toLowerCase())}}),Polymer.Base._addFeature({behaviors:[],_desugarBehaviors:function(){this.behaviors.length&&(this.behaviors=this._desugarSomeBehaviors(this.behaviors))},_desugarSomeBehaviors:function(e){var t=[];e=this._flattenBehaviorsList(e);for(var r=e.length-1;r>=0;r--){var i=e[r];t.indexOf(i)===-1&&(this._mixinBehavior(i),t.unshift(i))}return t},_flattenBehaviorsList:function(e){for(var t=[],r=0;r<e.length;r++){var i=e[r];i instanceof Array?t=t.concat(this._flattenBehaviorsList(i)):i?t.push(i):this._warn(this._logf("_flattenBehaviorsList","behavior is null, check for missing or 404 import"))}return t},_mixinBehavior:function(e){for(var t,r=Object.getOwnPropertyNames(e),i=0;i<r.length&&(t=r[i]);i++)Polymer.Base._behaviorProperties[t]||this.hasOwnProperty(t)||this.copyOwnProperty(t,e,this)},_prepBehaviors:function(){this._prepFlattenedBehaviors(this.behaviors)},_prepFlattenedBehaviors:function(e){for(var t=0,r=e.length;t<r;t++)this._prepBehavior(e[t]);this._prepBehavior(this)},_doBehavior:function(e,t){for(var r=0;r<this.behaviors.length;r++)this._invokeBehavior(this.behaviors[r],e,t);this._invokeBehavior(this,e,t)},_doBehaviorOnly:function(e,t){for(var r=0;r<this.behaviors.length;r++)this._invokeBehavior(this.behaviors[r],e,t)},_invokeBehavior:function(e,t,r){var i=e[t];i&&i.apply(this,r||Polymer.nar)},_marshalBehaviors:function(){for(var e=0;e<this.behaviors.length;e++)this._marshalBehavior(this.behaviors[e]);this._marshalBehavior(this)}}),Polymer.Base._behaviorProperties={hostAttributes:!0,beforeRegister:!0,registered:!0,properties:!0,observers:!0,listeners:!0,created:!0,attached:!0,detached:!0,attributeChanged:!0,ready:!0},Polymer.Base._addFeature({_getExtendedPrototype:function(e){return this._getExtendedNativePrototype(e)},_nativePrototypes:{},_getExtendedNativePrototype:function(e){var t=this._nativePrototypes[e];if(!t){var r=this.getNativePrototype(e);t=this.extend(Object.create(r),Polymer.Base),this._nativePrototypes[e]=t}return t},getNativePrototype:function(e){return Object.getPrototypeOf(document.createElement(e))}}),Polymer.Base._addFeature({_prepConstructor:function(){this._factoryArgs=this.extends?[this.extends,this.is]:[this.is];var e=function(){return this._factory(arguments)};this.hasOwnProperty("extends")&&(e.extends=this.extends),Object.defineProperty(this,"constructor",{value:e,writable:!0,configurable:!0}),e.prototype=this},_factory:function(e){var t=document.createElement.apply(document,this._factoryArgs);return this.factoryImpl&&this.factoryImpl.apply(t,e),t}}),Polymer.nob=Object.create(null),Polymer.Base._addFeature({properties:{},getPropertyInfo:function(e){var t=this._getPropertyInfo(e,this.properties);if(!t)for(var r=0;r<this.behaviors.length;r++)if(t=this._getPropertyInfo(e,this.behaviors[r].properties))return t;return t||Polymer.nob},_getPropertyInfo:function(e,t){var r=t&&t[e];return"function"==typeof r&&(r=t[e]={type:r}),r&&(r.defined=!0),r},_prepPropertyInfo:function(){this._propertyInfo={};for(var e=0;e<this.behaviors.length;e++)this._addPropertyInfo(this._propertyInfo,this.behaviors[e].properties);this._addPropertyInfo(this._propertyInfo,this.properties),this._addPropertyInfo(this._propertyInfo,this._propertyEffects)},_addPropertyInfo:function(e,t){if(t){var r,i;for(var o in t)r=e[o],i=t[o],("_"!==o[0]||i.readOnly)&&(e[o]?(r.type||(r.type=i.type),r.readOnly||(r.readOnly=i.readOnly)):e[o]={type:"function"==typeof i?i:i.type,readOnly:i.readOnly,attribute:Polymer.CaseMap.camelToDashCase(o)})}}}),Polymer.CaseMap={_caseMap:{},_rx:{dashToCamel:/-[a-z]/g,camelToDash:/([A-Z])/g},dashToCamelCase:function(e){return this._caseMap[e]||(this._caseMap[e]=e.indexOf("-")<0?e:e.replace(this._rx.dashToCamel,function(e){return e[1].toUpperCase()}))},camelToDashCase:function(e){return this._caseMap[e]||(this._caseMap[e]=e.replace(this._rx.camelToDash,"-$1").toLowerCase())}},Polymer.Base._addFeature({_addHostAttributes:function(e){this._aggregatedAttributes||(this._aggregatedAttributes={}),e&&this.mixin(this._aggregatedAttributes,e)},_marshalHostAttributes:function(){this._aggregatedAttributes&&this._applyAttributes(this,this._aggregatedAttributes)},_applyAttributes:function(e,t){for(var r in t)if(!this.hasAttribute(r)&&"class"!==r){var i=t[r];this.serializeValueToAttribute(i,r,this)}},_marshalAttributes:function(){this._takeAttributesToModel(this)},_takeAttributesToModel:function(e){if(this.hasAttributes())for(var t in this._propertyInfo){var r=this._propertyInfo[t];this.hasAttribute(r.attribute)&&this._setAttributeToProperty(e,r.attribute,t,r)}},_setAttributeToProperty:function(e,t,r,i){if(!this._serializing&&(r=r||Polymer.CaseMap.dashToCamelCase(t),i=i||this._propertyInfo&&this._propertyInfo[r],i&&!i.readOnly)){var o=this.getAttribute(t);e[r]=this.deserialize(o,i.type)}},_serializing:!1,reflectPropertyToAttribute:function(e,t,r){this._serializing=!0,r=void 0===r?this[e]:r,this.serializeValueToAttribute(r,t||Polymer.CaseMap.camelToDashCase(e)),this._serializing=!1},serializeValueToAttribute:function(e,t,r){var i=this.serialize(e);r=r||this,void 0===i?r.removeAttribute(t):r.setAttribute(t,i)},deserialize:function(e,t){switch(t){case Number:e=Number(e);break;case Boolean:e=null!=e;break;case Object:try{e=JSON.parse(e)}catch(e){}break;case Array:try{e=JSON.parse(e)}catch(t){e=null,console.warn("Polymer::Attributes: couldn`t decode Array as JSON")}break;case Date:e=new Date(e);break;case String:}return e},serialize:function(e){switch(typeof e){case"boolean":return e?"":void 0;case"object":if(e instanceof Date)return e.toString();if(e)try{return JSON.stringify(e)}catch(e){return""}default:return null!=e?e:void 0}}}),Polymer.version="1.7.1",Polymer.Base._addFeature({_registerFeatures:function(){this._prepIs(),this._prepBehaviors(),this._prepConstructor(),this._prepPropertyInfo()},_prepBehavior:function(e){this._addHostAttributes(e.hostAttributes)},_marshalBehavior:function(e){},_initFeatures:function(){this._marshalHostAttributes(),this._marshalBehaviors()}})</script><script>Polymer.Base._addFeature({_prepTemplate:function(){void 0===this._template&&(this._template=Polymer.DomModule.import(this.is,"template")),this._template&&this._template.hasAttribute("is")&&this._warn(this._logf("_prepTemplate","top-level Polymer template must not be a type-extension, found",this._template,"Move inside simple <template>.")),this._template&&!this._template.content&&window.HTMLTemplateElement&&HTMLTemplateElement.decorate&&HTMLTemplateElement.decorate(this._template)},_stampTemplate:function(){this._template&&(this.root=this.instanceTemplate(this._template))},instanceTemplate:function(e){var t=document.importNode(e._content||e.content,!0);return t}}),function(){var e=Polymer.Base.attachedCallback;Polymer.Base._addFeature({_hostStack:[],ready:function(){},_registerHost:function(e){this.dataHost=e=e||Polymer.Base._hostStack[Polymer.Base._hostStack.length-1],e&&e._clients&&e._clients.push(this),this._clients=null,this._clientsReadied=!1},_beginHosting:function(){Polymer.Base._hostStack.push(this),this._clients||(this._clients=[])},_endHosting:function(){Polymer.Base._hostStack.pop()},_tryReady:function(){this._readied=!1,this._canReady()&&this._ready()},_canReady:function(){return!this.dataHost||this.dataHost._clientsReadied},_ready:function(){this._beforeClientsReady(),this._template&&(this._setupRoot(),this._readyClients()),this._clientsReadied=!0,this._clients=null,this._afterClientsReady(),this._readySelf()},_readyClients:function(){this._beginDistribute();var e=this._clients;if(e)for(var t,o=0,i=e.length;o<i&&(t=e[o]);o++)t._ready();this._finishDistribute()},_readySelf:function(){this._doBehavior("ready"),this._readied=!0,this._attachedPending&&(this._attachedPending=!1,this.attachedCallback())},_beforeClientsReady:function(){},_afterClientsReady:function(){},_beforeAttached:function(){},attachedCallback:function(){this._readied?(this._beforeAttached(),e.call(this)):this._attachedPending=!0}})}(),Polymer.ArraySplice=function(){function e(e,t,o){return{index:e,removed:t,addedCount:o}}function t(){}var o=0,i=1,n=2,s=3;return t.prototype={calcEditDistances:function(e,t,o,i,n,s){for(var r=s-n+1,d=o-t+1,a=new Array(r),l=0;l<r;l++)a[l]=new Array(d),a[l][0]=l;for(var h=0;h<d;h++)a[0][h]=h;for(l=1;l<r;l++)for(h=1;h<d;h++)if(this.equals(e[t+h-1],i[n+l-1]))a[l][h]=a[l-1][h-1];else{var u=a[l-1][h]+1,c=a[l][h-1]+1;a[l][h]=u<c?u:c}return a},spliceOperationsFromEditDistances:function(e){for(var t=e.length-1,r=e[0].length-1,d=e[t][r],a=[];t>0||r>0;)if(0!=t)if(0!=r){var l,h=e[t-1][r-1],u=e[t-1][r],c=e[t][r-1];l=u<c?u<h?u:h:c<h?c:h,l==h?(h==d?a.push(o):(a.push(i),d=h),t--,r--):l==u?(a.push(s),t--,d=u):(a.push(n),r--,d=c)}else a.push(s),t--;else a.push(n),r--;return a.reverse(),a},calcSplices:function(t,r,d,a,l,h){var u=0,c=0,_=Math.min(d-r,h-l);if(0==r&&0==l&&(u=this.sharedPrefix(t,a,_)),d==t.length&&h==a.length&&(c=this.sharedSuffix(t,a,_-u)),r+=u,l+=u,d-=c,h-=c,d-r==0&&h-l==0)return[];if(r==d){for(var f=e(r,[],0);l<h;)f.removed.push(a[l++]);return[f]}if(l==h)return[e(r,[],d-r)];var m=this.spliceOperationsFromEditDistances(this.calcEditDistances(t,r,d,a,l,h));f=void 0;for(var p=[],v=r,g=l,b=0;b<m.length;b++)switch(m[b]){case o:f&&(p.push(f),f=void 0),v++,g++;break;case i:f||(f=e(v,[],0)),f.addedCount++,v++,f.removed.push(a[g]),g++;break;case n:f||(f=e(v,[],0)),f.addedCount++,v++;break;case s:f||(f=e(v,[],0)),f.removed.push(a[g]),g++}return f&&p.push(f),p},sharedPrefix:function(e,t,o){for(var i=0;i<o;i++)if(!this.equals(e[i],t[i]))return i;return o},sharedSuffix:function(e,t,o){for(var i=e.length,n=t.length,s=0;s<o&&this.equals(e[--i],t[--n]);)s++;return s},calculateSplices:function(e,t){return this.calcSplices(e,0,e.length,t,0,t.length)},equals:function(e,t){return e===t}},new t}(),Polymer.domInnerHTML=function(){function e(e){switch(e){case"&":return"&";case"<":return"<";case">":return">";case'"':return""";case" ":return" "}}function t(t){return t.replace(r,e)}function o(t){return t.replace(d,e)}function i(e){for(var t={},o=0;o<e.length;o++)t[e[o]]=!0;return t}function n(e,i,n){switch(e.nodeType){case Node.ELEMENT_NODE:for(var r,d=e.localName,h="<"+d,u=e.attributes,c=0;r=u[c];c++)h+=" "+r.name+'="'+t(r.value)+'"';return h+=">",a[d]?h:h+s(e,n)+"</"+d+">";case Node.TEXT_NODE:var _=e.data;return i&&l[i.localName]?_:o(_);case Node.COMMENT_NODE:return"\x3c!--"+e.data+"--\x3e";default:throw console.error(e),new Error("not implemented")}}function s(e,t){e instanceof HTMLTemplateElement&&(e=e.content);for(var o,i="",s=Polymer.dom(e).childNodes,r=0,d=s.length;r<d&&(o=s[r]);r++)i+=n(o,e,t);return i}var r=/[&\u00A0"]/g,d=/[&\u00A0<>]/g,a=i(["area","base","br","col","command","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"]),l=i(["style","script","xmp","iframe","noembed","noframes","plaintext","noscript"]);return{getInnerHTML:s}}(),function(){"use strict";var e=Element.prototype.insertBefore,t=Element.prototype.appendChild,o=Element.prototype.removeChild;Polymer.TreeApi={arrayCopyChildNodes:function(e){for(var t=[],o=0,i=e.firstChild;i;i=i.nextSibling)t[o++]=i;return t},arrayCopyChildren:function(e){for(var t=[],o=0,i=e.firstElementChild;i;i=i.nextElementSibling)t[o++]=i;return t},arrayCopy:function(e){for(var t=e.length,o=new Array(t),i=0;i<t;i++)o[i]=e[i];return o}},Polymer.TreeApi.Logical={hasParentNode:function(e){return Boolean(e.__dom&&e.__dom.parentNode)},hasChildNodes:function(e){return Boolean(e.__dom&&void 0!==e.__dom.childNodes)},getChildNodes:function(e){return this.hasChildNodes(e)?this._getChildNodes(e):e.childNodes},_getChildNodes:function(e){if(!e.__dom.childNodes){e.__dom.childNodes=[];for(var t=e.__dom.firstChild;t;t=t.__dom.nextSibling)e.__dom.childNodes.push(t)}return e.__dom.childNodes},getParentNode:function(e){return e.__dom&&void 0!==e.__dom.parentNode?e.__dom.parentNode:e.parentNode},getFirstChild:function(e){return e.__dom&&void 0!==e.__dom.firstChild?e.__dom.firstChild:e.firstChild},getLastChild:function(e){return e.__dom&&void 0!==e.__dom.lastChild?e.__dom.lastChild:e.lastChild},getNextSibling:function(e){return e.__dom&&void 0!==e.__dom.nextSibling?e.__dom.nextSibling:e.nextSibling},getPreviousSibling:function(e){return e.__dom&&void 0!==e.__dom.previousSibling?e.__dom.previousSibling:e.previousSibling},getFirstElementChild:function(e){return e.__dom&&void 0!==e.__dom.firstChild?this._getFirstElementChild(e):e.firstElementChild},_getFirstElementChild:function(e){for(var t=e.__dom.firstChild;t&&t.nodeType!==Node.ELEMENT_NODE;)t=t.__dom.nextSibling;return t},getLastElementChild:function(e){return e.__dom&&void 0!==e.__dom.lastChild?this._getLastElementChild(e):e.lastElementChild},_getLastElementChild:function(e){for(var t=e.__dom.lastChild;t&&t.nodeType!==Node.ELEMENT_NODE;)t=t.__dom.previousSibling;return t},getNextElementSibling:function(e){return e.__dom&&void 0!==e.__dom.nextSibling?this._getNextElementSibling(e):e.nextElementSibling},_getNextElementSibling:function(e){for(var t=e.__dom.nextSibling;t&&t.nodeType!==Node.ELEMENT_NODE;)t=t.__dom.nextSibling;return t},getPreviousElementSibling:function(e){return e.__dom&&void 0!==e.__dom.previousSibling?this._getPreviousElementSibling(e):e.previousElementSibling},_getPreviousElementSibling:function(e){for(var t=e.__dom.previousSibling;t&&t.nodeType!==Node.ELEMENT_NODE;)t=t.__dom.previousSibling;return t},saveChildNodes:function(e){if(!this.hasChildNodes(e)){e.__dom=e.__dom||{},e.__dom.firstChild=e.firstChild,e.__dom.lastChild=e.lastChild,e.__dom.childNodes=[];for(var t=e.firstChild;t;t=t.nextSibling)t.__dom=t.__dom||{},t.__dom.parentNode=e,e.__dom.childNodes.push(t),t.__dom.nextSibling=t.nextSibling,t.__dom.previousSibling=t.previousSibling}},recordInsertBefore:function(e,t,o){if(t.__dom.childNodes=null,e.nodeType===Node.DOCUMENT_FRAGMENT_NODE)for(var i=e.firstChild;i;i=i.nextSibling)this._linkNode(i,t,o);else this._linkNode(e,t,o)},_linkNode:function(e,t,o){e.__dom=e.__dom||{},t.__dom=t.__dom||{},o&&(o.__dom=o.__dom||{}),e.__dom.previousSibling=o?o.__dom.previousSibling:t.__dom.lastChild,e.__dom.previousSibling&&(e.__dom.previousSibling.__dom.nextSibling=e),e.__dom.nextSibling=o||null,e.__dom.nextSibling&&(e.__dom.nextSibling.__dom.previousSibling=e),e.__dom.parentNode=t,o?o===t.__dom.firstChild&&(t.__dom.firstChild=e):(t.__dom.lastChild=e,t.__dom.firstChild||(t.__dom.firstChild=e)),t.__dom.childNodes=null},recordRemoveChild:function(e,t){e.__dom=e.__dom||{},t.__dom=t.__dom||{},e===t.__dom.firstChild&&(t.__dom.firstChild=e.__dom.nextSibling),e===t.__dom.lastChild&&(t.__dom.lastChild=e.__dom.previousSibling);var o=e.__dom.previousSibling,i=e.__dom.nextSibling;o&&(o.__dom.nextSibling=i),i&&(i.__dom.previousSibling=o),e.__dom.parentNode=e.__dom.previousSibling=e.__dom.nextSibling=void 0,t.__dom.childNodes=null}},Polymer.TreeApi.Composed={getChildNodes:function(e){return Polymer.TreeApi.arrayCopyChildNodes(e)},getParentNode:function(e){return e.parentNode},clearChildNodes:function(e){e.textContent=""},insertBefore:function(t,o,i){return e.call(t,o,i||null)},appendChild:function(e,o){return t.call(e,o)},removeChild:function(e,t){return o.call(e,t)}}}(),Polymer.DomApi=function(){"use strict";var e=Polymer.Settings,t=Polymer.TreeApi,o=function(e){this.node=i?o.wrap(e):e},i=e.hasShadow&&!e.nativeShadow;o.wrap=window.wrap?window.wrap:function(e){return e},o.prototype={flush:function(){Polymer.dom.flush()},deepContains:function(e){if(this.node.contains(e))return!0;for(var t=e,o=e.ownerDocument;t&&t!==o&&t!==this.node;)t=Polymer.dom(t).parentNode||t.host;return t===this.node},queryDistributedElements:function(e){for(var t,i=this.getEffectiveChildNodes(),n=[],s=0,r=i.length;s<r&&(t=i[s]);s++)t.nodeType===Node.ELEMENT_NODE&&o.matchesSelector.call(t,e)&&n.push(t);return n},getEffectiveChildNodes:function(){for(var e,t=[],o=this.childNodes,i=0,r=o.length;i<r&&(e=o[i]);i++)if(e.localName===n)for(var d=s(e).getDistributedNodes(),a=0;a<d.length;a++)t.push(d[a]);else t.push(e);return t},observeNodes:function(e){if(e)return this.observer||(this.observer=this.node.localName===n?new o.DistributedNodesObserver(this):new o.EffectiveNodesObserver(this)),this.observer.addListener(e)},unobserveNodes:function(e){this.observer&&this.observer.removeListener(e)},notifyObserver:function(){this.observer&&this.observer.notify()},_query:function(e,o,i){o=o||this.node;var n=[];return this._queryElements(t.Logical.getChildNodes(o),e,i,n),n},_queryElements:function(e,t,o,i){for(var n,s=0,r=e.length;s<r&&(n=e[s]);s++)if(n.nodeType===Node.ELEMENT_NODE&&this._queryElement(n,t,o,i))return!0},_queryElement:function(e,o,i,n){var s=o(e);return s&&n.push(e),i&&i(s)?s:void this._queryElements(t.Logical.getChildNodes(e),o,i,n)}};var n=o.CONTENT="content",s=o.factory=function(e){return e=e||document,e.__domApi||(e.__domApi=new o.ctor(e)),e.__domApi};o.hasApi=function(e){return Boolean(e.__domApi)},o.ctor=o,Polymer.dom=function(e,t){return e instanceof Event?Polymer.EventApi.factory(e):o.factory(e,t)};var r=Element.prototype;return o.matchesSelector=r.matches||r.matchesSelector||r.mozMatchesSelector||r.msMatchesSelector||r.oMatchesSelector||r.webkitMatchesSelector,o}(),function(){"use strict";var e=Polymer.Settings,t=Polymer.DomApi,o=t.factory,i=Polymer.TreeApi,n=Polymer.domInnerHTML.getInnerHTML,s=t.CONTENT;if(!e.useShadow){var r=Element.prototype.cloneNode,d=Document.prototype.importNode;Polymer.Base.extend(t.prototype,{_lazyDistribute:function(e){e.shadyRoot&&e.shadyRoot._distributionClean&&(e.shadyRoot._distributionClean=!1,Polymer.dom.addDebouncer(e.debounce("_distribute",e._distributeContent)))},appendChild:function(e){return this.insertBefore(e)},insertBefore:function(e,n){if(n&&i.Logical.getParentNode(n)!==this.node)throw Error("The ref_node to be inserted before is not a child of this node");if(e.nodeType!==Node.DOCUMENT_FRAGMENT_NODE){var r=i.Logical.getParentNode(e);r?(t.hasApi(r)&&o(r).notifyObserver(),this._removeNode(e)):this._removeOwnerShadyRoot(e)}if(!this._addNode(e,n)){n&&(n=n.localName===s?this._firstComposedNode(n):n);var d=this.node._isShadyRoot?this.node.host:this.node;n?i.Composed.insertBefore(d,e,n):i.Composed.appendChild(d,e)}return this.notifyObserver(),e},_addNode:function(e,t){var o=this.getOwnerRoot();if(o){var n=this._maybeAddInsertionPoint(e,this.node);o._invalidInsertionPoints||(o._invalidInsertionPoints=n),this._addNodeToHost(o.host,e)}i.Logical.hasChildNodes(this.node)&&i.Logical.recordInsertBefore(e,this.node,t);var s=this._maybeDistribute(e)||this.node.shadyRoot;if(s)if(e.nodeType===Node.DOCUMENT_FRAGMENT_NODE)for(;e.firstChild;)i.Composed.removeChild(e,e.firstChild);else{var r=i.Composed.getParentNode(e);r&&i.Composed.removeChild(r,e)}return s},removeChild:function(e){if(i.Logical.getParentNode(e)!==this.node)throw Error("The node to be removed is not a child of this node: "+e);if(!this._removeNode(e)){var t=this.node._isShadyRoot?this.node.host:this.node,o=i.Composed.getParentNode(e);t===o&&i.Composed.removeChild(t,e)}return this.notifyObserver(),e},_removeNode:function(e){var t,n=i.Logical.hasParentNode(e)&&i.Logical.getParentNode(e),s=this._ownerShadyRootForNode(e);return n&&(t=o(e)._maybeDistributeParent(),i.Logical.recordRemoveChild(e,n),s&&this._removeDistributedChildren(s,e)&&(s._invalidInsertionPoints=!0,this._lazyDistribute(s.host))),this._removeOwnerShadyRoot(e),s&&this._removeNodeFromHost(s.host,e),t},replaceChild:function(e,t){return this.insertBefore(e,t),this.removeChild(t),e},_hasCachedOwnerRoot:function(e){return Boolean(void 0!==e._ownerShadyRoot)},getOwnerRoot:function(){return this._ownerShadyRootForNode(this.node)},_ownerShadyRootForNode:function(e){if(e){var t=e._ownerShadyRoot;if(void 0===t){if(e._isShadyRoot)t=e;else{var o=i.Logical.getParentNode(e);t=o?o._isShadyRoot?o:this._ownerShadyRootForNode(o):null}(t||document.documentElement.contains(e))&&(e._ownerShadyRoot=t)}return t}},_maybeDistribute:function(e){var t=e.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&!e.__noContent&&o(e).querySelector(s),n=t&&i.Logical.getParentNode(t).nodeType!==Node.DOCUMENT_FRAGMENT_NODE,r=t||e.localName===s;if(r){var d=this.getOwnerRoot();d&&this._lazyDistribute(d.host)}var a=this._nodeNeedsDistribution(this.node);return a&&this._lazyDistribute(this.node),a||r&&!n},_maybeAddInsertionPoint:function(e,t){var n;if(e.nodeType!==Node.DOCUMENT_FRAGMENT_NODE||e.__noContent)e.localName===s&&(i.Logical.saveChildNodes(t),i.Logical.saveChildNodes(e),n=!0);else for(var r,d,a,l=o(e).querySelectorAll(s),h=0;h<l.length&&(r=l[h]);h++)d=i.Logical.getParentNode(r),d===e&&(d=t),a=this._maybeAddInsertionPoint(r,d),n=n||a;return n},_updateInsertionPoints:function(e){for(var t,n=e.shadyRoot._insertionPoints=o(e.shadyRoot).querySelectorAll(s),r=0;r<n.length;r++)t=n[r],i.Logical.saveChildNodes(t),i.Logical.saveChildNodes(i.Logical.getParentNode(t))},_nodeNeedsDistribution:function(e){return e&&e.shadyRoot&&t.hasInsertionPoint(e.shadyRoot)},_addNodeToHost:function(e,t){e._elementAdd&&e._elementAdd(t)},_removeNodeFromHost:function(e,t){e._elementRemove&&e._elementRemove(t)},_removeDistributedChildren:function(e,t){for(var n,s=e._insertionPoints,r=0;r<s.length;r++){var d=s[r];if(this._contains(t,d))for(var a=o(d).getDistributedNodes(),l=0;l<a.length;l++){n=!0;var h=a[l],u=i.Composed.getParentNode(h);u&&i.Composed.removeChild(u,h)}}return n},_contains:function(e,t){for(;t;){if(t==e)return!0;t=i.Logical.getParentNode(t)}},_removeOwnerShadyRoot:function(e){if(this._hasCachedOwnerRoot(e))for(var t,o=i.Logical.getChildNodes(e),n=0,s=o.length;n<s&&(t=o[n]);n++)this._removeOwnerShadyRoot(t);e._ownerShadyRoot=void 0},_firstComposedNode:function(e){for(var t,i,n=o(e).getDistributedNodes(),s=0,r=n.length;s<r&&(t=n[s]);s++)if(i=o(t).getDestinationInsertionPoints(),i[i.length-1]===e)return t},querySelector:function(e){var o=this._query(function(o){return t.matchesSelector.call(o,e)},this.node,function(e){return Boolean(e)})[0];return o||null},querySelectorAll:function(e){return this._query(function(o){return t.matchesSelector.call(o,e)},this.node)},getDestinationInsertionPoints:function(){return this.node._destinationInsertionPoints||[]},getDistributedNodes:function(){return this.node._distributedNodes||[]},_clear:function(){for(;this.childNodes.length;)this.removeChild(this.childNodes[0])},setAttribute:function(e,t){this.node.setAttribute(e,t),this._maybeDistributeParent()},removeAttribute:function(e){this.node.removeAttribute(e),this._maybeDistributeParent()},_maybeDistributeParent:function(){if(this._nodeNeedsDistribution(this.parentNode))return this._lazyDistribute(this.parentNode),!0},cloneNode:function(e){var t=r.call(this.node,!1);if(e)for(var i,n=this.childNodes,s=o(t),d=0;d<n.length;d++)i=o(n[d]).cloneNode(!0),s.appendChild(i);return t},importNode:function(e,t){var n=this.node instanceof Document?this.node:this.node.ownerDocument,s=d.call(n,e,!1);if(t)for(var r,a=i.Logical.getChildNodes(e),l=o(s),h=0;h<a.length;h++)r=o(n).importNode(a[h],!0),l.appendChild(r);return s},_getComposedInnerHTML:function(){return n(this.node,!0)}}),Object.defineProperties(t.prototype,{activeElement:{get:function(){var e=document.activeElement;if(!e)return null;var t=!!this.node._isShadyRoot;if(this.node!==document){if(!t)return null;if(this.node.host===e||!this.node.host.contains(e))return null}for(var i=o(e).getOwnerRoot();i&&i!==this.node;)e=i.host,i=o(e).getOwnerRoot();return this.node===document?i?null:e:i===this.node?e:null},configurable:!0},childNodes:{get:function(){var e=i.Logical.getChildNodes(this.node);return Array.isArray(e)?e:i.arrayCopyChildNodes(this.node)},configurable:!0},children:{get:function(){return i.Logical.hasChildNodes(this.node)?Array.prototype.filter.call(this.childNodes,function(e){return e.nodeType===Node.ELEMENT_NODE}):i.arrayCopyChildren(this.node)},configurable:!0},parentNode:{get:function(){return i.Logical.getParentNode(this.node)},configurable:!0},firstChild:{get:function(){return i.Logical.getFirstChild(this.node)},configurable:!0},lastChild:{get:function(){return i.Logical.getLastChild(this.node)},configurable:!0},nextSibling:{get:function(){return i.Logical.getNextSibling(this.node)},configurable:!0},previousSibling:{get:function(){return i.Logical.getPreviousSibling(this.node)},configurable:!0},firstElementChild:{get:function(){return i.Logical.getFirstElementChild(this.node)},configurable:!0},lastElementChild:{get:function(){return i.Logical.getLastElementChild(this.node)},configurable:!0},nextElementSibling:{get:function(){return i.Logical.getNextElementSibling(this.node)},configurable:!0},previousElementSibling:{get:function(){return i.Logical.getPreviousElementSibling(this.node)},configurable:!0},textContent:{get:function(){var e=this.node.nodeType;if(e===Node.TEXT_NODE||e===Node.COMMENT_NODE)return this.node.textContent;for(var t,o=[],i=0,n=this.childNodes;t=n[i];i++)t.nodeType!==Node.COMMENT_NODE&&o.push(t.textContent);return o.join("")},set:function(e){var t=this.node.nodeType;t===Node.TEXT_NODE||t===Node.COMMENT_NODE?this.node.textContent=e:(this._clear(),e&&this.appendChild(document.createTextNode(e)))},configurable:!0},innerHTML:{get:function(){var e=this.node.nodeType;return e===Node.TEXT_NODE||e===Node.COMMENT_NODE?null:n(this.node)},set:function(e){var t=this.node.nodeType;if(t!==Node.TEXT_NODE||t!==Node.COMMENT_NODE){this._clear();var o=document.createElement("div");o.innerHTML=e;for(var n=i.arrayCopyChildNodes(o),s=0;s<n.length;s++)this.appendChild(n[s])}},configurable:!0}}),t.hasInsertionPoint=function(e){return Boolean(e&&e._insertionPoints.length)}}}(),function(){"use strict";var e=Polymer.Settings,t=Polymer.TreeApi,o=Polymer.DomApi;if(e.useShadow){Polymer.Base.extend(o.prototype,{querySelectorAll:function(e){return t.arrayCopy(this.node.querySelectorAll(e))},getOwnerRoot:function(){for(var e=this.node;e;){if(e.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&e.host)return e;e=e.parentNode}},importNode:function(e,t){var o=this.node instanceof Document?this.node:this.node.ownerDocument;return o.importNode(e,t)},getDestinationInsertionPoints:function(){var e=this.node.getDestinationInsertionPoints&&this.node.getDestinationInsertionPoints();return e?t.arrayCopy(e):[]},getDistributedNodes:function(){var e=this.node.getDistributedNodes&&this.node.getDistributedNodes();return e?t.arrayCopy(e):[]}}),Object.defineProperties(o.prototype,{activeElement:{get:function(){var e=o.wrap(this.node),t=e.activeElement;return e.contains(t)?t:null},configurable:!0},childNodes:{get:function(){return t.arrayCopyChildNodes(this.node)},configurable:!0},children:{get:function(){return t.arrayCopyChildren(this.node)},configurable:!0},textContent:{get:function(){return this.node.textContent},set:function(e){return this.node.textContent=e},configurable:!0},innerHTML:{get:function(){return this.node.innerHTML},set:function(e){return this.node.innerHTML=e},configurable:!0}});var i=function(e){for(var t=0;t<e.length;t++)n(e[t])},n=function(e){o.prototype[e]=function(){return this.node[e].apply(this.node,arguments)}};i(["cloneNode","appendChild","insertBefore","removeChild","replaceChild","setAttribute","removeAttribute","querySelector"]);var s=function(e){for(var t=0;t<e.length;t++)r(e[t])},r=function(e){Object.defineProperty(o.prototype,e,{get:function(){return this.node[e]},configurable:!0})};s(["parentNode","firstChild","lastChild","nextSibling","previousSibling","firstElementChild","lastElementChild","nextElementSibling","previousElementSibling"])}}(),Polymer.Base.extend(Polymer.dom,{_flushGuard:0,_FLUSH_MAX:100,_needsTakeRecords:!Polymer.Settings.useNativeCustomElements,_debouncers:[],_staticFlushList:[],_finishDebouncer:null,flush:function(){for(this._flushGuard=0,this._prepareFlush();this._debouncers.length&&this._flushGuard<this._FLUSH_MAX;){for(;this._debouncers.length;)this._debouncers.shift().complete();this._finishDebouncer&&this._finishDebouncer.complete(),this._prepareFlush(),this._flushGuard++}this._flushGuard>=this._FLUSH_MAX&&console.warn("Polymer.dom.flush aborted. Flush may not be complete.")},_prepareFlush:function(){this._needsTakeRecords&&CustomElements.takeRecords();for(var e=0;e<this._staticFlushList.length;e++)this._staticFlushList[e]()},addStaticFlush:function(e){this._staticFlushList.push(e)},removeStaticFlush:function(e){var t=this._staticFlushList.indexOf(e);t>=0&&this._staticFlushList.splice(t,1)},addDebouncer:function(e){this._debouncers.push(e),this._finishDebouncer=Polymer.Debounce(this._finishDebouncer,this._finishFlush)},_finishFlush:function(){Polymer.dom._debouncers=[]}}),Polymer.EventApi=function(){"use strict";var e=Polymer.DomApi.ctor,t=Polymer.Settings;e.Event=function(e){this.event=e},t.useShadow?e.Event.prototype={get rootTarget(){return this.event.path[0]},get localTarget(){return this.event.target},get path(){var e=this.event.path;return Array.isArray(e)||(e=Array.prototype.slice.call(e)),e}}:e.Event.prototype={get rootTarget(){return this.event.target},get localTarget(){for(var e=this.event.currentTarget,t=e&&Polymer.dom(e).getOwnerRoot(),o=this.path,i=0;i<o.length;i++)if(Polymer.dom(o[i]).getOwnerRoot()===t)return o[i]},get path(){if(!this.event._path){for(var e=[],t=this.rootTarget;t;){e.push(t);var o=Polymer.dom(t).getDestinationInsertionPoints();if(o.length){for(var i=0;i<o.length-1;i++)e.push(o[i]);t=o[o.length-1]}else t=Polymer.dom(t).parentNode||t.host}e.push(window),this.event._path=e}return this.event._path}};var o=function(t){return t.__eventApi||(t.__eventApi=new e.Event(t)),t.__eventApi};return{factory:o}}(),function(){"use strict";var e=Polymer.DomApi.ctor,t=Polymer.Settings.useShadow;Object.defineProperty(e.prototype,"classList",{get:function(){return this._classList||(this._classList=new e.ClassList(this)),this._classList},configurable:!0}),e.ClassList=function(e){this.domApi=e,this.node=e.node},e.ClassList.prototype={add:function(){this.node.classList.add.apply(this.node.classList,arguments),this._distributeParent()},remove:function(){this.node.classList.remove.apply(this.node.classList,arguments),this._distributeParent()},toggle:function(){this.node.classList.toggle.apply(this.node.classList,arguments),this._distributeParent()},_distributeParent:function(){t||this.domApi._maybeDistributeParent()},contains:function(){return this.node.classList.contains.apply(this.node.classList,arguments)}}}(),function(){"use strict";var e=Polymer.DomApi.ctor,t=Polymer.Settings;if(e.EffectiveNodesObserver=function(e){this.domApi=e,this.node=this.domApi.node,this._listeners=[]},e.EffectiveNodesObserver.prototype={addListener:function(e){this._isSetup||(this._setup(),this._isSetup=!0);var t={fn:e,_nodes:[]};return this._listeners.push(t),this._scheduleNotify(),t},removeListener:function(e){var t=this._listeners.indexOf(e);t>=0&&(this._listeners.splice(t,1),e._nodes=[]),this._hasListeners()||(this._cleanup(),this._isSetup=!1)},_setup:function(){this._observeContentElements(this.domApi.childNodes)},_cleanup:function(){this._unobserveContentElements(this.domApi.childNodes)},_hasListeners:function(){return Boolean(this._listeners.length)},_scheduleNotify:function(){this._debouncer&&this._debouncer.stop(),this._debouncer=Polymer.Debounce(this._debouncer,this._notify),this._debouncer.context=this,Polymer.dom.addDebouncer(this._debouncer)},notify:function(){this._hasListeners()&&this._scheduleNotify()},_notify:function(){this._beforeCallListeners(),this._callListeners()},_beforeCallListeners:function(){this._updateContentElements()},_updateContentElements:function(){this._observeContentElements(this.domApi.childNodes)},_observeContentElements:function(e){for(var t,o=0;o<e.length&&(t=e[o]);o++)this._isContent(t)&&(t.__observeNodesMap=t.__observeNodesMap||new WeakMap,t.__observeNodesMap.has(this)||t.__observeNodesMap.set(this,this._observeContent(t)))},_observeContent:function(e){var t=this,o=Polymer.dom(e).observeNodes(function(){t._scheduleNotify()});return o._avoidChangeCalculation=!0,o},_unobserveContentElements:function(e){for(var t,o,i=0;i<e.length&&(t=e[i]);i++)this._isContent(t)&&(o=t.__observeNodesMap.get(this),o&&(Polymer.dom(t).unobserveNodes(o),t.__observeNodesMap.delete(this)))},_isContent:function(e){return"content"===e.localName},_callListeners:function(){for(var e,t=this._listeners,o=this._getEffectiveNodes(),i=0;i<t.length&&(e=t[i]);i++){var n=this._generateListenerInfo(e,o);(n||e._alwaysNotify)&&this._callListener(e,n)}},_getEffectiveNodes:function(){return this.domApi.getEffectiveChildNodes()},_generateListenerInfo:function(e,t){if(e._avoidChangeCalculation)return!0;for(var o,i=e._nodes,n={target:this.node,addedNodes:[],removedNodes:[]},s=Polymer.ArraySplice.calculateSplices(t,i),r=0;r<s.length&&(o=s[r]);r++)for(var d,a=0;a<o.removed.length&&(d=o.removed[a]);a++)n.removedNodes.push(d);for(r=0,o;r<s.length&&(o=s[r]);r++)for(a=o.index;a<o.index+o.addedCount;a++)n.addedNodes.push(t[a]);return e._nodes=t,n.addedNodes.length||n.removedNodes.length?n:void 0},_callListener:function(e,t){return e.fn.call(this.node,t)},enableShadowAttributeTracking:function(){}},t.useShadow){var o=e.EffectiveNodesObserver.prototype._setup,i=e.EffectiveNodesObserver.prototype._cleanup;Polymer.Base.extend(e.EffectiveNodesObserver.prototype,{_setup:function(){if(!this._observer){var e=this;this._mutationHandler=function(t){t&&t.length&&e._scheduleNotify()},this._observer=new MutationObserver(this._mutationHandler),this._boundFlush=function(){e._flush()},Polymer.dom.addStaticFlush(this._boundFlush),this._observer.observe(this.node,{childList:!0})}o.call(this)},_cleanup:function(){this._observer.disconnect(),this._observer=null,this._mutationHandler=null,Polymer.dom.removeStaticFlush(this._boundFlush),i.call(this)},_flush:function(){this._observer&&this._mutationHandler(this._observer.takeRecords())},enableShadowAttributeTracking:function(){if(this._observer){this._makeContentListenersAlwaysNotify(),this._observer.disconnect(),this._observer.observe(this.node,{childList:!0,attributes:!0,subtree:!0});var e=this.domApi.getOwnerRoot(),t=e&&e.host;t&&Polymer.dom(t).observer&&Polymer.dom(t).observer.enableShadowAttributeTracking()}},_makeContentListenersAlwaysNotify:function(){for(var e,t=0;t<this._listeners.length;t++)e=this._listeners[t],e._alwaysNotify=e._isContentListener}})}}(),function(){"use strict";var e=Polymer.DomApi.ctor,t=Polymer.Settings;e.DistributedNodesObserver=function(t){e.EffectiveNodesObserver.call(this,t)},e.DistributedNodesObserver.prototype=Object.create(e.EffectiveNodesObserver.prototype),Polymer.Base.extend(e.DistributedNodesObserver.prototype,{_setup:function(){},_cleanup:function(){},_beforeCallListeners:function(){},_getEffectiveNodes:function(){return this.domApi.getDistributedNodes()}}),t.useShadow&&Polymer.Base.extend(e.DistributedNodesObserver.prototype,{_setup:function(){if(!this._observer){var e=this.domApi.getOwnerRoot(),t=e&&e.host;if(t){var o=this;this._observer=Polymer.dom(t).observeNodes(function(){o._scheduleNotify()}),this._observer._isContentListener=!0,this._hasAttrSelect()&&Polymer.dom(t).observer.enableShadowAttributeTracking()}}},_hasAttrSelect:function(){var e=this.node.getAttribute("select");return e&&e.match(/[[.]+/)},_cleanup:function(){var e=this.domApi.getOwnerRoot(),t=e&&e.host;t&&Polymer.dom(t).unobserveNodes(this._observer),this._observer=null}})}(),function(){function e(e,t){t._distributedNodes.push(e);var o=e._destinationInsertionPoints;o?o.push(t):e._destinationInsertionPoints=[t]}function t(e){var t=e._distributedNodes;if(t)for(var o=0;o<t.length;o++){var i=t[o]._destinationInsertionPoints;i&&i.splice(i.indexOf(e)+1,i.length)}}function o(e,t){var o=u.Logical.getParentNode(e);o&&o.shadyRoot&&h.hasInsertionPoint(o.shadyRoot)&&o.shadyRoot._distributionClean&&(o.shadyRoot._distributionClean=!1,t.shadyRoot._dirtyRoots.push(o))}function i(e,t){var o=t._destinationInsertionPoints;return o&&o[o.length-1]===e}function n(e){return"content"==e.localName}function s(e){for(;e&&r(e);)e=e.domHost;return e}function r(e){for(var t,o=u.Logical.getChildNodes(e),i=0;i<o.length;i++)if(t=o[i],t.localName&&"content"===t.localName)return e.domHost}function d(e){for(var t,o=0;o<e._insertionPoints.length;o++)t=e._insertionPoints[o],h.hasApi(t)&&Polymer.dom(t).notifyObserver()}function a(e){h.hasApi(e)&&Polymer.dom(e).notifyObserver()}function l(e){if(c&&e)for(var t=0;t<e.length;t++)CustomElements.upgrade(e[t])}var h=Polymer.DomApi,u=Polymer.TreeApi;Polymer.Base._addFeature({_prepShady:function(){this._useContent=this._useContent||Boolean(this._template)},_setupShady:function(){this.shadyRoot=null,this.__domApi||(this.__domApi=null),this.__dom||(this.__dom=null),this._ownerShadyRoot||(this._ownerShadyRoot=void 0)},_poolContent:function(){this._useContent&&u.Logical.saveChildNodes(this)},_setupRoot:function(){this._useContent&&(this._createLocalRoot(),this.dataHost||l(u.Logical.getChildNodes(this)))},_createLocalRoot:function(){this.shadyRoot=this.root,this.shadyRoot._distributionClean=!1,this.shadyRoot._hasDistributed=!1,this.shadyRoot._isShadyRoot=!0,this.shadyRoot._dirtyRoots=[];var e=this.shadyRoot._insertionPoints=!this._notes||this._notes._hasContent?this.shadyRoot.querySelectorAll("content"):[];u.Logical.saveChildNodes(this.shadyRoot);for(var t,o=0;o<e.length;o++)t=e[o],u.Logical.saveChildNodes(t),u.Logical.saveChildNodes(t.parentNode);this.shadyRoot.host=this},get domHost(){var e=Polymer.dom(this).getOwnerRoot();return e&&e.host},distributeContent:function(e){if(this.shadyRoot){this.shadyRoot._invalidInsertionPoints=this.shadyRoot._invalidInsertionPoints||e;var t=s(this);Polymer.dom(this)._lazyDistribute(t)}},_distributeContent:function(){this._useContent&&!this.shadyRoot._distributionClean&&(this.shadyRoot._invalidInsertionPoints&&(Polymer.dom(this)._updateInsertionPoints(this),this.shadyRoot._invalidInsertionPoints=!1),this._beginDistribute(),this._distributeDirtyRoots(),this._finishDistribute())},_beginDistribute:function(){this._useContent&&h.hasInsertionPoint(this.shadyRoot)&&(this._resetDistribution(),this._distributePool(this.shadyRoot,this._collectPool())); },_distributeDirtyRoots:function(){for(var e,t=this.shadyRoot._dirtyRoots,o=0,i=t.length;o<i&&(e=t[o]);o++)e._distributeContent();this.shadyRoot._dirtyRoots=[]},_finishDistribute:function(){if(this._useContent){if(this.shadyRoot._distributionClean=!0,h.hasInsertionPoint(this.shadyRoot))this._composeTree(),d(this.shadyRoot);else if(this.shadyRoot._hasDistributed){var e=this._composeNode(this);this._updateChildNodes(this,e)}else u.Composed.clearChildNodes(this),this.appendChild(this.shadyRoot);this.shadyRoot._hasDistributed||a(this),this.shadyRoot._hasDistributed=!0}},elementMatches:function(e,t){return t=t||this,h.matchesSelector.call(t,e)},_resetDistribution:function(){for(var e=u.Logical.getChildNodes(this),o=0;o<e.length;o++){var i=e[o];i._destinationInsertionPoints&&(i._destinationInsertionPoints=void 0),n(i)&&t(i)}for(var s=this.shadyRoot,r=s._insertionPoints,d=0;d<r.length;d++)r[d]._distributedNodes=[]},_collectPool:function(){for(var e=[],t=u.Logical.getChildNodes(this),o=0;o<t.length;o++){var i=t[o];n(i)?e.push.apply(e,i._distributedNodes):e.push(i)}return e},_distributePool:function(e,t){for(var i,n=e._insertionPoints,s=0,r=n.length;s<r&&(i=n[s]);s++)this._distributeInsertionPoint(i,t),o(i,this)},_distributeInsertionPoint:function(t,o){for(var i,n=!1,s=0,r=o.length;s<r;s++)i=o[s],i&&this._matchesContentSelect(i,t)&&(e(i,t),o[s]=void 0,n=!0);if(!n)for(var d=u.Logical.getChildNodes(t),a=0;a<d.length;a++)e(d[a],t)},_composeTree:function(){this._updateChildNodes(this,this._composeNode(this));for(var e,t,o=this.shadyRoot._insertionPoints,i=0,n=o.length;i<n&&(e=o[i]);i++)t=u.Logical.getParentNode(e),t._useContent||t===this||t===this.shadyRoot||this._updateChildNodes(t,this._composeNode(t))},_composeNode:function(e){for(var t=[],o=u.Logical.getChildNodes(e.shadyRoot||e),s=0;s<o.length;s++){var r=o[s];if(n(r))for(var d=r._distributedNodes,a=0;a<d.length;a++){var l=d[a];i(r,l)&&t.push(l)}else t.push(r)}return t},_updateChildNodes:function(e,t){for(var o,i=u.Composed.getChildNodes(e),n=Polymer.ArraySplice.calculateSplices(t,i),s=0,r=0;s<n.length&&(o=n[s]);s++){for(var d,a=0;a<o.removed.length&&(d=o.removed[a]);a++)u.Composed.getParentNode(d)===e&&u.Composed.removeChild(e,d),i.splice(o.index+r,1);r-=o.addedCount}for(var o,l,s=0;s<n.length&&(o=n[s]);s++)for(l=i[o.index],a=o.index,d;a<o.index+o.addedCount;a++)d=t[a],u.Composed.insertBefore(e,d,l),i.splice(a,0,d)},_matchesContentSelect:function(e,t){var o=t.getAttribute("select");if(!o)return!0;if(o=o.trim(),!o)return!0;if(!(e instanceof Element))return!1;var i=/^(:not\()?[*.#[a-zA-Z_|]/;return!!i.test(o)&&this.elementMatches(o,e)},_elementAdd:function(){},_elementRemove:function(){}});var c=window.CustomElements&&!CustomElements.useNative}(),Polymer.Settings.useShadow&&Polymer.Base._addFeature({_poolContent:function(){},_beginDistribute:function(){},distributeContent:function(){},_distributeContent:function(){},_finishDistribute:function(){},_createLocalRoot:function(){this.createShadowRoot(),this.shadowRoot.appendChild(this.root),this.root=this.shadowRoot}}),Polymer.Async={_currVal:0,_lastVal:0,_callbacks:[],_twiddleContent:0,_twiddle:document.createTextNode(""),run:function(e,t){return t>0?~setTimeout(e,t):(this._twiddle.textContent=this._twiddleContent++,this._callbacks.push(e),this._currVal++)},cancel:function(e){if(e<0)clearTimeout(~e);else{var t=e-this._lastVal;if(t>=0){if(!this._callbacks[t])throw"invalid async handle: "+e;this._callbacks[t]=null}}},_atEndOfMicrotask:function(){for(var e=this._callbacks.length,t=0;t<e;t++){var o=this._callbacks[t];if(o)try{o()}catch(e){throw t++,this._callbacks.splice(0,t),this._lastVal+=t,this._twiddle.textContent=this._twiddleContent++,e}}this._callbacks.splice(0,e),this._lastVal+=e}},new window.MutationObserver(function(){Polymer.Async._atEndOfMicrotask()}).observe(Polymer.Async._twiddle,{characterData:!0}),Polymer.Debounce=function(){function e(e,t,i){return e?e.stop():e=new o(this),e.go(t,i),e}var t=Polymer.Async,o=function(e){this.context=e;var t=this;this.boundComplete=function(){t.complete()}};return o.prototype={go:function(e,o){var i;this.finish=function(){t.cancel(i)},i=t.run(this.boundComplete,o),this.callback=e},stop:function(){this.finish&&(this.finish(),this.finish=null,this.callback=null)},complete:function(){if(this.finish){var e=this.callback;this.stop(),e.call(this.context)}}},e}(),Polymer.Base._addFeature({_setupDebouncers:function(){this._debouncers={}},debounce:function(e,t,o){return this._debouncers[e]=Polymer.Debounce.call(this,this._debouncers[e],t,o)},isDebouncerActive:function(e){var t=this._debouncers[e];return!(!t||!t.finish)},flushDebouncer:function(e){var t=this._debouncers[e];t&&t.complete()},cancelDebouncer:function(e){var t=this._debouncers[e];t&&t.stop()}}),Polymer.DomModule=document.createElement("dom-module"),Polymer.Base._addFeature({_registerFeatures:function(){this._prepIs(),this._prepBehaviors(),this._prepConstructor(),this._prepTemplate(),this._prepShady(),this._prepPropertyInfo()},_prepBehavior:function(e){this._addHostAttributes(e.hostAttributes)},_initFeatures:function(){this._registerHost(),this._template&&(this._poolContent(),this._beginHosting(),this._stampTemplate(),this._endHosting()),this._marshalHostAttributes(),this._setupDebouncers(),this._marshalBehaviors(),this._tryReady()},_marshalBehavior:function(e){}})</script><script>Polymer.nar=[],Polymer.Annotations={parseAnnotations:function(e){var t=[],n=e._content||e.content;return this._parseNodeAnnotations(n,t,e.hasAttribute("strip-whitespace")),t},_parseNodeAnnotations:function(e,t,n){return e.nodeType===Node.TEXT_NODE?this._parseTextNodeAnnotation(e,t):this._parseElementAnnotations(e,t,n)},_bindingRegex:function(){var e="(?:[a-zA-Z_$][\\w.:$\\-*]*)",t="(?:[-+]?[0-9]*\\.?[0-9]+(?:[eE][-+]?[0-9]+)?)",n="(?:'(?:[^'\\\\]|\\\\.)*')",r='(?:"(?:[^"\\\\]|\\\\.)*")',s="(?:"+n+"|"+r+")",i="(?:"+e+"|"+t+"|"+s+"\\s*)",o="(?:"+i+"(?:,\\s*"+i+")*)",a="(?:\\(\\s*(?:"+o+"?)\\)\\s*)",l="("+e+"\\s*"+a+"?)",c="(\\[\\[|{{)\\s*",h="(?:]]|}})",u="(?:(!)\\s*)?",f=c+u+l+h;return new RegExp(f,"g")}(),_parseBindings:function(e){for(var t,n=this._bindingRegex,r=[],s=0;null!==(t=n.exec(e));){t.index>s&&r.push({literal:e.slice(s,t.index)});var i,o,a,l=t[1][0],c=Boolean(t[2]),h=t[3].trim();"{"==l&&(a=h.indexOf("::"))>0&&(o=h.substring(a+2),h=h.substring(0,a),i=!0),r.push({compoundIndex:r.length,value:h,mode:l,negate:c,event:o,customEvent:i}),s=n.lastIndex}if(s&&s<e.length){var u=e.substring(s);u&&r.push({literal:u})}if(r.length)return r},_literalFromParts:function(e){for(var t="",n=0;n<e.length;n++){var r=e[n].literal;t+=r||""}return t},_parseTextNodeAnnotation:function(e,t){var n=this._parseBindings(e.textContent);if(n){e.textContent=this._literalFromParts(n)||" ";var r={bindings:[{kind:"text",name:"textContent",parts:n,isCompound:1!==n.length}]};return t.push(r),r}},_parseElementAnnotations:function(e,t,n){var r={bindings:[],events:[]};return"content"===e.localName&&(t._hasContent=!0),this._parseChildNodesAnnotations(e,r,t,n),e.attributes&&(this._parseNodeAttributeAnnotations(e,r,t),this.prepElement&&this.prepElement(e)),(r.bindings.length||r.events.length||r.id)&&t.push(r),r},_parseChildNodesAnnotations:function(e,t,n,r){if(e.firstChild)for(var s=e.firstChild,i=0;s;){var o=s.nextSibling;if("template"!==s.localName||s.hasAttribute("preserve-content")||this._parseTemplate(s,i,n,t),"slot"==s.localName&&(s=this._replaceSlotWithContent(s)),s.nodeType===Node.TEXT_NODE){for(var a=o;a&&a.nodeType===Node.TEXT_NODE;)s.textContent+=a.textContent,o=a.nextSibling,e.removeChild(a),a=o;r&&!s.textContent.trim()&&(e.removeChild(s),i--)}if(s.parentNode){var l=this._parseNodeAnnotations(s,n,r);l&&(l.parent=t,l.index=i)}s=o,i++}},_replaceSlotWithContent:function(e){for(var t=e.ownerDocument.createElement("content");e.firstChild;)t.appendChild(e.firstChild);for(var n=e.attributes,r=0;r<n.length;r++){var s=n[r];t.setAttribute(s.name,s.value)}var i=e.getAttribute("name");return i&&t.setAttribute("select","[slot='"+i+"']"),e.parentNode.replaceChild(t,e),t},_parseTemplate:function(e,t,n,r){var s=document.createDocumentFragment();s._notes=this.parseAnnotations(e),s.appendChild(e.content),n.push({bindings:Polymer.nar,events:Polymer.nar,templateContent:s,parent:r,index:t})},_parseNodeAttributeAnnotations:function(e,t){for(var n,r=Array.prototype.slice.call(e.attributes),s=r.length-1;n=r[s];s--){var i,o=n.name,a=n.value;"on-"===o.slice(0,3)?(e.removeAttribute(o),t.events.push({name:o.slice(3),value:a})):(i=this._parseNodeAttributeAnnotation(e,o,a))?t.bindings.push(i):"id"===o&&(t.id=a)}},_parseNodeAttributeAnnotation:function(e,t,n){var r=this._parseBindings(n);if(r){var s=t,i="property";"$"==t[t.length-1]&&(t=t.slice(0,-1),i="attribute");var o=this._literalFromParts(r);o&&"attribute"==i&&e.setAttribute(t,o),"input"===e.localName&&"value"===s&&e.setAttribute(s,""),e.removeAttribute(s);var a=Polymer.CaseMap.dashToCamelCase(t);return"property"===i&&(t=a),{kind:i,name:t,propertyName:a,parts:r,literal:o,isCompound:1!==r.length}}},findAnnotatedNode:function(e,t){var n=t.parent&&Polymer.Annotations.findAnnotatedNode(e,t.parent);if(!n)return e;for(var r=n.firstChild,s=0;r;r=r.nextSibling)if(t.index===s++)return r}},function(){function e(e,t){return e.replace(a,function(e,r,s,i){return r+"'"+n(s.replace(/["']/g,""),t)+"'"+i})}function t(t,r){for(var s in l)for(var i,o,a,c=l[s],u=0,f=c.length;u<f&&(i=c[u]);u++)"*"!==s&&t.localName!==s||(o=t.attributes[i],a=o&&o.value,a&&a.search(h)<0&&(o.value="style"===i?e(a,r):n(a,r)))}function n(e,t){if(e&&c.test(e))return e;var n=s(t);return n.href=e,n.href||e}function r(e,t){return i||(i=document.implementation.createHTMLDocument("temp"),o=i.createElement("base"),i.head.appendChild(o)),o.href=t,n(e,i)}function s(e){return e.body.__urlResolver||(e.body.__urlResolver=e.createElement("a"))}var i,o,a=/(url\()([^)]*)(\))/g,l={"*":["href","src","style","url"],form:["action"]},c=/(^\/)|(^#)|(^[\w-\d]*:)/,h=/\{\{|\[\[/;Polymer.ResolveUrl={resolveCss:e,resolveAttrs:t,resolveUrl:r}}(),Polymer.Path={root:function(e){var t=e.indexOf(".");return t===-1?e:e.slice(0,t)},isDeep:function(e){return e.indexOf(".")!==-1},isAncestor:function(e,t){return 0===e.indexOf(t+".")},isDescendant:function(e,t){return 0===t.indexOf(e+".")},translate:function(e,t,n){return t+n.slice(e.length)},matches:function(e,t,n){return e===n||this.isAncestor(e,n)||Boolean(t)&&this.isDescendant(e,n)}},Polymer.Base._addFeature({_prepAnnotations:function(){if(this._template){var e=this;Polymer.Annotations.prepElement=function(t){e._prepElement(t)},this._template._content&&this._template._content._notes?this._notes=this._template._content._notes:(this._notes=Polymer.Annotations.parseAnnotations(this._template),this._processAnnotations(this._notes)),Polymer.Annotations.prepElement=null}else this._notes=[]},_processAnnotations:function(e){for(var t=0;t<e.length;t++){for(var n=e[t],r=0;r<n.bindings.length;r++)for(var s=n.bindings[r],i=0;i<s.parts.length;i++){var o=s.parts[i];if(!o.literal){var a=this._parseMethod(o.value);a?o.signature=a:o.model=Polymer.Path.root(o.value)}}if(n.templateContent){this._processAnnotations(n.templateContent._notes);var l=n.templateContent._parentProps=this._discoverTemplateParentProps(n.templateContent._notes),c=[];for(var h in l){var u="_parent_"+h;c.push({index:n.index,kind:"property",name:u,propertyName:u,parts:[{mode:"{",model:h,value:h}]})}n.bindings=n.bindings.concat(c)}}},_discoverTemplateParentProps:function(e){for(var t,n={},r=0;r<e.length&&(t=e[r]);r++){for(var s,i=0,o=t.bindings;i<o.length&&(s=o[i]);i++)for(var a,l=0,c=s.parts;l<c.length&&(a=c[l]);l++)if(a.signature){for(var h=a.signature.args,u=0;u<h.length;u++){var f=h[u].model;f&&(n[f]=!0)}a.signature.dynamicFn&&(n[a.signature.method]=!0)}else a.model&&(n[a.model]=!0);if(t.templateContent){var p=t.templateContent._parentProps;Polymer.Base.mixin(n,p)}}return n},_prepElement:function(e){Polymer.ResolveUrl.resolveAttrs(e,this._template.ownerDocument)},_findAnnotatedNode:Polymer.Annotations.findAnnotatedNode,_marshalAnnotationReferences:function(){this._template&&(this._marshalIdNodes(),this._marshalAnnotatedNodes(),this._marshalAnnotatedListeners())},_configureAnnotationReferences:function(){for(var e=this._notes,t=this._nodes,n=0;n<e.length;n++){var r=e[n],s=t[n];this._configureTemplateContent(r,s),this._configureCompoundBindings(r,s)}},_configureTemplateContent:function(e,t){e.templateContent&&(t._content=e.templateContent)},_configureCompoundBindings:function(e,t){for(var n=e.bindings,r=0;r<n.length;r++){var s=n[r];if(s.isCompound){for(var i=t.__compoundStorage__||(t.__compoundStorage__={}),o=s.parts,a=new Array(o.length),l=0;l<o.length;l++)a[l]=o[l].literal;var c=s.name;i[c]=a,s.literal&&"property"==s.kind&&(t._configValue?t._configValue(c,s.literal):t[c]=s.literal)}}},_marshalIdNodes:function(){this.$={};for(var e,t=0,n=this._notes.length;t<n&&(e=this._notes[t]);t++)e.id&&(this.$[e.id]=this._findAnnotatedNode(this.root,e))},_marshalAnnotatedNodes:function(){if(this._notes&&this._notes.length){for(var e=new Array(this._notes.length),t=0;t<this._notes.length;t++)e[t]=this._findAnnotatedNode(this.root,this._notes[t]);this._nodes=e}},_marshalAnnotatedListeners:function(){for(var e,t=0,n=this._notes.length;t<n&&(e=this._notes[t]);t++)if(e.events&&e.events.length)for(var r,s=this._findAnnotatedNode(this.root,e),i=0,o=e.events;i<o.length&&(r=o[i]);i++)this.listen(s,r.name,r.value)}}),Polymer.Base._addFeature({listeners:{},_listenListeners:function(e){var t,n,r;for(r in e)r.indexOf(".")<0?(t=this,n=r):(n=r.split("."),t=this.$[n[0]],n=n[1]),this.listen(t,n,e[r])},listen:function(e,t,n){var r=this._recallEventHandler(this,t,e,n);r||(r=this._createEventHandler(e,t,n)),r._listening||(this._listen(e,t,r),r._listening=!0)},_boundListenerKey:function(e,t){return e+":"+t},_recordEventHandler:function(e,t,n,r,s){var i=e.__boundListeners;i||(i=e.__boundListeners=new WeakMap);var o=i.get(n);o||(o={},Polymer.Settings.isIE&&n==window||i.set(n,o));var a=this._boundListenerKey(t,r);o[a]=s},_recallEventHandler:function(e,t,n,r){var s=e.__boundListeners;if(s){var i=s.get(n);if(i){var o=this._boundListenerKey(t,r);return i[o]}}},_createEventHandler:function(e,t,n){var r=this,s=function(e){r[n]?r[n](e,e.detail):r._warn(r._logf("_createEventHandler","listener method `"+n+"` not defined"))};return s._listening=!1,this._recordEventHandler(r,t,e,n,s),s},unlisten:function(e,t,n){var r=this._recallEventHandler(this,t,e,n);r&&(this._unlisten(e,t,r),r._listening=!1)},_listen:function(e,t,n){e.addEventListener(t,n)},_unlisten:function(e,t,n){e.removeEventListener(t,n)}}),function(){"use strict";function e(e){for(var t,n=P?["click"]:m,r=0;r<n.length;r++)t=n[r],e?document.addEventListener(t,S,!0):document.removeEventListener(t,S,!0)}function t(t){E.mouse.mouseIgnoreJob||e(!0);var n=function(){e(),E.mouse.target=null,E.mouse.mouseIgnoreJob=null};E.mouse.target=Polymer.dom(t).rootTarget,E.mouse.mouseIgnoreJob=Polymer.Debounce(E.mouse.mouseIgnoreJob,n,d)}function n(e){var t=e.type;if(m.indexOf(t)===-1)return!1;if("mousemove"===t){var n=void 0===e.buttons?1:e.buttons;return e instanceof window.MouseEvent&&!v&&(n=y[e.which]||0),Boolean(1&n)}var r=void 0===e.button?0:e.button;return 0===r}function r(e){if("click"===e.type){if(0===e.detail)return!0;var t=C.findOriginalTarget(e),n=t.getBoundingClientRect(),r=e.pageX,s=e.pageY;return!(r>=n.left&&r<=n.right&&s>=n.top&&s<=n.bottom)}return!1}function s(e){for(var t,n=Polymer.dom(e).path,r="auto",s=0;s<n.length;s++)if(t=n[s],t[u]){r=t[u];break}return r}function i(e,t,n){e.movefn=t,e.upfn=n,document.addEventListener("mousemove",t),document.addEventListener("mouseup",n)}function o(e){document.removeEventListener("mousemove",e.movefn),document.removeEventListener("mouseup",e.upfn),e.movefn=null,e.upfn=null}var a=Polymer.DomApi.wrap,l="string"==typeof document.head.style.touchAction,c="__polymerGestures",h="__polymerGesturesHandled",u="__polymerGesturesTouchAction",f=25,p=5,_=2,d=2500,m=["mousedown","mousemove","mouseup","click"],y=[0,1,4,2],v=function(){try{return 1===new MouseEvent("test",{buttons:1}).buttons}catch(e){return!1}}(),g=!1;!function(){try{var e=Object.defineProperty({},"passive",{get:function(){g=!0}});window.addEventListener("test",null,e),window.removeEventListener("test",null,e)}catch(e){}}();var P=navigator.userAgent.match(/iP(?:[oa]d|hone)|Android/),S=function(e){var t=e.sourceCapabilities;if((!t||t.firesTouchEvents)&&(e[h]={skip:!0},"click"===e.type)){for(var n=Polymer.dom(e).path,r=0;r<n.length;r++)if(n[r]===E.mouse.target)return;e.preventDefault(),e.stopPropagation()}},E={mouse:{target:null,mouseIgnoreJob:null},touch:{x:0,y:0,id:-1,scrollDecided:!1}};document.addEventListener("touchend",t,!!g&&{passive:!0});var C={gestures:{},recognizers:[],deepTargetFind:function(e,t){for(var n=document.elementFromPoint(e,t),r=n;r&&r.shadowRoot;)r=r.shadowRoot.elementFromPoint(e,t),r&&(n=r);return n},findOriginalTarget:function(e){return e.path?e.path[0]:e.target},handleNative:function(e){var t,n=e.type,r=a(e.currentTarget),s=r[c];if(s){var i=s[n];if(i){if(!e[h]&&(e[h]={},"touch"===n.slice(0,5))){var o=e.changedTouches[0];if("touchstart"===n&&1===e.touches.length&&(E.touch.id=o.identifier),E.touch.id!==o.identifier)return;l||"touchstart"!==n&&"touchmove"!==n||C.handleTouchAction(e)}if(t=e[h],!t.skip){for(var u,f=C.recognizers,p=0;p<f.length;p++)u=f[p],i[u.name]&&!t[u.name]&&u.flow&&u.flow.start.indexOf(e.type)>-1&&u.reset&&u.reset();for(p=0,u;p<f.length;p++)u=f[p],i[u.name]&&!t[u.name]&&(t[u.name]=!0,u[n](e))}}}},handleTouchAction:function(e){var t=e.changedTouches[0],n=e.type;if("touchstart"===n)E.touch.x=t.clientX,E.touch.y=t.clientY,E.touch.scrollDecided=!1;else if("touchmove"===n){if(E.touch.scrollDecided)return;E.touch.scrollDecided=!0;var r=s(e),i=!1,o=Math.abs(E.touch.x-t.clientX),a=Math.abs(E.touch.y-t.clientY);e.cancelable&&("none"===r?i=!0:"pan-x"===r?i=a>o:"pan-y"===r&&(i=o>a)),i?e.preventDefault():C.prevent("track")}},add:function(e,t,n){e=a(e);var r=this.gestures[t],s=r.deps,i=r.name,o=e[c];o||(e[c]=o={});for(var l,h,u=0;u<s.length;u++)l=s[u],P&&m.indexOf(l)>-1&&"click"!==l||(h=o[l],h||(o[l]=h={_count:0}),0===h._count&&e.addEventListener(l,this.handleNative),h[i]=(h[i]||0)+1,h._count=(h._count||0)+1);e.addEventListener(t,n),r.touchAction&&this.setTouchAction(e,r.touchAction)},remove:function(e,t,n){e=a(e);var r=this.gestures[t],s=r.deps,i=r.name,o=e[c];if(o)for(var l,h,u=0;u<s.length;u++)l=s[u],h=o[l],h&&h[i]&&(h[i]=(h[i]||1)-1,h._count=(h._count||1)-1,0===h._count&&e.removeEventListener(l,this.handleNative));e.removeEventListener(t,n)},register:function(e){this.recognizers.push(e);for(var t=0;t<e.emits.length;t++)this.gestures[e.emits[t]]=e},findRecognizerByEvent:function(e){for(var t,n=0;n<this.recognizers.length;n++){t=this.recognizers[n];for(var r,s=0;s<t.emits.length;s++)if(r=t.emits[s],r===e)return t}return null},setTouchAction:function(e,t){l&&(e.style.touchAction=t),e[u]=t},fire:function(e,t,n){var r=Polymer.Base.fire(t,n,{node:e,bubbles:!0,cancelable:!0});if(r.defaultPrevented){var s=n.preventer||n.sourceEvent;s&&s.preventDefault&&s.preventDefault()}},prevent:function(e){var t=this.findRecognizerByEvent(e);t.info&&(t.info.prevent=!0)},resetMouseCanceller:function(){E.mouse.mouseIgnoreJob&&E.mouse.mouseIgnoreJob.complete()}};C.register({name:"downup",deps:["mousedown","touchstart","touchend"],flow:{start:["mousedown","touchstart"],end:["mouseup","touchend"]},emits:["down","up"],info:{movefn:null,upfn:null},reset:function(){o(this.info)},mousedown:function(e){if(n(e)){var t=C.findOriginalTarget(e),r=this,s=function(e){n(e)||(r.fire("up",t,e),o(r.info))},a=function(e){n(e)&&r.fire("up",t,e),o(r.info)};i(this.info,s,a),this.fire("down",t,e)}},touchstart:function(e){this.fire("down",C.findOriginalTarget(e),e.changedTouches[0],e)},touchend:function(e){this.fire("up",C.findOriginalTarget(e),e.changedTouches[0],e)},fire:function(e,t,n,r){C.fire(t,e,{x:n.clientX,y:n.clientY,sourceEvent:n,preventer:r,prevent:function(e){return C.prevent(e)}})}}),C.register({name:"track",touchAction:"none",deps:["mousedown","touchstart","touchmove","touchend"],flow:{start:["mousedown","touchstart"],end:["mouseup","touchend"]},emits:["track"],info:{x:0,y:0,state:"start",started:!1,moves:[],addMove:function(e){this.moves.length>_&&this.moves.shift(),this.moves.push(e)},movefn:null,upfn:null,prevent:!1},reset:function(){this.info.state="start",this.info.started=!1,this.info.moves=[],this.info.x=0,this.info.y=0,this.info.prevent=!1,o(this.info)},hasMovedEnough:function(e,t){if(this.info.prevent)return!1;if(this.info.started)return!0;var n=Math.abs(this.info.x-e),r=Math.abs(this.info.y-t);return n>=p||r>=p},mousedown:function(e){if(n(e)){var t=C.findOriginalTarget(e),r=this,s=function(e){var s=e.clientX,i=e.clientY;r.hasMovedEnough(s,i)&&(r.info.state=r.info.started?"mouseup"===e.type?"end":"track":"start","start"===r.info.state&&C.prevent("tap"),r.info.addMove({x:s,y:i}),n(e)||(r.info.state="end",o(r.info)),r.fire(t,e),r.info.started=!0)},a=function(e){r.info.started&&s(e),o(r.info)};i(this.info,s,a),this.info.x=e.clientX,this.info.y=e.clientY}},touchstart:function(e){var t=e.changedTouches[0];this.info.x=t.clientX,this.info.y=t.clientY},touchmove:function(e){var t=C.findOriginalTarget(e),n=e.changedTouches[0],r=n.clientX,s=n.clientY;this.hasMovedEnough(r,s)&&("start"===this.info.state&&C.prevent("tap"),this.info.addMove({x:r,y:s}),this.fire(t,n),this.info.state="track",this.info.started=!0)},touchend:function(e){var t=C.findOriginalTarget(e),n=e.changedTouches[0];this.info.started&&(this.info.state="end",this.info.addMove({x:n.clientX,y:n.clientY}),this.fire(t,n,e))},fire:function(e,t,n){var r,s=this.info.moves[this.info.moves.length-2],i=this.info.moves[this.info.moves.length-1],o=i.x-this.info.x,a=i.y-this.info.y,l=0;return s&&(r=i.x-s.x,l=i.y-s.y),C.fire(e,"track",{state:this.info.state,x:t.clientX,y:t.clientY,dx:o,dy:a,ddx:r,ddy:l,sourceEvent:t,preventer:n,hover:function(){return C.deepTargetFind(t.clientX,t.clientY)}})}}),C.register({name:"tap",deps:["mousedown","click","touchstart","touchend"],flow:{start:["mousedown","touchstart"],end:["click","touchend"]},emits:["tap"],info:{x:NaN,y:NaN,prevent:!1},reset:function(){this.info.x=NaN,this.info.y=NaN,this.info.prevent=!1},save:function(e){this.info.x=e.clientX,this.info.y=e.clientY},mousedown:function(e){n(e)&&this.save(e)},click:function(e){n(e)&&this.forward(e)},touchstart:function(e){this.save(e.changedTouches[0],e)},touchend:function(e){this.forward(e.changedTouches[0],e)},forward:function(e,t){var n=Math.abs(e.clientX-this.info.x),s=Math.abs(e.clientY-this.info.y),i=C.findOriginalTarget(e);(isNaN(n)||isNaN(s)||n<=f&&s<=f||r(e))&&(this.info.prevent||C.fire(i,"tap",{x:e.clientX,y:e.clientY,sourceEvent:e,preventer:t}))}});var b={x:"pan-x",y:"pan-y",none:"none",all:"auto"};Polymer.Base._addFeature({_setupGestures:function(){this.__polymerGestures=null},_listen:function(e,t,n){C.gestures[t]?C.add(e,t,n):e.addEventListener(t,n)},_unlisten:function(e,t,n){C.gestures[t]?C.remove(e,t,n):e.removeEventListener(t,n)},setScrollDirection:function(e,t){t=t||this,C.setTouchAction(t,b[e]||"auto")}}),Polymer.Gestures=C}(),function(){"use strict";if(Polymer.Base._addFeature({$$:function(e){return Polymer.dom(this.root).querySelector(e)},toggleClass:function(e,t,n){n=n||this,1==arguments.length&&(t=!n.classList.contains(e)),t?Polymer.dom(n).classList.add(e):Polymer.dom(n).classList.remove(e)},toggleAttribute:function(e,t,n){n=n||this,1==arguments.length&&(t=!n.hasAttribute(e)),t?Polymer.dom(n).setAttribute(e,""):Polymer.dom(n).removeAttribute(e)},classFollows:function(e,t,n){n&&Polymer.dom(n).classList.remove(e),t&&Polymer.dom(t).classList.add(e)},attributeFollows:function(e,t,n){n&&Polymer.dom(n).removeAttribute(e),t&&Polymer.dom(t).setAttribute(e,"")},getEffectiveChildNodes:function(){return Polymer.dom(this).getEffectiveChildNodes()},getEffectiveChildren:function(){var e=Polymer.dom(this).getEffectiveChildNodes();return e.filter(function(e){return e.nodeType===Node.ELEMENT_NODE})},getEffectiveTextContent:function(){for(var e,t=this.getEffectiveChildNodes(),n=[],r=0;e=t[r];r++)e.nodeType!==Node.COMMENT_NODE&&n.push(Polymer.dom(e).textContent);return n.join("")},queryEffectiveChildren:function(e){var t=Polymer.dom(this).queryDistributedElements(e);return t&&t[0]},queryAllEffectiveChildren:function(e){return Polymer.dom(this).queryDistributedElements(e)},getContentChildNodes:function(e){var t=Polymer.dom(this.root).querySelector(e||"content");return t?Polymer.dom(t).getDistributedNodes():[]},getContentChildren:function(e){return this.getContentChildNodes(e).filter(function(e){return e.nodeType===Node.ELEMENT_NODE})},fire:function(e,t,n){n=n||Polymer.nob;var r=n.node||this;t=null===t||void 0===t?{}:t;var s=void 0===n.bubbles||n.bubbles,i=Boolean(n.cancelable),o=n._useCache,a=this._getEvent(e,s,i,o);return a.detail=t,o&&(this.__eventCache[e]=null),r.dispatchEvent(a),o&&(this.__eventCache[e]=a),a},__eventCache:{},_getEvent:function(e,t,n,r){var s=r&&this.__eventCache[e];return s&&s.bubbles==t&&s.cancelable==n||(s=new Event(e,{bubbles:Boolean(t),cancelable:n})),s},async:function(e,t){var n=this;return Polymer.Async.run(function(){e.call(n)},t)},cancelAsync:function(e){Polymer.Async.cancel(e)},arrayDelete:function(e,t){var n;if(Array.isArray(e)){if(n=e.indexOf(t),n>=0)return e.splice(n,1)}else{var r=this._get(e);if(n=r.indexOf(t),n>=0)return this.splice(e,n,1)}},transform:function(e,t){t=t||this,t.style.webkitTransform=e,t.style.transform=e},translate3d:function(e,t,n,r){r=r||this,this.transform("translate3d("+e+","+t+","+n+")",r)},importHref:function(e,t,n,r){var s=document.createElement("link");s.rel="import",s.href=e;var i=Polymer.Base.importHref.imported=Polymer.Base.importHref.imported||{},o=i[s.href],a=o||s,l=this,c=function(e){return e.target.__firedLoad=!0,e.target.removeEventListener("load",c),e.target.removeEventListener("error",h),t.call(l,e)},h=function(e){return e.target.__firedError=!0,e.target.removeEventListener("load",c),e.target.removeEventListener("error",h),n.call(l,e)};return t&&a.addEventListener("load",c),n&&a.addEventListener("error",h),o?(o.__firedLoad&&o.dispatchEvent(new Event("load")),o.__firedError&&o.dispatchEvent(new Event("error"))):(i[s.href]=s,r=Boolean(r),r&&s.setAttribute("async",""),document.head.appendChild(s)),a},create:function(e,t){var n=document.createElement(e);if(t)for(var r in t)n[r]=t[r];return n},isLightDescendant:function(e){return this!==e&&this.contains(e)&&Polymer.dom(this).getOwnerRoot()===Polymer.dom(e).getOwnerRoot()},isLocalDescendant:function(e){return this.root===Polymer.dom(e).getOwnerRoot()}}),!Polymer.Settings.useNativeCustomElements){var e=Polymer.Base.importHref;Polymer.Base.importHref=function(t,n,r,s){CustomElements.ready=!1;var i=function(e){if(CustomElements.upgradeDocumentTree(document),CustomElements.ready=!0,n)return n.call(this,e)};return e.call(this,t,i,r,s)}}}(),Polymer.Bind={prepareModel:function(e){Polymer.Base.mixin(e,this._modelApi)},_modelApi:{_notifyChange:function(e,t,n){n=void 0===n?this[e]:n,t=t||Polymer.CaseMap.camelToDashCase(e)+"-changed",this.fire(t,{value:n},{bubbles:!1,cancelable:!1,_useCache:Polymer.Settings.eventDataCache||!Polymer.Settings.isIE})},_propertySetter:function(e,t,n,r){var s=this.__data__[e];return s===t||s!==s&&t!==t||(this.__data__[e]=t,"object"==typeof t&&this._clearPath(e),this._propertyChanged&&this._propertyChanged(e,t,s),n&&this._effectEffects(e,t,n,s,r)),s},__setProperty:function(e,t,n,r){r=r||this;var s=r._propertyEffects&&r._propertyEffects[e];s?r._propertySetter(e,t,s,n):r[e]!==t&&(r[e]=t)},_effectEffects:function(e,t,n,r,s){for(var i,o=0,a=n.length;o<a&&(i=n[o]);o++)i.fn.call(this,e,this[e],i.effect,r,s)},_clearPath:function(e){for(var t in this.__data__)Polymer.Path.isDescendant(e,t)&&(this.__data__[t]=void 0)}},ensurePropertyEffects:function(e,t){e._propertyEffects||(e._propertyEffects={});var n=e._propertyEffects[t];return n||(n=e._propertyEffects[t]=[]),n},addPropertyEffect:function(e,t,n,r){var s=this.ensurePropertyEffects(e,t),i={kind:n,effect:r,fn:Polymer.Bind["_"+n+"Effect"]};return s.push(i),i},createBindings:function(e){var t=e._propertyEffects;if(t)for(var n in t){var r=t[n];r.sort(this._sortPropertyEffects),this._createAccessors(e,n,r)}},_sortPropertyEffects:function(){var e={compute:0,annotation:1,annotatedComputation:2,reflect:3,notify:4,observer:5,complexObserver:6,function:7};return function(t,n){return e[t.kind]-e[n.kind]}}(),_createAccessors:function(e,t,n){var r={get:function(){return this.__data__[t]}},s=function(e){this._propertySetter(t,e,n)},i=e.getPropertyInfo&&e.getPropertyInfo(t);i&&i.readOnly?i.computed||(e["_set"+this.upper(t)]=s):r.set=s,Object.defineProperty(e,t,r)},upper:function(e){return e[0].toUpperCase()+e.substring(1)},_addAnnotatedListener:function(e,t,n,r,s,i){e._bindListeners||(e._bindListeners=[]);var o=this._notedListenerFactory(n,r,Polymer.Path.isDeep(r),i),a=s||Polymer.CaseMap.camelToDashCase(n)+"-changed";e._bindListeners.push({index:t,property:n,path:r,changedFn:o,event:a})},_isEventBogus:function(e,t){return e.path&&e.path[0]!==t},_notedListenerFactory:function(e,t,n,r){return function(s,i,o){if(o){var a=Polymer.Path.translate(e,t,o);this._notifyPath(a,i)}else i=s[e],r&&(i=!i),n?this.__data__[t]!=i&&this.set(t,i):this[t]=i}},prepareInstance:function(e){e.__data__=Object.create(null)},setupBindListeners:function(e){for(var t,n=e._bindListeners,r=0,s=n.length;r<s&&(t=n[r]);r++){var i=e._nodes[t.index];this._addNotifyListener(i,e,t.event,t.changedFn)}},_addNotifyListener:function(e,t,n,r){e.addEventListener(n,function(e){return t._notifyListener(r,e)})}},Polymer.Base.extend(Polymer.Bind,{_shouldAddListener:function(e){return e.name&&"attribute"!=e.kind&&"text"!=e.kind&&!e.isCompound&&"{"===e.parts[0].mode},_annotationEffect:function(e,t,n){e!=n.value&&(t=this._get(n.value),this.__data__[n.value]=t),this._applyEffectValue(n,t)},_reflectEffect:function(e,t,n){this.reflectPropertyToAttribute(e,n.attribute,t)},_notifyEffect:function(e,t,n,r,s){s||this._notifyChange(e,n.event,t)},_functionEffect:function(e,t,n,r,s){n.call(this,e,t,r,s)},_observerEffect:function(e,t,n,r){var s=this[n.method];s?s.call(this,t,r):this._warn(this._logf("_observerEffect","observer method `"+n.method+"` not defined"))},_complexObserverEffect:function(e,t,n){var r=this[n.method];if(r){var s=Polymer.Bind._marshalArgs(this.__data__,n,e,t);s&&r.apply(this,s)}else n.dynamicFn||this._warn(this._logf("_complexObserverEffect","observer method `"+n.method+"` not defined"))},_computeEffect:function(e,t,n){var r=this[n.method];if(r){var s=Polymer.Bind._marshalArgs(this.__data__,n,e,t);if(s){var i=r.apply(this,s);this.__setProperty(n.name,i)}}else n.dynamicFn||this._warn(this._logf("_computeEffect","compute method `"+n.method+"` not defined"))},_annotatedComputationEffect:function(e,t,n){var r=this._rootDataHost||this,s=r[n.method];if(s){var i=Polymer.Bind._marshalArgs(this.__data__,n,e,t);if(i){var o=s.apply(r,i);this._applyEffectValue(n,o)}}else n.dynamicFn||r._warn(r._logf("_annotatedComputationEffect","compute method `"+n.method+"` not defined"))},_marshalArgs:function(e,t,n,r){for(var s=[],i=t.args,o=i.length>1||t.dynamicFn,a=0,l=i.length;a<l;a++){var c,h=i[a],u=h.name;if(h.literal?c=h.value:n===u?c=r:(c=e[u],void 0===c&&h.structured&&(c=Polymer.Base._get(u,e))),o&&void 0===c)return;if(h.wildcard){var f=Polymer.Path.isAncestor(n,u);s[a]={path:f?n:u,value:f?r:c,base:c}}else s[a]=c}return s}}),Polymer.Base._addFeature({_addPropertyEffect:function(e,t,n){var r=Polymer.Bind.addPropertyEffect(this,e,t,n);r.pathFn=this["_"+r.kind+"PathEffect"]},_prepEffects:function(){Polymer.Bind.prepareModel(this),this._addAnnotationEffects(this._notes)},_prepBindings:function(){Polymer.Bind.createBindings(this)},_addPropertyEffects:function(e){if(e)for(var t in e){var n=e[t];if(n.observer&&this._addObserverEffect(t,n.observer),n.computed&&(n.readOnly=!0,this._addComputedEffect(t,n.computed)),n.notify&&this._addPropertyEffect(t,"notify",{event:Polymer.CaseMap.camelToDashCase(t)+"-changed"}),n.reflectToAttribute){var r=Polymer.CaseMap.camelToDashCase(t);"-"===r[0]?this._warn(this._logf("_addPropertyEffects","Property "+t+" cannot be reflected to attribute "+r+' because "-" is not a valid starting attribute name. Use a lowercase first letter for the property instead.')):this._addPropertyEffect(t,"reflect",{attribute:r})}n.readOnly&&Polymer.Bind.ensurePropertyEffects(this,t)}},_addComputedEffect:function(e,t){for(var n,r=this._parseMethod(t),s=r.dynamicFn,i=0;i<r.args.length&&(n=r.args[i]);i++)this._addPropertyEffect(n.model,"compute",{method:r.method,args:r.args,trigger:n,name:e,dynamicFn:s});s&&this._addPropertyEffect(r.method,"compute",{method:r.method,args:r.args,trigger:null,name:e,dynamicFn:s})},_addObserverEffect:function(e,t){this._addPropertyEffect(e,"observer",{method:t,property:e})},_addComplexObserverEffects:function(e){if(e)for(var t,n=0;n<e.length&&(t=e[n]);n++)this._addComplexObserverEffect(t)},_addComplexObserverEffect:function(e){var t=this._parseMethod(e);if(!t)throw new Error("Malformed observer expression '"+e+"'");for(var n,r=t.dynamicFn,s=0;s<t.args.length&&(n=t.args[s]);s++)this._addPropertyEffect(n.model,"complexObserver",{method:t.method,args:t.args,trigger:n,dynamicFn:r});r&&this._addPropertyEffect(t.method,"complexObserver",{method:t.method,args:t.args,trigger:null,dynamicFn:r})},_addAnnotationEffects:function(e){for(var t,n=0;n<e.length&&(t=e[n]);n++)for(var r,s=t.bindings,i=0;i<s.length&&(r=s[i]);i++)this._addAnnotationEffect(r,n)},_addAnnotationEffect:function(e,t){Polymer.Bind._shouldAddListener(e)&&Polymer.Bind._addAnnotatedListener(this,t,e.name,e.parts[0].value,e.parts[0].event,e.parts[0].negate);for(var n=0;n<e.parts.length;n++){var r=e.parts[n];r.signature?this._addAnnotatedComputationEffect(e,r,t):r.literal||("attribute"===e.kind&&"-"===e.name[0]?this._warn(this._logf("_addAnnotationEffect","Cannot set attribute "+e.name+' because "-" is not a valid attribute starting character')):this._addPropertyEffect(r.model,"annotation",{kind:e.kind,index:t,name:e.name,propertyName:e.propertyName,value:r.value,isCompound:e.isCompound,compoundIndex:r.compoundIndex,event:r.event,customEvent:r.customEvent,negate:r.negate}))}},_addAnnotatedComputationEffect:function(e,t,n){var r=t.signature;if(r.static)this.__addAnnotatedComputationEffect("__static__",n,e,t,null);else{for(var s,i=0;i<r.args.length&&(s=r.args[i]);i++)s.literal||this.__addAnnotatedComputationEffect(s.model,n,e,t,s);r.dynamicFn&&this.__addAnnotatedComputationEffect(r.method,n,e,t,null)}},__addAnnotatedComputationEffect:function(e,t,n,r,s){this._addPropertyEffect(e,"annotatedComputation",{index:t,isCompound:n.isCompound,compoundIndex:r.compoundIndex,kind:n.kind,name:n.name,negate:r.negate,method:r.signature.method,args:r.signature.args,trigger:s,dynamicFn:r.signature.dynamicFn})},_parseMethod:function(e){var t=e.match(/([^\s]+?)\(([\s\S]*)\)/);if(t){var n={method:t[1],static:!0};if(this.getPropertyInfo(n.method)!==Polymer.nob&&(n.static=!1,n.dynamicFn=!0),t[2].trim()){var r=t[2].replace(/\\,/g,",").split(",");return this._parseArgs(r,n)}return n.args=Polymer.nar,n}},_parseArgs:function(e,t){return t.args=e.map(function(e){var n=this._parseArg(e);return n.literal||(t.static=!1),n},this),t},_parseArg:function(e){var t=e.trim().replace(/,/g,",").replace(/\\(.)/g,"$1"),n={name:t},r=t[0];switch("-"===r&&(r=t[1]),r>="0"&&r<="9"&&(r="#"),r){case"'":case'"':n.value=t.slice(1,-1),n.literal=!0;break;case"#":n.value=Number(t),n.literal=!0}return n.literal||(n.model=Polymer.Path.root(t),n.structured=Polymer.Path.isDeep(t),n.structured&&(n.wildcard=".*"==t.slice(-2),n.wildcard&&(n.name=t.slice(0,-2)))),n},_marshalInstanceEffects:function(){Polymer.Bind.prepareInstance(this),this._bindListeners&&Polymer.Bind.setupBindListeners(this)},_applyEffectValue:function(e,t){var n=this._nodes[e.index],r=e.name;if(t=this._computeFinalAnnotationValue(n,r,t,e),"attribute"==e.kind)this.serializeValueToAttribute(t,r,n);else{var s=n._propertyInfo&&n._propertyInfo[r];if(s&&s.readOnly)return;this.__setProperty(r,t,!1,n)}},_computeFinalAnnotationValue:function(e,t,n,r){if(r.negate&&(n=!n),r.isCompound){var s=e.__compoundStorage__[t];s[r.compoundIndex]=n,n=s.join("")}return"attribute"!==r.kind&&("className"===t&&(n=this._scopeElementClass(e,n)),("textContent"===t||"input"==e.localName&&"value"==t)&&(n=void 0==n?"":n)),n},_executeStaticEffects:function(){this._propertyEffects&&this._propertyEffects.__static__&&this._effectEffects("__static__",null,this._propertyEffects.__static__)}}),function(){var e=Polymer.Settings.usePolyfillProto;Polymer.Base._addFeature({_setupConfigure:function(e){if(this._config={},this._handlers=[],this._aboveConfig=null,e)for(var t in e)void 0!==e[t]&&(this._config[t]=e[t])},_marshalAttributes:function(){this._takeAttributesToModel(this._config)},_attributeChangedImpl:function(e){var t=this._clientsReadied?this:this._config;this._setAttributeToProperty(t,e)},_configValue:function(e,t){var n=this._propertyInfo[e];n&&n.readOnly||(this._config[e]=t)},_beforeClientsReady:function(){this._configure()},_configure:function(){this._configureAnnotationReferences(),this._configureInstanceProperties(),this._aboveConfig=this.mixin({},this._config); for(var e={},t=0;t<this.behaviors.length;t++)this._configureProperties(this.behaviors[t].properties,e);this._configureProperties(this.properties,e),this.mixin(e,this._aboveConfig),this._config=e,this._clients&&this._clients.length&&this._distributeConfig(this._config)},_configureInstanceProperties:function(){for(var t in this._propertyEffects)!e&&this.hasOwnProperty(t)&&(this._configValue(t,this[t]),delete this[t])},_configureProperties:function(e,t){for(var n in e){var r=e[n];if(void 0!==r.value){var s=r.value;"function"==typeof s&&(s=s.call(this,this._config)),t[n]=s}}},_distributeConfig:function(e){var t=this._propertyEffects;if(t)for(var n in e){var r=t[n];if(r)for(var s,i=0,o=r.length;i<o&&(s=r[i]);i++)if("annotation"===s.kind){var a=this._nodes[s.effect.index],l=s.effect.propertyName,c="attribute"==s.effect.kind,h=a._propertyEffects&&a._propertyEffects[l];if(a._configValue&&(h||!c)){var u=n===s.effect.value?e[n]:this._get(s.effect.value,e);u=this._computeFinalAnnotationValue(a,l,u,s.effect),c&&(u=a.deserialize(this.serialize(u),a._propertyInfo[l].type)),a._configValue(l,u)}}}},_afterClientsReady:function(){this._executeStaticEffects(),this._applyConfig(this._config,this._aboveConfig),this._flushHandlers()},_applyConfig:function(e,t){for(var n in e)void 0===this[n]&&this.__setProperty(n,e[n],n in t)},_notifyListener:function(e,t){if(!Polymer.Bind._isEventBogus(t,t.target)){var n,r;if(t.detail&&(n=t.detail.value,r=t.detail.path),this._clientsReadied)return e.call(this,t.target,n,r);this._queueHandler([e,t.target,n,r])}},_queueHandler:function(e){this._handlers.push(e)},_flushHandlers:function(){for(var e,t=this._handlers,n=0,r=t.length;n<r&&(e=t[n]);n++)e[0].call(this,e[1],e[2],e[3]);this._handlers=[]}})}(),function(){"use strict";var e=Polymer.Path;Polymer.Base._addFeature({notifyPath:function(e,t,n){var r={},s=this._get(e,this,r);1===arguments.length&&(t=s),r.path&&this._notifyPath(r.path,t,n)},_notifyPath:function(e,t,n){var r=this._propertySetter(e,t);if(r!==t&&(r===r||t===t))return this._pathEffector(e,t),n||this._notifyPathUp(e,t),!0},_getPathParts:function(e){if(Array.isArray(e)){for(var t=[],n=0;n<e.length;n++)for(var r=e[n].toString().split("."),s=0;s<r.length;s++)t.push(r[s]);return t}return e.toString().split(".")},set:function(e,t,n){var r,s=n||this,i=this._getPathParts(e),o=i[i.length-1];if(i.length>1){for(var a=0;a<i.length-1;a++){var l=i[a];if(r&&"#"==l[0]?s=Polymer.Collection.get(r).getItem(l):(s=s[l],r&&parseInt(l,10)==l&&(i[a]=Polymer.Collection.get(r).getKey(s))),!s)return;r=Array.isArray(s)?s:null}if(r){var c,h,u=Polymer.Collection.get(r);"#"==o[0]?(h=o,c=u.getItem(h),o=r.indexOf(c),u.setItem(h,t)):parseInt(o,10)==o&&(c=s[o],h=u.getKey(c),i[a]=h,u.setItem(h,t))}s[o]=t,n||this._notifyPath(i.join("."),t)}else s[e]=t},get:function(e,t){return this._get(e,t)},_get:function(e,t,n){for(var r,s=t||this,i=this._getPathParts(e),o=0;o<i.length;o++){if(!s)return;var a=i[o];r&&"#"==a[0]?s=Polymer.Collection.get(r).getItem(a):(s=s[a],n&&r&&parseInt(a,10)==a&&(i[o]=Polymer.Collection.get(r).getKey(s))),r=Array.isArray(s)?s:null}return n&&(n.path=i.join(".")),s},_pathEffector:function(t,n){var r=e.root(t),s=this._propertyEffects&&this._propertyEffects[r];if(s)for(var i,o=0;o<s.length&&(i=s[o]);o++){var a=i.pathFn;a&&a.call(this,t,n,i.effect)}this._boundPaths&&this._notifyBoundPaths(t,n)},_annotationPathEffect:function(t,n,r){if(e.matches(r.value,!1,t))Polymer.Bind._annotationEffect.call(this,t,n,r);else if(!r.negate&&e.isDescendant(r.value,t)){var s=this._nodes[r.index];if(s&&s._notifyPath){var i=e.translate(r.value,r.name,t);s._notifyPath(i,n,!0)}}},_complexObserverPathEffect:function(t,n,r){e.matches(r.trigger.name,r.trigger.wildcard,t)&&Polymer.Bind._complexObserverEffect.call(this,t,n,r)},_computePathEffect:function(t,n,r){e.matches(r.trigger.name,r.trigger.wildcard,t)&&Polymer.Bind._computeEffect.call(this,t,n,r)},_annotatedComputationPathEffect:function(t,n,r){e.matches(r.trigger.name,r.trigger.wildcard,t)&&Polymer.Bind._annotatedComputationEffect.call(this,t,n,r)},linkPaths:function(e,t){this._boundPaths=this._boundPaths||{},t?this._boundPaths[e]=t:this.unlinkPaths(e)},unlinkPaths:function(e){this._boundPaths&&delete this._boundPaths[e]},_notifyBoundPaths:function(t,n){for(var r in this._boundPaths){var s=this._boundPaths[r];e.isDescendant(r,t)?this._notifyPath(e.translate(r,s,t),n):e.isDescendant(s,t)&&this._notifyPath(e.translate(s,r,t),n)}},_notifyPathUp:function(t,n){var r=e.root(t),s=Polymer.CaseMap.camelToDashCase(r),i=s+this._EVENT_CHANGED;this.fire(i,{path:t,value:n},{bubbles:!1,_useCache:Polymer.Settings.eventDataCache||!Polymer.Settings.isIE})},_EVENT_CHANGED:"-changed",notifySplices:function(e,t){var n={},r=this._get(e,this,n);this._notifySplices(r,n.path,t)},_notifySplices:function(e,t,n){var r={keySplices:Polymer.Collection.applySplices(e,n),indexSplices:n},s=t+".splices";this._notifyPath(s,r),this._notifyPath(t+".length",e.length),this.__data__[s]={keySplices:null,indexSplices:null}},_notifySplice:function(e,t,n,r,s){this._notifySplices(e,t,[{index:n,addedCount:r,removed:s,object:e,type:"splice"}])},push:function(e){var t={},n=this._get(e,this,t),r=Array.prototype.slice.call(arguments,1),s=n.length,i=n.push.apply(n,r);return r.length&&this._notifySplice(n,t.path,s,r.length,[]),i},pop:function(e){var t={},n=this._get(e,this,t),r=Boolean(n.length),s=Array.prototype.slice.call(arguments,1),i=n.pop.apply(n,s);return r&&this._notifySplice(n,t.path,n.length,0,[i]),i},splice:function(e,t){var n={},r=this._get(e,this,n);t=t<0?r.length-Math.floor(-t):Math.floor(t),t||(t=0);var s=Array.prototype.slice.call(arguments,1),i=r.splice.apply(r,s),o=Math.max(s.length-2,0);return(o||i.length)&&this._notifySplice(r,n.path,t,o,i),i},shift:function(e){var t={},n=this._get(e,this,t),r=Boolean(n.length),s=Array.prototype.slice.call(arguments,1),i=n.shift.apply(n,s);return r&&this._notifySplice(n,t.path,0,0,[i]),i},unshift:function(e){var t={},n=this._get(e,this,t),r=Array.prototype.slice.call(arguments,1),s=n.unshift.apply(n,r);return r.length&&this._notifySplice(n,t.path,0,r.length,[]),s},prepareModelNotifyPath:function(e){this.mixin(e,{fire:Polymer.Base.fire,_getEvent:Polymer.Base._getEvent,__eventCache:Polymer.Base.__eventCache,notifyPath:Polymer.Base.notifyPath,_get:Polymer.Base._get,_EVENT_CHANGED:Polymer.Base._EVENT_CHANGED,_notifyPath:Polymer.Base._notifyPath,_notifyPathUp:Polymer.Base._notifyPathUp,_pathEffector:Polymer.Base._pathEffector,_annotationPathEffect:Polymer.Base._annotationPathEffect,_complexObserverPathEffect:Polymer.Base._complexObserverPathEffect,_annotatedComputationPathEffect:Polymer.Base._annotatedComputationPathEffect,_computePathEffect:Polymer.Base._computePathEffect,_notifyBoundPaths:Polymer.Base._notifyBoundPaths,_getPathParts:Polymer.Base._getPathParts})}})}(),Polymer.Base._addFeature({resolveUrl:function(e){var t=Polymer.DomModule.import(this.is),n="";if(t){var r=t.getAttribute("assetpath")||"";n=Polymer.ResolveUrl.resolveUrl(r,t.ownerDocument.baseURI)}return Polymer.ResolveUrl.resolveUrl(e,n)}}),Polymer.CssParse=function(){return{parse:function(e){return e=this._clean(e),this._parseCss(this._lex(e),e)},_clean:function(e){return e.replace(this._rx.comments,"").replace(this._rx.port,"")},_lex:function(e){for(var t={start:0,end:e.length},n=t,r=0,s=e.length;r<s;r++)switch(e[r]){case this.OPEN_BRACE:n.rules||(n.rules=[]);var i=n,o=i.rules[i.rules.length-1];n={start:r+1,parent:i,previous:o},i.rules.push(n);break;case this.CLOSE_BRACE:n.end=r+1,n=n.parent||t}return t},_parseCss:function(e,t){var n=t.substring(e.start,e.end-1);if(e.parsedCssText=e.cssText=n.trim(),e.parent){var r=e.previous?e.previous.end:e.parent.start;n=t.substring(r,e.start-1),n=this._expandUnicodeEscapes(n),n=n.replace(this._rx.multipleSpaces," "),n=n.substring(n.lastIndexOf(";")+1);var s=e.parsedSelector=e.selector=n.trim();e.atRule=0===s.indexOf(this.AT_START),e.atRule?0===s.indexOf(this.MEDIA_START)?e.type=this.types.MEDIA_RULE:s.match(this._rx.keyframesRule)&&(e.type=this.types.KEYFRAMES_RULE,e.keyframesName=e.selector.split(this._rx.multipleSpaces).pop()):0===s.indexOf(this.VAR_START)?e.type=this.types.MIXIN_RULE:e.type=this.types.STYLE_RULE}var i=e.rules;if(i)for(var o,a=0,l=i.length;a<l&&(o=i[a]);a++)this._parseCss(o,t);return e},_expandUnicodeEscapes:function(e){return e.replace(/\\([0-9a-f]{1,6})\s/gi,function(){for(var e=arguments[1],t=6-e.length;t--;)e="0"+e;return"\\"+e})},stringify:function(e,t,n){n=n||"";var r="";if(e.cssText||e.rules){var s=e.rules;if(s&&!this._hasMixinRules(s))for(var i,o=0,a=s.length;o<a&&(i=s[o]);o++)r=this.stringify(i,t,r);else r=t?e.cssText:this.removeCustomProps(e.cssText),r=r.trim(),r&&(r=" "+r+"\n")}return r&&(e.selector&&(n+=e.selector+" "+this.OPEN_BRACE+"\n"),n+=r,e.selector&&(n+=this.CLOSE_BRACE+"\n\n")),n},_hasMixinRules:function(e){return 0===e[0].selector.indexOf(this.VAR_START)},removeCustomProps:function(e){return e=this.removeCustomPropAssignment(e),this.removeCustomPropApply(e)},removeCustomPropAssignment:function(e){return e.replace(this._rx.customProp,"").replace(this._rx.mixinProp,"")},removeCustomPropApply:function(e){return e.replace(this._rx.mixinApply,"").replace(this._rx.varApply,"")},types:{STYLE_RULE:1,KEYFRAMES_RULE:7,MEDIA_RULE:4,MIXIN_RULE:1e3},OPEN_BRACE:"{",CLOSE_BRACE:"}",_rx:{comments:/\/\*[^*]*\*+([^\/*][^*]*\*+)*\//gim,port:/@import[^;]*;/gim,customProp:/(?:^[^;\-\s}]+)?--[^;{}]*?:[^{};]*?(?:[;\n]|$)/gim,mixinProp:/(?:^[^;\-\s}]+)?--[^;{}]*?:[^{};]*?{[^}]*?}(?:[;\n]|$)?/gim,mixinApply:/@apply\s*\(?[^);]*\)?\s*(?:[;\n]|$)?/gim,varApply:/[^;:]*?:[^;]*?var\([^;]*\)(?:[;\n]|$)?/gim,keyframesRule:/^@[^\s]*keyframes/,multipleSpaces:/\s+/g},VAR_START:"--",MEDIA_START:"@media",AT_START:"@"}}(),Polymer.StyleUtil=function(){var e=Polymer.Settings;return{NATIVE_VARIABLES:Polymer.Settings.useNativeCSSProperties,MODULE_STYLES_SELECTOR:"style, link[rel=import][type~=css], template",INCLUDE_ATTR:"include",toCssText:function(e,t){return"string"==typeof e&&(e=this.parser.parse(e)),t&&this.forEachRule(e,t),this.parser.stringify(e,this.NATIVE_VARIABLES)},forRulesInStyles:function(e,t,n){if(e)for(var r,s=0,i=e.length;s<i&&(r=e[s]);s++)this.forEachRuleInStyle(r,t,n)},forActiveRulesInStyles:function(e,t,n){if(e)for(var r,s=0,i=e.length;s<i&&(r=e[s]);s++)this.forEachRuleInStyle(r,t,n,!0)},rulesForStyle:function(e){return!e.__cssRules&&e.textContent&&(e.__cssRules=this.parser.parse(e.textContent)),e.__cssRules},isKeyframesSelector:function(e){return e.parent&&e.parent.type===this.ruleTypes.KEYFRAMES_RULE},forEachRuleInStyle:function(e,t,n,r){var s,i,o=this.rulesForStyle(e);t&&(s=function(n){t(n,e)}),n&&(i=function(t){n(t,e)}),this.forEachRule(o,s,i,r)},forEachRule:function(e,t,n,r){if(e){var s=!1;if(r&&e.type===this.ruleTypes.MEDIA_RULE){var i=e.selector.match(this.rx.MEDIA_MATCH);i&&(window.matchMedia(i[1]).matches||(s=!0))}e.type===this.ruleTypes.STYLE_RULE?t(e):n&&e.type===this.ruleTypes.KEYFRAMES_RULE?n(e):e.type===this.ruleTypes.MIXIN_RULE&&(s=!0);var o=e.rules;if(o&&!s)for(var a,l=0,c=o.length;l<c&&(a=o[l]);l++)this.forEachRule(a,t,n,r)}},applyCss:function(e,t,n,r){var s=this.createScopeStyle(e,t);return this.applyStyle(s,n,r)},applyStyle:function(e,t,n){t=t||document.head;var r=n&&n.nextSibling||t.firstChild;return this.__lastHeadApplyNode=e,t.insertBefore(e,r)},createScopeStyle:function(e,t){var n=document.createElement("style");return t&&n.setAttribute("scope",t),n.textContent=e,n},__lastHeadApplyNode:null,applyStylePlaceHolder:function(e){var t=document.createComment(" Shady DOM styles for "+e+" "),n=this.__lastHeadApplyNode?this.__lastHeadApplyNode.nextSibling:null,r=document.head;return r.insertBefore(t,n||r.firstChild),this.__lastHeadApplyNode=t,t},cssFromModules:function(e,t){for(var n=e.trim().split(" "),r="",s=0;s<n.length;s++)r+=this.cssFromModule(n[s],t);return r},cssFromModule:function(e,t){var n=Polymer.DomModule.import(e);return n&&!n._cssText&&(n._cssText=this.cssFromElement(n)),!n&&t&&console.warn("Could not find style data in module named",e),n&&n._cssText||""},cssFromElement:function(e){for(var t,n="",r=e.content||e,s=Polymer.TreeApi.arrayCopy(r.querySelectorAll(this.MODULE_STYLES_SELECTOR)),i=0;i<s.length;i++)if(t=s[i],"template"===t.localName)t.hasAttribute("preserve-content")||(n+=this.cssFromElement(t));else if("style"===t.localName){var o=t.getAttribute(this.INCLUDE_ATTR);o&&(n+=this.cssFromModules(o,!0)),t=t.__appliedElement||t,t.parentNode.removeChild(t),n+=this.resolveCss(t.textContent,e.ownerDocument)}else t.import&&t.import.body&&(n+=this.resolveCss(t.import.body.textContent,t.import));return n},isTargetedBuild:function(t){return e.useNativeShadow?"shadow"===t:"shady"===t},cssBuildTypeForModule:function(e){var t=Polymer.DomModule.import(e);if(t)return this.getCssBuildType(t)},getCssBuildType:function(e){return e.getAttribute("css-build")},_findMatchingParen:function(e,t){for(var n=0,r=t,s=e.length;r<s;r++)switch(e[r]){case"(":n++;break;case")":if(0===--n)return r}return-1},processVariableAndFallback:function(e,t){var n=e.indexOf("var(");if(n===-1)return t(e,"","","");var r=this._findMatchingParen(e,n+3),s=e.substring(n+4,r),i=e.substring(0,n),o=this.processVariableAndFallback(e.substring(r+1),t),a=s.indexOf(",");if(a===-1)return t(i,s.trim(),"",o);var l=s.substring(0,a).trim(),c=s.substring(a+1).trim();return t(i,l,c,o)},rx:{VAR_ASSIGN:/(?:^|[;\s{]\s*)(--[\w-]*?)\s*:\s*(?:([^;{]*)|{([^}]*)})(?:(?=[;\s}])|$)/gi,MIXIN_MATCH:/(?:^|\W+)@apply\s*\(?([^);\n]*)\)?/gi,VAR_CONSUMED:/(--[\w-]+)\s*([:,;)]|$)/gi,ANIMATION_MATCH:/(animation\s*:)|(animation-name\s*:)/,MEDIA_MATCH:/@media[^(]*(\([^)]*\))/,IS_VAR:/^--/,BRACKETED:/\{[^}]*\}/g,HOST_PREFIX:"(?:^|[^.#[:])",HOST_SUFFIX:"($|[.:[\\s>+~])"},resolveCss:Polymer.ResolveUrl.resolveCss,parser:Polymer.CssParse,ruleTypes:Polymer.CssParse.types}}(),Polymer.StyleTransformer=function(){var e=Polymer.StyleUtil,t=Polymer.Settings,n={dom:function(e,t,n,r){this._transformDom(e,t||"",n,r)},_transformDom:function(e,t,n,r){e.setAttribute&&this.element(e,t,n,r);for(var s=Polymer.dom(e).childNodes,i=0;i<s.length;i++)this._transformDom(s[i],t,n,r)},element:function(e,t,n,s){if(n)s?e.removeAttribute(r):e.setAttribute(r,t);else if(t)if(e.classList)s?(e.classList.remove(r),e.classList.remove(t)):(e.classList.add(r),e.classList.add(t));else if(e.getAttribute){var i=e.getAttribute(g);s?i&&e.setAttribute(g,i.replace(r,"").replace(t,"")):e.setAttribute(g,(i?i+" ":"")+r+" "+t)}},elementStyles:function(n,r){var s,i=n._styles,o="",a=n.__cssBuild,l=t.useNativeShadow||"shady"===a;if(l){var h=this;s=function(e){e.selector=h._slottedToContent(e.selector),e.selector=e.selector.replace(c,":host > *"),r&&r(e)}}for(var u,f=0,p=i.length;f<p&&(u=i[f]);f++){var _=e.rulesForStyle(u);o+=l?e.toCssText(_,s):this.css(_,n.is,n.extends,r,n._scopeCssViaAttr)+"\n\n"}return o.trim()},css:function(t,n,r,s,i){var o=this._calcHostScope(n,r);n=this._calcElementScope(n,i);var a=this;return e.toCssText(t,function(e){e.isScoped||(a.rule(e,n,o),e.isScoped=!0),s&&s(e,n,o)})},_calcElementScope:function(e,t){return e?t?m+e+y:d+e:""},_calcHostScope:function(e,t){return t?"[is="+e+"]":e},rule:function(e,t,n){this._transformRule(e,this._transformComplexSelector,t,n)},_transformRule:function(e,t,n,r){e.selector=e.transformedSelector=this._transformRuleCss(e,t,n,r)},_transformRuleCss:function(t,n,r,s){var o=t.selector.split(i);if(!e.isKeyframesSelector(t))for(var a,l=0,c=o.length;l<c&&(a=o[l]);l++)o[l]=n.call(this,a,r,s);return o.join(i)},_transformComplexSelector:function(e,t,n){var r=!1,s=!1,a=this;return e=e.trim(),e=this._slottedToContent(e),e=e.replace(c,":host > *"),e=e.replace(P,l+" $1"),e=e.replace(o,function(e,i,o){if(r)o=o.replace(_," ");else{var l=a._transformCompoundSelector(o,i,t,n);r=r||l.stop,s=s||l.hostContext,i=l.combinator,o=l.value}return i+o}),s&&(e=e.replace(f,function(e,t,r,s){return t+r+" "+n+s+i+" "+t+n+r+s})),e},_transformCompoundSelector:function(e,t,n,r){var s=e.search(_),i=!1;e.indexOf(u)>=0?i=!0:e.indexOf(l)>=0?e=this._transformHostSelector(e,r):0!==s&&(e=n?this._transformSimpleSelector(e,n):e),e.indexOf(p)>=0&&(t="");var o;return s>=0&&(e=e.replace(_," "),o=!0),{value:e,combinator:t,stop:o,hostContext:i}},_transformSimpleSelector:function(e,t){var n=e.split(v);return n[0]+=t,n.join(v)},_transformHostSelector:function(e,t){var n=e.match(h),r=n&&n[2].trim()||"";if(r){if(r[0].match(a))return e.replace(h,function(e,n,r){return t+r});var s=r.split(a)[0];return s===t?r:S}return e.replace(l,t)},documentRule:function(e){e.selector=e.parsedSelector,this.normalizeRootSelector(e),t.useNativeShadow||this._transformRule(e,this._transformDocumentSelector)},normalizeRootSelector:function(e){e.selector=e.selector.replace(c,"html")},_transformDocumentSelector:function(e){return e.match(_)?this._transformComplexSelector(e,s):this._transformSimpleSelector(e.trim(),s)},_slottedToContent:function(e){return e.replace(E,p+"> $1")},SCOPE_NAME:"style-scope"},r=n.SCOPE_NAME,s=":not(["+r+"]):not(."+r+")",i=",",o=/(^|[\s>+~]+)((?:\[.+?\]|[^\s>+~=\[])+)/g,a=/[[.:#*]/,l=":host",c=":root",h=/(:host)(?:\(((?:\([^)(]*\)|[^)(]*)+?)\))/,u=":host-context",f=/(.*)(?::host-context)(?:\(((?:\([^)(]*\)|[^)(]*)+?)\))(.*)/,p="::content",_=/::content|::shadow|\/deep\//,d=".",m="["+r+"~=",y="]",v=":",g="class",P=new RegExp("^("+p+")"),S="should_not_match",E=/(?:::slotted)(?:\(((?:\([^)(]*\)|[^)(]*)+?)\))/g;return n}(),Polymer.StyleExtends=function(){var e=Polymer.StyleUtil;return{hasExtends:function(e){return Boolean(e.match(this.rx.EXTEND))},transform:function(t){var n=e.rulesForStyle(t),r=this;return e.forEachRule(n,function(e){if(r._mapRuleOntoParent(e),e.parent)for(var t;t=r.rx.EXTEND.exec(e.cssText);){var n=t[1],s=r._findExtendor(n,e);s&&r._extendRule(e,s)}e.cssText=e.cssText.replace(r.rx.EXTEND,"")}),e.toCssText(n,function(e){e.selector.match(r.rx.STRIP)&&(e.cssText="")},!0)},_mapRuleOntoParent:function(e){if(e.parent){for(var t,n=e.parent.map||(e.parent.map={}),r=e.selector.split(","),s=0;s<r.length;s++)t=r[s],n[t.trim()]=e;return n}},_findExtendor:function(e,t){return t.parent&&t.parent.map&&t.parent.map[e]||this._findExtendor(e,t.parent)},_extendRule:function(e,t){e.parent!==t.parent&&this._cloneAndAddRuleToParent(t,e.parent),e.extends=e.extends||[],e.extends.push(t),t.selector=t.selector.replace(this.rx.STRIP,""),t.selector=(t.selector&&t.selector+",\n")+e.selector,t.extends&&t.extends.forEach(function(t){this._extendRule(e,t)},this)},_cloneAndAddRuleToParent:function(e,t){e=Object.create(e),e.parent=t,e.extends&&(e.extends=e.extends.slice()),t.rules.push(e)},rx:{EXTEND:/@extends\(([^)]*)\)\s*?;/gim,STRIP:/%[^,]*$/}}}(),Polymer.ApplyShim=function(){"use strict";function e(e,t){e=e.trim(),m[e]={properties:t,dependants:{}}}function t(e){return e=e.trim(),m[e]}function n(e,t){var n=_.exec(t);return n&&(t=n[1]?y._getInitialValueForProperty(e):"apply-shim-inherit"),t}function r(e){for(var t,r,s,i,o=e.split(";"),a={},l=0;l<o.length;l++)s=o[l],s&&(i=s.split(":"),i.length>1&&(t=i[0].trim(),r=n(t,i.slice(1).join(":")),a[t]=r));return a}function s(e){var t=y.__currentElementProto,n=t&&t.is;for(var r in e.dependants)r!==n&&(e.dependants[r].__applyShimInvalid=!0)}function i(n,i,o,a){if(o&&c.processVariableAndFallback(o,function(e,n){n&&t(n)&&(a="@apply "+n+";")}),!a)return n;var h=l(a),u=n.slice(0,n.indexOf("--")),f=r(h),p=f,_=t(i),m=_&&_.properties;m?(p=Object.create(m),p=Polymer.Base.mixin(p,f)):e(i,p);var y,v,g=[],P=!1;for(y in p)v=f[y],void 0===v&&(v="initial"),!m||y in m||(P=!0),g.push(i+d+y+": "+v);return P&&s(_),_&&(_.properties=p),o&&(u=n+";"+u),u+g.join("; ")+";"}function o(e,t,n){return"var("+t+",var("+n+"))"}function a(n,r){n=n.replace(p,"");var s=[],i=t(n);if(i||(e(n,{}),i=t(n)),i){var o=y.__currentElementProto;o&&(i.dependants[o.is]=o);var a,l,c;for(a in i.properties)c=r&&r[a],l=[a,": var(",n,d,a],c&&l.push(",",c),l.push(")"),s.push(l.join(""))}return s.join("; ")}function l(e){for(var t;t=h.exec(e);){var n=t[0],s=t[1],i=t.index,o=i+n.indexOf("@apply"),l=i+n.length,c=e.slice(0,o),u=e.slice(l),f=r(c),p=a(s,f);e=[c,p,u].join(""),h.lastIndex=i+p.length}return e}var c=Polymer.StyleUtil,h=c.rx.MIXIN_MATCH,u=c.rx.VAR_ASSIGN,f=/var\(\s*(--[^,]*),\s*(--[^)]*)\)/g,p=/;\s*/m,_=/^\s*(initial)|(inherit)\s*$/,d="_-_",m={},y={_measureElement:null,_map:m,_separator:d,transform:function(e,t){this.__currentElementProto=t,c.forRulesInStyles(e,this._boundFindDefinitions),c.forRulesInStyles(e,this._boundFindApplications),t&&(t.__applyShimInvalid=!1),this.__currentElementProto=null},_findDefinitions:function(e){var t=e.parsedCssText;t=t.replace(f,o),t=t.replace(u,i),e.cssText=t,":root"===e.selector&&(e.selector=":host > *")},_findApplications:function(e){e.cssText=l(e.cssText)},transformRule:function(e){this._findDefinitions(e),this._findApplications(e)},_getInitialValueForProperty:function(e){return this._measureElement||(this._measureElement=document.createElement("meta"),this._measureElement.style.all="initial",document.head.appendChild(this._measureElement)),window.getComputedStyle(this._measureElement).getPropertyValue(e)}};return y._boundTransformRule=y.transformRule.bind(y),y._boundFindDefinitions=y._findDefinitions.bind(y),y._boundFindApplications=y._findApplications.bind(y),y}(),function(){var e=Polymer.Base._prepElement,t=Polymer.Settings.useNativeShadow,n=Polymer.StyleUtil,r=Polymer.StyleTransformer,s=Polymer.StyleExtends,i=Polymer.ApplyShim,o=Polymer.Settings;Polymer.Base._addFeature({_prepElement:function(t){this._encapsulateStyle&&"shady"!==this.__cssBuild&&r.element(t,this.is,this._scopeCssViaAttr),e.call(this,t)},_prepStyles:function(){void 0===this._encapsulateStyle&&(this._encapsulateStyle=!t),t||(this._scopeStyle=n.applyStylePlaceHolder(this.is)),this.__cssBuild=n.cssBuildTypeForModule(this.is)},_prepShimStyles:function(){if(this._template){var e=n.isTargetedBuild(this.__cssBuild);if(o.useNativeCSSProperties&&"shadow"===this.__cssBuild&&e)return;this._styles=this._styles||this._collectStyles(),o.useNativeCSSProperties&&!this.__cssBuild&&i.transform(this._styles,this);var s=o.useNativeCSSProperties&&e?this._styles.length&&this._styles[0].textContent.trim():r.elementStyles(this);this._prepStyleProperties(),!this._needsStyleProperties()&&s&&n.applyCss(s,this.is,t?this._template.content:null,this._scopeStyle)}else this._styles=[]},_collectStyles:function(){var e=[],t="",r=this.styleModules;if(r)for(var i,o=0,a=r.length;o<a&&(i=r[o]);o++)t+=n.cssFromModule(i);t+=n.cssFromModule(this.is);var l=this._template&&this._template.parentNode;if(!this._template||l&&l.id.toLowerCase()===this.is||(t+=n.cssFromElement(this._template)),t){var c=document.createElement("style");c.textContent=t,s.hasExtends(c.textContent)&&(t=s.transform(c)),e.push(c)}return e},_elementAdd:function(e){this._encapsulateStyle&&(e.__styleScoped?e.__styleScoped=!1:r.dom(e,this.is,this._scopeCssViaAttr))},_elementRemove:function(e){this._encapsulateStyle&&r.dom(e,this.is,this._scopeCssViaAttr,!0)},scopeSubtree:function(e,n){if(!t){var r=this,s=function(e){if(e.nodeType===Node.ELEMENT_NODE){var t=e.getAttribute("class");e.setAttribute("class",r._scopeElementClass(e,t));for(var n,s=e.querySelectorAll("*"),i=0;i<s.length&&(n=s[i]);i++)t=n.getAttribute("class"),n.setAttribute("class",r._scopeElementClass(n,t))}};if(s(e),n){var i=new MutationObserver(function(e){for(var t,n=0;n<e.length&&(t=e[n]);n++)if(t.addedNodes)for(var r=0;r<t.addedNodes.length;r++)s(t.addedNodes[r])});return i.observe(e,{childList:!0,subtree:!0}),i}}}})}(),Polymer.StyleProperties=function(){"use strict";function e(e,t){var n=parseInt(e/32),r=1<<e%32;t[n]=(t[n]||0)|r}var t=Polymer.DomApi.matchesSelector,n=Polymer.StyleUtil,r=Polymer.StyleTransformer,s=navigator.userAgent.match("Trident"),i=Polymer.Settings;return{decorateStyles:function(e,t){var s=this,i={},o=[],a=0,l=r._calcHostScope(t.is,t.extends);n.forRulesInStyles(e,function(e,r){s.decorateRule(e),e.index=a++,s.whenHostOrRootRule(t,e,r,function(r){if(e.parent.type===n.ruleTypes.MEDIA_RULE&&(t.__notStyleScopeCacheable=!0),r.isHost){var s=r.selector.split(" ").some(function(e){return 0===e.indexOf(l)&&e.length!==l.length});t.__notStyleScopeCacheable=t.__notStyleScopeCacheable||s}}),s.collectPropertiesInCssText(e.propertyInfo.cssText,i)},function(e){o.push(e)}),e._keyframes=o;var c=[];for(var h in i)c.push(h);return c},decorateRule:function(e){if(e.propertyInfo)return e.propertyInfo;var t={},n={},r=this.collectProperties(e,n);return r&&(t.properties=n,e.rules=null),t.cssText=this.collectCssText(e),e.propertyInfo=t,t},collectProperties:function(e,t){var n=e.propertyInfo;if(!n){for(var r,s,i,o=this.rx.VAR_ASSIGN,a=e.parsedCssText;r=o.exec(a);)s=(r[2]||r[3]).trim(),"inherit"!==s&&(t[r[1].trim()]=s),i=!0;return i}if(n.properties)return Polymer.Base.mixin(t,n.properties),!0},collectCssText:function(e){return this.collectConsumingCssText(e.parsedCssText)},collectConsumingCssText:function(e){return e.replace(this.rx.BRACKETED,"").replace(this.rx.VAR_ASSIGN,"")},collectPropertiesInCssText:function(e,t){for(var n;n=this.rx.VAR_CONSUMED.exec(e);){var r=n[1];":"!==n[2]&&(t[r]=!0)}},reify:function(e){for(var t,n=Object.getOwnPropertyNames(e),r=0;r<n.length;r++)t=n[r],e[t]=this.valueForProperty(e[t],e)},valueForProperty:function(e,t){if(e)if(e.indexOf(";")>=0)e=this.valueForProperties(e,t);else{var r=this,s=function(e,n,s,i){var o=r.valueForProperty(t[n],t);return o&&"initial"!==o?"apply-shim-inherit"===o&&(o="inherit"):o=r.valueForProperty(t[s]||s,t)||s,e+(o||"")+i};e=n.processVariableAndFallback(e,s)}return e&&e.trim()||""},valueForProperties:function(e,t){for(var n,r,s=e.split(";"),i=0;i<s.length;i++)if(n=s[i]){if(this.rx.MIXIN_MATCH.lastIndex=0,r=this.rx.MIXIN_MATCH.exec(n))n=this.valueForProperty(t[r[1]],t);else{var o=n.indexOf(":");if(o!==-1){var a=n.substring(o);a=a.trim(),a=this.valueForProperty(a,t)||a,n=n.substring(0,o)+a}}s[i]=n&&n.lastIndexOf(";")===n.length-1?n.slice(0,-1):n||""}return s.join(";")},applyProperties:function(e,t){var n="";e.propertyInfo||this.decorateRule(e),e.propertyInfo.cssText&&(n=this.valueForProperties(e.propertyInfo.cssText,t)),e.cssText=n},applyKeyframeTransforms:function(e,t){var n=e.cssText,r=e.cssText;if(null==e.hasAnimations&&(e.hasAnimations=this.rx.ANIMATION_MATCH.test(n)),e.hasAnimations){var s;if(null==e.keyframeNamesToTransform){e.keyframeNamesToTransform=[];for(var i in t)s=t[i],r=s(n),n!==r&&(n=r,e.keyframeNamesToTransform.push(i))}else{for(var o=0;o<e.keyframeNamesToTransform.length;++o)s=t[e.keyframeNamesToTransform[o]],n=s(n);r=n}}e.cssText=r},propertyDataFromStyles:function(r,s){var i={},o=this,a=[];return n.forActiveRulesInStyles(r,function(n){n.propertyInfo||o.decorateRule(n);var r=n.transformedSelector||n.parsedSelector;s&&n.propertyInfo.properties&&r&&t.call(s,r)&&(o.collectProperties(n,i),e(n.index,a))}),{properties:i,key:a}},_rootSelector:/:root|:host\s*>\s*\*/,_checkRoot:function(e,t){return Boolean(t.match(this._rootSelector))||"html"===e&&t.indexOf("html")>-1},whenHostOrRootRule:function(e,t,n,s){if(t.propertyInfo||self.decorateRule(t),t.propertyInfo.properties){var o=e.is?r._calcHostScope(e.is,e.extends):"html",a=t.parsedSelector,l=this._checkRoot(o,a),c=!l&&0===a.indexOf(":host"),h=e.__cssBuild||n.__cssBuild;if("shady"===h&&(l=a===o+" > *."+o||a.indexOf("html")>-1,c=!l&&0===a.indexOf(o)),l||c){var u=o;c&&(i.useNativeShadow&&!t.transformedSelector&&(t.transformedSelector=r._transformRuleCss(t,r._transformComplexSelector,e.is,o)),u=t.transformedSelector||t.parsedSelector),l&&"html"===o&&(u=t.transformedSelector||t.parsedSelector),s({selector:u,isHost:c,isRoot:l})}}},hostAndRootPropertiesForScope:function(e){var r={},s={},i=this;return n.forActiveRulesInStyles(e._styles,function(n,o){i.whenHostOrRootRule(e,n,o,function(o){var a=e._element||e;t.call(a,o.selector)&&(o.isHost?i.collectProperties(n,r):i.collectProperties(n,s))})}),{rootProps:s,hostProps:r}},transformStyles:function(e,t,n){var s=this,o=r._calcHostScope(e.is,e.extends),a=e.extends?"\\"+o.slice(0,-1)+"\\]":o,l=new RegExp(this.rx.HOST_PREFIX+a+this.rx.HOST_SUFFIX),c=this._elementKeyframeTransforms(e,n);return r.elementStyles(e,function(r){s.applyProperties(r,t),i.useNativeShadow||Polymer.StyleUtil.isKeyframesSelector(r)||!r.cssText||(s.applyKeyframeTransforms(r,c),s._scopeSelector(r,l,o,e._scopeCssViaAttr,n))})},_elementKeyframeTransforms:function(e,t){var n=e._styles._keyframes,r={};if(!i.useNativeShadow&&n)for(var s=0,o=n[s];s<n.length;o=n[++s])this._scopeKeyframes(o,t),r[o.keyframesName]=this._keyframesRuleTransformer(o);return r},_keyframesRuleTransformer:function(e){return function(t){return t.replace(e.keyframesNameRx,e.transformedKeyframesName)}},_scopeKeyframes:function(e,t){e.keyframesNameRx=new RegExp(e.keyframesName,"g"),e.transformedKeyframesName=e.keyframesName+"-"+t,e.transformedSelector=e.transformedSelector||e.selector,e.selector=e.transformedSelector.replace(e.keyframesName,e.transformedKeyframesName)},_scopeSelector:function(e,t,n,s,i){e.transformedSelector=e.transformedSelector||e.selector;for(var o,a=e.transformedSelector,l=s?"["+r.SCOPE_NAME+"~="+i+"]":"."+i,c=a.split(","),h=0,u=c.length;h<u&&(o=c[h]);h++)c[h]=o.match(t)?o.replace(n,l):l+" "+o;e.selector=c.join(",")},applyElementScopeSelector:function(e,t,n,s){var i=s?e.getAttribute(r.SCOPE_NAME):e.getAttribute("class")||"",o=n?i.replace(n,t):(i?i+" ":"")+this.XSCOPE_NAME+" "+t;i!==o&&(s?e.setAttribute(r.SCOPE_NAME,o):e.setAttribute("class",o))},applyElementStyle:function(e,t,r,o){var a=o?o.textContent||"":this.transformStyles(e,t,r),l=e._customStyle;return l&&!i.useNativeShadow&&l!==o&&(l._useCount--,l._useCount<=0&&l.parentNode&&l.parentNode.removeChild(l)),i.useNativeShadow?e._customStyle?(e._customStyle.textContent=a,o=e._customStyle):a&&(o=n.applyCss(a,r,e.root,e._scopeStyle)):o?o.parentNode||(s&&a.indexOf("@media")>-1&&(o.textContent=a),n.applyStyle(o,null,e._scopeStyle)):a&&(o=n.applyCss(a,r,null,e._scopeStyle)),o&&(o._useCount=o._useCount||0,e._customStyle!=o&&o._useCount++,e._customStyle=o),o},mixinCustomStyle:function(e,t){var n;for(var r in t)n=t[r],(n||0===n)&&(e[r]=n)},updateNativeStyleProperties:function(e,t){var n=e.__customStyleProperties;if(n)for(var r=0;r<n.length;r++)e.style.removeProperty(n[r]);var s=[];for(var i in t)null!==t[i]&&(e.style.setProperty(i,t[i]),s.push(i));e.__customStyleProperties=s},rx:n.rx,XSCOPE_NAME:"x-scope"}}(),function(){Polymer.StyleCache=function(){this.cache={}},Polymer.StyleCache.prototype={MAX:100,store:function(e,t,n,r){t.keyValues=n,t.styles=r;var s=this.cache[e]=this.cache[e]||[];s.push(t),s.length>this.MAX&&s.shift()},retrieve:function(e,t,n){var r=this.cache[e];if(r)for(var s,i=r.length-1;i>=0;i--)if(s=r[i],n===s.styles&&this._objectsEqual(t,s.keyValues))return s},clear:function(){this.cache={}},_objectsEqual:function(e,t){var n,r;for(var s in e)if(n=e[s],r=t[s],!("object"==typeof n&&n?this._objectsStrictlyEqual(n,r):n===r))return!1;return!Array.isArray(e)||e.length===t.length},_objectsStrictlyEqual:function(e,t){return this._objectsEqual(e,t)&&this._objectsEqual(t,e)}}}(),Polymer.StyleDefaults=function(){var e=Polymer.StyleProperties,t=Polymer.StyleCache,n=Polymer.Settings.useNativeCSSProperties,r={_styles:[],_properties:null,customStyle:{},_styleCache:new t,_element:Polymer.DomApi.wrap(document.documentElement),addStyle:function(e){this._styles.push(e),this._properties=null},get _styleProperties(){return this._properties||(e.decorateStyles(this._styles,this),this._styles._scopeStyleProperties=null,this._properties=e.hostAndRootPropertiesForScope(this).rootProps,e.mixinCustomStyle(this._properties,this.customStyle),e.reify(this._properties)),this._properties},hasStyleProperties:function(){return Boolean(this._properties)},_needsStyleProperties:function(){},_computeStyleProperties:function(){return this._styleProperties},updateStyles:function(t){this._properties=null,t&&Polymer.Base.mixin(this.customStyle,t),this._styleCache.clear();for(var r,s=0;s<this._styles.length;s++)r=this._styles[s],r=r.__importElement||r,r._apply(); -n&&e.updateNativeStyleProperties(document.documentElement,this.customStyle)}};return r}(),function(){"use strict";var e=Polymer.Base.serializeValueToAttribute,t=Polymer.StyleProperties,n=Polymer.StyleTransformer,r=Polymer.StyleDefaults,s=Polymer.Settings.useNativeShadow,i=Polymer.Settings.useNativeCSSProperties;Polymer.Base._addFeature({_prepStyleProperties:function(){i||(this._ownStylePropertyNames=this._styles&&this._styles.length?t.decorateStyles(this._styles,this):null)},customStyle:null,getComputedStyleValue:function(e){return i||this._styleProperties||this._computeStyleProperties(),!i&&this._styleProperties&&this._styleProperties[e]||getComputedStyle(this).getPropertyValue(e)},_setupStyleProperties:function(){this.customStyle={},this._styleCache=null,this._styleProperties=null,this._scopeSelector=null,this._ownStyleProperties=null,this._customStyle=null},_needsStyleProperties:function(){return Boolean(!i&&this._ownStylePropertyNames&&this._ownStylePropertyNames.length)},_validateApplyShim:function(){if(this.__applyShimInvalid){Polymer.ApplyShim.transform(this._styles,this.__proto__);var e=n.elementStyles(this);if(s){var t=this._template.content.querySelector("style");t&&(t.textContent=e)}else{var r=this._scopeStyle&&this._scopeStyle.nextSibling;r&&(r.textContent=e)}}},_beforeAttached:function(){this._scopeSelector&&!this.__stylePropertiesInvalid||!this._needsStyleProperties()||(this.__stylePropertiesInvalid=!1,this._updateStyleProperties())},_findStyleHost:function(){for(var e,t=this;e=Polymer.dom(t).getOwnerRoot();){if(Polymer.isInstance(e.host))return e.host;t=e.host}return r},_updateStyleProperties:function(){var e,n=this._findStyleHost();n._styleProperties||n._computeStyleProperties(),n._styleCache||(n._styleCache=new Polymer.StyleCache);var r=t.propertyDataFromStyles(n._styles,this),i=!this.__notStyleScopeCacheable;i&&(r.key.customStyle=this.customStyle,e=n._styleCache.retrieve(this.is,r.key,this._styles));var a=Boolean(e);a?this._styleProperties=e._styleProperties:this._computeStyleProperties(r.properties),this._computeOwnStyleProperties(),a||(e=o.retrieve(this.is,this._ownStyleProperties,this._styles));var l=Boolean(e)&&!a,c=this._applyStyleProperties(e);a||(c=c&&s?c.cloneNode(!0):c,e={style:c,_scopeSelector:this._scopeSelector,_styleProperties:this._styleProperties},i&&(r.key.customStyle={},this.mixin(r.key.customStyle,this.customStyle),n._styleCache.store(this.is,e,r.key,this._styles)),l||o.store(this.is,Object.create(e),this._ownStyleProperties,this._styles))},_computeStyleProperties:function(e){var n=this._findStyleHost();n._styleProperties||n._computeStyleProperties();var r=Object.create(n._styleProperties),s=t.hostAndRootPropertiesForScope(this);this.mixin(r,s.hostProps),e=e||t.propertyDataFromStyles(n._styles,this).properties,this.mixin(r,e),this.mixin(r,s.rootProps),t.mixinCustomStyle(r,this.customStyle),t.reify(r),this._styleProperties=r},_computeOwnStyleProperties:function(){for(var e,t={},n=0;n<this._ownStylePropertyNames.length;n++)e=this._ownStylePropertyNames[n],t[e]=this._styleProperties[e];this._ownStyleProperties=t},_scopeCount:0,_applyStyleProperties:function(e){var n=this._scopeSelector;this._scopeSelector=e?e._scopeSelector:this.is+"-"+this.__proto__._scopeCount++;var r=t.applyElementStyle(this,this._styleProperties,this._scopeSelector,e&&e.style);return s||t.applyElementScopeSelector(this,this._scopeSelector,n,this._scopeCssViaAttr),r},serializeValueToAttribute:function(t,n,r){if(r=r||this,"class"===n&&!s){var i=r===this?this.domHost||this.dataHost:this;i&&(t=i._scopeElementClass(r,t))}r=this.shadyRoot&&this.shadyRoot._hasDistributed?Polymer.dom(r):r,e.call(this,t,n,r)},_scopeElementClass:function(e,t){return s||this._scopeCssViaAttr||(t=(t?t+" ":"")+a+" "+this.is+(e._scopeSelector?" "+l+" "+e._scopeSelector:"")),t},updateStyles:function(e){e&&this.mixin(this.customStyle,e),i?t.updateNativeStyleProperties(this,this.customStyle):(this.isAttached?this._needsStyleProperties()?this._updateStyleProperties():this._styleProperties=null:this.__stylePropertiesInvalid=!0,this._styleCache&&this._styleCache.clear(),this._updateRootStyles())},_updateRootStyles:function(e){e=e||this.root;for(var t,n=Polymer.dom(e)._query(function(e){return e.shadyRoot||e.shadowRoot}),r=0,s=n.length;r<s&&(t=n[r]);r++)t.updateStyles&&t.updateStyles()}}),Polymer.updateStyles=function(e){r.updateStyles(e),Polymer.Base._updateRootStyles(document)};var o=new Polymer.StyleCache;Polymer.customStyleCache=o;var a=n.SCOPE_NAME,l=t.XSCOPE_NAME}(),Polymer.Base._addFeature({_registerFeatures:function(){this._prepIs(),this._prepConstructor(),this._prepStyles()},_finishRegisterFeatures:function(){this._prepTemplate(),this._prepShimStyles(),this._prepAnnotations(),this._prepEffects(),this._prepBehaviors(),this._prepPropertyInfo(),this._prepBindings(),this._prepShady()},_prepBehavior:function(e){this._addPropertyEffects(e.properties),this._addComplexObserverEffects(e.observers),this._addHostAttributes(e.hostAttributes)},_initFeatures:function(){this._setupGestures(),this._setupConfigure(),this._setupStyleProperties(),this._setupDebouncers(),this._setupShady(),this._registerHost(),this._template&&(this._validateApplyShim(),this._poolContent(),this._beginHosting(),this._stampTemplate(),this._endHosting(),this._marshalAnnotationReferences()),this._marshalInstanceEffects(),this._marshalBehaviors(),this._marshalHostAttributes(),this._marshalAttributes(),this._tryReady()},_marshalBehavior:function(e){e.listeners&&this._listenListeners(e.listeners)}}),function(){var e,t=Polymer.StyleProperties,n=Polymer.StyleUtil,r=Polymer.CssParse,s=Polymer.StyleDefaults,i=Polymer.StyleTransformer,o=Polymer.ApplyShim,a=Polymer.Debounce,l=Polymer.Settings;Polymer({is:"custom-style",extends:"style",_template:null,properties:{include:String},ready:function(){this.__appliedElement=this.__appliedElement||this,this.__cssBuild=n.getCssBuildType(this),this.__appliedElement!==this&&(this.__appliedElement.__cssBuild=this.__cssBuild),this._tryApply()},attached:function(){this._tryApply()},_tryApply:function(){if(!this._appliesToDocument&&this.parentNode&&"dom-module"!==this.parentNode.localName){this._appliesToDocument=!0;var e=this.__appliedElement;if(l.useNativeCSSProperties||(this.__needsUpdateStyles=s.hasStyleProperties(),s.addStyle(e)),e.textContent||this.include)this._apply(!0);else{var t=this,n=new MutationObserver(function(){n.disconnect(),t._apply(!0)});n.observe(e,{childList:!0})}}},_updateStyles:function(){Polymer.updateStyles()},_apply:function(e){var t=this.__appliedElement;if(this.include&&(t.textContent=n.cssFromModules(this.include,!0)+t.textContent),t.textContent){var r=this.__cssBuild,s=n.isTargetedBuild(r);if(!l.useNativeCSSProperties||!s){var a=n.rulesForStyle(t);if(s||(n.forEachRule(a,function(e){i.documentRule(e)}),l.useNativeCSSProperties&&!r&&o.transform([t])),l.useNativeCSSProperties)t.textContent=n.toCssText(a);else{var c=this,h=function(){c._flushCustomProperties()};e?Polymer.RenderStatus.whenReady(h):h()}}}},_flushCustomProperties:function(){this.__needsUpdateStyles?(this.__needsUpdateStyles=!1,e=a(e,this._updateStyles)):this._applyCustomProperties()},_applyCustomProperties:function(){var e=this.__appliedElement;this._computeStyleProperties();var s=this._styleProperties,i=n.rulesForStyle(e);i&&(e.textContent=n.toCssText(i,function(e){var n=e.cssText=e.parsedCssText;e.propertyInfo&&e.propertyInfo.cssText&&(n=r.removeCustomPropAssignment(n),e.cssText=t.valueForProperties(n,s))}))}})}(),Polymer.Templatizer={properties:{__hideTemplateChildren__:{observer:"_showHideChildren"}},_instanceProps:Polymer.nob,_parentPropPrefix:"_parent_",templatize:function(e){if(this._templatized=e,e._content||(e._content=e.content),e._content._ctor)return this.ctor=e._content._ctor,void this._prepParentProperties(this.ctor.prototype,e);var t=Object.create(Polymer.Base);this._customPrepAnnotations(t,e),this._prepParentProperties(t,e),t._prepEffects(),this._customPrepEffects(t),t._prepBehaviors(),t._prepPropertyInfo(),t._prepBindings(),t._notifyPathUp=this._notifyPathUpImpl,t._scopeElementClass=this._scopeElementClassImpl,t.listen=this._listenImpl,t._showHideChildren=this._showHideChildrenImpl,t.__setPropertyOrig=this.__setProperty,t.__setProperty=this.__setPropertyImpl;var n=this._constructorImpl,r=function(e,t){n.call(this,e,t)};r.prototype=t,t.constructor=r,e._content._ctor=r,this.ctor=r},_getRootDataHost:function(){return this.dataHost&&this.dataHost._rootDataHost||this.dataHost},_showHideChildrenImpl:function(e){for(var t=this._children,n=0;n<t.length;n++){var r=t[n];Boolean(e)!=Boolean(r.__hideTemplateChildren__)&&(r.nodeType===Node.TEXT_NODE?e?(r.__polymerTextContent__=r.textContent,r.textContent=""):r.textContent=r.__polymerTextContent__:r.style&&(e?(r.__polymerDisplay__=r.style.display,r.style.display="none"):r.style.display=r.__polymerDisplay__)),r.__hideTemplateChildren__=e}},__setPropertyImpl:function(e,t,n,r){r&&r.__hideTemplateChildren__&&"textContent"==e&&(e="__polymerTextContent__"),this.__setPropertyOrig(e,t,n,r)},_debounceTemplate:function(e){Polymer.dom.addDebouncer(this.debounce("_debounceTemplate",e))},_flushTemplates:function(){Polymer.dom.flush()},_customPrepEffects:function(e){var t=e._parentProps;for(var n in t)e._addPropertyEffect(n,"function",this._createHostPropEffector(n));for(n in this._instanceProps)e._addPropertyEffect(n,"function",this._createInstancePropEffector(n))},_customPrepAnnotations:function(e,t){e._template=t;var n=t._content;if(!n._notes){var r=e._rootDataHost;r&&(Polymer.Annotations.prepElement=function(){r._prepElement()}),n._notes=Polymer.Annotations.parseAnnotations(t),Polymer.Annotations.prepElement=null,this._processAnnotations(n._notes)}e._notes=n._notes,e._parentProps=n._parentProps},_prepParentProperties:function(e,t){var n=this._parentProps=e._parentProps;if(this._forwardParentProp&&n){var r,s=e._parentPropProto;if(!s){for(r in this._instanceProps)delete n[r];s=e._parentPropProto=Object.create(null),t!=this&&(Polymer.Bind.prepareModel(s),Polymer.Base.prepareModelNotifyPath(s));for(r in n){var i=this._parentPropPrefix+r,o=[{kind:"function",effect:this._createForwardPropEffector(r),fn:Polymer.Bind._functionEffect},{kind:"notify",fn:Polymer.Bind._notifyEffect,effect:{event:Polymer.CaseMap.camelToDashCase(i)+"-changed"}}];Polymer.Bind._createAccessors(s,i,o)}}var a=this;t!=this&&(Polymer.Bind.prepareInstance(t),t._forwardParentProp=function(e,t){a._forwardParentProp(e,t)}),this._extendTemplate(t,s),t._pathEffector=function(e,t,n){return a._pathEffectorImpl(e,t,n)}}},_createForwardPropEffector:function(e){return function(t,n){this._forwardParentProp(e,n)}},_createHostPropEffector:function(e){var t=this._parentPropPrefix;return function(n,r){this.dataHost._templatized[t+e]=r}},_createInstancePropEffector:function(e){return function(t,n,r,s){s||this.dataHost._forwardInstanceProp(this,e,n)}},_extendTemplate:function(e,t){var n=Object.getOwnPropertyNames(t);t._propertySetter&&(e._propertySetter=t._propertySetter);for(var r,s=0;s<n.length&&(r=n[s]);s++){var i=e[r],o=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(e,r,o),void 0!==i&&e._propertySetter(r,i)}},_showHideChildren:function(e){},_forwardInstancePath:function(e,t,n){},_forwardInstanceProp:function(e,t,n){},_notifyPathUpImpl:function(e,t){var n=this.dataHost,r=Polymer.Path.root(e);n._forwardInstancePath.call(n,this,e,t),r in n._parentProps&&n._templatized._notifyPath(n._parentPropPrefix+e,t)},_pathEffectorImpl:function(e,t,n){if(this._forwardParentPath&&0===e.indexOf(this._parentPropPrefix)){var r=e.substring(this._parentPropPrefix.length),s=Polymer.Path.root(r);s in this._parentProps&&this._forwardParentPath(r,t)}Polymer.Base._pathEffector.call(this._templatized,e,t,n)},_constructorImpl:function(e,t){this._rootDataHost=t._getRootDataHost(),this._setupConfigure(e),this._registerHost(t),this._beginHosting(),this.root=this.instanceTemplate(this._template),this.root.__noContent=!this._notes._hasContent,this.root.__styleScoped=!0,this._endHosting(),this._marshalAnnotatedNodes(),this._marshalInstanceEffects(),this._marshalAnnotatedListeners();for(var n=[],r=this.root.firstChild;r;r=r.nextSibling)n.push(r),r._templateInstance=this;this._children=n,t.__hideTemplateChildren__&&this._showHideChildren(!0),this._tryReady()},_listenImpl:function(e,t,n){var r=this,s=this._rootDataHost,i=s._createEventHandler(e,t,n),o=function(e){e.model=r,i(e)};s._listen(e,t,o)},_scopeElementClassImpl:function(e,t){var n=this._rootDataHost;return n?n._scopeElementClass(e,t):t},stamp:function(e){if(e=e||{},this._parentProps){var t=this._templatized;for(var n in this._parentProps)void 0===e[n]&&(e[n]=t[this._parentPropPrefix+n])}return new this.ctor(e,this)},modelForElement:function(e){for(var t;e;)if(t=e._templateInstance){if(t.dataHost==this)return t;e=t.dataHost}else e=e.parentNode}},Polymer({is:"dom-template",extends:"template",_template:null,behaviors:[Polymer.Templatizer],ready:function(){this.templatize(this)}}),Polymer._collections=new WeakMap,Polymer.Collection=function(e){Polymer._collections.set(e,this),this.userArray=e,this.store=e.slice(),this.initMap()},Polymer.Collection.prototype={constructor:Polymer.Collection,initMap:function(){for(var e=this.omap=new WeakMap,t=this.pmap={},n=this.store,r=0;r<n.length;r++){var s=n[r];s&&"object"==typeof s?e.set(s,r):t[s]=r}},add:function(e){var t=this.store.push(e)-1;return e&&"object"==typeof e?this.omap.set(e,t):this.pmap[e]=t,"#"+t},removeKey:function(e){(e=this._parseKey(e))&&(this._removeFromMap(this.store[e]),delete this.store[e])},_removeFromMap:function(e){e&&"object"==typeof e?this.omap.delete(e):delete this.pmap[e]},remove:function(e){var t=this.getKey(e);return this.removeKey(t),t},getKey:function(e){var t;if(t=e&&"object"==typeof e?this.omap.get(e):this.pmap[e],void 0!=t)return"#"+t},getKeys:function(){return Object.keys(this.store).map(function(e){return"#"+e})},_parseKey:function(e){if(e&&"#"==e[0])return e.slice(1)},setItem:function(e,t){if(e=this._parseKey(e)){var n=this.store[e];n&&this._removeFromMap(n),t&&"object"==typeof t?this.omap.set(t,e):this.pmap[t]=e,this.store[e]=t}},getItem:function(e){if(e=this._parseKey(e))return this.store[e]},getItems:function(){var e=[],t=this.store;for(var n in t)e.push(t[n]);return e},_applySplices:function(e){for(var t,n,r={},s=0;s<e.length&&(n=e[s]);s++){n.addedKeys=[];for(var i=0;i<n.removed.length;i++)t=this.getKey(n.removed[i]),r[t]=r[t]?null:-1;for(i=0;i<n.addedCount;i++){var o=this.userArray[n.index+i];t=this.getKey(o),t=void 0===t?this.add(o):t,r[t]=r[t]?null:1,n.addedKeys.push(t)}}var a=[],l=[];for(t in r)r[t]<0&&(this.removeKey(t),a.push(t)),r[t]>0&&l.push(t);return[{removed:a,added:l}]}},Polymer.Collection.get=function(e){return Polymer._collections.get(e)||new Polymer.Collection(e)},Polymer.Collection.applySplices=function(e,t){var n=Polymer._collections.get(e);return n?n._applySplices(t):null},Polymer({is:"dom-repeat",extends:"template",_template:null,properties:{items:{type:Array},as:{type:String,value:"item"},indexAs:{type:String,value:"index"},sort:{type:Function,observer:"_sortChanged"},filter:{type:Function,observer:"_filterChanged"},observe:{type:String,observer:"_observeChanged"},delay:Number,renderedItemCount:{type:Number,notify:!0,readOnly:!0},initialCount:{type:Number,observer:"_initializeChunking"},targetFramerate:{type:Number,value:20},_targetFrameTime:{type:Number,computed:"_computeFrameTime(targetFramerate)"}},behaviors:[Polymer.Templatizer],observers:["_itemsChanged(items.*)"],created:function(){this._instances=[],this._pool=[],this._limit=1/0;var e=this;this._boundRenderChunk=function(){e._renderChunk()}},detached:function(){this.__isDetached=!0;for(var e=0;e<this._instances.length;e++)this._detachInstance(e)},attached:function(){if(this.__isDetached){this.__isDetached=!1;for(var e=Polymer.dom(Polymer.dom(this).parentNode),t=0;t<this._instances.length;t++)this._attachInstance(t,e)}},ready:function(){this._instanceProps={__key__:!0},this._instanceProps[this.as]=!0,this._instanceProps[this.indexAs]=!0,this.ctor||this.templatize(this)},_sortChanged:function(e){var t=this._getRootDataHost();this._sortFn=e&&("function"==typeof e?e:function(){return t[e].apply(t,arguments)}),this._needFullRefresh=!0,this.items&&this._debounceTemplate(this._render)},_filterChanged:function(e){var t=this._getRootDataHost();this._filterFn=e&&("function"==typeof e?e:function(){return t[e].apply(t,arguments)}),this._needFullRefresh=!0,this.items&&this._debounceTemplate(this._render)},_computeFrameTime:function(e){return Math.ceil(1e3/e)},_initializeChunking:function(){this.initialCount&&(this._limit=this.initialCount,this._chunkCount=this.initialCount,this._lastChunkTime=performance.now())},_tryRenderChunk:function(){this.items&&this._limit<this.items.length&&this.debounce("renderChunk",this._requestRenderChunk)},_requestRenderChunk:function(){requestAnimationFrame(this._boundRenderChunk)},_renderChunk:function(){var e=performance.now(),t=this._targetFrameTime/(e-this._lastChunkTime);this._chunkCount=Math.round(this._chunkCount*t)||1,this._limit+=this._chunkCount,this._lastChunkTime=e,this._debounceTemplate(this._render)},_observeChanged:function(){this._observePaths=this.observe&&this.observe.replace(".*",".").split(" ")},_itemsChanged:function(e){if("items"==e.path)Array.isArray(this.items)?this.collection=Polymer.Collection.get(this.items):this.items?this._error(this._logf("dom-repeat","expected array for `items`, found",this.items)):this.collection=null,this._keySplices=[],this._indexSplices=[],this._needFullRefresh=!0,this._initializeChunking(),this._debounceTemplate(this._render);else if("items.splices"==e.path)this._keySplices=this._keySplices.concat(e.value.keySplices),this._indexSplices=this._indexSplices.concat(e.value.indexSplices),this._debounceTemplate(this._render);else{var t=e.path.slice(6);this._forwardItemPath(t,e.value),this._checkObservedPaths(t)}},_checkObservedPaths:function(e){if(this._observePaths){e=e.substring(e.indexOf(".")+1);for(var t=this._observePaths,n=0;n<t.length;n++)if(0===e.indexOf(t[n]))return this._needFullRefresh=!0,void(this.delay?this.debounce("render",this._render,this.delay):this._debounceTemplate(this._render))}},render:function(){this._needFullRefresh=!0,this._debounceTemplate(this._render),this._flushTemplates()},_render:function(){this._needFullRefresh?(this._applyFullRefresh(),this._needFullRefresh=!1):this._keySplices.length&&(this._sortFn?this._applySplicesUserSort(this._keySplices):this._filterFn?this._applyFullRefresh():this._applySplicesArrayOrder(this._indexSplices)),this._keySplices=[],this._indexSplices=[];for(var e=this._keyToInstIdx={},t=this._instances.length-1;t>=0;t--){var n=this._instances[t];n.isPlaceholder&&t<this._limit?n=this._insertInstance(t,n.__key__):!n.isPlaceholder&&t>=this._limit&&(n=this._downgradeInstance(t,n.__key__)),e[n.__key__]=t,n.isPlaceholder||n.__setProperty(this.indexAs,t,!0)}this._pool.length=0,this._setRenderedItemCount(this._instances.length),this.fire("dom-change"),this._tryRenderChunk()},_applyFullRefresh:function(){var e,t=this.collection;if(this._sortFn)e=t?t.getKeys():[];else{e=[];var n=this.items;if(n)for(var r=0;r<n.length;r++)e.push(t.getKey(n[r]))}var s=this;for(this._filterFn&&(e=e.filter(function(e){return s._filterFn(t.getItem(e))})),this._sortFn&&e.sort(function(e,n){return s._sortFn(t.getItem(e),t.getItem(n))}),r=0;r<e.length;r++){var i=e[r],o=this._instances[r];o?(o.__key__=i,!o.isPlaceholder&&r<this._limit&&o.__setProperty(this.as,t.getItem(i),!0)):r<this._limit?this._insertInstance(r,i):this._insertPlaceholder(r,i)}for(var a=this._instances.length-1;a>=r;a--)this._detachAndRemoveInstance(a)},_numericSort:function(e,t){return e-t},_applySplicesUserSort:function(e){for(var t,n,r=this.collection,s={},i=0;i<e.length&&(n=e[i]);i++){for(var o=0;o<n.removed.length;o++)t=n.removed[o],s[t]=s[t]?null:-1;for(o=0;o<n.added.length;o++)t=n.added[o],s[t]=s[t]?null:1}var a=[],l=[];for(t in s)s[t]===-1&&a.push(this._keyToInstIdx[t]),1===s[t]&&l.push(t);if(a.length)for(a.sort(this._numericSort),i=a.length-1;i>=0;i--){var c=a[i];void 0!==c&&this._detachAndRemoveInstance(c)}var h=this;if(l.length){this._filterFn&&(l=l.filter(function(e){return h._filterFn(r.getItem(e))})),l.sort(function(e,t){return h._sortFn(r.getItem(e),r.getItem(t))});var u=0;for(i=0;i<l.length;i++)u=this._insertRowUserSort(u,l[i])}},_insertRowUserSort:function(e,t){for(var n=this.collection,r=n.getItem(t),s=this._instances.length-1,i=-1;e<=s;){var o=e+s>>1,a=this._instances[o].__key__,l=this._sortFn(n.getItem(a),r);if(l<0)e=o+1;else{if(!(l>0)){i=o;break}s=o-1}}return i<0&&(i=s+1),this._insertPlaceholder(i,t),i},_applySplicesArrayOrder:function(e){for(var t,n=0;n<e.length&&(t=e[n]);n++){for(var r=0;r<t.removed.length;r++)this._detachAndRemoveInstance(t.index);for(r=0;r<t.addedKeys.length;r++)this._insertPlaceholder(t.index+r,t.addedKeys[r])}},_detachInstance:function(e){var t=this._instances[e];if(!t.isPlaceholder){for(var n=0;n<t._children.length;n++){var r=t._children[n];Polymer.dom(t.root).appendChild(r)}return t}},_attachInstance:function(e,t){var n=this._instances[e];n.isPlaceholder||t.insertBefore(n.root,this)},_detachAndRemoveInstance:function(e){var t=this._detachInstance(e);t&&this._pool.push(t),this._instances.splice(e,1)},_insertPlaceholder:function(e,t){this._instances.splice(e,0,{isPlaceholder:!0,__key__:t})},_stampInstance:function(e,t){var n={__key__:t};return n[this.as]=this.collection.getItem(t),n[this.indexAs]=e,this.stamp(n)},_insertInstance:function(e,t){var n=this._pool.pop();n?(n.__setProperty(this.as,this.collection.getItem(t),!0),n.__setProperty("__key__",t,!0)):n=this._stampInstance(e,t);var r=this._instances[e+1],s=r&&!r.isPlaceholder?r._children[0]:this,i=Polymer.dom(this).parentNode;return Polymer.dom(i).insertBefore(n.root,s),this._instances[e]=n,n},_downgradeInstance:function(e,t){var n=this._detachInstance(e);return n&&this._pool.push(n),n={isPlaceholder:!0,__key__:t},this._instances[e]=n,n},_showHideChildren:function(e){for(var t=0;t<this._instances.length;t++)this._instances[t].isPlaceholder||this._instances[t]._showHideChildren(e)},_forwardInstanceProp:function(e,t,n){if(t==this.as){var r;r=this._sortFn||this._filterFn?this.items.indexOf(this.collection.getItem(e.__key__)):e[this.indexAs],this.set("items."+r,n)}},_forwardInstancePath:function(e,t,n){0===t.indexOf(this.as+".")&&this._notifyPath("items."+e.__key__+"."+t.slice(this.as.length+1),n)},_forwardParentProp:function(e,t){for(var n,r=this._instances,s=0;s<r.length&&(n=r[s]);s++)n.isPlaceholder||n.__setProperty(e,t,!0)},_forwardParentPath:function(e,t){for(var n,r=this._instances,s=0;s<r.length&&(n=r[s]);s++)n.isPlaceholder||n._notifyPath(e,t,!0)},_forwardItemPath:function(e,t){if(this._keyToInstIdx){var n=e.indexOf("."),r=e.substring(0,n<0?e.length:n),s=this._keyToInstIdx[r],i=this._instances[s];i&&!i.isPlaceholder&&(n>=0?(e=this.as+"."+e.substring(n+1),i._notifyPath(e,t,!0)):i.__setProperty(this.as,t,!0))}},itemForElement:function(e){var t=this.modelForElement(e);return t&&t[this.as]},keyForElement:function(e){var t=this.modelForElement(e);return t&&t.__key__},indexForElement:function(e){var t=this.modelForElement(e);return t&&t[this.indexAs]}}),Polymer({is:"array-selector",_template:null,properties:{items:{type:Array,observer:"clearSelection"},multi:{type:Boolean,value:!1,observer:"clearSelection"},selected:{type:Object,notify:!0},selectedItem:{type:Object,notify:!0},toggle:{type:Boolean,value:!1}},clearSelection:function(){if(Array.isArray(this.selected))for(var e=0;e<this.selected.length;e++)this.unlinkPaths("selected."+e);else this.unlinkPaths("selected"),this.unlinkPaths("selectedItem");this.multi?this.selected&&!this.selected.length||(this.selected=[],this._selectedColl=Polymer.Collection.get(this.selected)):(this.selected=null,this._selectedColl=null),this.selectedItem=null},isSelected:function(e){return this.multi?void 0!==this._selectedColl.getKey(e):this.selected==e},deselect:function(e){if(this.multi){if(this.isSelected(e)){var t=this._selectedColl.getKey(e);this.arrayDelete("selected",e),this.unlinkPaths("selected."+t)}}else this.selected=null,this.selectedItem=null,this.unlinkPaths("selected"),this.unlinkPaths("selectedItem")},select:function(e){var t=Polymer.Collection.get(this.items),n=t.getKey(e);if(this.multi)if(this.isSelected(e))this.toggle&&this.deselect(e);else{this.push("selected",e);var r=this._selectedColl.getKey(e);this.linkPaths("selected."+r,"items."+n)}else this.toggle&&e==this.selected?this.deselect():(this.selected=e,this.selectedItem=e,this.linkPaths("selected","items."+n),this.linkPaths("selectedItem","items."+n))}}),Polymer({is:"dom-if",extends:"template",_template:null,properties:{if:{type:Boolean,value:!1,observer:"_queueRender"},restamp:{type:Boolean,value:!1,observer:"_queueRender"}},behaviors:[Polymer.Templatizer],_queueRender:function(){this._debounceTemplate(this._render)},detached:function(){this.parentNode&&(this.parentNode.nodeType!=Node.DOCUMENT_FRAGMENT_NODE||Polymer.Settings.hasShadow&&this.parentNode instanceof ShadowRoot)||this._teardownInstance()},attached:function(){this.if&&this.ctor&&this.async(this._ensureInstance)},render:function(){this._flushTemplates()},_render:function(){this.if?(this.ctor||this.templatize(this),this._ensureInstance(),this._showHideChildren()):this.restamp&&this._teardownInstance(),!this.restamp&&this._instance&&this._showHideChildren(),this.if!=this._lastIf&&(this.fire("dom-change"),this._lastIf=this.if)},_ensureInstance:function(){var e=Polymer.dom(this).parentNode;if(e){var t=Polymer.dom(e);if(this._instance){var n=this._instance._children;if(n&&n.length){var r=Polymer.dom(this).previousSibling;if(r!==n[n.length-1])for(var s,i=0;i<n.length&&(s=n[i]);i++)t.insertBefore(s,this)}}else{this._instance=this.stamp();var o=this._instance.root;t.insertBefore(o,this)}}},_teardownInstance:function(){if(this._instance){var e=this._instance._children;if(e&&e.length)for(var t,n=Polymer.dom(Polymer.dom(e[0]).parentNode),r=0;r<e.length&&(t=e[r]);r++)n.removeChild(t);this._instance=null}},_showHideChildren:function(){var e=this.__hideTemplateChildren__||!this.if;this._instance&&this._instance._showHideChildren(e)},_forwardParentProp:function(e,t){this._instance&&this._instance.__setProperty(e,t,!0)},_forwardParentPath:function(e,t){this._instance&&this._instance._notifyPath(e,t,!0)}}),Polymer({is:"dom-bind",extends:"template",_template:null,created:function(){var e=this;Polymer.RenderStatus.whenReady(function(){"loading"==document.readyState?document.addEventListener("DOMContentLoaded",function(){e._markImportsReady()}):e._markImportsReady()})},_ensureReady:function(){this._readied||this._readySelf()},_markImportsReady:function(){this._importsReady=!0,this._ensureReady()},_registerFeatures:function(){this._prepConstructor()},_insertChildren:function(){var e=Polymer.dom(Polymer.dom(this).parentNode);e.insertBefore(this.root,this)},_removeChildren:function(){if(this._children)for(var e=0;e<this._children.length;e++)this.root.appendChild(this._children[e])},_initFeatures:function(){},_scopeElementClass:function(e,t){return this.dataHost?this.dataHost._scopeElementClass(e,t):t},_configureInstanceProperties:function(){},_prepConfigure:function(){var e={};for(var t in this._propertyEffects)e[t]=this[t];var n=this._setupConfigure;this._setupConfigure=function(){n.call(this,e)}},attached:function(){this._importsReady&&this.render()},detached:function(){this._removeChildren()},render:function(){this._ensureReady(),this._children||(this._template=this,this._prepAnnotations(),this._prepEffects(),this._prepBehaviors(),this._prepConfigure(),this._prepBindings(),this._prepPropertyInfo(),Polymer.Base._initFeatures.call(this),this._children=Polymer.TreeApi.arrayCopyChildNodes(this.root)),this._insertChildren(),this.fire("dom-change")}})</script><style>[hidden]{display:none!important}</style><style is="custom-style">:root{--layout:{display:-ms-flexbox;display:-webkit-flex;display:flex};--layout-inline:{display:-ms-inline-flexbox;display:-webkit-inline-flex;display:inline-flex};--layout-horizontal:{@apply(--layout);-ms-flex-direction:row;-webkit-flex-direction:row;flex-direction:row};--layout-horizontal-reverse:{@apply(--layout);-ms-flex-direction:row-reverse;-webkit-flex-direction:row-reverse;flex-direction:row-reverse};--layout-vertical:{@apply(--layout);-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column};--layout-vertical-reverse:{@apply(--layout);-ms-flex-direction:column-reverse;-webkit-flex-direction:column-reverse;flex-direction:column-reverse};--layout-wrap:{-ms-flex-wrap:wrap;-webkit-flex-wrap:wrap;flex-wrap:wrap};--layout-wrap-reverse:{-ms-flex-wrap:wrap-reverse;-webkit-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse};--layout-flex-auto:{-ms-flex:1 1 auto;-webkit-flex:1 1 auto;flex:1 1 auto};--layout-flex-none:{-ms-flex:none;-webkit-flex:none;flex:none};--layout-flex:{-ms-flex:1 1 0px;-webkit-flex:1;flex:1;-webkit-flex-basis:0px;flex-basis:0px};--layout-flex-2:{-ms-flex:2;-webkit-flex:2;flex:2};--layout-flex-3:{-ms-flex:3;-webkit-flex:3;flex:3};--layout-flex-4:{-ms-flex:4;-webkit-flex:4;flex:4};--layout-flex-5:{-ms-flex:5;-webkit-flex:5;flex:5};--layout-flex-6:{-ms-flex:6;-webkit-flex:6;flex:6};--layout-flex-7:{-ms-flex:7;-webkit-flex:7;flex:7};--layout-flex-8:{-ms-flex:8;-webkit-flex:8;flex:8};--layout-flex-9:{-ms-flex:9;-webkit-flex:9;flex:9};--layout-flex-10:{-ms-flex:10;-webkit-flex:10;flex:10};--layout-flex-11:{-ms-flex:11;-webkit-flex:11;flex:11};--layout-flex-12:{-ms-flex:12;-webkit-flex:12;flex:12};--layout-start:{-ms-flex-align:start;-webkit-align-items:flex-start;align-items:flex-start};--layout-center:{-ms-flex-align:center;-webkit-align-items:center;align-items:center};--layout-end:{-ms-flex-align:end;-webkit-align-items:flex-end;align-items:flex-end};--layout-baseline:{-ms-flex-align:baseline;-webkit-align-items:baseline;align-items:baseline};--layout-start-justified:{-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start};--layout-center-justified:{-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center};--layout-end-justified:{-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end};--layout-around-justified:{-ms-flex-pack:distribute;-webkit-justify-content:space-around;justify-content:space-around};--layout-justified:{-ms-flex-pack:justify;-webkit-justify-content:space-between;justify-content:space-between};--layout-center-center:{@apply(--layout-center);@apply(--layout-center-justified)};--layout-self-start:{-ms-align-self:flex-start;-webkit-align-self:flex-start;align-self:flex-start};--layout-self-center:{-ms-align-self:center;-webkit-align-self:center;align-self:center};--layout-self-end:{-ms-align-self:flex-end;-webkit-align-self:flex-end;align-self:flex-end};--layout-self-stretch:{-ms-align-self:stretch;-webkit-align-self:stretch;align-self:stretch};--layout-self-baseline:{-ms-align-self:baseline;-webkit-align-self:baseline;align-self:baseline};--layout-start-aligned:{-ms-flex-line-pack:start;-ms-align-content:flex-start;-webkit-align-content:flex-start;align-content:flex-start};--layout-end-aligned:{-ms-flex-line-pack:end;-ms-align-content:flex-end;-webkit-align-content:flex-end;align-content:flex-end};--layout-center-aligned:{-ms-flex-line-pack:center;-ms-align-content:center;-webkit-align-content:center;align-content:center};--layout-between-aligned:{-ms-flex-line-pack:justify;-ms-align-content:space-between;-webkit-align-content:space-between;align-content:space-between};--layout-around-aligned:{-ms-flex-line-pack:distribute;-ms-align-content:space-around;-webkit-align-content:space-around;align-content:space-around};--layout-block:{display:block};--layout-invisible:{visibility:hidden!important};--layout-relative:{position:relative};--layout-fit:{position:absolute;top:0;right:0;bottom:0;left:0};--layout-scroll:{-webkit-overflow-scrolling:touch;overflow:auto};--layout-fullbleed:{margin:0;height:100vh};--layout-fixed-top:{position:fixed;top:0;left:0;right:0};--layout-fixed-right:{position:fixed;top:0;right:0;bottom:0};--layout-fixed-bottom:{position:fixed;right:0;bottom:0;left:0};--layout-fixed-left:{position:fixed;top:0;bottom:0;left:0};}</style><script>Polymer.PaperSpinnerBehavior={listeners:{animationend:"__reset",webkitAnimationEnd:"__reset"},properties:{active:{type:Boolean,value:!1,reflectToAttribute:!0,observer:"__activeChanged"},alt:{type:String,value:"loading",observer:"__altChanged"},__coolingDown:{type:Boolean,value:!1}},__computeContainerClasses:function(e,t){return[e||t?"active":"",t?"cooldown":""].join(" ")},__activeChanged:function(e,t){this.__setAriaHidden(!e),this.__coolingDown=!e&&t},__altChanged:function(e){e===this.getPropertyInfo("alt").value?this.alt=this.getAttribute("aria-label")||e:(this.__setAriaHidden(""===e),this.setAttribute("aria-label",e))},__setAriaHidden:function(e){var t="aria-hidden";e?this.setAttribute(t,"true"):this.removeAttribute(t)},__reset:function(){this.active=!1,this.__coolingDown=!1}}</script><dom-module id="paper-spinner-styles" assetpath="../bower_components/paper-spinner/"><template><style>:host{display:inline-block;position:relative;width:28px;height:28px;--paper-spinner-container-rotation-duration:1568ms;--paper-spinner-expand-contract-duration:1333ms;--paper-spinner-full-cycle-duration:5332ms;--paper-spinner-cooldown-duration:400ms}#spinnerContainer{width:100%;height:100%;direction:ltr}#spinnerContainer.active{-webkit-animation:container-rotate var(--paper-spinner-container-rotation-duration) linear infinite;animation:container-rotate var(--paper-spinner-container-rotation-duration) linear infinite}@-webkit-keyframes container-rotate{to{-webkit-transform:rotate(360deg)}}@keyframes container-rotate{to{transform:rotate(360deg)}}.spinner-layer{position:absolute;width:100%;height:100%;opacity:0;white-space:nowrap;border-color:var(--paper-spinner-color,--google-blue-500)}.layer-1{border-color:var(--paper-spinner-layer-1-color,--google-blue-500)}.layer-2{border-color:var(--paper-spinner-layer-2-color,--google-red-500)}.layer-3{border-color:var(--paper-spinner-layer-3-color,--google-yellow-500)}.layer-4{border-color:var(--paper-spinner-layer-4-color,--google-green-500)}.active .spinner-layer{-webkit-animation-name:fill-unfill-rotate;-webkit-animation-duration:var(--paper-spinner-full-cycle-duration);-webkit-animation-timing-function:cubic-bezier(.4,0,.2,1);-webkit-animation-iteration-count:infinite;animation-name:fill-unfill-rotate;animation-duration:var(--paper-spinner-full-cycle-duration);animation-timing-function:cubic-bezier(.4,0,.2,1);animation-iteration-count:infinite;opacity:1}.active .spinner-layer.layer-1{-webkit-animation-name:fill-unfill-rotate,layer-1-fade-in-out;animation-name:fill-unfill-rotate,layer-1-fade-in-out}.active .spinner-layer.layer-2{-webkit-animation-name:fill-unfill-rotate,layer-2-fade-in-out;animation-name:fill-unfill-rotate,layer-2-fade-in-out}.active .spinner-layer.layer-3{-webkit-animation-name:fill-unfill-rotate,layer-3-fade-in-out;animation-name:fill-unfill-rotate,layer-3-fade-in-out}.active .spinner-layer.layer-4{-webkit-animation-name:fill-unfill-rotate,layer-4-fade-in-out;animation-name:fill-unfill-rotate,layer-4-fade-in-out}@-webkit-keyframes fill-unfill-rotate{12.5%{-webkit-transform:rotate(135deg)}25%{-webkit-transform:rotate(270deg)}37.5%{-webkit-transform:rotate(405deg)}50%{-webkit-transform:rotate(540deg)}62.5%{-webkit-transform:rotate(675deg)}75%{-webkit-transform:rotate(810deg)}87.5%{-webkit-transform:rotate(945deg)}to{-webkit-transform:rotate(1080deg)}}@keyframes fill-unfill-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}to{transform:rotate(1080deg)}}@-webkit-keyframes layer-1-fade-in-out{0%{opacity:1}25%{opacity:1}26%{opacity:0}89%{opacity:0}90%{opacity:1}to{opacity:1}}@keyframes layer-1-fade-in-out{0%{opacity:1}25%{opacity:1}26%{opacity:0}89%{opacity:0}90%{opacity:1}to{opacity:1}}@-webkit-keyframes layer-2-fade-in-out{0%{opacity:0}15%{opacity:0}25%{opacity:1}50%{opacity:1}51%{opacity:0}to{opacity:0}}@keyframes layer-2-fade-in-out{0%{opacity:0}15%{opacity:0}25%{opacity:1}50%{opacity:1}51%{opacity:0}to{opacity:0}}@-webkit-keyframes layer-3-fade-in-out{0%{opacity:0}40%{opacity:0}50%{opacity:1}75%{opacity:1}76%{opacity:0}to{opacity:0}}@keyframes layer-3-fade-in-out{0%{opacity:0}40%{opacity:0}50%{opacity:1}75%{opacity:1}76%{opacity:0}to{opacity:0}}@-webkit-keyframes layer-4-fade-in-out{0%{opacity:0}65%{opacity:0}75%{opacity:1}90%{opacity:1}to{opacity:0}}@keyframes layer-4-fade-in-out{0%{opacity:0}65%{opacity:0}75%{opacity:1}90%{opacity:1}to{opacity:0}}.circle-clipper{display:inline-block;position:relative;width:50%;height:100%;overflow:hidden;border-color:inherit}.spinner-layer::after{left:45%;width:10%;border-top-style:solid}.circle-clipper::after,.spinner-layer::after{content:'';box-sizing:border-box;position:absolute;top:0;border-width:var(--paper-spinner-stroke-width,3px);border-color:inherit;border-radius:50%}.circle-clipper::after{bottom:0;width:200%;border-style:solid;border-bottom-color:transparent!important}.circle-clipper.left::after{left:0;border-right-color:transparent!important;-webkit-transform:rotate(129deg);transform:rotate(129deg)}.circle-clipper.right::after{left:-100%;border-left-color:transparent!important;-webkit-transform:rotate(-129deg);transform:rotate(-129deg)}.active .circle-clipper::after,.active .gap-patch::after{-webkit-animation-duration:var(--paper-spinner-expand-contract-duration);-webkit-animation-timing-function:cubic-bezier(.4,0,.2,1);-webkit-animation-iteration-count:infinite;animation-duration:var(--paper-spinner-expand-contract-duration);animation-timing-function:cubic-bezier(.4,0,.2,1);animation-iteration-count:infinite}.active .circle-clipper.left::after{-webkit-animation-name:left-spin;animation-name:left-spin}.active .circle-clipper.right::after{-webkit-animation-name:right-spin;animation-name:right-spin}@-webkit-keyframes left-spin{0%{-webkit-transform:rotate(130deg)}50%{-webkit-transform:rotate(-5deg)}to{-webkit-transform:rotate(130deg)}}@keyframes left-spin{0%{transform:rotate(130deg)}50%{transform:rotate(-5deg)}to{transform:rotate(130deg)}}@-webkit-keyframes right-spin{0%{-webkit-transform:rotate(-130deg)}50%{-webkit-transform:rotate(5deg)}to{-webkit-transform:rotate(-130deg)}}@keyframes right-spin{0%{transform:rotate(-130deg)}50%{transform:rotate(5deg)}to{transform:rotate(-130deg)}}#spinnerContainer.cooldown{-webkit-animation:container-rotate var(--paper-spinner-container-rotation-duration) linear infinite,fade-out var(--paper-spinner-cooldown-duration) cubic-bezier(.4,0,.2,1);animation:container-rotate var(--paper-spinner-container-rotation-duration) linear infinite,fade-out var(--paper-spinner-cooldown-duration) cubic-bezier(.4,0,.2,1)}@-webkit-keyframes fade-out{0%{opacity:1}to{opacity:0}}@keyframes fade-out{0%{opacity:1}to{opacity:0}}</style></template></dom-module><dom-module id="paper-spinner" assetpath="../bower_components/paper-spinner/"><template strip-whitespace=""><style include="paper-spinner-styles"></style><div id="spinnerContainer" class-name="[[__computeContainerClasses(active, __coolingDown)]]"><div class="spinner-layer layer-1"><div class="circle-clipper left"></div><div class="circle-clipper right"></div></div><div class="spinner-layer layer-2"><div class="circle-clipper left"></div><div class="circle-clipper right"></div></div><div class="spinner-layer layer-3"><div class="circle-clipper left"></div><div class="circle-clipper right"></div></div><div class="spinner-layer layer-4"><div class="circle-clipper left"></div><div class="circle-clipper right"></div></div></div></template><script>Polymer({is:"paper-spinner",behaviors:[Polymer.PaperSpinnerBehavior]})</script></dom-module><style>@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-Thin.ttf) format("truetype");font-weight:100;font-style:normal}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-ThinItalic.ttf) format("truetype");font-weight:100;font-style:italic}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-Light.ttf) format("truetype");font-weight:300;font-style:normal}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-LightItalic.ttf) format("truetype");font-weight:300;font-style:italic}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-Italic.ttf) format("truetype");font-weight:400;font-style:italic}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-Medium.ttf) format("truetype");font-weight:500;font-style:normal}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-MediumItalic.ttf) format("truetype");font-weight:500;font-style:italic}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-BoldItalic.ttf) format("truetype");font-weight:700;font-style:italic}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-Black.ttf) format("truetype");font-weight:900;font-style:normal}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-BlackItalic.ttf) format("truetype");font-weight:900;font-style:italic}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-Thin.ttf) format("truetype");font-weight:100;font-style:normal}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-ThinItalic.ttf) format("truetype");font-weight:100;font-style:italic}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-Light.ttf) format("truetype");font-weight:300;font-style:normal}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-LightItalic.ttf) format("truetype");font-weight:300;font-style:italic}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-Italic.ttf) format("truetype");font-weight:400;font-style:italic}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-Medium.ttf) format("truetype");font-weight:500;font-style:normal}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-MediumItalic.ttf) format("truetype");font-weight:500;font-style:italic}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-BoldItalic.ttf) format("truetype");font-weight:700;font-style:italic}</style><style is="custom-style">:root{--paper-font-common-base:{font-family:Roboto,Noto,sans-serif;-webkit-font-smoothing:antialiased};--paper-font-common-code:{font-family:'Roboto Mono',Consolas,Menlo,monospace;-webkit-font-smoothing:antialiased};--paper-font-common-expensive-kerning:{text-rendering:optimizeLegibility};--paper-font-common-nowrap:{white-space:nowrap;overflow:hidden;text-overflow:ellipsis};--paper-font-display4:{@apply(--paper-font-common-base);@apply(--paper-font-common-nowrap);font-size:112px;font-weight:300;letter-spacing:-.044em;line-height:120px};--paper-font-display3:{@apply(--paper-font-common-base);@apply(--paper-font-common-nowrap);font-size:56px;font-weight:400;letter-spacing:-.026em;line-height:60px};--paper-font-display2:{@apply(--paper-font-common-base);font-size:45px;font-weight:400;letter-spacing:-.018em;line-height:48px};--paper-font-display1:{@apply(--paper-font-common-base);font-size:34px;font-weight:400;letter-spacing:-.01em;line-height:40px};--paper-font-headline:{@apply(--paper-font-common-base);font-size:24px;font-weight:400;letter-spacing:-.012em;line-height:32px};--paper-font-title:{@apply(--paper-font-common-base);@apply(--paper-font-common-nowrap);font-size:20px;font-weight:500;line-height:28px};--paper-font-subhead:{@apply(--paper-font-common-base);font-size:16px;font-weight:400;line-height:24px};--paper-font-body2:{@apply(--paper-font-common-base);font-size:14px;font-weight:500;line-height:24px};--paper-font-body1:{@apply(--paper-font-common-base);font-size:14px;font-weight:400;line-height:20px};--paper-font-caption:{@apply(--paper-font-common-base);@apply(--paper-font-common-nowrap);font-size:12px;font-weight:400;letter-spacing:0.011em;line-height:20px};--paper-font-menu:{@apply(--paper-font-common-base);@apply(--paper-font-common-nowrap);font-size:13px;font-weight:500;line-height:24px};--paper-font-button:{@apply(--paper-font-common-base);@apply(--paper-font-common-nowrap);font-size:14px;font-weight:500;letter-spacing:0.018em;line-height:24px;text-transform:uppercase};--paper-font-code2:{@apply(--paper-font-common-code);font-size:14px;font-weight:700;line-height:20px};--paper-font-code1:{@apply(--paper-font-common-code);font-size:14px;font-weight:500;line-height:20px};}</style><dom-module id="iron-flex" assetpath="../bower_components/iron-flex-layout/"><template><style>.layout.horizontal,.layout.vertical{display:-ms-flexbox;display:-webkit-flex;display:flex}.layout.inline{display:-ms-inline-flexbox;display:-webkit-inline-flex;display:inline-flex}.layout.horizontal{-ms-flex-direction:row;-webkit-flex-direction:row;flex-direction:row}.layout.vertical{-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column}.layout.wrap{-ms-flex-wrap:wrap;-webkit-flex-wrap:wrap;flex-wrap:wrap}.layout.center,.layout.center-center{-ms-flex-align:center;-webkit-align-items:center;align-items:center}.layout.center-center,.layout.center-justified{-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center}.flex{-ms-flex:1 1 0px;-webkit-flex:1;flex:1;-webkit-flex-basis:0px;flex-basis:0px}.flex-auto{-ms-flex:1 1 auto;-webkit-flex:1 1 auto;flex:1 1 auto}.flex-none{-ms-flex:none;-webkit-flex:none;flex:none}</style></template></dom-module><dom-module id="iron-flex-reverse" assetpath="../bower_components/iron-flex-layout/"><template><style>.layout.horizontal-reverse,.layout.vertical-reverse{display:-ms-flexbox;display:-webkit-flex;display:flex}.layout.horizontal-reverse{-ms-flex-direction:row-reverse;-webkit-flex-direction:row-reverse;flex-direction:row-reverse}.layout.vertical-reverse{-ms-flex-direction:column-reverse;-webkit-flex-direction:column-reverse;flex-direction:column-reverse}.layout.wrap-reverse{-ms-flex-wrap:wrap-reverse;-webkit-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse}</style></template></dom-module><dom-module id="iron-flex-alignment" assetpath="../bower_components/iron-flex-layout/"><template><style>.layout.start{-ms-flex-align:start;-webkit-align-items:flex-start;align-items:flex-start}.layout.center,.layout.center-center{-ms-flex-align:center;-webkit-align-items:center;align-items:center}.layout.end{-ms-flex-align:end;-webkit-align-items:flex-end;align-items:flex-end}.layout.baseline{-ms-flex-align:baseline;-webkit-align-items:baseline;align-items:baseline}.layout.start-justified{-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start}.layout.center-center,.layout.center-justified{-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center}.layout.end-justified{-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end}.layout.around-justified{-ms-flex-pack:distribute;-webkit-justify-content:space-around;justify-content:space-around}.layout.justified{-ms-flex-pack:justify;-webkit-justify-content:space-between;justify-content:space-between}.self-start{-ms-align-self:flex-start;-webkit-align-self:flex-start;align-self:flex-start}.self-center{-ms-align-self:center;-webkit-align-self:center;align-self:center}.self-end{-ms-align-self:flex-end;-webkit-align-self:flex-end;align-self:flex-end}.self-stretch{-ms-align-self:stretch;-webkit-align-self:stretch;align-self:stretch}.self-baseline{-ms-align-self:baseline;-webkit-align-self:baseline;align-self:baseline}; .layout.start-aligned{-ms-flex-line-pack:start;-ms-align-content:flex-start;-webkit-align-content:flex-start;align-content:flex-start}.layout.end-aligned{-ms-flex-line-pack:end;-ms-align-content:flex-end;-webkit-align-content:flex-end;align-content:flex-end}.layout.center-aligned{-ms-flex-line-pack:center;-ms-align-content:center;-webkit-align-content:center;align-content:center}.layout.between-aligned{-ms-flex-line-pack:justify;-ms-align-content:space-between;-webkit-align-content:space-between;align-content:space-between}.layout.around-aligned{-ms-flex-line-pack:distribute;-ms-align-content:space-around;-webkit-align-content:space-around;align-content:space-around}</style></template></dom-module><dom-module id="iron-flex-factors" assetpath="../bower_components/iron-flex-layout/"><template><style>.flex,.flex-1{-ms-flex:1 1 0px;-webkit-flex:1;flex:1;-webkit-flex-basis:0px;flex-basis:0px}.flex-2{-ms-flex:2;-webkit-flex:2;flex:2}.flex-3{-ms-flex:3;-webkit-flex:3;flex:3}.flex-4{-ms-flex:4;-webkit-flex:4;flex:4}.flex-5{-ms-flex:5;-webkit-flex:5;flex:5}.flex-6{-ms-flex:6;-webkit-flex:6;flex:6}.flex-7{-ms-flex:7;-webkit-flex:7;flex:7}.flex-8{-ms-flex:8;-webkit-flex:8;flex:8}.flex-9{-ms-flex:9;-webkit-flex:9;flex:9}.flex-10{-ms-flex:10;-webkit-flex:10;flex:10}.flex-11{-ms-flex:11;-webkit-flex:11;flex:11}.flex-12{-ms-flex:12;-webkit-flex:12;flex:12}</style></template></dom-module><dom-module id="iron-positioning" assetpath="../bower_components/iron-flex-layout/"><template><style>.block{display:block}[hidden]{display:none!important}.invisible{visibility:hidden!important}.relative{position:relative}.fit{position:absolute;top:0;right:0;bottom:0;left:0}body.fullbleed{margin:0;height:100vh}.scroll{-webkit-overflow-scrolling:touch;overflow:auto}.fixed-bottom,.fixed-left,.fixed-right,.fixed-top{position:fixed}.fixed-top{top:0;left:0;right:0}.fixed-right{top:0;right:0;bottom:0}.fixed-bottom{right:0;bottom:0;left:0}.fixed-left{top:0;bottom:0;left:0}</style></template></dom-module><script>!function(n){"use strict";function t(n,t){for(var e=[],r=0,u=n.length;r<u;r++)e.push(n[r].substr(0,t));return e}function e(n){return function(t,e,r){var u=r[n].indexOf(e.charAt(0).toUpperCase()+e.substr(1).toLowerCase());~u&&(t.month=u)}}function r(n,t){for(n=String(n),t=t||2;n.length<t;)n="0"+n;return n}var u={},o=/d{1,4}|M{1,4}|YY(?:YY)?|S{1,3}|Do|ZZ|([HhMsDm])\1?|[aA]|"[^"]*"|'[^']*'/g,a=/\d\d?/,i=/\d{3}/,s=/\d{4}/,m=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,d=function(){},f=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],c=["January","February","March","April","May","June","July","August","September","October","November","December"],h=t(c,3),l=t(f,3);u.i18n={dayNamesShort:l,dayNames:f,monthNamesShort:h,monthNames:c,amPm:["am","pm"],DoFn:function(n){return n+["th","st","nd","rd"][n%10>3?0:(n-n%10!==10)*n%10]}};var M={D:function(n){return n.getDate()},DD:function(n){return r(n.getDate())},Do:function(n,t){return t.DoFn(n.getDate())},d:function(n){return n.getDay()},dd:function(n){return r(n.getDay())},ddd:function(n,t){return t.dayNamesShort[n.getDay()]},dddd:function(n,t){return t.dayNames[n.getDay()]},M:function(n){return n.getMonth()+1},MM:function(n){return r(n.getMonth()+1)},MMM:function(n,t){return t.monthNamesShort[n.getMonth()]},MMMM:function(n,t){return t.monthNames[n.getMonth()]},YY:function(n){return String(n.getFullYear()).substr(2)},YYYY:function(n){return n.getFullYear()},h:function(n){return n.getHours()%12||12},hh:function(n){return r(n.getHours()%12||12)},H:function(n){return n.getHours()},HH:function(n){return r(n.getHours())},m:function(n){return n.getMinutes()},mm:function(n){return r(n.getMinutes())},s:function(n){return n.getSeconds()},ss:function(n){return r(n.getSeconds())},S:function(n){return Math.round(n.getMilliseconds()/100)},SS:function(n){return r(Math.round(n.getMilliseconds()/10),2)},SSS:function(n){return r(n.getMilliseconds(),3)},a:function(n,t){return n.getHours()<12?t.amPm[0]:t.amPm[1]},A:function(n,t){return n.getHours()<12?t.amPm[0].toUpperCase():t.amPm[1].toUpperCase()},ZZ:function(n){var t=n.getTimezoneOffset();return(t>0?"-":"+")+r(100*Math.floor(Math.abs(t)/60)+Math.abs(t)%60,4)}},g={D:[a,function(n,t){n.day=t}],Do:[new RegExp(a.source+m.source),function(n,t){n.day=parseInt(t,10)}],M:[a,function(n,t){n.month=t-1}],YY:[a,function(n,t){var e=new Date,r=+(""+e.getFullYear()).substr(0,2);n.year=""+(t>68?r-1:r)+t}],h:[a,function(n,t){n.hour=t}],m:[a,function(n,t){n.minute=t}],s:[a,function(n,t){n.second=t}],YYYY:[s,function(n,t){n.year=t}],S:[/\d/,function(n,t){n.millisecond=100*t}],SS:[/\d{2}/,function(n,t){n.millisecond=10*t}],SSS:[i,function(n,t){n.millisecond=t}],d:[a,d],ddd:[m,d],MMM:[m,e("monthNamesShort")],MMMM:[m,e("monthNames")],a:[m,function(n,t,e){var r=t.toLowerCase();r===e.amPm[0]?n.isPm=!1:r===e.amPm[1]&&(n.isPm=!0)}],ZZ:[/[\+\-]\d\d:?\d\d/,function(n,t){var e,r=(t+"").match(/([\+\-]|\d\d)/gi);r&&(e=+(60*r[1])+parseInt(r[2],10),n.timezoneOffset="+"===r[0]?e:-e)}]};g.dd=g.d,g.dddd=g.ddd,g.DD=g.D,g.mm=g.m,g.hh=g.H=g.HH=g.h,g.MM=g.M,g.ss=g.s,g.A=g.a,u.masks={default:"ddd MMM DD YYYY HH:mm:ss",shortDate:"M/D/YY",mediumDate:"MMM D, YYYY",longDate:"MMMM D, YYYY",fullDate:"dddd, MMMM D, YYYY",shortTime:"HH:mm",mediumTime:"HH:mm:ss",longTime:"HH:mm:ss.SSS"},u.format=function(n,t,e){var r=e||u.i18n;if("number"==typeof n&&(n=new Date(n)),"[object Date]"!==Object.prototype.toString.call(n)||isNaN(n.getTime()))throw new Error("Invalid Date in fecha.format");return t=u.masks[t]||t||u.masks.default,t.replace(o,function(t){return t in M?M[t](n,r):t.slice(1,t.length-1)})},u.parse=function(n,t,e){var r=e||u.i18n;if("string"!=typeof t)throw new Error("Invalid format in fecha.parse");if(t=u.masks[t]||t,n.length>1e3)return!1;var a=!0,i={};if(t.replace(o,function(t){if(g[t]){var e=g[t],u=n.search(e[0]);~u?n.replace(e[0],function(t){return e[1](i,t,r),n=n.substr(u+t.length),t}):a=!1}return g[t]?"":t.slice(1,t.length-1)}),!a)return!1;var s=new Date;i.isPm===!0&&null!=i.hour&&12!==+i.hour?i.hour=+i.hour+12:i.isPm===!1&&12===+i.hour&&(i.hour=0);var m;return null!=i.timezoneOffset?(i.minute=+(i.minute||0)-+i.timezoneOffset,m=new Date(Date.UTC(i.year||s.getFullYear(),i.month||0,i.day||1,i.hour||0,i.minute||0,i.second||0,i.millisecond||0))):m=new Date(i.year||s.getFullYear(),i.month||0,i.day||1,i.hour||0,i.minute||0,i.second||0,i.millisecond||0),m},"undefined"!=typeof module&&module.exports?module.exports=u:"function"==typeof define&&define.amd?define(function(){return u}):n.fecha=u}(this)</script><script>function toLocaleStringSupportsOptions(){try{(new Date).toLocaleString("i")}catch(e){return"RangeError"===e.name}return!1}function toLocaleDateStringSupportsOptions(){try{(new Date).toLocaleDateString("i")}catch(e){return"RangeError"===e.name}return!1}function toLocaleTimeStringSupportsOptions(){try{(new Date).toLocaleTimeString("i")}catch(e){return"RangeError"===e.name}return!1}window.hassUtil=window.hassUtil||{},window.hassUtil.DEFAULT_ICON="mdi:bookmark",window.hassUtil.OFF_STATES=["off","closed","unlocked"],window.hassUtil.DOMAINS_WITH_CARD=["climate","cover","configurator","input_select","input_slider","media_player","scene","script","weblink"],window.hassUtil.DOMAINS_WITH_MORE_INFO=["light","group","sun","climate","configurator","cover","script","media_player","camera","updater","alarm_control_panel","lock","automation"],window.hassUtil.DOMAINS_WITH_NO_HISTORY=["camera","configurator","scene"],window.hassUtil.HIDE_MORE_INFO=["input_select","scene","script","input_slider"],window.hassUtil.LANGUAGE=navigator.languages?navigator.languages[0]:navigator.language||navigator.userLanguage,window.hassUtil.attributeClassNames=function(e,t){return e?t.map(function(t){return t in e.attributes?"has-"+t:""}).join(" "):""},window.hassUtil.canToggle=function(e,t){return e.reactor.evaluate(e.serviceGetters.canToggleEntity(t))},window.hassUtil.dynamicContentUpdater=function(e,t,i){var n,a=Polymer.dom(e);a.lastChild&&a.lastChild.tagName===t?n=a.lastChild:(a.lastChild&&a.removeChild(a.lastChild),n=document.createElement(t)),Object.keys(i).forEach(function(e){n[e]=i[e]}),null===n.parentNode&&a.appendChild(n)},window.fecha.masks.haDateTime=window.fecha.masks.shortTime+" "+window.fecha.masks.mediumDate,toLocaleStringSupportsOptions()?window.hassUtil.formatDateTime=function(e){return e.toLocaleString(window.hassUtil.LANGUAGE,{year:"numeric",month:"long",day:"numeric",hour:"numeric",minute:"2-digit"})}:window.hassUtil.formatDateTime=function(e){return window.fecha.format(e,"haDateTime")},toLocaleDateStringSupportsOptions()?window.hassUtil.formatDate=function(e){return e.toLocaleDateString(window.hassUtil.LANGUAGE,{year:"numeric",month:"long",day:"numeric"})}:window.hassUtil.formatDate=function(e){return window.fecha.format(e,"mediumDate")},toLocaleTimeStringSupportsOptions()?window.hassUtil.formatTime=function(e){return e.toLocaleTimeString(window.hassUtil.LANGUAGE,{hour:"numeric",minute:"2-digit"})}:window.hassUtil.formatTime=function(e){return window.fecha.format(e,"shortTime")},window.hassUtil.relativeTime=function(e){var t,i=Math.abs(new Date-e)/1e3,n=new Date>e?"%s ago":"in %s",a=window.hassUtil.relativeTime.tests;for(t=0;t<a.length;t+=2){if(i<a[t])return i=Math.floor(i),n.replace("%s",1===i?"1 "+a[t+1]:i+" "+a[t+1]+"s");i/=a[t]}return i=Math.floor(i),n.replace("%s",1===i?"1 week":i+" weeks")},window.hassUtil.relativeTime.tests=[60,"second",60,"minute",24,"hour",7,"day"],window.hassUtil.stateCardType=function(e,t){return"unavailable"===t.state?"display":window.hassUtil.DOMAINS_WITH_CARD.indexOf(t.domain)!==-1?t.domain:window.hassUtil.canToggle(e,t.entityId)&&"hidden"!==t.attributes.control?"toggle":"display"},window.hassUtil.stateMoreInfoType=function(e){return window.hassUtil.DOMAINS_WITH_MORE_INFO.indexOf(e.domain)!==-1?e.domain:window.hassUtil.HIDE_MORE_INFO.indexOf(e.domain)!==-1?"hidden":"default"},window.hassUtil.domainIcon=function(e,t){switch(e){case"alarm_control_panel":return t&&"disarmed"===t?"mdi:bell-outline":"mdi:bell";case"automation":return"mdi:playlist-play";case"binary_sensor":return t&&"off"===t?"mdi:radiobox-blank":"mdi:checkbox-marked-circle";case"camera":return"mdi:video";case"climate":return"mdi:nest-thermostat";case"configurator":return"mdi:settings";case"conversation":return"mdi:text-to-speech";case"cover":return t&&"open"===t?"mdi:window-open":"mdi:window-closed";case"device_tracker":return"mdi:account";case"fan":return"mdi:fan";case"group":return"mdi:google-circles-communities";case"homeassistant":return"mdi:home";case"input_boolean":return"mdi:drawing";case"input_select":return"mdi:format-list-bulleted";case"input_slider":return"mdi:ray-vertex";case"light":return"mdi:lightbulb";case"lock":return t&&"unlocked"===t?"mdi:lock-open":"mdi:lock";case"media_player":return t&&"off"!==t&&"idle"!==t?"mdi:cast-connected":"mdi:cast";case"notify":return"mdi:comment-alert";case"proximity":return"mdi:apple-safari";case"remote":return"mdi:remote";case"scene":return"mdi:google-pages";case"script":return"mdi:file-document";case"sensor":return"mdi:eye";case"simple_alarm":return"mdi:bell";case"sun":return"mdi:white-balance-sunny";case"switch":return"mdi:flash";case"updater":return"mdi:cloud-upload";case"weblink":return"mdi:open-in-new";default:return console.warn("Unable to find icon for domain "+e+" ("+t+")"),window.hassUtil.DEFAULT_ICON}},window.hassUtil.binarySensorIcon=function(e){var t=e.state&&"off"===e.state;switch(e.attributes.sensor_class){case"connectivity":return t?"mdi:server-network-off":"mdi:server-network";case"light":return t?"mdi:brightness-5":"mdi:brightness-7";case"moisture":return t?"mdi:water-off":"mdi:water";case"motion":return t?"mdi:walk":"mdi:run";case"occupancy":return t?"mdi:home":"mdi:home-outline";case"opening":return t?"mdi:crop-square":"mdi:exit-to-app";case"sound":return t?"mdi:music-note-off":"mdi:music-note";case"vibration":return t?"mdi:crop-portrait":"mdi:vibrate";case"gas":case"power":case"safety":case"smoke":return t?"mdi:verified":"mdi:alert";default:return t?"mdi:radiobox-blank":"mdi:checkbox-marked-circle"}},window.hassUtil.stateIcon=function(e){var t;if(!e)return window.hassUtil.DEFAULT_ICON;if(e.attributes.icon)return e.attributes.icon;if(t=e.attributes.unit_of_measurement,t&&"sensor"===e.domain){if("°C"===t||"°F"===t)return"mdi:thermometer";if("Mice"===t)return"mdi:mouse-variant"}else if("binary_sensor"===e.domain)return window.hassUtil.binarySensorIcon(e);return window.hassUtil.domainIcon(e.domain,e.state)}</script><script>window.hassBehavior={attached:function(){var e=this.hass;if(!e)throw new Error("No hass property found on "+this.nodeName);this.nuclearUnwatchFns=Object.keys(this.properties).reduce(function(t,r){var n;if(!("bindNuclear"in this.properties[r]))return t;if(n=this.properties[r].bindNuclear(e),!n)throw new Error("Undefined getter specified for key "+r+" on "+this.nodeName);return this[r]=e.reactor.evaluate(n),t.concat(e.reactor.observe(n,function(e){this[r]=e}.bind(this)))}.bind(this),[])},detached:function(){for(;this.nuclearUnwatchFns.length;)this.nuclearUnwatchFns.shift()()}}</script><style is="custom-style">:root{--primary-text-color:var(--light-theme-text-color);--primary-background-color:var(--light-theme-background-color);--secondary-text-color:var(--light-theme-secondary-color);--disabled-text-color:var(--light-theme-disabled-color);--divider-color:var(--light-theme-divider-color);--error-color:var(--paper-deep-orange-a700);--primary-color:var(--paper-indigo-500);--light-primary-color:var(--paper-indigo-100);--dark-primary-color:var(--paper-indigo-700);--accent-color:var(--paper-pink-a200);--light-accent-color:var(--paper-pink-a100);--dark-accent-color:var(--paper-pink-a400);--light-theme-background-color:#ffffff;--light-theme-base-color:#000000;--light-theme-text-color:var(--paper-grey-900);--light-theme-secondary-color:#737373;--light-theme-disabled-color:#9b9b9b;--light-theme-divider-color:#dbdbdb;--dark-theme-background-color:var(--paper-grey-900);--dark-theme-base-color:#ffffff;--dark-theme-text-color:#ffffff;--dark-theme-secondary-color:#bcbcbc;--dark-theme-disabled-color:#646464;--dark-theme-divider-color:#3c3c3c;--text-primary-color:var(--dark-theme-text-color);--default-primary-color:var(--primary-color)}</style><script>!function(){var e={},t={},i=null;Polymer.IronMeta=Polymer({is:"iron-meta",properties:{type:{type:String,value:"default",observer:"_typeChanged"},key:{type:String,observer:"_keyChanged"},value:{type:Object,notify:!0,observer:"_valueChanged"},self:{type:Boolean,observer:"_selfChanged"},list:{type:Array,notify:!0}},hostAttributes:{hidden:!0},factoryImpl:function(e){if(e)for(var t in e)switch(t){case"type":case"key":case"value":this[t]=e[t]}},created:function(){this._metaDatas=e,this._metaArrays=t},_keyChanged:function(e,t){this._resetRegistration(t)},_valueChanged:function(e){this._resetRegistration(this.key)},_selfChanged:function(e){e&&(this.value=this)},_typeChanged:function(i){this._unregisterKey(this.key),e[i]||(e[i]={}),this._metaData=e[i],t[i]||(t[i]=[]),this.list=t[i],this._registerKeyValue(this.key,this.value)},byKey:function(e){return this._metaData&&this._metaData[e]},_resetRegistration:function(e){this._unregisterKey(e),this._registerKeyValue(this.key,this.value)},_unregisterKey:function(e){this._unregister(e,this._metaData,this.list)},_registerKeyValue:function(e,t){this._register(e,t,this._metaData,this.list)},_register:function(e,t,i,a){e&&i&&void 0!==t&&(i[e]=t,a.push(t))},_unregister:function(e,t,i){if(e&&t&&e in t){var a=t[e];delete t[e],this.arrayDelete(i,a)}}}),Polymer.IronMeta.getIronMeta=function(){return null===i&&(i=new Polymer.IronMeta),i},Polymer.IronMetaQuery=Polymer({is:"iron-meta-query",properties:{type:{type:String,value:"default",observer:"_typeChanged"},key:{type:String,observer:"_keyChanged"},value:{type:Object,notify:!0,readOnly:!0},list:{type:Array,notify:!0}},factoryImpl:function(e){if(e)for(var t in e)switch(t){case"type":case"key":this[t]=e[t]}},created:function(){this._metaDatas=e,this._metaArrays=t},_keyChanged:function(e){this._setValue(this._metaData&&this._metaData[e])},_typeChanged:function(i){this._metaData=e[i],this.list=t[i],this.key&&this._keyChanged(this.key)},byKey:function(e){return this._metaData&&this._metaData[e]}})}()</script><script>Polymer.IronValidatableBehaviorMeta=null,Polymer.IronValidatableBehavior={properties:{validator:{type:String},invalid:{notify:!0,reflectToAttribute:!0,type:Boolean,value:!1},_validatorMeta:{type:Object},validatorType:{type:String,value:"validator"},_validator:{type:Object,computed:"__computeValidator(validator)"}},observers:["_invalidChanged(invalid)"],registered:function(){Polymer.IronValidatableBehaviorMeta=new Polymer.IronMeta({type:"validator"})},_invalidChanged:function(){this.invalid?this.setAttribute("aria-invalid","true"):this.removeAttribute("aria-invalid")},hasValidator:function(){return null!=this._validator},validate:function(a){return this.invalid=!this._getValidity(a),!this.invalid},_getValidity:function(a){return!this.hasValidator()||this._validator.validate(a)},__computeValidator:function(){return Polymer.IronValidatableBehaviorMeta&&Polymer.IronValidatableBehaviorMeta.byKey(this.validator)}}</script><script>Polymer.IronFormElementBehavior={properties:{name:{type:String},value:{notify:!0,type:String},required:{type:Boolean,value:!1},_parentForm:{type:Object}},attached:function(){this.fire("iron-form-element-register")},detached:function(){this._parentForm&&this._parentForm.fire("iron-form-element-unregister",{target:this})}}</script><script>Polymer.IronCheckedElementBehaviorImpl={properties:{checked:{type:Boolean,value:!1,reflectToAttribute:!0,notify:!0,observer:"_checkedChanged"},toggles:{type:Boolean,value:!0,reflectToAttribute:!0},value:{type:String,value:"on",observer:"_valueChanged"}},observers:["_requiredChanged(required)"],created:function(){this._hasIronCheckedElementBehavior=!0},_getValidity:function(e){return this.disabled||!this.required||this.checked},_requiredChanged:function(){this.required?this.setAttribute("aria-required","true"):this.removeAttribute("aria-required")},_checkedChanged:function(){this.active=this.checked,this.fire("iron-change")},_valueChanged:function(){void 0!==this.value&&null!==this.value||(this.value="on")}},Polymer.IronCheckedElementBehavior=[Polymer.IronFormElementBehavior,Polymer.IronValidatableBehavior,Polymer.IronCheckedElementBehaviorImpl]</script><script>!function(){"use strict";function e(e,t){var n="";if(e){var i=e.toLowerCase();" "===i||v.test(i)?n="space":f.test(i)?n="esc":1==i.length?t&&!u.test(i)||(n=i):n=c.test(i)?i.replace("arrow",""):"multiply"==i?"*":i}return n}function t(e){var t="";return e&&(e in o?t=o[e]:h.test(e)?(e=parseInt(e.replace("U+","0x"),16),t=String.fromCharCode(e).toLowerCase()):t=e.toLowerCase()),t}function n(e){var t="";return Number(e)&&(t=e>=65&&e<=90?String.fromCharCode(32+e):e>=112&&e<=123?"f"+(e-112):e>=48&&e<=57?String(e-48):e>=96&&e<=105?String(e-96):d[e]),t}function i(i,r){return i.key?e(i.key,r):i.detail&&i.detail.key?e(i.detail.key,r):t(i.keyIdentifier)||n(i.keyCode)||""}function r(e,t){var n=i(t,e.hasModifiers);return n===e.key&&(!e.hasModifiers||!!t.shiftKey==!!e.shiftKey&&!!t.ctrlKey==!!e.ctrlKey&&!!t.altKey==!!e.altKey&&!!t.metaKey==!!e.metaKey)}function s(e){return 1===e.length?{combo:e,key:e,event:"keydown"}:e.split("+").reduce(function(e,t){var n=t.split(":"),i=n[0],r=n[1];return i in y?(e[y[i]]=!0,e.hasModifiers=!0):(e.key=i,e.event=r||"keydown"),e},{combo:e.split(":").shift()})}function a(e){return e.trim().split(" ").map(function(e){return s(e)})}var o={"U+0008":"backspace","U+0009":"tab","U+001B":"esc","U+0020":"space","U+007F":"del"},d={8:"backspace",9:"tab",13:"enter",27:"esc",33:"pageup",34:"pagedown",35:"end",36:"home",32:"space",37:"left",38:"up",39:"right",40:"down",46:"del",106:"*"},y={shift:"shiftKey",ctrl:"ctrlKey",alt:"altKey",meta:"metaKey"},u=/[a-z0-9*]/,h=/U\+/,c=/^arrow/,v=/^space(bar)?/,f=/^escape$/;Polymer.IronA11yKeysBehavior={properties:{keyEventTarget:{type:Object,value:function(){return this}},stopKeyboardEventPropagation:{type:Boolean,value:!1},_boundKeyHandlers:{type:Array,value:function(){return[]}},_imperativeKeyBindings:{type:Object,value:function(){return{}}}},observers:["_resetKeyEventListeners(keyEventTarget, _boundKeyHandlers)"],keyBindings:{},registered:function(){this._prepKeyBindings()},attached:function(){this._listenKeyEventListeners()},detached:function(){this._unlistenKeyEventListeners()},addOwnKeyBinding:function(e,t){this._imperativeKeyBindings[e]=t,this._prepKeyBindings(),this._resetKeyEventListeners()},removeOwnKeyBindings:function(){this._imperativeKeyBindings={},this._prepKeyBindings(),this._resetKeyEventListeners()},keyboardEventMatchesKeys:function(e,t){for(var n=a(t),i=0;i<n.length;++i)if(r(n[i],e))return!0;return!1},_collectKeyBindings:function(){var e=this.behaviors.map(function(e){return e.keyBindings});return e.indexOf(this.keyBindings)===-1&&e.push(this.keyBindings),e},_prepKeyBindings:function(){this._keyBindings={},this._collectKeyBindings().forEach(function(e){for(var t in e)this._addKeyBinding(t,e[t])},this);for(var e in this._imperativeKeyBindings)this._addKeyBinding(e,this._imperativeKeyBindings[e]);for(var t in this._keyBindings)this._keyBindings[t].sort(function(e,t){var n=e[0].hasModifiers,i=t[0].hasModifiers;return n===i?0:n?-1:1})},_addKeyBinding:function(e,t){a(e).forEach(function(e){this._keyBindings[e.event]=this._keyBindings[e.event]||[],this._keyBindings[e.event].push([e,t])},this)},_resetKeyEventListeners:function(){this._unlistenKeyEventListeners(),this.isAttached&&this._listenKeyEventListeners()},_listenKeyEventListeners:function(){this.keyEventTarget&&Object.keys(this._keyBindings).forEach(function(e){var t=this._keyBindings[e],n=this._onKeyBindingEvent.bind(this,t);this._boundKeyHandlers.push([this.keyEventTarget,e,n]),this.keyEventTarget.addEventListener(e,n)},this)},_unlistenKeyEventListeners:function(){for(var e,t,n,i;this._boundKeyHandlers.length;)e=this._boundKeyHandlers.pop(),t=e[0],n=e[1],i=e[2],t.removeEventListener(n,i)},_onKeyBindingEvent:function(e,t){if(this.stopKeyboardEventPropagation&&t.stopPropagation(),!t.defaultPrevented)for(var n=0;n<e.length;n++){var i=e[n][0],s=e[n][1];if(r(i,t)&&(this._triggerKeyHandler(i,s,t),t.defaultPrevented))return}},_triggerKeyHandler:function(e,t,n){var i=Object.create(e);i.keyboardEvent=n;var r=new CustomEvent(e.event,{detail:i,cancelable:!0});this[t].call(this,r),r.defaultPrevented&&n.preventDefault()}}}()</script><script>Polymer.IronControlState={properties:{focused:{type:Boolean,value:!1,notify:!0,readOnly:!0,reflectToAttribute:!0},disabled:{type:Boolean,value:!1,notify:!0,observer:"_disabledChanged",reflectToAttribute:!0},_oldTabIndex:{type:Number},_boundFocusBlurHandler:{type:Function,value:function(){return this._focusBlurHandler.bind(this)}}},observers:["_changedControlState(focused, disabled)"],ready:function(){this.addEventListener("focus",this._boundFocusBlurHandler,!0),this.addEventListener("blur",this._boundFocusBlurHandler,!0)},_focusBlurHandler:function(e){if(e.target===this)this._setFocused("focus"===e.type);else if(!this.shadowRoot){var t=Polymer.dom(e).localTarget;this.isLightDescendant(t)||this.fire(e.type,{sourceEvent:e},{node:this,bubbles:e.bubbles,cancelable:e.cancelable})}},_disabledChanged:function(e,t){this.setAttribute("aria-disabled",e?"true":"false"),this.style.pointerEvents=e?"none":"",e?(this._oldTabIndex=this.tabIndex,this._setFocused(!1),this.tabIndex=-1,this.blur()):void 0!==this._oldTabIndex&&(this.tabIndex=this._oldTabIndex)},_changedControlState:function(){this._controlStateChanged&&this._controlStateChanged()}}</script><script>Polymer.IronButtonStateImpl={properties:{pressed:{type:Boolean,readOnly:!0,value:!1,reflectToAttribute:!0,observer:"_pressedChanged"},toggles:{type:Boolean,value:!1,reflectToAttribute:!0},active:{type:Boolean,value:!1,notify:!0,reflectToAttribute:!0},pointerDown:{type:Boolean,readOnly:!0,value:!1},receivedFocusFromKeyboard:{type:Boolean,readOnly:!0},ariaActiveAttribute:{type:String,value:"aria-pressed",observer:"_ariaActiveAttributeChanged"}},listeners:{down:"_downHandler",up:"_upHandler",tap:"_tapHandler"},observers:["_detectKeyboardFocus(focused)","_activeChanged(active, ariaActiveAttribute)"],keyBindings:{"enter:keydown":"_asyncClick","space:keydown":"_spaceKeyDownHandler","space:keyup":"_spaceKeyUpHandler"},_mouseEventRe:/^mouse/,_tapHandler:function(){this.toggles?this._userActivate(!this.active):this.active=!1},_detectKeyboardFocus:function(e){this._setReceivedFocusFromKeyboard(!this.pointerDown&&e)},_userActivate:function(e){this.active!==e&&(this.active=e,this.fire("change"))},_downHandler:function(e){this._setPointerDown(!0),this._setPressed(!0),this._setReceivedFocusFromKeyboard(!1)},_upHandler:function(){this._setPointerDown(!1),this._setPressed(!1)},_spaceKeyDownHandler:function(e){var t=e.detail.keyboardEvent,i=Polymer.dom(t).localTarget;this.isLightDescendant(i)||(t.preventDefault(),t.stopImmediatePropagation(),this._setPressed(!0))},_spaceKeyUpHandler:function(e){var t=e.detail.keyboardEvent,i=Polymer.dom(t).localTarget;this.isLightDescendant(i)||(this.pressed&&this._asyncClick(),this._setPressed(!1))},_asyncClick:function(){this.async(function(){this.click()},1)},_pressedChanged:function(e){this._changedButtonState()},_ariaActiveAttributeChanged:function(e,t){t&&t!=e&&this.hasAttribute(t)&&this.removeAttribute(t)},_activeChanged:function(e,t){this.toggles?this.setAttribute(this.ariaActiveAttribute,e?"true":"false"):this.removeAttribute(this.ariaActiveAttribute),this._changedButtonState()},_controlStateChanged:function(){this.disabled?this._setPressed(!1):this._changedButtonState()},_changedButtonState:function(){this._buttonStateChanged&&this._buttonStateChanged()}},Polymer.IronButtonState=[Polymer.IronA11yKeysBehavior,Polymer.IronButtonStateImpl]</script><dom-module id="paper-ripple" assetpath="../bower_components/paper-ripple/"><template><style>:host{display:block;position:absolute;border-radius:inherit;overflow:hidden;top:0;left:0;right:0;bottom:0;pointer-events:none}:host([animating]){-webkit-transform:translate(0,0);transform:translate3d(0,0,0)}#background,#waves,.wave,.wave-container{pointer-events:none;position:absolute;top:0;left:0;width:100%;height:100%}#background,.wave{opacity:0}#waves,.wave{overflow:hidden}.wave,.wave-container{border-radius:50%}:host(.circle) #background,:host(.circle) #waves{border-radius:50%}:host(.circle) .wave-container{overflow:hidden}</style><div id="background"></div><div id="waves"></div></template></dom-module><script>!function(){function t(t){this.element=t,this.width=this.boundingRect.width,this.height=this.boundingRect.height,this.size=Math.max(this.width,this.height)}function i(t){this.element=t,this.color=window.getComputedStyle(t).color,this.wave=document.createElement("div"),this.waveContainer=document.createElement("div"),this.wave.style.backgroundColor=this.color,this.wave.classList.add("wave"),this.waveContainer.classList.add("wave-container"),Polymer.dom(this.waveContainer).appendChild(this.wave),this.resetInteractionState()}var e={distance:function(t,i,e,n){var s=t-e,o=i-n;return Math.sqrt(s*s+o*o)},now:window.performance&&window.performance.now?window.performance.now.bind(window.performance):Date.now};t.prototype={get boundingRect(){return this.element.getBoundingClientRect()},furthestCornerDistanceFrom:function(t,i){var n=e.distance(t,i,0,0),s=e.distance(t,i,this.width,0),o=e.distance(t,i,0,this.height),a=e.distance(t,i,this.width,this.height);return Math.max(n,s,o,a)}},i.MAX_RADIUS=300,i.prototype={get recenters(){return this.element.recenters},get center(){return this.element.center},get mouseDownElapsed(){var t;return this.mouseDownStart?(t=e.now()-this.mouseDownStart,this.mouseUpStart&&(t-=this.mouseUpElapsed),t):0},get mouseUpElapsed(){return this.mouseUpStart?e.now()-this.mouseUpStart:0},get mouseDownElapsedSeconds(){return this.mouseDownElapsed/1e3},get mouseUpElapsedSeconds(){return this.mouseUpElapsed/1e3},get mouseInteractionSeconds(){return this.mouseDownElapsedSeconds+this.mouseUpElapsedSeconds},get initialOpacity(){return this.element.initialOpacity},get opacityDecayVelocity(){return this.element.opacityDecayVelocity},get radius(){var t=this.containerMetrics.width*this.containerMetrics.width,e=this.containerMetrics.height*this.containerMetrics.height,n=1.1*Math.min(Math.sqrt(t+e),i.MAX_RADIUS)+5,s=1.1-.2*(n/i.MAX_RADIUS),o=this.mouseInteractionSeconds/s,a=n*(1-Math.pow(80,-o));return Math.abs(a)},get opacity(){return this.mouseUpStart?Math.max(0,this.initialOpacity-this.mouseUpElapsedSeconds*this.opacityDecayVelocity):this.initialOpacity},get outerOpacity(){var t=.3*this.mouseUpElapsedSeconds,i=this.opacity;return Math.max(0,Math.min(t,i))},get isOpacityFullyDecayed(){return this.opacity<.01&&this.radius>=Math.min(this.maxRadius,i.MAX_RADIUS)},get isRestingAtMaxRadius(){return this.opacity>=this.initialOpacity&&this.radius>=Math.min(this.maxRadius,i.MAX_RADIUS)},get isAnimationComplete(){return this.mouseUpStart?this.isOpacityFullyDecayed:this.isRestingAtMaxRadius},get translationFraction(){return Math.min(1,this.radius/this.containerMetrics.size*2/Math.sqrt(2))},get xNow(){return this.xEnd?this.xStart+this.translationFraction*(this.xEnd-this.xStart):this.xStart},get yNow(){return this.yEnd?this.yStart+this.translationFraction*(this.yEnd-this.yStart):this.yStart},get isMouseDown(){return this.mouseDownStart&&!this.mouseUpStart},resetInteractionState:function(){this.maxRadius=0,this.mouseDownStart=0,this.mouseUpStart=0,this.xStart=0,this.yStart=0,this.xEnd=0,this.yEnd=0,this.slideDistance=0,this.containerMetrics=new t(this.element)},draw:function(){var t,i,e;this.wave.style.opacity=this.opacity,t=this.radius/(this.containerMetrics.size/2),i=this.xNow-this.containerMetrics.width/2,e=this.yNow-this.containerMetrics.height/2,this.waveContainer.style.webkitTransform="translate("+i+"px, "+e+"px)",this.waveContainer.style.transform="translate3d("+i+"px, "+e+"px, 0)",this.wave.style.webkitTransform="scale("+t+","+t+")",this.wave.style.transform="scale3d("+t+","+t+",1)"},downAction:function(t){var i=this.containerMetrics.width/2,n=this.containerMetrics.height/2;this.resetInteractionState(),this.mouseDownStart=e.now(),this.center?(this.xStart=i,this.yStart=n,this.slideDistance=e.distance(this.xStart,this.yStart,this.xEnd,this.yEnd)):(this.xStart=t?t.detail.x-this.containerMetrics.boundingRect.left:this.containerMetrics.width/2,this.yStart=t?t.detail.y-this.containerMetrics.boundingRect.top:this.containerMetrics.height/2),this.recenters&&(this.xEnd=i,this.yEnd=n,this.slideDistance=e.distance(this.xStart,this.yStart,this.xEnd,this.yEnd)),this.maxRadius=this.containerMetrics.furthestCornerDistanceFrom(this.xStart,this.yStart),this.waveContainer.style.top=(this.containerMetrics.height-this.containerMetrics.size)/2+"px",this.waveContainer.style.left=(this.containerMetrics.width-this.containerMetrics.size)/2+"px",this.waveContainer.style.width=this.containerMetrics.size+"px",this.waveContainer.style.height=this.containerMetrics.size+"px"},upAction:function(t){this.isMouseDown&&(this.mouseUpStart=e.now())},remove:function(){Polymer.dom(this.waveContainer.parentNode).removeChild(this.waveContainer)}},Polymer({is:"paper-ripple",behaviors:[Polymer.IronA11yKeysBehavior],properties:{initialOpacity:{type:Number,value:.25},opacityDecayVelocity:{type:Number,value:.8},recenters:{type:Boolean,value:!1},center:{type:Boolean,value:!1},ripples:{type:Array,value:function(){return[]}},animating:{type:Boolean,readOnly:!0,reflectToAttribute:!0,value:!1},holdDown:{type:Boolean,value:!1,observer:"_holdDownChanged"},noink:{type:Boolean,value:!1},_animating:{type:Boolean},_boundAnimate:{type:Function,value:function(){return this.animate.bind(this)}}},get target(){return this.keyEventTarget},keyBindings:{"enter:keydown":"_onEnterKeydown","space:keydown":"_onSpaceKeydown","space:keyup":"_onSpaceKeyup"},attached:function(){11==this.parentNode.nodeType?this.keyEventTarget=Polymer.dom(this).getOwnerRoot().host:this.keyEventTarget=this.parentNode;var t=this.keyEventTarget;this.listen(t,"up","uiUpAction"),this.listen(t,"down","uiDownAction")},detached:function(){this.unlisten(this.keyEventTarget,"up","uiUpAction"),this.unlisten(this.keyEventTarget,"down","uiDownAction"),this.keyEventTarget=null},get shouldKeepAnimating(){for(var t=0;t<this.ripples.length;++t)if(!this.ripples[t].isAnimationComplete)return!0;return!1},simulatedRipple:function(){this.downAction(null),this.async(function(){this.upAction()},1)},uiDownAction:function(t){this.noink||this.downAction(t)},downAction:function(t){if(!(this.holdDown&&this.ripples.length>0)){var i=this.addRipple();i.downAction(t),this._animating||(this._animating=!0,this.animate())}},uiUpAction:function(t){this.noink||this.upAction(t)},upAction:function(t){this.holdDown||(this.ripples.forEach(function(i){i.upAction(t)}),this._animating=!0,this.animate())},onAnimationComplete:function(){this._animating=!1,this.$.background.style.backgroundColor=null,this.fire("transitionend")},addRipple:function(){var t=new i(this);return Polymer.dom(this.$.waves).appendChild(t.waveContainer),this.$.background.style.backgroundColor=t.color,this.ripples.push(t),this._setAnimating(!0),t},removeRipple:function(t){var i=this.ripples.indexOf(t);i<0||(this.ripples.splice(i,1),t.remove(),this.ripples.length||this._setAnimating(!1))},animate:function(){if(this._animating){var t,i;for(t=0;t<this.ripples.length;++t)i=this.ripples[t],i.draw(),this.$.background.style.opacity=i.outerOpacity,i.isOpacityFullyDecayed&&!i.isRestingAtMaxRadius&&this.removeRipple(i);this.shouldKeepAnimating||0!==this.ripples.length?window.requestAnimationFrame(this._boundAnimate):this.onAnimationComplete()}},_onEnterKeydown:function(){this.uiDownAction(),this.async(this.uiUpAction,1)},_onSpaceKeydown:function(){this.uiDownAction()},_onSpaceKeyup:function(){this.uiUpAction()},_holdDownChanged:function(t,i){void 0!==i&&(t?this.downAction():this.upAction())}})}()</script><script>Polymer.PaperRippleBehavior={properties:{noink:{type:Boolean,observer:"_noinkChanged"},_rippleContainer:{type:Object}},_buttonStateChanged:function(){this.focused&&this.ensureRipple()},_downHandler:function(e){Polymer.IronButtonStateImpl._downHandler.call(this,e),this.pressed&&this.ensureRipple(e)},ensureRipple:function(e){if(!this.hasRipple()){this._ripple=this._createRipple(),this._ripple.noink=this.noink;var i=this._rippleContainer||this.root;if(i&&Polymer.dom(i).appendChild(this._ripple),e){var n=Polymer.dom(this._rippleContainer||this),t=Polymer.dom(e).rootTarget;n.deepContains(t)&&this._ripple.uiDownAction(e)}}},getRipple:function(){return this.ensureRipple(),this._ripple},hasRipple:function(){return Boolean(this._ripple)},_createRipple:function(){return document.createElement("paper-ripple")},_noinkChanged:function(e){this.hasRipple()&&(this._ripple.noink=e)}}</script><script>Polymer.PaperInkyFocusBehaviorImpl={observers:["_focusedChanged(receivedFocusFromKeyboard)"],_focusedChanged:function(e){e&&this.ensureRipple(),this.hasRipple()&&(this._ripple.holdDown=e)},_createRipple:function(){var e=Polymer.PaperRippleBehavior._createRipple();return e.id="ink",e.setAttribute("center",""),e.classList.add("circle"),e}},Polymer.PaperInkyFocusBehavior=[Polymer.IronButtonState,Polymer.IronControlState,Polymer.PaperRippleBehavior,Polymer.PaperInkyFocusBehaviorImpl]</script><script>Polymer.PaperCheckedElementBehaviorImpl={_checkedChanged:function(){Polymer.IronCheckedElementBehaviorImpl._checkedChanged.call(this),this.hasRipple()&&(this.checked?this._ripple.setAttribute("checked",""):this._ripple.removeAttribute("checked"))},_buttonStateChanged:function(){Polymer.PaperRippleBehavior._buttonStateChanged.call(this),this.disabled||this.isAttached&&(this.checked=this.active)}},Polymer.PaperCheckedElementBehavior=[Polymer.PaperInkyFocusBehavior,Polymer.IronCheckedElementBehavior,Polymer.PaperCheckedElementBehaviorImpl]</script><dom-module id="paper-checkbox" assetpath="../bower_components/paper-checkbox/"><template strip-whitespace=""><style>:host{display:inline-block;white-space:nowrap;cursor:pointer;--calculated-paper-checkbox-size:var(--paper-checkbox-size, 18px);--calculated-paper-checkbox-ink-size:var(--paper-checkbox-ink-size, -1px);@apply(--paper-font-common-base);line-height:0;-webkit-tap-highlight-color:transparent}:host([hidden]){display:none!important}:host(:focus){outline:0}.hidden{display:none}#checkboxContainer{display:inline-block;position:relative;width:var(--calculated-paper-checkbox-size);height:var(--calculated-paper-checkbox-size);min-width:var(--calculated-paper-checkbox-size);margin:var(--paper-checkbox-margin,initial);vertical-align:var(--paper-checkbox-vertical-align,middle);background-color:var(--paper-checkbox-unchecked-background-color,transparent)}#ink{position:absolute;top:calc(0px - (var(--calculated-paper-checkbox-ink-size) - var(--calculated-paper-checkbox-size))/ 2);left:calc(0px - (var(--calculated-paper-checkbox-ink-size) - var(--calculated-paper-checkbox-size))/ 2);width:var(--calculated-paper-checkbox-ink-size);height:var(--calculated-paper-checkbox-ink-size);color:var(--paper-checkbox-unchecked-ink-color,var(--primary-text-color));opacity:.6;pointer-events:none}:host-context([dir=rtl]) #ink{right:calc(0px - (var(--calculated-paper-checkbox-ink-size) - var(--calculated-paper-checkbox-size))/ 2);left:auto}#ink[checked]{color:var(--paper-checkbox-checked-ink-color,var(--primary-color))}#checkbox{position:relative;box-sizing:border-box;height:100%;border:solid 2px;border-color:var(--paper-checkbox-unchecked-color,var(--primary-text-color));border-radius:2px;pointer-events:none;-webkit-transition:background-color 140ms,border-color 140ms;transition:background-color 140ms,border-color 140ms}#checkbox.checked #checkmark{-webkit-animation:checkmark-expand 140ms ease-out forwards;animation:checkmark-expand 140ms ease-out forwards}@-webkit-keyframes checkmark-expand{0%{-webkit-transform:scale(0,0) rotate(45deg)}100%{-webkit-transform:scale(1,1) rotate(45deg)}}@keyframes checkmark-expand{0%{transform:scale(0,0) rotate(45deg)}100%{transform:scale(1,1) rotate(45deg)}}#checkbox.checked{background-color:var(--paper-checkbox-checked-color,var(--primary-color));border-color:var(--paper-checkbox-checked-color,var(--primary-color))}#checkmark{position:absolute;width:36%;height:70%;border-style:solid;border-top:none;border-left:none;border-right-width:calc(2/15 * var(--calculated-paper-checkbox-size));border-bottom-width:calc(2/15 * var(--calculated-paper-checkbox-size));border-color:var(--paper-checkbox-checkmark-color,#fff);-webkit-transform-origin:97% 86%;transform-origin:97% 86%;box-sizing:content-box}:host-context([dir=rtl]) #checkmark{-webkit-transform-origin:50% 14%;transform-origin:50% 14%}#checkboxLabel{position:relative;display:inline-block;vertical-align:middle;padding-left:var(--paper-checkbox-label-spacing,8px);white-space:normal;line-height:normal;color:var(--paper-checkbox-label-color,var(--primary-text-color));@apply(--paper-checkbox-label)}:host([checked]) #checkboxLabel{color:var(--paper-checkbox-label-checked-color,var(--paper-checkbox-label-color,var(--primary-text-color)));@apply(--paper-checkbox-label-checked)}:host-context([dir=rtl]) #checkboxLabel{padding-right:var(--paper-checkbox-label-spacing,8px);padding-left:0}#checkboxLabel[hidden]{display:none}:host([disabled]) #checkbox{opacity:.5;border-color:var(--paper-checkbox-unchecked-color,var(--primary-text-color))}:host([disabled][checked]) #checkbox{background-color:var(--paper-checkbox-unchecked-color,var(--primary-text-color));opacity:.5}:host([disabled]) #checkboxLabel{opacity:.65}#checkbox.invalid:not(.checked){border-color:var(--paper-checkbox-error-color,var(--error-color))}</style><div id="checkboxContainer"><div id="checkbox" class$="[[_computeCheckboxClass(checked, invalid)]]"><div id="checkmark" class$="[[_computeCheckmarkClass(checked)]]"></div></div></div><div id="checkboxLabel"><content></content></div></template><script>Polymer({is:"paper-checkbox",behaviors:[Polymer.PaperCheckedElementBehavior],hostAttributes:{role:"checkbox","aria-checked":!1,tabindex:0},properties:{ariaActiveAttribute:{type:String,value:"aria-checked"}},attached:function(){var e=this.getComputedStyleValue("--calculated-paper-checkbox-ink-size").trim();if("-1px"===e){var t=parseFloat(this.getComputedStyleValue("--calculated-paper-checkbox-size").trim()),a=Math.floor(8/3*t);a%2!==t%2&&a++,this.customStyle["--paper-checkbox-ink-size"]=a+"px",this.updateStyles()}},_computeCheckboxClass:function(e,t){var a="";return e&&(a+="checked "),t&&(a+="invalid"),a},_computeCheckmarkClass:function(e){return e?"":"hidden"},_createRipple:function(){return this._rippleContainer=this.$.checkboxContainer,Polymer.PaperInkyFocusBehaviorImpl._createRipple.call(this)}})</script></dom-module><script>Polymer.PaperButtonBehaviorImpl={properties:{elevation:{type:Number,reflectToAttribute:!0,readOnly:!0}},observers:["_calculateElevation(focused, disabled, active, pressed, receivedFocusFromKeyboard)","_computeKeyboardClass(receivedFocusFromKeyboard)"],hostAttributes:{role:"button",tabindex:"0",animated:!0},_calculateElevation:function(){var e=1;this.disabled?e=0:this.active||this.pressed?e=4:this.receivedFocusFromKeyboard&&(e=3),this._setElevation(e)},_computeKeyboardClass:function(e){this.toggleClass("keyboard-focus",e)},_spaceKeyDownHandler:function(e){Polymer.IronButtonStateImpl._spaceKeyDownHandler.call(this,e),this.hasRipple()&&this.getRipple().ripples.length<1&&this._ripple.uiDownAction()},_spaceKeyUpHandler:function(e){Polymer.IronButtonStateImpl._spaceKeyUpHandler.call(this,e),this.hasRipple()&&this._ripple.uiUpAction()}},Polymer.PaperButtonBehavior=[Polymer.IronButtonState,Polymer.IronControlState,Polymer.PaperRippleBehavior,Polymer.PaperButtonBehaviorImpl]</script><style is="custom-style">:root{--shadow-transition:{transition:box-shadow .28s cubic-bezier(.4,0,.2,1)};--shadow-none:{box-shadow:none};--shadow-elevation-2dp:{box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2)};--shadow-elevation-3dp:{box-shadow:0 3px 4px 0 rgba(0,0,0,.14),0 1px 8px 0 rgba(0,0,0,.12),0 3px 3px -2px rgba(0,0,0,.4)};--shadow-elevation-4dp:{box-shadow:0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12),0 2px 4px -1px rgba(0,0,0,.4)};--shadow-elevation-6dp:{box-shadow:0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12),0 3px 5px -1px rgba(0,0,0,.4)};--shadow-elevation-8dp:{box-shadow:0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12),0 5px 5px -3px rgba(0,0,0,.4)};--shadow-elevation-12dp:{box-shadow:0 12px 16px 1px rgba(0,0,0,.14),0 4px 22px 3px rgba(0,0,0,.12),0 6px 7px -4px rgba(0,0,0,.4)};--shadow-elevation-16dp:{box-shadow:0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12),0 8px 10px -5px rgba(0,0,0,.4)};--shadow-elevation-24dp:{box-shadow:0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12),0 11px 15px -7px rgba(0,0,0,.4)};}</style><dom-module id="paper-material-shared-styles" assetpath="../bower_components/paper-material/"><template><style>:host{display:block;position:relative}:host([elevation="1"]){@apply(--shadow-elevation-2dp)}:host([elevation="2"]){@apply(--shadow-elevation-4dp)}:host([elevation="3"]){@apply(--shadow-elevation-6dp)}:host([elevation="4"]){@apply(--shadow-elevation-8dp)}:host([elevation="5"]){@apply(--shadow-elevation-16dp)}</style></template></dom-module><dom-module id="paper-button" assetpath="../bower_components/paper-button/"><template strip-whitespace=""><style include="paper-material-shared-styles">:host{@apply(--layout-inline);@apply(--layout-center-center);position:relative;box-sizing:border-box;min-width:5.14em;margin:0 .29em;background:0 0;-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:transparent;font:inherit;text-transform:uppercase;outline-width:0;border-radius:3px;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none;cursor:pointer;z-index:0;padding:.7em .57em;@apply(--paper-font-common-base);@apply(--paper-button)}:host([hidden]){display:none!important}:host([raised].keyboard-focus){font-weight:700;@apply(--paper-button-raised-keyboard-focus)}:host(:not([raised]).keyboard-focus){font-weight:700;@apply(--paper-button-flat-keyboard-focus)}:host([disabled]){background:#eaeaea;color:#a8a8a8;cursor:auto;pointer-events:none;@apply(--paper-button-disabled)}:host([animated]){@apply(--shadow-transition)}paper-ripple{color:var(--paper-button-ink-color)}</style><content></content></template><script>Polymer({is:"paper-button",behaviors:[Polymer.PaperButtonBehavior],properties:{raised:{type:Boolean,reflectToAttribute:!0,value:!1,observer:"_calculateElevation"}},_calculateElevation:function(){this.raised?Polymer.PaperButtonBehaviorImpl._calculateElevation.apply(this):this._setElevation(0)}})</script></dom-module><dom-module id="paper-input-container" assetpath="../bower_components/paper-input/"><template><style>:host{display:block;padding:8px 0;@apply(--paper-input-container)}:host([inline]){display:inline-block}:host([disabled]){pointer-events:none;opacity:.33;@apply(--paper-input-container-disabled)}:host([hidden]){display:none!important}.floated-label-placeholder{@apply(--paper-font-caption)}.underline{height:2px;position:relative}.focused-line{@apply(--layout-fit);border-bottom:2px solid var(--paper-input-container-focus-color,--primary-color);-webkit-transform-origin:center center;transform-origin:center center;-webkit-transform:scale3d(0,1,1);transform:scale3d(0,1,1);@apply(--paper-input-container-underline-focus)}.underline.is-highlighted .focused-line{-webkit-transform:none;transform:none;-webkit-transition:-webkit-transform .25s;transition:transform .25s;@apply(--paper-transition-easing)}.underline.is-invalid .focused-line{border-color:var(--paper-input-container-invalid-color,--error-color);-webkit-transform:none;transform:none;-webkit-transition:-webkit-transform .25s;transition:transform .25s;@apply(--paper-transition-easing)}.unfocused-line{@apply(--layout-fit);border-bottom:1px solid var(--paper-input-container-color,--secondary-text-color);@apply(--paper-input-container-underline)}:host([disabled]) .unfocused-line{border-bottom:1px dashed;border-color:var(--paper-input-container-color,--secondary-text-color);@apply(--paper-input-container-underline-disabled)}.label-and-input-container{@apply(--layout-flex-auto);@apply(--layout-relative);width:100%;max-width:100%}.input-content{@apply(--layout-horizontal);@apply(--layout-center);position:relative}.input-content ::content .paper-input-label,.input-content ::content label{position:absolute;top:0;right:0;left:0;width:100%;font:inherit;color:var(--paper-input-container-color,--secondary-text-color);-webkit-transition:-webkit-transform .25s,width .25s;transition:transform .25s,width .25s;-webkit-transform-origin:left top;transform-origin:left top;@apply(--paper-font-common-nowrap);@apply(--paper-font-subhead);@apply(--paper-input-container-label);@apply(--paper-transition-easing)}.input-content.label-is-floating ::content .paper-input-label,.input-content.label-is-floating ::content label{-webkit-transform:translateY(-75%) scale(.75);transform:translateY(-75%) scale(.75);width:133%;@apply(--paper-input-container-label-floating)}:host-context([dir=rtl]) .input-content.label-is-floating ::content .paper-input-label,:host-context([dir=rtl]) .input-content.label-is-floating ::content label{width:100%;-webkit-transform-origin:right top;transform-origin:right top}.input-content.label-is-highlighted ::content .paper-input-label,.input-content.label-is-highlighted ::content label{color:var(--paper-input-container-focus-color,--primary-color);@apply(--paper-input-container-label-focus)}.input-content.is-invalid ::content .paper-input-label,.input-content.is-invalid ::content label{color:var(--paper-input-container-invalid-color,--error-color)}.input-content.label-is-hidden ::content .paper-input-label,.input-content.label-is-hidden ::content label{visibility:hidden}.input-content ::content .paper-input-input,.input-content ::content input,.input-content ::content iron-autogrow-textarea,.input-content ::content textarea{position:relative;outline:0;box-shadow:none;padding:0;width:100%;max-width:100%;background:0 0;border:none;color:var(--paper-input-container-input-color,--primary-text-color);-webkit-appearance:none;text-align:inherit;vertical-align:bottom;@apply(--paper-font-subhead);@apply(--paper-input-container-input)}.input-content ::content input::-webkit-inner-spin-button,.input-content ::content input::-webkit-outer-spin-button{@apply(--paper-input-container-input-webkit-spinner)}::content [prefix]{@apply(--paper-font-subhead);@apply(--paper-input-prefix);@apply(--layout-flex-none)}::content [suffix]{@apply(--paper-font-subhead);@apply(--paper-input-suffix);@apply(--layout-flex-none)}.input-content ::content input{min-width:0}.input-content ::content textarea{resize:none}.add-on-content{position:relative}.add-on-content.is-invalid ::content *{color:var(--paper-input-container-invalid-color,--error-color)}.add-on-content.is-highlighted ::content *{color:var(--paper-input-container-focus-color,--primary-color)}</style><template is="dom-if" if="[[!noLabelFloat]]"><div class="floated-label-placeholder" aria-hidden="true"> </div></template><div class$="[[_computeInputContentClass(noLabelFloat,alwaysFloatLabel,focused,invalid,_inputHasContent)]]"><content select="[prefix]" id="prefix"></content><div class="label-and-input-container" id="labelAndInputContainer"><content select=":not([add-on]):not([prefix]):not([suffix])"></content></div><content select="[suffix]"></content></div><div class$="[[_computeUnderlineClass(focused,invalid)]]"><div class="unfocused-line"></div><div class="focused-line"></div></div><div class$="[[_computeAddOnContentClass(focused,invalid)]]"><content id="addOnContent" select="[add-on]"></content></div></template></dom-module><script>Polymer({is:"paper-input-container",properties:{noLabelFloat:{type:Boolean,value:!1},alwaysFloatLabel:{type:Boolean,value:!1},attrForValue:{type:String,value:"bind-value"},autoValidate:{type:Boolean,value:!1},invalid:{observer:"_invalidChanged",type:Boolean,value:!1},focused:{readOnly:!0,type:Boolean,value:!1,notify:!0},_addons:{type:Array},_inputHasContent:{type:Boolean,value:!1},_inputSelector:{type:String,value:"input,textarea,.paper-input-input"},_boundOnFocus:{type:Function,value:function(){return this._onFocus.bind(this)}},_boundOnBlur:{type:Function,value:function(){return this._onBlur.bind(this)}},_boundOnInput:{type:Function,value:function(){return this._onInput.bind(this)}},_boundValueChanged:{type:Function,value:function(){return this._onValueChanged.bind(this)}}},listeners:{"addon-attached":"_onAddonAttached","iron-input-validate":"_onIronInputValidate"},get _valueChangedEvent(){return this.attrForValue+"-changed"},get _propertyForValue(){return Polymer.CaseMap.dashToCamelCase(this.attrForValue)},get _inputElement(){return Polymer.dom(this).querySelector(this._inputSelector)},get _inputElementValue(){return this._inputElement[this._propertyForValue]||this._inputElement.value},ready:function(){this._addons||(this._addons=[]),this.addEventListener("focus",this._boundOnFocus,!0),this.addEventListener("blur",this._boundOnBlur,!0)},attached:function(){this.attrForValue?this._inputElement.addEventListener(this._valueChangedEvent,this._boundValueChanged):this.addEventListener("input",this._onInput),""!=this._inputElementValue?this._handleValueAndAutoValidate(this._inputElement):this._handleValue(this._inputElement)},_onAddonAttached:function(t){this._addons||(this._addons=[]);var n=t.target;this._addons.indexOf(n)===-1&&(this._addons.push(n),this.isAttached&&this._handleValue(this._inputElement))},_onFocus:function(){this._setFocused(!0)},_onBlur:function(){this._setFocused(!1),this._handleValueAndAutoValidate(this._inputElement)},_onInput:function(t){this._handleValueAndAutoValidate(t.target)},_onValueChanged:function(t){this._handleValueAndAutoValidate(t.target)},_handleValue:function(t){var n=this._inputElementValue;n||0===n||"number"===t.type&&!t.checkValidity()?this._inputHasContent=!0:this._inputHasContent=!1,this.updateAddons({inputElement:t,value:n,invalid:this.invalid})},_handleValueAndAutoValidate:function(t){if(this.autoValidate){var n;n=t.validate?t.validate(this._inputElementValue):t.checkValidity(),this.invalid=!n}this._handleValue(t)},_onIronInputValidate:function(t){this.invalid=this._inputElement.invalid},_invalidChanged:function(){this._addons&&this.updateAddons({invalid:this.invalid})},updateAddons:function(t){for(var n,e=0;n=this._addons[e];e++)n.update(t)},_computeInputContentClass:function(t,n,e,i,a){var u="input-content";if(t)a&&(u+=" label-is-hidden");else{var o=this.querySelector("label");n||a?(u+=" label-is-floating",this.$.labelAndInputContainer.style.position="static",i?u+=" is-invalid":e&&(u+=" label-is-highlighted")):o&&(this.$.labelAndInputContainer.style.position="relative")}return u},_computeUnderlineClass:function(t,n){var e="underline";return n?e+=" is-invalid":t&&(e+=" is-highlighted"),e},_computeAddOnContentClass:function(t,n){var e="add-on-content";return n?e+=" is-invalid":t&&(e+=" is-highlighted"),e}})</script><script>Polymer.PaperInputAddonBehavior={hostAttributes:{"add-on":""},attached:function(){this.fire("addon-attached")},update:function(t){}}</script><dom-module id="paper-input-error" assetpath="../bower_components/paper-input/"><template><style>:host{display:inline-block;visibility:hidden;color:var(--paper-input-container-invalid-color,--error-color);@apply(--paper-font-caption);@apply(--paper-input-error);position:absolute;left:0;right:0}:host([invalid]){visibility:visible};</style><content></content></template></dom-module><script>Polymer({is:"paper-input-error",behaviors:[Polymer.PaperInputAddonBehavior],properties:{invalid:{readOnly:!0,reflectToAttribute:!0,type:Boolean}},update:function(e){this._setInvalid(e.invalid)}})</script><dom-module id="iron-a11y-announcer" assetpath="../bower_components/iron-a11y-announcer/"><template><style>:host{display:inline-block;position:fixed;clip:rect(0,0,0,0)}</style><div aria-live$="[[mode]]">[[_text]]</div></template><script>!function(){"use strict";Polymer.IronA11yAnnouncer=Polymer({is:"iron-a11y-announcer",properties:{mode:{type:String,value:"polite"},_text:{type:String,value:""}},created:function(){Polymer.IronA11yAnnouncer.instance||(Polymer.IronA11yAnnouncer.instance=this),document.body.addEventListener("iron-announce",this._onIronAnnounce.bind(this))},announce:function(n){this._text="",this.async(function(){this._text=n},100)},_onIronAnnounce:function(n){n.detail&&n.detail.text&&this.announce(n.detail.text)}}),Polymer.IronA11yAnnouncer.instance=null,Polymer.IronA11yAnnouncer.requestAvailability=function(){Polymer.IronA11yAnnouncer.instance||(Polymer.IronA11yAnnouncer.instance=document.createElement("iron-a11y-announcer")),document.body.appendChild(Polymer.IronA11yAnnouncer.instance)}}()</script></dom-module><script>Polymer({is:"iron-input",extends:"input",behaviors:[Polymer.IronValidatableBehavior],properties:{bindValue:{observer:"_bindValueChanged",type:String},preventInvalidInput:{type:Boolean},allowedPattern:{type:String,observer:"_allowedPatternChanged"},_previousValidInput:{type:String,value:""},_patternAlreadyChecked:{type:Boolean,value:!1}},listeners:{input:"_onInput",keypress:"_onKeypress"},registered:function(){this._canDispatchEventOnDisabled()||(this._origDispatchEvent=this.dispatchEvent,this.dispatchEvent=this._dispatchEventFirefoxIE)},created:function(){Polymer.IronA11yAnnouncer.requestAvailability()},_canDispatchEventOnDisabled:function(){var e=document.createElement("input"),t=!1;e.disabled=!0,e.addEventListener("feature-check-dispatch-event",function(){t=!0});try{e.dispatchEvent(new Event("feature-check-dispatch-event"))}catch(e){}return t},_dispatchEventFirefoxIE:function(){var e=this.disabled;this.disabled=!1,this._origDispatchEvent.apply(this,arguments),this.disabled=e},get _patternRegExp(){var e;if(this.allowedPattern)e=new RegExp(this.allowedPattern);else switch(this.type){case"number":e=/[0-9.,e-]/}return e},ready:function(){this.bindValue=this.value},_bindValueChanged:function(){this.value!==this.bindValue&&(this.value=this.bindValue||0===this.bindValue||this.bindValue===!1?this.bindValue:""),this.fire("bind-value-changed",{value:this.bindValue})},_allowedPatternChanged:function(){this.preventInvalidInput=!!this.allowedPattern},_onInput:function(){if(this.preventInvalidInput&&!this._patternAlreadyChecked){var e=this._checkPatternValidity();e||(this._announceInvalidCharacter("Invalid string of characters not entered."),this.value=this._previousValidInput)}this.bindValue=this.value,this._previousValidInput=this.value,this._patternAlreadyChecked=!1},_isPrintable:function(e){var t=8==e.keyCode||9==e.keyCode||13==e.keyCode||27==e.keyCode,i=19==e.keyCode||20==e.keyCode||45==e.keyCode||46==e.keyCode||144==e.keyCode||145==e.keyCode||e.keyCode>32&&e.keyCode<41||e.keyCode>111&&e.keyCode<124;return!(t||0==e.charCode&&i)},_onKeypress:function(e){if(this.preventInvalidInput||"number"===this.type){var t=this._patternRegExp;if(t&&!(e.metaKey||e.ctrlKey||e.altKey)){this._patternAlreadyChecked=!0;var i=String.fromCharCode(e.charCode);this._isPrintable(e)&&!t.test(i)&&(e.preventDefault(),this._announceInvalidCharacter("Invalid character "+i+" not entered."))}}},_checkPatternValidity:function(){var e=this._patternRegExp;if(!e)return!0;for(var t=0;t<this.value.length;t++)if(!e.test(this.value[t]))return!1;return!0},validate:function(){var e=this.checkValidity();return e&&(this.required&&""===this.value?e=!1:this.hasValidator()&&(e=Polymer.IronValidatableBehavior.validate.call(this,this.value))),this.invalid=!e,this.fire("iron-input-validate"),e},_announceInvalidCharacter:function(e){this.fire("iron-announce",{text:e})}})</script><dom-module id="login-form" assetpath="layouts/"><template><style is="custom-style" include="iron-flex iron-positioning"></style><style>:host{white-space:nowrap}#passwordDecorator{display:block;margin-bottom:16px}paper-checkbox{margin-right:8px}paper-button{margin-left:72px}.interact{height:125px}#validatebox{margin-top:16px;text-align:center}.validatemessage{margin-top:10px}</style><div class="layout vertical center center-center fit"><img src="/static/icons/favicon-192x192.png" height="192"> <a href="#" id="hideKeyboardOnFocus"></a><div class="interact"><div id="loginform" hidden$="[[showLoading]]"><paper-input-container id="passwordDecorator" invalid="[[isInvalid]]"><label>Password</label><input is="iron-input" type="password" id="passwordInput"><paper-input-error invalid="[[isInvalid]]">[[errorMessage]]</paper-input-error></paper-input-container><div class="layout horizontal center"><paper-checkbox for="" id="rememberLogin">Remember</paper-checkbox><paper-button id="loginButton">Log In</paper-button></div></div><div id="validatebox" hidden$="[[!showLoading]]"><paper-spinner active="true"></paper-spinner><br><div class="validatemessage">Loading data</div></div></div></div></template></dom-module><script>Polymer({is:"login-form",behaviors:[window.hassBehavior],properties:{hass:{type:Object},errorMessage:{type:String,bindNuclear:function(e){return e.authGetters.attemptErrorMessage}},isInvalid:{type:Boolean,bindNuclear:function(e){return e.authGetters.isInvalidAttempt}},isValidating:{type:Boolean,observer:"isValidatingChanged",bindNuclear:function(e){return e.authGetters.isValidating}},loadingResources:{type:Boolean,value:!1},forceShowLoading:{type:Boolean,value:!1},showLoading:{type:Boolean,computed:"computeShowSpinner(forceShowLoading, isValidating)"}},listeners:{keydown:"passwordKeyDown","loginButton.tap":"validatePassword"},observers:["validatingChanged(isValidating, isInvalid)"],attached:function(){window.removeInitMsg()},computeShowSpinner:function(e,i){return e||i},validatingChanged:function(e,i){e||i||(this.$.passwordInput.value="")},isValidatingChanged:function(e){e||this.async(function(){this.$.passwordInput.focus()}.bind(this),10)},passwordKeyDown:function(e){13===e.keyCode?(this.validatePassword(),e.preventDefault()):this.isInvalid&&(this.isInvalid=!1)},validatePassword:function(){this.$.hideKeyboardOnFocus.focus(),window.validateAuth(this.$.passwordInput.value,this.$.rememberLogin.checked)}})</script><script>Polymer({is:"iron-media-query",properties:{queryMatches:{type:Boolean,value:!1,readOnly:!0,notify:!0},query:{type:String,observer:"queryChanged"},full:{type:Boolean,value:!1},_boundMQHandler:{value:function(){return this.queryHandler.bind(this)}},_mq:{value:null}},attached:function(){this.style.display="none",this.queryChanged()},detached:function(){this._remove()},_add:function(){this._mq&&this._mq.addListener(this._boundMQHandler)},_remove:function(){this._mq&&this._mq.removeListener(this._boundMQHandler),this._mq=null},queryChanged:function(){this._remove();var e=this.query;e&&(this.full||"("===e[0]||(e="("+e+")"),this._mq=window.matchMedia(e),this._add(),this.queryHandler(this._mq))},queryHandler:function(e){this._setQueryMatches(e.matches)}})</script><script>Polymer.IronSelection=function(e){this.selection=[],this.selectCallback=e},Polymer.IronSelection.prototype={get:function(){return this.multi?this.selection.slice():this.selection[0]},clear:function(e){this.selection.slice().forEach(function(t){(!e||e.indexOf(t)<0)&&this.setItemSelected(t,!1)},this)},isSelected:function(e){return this.selection.indexOf(e)>=0},setItemSelected:function(e,t){if(null!=e&&t!==this.isSelected(e)){if(t)this.selection.push(e);else{var i=this.selection.indexOf(e);i>=0&&this.selection.splice(i,1)}this.selectCallback&&this.selectCallback(e,t)}},select:function(e){this.multi?this.toggle(e):this.get()!==e&&(this.setItemSelected(this.get(),!1),this.setItemSelected(e,!0))},toggle:function(e){this.setItemSelected(e,!this.isSelected(e))}}</script><script>Polymer.IronSelectableBehavior={properties:{attrForSelected:{type:String,value:null},selected:{type:String,notify:!0},selectedItem:{type:Object,readOnly:!0,notify:!0},activateEvent:{type:String,value:"tap",observer:"_activateEventChanged"},selectable:String,selectedClass:{type:String,value:"iron-selected"},selectedAttribute:{type:String,value:null},fallbackSelection:{type:String,value:null},items:{type:Array,readOnly:!0,notify:!0,value:function(){return[]}},_excludedLocalNames:{type:Object,value:function(){return{template:1}}}},observers:["_updateAttrForSelected(attrForSelected)","_updateSelected(selected)","_checkFallback(fallbackSelection)"],created:function(){this._bindFilterItem=this._filterItem.bind(this),this._selection=new Polymer.IronSelection(this._applySelection.bind(this))},attached:function(){this._observer=this._observeItems(this),this._updateItems(),this._shouldUpdateSelection||this._updateSelected(),this._addListener(this.activateEvent)},detached:function(){this._observer&&Polymer.dom(this).unobserveNodes(this._observer),this._removeListener(this.activateEvent)},indexOf:function(e){return this.items.indexOf(e)},select:function(e){this.selected=e},selectPrevious:function(){var e=this.items.length,t=(Number(this._valueToIndex(this.selected))-1+e)%e;this.selected=this._indexToValue(t)},selectNext:function(){var e=(Number(this._valueToIndex(this.selected))+1)%this.items.length;this.selected=this._indexToValue(e)},selectIndex:function(e){this.select(this._indexToValue(e))},forceSynchronousItemUpdate:function(){this._updateItems()},get _shouldUpdateSelection(){return null!=this.selected},_checkFallback:function(){this._shouldUpdateSelection&&this._updateSelected()},_addListener:function(e){this.listen(this,e,"_activateHandler")},_removeListener:function(e){this.unlisten(this,e,"_activateHandler")},_activateEventChanged:function(e,t){this._removeListener(t),this._addListener(e)},_updateItems:function(){var e=Polymer.dom(this).queryDistributedElements(this.selectable||"*");e=Array.prototype.filter.call(e,this._bindFilterItem),this._setItems(e)},_updateAttrForSelected:function(){this._shouldUpdateSelection&&(this.selected=this._indexToValue(this.indexOf(this.selectedItem)))},_updateSelected:function(){this._selectSelected(this.selected)},_selectSelected:function(e){this._selection.select(this._valueToItem(this.selected)),this.fallbackSelection&&this.items.length&&void 0===this._selection.get()&&(this.selected=this.fallbackSelection)},_filterItem:function(e){return!this._excludedLocalNames[e.localName]},_valueToItem:function(e){return null==e?null:this.items[this._valueToIndex(e)]},_valueToIndex:function(e){if(!this.attrForSelected)return Number(e);for(var t,i=0;t=this.items[i];i++)if(this._valueForItem(t)==e)return i},_indexToValue:function(e){if(!this.attrForSelected)return e;var t=this.items[e];return t?this._valueForItem(t):void 0},_valueForItem:function(e){var t=e[Polymer.CaseMap.dashToCamelCase(this.attrForSelected)];return void 0!=t?t:e.getAttribute(this.attrForSelected)},_applySelection:function(e,t){this.selectedClass&&this.toggleClass(this.selectedClass,t,e),this.selectedAttribute&&this.toggleAttribute(this.selectedAttribute,t,e),this._selectionChange(),this.fire("iron-"+(t?"select":"deselect"),{item:e})},_selectionChange:function(){this._setSelectedItem(this._selection.get())},_observeItems:function(e){return Polymer.dom(e).observeNodes(function(e){this._updateItems(),this._shouldUpdateSelection&&this._updateSelected(),this.fire("iron-items-changed",e,{bubbles:!1,cancelable:!1})})},_activateHandler:function(e){for(var t=e.target,i=this.items;t&&t!=this;){var s=i.indexOf(t);if(s>=0){var n=this._indexToValue(s);return void this._itemActivate(n,t)}t=t.parentNode}},_itemActivate:function(e,t){this.fire("iron-activate",{selected:e,item:t},{cancelable:!0}).defaultPrevented||this.select(e)}}</script><script>Polymer.IronMultiSelectableBehaviorImpl={properties:{multi:{type:Boolean,value:!1,observer:"multiChanged"},selectedValues:{type:Array,notify:!0},selectedItems:{type:Array,readOnly:!0,notify:!0}},observers:["_updateSelected(selectedValues.splices)"],select:function(e){this.multi?this.selectedValues?this._toggleSelected(e):this.selectedValues=[e]:this.selected=e},multiChanged:function(e){this._selection.multi=e},get _shouldUpdateSelection(){return null!=this.selected||null!=this.selectedValues&&this.selectedValues.length},_updateAttrForSelected:function(){this.multi?this._shouldUpdateSelection&&(this.selectedValues=this.selectedItems.map(function(e){return this._indexToValue(this.indexOf(e))},this).filter(function(e){return null!=e},this)):Polymer.IronSelectableBehavior._updateAttrForSelected.apply(this)},_updateSelected:function(){this.multi?this._selectMulti(this.selectedValues):this._selectSelected(this.selected)},_selectMulti:function(e){if(e){var t=this._valuesToItems(e);this._selection.clear(t);for(var l=0;l<t.length;l++)this._selection.setItemSelected(t[l],!0);if(this.fallbackSelection&&this.items.length&&!this._selection.get().length){var s=this._valueToItem(this.fallbackSelection);s&&(this.selectedValues=[this.fallbackSelection])}}else this._selection.clear()},_selectionChange:function(){var e=this._selection.get();this.multi?this._setSelectedItems(e):(this._setSelectedItems([e]),this._setSelectedItem(e))},_toggleSelected:function(e){var t=this.selectedValues.indexOf(e),l=t<0;l?this.push("selectedValues",e):this.splice("selectedValues",t,1)},_valuesToItems:function(e){return null==e?null:e.map(function(e){return this._valueToItem(e)},this)}},Polymer.IronMultiSelectableBehavior=[Polymer.IronSelectableBehavior,Polymer.IronMultiSelectableBehaviorImpl]</script><script>Polymer({is:"iron-selector",behaviors:[Polymer.IronMultiSelectableBehavior]})</script><script>Polymer.IronResizableBehavior={properties:{_parentResizable:{type:Object,observer:"_parentResizableChanged"},_notifyingDescendant:{type:Boolean,value:!1}},listeners:{"iron-request-resize-notifications":"_onIronRequestResizeNotifications"},created:function(){this._interestedResizables=[],this._boundNotifyResize=this.notifyResize.bind(this)},attached:function(){this.fire("iron-request-resize-notifications",null,{node:this,bubbles:!0,cancelable:!0}),this._parentResizable||(window.addEventListener("resize",this._boundNotifyResize),this.notifyResize())},detached:function(){this._parentResizable?this._parentResizable.stopResizeNotificationsFor(this):window.removeEventListener("resize",this._boundNotifyResize),this._parentResizable=null},notifyResize:function(){this.isAttached&&(this._interestedResizables.forEach(function(e){this.resizerShouldNotify(e)&&this._notifyDescendant(e)},this),this._fireResize())},assignParentResizable:function(e){this._parentResizable=e},stopResizeNotificationsFor:function(e){var i=this._interestedResizables.indexOf(e);i>-1&&(this._interestedResizables.splice(i,1),this.unlisten(e,"iron-resize","_onDescendantIronResize"))},resizerShouldNotify:function(e){return!0},_onDescendantIronResize:function(e){return this._notifyingDescendant?void e.stopPropagation():void(Polymer.Settings.useShadow||this._fireResize())},_fireResize:function(){this.fire("iron-resize",null,{node:this,bubbles:!1})},_onIronRequestResizeNotifications:function(e){var i=e.path?e.path[0]:e.target;i!==this&&(this._interestedResizables.indexOf(i)===-1&&(this._interestedResizables.push(i),this.listen(i,"iron-resize","_onDescendantIronResize")),i.assignParentResizable(this),this._notifyDescendant(i),e.stopPropagation())},_parentResizableChanged:function(e){e&&window.removeEventListener("resize",this._boundNotifyResize)},_notifyDescendant:function(e){this.isAttached&&(this._notifyingDescendant=!0,e.notifyResize(),this._notifyingDescendant=!1)}}</script><dom-module id="paper-drawer-panel" assetpath="../bower_components/paper-drawer-panel/"><template><style>:host{display:block;position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden}iron-selector>#drawer{position:absolute;top:0;left:0;height:100%;background-color:#fff;-moz-box-sizing:border-box;box-sizing:border-box;@apply(--paper-drawer-panel-drawer-container)}.transition-drawer{transition:-webkit-transform ease-in-out .3s,width ease-in-out .3s,visibility .3s;transition:transform ease-in-out .3s,width ease-in-out .3s,visibility .3s}.left-drawer>#drawer{@apply(--paper-drawer-panel-left-drawer-container)}.right-drawer>#drawer{left:auto;right:0;@apply(--paper-drawer-panel-right-drawer-container)}iron-selector>#main{position:absolute;top:0;right:0;bottom:0;@apply(--paper-drawer-panel-main-container)}.transition>#main{transition:left ease-in-out .3s,padding ease-in-out .3s}.right-drawer>#main{left:0}.right-drawer.transition>#main{transition:right ease-in-out .3s,padding ease-in-out .3s}#main>::content>[main]{height:100%}#drawer>::content>[drawer]{height:100%}#scrim{position:absolute;top:0;right:0;bottom:0;left:0;visibility:hidden;opacity:0;transition:opacity ease-in-out .38s,visibility ease-in-out .38s;background-color:rgba(0,0,0,.3);@apply(--paper-drawer-panel-scrim)}.narrow-layout>#drawer{will-change:transform}.narrow-layout>#drawer.iron-selected{box-shadow:2px 2px 4px rgba(0,0,0,.15)}.right-drawer.narrow-layout>#drawer.iron-selected{box-shadow:-2px 2px 4px rgba(0,0,0,.15)}.narrow-layout>#drawer>::content>[drawer]{border:0}.left-drawer.narrow-layout>#drawer:not(.iron-selected){visibility:hidden;-webkit-transform:translateX(-100%);transform:translateX(-100%)}.right-drawer.narrow-layout>#drawer:not(.iron-selected){left:auto;visibility:hidden;-webkit-transform:translateX(100%);transform:translateX(100%)}.left-drawer.dragging>#drawer:not(.iron-selected),.left-drawer.peeking>#drawer:not(.iron-selected),.right-drawer.dragging>#drawer:not(.iron-selected),.right-drawer.peeking>#drawer:not(.iron-selected){visibility:visible}.narrow-layout>#main{padding:0}.right-drawer.narrow-layout>#main{left:0;right:0}.dragging>#main>#scrim,.narrow-layout>#main:not(.iron-selected)>#scrim{visibility:visible;opacity:var(--paper-drawer-panel-scrim-opacity,1)}.narrow-layout>#main>*{margin:0;min-height:100%;left:0;right:0;-moz-box-sizing:border-box;box-sizing:border-box}iron-selector:not(.narrow-layout) ::content [paper-drawer-toggle]{display:none}</style><iron-media-query id="mq" on-query-matches-changed="_onQueryMatchesChanged" query="[[_computeMediaQuery(forceNarrow, responsiveWidth)]]"></iron-media-query><iron-selector attr-for-selected="id" class$="[[_computeIronSelectorClass(narrow, _transition, dragging, rightDrawer, peeking)]]" activate-event="" selected="[[selected]]"><div id="main" style$="[[_computeMainStyle(narrow, rightDrawer, drawerWidth)]]"><content select="[main]"></content><div id="scrim" on-tap="closeDrawer"></div></div><div id="drawer" style$="[[_computeDrawerStyle(drawerWidth)]]"><content id="drawerContent" select="[drawer]"></content></div></iron-selector></template><script>!function(){"use strict";function e(e){var t=[];for(var i in e)e.hasOwnProperty(i)&&e[i]&&t.push(i);return t.join(" ")}var t=null;Polymer({is:"paper-drawer-panel",behaviors:[Polymer.IronResizableBehavior],properties:{defaultSelected:{type:String,value:"main"},disableEdgeSwipe:{type:Boolean,value:!1},disableSwipe:{type:Boolean,value:!1},dragging:{type:Boolean,value:!1,readOnly:!0,notify:!0},drawerWidth:{type:String,value:"256px"},edgeSwipeSensitivity:{type:Number,value:30},forceNarrow:{type:Boolean,value:!1},hasTransform:{type:Boolean,value:function(){return"transform"in this.style}},hasWillChange:{type:Boolean,value:function(){return"willChange"in this.style}},narrow:{reflectToAttribute:!0,type:Boolean,value:!1,readOnly:!0,notify:!0},peeking:{type:Boolean,value:!1,readOnly:!0,notify:!0},responsiveWidth:{type:String,value:"768px"},rightDrawer:{type:Boolean,value:!1},selected:{reflectToAttribute:!0,notify:!0,type:String,value:null},drawerToggleAttribute:{type:String,value:"paper-drawer-toggle"},drawerFocusSelector:{type:String,value:'a[href]:not([tabindex="-1"]),area[href]:not([tabindex="-1"]),input:not([disabled]):not([tabindex="-1"]),select:not([disabled]):not([tabindex="-1"]),textarea:not([disabled]):not([tabindex="-1"]),button:not([disabled]):not([tabindex="-1"]),iframe:not([tabindex="-1"]),[tabindex]:not([tabindex="-1"]),[contentEditable=true]:not([tabindex="-1"])'},_transition:{type:Boolean,value:!1}},listeners:{tap:"_onTap",track:"_onTrack",down:"_downHandler",up:"_upHandler",transitionend:"_onTransitionEnd"},observers:["_forceNarrowChanged(forceNarrow, defaultSelected)","_toggleFocusListener(selected)"],ready:function(){this._transition=!0,this._boundFocusListener=this._didFocus.bind(this)},togglePanel:function(){this._isMainSelected()?this.openDrawer():this.closeDrawer()},openDrawer:function(){requestAnimationFrame(function(){this.toggleClass("transition-drawer",!0,this.$.drawer),this.selected="drawer"}.bind(this))},closeDrawer:function(){requestAnimationFrame(function(){this.toggleClass("transition-drawer",!0,this.$.drawer),this.selected="main"}.bind(this))},_onTransitionEnd:function(e){var t=Polymer.dom(e).localTarget;if(t===this&&("left"!==e.propertyName&&"right"!==e.propertyName||this.notifyResize(),"transform"===e.propertyName&&(requestAnimationFrame(function(){this.toggleClass("transition-drawer",!1,this.$.drawer)}.bind(this)),"drawer"===this.selected))){var i=this._getAutoFocusedNode();i&&i.focus()}},_computeIronSelectorClass:function(t,i,r,n,a){return e({dragging:r,"narrow-layout":t,"right-drawer":n,"left-drawer":!n,transition:i,peeking:a})},_computeDrawerStyle:function(e){return"width:"+e+";"},_computeMainStyle:function(e,t,i){var r="";return r+="left:"+(e||t?"0":i)+";",t&&(r+="right:"+(e?"":i)+";"),r},_computeMediaQuery:function(e,t){return e?"":"(max-width: "+t+")"},_computeSwipeOverlayHidden:function(e,t){return!e||t},_onTrack:function(e){if(!t||this===t)switch(e.detail.state){case"start":this._trackStart(e);break;case"track":this._trackX(e);break;case"end":this._trackEnd(e)}},_responsiveChange:function(e){this._setNarrow(e),this.selected=this.narrow?this.defaultSelected:null,this.setScrollDirection(this._swipeAllowed()?"y":"all"),this.fire("paper-responsive-change",{narrow:this.narrow})},_onQueryMatchesChanged:function(e){this._responsiveChange(e.detail.value)},_forceNarrowChanged:function(){this._responsiveChange(this.forceNarrow||this.$.mq.queryMatches)},_swipeAllowed:function(){return this.narrow&&!this.disableSwipe},_isMainSelected:function(){return"main"===this.selected},_startEdgePeek:function(){this.width=this.$.drawer.offsetWidth,this._moveDrawer(this._translateXForDeltaX(this.rightDrawer?-this.edgeSwipeSensitivity:this.edgeSwipeSensitivity)),this._setPeeking(!0)},_stopEdgePeek:function(){this.peeking&&(this._setPeeking(!1),this._moveDrawer(null))},_downHandler:function(e){!this.dragging&&this._isMainSelected()&&this._isEdgeTouch(e)&&!t&&(this._startEdgePeek(),e.preventDefault(),t=this)},_upHandler:function(){this._stopEdgePeek(),t=null},_onTap:function(e){var t=Polymer.dom(e).localTarget,i=t&&this.drawerToggleAttribute&&t.hasAttribute(this.drawerToggleAttribute);i&&this.togglePanel()},_isEdgeTouch:function(e){var t=e.detail.x;return!this.disableEdgeSwipe&&this._swipeAllowed()&&(this.rightDrawer?t>=this.offsetWidth-this.edgeSwipeSensitivity:t<=this.edgeSwipeSensitivity)},_trackStart:function(e){this._swipeAllowed()&&(t=this,this._setDragging(!0),this._isMainSelected()&&this._setDragging(this.peeking||this._isEdgeTouch(e)),this.dragging&&(this.width=this.$.drawer.offsetWidth,this._transition=!1))},_translateXForDeltaX:function(e){var t=this._isMainSelected();return this.rightDrawer?Math.max(0,t?this.width+e:e):Math.min(0,t?e-this.width:e)},_trackX:function(e){if(this.dragging){var t=e.detail.dx;if(this.peeking){if(Math.abs(t)<=this.edgeSwipeSensitivity)return;this._setPeeking(!1)}this._moveDrawer(this._translateXForDeltaX(t))}},_trackEnd:function(e){if(this.dragging){var i=e.detail.dx>0;this._setDragging(!1),this._transition=!0,t=null,this._moveDrawer(null),this.rightDrawer?this[i?"closeDrawer":"openDrawer"]():this[i?"openDrawer":"closeDrawer"]()}},_transformForTranslateX:function(e){return null===e?"":this.hasWillChange?"translateX("+e+"px)":"translate3d("+e+"px, 0, 0)"},_moveDrawer:function(e){this.transform(this._transformForTranslateX(e),this.$.drawer)},_getDrawerContent:function(){return Polymer.dom(this.$.drawerContent).getDistributedNodes()[0]},_getAutoFocusedNode:function(){var e=this._getDrawerContent();return this.drawerFocusSelector?Polymer.dom(e).querySelector(this.drawerFocusSelector)||e:null},_toggleFocusListener:function(e){"drawer"===e?this.addEventListener("focus",this._boundFocusListener,!0):this.removeEventListener("focus",this._boundFocusListener,!0)},_didFocus:function(e){var t=this._getAutoFocusedNode();if(t){var i=Polymer.dom(e).path,r=(i[0],this._getDrawerContent()),n=i.indexOf(r)!==-1;n||(e.stopPropagation(),t.focus())}},_isDrawerClosed:function(e,t){return!e||"drawer"!==t}})}()</script></dom-module><dom-module id="iron-pages" assetpath="../bower_components/iron-pages/"><template><style>:host{display:block}:host>::content>:not(.iron-selected){display:none!important}</style><content></content></template><script>Polymer({is:"iron-pages",behaviors:[Polymer.IronResizableBehavior,Polymer.IronSelectableBehavior],properties:{activateEvent:{type:String,value:null}},observers:["_selectedPageChanged(selected)"],_selectedPageChanged:function(e,a){this.async(this.notifyResize)}})</script></dom-module><dom-module id="iron-icon" assetpath="../bower_components/iron-icon/"><template><style>:host{@apply(--layout-inline);@apply(--layout-center-center);position:relative;vertical-align:middle;fill:var(--iron-icon-fill-color,currentcolor);stroke:var(--iron-icon-stroke-color,none);width:var(--iron-icon-width,24px);height:var(--iron-icon-height,24px);@apply(--iron-icon)}</style></template><script>Polymer({is:"iron-icon",properties:{icon:{type:String},theme:{type:String},src:{type:String},_meta:{value:Polymer.Base.create("iron-meta",{type:"iconset"})}},observers:["_updateIcon(_meta, isAttached)","_updateIcon(theme, isAttached)","_srcChanged(src, isAttached)","_iconChanged(icon, isAttached)"],_DEFAULT_ICONSET:"icons",_iconChanged:function(t){var i=(t||"").split(":");this._iconName=i.pop(),this._iconsetName=i.pop()||this._DEFAULT_ICONSET,this._updateIcon()},_srcChanged:function(t){this._updateIcon()},_usesIconset:function(){return this.icon||!this.src},_updateIcon:function(){this._usesIconset()?(this._img&&this._img.parentNode&&Polymer.dom(this.root).removeChild(this._img),""===this._iconName?this._iconset&&this._iconset.removeIcon(this):this._iconsetName&&this._meta&&(this._iconset=this._meta.byKey(this._iconsetName),this._iconset?(this._iconset.applyIcon(this,this._iconName,this.theme),this.unlisten(window,"iron-iconset-added","_updateIcon")):this.listen(window,"iron-iconset-added","_updateIcon"))):(this._iconset&&this._iconset.removeIcon(this),this._img||(this._img=document.createElement("img"),this._img.style.width="100%",this._img.style.height="100%",this._img.draggable=!1),this._img.src=this.src,Polymer.dom(this.root).appendChild(this._img))}})</script></dom-module><dom-module id="paper-icon-button" assetpath="../bower_components/paper-icon-button/"><template strip-whitespace=""><style>:host{display:inline-block;position:relative;padding:8px;outline:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;z-index:0;line-height:1;width:40px;height:40px;-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:transparent;box-sizing:border-box!important;@apply(--paper-icon-button)}:host #ink{color:var(--paper-icon-button-ink-color,--primary-text-color);opacity:.6}:host([disabled]){color:var(--paper-icon-button-disabled-text,--disabled-text-color);pointer-events:none;cursor:auto;@apply(--paper-icon-button-disabled)}:host(:hover){@apply(--paper-icon-button-hover)}iron-icon{--iron-icon-width:100%;--iron-icon-height:100%}</style><iron-icon id="icon" src="[[src]]" icon="[[icon]]" alt$="[[alt]]"></iron-icon></template><script>Polymer({is:"paper-icon-button",hostAttributes:{role:"button",tabindex:"0"},behaviors:[Polymer.PaperInkyFocusBehavior],properties:{src:{type:String},icon:{type:String},alt:{type:String,observer:"_altChanged"}},_altChanged:function(t,e){var r=this.getAttribute("aria-label");r&&e!=r||this.setAttribute("aria-label",t)}})</script></dom-module><script>Polymer.IronMenuBehaviorImpl={properties:{focusedItem:{observer:"_focusedItemChanged",readOnly:!0,type:Object},attrForItemTitle:{type:String}},_SEARCH_RESET_TIMEOUT_MS:1e3,hostAttributes:{role:"menu",tabindex:"0"},observers:["_updateMultiselectable(multi)"],listeners:{focus:"_onFocus",keydown:"_onKeydown","iron-items-changed":"_onIronItemsChanged"},keyBindings:{up:"_onUpKey",down:"_onDownKey",esc:"_onEscKey","shift+tab:keydown":"_onShiftTabDown"},attached:function(){this._resetTabindices()},select:function(e){this._defaultFocusAsync&&(this.cancelAsync(this._defaultFocusAsync),this._defaultFocusAsync=null);var t=this._valueToItem(e);t&&t.hasAttribute("disabled")||(this._setFocusedItem(t),Polymer.IronMultiSelectableBehaviorImpl.select.apply(this,arguments))},_resetTabindices:function(){var e=this.multi?this.selectedItems&&this.selectedItems[0]:this.selectedItem;this.items.forEach(function(t){t.setAttribute("tabindex",t===e?"0":"-1")},this)},_updateMultiselectable:function(e){e?this.setAttribute("aria-multiselectable","true"):this.removeAttribute("aria-multiselectable")},_focusWithKeyboardEvent:function(e){this.cancelDebouncer("_clearSearchText");var t=this._searchText||"",s=e.key&&1==e.key.length?e.key:String.fromCharCode(e.keyCode);t+=s.toLocaleLowerCase();for(var i,o=t.length,n=0;i=this.items[n];n++)if(!i.hasAttribute("disabled")){var r=this.attrForItemTitle||"textContent",a=(i[r]||i.getAttribute(r)||"").trim();if(!(a.length<o)&&a.slice(0,o).toLocaleLowerCase()==t){this._setFocusedItem(i);break}}this._searchText=t,this.debounce("_clearSearchText",this._clearSearchText,this._SEARCH_RESET_TIMEOUT_MS)},_clearSearchText:function(){this._searchText=""},_focusPrevious:function(){for(var e=this.items.length,t=Number(this.indexOf(this.focusedItem)),s=1;s<e+1;s++){var i=this.items[(t-s+e)%e];if(!i.hasAttribute("disabled")){var o=Polymer.dom(i).getOwnerRoot()||document;if(this._setFocusedItem(i),Polymer.dom(o).activeElement==i)return}}},_focusNext:function(){for(var e=this.items.length,t=Number(this.indexOf(this.focusedItem)),s=1;s<e+1;s++){var i=this.items[(t+s)%e];if(!i.hasAttribute("disabled")){var o=Polymer.dom(i).getOwnerRoot()||document;if(this._setFocusedItem(i),Polymer.dom(o).activeElement==i)return}}},_applySelection:function(e,t){t?e.setAttribute("aria-selected","true"):e.removeAttribute("aria-selected"),Polymer.IronSelectableBehavior._applySelection.apply(this,arguments)},_focusedItemChanged:function(e,t){t&&t.setAttribute("tabindex","-1"),e&&(e.setAttribute("tabindex","0"),e.focus())},_onIronItemsChanged:function(e){e.detail.addedNodes.length&&this._resetTabindices()},_onShiftTabDown:function(e){var t=this.getAttribute("tabindex");Polymer.IronMenuBehaviorImpl._shiftTabPressed=!0,this._setFocusedItem(null),this.setAttribute("tabindex","-1"),this.async(function(){this.setAttribute("tabindex",t),Polymer.IronMenuBehaviorImpl._shiftTabPressed=!1},1)},_onFocus:function(e){if(!Polymer.IronMenuBehaviorImpl._shiftTabPressed){var t=Polymer.dom(e).rootTarget;(t===this||"undefined"==typeof t.tabIndex||this.isLightDescendant(t))&&(this._defaultFocusAsync=this.async(function(){var e=this.multi?this.selectedItems&&this.selectedItems[0]:this.selectedItem;this._setFocusedItem(null),e?this._setFocusedItem(e):this.items[0]&&this._focusNext()}))}},_onUpKey:function(e){this._focusPrevious(),e.detail.keyboardEvent.preventDefault()},_onDownKey:function(e){this._focusNext(),e.detail.keyboardEvent.preventDefault()},_onEscKey:function(e){this.focusedItem.blur()},_onKeydown:function(e){this.keyboardEventMatchesKeys(e,"up down esc")||this._focusWithKeyboardEvent(e),e.stopPropagation()},_activateHandler:function(e){Polymer.IronSelectableBehavior._activateHandler.call(this,e),e.stopPropagation()}},Polymer.IronMenuBehaviorImpl._shiftTabPressed=!1,Polymer.IronMenuBehavior=[Polymer.IronMultiSelectableBehavior,Polymer.IronA11yKeysBehavior,Polymer.IronMenuBehaviorImpl]</script><script>Polymer.IronMenubarBehaviorImpl={hostAttributes:{role:"menubar"},keyBindings:{left:"_onLeftKey",right:"_onRightKey"},_onUpKey:function(e){this.focusedItem.click(),e.detail.keyboardEvent.preventDefault()},_onDownKey:function(e){this.focusedItem.click(),e.detail.keyboardEvent.preventDefault()},get _isRTL(){return"rtl"===window.getComputedStyle(this).direction},_onLeftKey:function(e){this._isRTL?this._focusNext():this._focusPrevious(),e.detail.keyboardEvent.preventDefault()},_onRightKey:function(e){this._isRTL?this._focusPrevious():this._focusNext(),e.detail.keyboardEvent.preventDefault()},_onKeydown:function(e){this.keyboardEventMatchesKeys(e,"up down left right esc")||this._focusWithKeyboardEvent(e)}},Polymer.IronMenubarBehavior=[Polymer.IronMenuBehavior,Polymer.IronMenubarBehaviorImpl]</script><script>Polymer({is:"iron-iconset-svg",properties:{name:{type:String,observer:"_nameChanged"},size:{type:Number,value:24},rtlMirroring:{type:Boolean,value:!1}},attached:function(){this.style.display="none"},getIconNames:function(){return this._icons=this._createIconMap(),Object.keys(this._icons).map(function(e){return this.name+":"+e},this)},applyIcon:function(e,t){e=e.root||e,this.removeIcon(e);var n=this._cloneIcon(t,this.rtlMirroring&&this._targetIsRTL(e));if(n){var r=Polymer.dom(e);return r.insertBefore(n,r.childNodes[0]),e._svgIcon=n}return null},removeIcon:function(e){e=e.root||e,e._svgIcon&&(Polymer.dom(e).removeChild(e._svgIcon),e._svgIcon=null)},_targetIsRTL:function(e){return null==this.__targetIsRTL&&(e&&e.nodeType!==Node.ELEMENT_NODE&&(e=e.host),this.__targetIsRTL=e&&"rtl"===window.getComputedStyle(e).direction),this.__targetIsRTL},_nameChanged:function(){new Polymer.IronMeta({type:"iconset",key:this.name,value:this}),this.async(function(){this.fire("iron-iconset-added",this,{node:window})})},_createIconMap:function(){var e=Object.create(null);return Polymer.dom(this).querySelectorAll("[id]").forEach(function(t){e[t.id]=t}),e},_cloneIcon:function(e,t){return this._icons=this._icons||this._createIconMap(),this._prepareSvgClone(this._icons[e],this.size,t)},_prepareSvgClone:function(e,t,n){if(e){var r=e.cloneNode(!0),i=document.createElementNS("http://www.w3.org/2000/svg","svg"),o=r.getAttribute("viewBox")||"0 0 "+t+" "+t,s="pointer-events: none; display: block; width: 100%; height: 100%;";return n&&r.hasAttribute("mirror-in-rtl")&&(s+="-webkit-transform:scale(-1,1);transform:scale(-1,1);"),i.setAttribute("viewBox",o),i.setAttribute("preserveAspectRatio","xMidYMid meet"),i.style.cssText=s,i.appendChild(r).removeAttribute("id"),i}return null}})</script><iron-iconset-svg name="paper-tabs" size="24"><svg><defs><g id="chevron-left"><path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"></path></g><g id="chevron-right"><path d="M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"></path></g></defs></svg></iron-iconset-svg><dom-module id="paper-tab" assetpath="../bower_components/paper-tabs/"><template><style>:host{@apply(--layout-inline);@apply(--layout-center);@apply(--layout-center-justified);@apply(--layout-flex-auto);position:relative;padding:0 12px;overflow:hidden;cursor:pointer;vertical-align:middle;@apply(--paper-font-common-base);@apply(--paper-tab)}:host(:focus){outline:0}:host([link]){padding:0}.tab-content{height:100%;transform:translateZ(0);-webkit-transform:translateZ(0);transition:opacity .1s cubic-bezier(.4,0,1,1);@apply(--layout-horizontal);@apply(--layout-center-center);@apply(--layout-flex-auto);@apply(--paper-tab-content)}:host(:not(.iron-selected))>.tab-content{opacity:.8;@apply(--paper-tab-content-unselected)}:host(:focus) .tab-content{opacity:1;font-weight:700}paper-ripple{color:var(--paper-tab-ink,--paper-yellow-a100)}.tab-content>::content>a{@apply(--layout-flex-auto);height:100%}</style><div class="tab-content"><content></content></div></template><script>Polymer({is:"paper-tab",behaviors:[Polymer.IronControlState,Polymer.IronButtonState,Polymer.PaperRippleBehavior],properties:{link:{type:Boolean,value:!1,reflectToAttribute:!0}},hostAttributes:{role:"tab"},listeners:{down:"_updateNoink",tap:"_onTap"},attached:function(){this._updateNoink()},get _parentNoink(){var t=Polymer.dom(this).parentNode;return!!t&&!!t.noink},_updateNoink:function(){this.noink=!!this.noink||!!this._parentNoink},_onTap:function(t){if(this.link){var e=this.queryEffectiveChildren("a");if(!e)return;if(t.target===e)return;e.click()}}})</script></dom-module><dom-module id="paper-tabs" assetpath="../bower_components/paper-tabs/"><template><style>:host{@apply(--layout);@apply(--layout-center);height:48px;font-size:14px;font-weight:500;overflow:hidden;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:transparent;@apply(--paper-tabs)}:host-context([dir=rtl]){@apply(--layout-horizontal-reverse)}#tabsContainer{position:relative;height:100%;white-space:nowrap;overflow:hidden;@apply(--layout-flex-auto);@apply(--paper-tabs-container)}#tabsContent{height:100%;-moz-flex-basis:auto;-ms-flex-basis:auto;flex-basis:auto;@apply(--paper-tabs-content)}#tabsContent.scrollable{position:absolute;white-space:nowrap}#tabsContent.scrollable.fit-container,#tabsContent:not(.scrollable){@apply(--layout-horizontal)}#tabsContent.scrollable.fit-container{min-width:100%}#tabsContent.scrollable.fit-container>::content>*{-ms-flex:1 0 auto;-webkit-flex:1 0 auto;flex:1 0 auto}.hidden{display:none}.not-visible{opacity:0;cursor:default}paper-icon-button{width:48px;height:48px;padding:12px;margin:0 4px}#selectionBar{position:absolute;height:2px;bottom:0;left:0;right:0;background-color:var(--paper-tabs-selection-bar-color,--paper-yellow-a100);-webkit-transform:scale(0);transform:scale(0);-webkit-transform-origin:left center;transform-origin:left center;transition:-webkit-transform;transition:transform;@apply(--paper-tabs-selection-bar)}#selectionBar.align-bottom{top:0;bottom:auto}#selectionBar.expand{transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,1,1)}#selectionBar.contract{transition-duration:.18s;transition-timing-function:cubic-bezier(0,0,.2,1)}#tabsContent>::content>:not(#selectionBar){height:100%}</style><paper-icon-button icon="paper-tabs:chevron-left" class$="[[_computeScrollButtonClass(_leftHidden, scrollable, hideScrollButtons)]]" on-up="_onScrollButtonUp" on-down="_onLeftScrollButtonDown" tabindex="-1"></paper-icon-button><div id="tabsContainer" on-track="_scroll" on-down="_down"><div id="tabsContent" class$="[[_computeTabsContentClass(scrollable, fitContainer)]]"><div id="selectionBar" class$="[[_computeSelectionBarClass(noBar, alignBottom)]]" on-transitionend="_onBarTransitionEnd"></div><content select="*"></content></div></div><paper-icon-button icon="paper-tabs:chevron-right" class$="[[_computeScrollButtonClass(_rightHidden, scrollable, hideScrollButtons)]]" on-up="_onScrollButtonUp" on-down="_onRightScrollButtonDown" tabindex="-1"></paper-icon-button></template><script>Polymer({is:"paper-tabs",behaviors:[Polymer.IronResizableBehavior,Polymer.IronMenubarBehavior],properties:{noink:{type:Boolean,value:!1,observer:"_noinkChanged"},noBar:{type:Boolean,value:!1},noSlide:{type:Boolean,value:!1},scrollable:{type:Boolean,value:!1},fitContainer:{type:Boolean,value:!1},disableDrag:{type:Boolean,value:!1},hideScrollButtons:{type:Boolean,value:!1},alignBottom:{type:Boolean,value:!1},selectable:{type:String,value:"paper-tab"},autoselect:{type:Boolean,value:!1},autoselectDelay:{type:Number,value:0},_step:{type:Number,value:10},_holdDelay:{type:Number,value:1},_leftHidden:{type:Boolean,value:!1},_rightHidden:{type:Boolean,value:!1},_previousTab:{type:Object}},hostAttributes:{role:"tablist"},listeners:{"iron-resize":"_onTabSizingChanged","iron-items-changed":"_onTabSizingChanged","iron-select":"_onIronSelect","iron-deselect":"_onIronDeselect"},keyBindings:{"left:keyup right:keyup":"_onArrowKeyup"},created:function(){this._holdJob=null,this._pendingActivationItem=void 0,this._pendingActivationTimeout=void 0,this._bindDelayedActivationHandler=this._delayedActivationHandler.bind(this),this.addEventListener("blur",this._onBlurCapture.bind(this),!0)},ready:function(){this.setScrollDirection("y",this.$.tabsContainer)},detached:function(){this._cancelPendingActivation()},_noinkChanged:function(t){var e=Polymer.dom(this).querySelectorAll("paper-tab");e.forEach(t?this._setNoinkAttribute:this._removeNoinkAttribute)},_setNoinkAttribute:function(t){t.setAttribute("noink","")},_removeNoinkAttribute:function(t){t.removeAttribute("noink")},_computeScrollButtonClass:function(t,e,i){return!e||i?"hidden":t?"not-visible":""},_computeTabsContentClass:function(t,e){return t?"scrollable"+(e?" fit-container":""):" fit-container"},_computeSelectionBarClass:function(t,e){return t?"hidden":e?"align-bottom":""},_onTabSizingChanged:function(){this.debounce("_onTabSizingChanged",function(){this._scroll(),this._tabChanged(this.selectedItem)},10)},_onIronSelect:function(t){this._tabChanged(t.detail.item,this._previousTab),this._previousTab=t.detail.item,this.cancelDebouncer("tab-changed")},_onIronDeselect:function(t){this.debounce("tab-changed",function(){this._tabChanged(null,this._previousTab),this._previousTab=null},1)},_activateHandler:function(){this._cancelPendingActivation(),Polymer.IronMenuBehaviorImpl._activateHandler.apply(this,arguments)},_scheduleActivation:function(t,e){this._pendingActivationItem=t,this._pendingActivationTimeout=this.async(this._bindDelayedActivationHandler,e)},_delayedActivationHandler:function(){var t=this._pendingActivationItem;this._pendingActivationItem=void 0,this._pendingActivationTimeout=void 0,t.fire(this.activateEvent,null,{bubbles:!0,cancelable:!0})},_cancelPendingActivation:function(){void 0!==this._pendingActivationTimeout&&(this.cancelAsync(this._pendingActivationTimeout),this._pendingActivationItem=void 0,this._pendingActivationTimeout=void 0)},_onArrowKeyup:function(t){this.autoselect&&this._scheduleActivation(this.focusedItem,this.autoselectDelay)},_onBlurCapture:function(t){t.target===this._pendingActivationItem&&this._cancelPendingActivation()},get _tabContainerScrollSize(){return Math.max(0,this.$.tabsContainer.scrollWidth-this.$.tabsContainer.offsetWidth)},_scroll:function(t,e){if(this.scrollable){var i=e&&-e.ddx||0;this._affectScroll(i)}},_down:function(t){this.async(function(){this._defaultFocusAsync&&(this.cancelAsync(this._defaultFocusAsync),this._defaultFocusAsync=null)},1)},_affectScroll:function(t){this.$.tabsContainer.scrollLeft+=t;var e=this.$.tabsContainer.scrollLeft;this._leftHidden=0===e,this._rightHidden=e===this._tabContainerScrollSize},_onLeftScrollButtonDown:function(){this._scrollToLeft(),this._holdJob=setInterval(this._scrollToLeft.bind(this),this._holdDelay)},_onRightScrollButtonDown:function(){this._scrollToRight(),this._holdJob=setInterval(this._scrollToRight.bind(this),this._holdDelay)},_onScrollButtonUp:function(){clearInterval(this._holdJob),this._holdJob=null},_scrollToLeft:function(){this._affectScroll(-this._step)},_scrollToRight:function(){this._affectScroll(this._step)},_tabChanged:function(t,e){if(!t)return this.$.selectionBar.classList.remove("expand"),this.$.selectionBar.classList.remove("contract"),void this._positionBar(0,0);var i=this.$.tabsContent.getBoundingClientRect(),n=i.width,o=t.getBoundingClientRect(),s=o.left-i.left;if(this._pos={width:this._calcPercent(o.width,n),left:this._calcPercent(s,n)},this.noSlide||null==e)return this.$.selectionBar.classList.remove("expand"),this.$.selectionBar.classList.remove("contract"),void this._positionBar(this._pos.width,this._pos.left);var a=e.getBoundingClientRect(),l=this.items.indexOf(e),c=this.items.indexOf(t),r=5;this.$.selectionBar.classList.add("expand");var h=l<c,d=this._isRTL;d&&(h=!h),h?this._positionBar(this._calcPercent(o.left+o.width-a.left,n)-r,this._left):this._positionBar(this._calcPercent(a.left+a.width-o.left,n)-r,this._calcPercent(s,n)+r),this.scrollable&&this._scrollToSelectedIfNeeded(o.width,s)},_scrollToSelectedIfNeeded:function(t,e){var i=e-this.$.tabsContainer.scrollLeft;i<0?this.$.tabsContainer.scrollLeft+=i:(i+=t-this.$.tabsContainer.offsetWidth,i>0&&(this.$.tabsContainer.scrollLeft+=i))},_calcPercent:function(t,e){return 100*t/e},_positionBar:function(t,e){t=t||0,e=e||0,this._width=t,this._left=e,this.transform("translateX("+e+"%) scaleX("+t/100+")",this.$.selectionBar)},_onBarTransitionEnd:function(t){var e=this.$.selectionBar.classList;e.contains("expand")?(e.remove("expand"),e.add("contract"),this._positionBar(this._pos.width,this._pos.left)):e.contains("contract")&&e.remove("contract")}})</script></dom-module><dom-module id="app-header-layout" assetpath="../bower_components/app-layout/app-header-layout/"><template><style>:host{display:block;position:relative;z-index:0}:host>::content>app-header{@apply(--layout-fixed-top);z-index:1}:host([has-scrolling-region]){height:100%}:host([has-scrolling-region])>::content>app-header{position:absolute}:host([has-scrolling-region])>#contentContainer{@apply(--layout-fit);overflow-y:auto;-webkit-overflow-scrolling:touch}:host([fullbleed]){@apply(--layout-vertical);@apply(--layout-fit)}:host([fullbleed])>#contentContainer{@apply(--layout-vertical);@apply(--layout-flex)}#contentContainer{position:relative;z-index:0}</style><content id="header" select="app-header"></content><div id="contentContainer"><content></content></div></template><script>Polymer({is:"app-header-layout",behaviors:[Polymer.IronResizableBehavior],properties:{hasScrollingRegion:{type:Boolean,value:!1,reflectToAttribute:!0}},listeners:{"iron-resize":"_resizeHandler","app-header-reset-layout":"_resetLayoutHandler"},observers:["resetLayout(isAttached, hasScrollingRegion)"],get header(){return Polymer.dom(this.$.header).getDistributedNodes()[0]},resetLayout:function(){this._updateScroller(),this.debounce("_resetLayout",this._updateContentPosition)},_updateContentPosition:function(){var e=this.header;if(this.isAttached&&e){var t=e.offsetHeight;if(this.hasScrollingRegion)e.style.left="",e.style.right="";else{var i=this.getBoundingClientRect(),o=document.documentElement.clientWidth-i.right;e.style.left=i.left+"px",e.style.right=o+"px"}var n=this.$.contentContainer.style;e.fixed&&!e.willCondense()&&this.hasScrollingRegion?(n.marginTop=t+"px",n.paddingTop=""):(n.paddingTop=t+"px",n.marginTop="")}},_updateScroller:function(){if(this.isAttached){var e=this.header;e&&(e.scrollTarget=this.hasScrollingRegion?this.$.contentContainer:this.ownerDocument.documentElement)}},_resizeHandler:function(){this.resetLayout()},_resetLayoutHandler:function(e){this.resetLayout(),e.stopPropagation()}})</script></dom-module><script>Polymer.IronScrollTargetBehavior={properties:{scrollTarget:{type:Object,value:function(){return this._defaultScrollTarget}}},observers:["_scrollTargetChanged(scrollTarget, isAttached)"],_shouldHaveListener:!0,_scrollTargetChanged:function(t,l){this._oldScrollTarget&&(this._toggleScrollListener(!1,this._oldScrollTarget),this._oldScrollTarget=null),l&&("document"===t?this.scrollTarget=this._doc:"string"==typeof t?this.scrollTarget=this.domHost?this.domHost.$[t]:Polymer.dom(this.ownerDocument).querySelector("#"+t):this._isValidScrollTarget()&&(this._boundScrollHandler=this._boundScrollHandler||this._scrollHandler.bind(this),this._oldScrollTarget=t,this._toggleScrollListener(this._shouldHaveListener,t)))},_scrollHandler:function(){},get _defaultScrollTarget(){return this._doc},get _doc(){return this.ownerDocument.documentElement},get _scrollTop(){return this._isValidScrollTarget()?this.scrollTarget===this._doc?window.pageYOffset:this.scrollTarget.scrollTop:0},get _scrollLeft(){return this._isValidScrollTarget()?this.scrollTarget===this._doc?window.pageXOffset:this.scrollTarget.scrollLeft:0},set _scrollTop(t){this.scrollTarget===this._doc?window.scrollTo(window.pageXOffset,t):this._isValidScrollTarget()&&(this.scrollTarget.scrollTop=t)},set _scrollLeft(t){this.scrollTarget===this._doc?window.scrollTo(t,window.pageYOffset):this._isValidScrollTarget()&&(this.scrollTarget.scrollLeft=t)},scroll:function(t,l){this.scrollTarget===this._doc?window.scrollTo(t,l):this._isValidScrollTarget()&&(this.scrollTarget.scrollLeft=t,this.scrollTarget.scrollTop=l)},get _scrollTargetWidth(){return this._isValidScrollTarget()?this.scrollTarget===this._doc?window.innerWidth:this.scrollTarget.offsetWidth:0},get _scrollTargetHeight(){return this._isValidScrollTarget()?this.scrollTarget===this._doc?window.innerHeight:this.scrollTarget.offsetHeight:0},_isValidScrollTarget:function(){return this.scrollTarget instanceof HTMLElement},_toggleScrollListener:function(t,l){if(this._boundScrollHandler){var e=l===this._doc?window:l;t?e.addEventListener("scroll",this._boundScrollHandler):e.removeEventListener("scroll",this._boundScrollHandler)}},toggleScrollListener:function(t){this._shouldHaveListener=t,this._toggleScrollListener(t,this.scrollTarget)}}</script><script>Polymer.AppLayout=Polymer.AppLayout||{},Polymer.AppLayout._scrollEffects=Polymer.AppLayout._scrollEffects||{},Polymer.AppLayout.scrollTimingFunction=function(o,l,e,r){return o/=r,-e*o*(o-2)+l},Polymer.AppLayout.registerEffect=function(o,l){if(null!=Polymer.AppLayout._scrollEffects[o])throw new Error("effect `"+o+"` is already registered.");Polymer.AppLayout._scrollEffects[o]=l},Polymer.AppLayout.scroll=function(o){o=o||{};var l=document.documentElement,e=o.target||l,r="scrollBehavior"in e.style&&e.scroll,t="app-layout-silent-scroll",s=o.top||0,c=o.left||0,i=e===l?window.scrollTo:function(o,l){e.scrollLeft=o,e.scrollTop=l};if("smooth"===o.behavior)if(r)e.scroll(o);else{var n=Polymer.AppLayout.scrollTimingFunction,a=Date.now(),p=e===l?window.pageYOffset:e.scrollTop,u=e===l?window.pageXOffset:e.scrollLeft,y=s-p,f=c-u,m=300,L=function o(){var l=Date.now(),e=l-a;e<m?(i(n(e,u,f,m),n(e,p,y,m)),requestAnimationFrame(o)):i(c,s)}.bind(this);L()}else"silent"===o.behavior?(l.classList.add(t),clearInterval(Polymer.AppLayout._scrollTimer),Polymer.AppLayout._scrollTimer=setTimeout(function(){l.classList.remove(t),Polymer.AppLayout._scrollTimer=null},100),i(c,s)):i(c,s)}</script><script>Polymer.AppScrollEffectsBehavior=[Polymer.IronScrollTargetBehavior,{properties:{effects:{type:String},effectsConfig:{type:Object,value:function(){return{}}},disabled:{type:Boolean,reflectToAttribute:!0,value:!1},threshold:{type:Number,value:0},thresholdTriggered:{type:Boolean,notify:!0,readOnly:!0,reflectToAttribute:!0}},observers:["_effectsChanged(effects, effectsConfig, isAttached)"],_updateScrollState:function(){},isOnScreen:function(){return!1},isContentBelow:function(){return!1},_effectsRunFn:null,_effects:null,get _clampedScrollTop(){return Math.max(0,this._scrollTop)},detached:function(){this._tearDownEffects()},createEffect:function(t,e){var n=Polymer.AppLayout._scrollEffects[t];if(!n)throw new ReferenceError(this._getUndefinedMsg(t));var f=this._boundEffect(n,e||{});return f.setUp(),f},_effectsChanged:function(t,e,n){this._tearDownEffects(),""!==t&&n&&(t.split(" ").forEach(function(t){var n;""!==t&&((n=Polymer.AppLayout._scrollEffects[t])?this._effects.push(this._boundEffect(n,e[t])):console.warn(this._getUndefinedMsg(t)))},this),this._setUpEffect())},_layoutIfDirty:function(){return this.offsetWidth},_boundEffect:function(t,e){e=e||{};var n=parseFloat(e.startsAt||0),f=parseFloat(e.endsAt||1),s=f-n,r=function(){},o=0===n&&1===f?t.run:function(e,f){t.run.call(this,Math.max(0,(e-n)/s),f)};return{setUp:t.setUp?t.setUp.bind(this,e):r,run:t.run?o.bind(this):r,tearDown:t.tearDown?t.tearDown.bind(this):r}},_setUpEffect:function(){this.isAttached&&this._effects&&(this._effectsRunFn=[],this._effects.forEach(function(t){t.setUp()!==!1&&this._effectsRunFn.push(t.run)},this))},_tearDownEffects:function(){this._effects&&this._effects.forEach(function(t){t.tearDown()}),this._effectsRunFn=[],this._effects=[]},_runEffects:function(t,e){this._effectsRunFn&&this._effectsRunFn.forEach(function(n){n(t,e)})},_scrollHandler:function(){if(!this.disabled){var t=this._clampedScrollTop;this._updateScrollState(t),this.threshold>0&&this._setThresholdTriggered(t>=this.threshold)}},_getDOMRef:function(t){console.warn("_getDOMRef","`"+t+"` is undefined")},_getUndefinedMsg:function(t){return"Scroll effect `"+t+"` is undefined. Did you forget to import app-layout/app-scroll-effects/effects/"+t+".html ?"}}]</script><script>Polymer.AppLayout.registerEffect("waterfall",{run:function(){this.shadow=this.isOnScreen()&&this.isContentBelow()}})</script><dom-module id="app-header" assetpath="../bower_components/app-layout/app-header/"><template><style>:host{position:relative;display:block;transition-timing-function:linear;transition-property:-webkit-transform;transition-property:transform}:host::after{position:absolute;right:0;bottom:-5px;left:0;width:100%;height:5px;content:"";transition:opacity .4s;pointer-events:none;opacity:0;box-shadow:inset 0 5px 6px -3px rgba(0,0,0,.4);will-change:opacity;@apply(--app-header-shadow)}:host([shadow])::after{opacity:1}::content [condensed-title],::content [main-title]{-webkit-transform-origin:left top;transform-origin:left top;white-space:nowrap}::content [condensed-title]{opacity:0}#background{@apply(--layout-fit);overflow:hidden}#backgroundFrontLayer,#backgroundRearLayer{@apply(--layout-fit);height:100%;pointer-events:none;background-size:cover}#backgroundFrontLayer{@apply(--app-header-background-front-layer)}#backgroundRearLayer{opacity:0;@apply(--app-header-background-rear-layer)}#contentContainer{position:relative;width:100%;height:100%}:host([disabled]),:host([disabled]) #backgroundFrontLayer,:host([disabled]) #backgroundRearLayer,:host([disabled]) ::content>[sticky],:host([disabled]) ::content>app-toolbar:first-of-type,:host([disabled])::after,:host-context(.app-layout-silent-scroll),:host-context(.app-layout-silent-scroll) #backgroundFrontLayer,:host-context(.app-layout-silent-scroll) #backgroundRearLayer,:host-context(.app-layout-silent-scroll) ::content>[sticky],:host-context(.app-layout-silent-scroll) ::content>app-toolbar:first-of-type,:host-context(.app-layout-silent-scroll)::after{transition:none!important}</style><div id="contentContainer"><content id="content"></content></div></template><script>Polymer({is:"app-header",behaviors:[Polymer.AppScrollEffectsBehavior,Polymer.IronResizableBehavior],properties:{condenses:{type:Boolean,value:!1},fixed:{type:Boolean,value:!1},reveals:{type:Boolean,value:!1},shadow:{type:Boolean,reflectToAttribute:!0,value:!1}},observers:["resetLayout(isAttached, condenses, fixed)"],listeners:{"iron-resize":"_resizeHandler"},_height:0,_dHeight:0,_stickyElTop:0,_stickyEl:null,_top:0,_progress:0,_wasScrollingDown:!1,_initScrollTop:0,_initTimestamp:0,_lastTimestamp:0,_lastScrollTop:0,get _maxHeaderTop(){return this.fixed?this._dHeight:this._height+5},_getStickyEl:function(){for(var t,e=Polymer.dom(this.$.content).getDistributedNodes(),i=0;i<e.length;i++)if(e[i].nodeType===Node.ELEMENT_NODE){var s=e[i];if(s.hasAttribute("sticky")){t=s;break}t||(t=s)}return t},resetLayout:function(){this.debounce("_resetLayout",function(){if(0!==this.offsetWidth||0!==this.offsetHeight){var t=this._clampedScrollTop,e=0===this._height||0===t,i=this.disabled;this._height=this.offsetHeight,this._stickyEl=this._getStickyEl(),this.disabled=!0,e||this._updateScrollState(0,!0),this._mayMove()?this._dHeight=this._stickyEl?this._height-this._stickyEl.offsetHeight:0:this._dHeight=0,this._stickyElTop=this._stickyEl?this._stickyEl.offsetTop:0,this._setUpEffect(),e?this._updateScrollState(t,!0):(this._updateScrollState(this._lastScrollTop,!0),this._layoutIfDirty()),this.disabled=i,this.fire("app-header-reset-layout")}})},_updateScrollState:function(t,e){if(0!==this._height){var i=0,s=0,o=this._top,r=(this._lastScrollTop,this._maxHeaderTop),h=t-this._lastScrollTop,n=Math.abs(h),a=t>this._lastScrollTop,l=Date.now();if(this._mayMove()&&(s=this._clamp(this.reveals?o+h:t,0,r)),t>=this._dHeight&&(s=this.condenses&&!this.fixed?Math.max(this._dHeight,s):s,this.style.transitionDuration="0ms"),this.reveals&&!this.disabled&&n<100&&((l-this._initTimestamp>300||this._wasScrollingDown!==a)&&(this._initScrollTop=t,this._initTimestamp=l),t>=r))if(Math.abs(this._initScrollTop-t)>30||n>10){a&&t>=r?s=r:!a&&t>=this._dHeight&&(s=this.condenses&&!this.fixed?this._dHeight:0);var _=h/(l-this._lastTimestamp);this.style.transitionDuration=this._clamp((s-o)/_,0,300)+"ms"}else s=this._top;i=0===this._dHeight?t>0?1:0:s/this._dHeight,e||(this._lastScrollTop=t,this._top=s,this._wasScrollingDown=a,this._lastTimestamp=l),(e||i!==this._progress||o!==s||0===t)&&(this._progress=i,this._runEffects(i,s),this._transformHeader(s))}},_mayMove:function(){return this.condenses||!this.fixed},willCondense:function(){return this._dHeight>0&&this.condenses},isOnScreen:function(){return 0!==this._height&&this._top<this._height},isContentBelow:function(){return 0===this._top?this._clampedScrollTop>0:this._clampedScrollTop-this._maxHeaderTop>=0},_transformHeader:function(t){this.translate3d(0,-t+"px",0),this._stickyEl&&this.translate3d(0,this.condenses&&t>=this._stickyElTop?Math.min(t,this._dHeight)-this._stickyElTop+"px":0,0,this._stickyEl)},_resizeHandler:function(){this.resetLayout()},_clamp:function(t,e,i){return Math.min(i,Math.max(e,t))},_ensureBgContainers:function(){this._bgContainer||(this._bgContainer=document.createElement("div"),this._bgContainer.id="background",this._bgRear=document.createElement("div"),this._bgRear.id="backgroundRearLayer",this._bgContainer.appendChild(this._bgRear),this._bgFront=document.createElement("div"),this._bgFront.id="backgroundFrontLayer",this._bgContainer.appendChild(this._bgFront),Polymer.dom(this.root).insertBefore(this._bgContainer,this.$.contentContainer))},_getDOMRef:function(t){switch(t){case"backgroundFrontLayer":return this._ensureBgContainers(),this._bgFront;case"backgroundRearLayer":return this._ensureBgContainers(),this._bgRear;case"background":return this._ensureBgContainers(),this._bgContainer;case"mainTitle":return Polymer.dom(this).querySelector("[main-title]");case"condensedTitle":return Polymer.dom(this).querySelector("[condensed-title]")}return null},getScrollState:function(){return{progress:this._progress,top:this._top}}})</script></dom-module><dom-module id="app-toolbar" assetpath="../bower_components/app-layout/app-toolbar/"><template><style>:host{@apply(--layout-horizontal);@apply(--layout-center);position:relative;height:64px;padding:0 16px;pointer-events:none;font-size:var(--app-toolbar-font-size,20px)}::content>*{pointer-events:auto}::content>paper-icon-button{font-size:0}::content>[condensed-title],::content>[main-title]{pointer-events:none;@apply(--layout-flex)}::content>[bottom-item]{position:absolute;right:0;bottom:0;left:0}::content>[top-item]{position:absolute;top:0;right:0;left:0}::content>[spacer]{margin-left:64px}</style><content></content></template><script>Polymer({is:"app-toolbar"})</script></dom-module><dom-module id="ha-menu-button" assetpath="components/"><template><style>.invisible{visibility:hidden}</style><paper-icon-button icon="mdi:menu" class$="[[computeMenuButtonClass(narrow, showMenu)]]" on-tap="toggleMenu"></paper-icon-button></template></dom-module><script>Polymer({is:"ha-menu-button",properties:{narrow:{type:Boolean,value:!1},showMenu:{type:Boolean,value:!1}},computeMenuButtonClass:function(e,n){return!e&&n?"invisible":""},toggleMenu:function(){this.fire("open-menu")}})</script><dom-module id="ha-label-badge" assetpath="/"><template><style>.badge-container{display:inline-block;text-align:center;vertical-align:top;margin-bottom:16px}.label-badge{position:relative;display:block;margin:0 auto;width:2.5em;text-align:center;height:2.5em;line-height:2.5em;font-size:1.5em;border-radius:50%;border:.1em solid var(--ha-label-badge-color,--default-primary-color);color:#4c4c4c;white-space:nowrap;background-color:#fff;background-size:cover;transition:border .3s ease-in-out}.label-badge .value{font-size:90%;overflow:hidden;text-overflow:ellipsis}.label-badge .value.big{font-size:70%}.label-badge .label{position:absolute;bottom:-1em;left:0;right:0;line-height:1em;font-size:.5em}.label-badge .label span{max-width:80%;display:inline-block;background-color:var(--ha-label-badge-color,--default-primary-color);color:#fff;border-radius:1em;padding:4px 8px;font-weight:500;text-transform:uppercase;overflow:hidden;text-overflow:ellipsis;transition:background-color .3s ease-in-out}.badge-container .title{margin-top:1em;font-size:.9em;width:5em;font-weight:300;overflow:hidden;text-overflow:ellipsis;line-height:normal}iron-image{border-radius:50%}[hidden]{display:none!important}</style><div class="badge-container"><div class="label-badge" id="badge"><div class$="[[computeClasses(value)]]"><iron-icon icon="[[icon]]" hidden$="[[computeHideIcon(icon, value, image)]]"></iron-icon><span hidden$="[[computeHideValue(value, image)]]">[[value]]</span></div><div class="label" hidden$="[[!label]]"><span>[[label]]</span></div></div><div class="title">[[description]]</div></div></template></dom-module><script>Polymer({is:"ha-label-badge",properties:{value:{type:String,value:null},icon:{type:String,value:null},label:{type:String,value:null},description:{type:String},image:{type:String,value:null,observer:"imageChanged"}},computeClasses:function(e){return e&&e.length>4?"value big":"value"},computeHideIcon:function(e,n,l){return!e||n||l},computeHideValue:function(e,n){return!e||n},imageChanged:function(e){this.$.badge.style.backgroundImage=e?"url("+e+")":""}})</script><dom-module id="ha-demo-badge" assetpath="components/"><template><style>:host{--ha-label-badge-color:#dac90d}</style><ha-label-badge icon="mdi:emoticon" label="Demo" description=""></ha-label-badge></template></dom-module><script>Polymer({is:"ha-demo-badge"})</script><dom-module id="ha-state-label-badge" assetpath="components/entity/"><template><style>:host{cursor:pointer}ha-label-badge{--ha-label-badge-color:rgb(223, 76, 30)}.blue{--ha-label-badge-color:#039be5}.green{--ha-label-badge-color:#0DA035}.grey{--ha-label-badge-color:var(--paper-grey-500)}</style><ha-label-badge class$="[[computeClasses(state)]]" value="[[computeValue(state)]]" icon="[[computeIcon(state)]]" image="[[computeImage(state)]]" label="[[computeLabel(state)]]" description="[[computeDescription(state)]]"></ha-label-badge></template></dom-module><script>Polymer({is:"ha-state-label-badge",properties:{hass:{type:Object},state:{type:Object,observer:"stateChanged"}},listeners:{tap:"badgeTap"},badgeTap:function(e){e.stopPropagation(),this.async(function(){this.hass.moreInfoActions.selectEntity(this.state.entityId)},1)},computeClasses:function(e){switch(e.domain){case"binary_sensor":case"updater":return"blue";default:return""}},computeValue:function(e){switch(e.domain){case"binary_sensor":case"device_tracker":case"updater":case"sun":case"alarm_control_panel":return null;case"sensor":default:return"unknown"===e.state?"-":e.state}},computeIcon:function(e){if("unavailable"===e.state)return null;switch(e.domain){case"alarm_control_panel":return"pending"===e.state?"mdi:clock-fast":"armed_away"===e.state?"mdi:nature":"armed_home"===e.state?"mdi:home-variant":"triggered"===e.state?"mdi:alert-circle":window.hassUtil.domainIcon(e.domain,e.state);case"binary_sensor":case"device_tracker":case"updater":return window.hassUtil.stateIcon(e);case"sun":return"above_horizon"===e.state?window.hassUtil.domainIcon(e.domain):"mdi:brightness-3";default:return null}},computeImage:function(e){return e.attributes.entity_picture||null},computeLabel:function(e){if("unavailable"===e.state)return"unavai";switch(e.domain){case"device_tracker":return"not_home"===e.state?"Away":e.state;case"alarm_control_panel":return"pending"===e.state?"pend":"armed_away"===e.state||"armed_home"===e.state?"armed":"triggered"===e.state?"trig":"disarm";default:return e.attributes.unit_of_measurement||null}},computeDescription:function(e){return e.entityDisplay},stateChanged:function(){this.updateStyles()}})</script><dom-module id="ha-badges-card" assetpath="cards/"><template><template is="dom-repeat" items="[[states]]"><ha-state-label-badge hass="[[hass]]" state="[[item]]"></ha-state-label-badge></template></template></dom-module><script>Polymer({is:"ha-badges-card",properties:{hass:{type:Object},states:{type:Array}}})</script><dom-module id="paper-material" assetpath="../bower_components/paper-material/"><template><style include="paper-material-shared-styles"></style><style>:host([animated]){@apply(--shadow-transition)}</style><content></content></template></dom-module><script>Polymer({is:"paper-material",properties:{elevation:{type:Number,reflectToAttribute:!0,value:1},animated:{type:Boolean,reflectToAttribute:!0,value:!1}}})</script><dom-module id="ha-camera-card" assetpath="cards/"><template><style include="paper-material">:host{display:block;position:relative;font-size:0;border-radius:2px;cursor:pointer;min-height:48px;line-height:0}.camera-feed{width:100%;height:auto;border-radius:2px}.caption{@apply(--paper-font-common-nowrap);position:absolute;left:0;right:0;bottom:0;border-bottom-left-radius:2px;border-bottom-right-radius:2px;background-color:rgba(0,0,0,.3);padding:16px;font-size:16px;font-weight:500;line-height:16px;color:#fff}</style><img src="[[cameraFeedSrc]]" class="camera-feed" hidden$="[[!imageLoaded]]" on-load="imageLoadSuccess" on-error="imageLoadFail" alt="[[stateObj.entityDisplay]]"><div class="caption">[[stateObj.entityDisplay]]<template is="dom-if" if="[[!imageLoaded]]">(Error loading image)</template></div></template></dom-module><script>Polymer({is:"ha-camera-card",UPDATE_INTERVAL:1e4,properties:{hass:{type:Object},stateObj:{type:Object,observer:"updateCameraFeedSrc"},cameraFeedSrc:{type:String},imageLoaded:{type:Boolean,value:!0},elevation:{type:Number,value:1,reflectToAttribute:!0}},listeners:{tap:"cardTapped"},attached:function(){this.timer=setInterval(function(){this.updateCameraFeedSrc(this.stateObj)}.bind(this),this.UPDATE_INTERVAL)},detached:function(){clearInterval(this.timer)},cardTapped:function(){this.async(function(){this.hass.moreInfoActions.selectEntity(this.stateObj.entityId)}.bind(this),1)},updateCameraFeedSrc:function(e){const t=e.attributes,a=(new Date).getTime();this.cameraFeedSrc=t.entity_picture+"&time="+a},imageLoadSuccess:function(){this.imageLoaded=!0},imageLoadFail:function(){this.imageLoaded=!1}})</script><dom-module id="ha-card" assetpath="/"><template><style include="paper-material">:host{display:block;border-radius:2px;transition:all .3s ease-out;background-color:#fff}.header{@apply(--paper-font-headline);@apply(--paper-font-common-expensive-kerning);opacity:var(--dark-primary-opacity);padding:24px 16px 16px;text-transform:capitalize}</style><template is="dom-if" if="[[header]]"><div class="header">[[header]]</div></template><slot></slot></template></dom-module><script>Polymer({is:"ha-card",properties:{header:{type:String},elevation:{type:Number,value:1,reflectToAttribute:!0}}})</script><dom-module id="paper-toggle-button" assetpath="../bower_components/paper-toggle-button/"><template strip-whitespace=""><style>:host{display:inline-block;@apply(--layout-horizontal);@apply(--layout-center);@apply(--paper-font-common-base)}:host([disabled]){pointer-events:none}:host(:focus){outline:0}.toggle-bar{position:absolute;height:100%;width:100%;border-radius:8px;pointer-events:none;opacity:.4;transition:background-color linear .08s;background-color:var(--paper-toggle-button-unchecked-bar-color,#000);@apply(--paper-toggle-button-unchecked-bar)}.toggle-button{position:absolute;top:-3px;left:0;height:20px;width:20px;border-radius:50%;box-shadow:0 1px 5px 0 rgba(0,0,0,.6);transition:-webkit-transform linear .08s,background-color linear .08s;transition:transform linear .08s,background-color linear .08s;will-change:transform;background-color:var(--paper-toggle-button-unchecked-button-color,--paper-grey-50);@apply(--paper-toggle-button-unchecked-button)}.toggle-button.dragging{-webkit-transition:none;transition:none}:host([checked]:not([disabled])) .toggle-bar{opacity:.5;background-color:var(--paper-toggle-button-checked-bar-color,--primary-color);@apply(--paper-toggle-button-checked-bar)}:host([disabled]) .toggle-bar{background-color:#000;opacity:.12}:host([checked]) .toggle-button{-webkit-transform:translate(16px,0);transform:translate(16px,0)}:host([checked]:not([disabled])) .toggle-button{background-color:var(--paper-toggle-button-checked-button-color,--primary-color);@apply(--paper-toggle-button-checked-button)}:host([disabled]) .toggle-button{background-color:#bdbdbd;opacity:1}.toggle-ink{position:absolute;top:-14px;left:-14px;right:auto;bottom:auto;width:48px;height:48px;opacity:.5;pointer-events:none;color:var(--paper-toggle-button-unchecked-ink-color,--primary-text-color)}:host([checked]) .toggle-ink{color:var(--paper-toggle-button-checked-ink-color,--primary-color)}.toggle-container{display:inline-block;position:relative;width:36px;height:14px;margin:4px 1px}.toggle-label{position:relative;display:inline-block;vertical-align:middle;padding-left:var(--paper-toggle-button-label-spacing,8px);pointer-events:none;color:var(--paper-toggle-button-label-color,--primary-text-color)}:host([invalid]) .toggle-bar{background-color:var(--paper-toggle-button-invalid-bar-color,--error-color)}:host([invalid]) .toggle-button{background-color:var(--paper-toggle-button-invalid-button-color,--error-color)}:host([invalid]) .toggle-ink{color:var(--paper-toggle-button-invalid-ink-color,--error-color)}</style><div class="toggle-container"><div id="toggleBar" class="toggle-bar"></div><div id="toggleButton" class="toggle-button"></div></div><div class="toggle-label"><content></content></div></template><script>Polymer({is:"paper-toggle-button",behaviors:[Polymer.PaperCheckedElementBehavior],hostAttributes:{role:"button","aria-pressed":"false",tabindex:0},properties:{},listeners:{track:"_ontrack"},attached:function(){Polymer.RenderStatus.afterNextRender(this,function(){this.setScrollDirection("y")})},_ontrack:function(t){var e=t.detail;"start"===e.state?this._trackStart(e):"track"===e.state?this._trackMove(e):"end"===e.state&&this._trackEnd(e)},_trackStart:function(t){this._width=this.$.toggleBar.offsetWidth/2,this._trackChecked=this.checked,this.$.toggleButton.classList.add("dragging")},_trackMove:function(t){var e=t.dx;this._x=Math.min(this._width,Math.max(0,this._trackChecked?this._width+e:e)),this.translate3d(this._x+"px",0,0,this.$.toggleButton),this._userActivate(this._x>this._width/2)},_trackEnd:function(t){this.$.toggleButton.classList.remove("dragging"),this.transform("",this.$.toggleButton)},_createRipple:function(){this._rippleContainer=this.$.toggleButton;var t=Polymer.PaperRippleBehavior._createRipple();return t.id="ink",t.setAttribute("recenters",""),t.classList.add("circle","toggle-ink"),t}})</script></dom-module><dom-module id="ha-entity-toggle" assetpath="components/entity/"><template><style>:host{white-space:nowrap}paper-icon-button{color:var(--primary-text-color);transition:color .5s}paper-icon-button[state-active]{color:var(--default-primary-color)}paper-toggle-button{cursor:pointer;--paper-toggle-button-label-spacing:0;padding:9px 0}</style><template is="dom-if" if="[[stateObj.attributes.assumed_state]]"><paper-icon-button icon="mdi:flash-off" on-tap="turnOff" state-active$="[[!isOn]]"></paper-icon-button><paper-icon-button icon="mdi:flash" on-tap="turnOn" state-active$="[[isOn]]"></paper-icon-button></template><template is="dom-if" if="[[!stateObj.attributes.assumed_state]]"><paper-toggle-button class="self-center" checked="[[toggleChecked]]" on-change="toggleChanged"></paper-toggle-button></template></template></dom-module><script>Polymer({is:"ha-entity-toggle",properties:{hass:{type:Object},stateObj:{type:Object},toggleChecked:{type:Boolean,value:!1},isOn:{type:Boolean,computed:"computeIsOn(stateObj)",observer:"isOnChanged"}},listeners:{tap:"onTap"},onTap:function(t){t.stopPropagation()},ready:function(){this.forceStateChange()},toggleChanged:function(t){var e=t.target.checked;e&&!this.isOn?this.callService(!0):!e&&this.isOn&&this.callService(!1)},isOnChanged:function(t){this.toggleChecked=t},forceStateChange:function(){this.toggleChecked===this.isOn&&(this.toggleChecked=!this.toggleChecked),this.toggleChecked=this.isOn},turnOn:function(){this.callService(!0)},turnOff:function(){this.callService(!1)},computeIsOn:function(t){return t&&window.hassUtil.OFF_STATES.indexOf(t.state)===-1},callService:function(t){var e,i,n;"lock"===this.stateObj.domain?(e="lock",i=t?"lock":"unlock"):"garage_door"===this.stateObj.domain?(e="garage_door",i=t?"open":"close"):(e="homeassistant",i=t?"turn_on":"turn_off"),n=this.stateObj,this.hass.serviceActions.callService(e,i,{entity_id:this.stateObj.entityId}).then(function(){setTimeout(function(){this.stateObj===n&&this.forceStateChange()}.bind(this),2e3)}.bind(this))}})</script><dom-module id="ha-state-icon" assetpath="/"><template><iron-icon icon="[[computeIcon(stateObj)]]"></iron-icon></template></dom-module><script>Polymer({is:"ha-state-icon",properties:{stateObj:{type:Object}},computeIcon:function(t){return window.hassUtil.stateIcon(t)}})</script><dom-module id="state-badge" assetpath="components/entity/"><template><style>:host{position:relative;display:inline-block;width:40px;color:#44739E;border-radius:50%;height:40px;text-align:center;background-size:cover;line-height:40px}ha-state-icon{transition:color .3s ease-in-out}ha-state-icon[data-domain=binary_sensor][data-state=on],ha-state-icon[data-domain=light][data-state=on],ha-state-icon[data-domain=sun][data-state=above_horizon],ha-state-icon[data-domain=switch][data-state=on]{color:#FDD835}ha-state-icon[data-state=unavailable]{color:var(--disabled-text-color)}</style><ha-state-icon id="icon" state-obj="[[stateObj]]" data-domain$="[[stateObj.domain]]" data-state$="[[stateObj.state]]"></ha-state-icon></template></dom-module><script>Polymer({is:"state-badge",properties:{stateObj:{type:Object,observer:"updateIconColor"}},updateIconColor:function(t){return t.attributes.entity_picture?(this.style.backgroundImage="url("+t.attributes.entity_picture+")",void(this.$.icon.style.display="none")):(this.style.backgroundImage="",this.$.icon.style.display="inline",void("light"===t.domain&&"on"===t.state&&t.attributes.rgb_color&&t.attributes.rgb_color.reduce(function(t,e){return t+e},0)<730?this.$.icon.style.color="rgb("+t.attributes.rgb_color.join(",")+")":this.$.icon.style.color=null))}})</script><script>Polymer({is:"ha-relative-time",properties:{datetime:{type:String,observer:"datetimeChanged"},datetimeObj:{type:Object,observer:"datetimeObjChanged"},parsedDateTime:{type:Object}},created:function(){this.updateRelative=this.updateRelative.bind(this)},attached:function(){this.updateInterval=setInterval(this.updateRelative,6e4)},detached:function(){clearInterval(this.updateInterval)},datetimeChanged:function(e){this.parsedDateTime=e?new Date(e):null,this.updateRelative()},datetimeObjChanged:function(e){this.parsedDateTime=e,this.updateRelative()},updateRelative:function(){var e=Polymer.dom(this);e.innerHTML=this.parsedDateTime?window.hassUtil.relativeTime(this.parsedDateTime):"never"}})</script><dom-module id="state-info" assetpath="components/entity/"><template><style>:host{@apply(--paper-font-body1);min-width:150px;white-space:nowrap}state-badge{float:left}.info{margin-left:56px}.name{@apply(--paper-font-common-nowrap);color:var(--primary-text-color);line-height:40px}.name[in-dialog]{line-height:20px}.time-ago{@apply(--paper-font-common-nowrap);color:var(--secondary-text-color)}</style><div><state-badge state-obj="[[stateObj]]"></state-badge><div class="info"><div class="name" in-dialog$="[[inDialog]]">[[stateObj.entityDisplay]]</div><template is="dom-if" if="[[inDialog]]"><div class="time-ago"><ha-relative-time datetime-obj="[[stateObj.lastChangedAsDate]]"></ha-relative-time></div></template></div></div></template></dom-module><script>Polymer({is:"state-info",properties:{detailed:{type:Boolean,value:!1},stateObj:{type:Object},inDialog:{type:Boolean}}})</script><dom-module id="state-card-climate" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>:host{@apply(--paper-font-body1);line-height:1.5}.state{margin-left:16px;text-align:right}.target{color:var(--primary-text-color)}.current{color:var(--secondary-text-color)}.operation-mode{font-weight:700;text-transform:capitalize}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><div class="state"><div class="target"><span class="operation-mode">[[stateObj.attributes.operation_mode]] </span><span>[[computeTargetTemperature(stateObj)]]</span></div><div class="current"><span>Currently: </span><span>[[stateObj.attributes.current_temperature]]</span> <span></span> <span>[[stateObj.attributes.unit_of_measurement]]</span></div></div></div></template></dom-module><script>Polymer({is:"state-card-climate",properties:{inDialog:{type:Boolean,value:!1},stateObj:{type:Object}},computeTargetTemperature:function(t){var e="";return t.attributes.target_temp_low&&t.attributes.target_temp_high?e=t.attributes.target_temp_low+" - "+t.attributes.target_temp_high+" "+t.attributes.unit_of_measurement:t.attributes.temperature&&(e=t.attributes.temperature+" "+t.attributes.unit_of_measurement),e}})</script><dom-module id="state-card-configurator" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>paper-button{color:var(--default-primary-color);font-weight:500;top:3px;height:37px;margin-right:-.57em}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><paper-button hidden$="[[inDialog]]">[[stateObj.state]]</paper-button></div><template is="dom-if" if="[[stateObj.attributes.description_image]]"><img hidden="" src="[[stateObj.attributes.description_image]]"></template></template></dom-module><script>Polymer({is:"state-card-configurator",properties:{inDialog:{type:Boolean,value:!1},stateObj:{type:Object}}})</script><dom-module id="state-card-cover" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>:host{line-height:1.5}.state{text-align:right;white-space:nowrap;width:127px}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><div class="state"><paper-icon-button icon="mdi:arrow-up" on-tap="onOpenTap" disabled="[[computeIsFullyOpen(stateObj)]]"></paper-icon-button><paper-icon-button icon="mdi:stop" on-tap="onStopTap"></paper-icon-button><paper-icon-button icon="mdi:arrow-down" on-tap="onCloseTap" disabled="[[computeIsFullyClosed(stateObj)]]"></paper-icon-button></div></div></template></dom-module><script>Polymer({is:"state-card-cover",properties:{hass:{type:Object},inDialog:{type:Boolean,value:!1},stateObj:{type:Object}},computeIsFullyOpen:function(t){return void 0!==t.attributes.current_position?100===t.attributes.current_position:"open"===t.state},computeIsFullyClosed:function(t){return void 0!==t.attributes.current_position?0===t.attributes.current_position:"closed"===t.state},onOpenTap:function(){this.hass.serviceActions.callService("cover","open_cover",{entity_id:this.stateObj.entityId})},onCloseTap:function(){this.hass.serviceActions.callService("cover","close_cover",{entity_id:this.stateObj.entityId})},onStopTap:function(){this.hass.serviceActions.callService("cover","stop_cover",{entity_id:this.stateObj.entityId})}})</script><dom-module id="state-card-display" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>.state{@apply(--paper-font-body1);color:var(--primary-text-color);margin-left:16px;text-align:right;line-height:40px}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><div class="state">[[stateObj.stateDisplay]]</div></div></template></dom-module><script>Polymer({is:"state-card-display",properties:{inDialog:{type:Boolean,value:!1},stateObj:{type:Object}}})</script><script>Polymer.PaperInputHelper={},Polymer.PaperInputHelper.NextLabelID=1,Polymer.PaperInputHelper.NextAddonID=1,Polymer.PaperInputBehaviorImpl={properties:{label:{type:String},value:{notify:!0,type:String},disabled:{type:Boolean,value:!1},invalid:{type:Boolean,value:!1,notify:!0},preventInvalidInput:{type:Boolean},allowedPattern:{type:String},type:{type:String},list:{type:String},pattern:{type:String},required:{type:Boolean,value:!1},errorMessage:{type:String},charCounter:{type:Boolean,value:!1},noLabelFloat:{type:Boolean,value:!1},alwaysFloatLabel:{type:Boolean,value:!1},autoValidate:{type:Boolean,value:!1},validator:{type:String},autocomplete:{type:String,value:"off"},autofocus:{type:Boolean,observer:"_autofocusChanged"},inputmode:{type:String},minlength:{type:Number},maxlength:{type:Number},min:{type:String},max:{type:String},step:{type:String},name:{type:String},placeholder:{type:String,value:""},readonly:{type:Boolean,value:!1},size:{type:Number},autocapitalize:{type:String,value:"none"},autocorrect:{type:String,value:"off"},autosave:{type:String},results:{type:Number},accept:{type:String},multiple:{type:Boolean},_ariaDescribedBy:{type:String,value:""},_ariaLabelledBy:{type:String,value:""}},listeners:{"addon-attached":"_onAddonAttached"},keyBindings:{"shift+tab:keydown":"_onShiftTabDown"},hostAttributes:{tabindex:0},get inputElement(){return this.$.input},get _focusableElement(){return this.inputElement},registered:function(){this._typesThatHaveText=["date","datetime","datetime-local","month","time","week","file"]},attached:function(){this._updateAriaLabelledBy(),this.inputElement&&this._typesThatHaveText.indexOf(this.inputElement.type)!==-1&&(this.alwaysFloatLabel=!0)},_appendStringWithSpace:function(e,t){return e=e?e+" "+t:t},_onAddonAttached:function(e){var t=e.path?e.path[0]:e.target;if(t.id)this._ariaDescribedBy=this._appendStringWithSpace(this._ariaDescribedBy,t.id);else{var a="paper-input-add-on-"+Polymer.PaperInputHelper.NextAddonID++;t.id=a,this._ariaDescribedBy=this._appendStringWithSpace(this._ariaDescribedBy,a)}},validate:function(){return this.inputElement.validate()},_focusBlurHandler:function(e){Polymer.IronControlState._focusBlurHandler.call(this,e),this.focused&&!this._shiftTabPressed&&this._focusableElement.focus()},_onShiftTabDown:function(e){var t=this.getAttribute("tabindex");this._shiftTabPressed=!0,this.setAttribute("tabindex","-1"),this.async(function(){this.setAttribute("tabindex",t),this._shiftTabPressed=!1},1)},_handleAutoValidate:function(){this.autoValidate&&this.validate()},updateValueAndPreserveCaret:function(e){try{var t=this.inputElement.selectionStart;this.value=e,this.inputElement.selectionStart=t,this.inputElement.selectionEnd=t}catch(t){this.value=e}},_computeAlwaysFloatLabel:function(e,t){return t||e},_updateAriaLabelledBy:function(){var e=Polymer.dom(this.root).querySelector("label");if(!e)return void(this._ariaLabelledBy="");var t;e.id?t=e.id:(t="paper-input-label-"+Polymer.PaperInputHelper.NextLabelID++,e.id=t),this._ariaLabelledBy=t},_onChange:function(e){this.shadowRoot&&this.fire(e.type,{sourceEvent:e},{node:this,bubbles:e.bubbles,cancelable:e.cancelable})},_autofocusChanged:function(){if(this.autofocus&&this._focusableElement){var e=document.activeElement,t=e instanceof HTMLElement,a=t&&e!==document.body&&e!==document.documentElement;a||this._focusableElement.focus()}}},Polymer.PaperInputBehavior=[Polymer.IronControlState,Polymer.IronA11yKeysBehavior,Polymer.PaperInputBehaviorImpl]</script><dom-module id="paper-input-char-counter" assetpath="../bower_components/paper-input/"><template><style>:host{display:inline-block;float:right;@apply(--paper-font-caption);@apply(--paper-input-char-counter)}:host([hidden]){display:none!important}:host-context([dir=rtl]){float:left}</style><span>[[_charCounterStr]]</span></template></dom-module><script>Polymer({is:"paper-input-char-counter",behaviors:[Polymer.PaperInputAddonBehavior],properties:{_charCounterStr:{type:String,value:"0"}},update:function(t){if(t.inputElement){t.value=t.value||"";var e=t.value.toString().length.toString();t.inputElement.hasAttribute("maxlength")&&(e+="/"+t.inputElement.getAttribute("maxlength")),this._charCounterStr=e}}})</script><dom-module id="paper-input" assetpath="../bower_components/paper-input/"><template><style>:host{display:block}:host([focused]){outline:0}:host([hidden]){display:none!important}input::-webkit-input-placeholder{color:var(--paper-input-container-color,--secondary-text-color)}input:-moz-placeholder{color:var(--paper-input-container-color,--secondary-text-color)}input::-moz-placeholder{color:var(--paper-input-container-color,--secondary-text-color)}input:-ms-input-placeholder{color:var(--paper-input-container-color,--secondary-text-color)}label{pointer-events:none}</style><paper-input-container no-label-float="[[noLabelFloat]]" always-float-label="[[_computeAlwaysFloatLabel(alwaysFloatLabel,placeholder)]]" auto-validate$="[[autoValidate]]" disabled$="[[disabled]]" invalid="[[invalid]]"><content select="[prefix]"></content><label hidden$="[[!label]]" aria-hidden="true" for="input">[[label]]</label><input is="iron-input" id="input" aria-labelledby$="[[_ariaLabelledBy]]" aria-describedby$="[[_ariaDescribedBy]]" disabled$="[[disabled]]" title$="[[title]]" bind-value="{{value}}" invalid="{{invalid}}" prevent-invalid-input="[[preventInvalidInput]]" allowed-pattern="[[allowedPattern]]" validator="[[validator]]" type$="[[type]]" pattern$="[[pattern]]" required$="[[required]]" autocomplete$="[[autocomplete]]" autofocus$="[[autofocus]]" inputmode$="[[inputmode]]" minlength$="[[minlength]]" maxlength$="[[maxlength]]" min$="[[min]]" max$="[[max]]" step$="[[step]]" name$="[[name]]" placeholder$="[[placeholder]]" readonly$="[[readonly]]" list$="[[list]]" size$="[[size]]" autocapitalize$="[[autocapitalize]]" autocorrect$="[[autocorrect]]" on-change="_onChange" tabindex$="[[tabindex]]" autosave$="[[autosave]]" results$="[[results]]" accept$="[[accept]]" multiple$="[[multiple]]"><content select="[suffix]"></content><template is="dom-if" if="[[errorMessage]]"><paper-input-error aria-live="assertive">[[errorMessage]]</paper-input-error></template><template is="dom-if" if="[[charCounter]]"><paper-input-char-counter></paper-input-char-counter></template></paper-input-container></template></dom-module><script>Polymer({is:"paper-input",behaviors:[Polymer.IronFormElementBehavior,Polymer.PaperInputBehavior]})</script><script>Polymer.IronFitBehavior={properties:{sizingTarget:{type:Object,value:function(){return this}},fitInto:{type:Object,value:window},noOverlap:{type:Boolean},positionTarget:{type:Element},horizontalAlign:{type:String},verticalAlign:{type:String},dynamicAlign:{type:Boolean},horizontalOffset:{type:Number,value:0,notify:!0},verticalOffset:{type:Number,value:0,notify:!0},autoFitOnAttach:{type:Boolean,value:!1},_fitInfo:{type:Object}},get _fitWidth(){var t;return t=this.fitInto===window?this.fitInto.innerWidth:this.fitInto.getBoundingClientRect().width},get _fitHeight(){var t;return t=this.fitInto===window?this.fitInto.innerHeight:this.fitInto.getBoundingClientRect().height},get _fitLeft(){var t;return t=this.fitInto===window?0:this.fitInto.getBoundingClientRect().left},get _fitTop(){var t;return t=this.fitInto===window?0:this.fitInto.getBoundingClientRect().top},get _defaultPositionTarget(){var t=Polymer.dom(this).parentNode;return t&&t.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&(t=t.host),t},get _localeHorizontalAlign(){if(this._isRTL){if("right"===this.horizontalAlign)return"left";if("left"===this.horizontalAlign)return"right"}return this.horizontalAlign},attached:function(){this._isRTL="rtl"==window.getComputedStyle(this).direction,this.positionTarget=this.positionTarget||this._defaultPositionTarget,this.autoFitOnAttach&&("none"===window.getComputedStyle(this).display?setTimeout(function(){this.fit()}.bind(this)):this.fit())},fit:function(){this.position(),this.constrain(),this.center()},_discoverInfo:function(){if(!this._fitInfo){var t=window.getComputedStyle(this),i=window.getComputedStyle(this.sizingTarget);this._fitInfo={inlineStyle:{top:this.style.top||"",left:this.style.left||"",position:this.style.position||""},sizerInlineStyle:{maxWidth:this.sizingTarget.style.maxWidth||"",maxHeight:this.sizingTarget.style.maxHeight||"",boxSizing:this.sizingTarget.style.boxSizing||""},positionedBy:{vertically:"auto"!==t.top?"top":"auto"!==t.bottom?"bottom":null,horizontally:"auto"!==t.left?"left":"auto"!==t.right?"right":null},sizedBy:{height:"none"!==i.maxHeight,width:"none"!==i.maxWidth,minWidth:parseInt(i.minWidth,10)||0,minHeight:parseInt(i.minHeight,10)||0},margin:{top:parseInt(t.marginTop,10)||0,right:parseInt(t.marginRight,10)||0,bottom:parseInt(t.marginBottom,10)||0,left:parseInt(t.marginLeft,10)||0}},this.verticalOffset&&(this._fitInfo.margin.top=this._fitInfo.margin.bottom=this.verticalOffset,this._fitInfo.inlineStyle.marginTop=this.style.marginTop||"",this._fitInfo.inlineStyle.marginBottom=this.style.marginBottom||"",this.style.marginTop=this.style.marginBottom=this.verticalOffset+"px"),this.horizontalOffset&&(this._fitInfo.margin.left=this._fitInfo.margin.right=this.horizontalOffset,this._fitInfo.inlineStyle.marginLeft=this.style.marginLeft||"",this._fitInfo.inlineStyle.marginRight=this.style.marginRight||"",this.style.marginLeft=this.style.marginRight=this.horizontalOffset+"px")}},resetFit:function(){var t=this._fitInfo||{};for(var i in t.sizerInlineStyle)this.sizingTarget.style[i]=t.sizerInlineStyle[i];for(var i in t.inlineStyle)this.style[i]=t.inlineStyle[i];this._fitInfo=null},refit:function(){var t=this.sizingTarget.scrollLeft,i=this.sizingTarget.scrollTop;this.resetFit(),this.fit(),this.sizingTarget.scrollLeft=t,this.sizingTarget.scrollTop=i},position:function(){if(this.horizontalAlign||this.verticalAlign){this._discoverInfo(),this.style.position="fixed",this.sizingTarget.style.boxSizing="border-box",this.style.left="0px",this.style.top="0px";var t=this.getBoundingClientRect(),i=this.__getNormalizedRect(this.positionTarget),e=this.__getNormalizedRect(this.fitInto),n=this._fitInfo.margin,o={width:t.width+n.left+n.right,height:t.height+n.top+n.bottom},h=this.__getPosition(this._localeHorizontalAlign,this.verticalAlign,o,i,e),s=h.left+n.left,l=h.top+n.top,r=Math.min(e.right-n.right,s+t.width),a=Math.min(e.bottom-n.bottom,l+t.height),g=this._fitInfo.sizedBy.minWidth,f=this._fitInfo.sizedBy.minHeight;s<n.left&&(s=n.left,r-s<g&&(s=r-g)),l<n.top&&(l=n.top,a-l<f&&(l=a-f)),this.sizingTarget.style.maxWidth=r-s+"px",this.sizingTarget.style.maxHeight=a-l+"px",this.style.left=s-t.left+"px",this.style.top=l-t.top+"px"}},constrain:function(){if(!this.horizontalAlign&&!this.verticalAlign){this._discoverInfo();var t=this._fitInfo;t.positionedBy.vertically||(this.style.position="fixed",this.style.top="0px"),t.positionedBy.horizontally||(this.style.position="fixed",this.style.left="0px"),this.sizingTarget.style.boxSizing="border-box";var i=this.getBoundingClientRect();t.sizedBy.height||this.__sizeDimension(i,t.positionedBy.vertically,"top","bottom","Height"),t.sizedBy.width||this.__sizeDimension(i,t.positionedBy.horizontally,"left","right","Width")}},_sizeDimension:function(t,i,e,n,o){this.__sizeDimension(t,i,e,n,o)},__sizeDimension:function(t,i,e,n,o){var h=this._fitInfo,s=this.__getNormalizedRect(this.fitInto),l="Width"===o?s.width:s.height,r=i===n,a=r?l-t[n]:t[e],g=h.margin[r?e:n],f="offset"+o,p=this[f]-this.sizingTarget[f];this.sizingTarget.style["max"+o]=l-g-a-p+"px"},center:function(){if(!this.horizontalAlign&&!this.verticalAlign){this._discoverInfo();var t=this._fitInfo.positionedBy;if(!t.vertically||!t.horizontally){this.style.position="fixed",t.vertically||(this.style.top="0px"),t.horizontally||(this.style.left="0px");var i=this.getBoundingClientRect(),e=this.__getNormalizedRect(this.fitInto);if(!t.vertically){var n=e.top-i.top+(e.height-i.height)/2;this.style.top=n+"px"}if(!t.horizontally){var o=e.left-i.left+(e.width-i.width)/2;this.style.left=o+"px"}}}},__getNormalizedRect:function(t){return t===document.documentElement||t===window?{top:0,left:0,width:window.innerWidth,height:window.innerHeight,right:window.innerWidth,bottom:window.innerHeight}:t.getBoundingClientRect()},__getCroppedArea:function(t,i,e){var n=Math.min(0,t.top)+Math.min(0,e.bottom-(t.top+i.height)),o=Math.min(0,t.left)+Math.min(0,e.right-(t.left+i.width));return Math.abs(n)*i.width+Math.abs(o)*i.height},__getPosition:function(t,i,e,n,o){var h=[{verticalAlign:"top",horizontalAlign:"left",top:n.top,left:n.left},{verticalAlign:"top",horizontalAlign:"right",top:n.top,left:n.right-e.width},{verticalAlign:"bottom",horizontalAlign:"left",top:n.bottom-e.height,left:n.left},{verticalAlign:"bottom",horizontalAlign:"right",top:n.bottom-e.height,left:n.right-e.width}];if(this.noOverlap){for(var s=0,l=h.length;s<l;s++){var r={};for(var a in h[s])r[a]=h[s][a];h.push(r)}h[0].top=h[1].top+=n.height,h[2].top=h[3].top-=n.height,h[4].left=h[6].left+=n.width,h[5].left=h[7].left-=n.width}i="auto"===i?null:i,t="auto"===t?null:t;for(var g,s=0;s<h.length;s++){var f=h[s];if(!this.dynamicAlign&&!this.noOverlap&&f.verticalAlign===i&&f.horizontalAlign===t){g=f;break}var p=!(i&&f.verticalAlign!==i||t&&f.horizontalAlign!==t);if(this.dynamicAlign||p){g=g||f,f.croppedArea=this.__getCroppedArea(f,e,o);var d=f.croppedArea-g.croppedArea;if((d<0||0===d&&p)&&(g=f),0===g.croppedArea&&p)break}}return g}}</script><dom-module id="iron-overlay-backdrop" assetpath="/"><template><style>:host{position:fixed;top:0;left:0;width:100%;height:100%;background-color:var(--iron-overlay-backdrop-background-color,#000);opacity:0;transition:opacity .2s;pointer-events:none;@apply(--iron-overlay-backdrop)}:host(.opened){opacity:var(--iron-overlay-backdrop-opacity,.6);pointer-events:auto;@apply(--iron-overlay-backdrop-opened)}</style><content></content></template></dom-module><script>!function(){"use strict";Polymer({is:"iron-overlay-backdrop",properties:{opened:{reflectToAttribute:!0,type:Boolean,value:!1,observer:"_openedChanged"}},listeners:{transitionend:"_onTransitionend"},created:function(){this.__openedRaf=null},attached:function(){this.opened&&this._openedChanged(this.opened)},prepare:function(){this.opened&&!this.parentNode&&Polymer.dom(document.body).appendChild(this)},open:function(){this.opened=!0},close:function(){this.opened=!1},complete:function(){this.opened||this.parentNode!==document.body||Polymer.dom(this.parentNode).removeChild(this)},_onTransitionend:function(e){e&&e.target===this&&this.complete()},_openedChanged:function(e){if(e)this.prepare();else{var t=window.getComputedStyle(this);"0s"!==t.transitionDuration&&0!=t.opacity||this.complete()}this.isAttached&&(this.__openedRaf&&(window.cancelAnimationFrame(this.__openedRaf),this.__openedRaf=null),this.scrollTop=this.scrollTop,this.__openedRaf=window.requestAnimationFrame(function(){this.__openedRaf=null,this.toggleClass("opened",this.opened)}.bind(this)))}})}()</script><script>Polymer.IronOverlayManagerClass=function(){this._overlays=[],this._minimumZ=101,this._backdropElement=null,Polymer.Gestures.add(document,"tap",this._onCaptureClick.bind(this)),document.addEventListener("focus",this._onCaptureFocus.bind(this),!0),document.addEventListener("keydown",this._onCaptureKeyDown.bind(this),!0)},Polymer.IronOverlayManagerClass.prototype={constructor:Polymer.IronOverlayManagerClass,get backdropElement(){return this._backdropElement||(this._backdropElement=document.createElement("iron-overlay-backdrop")),this._backdropElement},get deepActiveElement(){for(var e=document.activeElement||document.body;e.root&&Polymer.dom(e.root).activeElement;)e=Polymer.dom(e.root).activeElement;return e},_bringOverlayAtIndexToFront:function(e){var t=this._overlays[e];if(t){var r=this._overlays.length-1,a=this._overlays[r];if(a&&this._shouldBeBehindOverlay(t,a)&&r--,!(e>=r)){var n=Math.max(this.currentOverlayZ(),this._minimumZ);for(this._getZ(t)<=n&&this._applyOverlayZ(t,n);e<r;)this._overlays[e]=this._overlays[e+1],e++;this._overlays[r]=t}}},addOrRemoveOverlay:function(e){e.opened?this.addOverlay(e):this.removeOverlay(e)},addOverlay:function(e){var t=this._overlays.indexOf(e);if(t>=0)return this._bringOverlayAtIndexToFront(t),void this.trackBackdrop();var r=this._overlays.length,a=this._overlays[r-1],n=Math.max(this._getZ(a),this._minimumZ),o=this._getZ(e);if(a&&this._shouldBeBehindOverlay(e,a)){this._applyOverlayZ(a,n),r--;var i=this._overlays[r-1];n=Math.max(this._getZ(i),this._minimumZ)}o<=n&&this._applyOverlayZ(e,n),this._overlays.splice(r,0,e),this.trackBackdrop()},removeOverlay:function(e){var t=this._overlays.indexOf(e);t!==-1&&(this._overlays.splice(t,1),this.trackBackdrop())},currentOverlay:function(){var e=this._overlays.length-1;return this._overlays[e]},currentOverlayZ:function(){return this._getZ(this.currentOverlay())},ensureMinimumZ:function(e){this._minimumZ=Math.max(this._minimumZ,e)},focusOverlay:function(){var e=this.currentOverlay();e&&e._applyFocus()},trackBackdrop:function(){var e=this._overlayWithBackdrop();(e||this._backdropElement)&&(this.backdropElement.style.zIndex=this._getZ(e)-1,this.backdropElement.opened=!!e)},getBackdrops:function(){for(var e=[],t=0;t<this._overlays.length;t++)this._overlays[t].withBackdrop&&e.push(this._overlays[t]);return e},backdropZ:function(){return this._getZ(this._overlayWithBackdrop())-1},_overlayWithBackdrop:function(){for(var e=0;e<this._overlays.length;e++)if(this._overlays[e].withBackdrop)return this._overlays[e]},_getZ:function(e){var t=this._minimumZ;if(e){var r=Number(e.style.zIndex||window.getComputedStyle(e).zIndex);r===r&&(t=r)}return t},_setZ:function(e,t){e.style.zIndex=t},_applyOverlayZ:function(e,t){this._setZ(e,t+2)},_overlayInPath:function(e){e=e||[];for(var t=0;t<e.length;t++)if(e[t]._manager===this)return e[t]},_onCaptureClick:function(e){var t=this.currentOverlay();t&&this._overlayInPath(Polymer.dom(e).path)!==t&&t._onCaptureClick(e)},_onCaptureFocus:function(e){var t=this.currentOverlay();t&&t._onCaptureFocus(e)},_onCaptureKeyDown:function(e){var t=this.currentOverlay();t&&(Polymer.IronA11yKeysBehavior.keyboardEventMatchesKeys(e,"esc")?t._onCaptureEsc(e):Polymer.IronA11yKeysBehavior.keyboardEventMatchesKeys(e,"tab")&&t._onCaptureTab(e))},_shouldBeBehindOverlay:function(e,t){return!e.alwaysOnTop&&t.alwaysOnTop}},Polymer.IronOverlayManager=new Polymer.IronOverlayManagerClass</script><script>!function(){"use strict";var e=Element.prototype,t=e.matches||e.matchesSelector||e.mozMatchesSelector||e.msMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;Polymer.IronFocusablesHelper={getTabbableNodes:function(e){var t=[],r=this._collectTabbableNodes(e,t);return r?this._sortByTabIndex(t):t},isFocusable:function(e){return t.call(e,"input, select, textarea, button, object")?t.call(e,":not([disabled])"):t.call(e,"a[href], area[href], iframe, [tabindex], [contentEditable]")},isTabbable:function(e){return this.isFocusable(e)&&t.call(e,':not([tabindex="-1"])')&&this._isVisible(e)},_normalizedTabIndex:function(e){if(this.isFocusable(e)){var t=e.getAttribute("tabindex")||0;return Number(t)}return-1},_collectTabbableNodes:function(e,t){if(e.nodeType!==Node.ELEMENT_NODE||!this._isVisible(e))return!1;var r=e,a=this._normalizedTabIndex(r),i=a>0;a>=0&&t.push(r);var n;n="content"===r.localName?Polymer.dom(r).getDistributedNodes():Polymer.dom(r.root||r).children;for(var o=0;o<n.length;o++){var s=this._collectTabbableNodes(n[o],t);i=i||s}return i},_isVisible:function(e){var t=e.style;return"hidden"!==t.visibility&&"none"!==t.display&&(t=window.getComputedStyle(e),"hidden"!==t.visibility&&"none"!==t.display)},_sortByTabIndex:function(e){var t=e.length;if(t<2)return e;var r=Math.ceil(t/2),a=this._sortByTabIndex(e.slice(0,r)),i=this._sortByTabIndex(e.slice(r));return this._mergeSortByTabIndex(a,i)},_mergeSortByTabIndex:function(e,t){for(var r=[];e.length>0&&t.length>0;)this._hasLowerTabOrder(e[0],t[0])?r.push(t.shift()):r.push(e.shift());return r.concat(e,t)},_hasLowerTabOrder:function(e,t){var r=Math.max(e.tabIndex,0),a=Math.max(t.tabIndex,0);return 0===r||0===a?a>r:r>a}}}()</script><script>!function(){"use strict";Polymer.IronOverlayBehaviorImpl={properties:{opened:{observer:"_openedChanged",type:Boolean,value:!1,notify:!0},canceled:{observer:"_canceledChanged",readOnly:!0,type:Boolean,value:!1},withBackdrop:{observer:"_withBackdropChanged",type:Boolean},noAutoFocus:{type:Boolean,value:!1},noCancelOnEscKey:{type:Boolean,value:!1},noCancelOnOutsideClick:{type:Boolean,value:!1},closingReason:{type:Object},restoreFocusOnClose:{type:Boolean,value:!1},alwaysOnTop:{type:Boolean},_manager:{type:Object,value:Polymer.IronOverlayManager},_focusedChild:{type:Object}},listeners:{"iron-resize":"_onIronResize"},get backdropElement(){return this._manager.backdropElement},get _focusNode(){return this._focusedChild||Polymer.dom(this).querySelector("[autofocus]")||this},get _focusableNodes(){return Polymer.IronFocusablesHelper.getTabbableNodes(this)},ready:function(){this.__isAnimating=!1,this.__shouldRemoveTabIndex=!1,this.__firstFocusableNode=this.__lastFocusableNode=null,this.__raf=null,this.__restoreFocusNode=null,this._ensureSetup()},attached:function(){this.opened&&this._openedChanged(this.opened),this._observer=Polymer.dom(this).observeNodes(this._onNodesChange)},detached:function(){Polymer.dom(this).unobserveNodes(this._observer),this._observer=null,this.__raf&&(window.cancelAnimationFrame(this.__raf),this.__raf=null),this._manager.removeOverlay(this)},toggle:function(){this._setCanceled(!1),this.opened=!this.opened},open:function(){this._setCanceled(!1),this.opened=!0},close:function(){this._setCanceled(!1),this.opened=!1},cancel:function(e){var t=this.fire("iron-overlay-canceled",e,{cancelable:!0});t.defaultPrevented||(this._setCanceled(!0),this.opened=!1)},invalidateTabbables:function(){this.__firstFocusableNode=this.__lastFocusableNode=null},_ensureSetup:function(){this._overlaySetup||(this._overlaySetup=!0,this.style.outline="none",this.style.display="none")},_openedChanged:function(e){e?this.removeAttribute("aria-hidden"):this.setAttribute("aria-hidden","true"),this.isAttached&&(this.__isAnimating=!0,this.__onNextAnimationFrame(this.__openedChanged))},_canceledChanged:function(){this.closingReason=this.closingReason||{},this.closingReason.canceled=this.canceled},_withBackdropChanged:function(){this.withBackdrop&&!this.hasAttribute("tabindex")?(this.setAttribute("tabindex","-1"),this.__shouldRemoveTabIndex=!0):this.__shouldRemoveTabIndex&&(this.removeAttribute("tabindex"),this.__shouldRemoveTabIndex=!1),this.opened&&this.isAttached&&this._manager.trackBackdrop()},_prepareRenderOpened:function(){this.__restoreFocusNode=this._manager.deepActiveElement,this._preparePositioning(),this.refit(),this._finishPositioning(),this.noAutoFocus&&document.activeElement===this._focusNode&&(this._focusNode.blur(),this.__restoreFocusNode.focus())},_renderOpened:function(){this._finishRenderOpened()},_renderClosed:function(){this._finishRenderClosed()},_finishRenderOpened:function(){this.notifyResize(),this.__isAnimating=!1,this.fire("iron-overlay-opened")},_finishRenderClosed:function(){this.style.display="none",this.style.zIndex="",this.notifyResize(),this.__isAnimating=!1,this.fire("iron-overlay-closed",this.closingReason)},_preparePositioning:function(){this.style.transition=this.style.webkitTransition="none",this.style.transform=this.style.webkitTransform="none",this.style.display=""},_finishPositioning:function(){this.style.display="none",this.scrollTop=this.scrollTop,this.style.transition=this.style.webkitTransition="",this.style.transform=this.style.webkitTransform="",this.style.display="",this.scrollTop=this.scrollTop},_applyFocus:function(){if(this.opened)this.noAutoFocus||this._focusNode.focus();else{this._focusNode.blur(),this._focusedChild=null,this.restoreFocusOnClose&&this.__restoreFocusNode&&this.__restoreFocusNode.focus(),this.__restoreFocusNode=null;var e=this._manager.currentOverlay();e&&this!==e&&e._applyFocus()}},_onCaptureClick:function(e){this.noCancelOnOutsideClick||this.cancel(e)},_onCaptureFocus:function(e){if(this.withBackdrop){var t=Polymer.dom(e).path;t.indexOf(this)===-1?(e.stopPropagation(),this._applyFocus()):this._focusedChild=t[0]}},_onCaptureEsc:function(e){this.noCancelOnEscKey||this.cancel(e)},_onCaptureTab:function(e){if(this.withBackdrop){this.__ensureFirstLastFocusables();var t=e.shiftKey,i=t?this.__firstFocusableNode:this.__lastFocusableNode,s=t?this.__lastFocusableNode:this.__firstFocusableNode,o=!1;if(i===s)o=!0;else{var n=this._manager.deepActiveElement;o=n===i||n===this}o&&(e.preventDefault(),this._focusedChild=s,this._applyFocus())}},_onIronResize:function(){this.opened&&!this.__isAnimating&&this.__onNextAnimationFrame(this.refit)},_onNodesChange:function(){this.opened&&!this.__isAnimating&&(this.invalidateTabbables(),this.notifyResize())},__ensureFirstLastFocusables:function(){if(!this.__firstFocusableNode||!this.__lastFocusableNode){var e=this._focusableNodes;this.__firstFocusableNode=e[0],this.__lastFocusableNode=e[e.length-1]}},__openedChanged:function(){this.opened?(this._prepareRenderOpened(),this._manager.addOverlay(this),this._applyFocus(),this._renderOpened()):(this._manager.removeOverlay(this),this._applyFocus(),this._renderClosed())},__onNextAnimationFrame:function(e){this.__raf&&window.cancelAnimationFrame(this.__raf);var t=this;this.__raf=window.requestAnimationFrame(function(){t.__raf=null,e.call(t)})}},Polymer.IronOverlayBehavior=[Polymer.IronFitBehavior,Polymer.IronResizableBehavior,Polymer.IronOverlayBehaviorImpl]}()</script><script>Polymer.NeonAnimatableBehavior={properties:{animationConfig:{type:Object},entryAnimation:{observer:"_entryAnimationChanged",type:String},exitAnimation:{observer:"_exitAnimationChanged",type:String}},_entryAnimationChanged:function(){this.animationConfig=this.animationConfig||{},this.animationConfig.entry=[{name:this.entryAnimation,node:this}]},_exitAnimationChanged:function(){this.animationConfig=this.animationConfig||{},this.animationConfig.exit=[{name:this.exitAnimation,node:this}]},_copyProperties:function(i,n){for(var t in n)i[t]=n[t]},_cloneConfig:function(i){var n={isClone:!0};return this._copyProperties(n,i),n},_getAnimationConfigRecursive:function(i,n,t){if(this.animationConfig){if(this.animationConfig.value&&"function"==typeof this.animationConfig.value)return void this._warn(this._logf("playAnimation","Please put 'animationConfig' inside of your components 'properties' object instead of outside of it."));var o;if(o=i?this.animationConfig[i]:this.animationConfig,Array.isArray(o)||(o=[o]),o)for(var e,a=0;e=o[a];a++)if(e.animatable)e.animatable._getAnimationConfigRecursive(e.type||i,n,t);else if(e.id){var r=n[e.id];r?(r.isClone||(n[e.id]=this._cloneConfig(r),r=n[e.id]),this._copyProperties(r,e)):n[e.id]=e}else t.push(e)}},getAnimationConfig:function(i){var n={},t=[];this._getAnimationConfigRecursive(i,n,t);for(var o in n)t.push(n[o]);return t}}</script><script>Polymer.NeonAnimationRunnerBehaviorImpl={_configureAnimations:function(n){var i=[];if(n.length>0)for(var e,t=0;e=n[t];t++){var o=document.createElement(e.name);if(o.isNeonAnimation){var a=null;try{a=o.configure(e),"function"!=typeof a.cancel&&(a=document.timeline.play(a))}catch(n){a=null,console.warn("Couldnt play","(",e.name,").",n)}a&&i.push({neonAnimation:o,config:e,animation:a})}else console.warn(this.is+":",e.name,"not found!")}return i},_shouldComplete:function(n){for(var i=!0,e=0;e<n.length;e++)if("finished"!=n[e].animation.playState){i=!1;break}return i},_complete:function(n){for(var i=0;i<n.length;i++)n[i].neonAnimation.complete(n[i].config);for(var i=0;i<n.length;i++)n[i].animation.cancel()},playAnimation:function(n,i){var e=this.getAnimationConfig(n);if(e){this._active=this._active||{},this._active[n]&&(this._complete(this._active[n]),delete this._active[n]);var t=this._configureAnimations(e);if(0==t.length)return void this.fire("neon-animation-finish",i,{bubbles:!1});this._active[n]=t;for(var o=0;o<t.length;o++)t[o].animation.onfinish=function(){this._shouldComplete(t)&&(this._complete(t),delete this._active[n],this.fire("neon-animation-finish",i,{bubbles:!1}))}.bind(this)}},cancelAnimation:function(){for(var n in this._animations)this._animations[n].cancel();this._animations={}}},Polymer.NeonAnimationRunnerBehavior=[Polymer.NeonAnimatableBehavior,Polymer.NeonAnimationRunnerBehaviorImpl]</script><script>Polymer.NeonAnimationBehavior={properties:{animationTiming:{type:Object,value:function(){return{duration:500,easing:"cubic-bezier(0.4, 0, 0.2, 1)",fill:"both"}}}},isNeonAnimation:!0,timingFromConfig:function(i){if(i.timing)for(var n in i.timing)this.animationTiming[n]=i.timing[n];return this.animationTiming},setPrefixedProperty:function(i,n,r){for(var t,o={transform:["webkitTransform"],transformOrigin:["mozTransformOrigin","webkitTransformOrigin"]},e=o[n],m=0;t=e[m];m++)i.style[t]=r;i.style[n]=r},complete:function(){}}</script><script>!function(a,b){var c={},d={},e={},f=null;!function(t,e){function i(t){if("number"==typeof t)return t;var e={};for(var i in t)e[i]=t[i];return e}function n(){this._delay=0,this._endDelay=0,this._fill="none",this._iterationStart=0,this._iterations=1,this._duration=0,this._playbackRate=1,this._direction="normal",this._easing="linear",this._easingFunction=E}function r(){return t.isDeprecated("Invalid timing inputs","2016-03-02","TypeError exceptions will be thrown instead.",!0)}function o(e,i,r){var o=new n;return i&&(o.fill="both",o.duration="auto"),"number"!=typeof e||isNaN(e)?void 0!==e&&Object.getOwnPropertyNames(e).forEach(function(i){if("auto"!=e[i]){if(("number"==typeof o[i]||"duration"==i)&&("number"!=typeof e[i]||isNaN(e[i])))return;if("fill"==i&&w.indexOf(e[i])==-1)return;if("direction"==i&&T.indexOf(e[i])==-1)return;if("playbackRate"==i&&1!==e[i]&&t.isDeprecated("AnimationEffectTiming.playbackRate","2014-11-28","Use Animation.playbackRate instead."))return;o[i]=e[i]}}):o.duration=e,o}function a(t){return"number"==typeof t&&(t=isNaN(t)?{duration:0}:{duration:t}),t}function s(e,i){return e=t.numericTimingToObject(e),o(e,i)}function u(t,e,i,n){return t<0||t>1||i<0||i>1?E:function(r){function o(t,e,i){return 3*t*(1-i)*(1-i)*i+3*e*(1-i)*i*i+i*i*i}if(r<=0){var a=0;return t>0?a=e/t:!e&&i>0&&(a=n/i),a*r}if(r>=1){var s=0;return i<1?s=(n-1)/(i-1):1==i&&t<1&&(s=(e-1)/(t-1)),1+s*(r-1)}for(var u=0,c=1;u<c;){var f=(u+c)/2,l=o(t,i,f);if(Math.abs(r-l)<1e-5)return o(e,n,f);l<r?u=f:c=f}return o(e,n,f)}}function c(t,e){return function(i){if(i>=1)return 1;var n=1/t;return i+=e*n,i-i%n}}function f(t){R||(R=document.createElement("div").style),R.animationTimingFunction="",R.animationTimingFunction=t;var e=R.animationTimingFunction;if(""==e&&r())throw new TypeError(t+" is not a valid value for easing");return e}function l(t){if("linear"==t)return E;var e=O.exec(t);if(e)return u.apply(this,e.slice(1).map(Number));var i=k.exec(t);if(i)return c(Number(i[1]),{start:x,middle:A,end:P}[i[2]]);var n=j[t];return n?n:E}function h(t){return Math.abs(m(t)/t.playbackRate)}function m(t){return 0===t.duration||0===t.iterations?0:t.duration*t.iterations}function d(t,e,i){if(null==e)return S;var n=i.delay+t+i.endDelay;return e<Math.min(i.delay,n)?C:e>=Math.min(i.delay+t,n)?D:F}function p(t,e,i,n,r){switch(n){case C:return"backwards"==e||"both"==e?0:null;case F:return i-r;case D:return"forwards"==e||"both"==e?t:null;case S:return null}}function _(t,e,i,n,r){var o=r;return 0===t?e!==C&&(o+=i):o+=n/t,o}function g(t,e,i,n,r,o){var a=t===1/0?e%1:t%1;return 0!==a||i!==D||0===n||0===r&&0!==o||(a=1),a}function b(t,e,i,n){return t===D&&e===1/0?1/0:1===i?Math.floor(n)-1:Math.floor(n)}function v(t,e,i){var n=t;if("normal"!==t&&"reverse"!==t){var r=e;"alternate-reverse"===t&&(r+=1),n="normal",r!==1/0&&r%2!==0&&(n="reverse")}return"normal"===n?i:1-i}function y(t,e,i){var n=d(t,e,i),r=p(t,i.fill,e,n,i.delay);if(null===r)return null;var o=_(i.duration,n,i.iterations,r,i.iterationStart),a=g(o,i.iterationStart,n,i.iterations,r,i.duration),s=b(n,i.iterations,a,o),u=v(i.direction,s,a);return i._easingFunction(u)}var w="backwards|forwards|both|none".split("|"),T="reverse|alternate|alternate-reverse".split("|"),E=function(t){return t};n.prototype={_setMember:function(e,i){this["_"+e]=i,this._effect&&(this._effect._timingInput[e]=i,this._effect._timing=t.normalizeTimingInput(this._effect._timingInput),this._effect.activeDuration=t.calculateActiveDuration(this._effect._timing),this._effect._animation&&this._effect._animation._rebuildUnderlyingAnimation())},get playbackRate(){return this._playbackRate},set delay(t){this._setMember("delay",t)},get delay(){return this._delay},set endDelay(t){this._setMember("endDelay",t)},get endDelay(){return this._endDelay},set fill(t){this._setMember("fill",t)},get fill(){return this._fill},set iterationStart(t){if((isNaN(t)||t<0)&&r())throw new TypeError("iterationStart must be a non-negative number, received: "+timing.iterationStart);this._setMember("iterationStart",t)},get iterationStart(){return this._iterationStart},set duration(t){if("auto"!=t&&(isNaN(t)||t<0)&&r())throw new TypeError("duration must be non-negative or auto, received: "+t);this._setMember("duration",t)},get duration(){return this._duration},set direction(t){this._setMember("direction",t)},get direction(){return this._direction},set easing(t){this._easingFunction=l(f(t)),this._setMember("easing",t)},get easing(){return this._easing},set iterations(t){if((isNaN(t)||t<0)&&r())throw new TypeError("iterations must be non-negative, received: "+t);this._setMember("iterations",t)},get iterations(){return this._iterations}};var x=1,A=.5,P=0,j={ease:u(.25,.1,.25,1),"ease-in":u(.42,0,1,1),"ease-out":u(0,0,.58,1),"ease-in-out":u(.42,0,.58,1),"step-start":c(1,x),"step-middle":c(1,A),"step-end":c(1,P)},R=null,N="\\s*(-?\\d+\\.?\\d*|-?\\.\\d+)\\s*",O=new RegExp("cubic-bezier\\("+N+","+N+","+N+","+N+"\\)"),k=/steps\(\s*(\d+)\s*,\s*(start|middle|end)\s*\)/,S=0,C=1,D=2,F=3;t.cloneTimingInput=i,t.makeTiming=o,t.numericTimingToObject=a,t.normalizeTimingInput=s,t.calculateActiveDuration=h,t.calculateIterationProgress=y,t.calculatePhase=d,t.normalizeEasing=f,t.parseEasingFunction=l}(c,f),function(t,e){function i(t,e){return t in f?f[t][e]||e:e}function n(t){return"display"===t||0===t.lastIndexOf("animation",0)||0===t.lastIndexOf("transition",0)}function r(t,e,r){if(!n(t)){var o=s[t];if(o){u.style[t]=e;for(var a in o){var c=o[a],f=u.style[c];r[c]=i(c,f)}}else r[t]=i(t,e)}}function o(t){var e=[];for(var i in t)if(!(i in["easing","offset","composite"])){var n=t[i];Array.isArray(n)||(n=[n]);for(var r,o=n.length,a=0;a<o;a++)r={},"offset"in t?r.offset=t.offset:1==o?r.offset=1:r.offset=a/(o-1),"easing"in t&&(r.easing=t.easing),"composite"in t&&(r.composite=t.composite),r[i]=n[a],e.push(r)}return e.sort(function(t,e){return t.offset-e.offset}),e}function a(e){function i(){var t=n.length;null==n[t-1].offset&&(n[t-1].offset=1),t>1&&null==n[0].offset&&(n[0].offset=0);for(var e=0,i=n[0].offset,r=1;r<t;r++){var o=n[r].offset;if(null!=o){for(var a=1;a<r-e;a++)n[e+a].offset=i+(o-i)*a/(r-e);e=r,i=o}}}if(null==e)return[];window.Symbol&&Symbol.iterator&&Array.prototype.from&&e[Symbol.iterator]&&(e=Array.from(e)),Array.isArray(e)||(e=o(e));for(var n=e.map(function(e){var i={};for(var n in e){var o=e[n];if("offset"==n){if(null!=o){if(o=Number(o),!isFinite(o))throw new TypeError("Keyframe offsets must be numbers.");if(o<0||o>1)throw new TypeError("Keyframe offsets must be between 0 and 1.")}}else if("composite"==n){if("add"==o||"accumulate"==o)throw{type:DOMException.NOT_SUPPORTED_ERR,name:"NotSupportedError",message:"add compositing is not supported"};if("replace"!=o)throw new TypeError("Invalid composite mode "+o+".")}else o="easing"==n?t.normalizeEasing(o):""+o;r(n,o,i)}return void 0==i.offset&&(i.offset=null),void 0==i.easing&&(i.easing="linear"),i}),a=!0,s=-(1/0),u=0;u<n.length;u++){var c=n[u].offset;if(null!=c){if(c<s)throw new TypeError("Keyframes are not loosely sorted by offset. Sort or specify offsets.");s=c}else a=!1}return n=n.filter(function(t){return t.offset>=0&&t.offset<=1}),a||i(),n}var s={background:["backgroundImage","backgroundPosition","backgroundSize","backgroundRepeat","backgroundAttachment","backgroundOrigin","backgroundClip","backgroundColor"],border:["borderTopColor","borderTopStyle","borderTopWidth","borderRightColor","borderRightStyle","borderRightWidth","borderBottomColor","borderBottomStyle","borderBottomWidth","borderLeftColor","borderLeftStyle","borderLeftWidth"],borderBottom:["borderBottomWidth","borderBottomStyle","borderBottomColor"],borderColor:["borderTopColor","borderRightColor","borderBottomColor","borderLeftColor"],borderLeft:["borderLeftWidth","borderLeftStyle","borderLeftColor"],borderRadius:["borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius"],borderRight:["borderRightWidth","borderRightStyle","borderRightColor"],borderTop:["borderTopWidth","borderTopStyle","borderTopColor"],borderWidth:["borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth"],flex:["flexGrow","flexShrink","flexBasis"],font:["fontFamily","fontSize","fontStyle","fontVariant","fontWeight","lineHeight"],margin:["marginTop","marginRight","marginBottom","marginLeft"],outline:["outlineColor","outlineStyle","outlineWidth"],padding:["paddingTop","paddingRight","paddingBottom","paddingLeft"]},u=document.createElementNS("http://www.w3.org/1999/xhtml","div"),c={thin:"1px",medium:"3px",thick:"5px"},f={borderBottomWidth:c,borderLeftWidth:c,borderRightWidth:c,borderTopWidth:c,fontSize:{"xx-small":"60%","x-small":"75%",small:"89%",medium:"100%",large:"120%","x-large":"150%","xx-large":"200%"},fontWeight:{normal:"400",bold:"700"},outlineWidth:c,textShadow:{none:"0px 0px 0px transparent"},boxShadow:{none:"0px 0px 0px 0px transparent"}};t.convertToArrayForm=o,t.normalizeKeyframes=a}(c,f),function(t){var e={};t.isDeprecated=function(t,i,n,r){var o=r?"are":"is",a=new Date,s=new Date(i);return s.setMonth(s.getMonth()+3),!(a<s&&(t in e||console.warn("Web Animations: "+t+" "+o+" deprecated and will stop working on "+s.toDateString()+". "+n),e[t]=!0,1))},t.deprecated=function(e,i,n,r){var o=r?"are":"is";if(t.isDeprecated(e,i,n,r))throw new Error(e+" "+o+" no longer supported. "+n)}}(c),function(){if(document.documentElement.animate){var a=document.documentElement.animate([],0),b=!0;if(a&&(b=!1,"play|currentTime|pause|reverse|playbackRate|cancel|finish|startTime|playState".split("|").forEach(function(t){void 0===a[t]&&(b=!0)})),!b)return}!function(t,e,i){function n(t){for(var e={},i=0;i<t.length;i++)for(var n in t[i])if("offset"!=n&&"easing"!=n&&"composite"!=n){var r={offset:t[i].offset,easing:t[i].easing,value:t[i][n]};e[n]=e[n]||[],e[n].push(r)}for(var o in e){var a=e[o];if(0!=a[0].offset||1!=a[a.length-1].offset)throw{type:DOMException.NOT_SUPPORTED_ERR,name:"NotSupportedError",message:"Partial keyframes are not supported"}}return e}function r(i){var n=[];for(var r in i)for(var o=i[r],a=0;a<o.length-1;a++){var s=a,u=a+1,c=o[s].offset,f=o[u].offset,l=c,h=f;0==a&&(l=-(1/0),0==f&&(u=s)),a==o.length-2&&(h=1/0,1==c&&(s=u)),n.push({applyFrom:l,applyTo:h,startOffset:o[s].offset,endOffset:o[u].offset,easingFunction:t.parseEasingFunction(o[s].easing),property:r,interpolation:e.propertyInterpolation(r,o[s].value,o[u].value)})}return n.sort(function(t,e){return t.startOffset-e.startOffset}),n}e.convertEffectInput=function(i){var o=t.normalizeKeyframes(i),a=n(o),s=r(a);return function(t,i){if(null!=i)s.filter(function(t){return i>=t.applyFrom&&i<t.applyTo}).forEach(function(n){var r=i-n.startOffset,o=n.endOffset-n.startOffset,a=0==o?0:n.easingFunction(r/o);e.apply(t,n.property,n.interpolation(a))});else for(var n in a)"offset"!=n&&"easing"!=n&&"composite"!=n&&e.clear(t,n)}}}(c,d,f),function(t,e,i){function n(t){return t.replace(/-(.)/g,function(t,e){return e.toUpperCase()})}function r(t,e,i){s[i]=s[i]||[],s[i].push([t,e])}function o(t,e,i){for(var o=0;o<i.length;o++){var a=i[o];r(t,e,n(a))}}function a(i,r,o){var a=i;/-/.test(i)&&!t.isDeprecated("Hyphenated property names","2016-03-22","Use camelCase instead.",!0)&&(a=n(i)),"initial"!=r&&"initial"!=o||("initial"==r&&(r=u[a]),"initial"==o&&(o=u[a]));for(var c=r==o?[]:s[a],f=0;c&&f<c.length;f++){var l=c[f][0](r),h=c[f][0](o);if(void 0!==l&&void 0!==h){var m=c[f][1](l,h);if(m){var d=e.Interpolation.apply(null,m);return function(t){return 0==t?r:1==t?o:d(t)}}}}return e.Interpolation(!1,!0,function(t){return t?o:r})}var s={};e.addPropertiesHandler=o;var u={backgroundColor:"transparent",backgroundPosition:"0% 0%",borderBottomColor:"currentColor",borderBottomLeftRadius:"0px",borderBottomRightRadius:"0px",borderBottomWidth:"3px",borderLeftColor:"currentColor",borderLeftWidth:"3px",borderRightColor:"currentColor",borderRightWidth:"3px",borderSpacing:"2px",borderTopColor:"currentColor",borderTopLeftRadius:"0px",borderTopRightRadius:"0px",borderTopWidth:"3px",bottom:"auto",clip:"rect(0px, 0px, 0px, 0px)",color:"black",fontSize:"100%",fontWeight:"400",height:"auto",left:"auto",letterSpacing:"normal",lineHeight:"120%",marginBottom:"0px",marginLeft:"0px",marginRight:"0px",marginTop:"0px",maxHeight:"none",maxWidth:"none",minHeight:"0px",minWidth:"0px",opacity:"1.0",outlineColor:"invert",outlineOffset:"0px",outlineWidth:"3px",paddingBottom:"0px",paddingLeft:"0px",paddingRight:"0px",paddingTop:"0px",right:"auto",textIndent:"0px",textShadow:"0px 0px 0px transparent",top:"auto",transform:"",verticalAlign:"0px",visibility:"visible",width:"auto",wordSpacing:"normal",zIndex:"auto"};e.propertyInterpolation=a}(c,d,f),function(t,e,i){function n(e){var i=t.calculateActiveDuration(e),n=function(n){return t.calculateIterationProgress(i,n,e)};return n._totalDuration=e.delay+i+e.endDelay,n}e.KeyframeEffect=function(i,r,o,a){var s,u=n(t.normalizeTimingInput(o)),c=e.convertEffectInput(r),f=function(){c(i,s)};return f._update=function(t){return s=u(t),null!==s},f._clear=function(){c(i,null)},f._hasSameTarget=function(t){return i===t},f._target=i,f._totalDuration=u._totalDuration,f._id=a,f},e.NullEffect=function(t){var e=function(){t&&(t(),t=null)};return e._update=function(){return null},e._totalDuration=0,e._hasSameTarget=function(){return!1},e}}(c,d,f),function(t,e){t.apply=function(e,i,n){e.style[t.propertyName(i)]=n},t.clear=function(e,i){e.style[t.propertyName(i)]=""}}(d,f),function(t){window.Element.prototype.animate=function(e,i){var n="";return i&&i.id&&(n=i.id),t.timeline._play(t.KeyframeEffect(this,e,i,n))}}(d),function(t,e){function i(t,e,n){if("number"==typeof t&&"number"==typeof e)return t*(1-n)+e*n;if("boolean"==typeof t&&"boolean"==typeof e)return n<.5?t:e;if(t.length==e.length){for(var r=[],o=0;o<t.length;o++)r.push(i(t[o],e[o],n));return r}throw"Mismatched interpolation arguments "+t+":"+e}t.Interpolation=function(t,e,n){return function(r){return n(i(t,e,r))}}}(d,f),function(t,e,i){t.sequenceNumber=0;var n=function(t,e,i){this.target=t,this.currentTime=e,this.timelineTime=i,this.type="finish",this.bubbles=!1,this.cancelable=!1,this.currentTarget=t,this.defaultPrevented=!1,this.eventPhase=Event.AT_TARGET,this.timeStamp=Date.now()};e.Animation=function(e){this.id="",e&&e._id&&(this.id=e._id),this._sequenceNumber=t.sequenceNumber++,this._currentTime=0,this._startTime=null,this._paused=!1,this._playbackRate=1,this._inTimeline=!0,this._finishedFlag=!0,this.onfinish=null,this._finishHandlers=[],this._effect=e,this._inEffect=this._effect._update(0),this._idle=!0,this._currentTimePending=!1},e.Animation.prototype={_ensureAlive:function(){this.playbackRate<0&&0===this.currentTime?this._inEffect=this._effect._update(-1):this._inEffect=this._effect._update(this.currentTime),this._inTimeline||!this._inEffect&&this._finishedFlag||(this._inTimeline=!0,e.timeline._animations.push(this))},_tickCurrentTime:function(t,e){t!=this._currentTime&&(this._currentTime=t,this._isFinished&&!e&&(this._currentTime=this._playbackRate>0?this._totalDuration:0),this._ensureAlive())},get currentTime(){return this._idle||this._currentTimePending?null:this._currentTime},set currentTime(t){t=+t,isNaN(t)||(e.restart(),this._paused||null==this._startTime||(this._startTime=this._timeline.currentTime-t/this._playbackRate),this._currentTimePending=!1,this._currentTime!=t&&(this._idle&&(this._idle=!1,this._paused=!0),this._tickCurrentTime(t,!0),e.applyDirtiedAnimation(this)))},get startTime(){return this._startTime},set startTime(t){t=+t,isNaN(t)||this._paused||this._idle||(this._startTime=t,this._tickCurrentTime((this._timeline.currentTime-this._startTime)*this.playbackRate),e.applyDirtiedAnimation(this))},get playbackRate(){return this._playbackRate},set playbackRate(t){if(t!=this._playbackRate){var i=this.currentTime;this._playbackRate=t,this._startTime=null,"paused"!=this.playState&&"idle"!=this.playState&&(this._finishedFlag=!1,this._idle=!1,this._ensureAlive(),e.applyDirtiedAnimation(this)),null!=i&&(this.currentTime=i)}},get _isFinished(){return!this._idle&&(this._playbackRate>0&&this._currentTime>=this._totalDuration||this._playbackRate<0&&this._currentTime<=0)},get _totalDuration(){return this._effect._totalDuration},get playState(){return this._idle?"idle":null==this._startTime&&!this._paused&&0!=this.playbackRate||this._currentTimePending?"pending":this._paused?"paused":this._isFinished?"finished":"running"},_rewind:function(){if(this._playbackRate>=0)this._currentTime=0;else{if(!(this._totalDuration<1/0))throw new DOMException("Unable to rewind negative playback rate animation with infinite duration","InvalidStateError");this._currentTime=this._totalDuration}},play:function(){this._paused=!1,(this._isFinished||this._idle)&&(this._rewind(),this._startTime=null),this._finishedFlag=!1,this._idle=!1,this._ensureAlive(),e.applyDirtiedAnimation(this)},pause:function(){this._isFinished||this._paused||this._idle?this._idle&&(this._rewind(),this._idle=!1):this._currentTimePending=!0,this._startTime=null,this._paused=!0},finish:function(){this._idle||(this.currentTime=this._playbackRate>0?this._totalDuration:0,this._startTime=this._totalDuration-this.currentTime,this._currentTimePending=!1,e.applyDirtiedAnimation(this))},cancel:function(){this._inEffect&&(this._inEffect=!1,this._idle=!0,this._paused=!1,this._isFinished=!0,this._finishedFlag=!0,this._currentTime=0,this._startTime=null,this._effect._update(null),e.applyDirtiedAnimation(this))},reverse:function(){this.playbackRate*=-1,this.play()},addEventListener:function(t,e){"function"==typeof e&&"finish"==t&&this._finishHandlers.push(e)},removeEventListener:function(t,e){if("finish"==t){var i=this._finishHandlers.indexOf(e);i>=0&&this._finishHandlers.splice(i,1)}},_fireEvents:function(t){if(this._isFinished){if(!this._finishedFlag){var e=new n(this,this._currentTime,t),i=this._finishHandlers.concat(this.onfinish?[this.onfinish]:[]);setTimeout(function(){i.forEach(function(t){t.call(e.target,e)})},0),this._finishedFlag=!0}}else this._finishedFlag=!1},_tick:function(t,e){this._idle||this._paused||(null==this._startTime?e&&(this.startTime=t-this._currentTime/this.playbackRate):this._isFinished||this._tickCurrentTime((t-this._startTime)*this.playbackRate)),e&&(this._currentTimePending=!1,this._fireEvents(t))},get _needsTick(){return this.playState in{pending:1,running:1}||!this._finishedFlag},_targetAnimations:function(){var t=this._effect._target;return t._activeAnimations||(t._activeAnimations=[]),t._activeAnimations},_markTarget:function(){var t=this._targetAnimations();t.indexOf(this)===-1&&t.push(this)},_unmarkTarget:function(){var t=this._targetAnimations(),e=t.indexOf(this);e!==-1&&t.splice(e,1)}}}(c,d,f),function(t,e,i){function n(t){var e=c;c=[],t<_.currentTime&&(t=_.currentTime),_._animations.sort(r),_._animations=s(t,!0,_._animations)[0],e.forEach(function(e){e[1](t)}),a(),l=void 0}function r(t,e){return t._sequenceNumber-e._sequenceNumber}function o(){this._animations=[],this.currentTime=window.performance&&performance.now?performance.now():0}function a(){d.forEach(function(t){t()}),d.length=0}function s(t,i,n){p=!0,m=!1;var r=e.timeline;r.currentTime=t,h=!1;var o=[],a=[],s=[],u=[];return n.forEach(function(e){e._tick(t,i),e._inEffect?(a.push(e._effect),e._markTarget()):(o.push(e._effect),e._unmarkTarget()),e._needsTick&&(h=!0);var n=e._inEffect||e._needsTick;e._inTimeline=n,n?s.push(e):u.push(e)}),d.push.apply(d,o),d.push.apply(d,a),h&&requestAnimationFrame(function(){}),p=!1,[s,u]}var u=window.requestAnimationFrame,c=[],f=0;window.requestAnimationFrame=function(t){var e=f++;return 0==c.length&&u(n),c.push([e,t]),e},window.cancelAnimationFrame=function(t){c.forEach(function(e){e[0]==t&&(e[1]=function(){})})},o.prototype={_play:function(i){i._timing=t.normalizeTimingInput(i.timing);var n=new e.Animation(i);return n._idle=!1,n._timeline=this,this._animations.push(n),e.restart(),e.applyDirtiedAnimation(n),n}};var l=void 0,h=!1,m=!1;e.restart=function(){return h||(h=!0,requestAnimationFrame(function(){}),m=!0),m},e.applyDirtiedAnimation=function(t){if(!p){t._markTarget();var i=t._targetAnimations();i.sort(r);var n=s(e.timeline.currentTime,!1,i.slice())[1];n.forEach(function(t){var e=_._animations.indexOf(t);e!==-1&&_._animations.splice(e,1)}),a()}};var d=[],p=!1,_=new o;e.timeline=_}(c,d,f),function(t){function e(t,e){var i=t.exec(e);if(i)return i=t.ignoreCase?i[0].toLowerCase():i[0],[i,e.substr(i.length)]}function i(t,e){e=e.replace(/^\s*/,"");var i=t(e);if(i)return[i[0],i[1].replace(/^\s*/,"")]}function n(t,n,r){t=i.bind(null,t);for(var o=[];;){var a=t(r);if(!a)return[o,r];if(o.push(a[0]),r=a[1],a=e(n,r),!a||""==a[1])return[o,r];r=a[1]}}function r(t,e){for(var i=0,n=0;n<e.length&&(!/\s|,/.test(e[n])||0!=i);n++)if("("==e[n])i++;else if(")"==e[n]&&(i--,0==i&&n++,i<=0))break;var r=t(e.substr(0,n));return void 0==r?void 0:[r,e.substr(n)]}function o(t,e){for(var i=t,n=e;i&&n;)i>n?i%=n:n%=i;return i=t*e/(i+n)}function a(t){return function(e){var i=t(e);return i&&(i[0]=void 0),i}}function s(t,e){return function(i){var n=t(i);return n?n:[e,i]}}function u(e,i){for(var n=[],r=0;r<e.length;r++){var o=t.consumeTrimmed(e[r],i);if(!o||""==o[0])return;void 0!==o[0]&&n.push(o[0]),i=o[1]}if(""==i)return n}function c(t,e,i,n,r){for(var a=[],s=[],u=[],c=o(n.length,r.length),f=0;f<c;f++){var l=e(n[f%n.length],r[f%r.length]);if(!l)return;a.push(l[0]),s.push(l[1]),u.push(l[2])}return[a,s,function(e){var n=e.map(function(t,e){return u[e](t)}).join(i);return t?t(n):n}]}function f(t,e,i){for(var n=[],r=[],o=[],a=0,s=0;s<i.length;s++)if("function"==typeof i[s]){var u=i[s](t[a],e[a++]);n.push(u[0]),r.push(u[1]),o.push(u[2])}else!function(t){n.push(!1),r.push(!1),o.push(function(){return i[t]})}(s);return[n,r,function(t){for(var e="",i=0;i<t.length;i++)e+=o[i](t[i]);return e}]}t.consumeToken=e,t.consumeTrimmed=i,t.consumeRepeated=n,t.consumeParenthesised=r,t.ignore=a,t.optional=s,t.consumeList=u,t.mergeNestedRepeated=c.bind(null,null),t.mergeWrappedNestedRepeated=c,t.mergeList=f}(d),function(t){function e(e){function i(e){var i=t.consumeToken(/^inset/i,e);if(i)return n.inset=!0,i;var i=t.consumeLengthOrPercent(e);if(i)return n.lengths.push(i[0]),i;var i=t.consumeColor(e);return i?(n.color=i[0],i):void 0}var n={inset:!1,lengths:[],color:null},r=t.consumeRepeated(i,/^/,e);if(r&&r[0].length)return[n,r[1]]}function i(i){var n=t.consumeRepeated(e,/^,/,i);if(n&&""==n[1])return n[0]}function n(e,i){for(;e.lengths.length<Math.max(e.lengths.length,i.lengths.length);)e.lengths.push({px:0});for(;i.lengths.length<Math.max(e.lengths.length,i.lengths.length);)i.lengths.push({px:0});if(e.inset==i.inset&&!!e.color==!!i.color){for(var n,r=[],o=[[],0],a=[[],0],s=0;s<e.lengths.length;s++){var u=t.mergeDimensions(e.lengths[s],i.lengths[s],2==s);o[0].push(u[0]),a[0].push(u[1]),r.push(u[2])}if(e.color&&i.color){var c=t.mergeColors(e.color,i.color);o[1]=c[0],a[1]=c[1],n=c[2]}return[o,a,function(t){for(var i=e.inset?"inset ":" ",o=0;o<r.length;o++)i+=r[o](t[0][o])+" ";return n&&(i+=n(t[1])),i}]}}function r(e,i,n,r){function o(t){return{inset:t,color:[0,0,0,0],lengths:[{px:0},{px:0},{px:0},{px:0}]}}for(var a=[],s=[],u=0;u<n.length||u<r.length;u++){var c=n[u]||o(r[u].inset),f=r[u]||o(n[u].inset);a.push(c),s.push(f)}return t.mergeNestedRepeated(e,i,a,s)}var o=r.bind(null,n,", ");t.addPropertiesHandler(i,o,["box-shadow","text-shadow"])}(d),function(t,e){function i(t){return t.toFixed(3).replace(".000","")}function n(t,e,i){return Math.min(e,Math.max(t,i))}function r(t){if(/^\s*[-+]?(\d*\.)?\d+\s*$/.test(t))return Number(t)}function o(t,e){return[t,e,i]}function a(t,e){if(0!=t)return u(0,1/0)(t,e)}function s(t,e){return[t,e,function(t){return Math.round(n(1,1/0,t))}]}function u(t,e){return function(r,o){return[r,o,function(r){return i(n(t,e,r))}]}}function c(t,e){return[t,e,Math.round]}t.clamp=n,t.addPropertiesHandler(r,u(0,1/0),["border-image-width","line-height"]),t.addPropertiesHandler(r,u(0,1),["opacity","shape-image-threshold"]),t.addPropertiesHandler(r,a,["flex-grow","flex-shrink"]),t.addPropertiesHandler(r,s,["orphans","widows"]),t.addPropertiesHandler(r,c,["z-index"]),t.parseNumber=r,t.mergeNumbers=o,t.numberToString=i}(d,f),function(t,e){function i(t,e){if("visible"==t||"visible"==e)return[0,1,function(i){return i<=0?t:i>=1?e:"visible"}]}t.addPropertiesHandler(String,i,["visibility"])}(d),function(t,e){function i(t){t=t.trim(),o.fillStyle="#000",o.fillStyle=t;var e=o.fillStyle;if(o.fillStyle="#fff",o.fillStyle=t,e==o.fillStyle){o.fillRect(0,0,1,1);var i=o.getImageData(0,0,1,1).data;o.clearRect(0,0,1,1);var n=i[3]/255;return[i[0]*n,i[1]*n,i[2]*n,n]}}function n(e,i){return[e,i,function(e){function i(t){return Math.max(0,Math.min(255,t))}if(e[3])for(var n=0;n<3;n++)e[n]=Math.round(i(e[n]/e[3]));return e[3]=t.numberToString(t.clamp(0,1,e[3])),"rgba("+e.join(",")+")"}]}var r=document.createElementNS("http://www.w3.org/1999/xhtml","canvas");r.width=r.height=1;var o=r.getContext("2d");t.addPropertiesHandler(i,n,["background-color","border-bottom-color","border-left-color","border-right-color","border-top-color","color","outline-color","text-decoration-color"]),t.consumeColor=t.consumeParenthesised.bind(null,i),t.mergeColors=n}(d,f),function(a,b){function c(a,b){if(b=b.trim().toLowerCase(),"0"==b&&"px".search(a)>=0)return{px:0};if(/^[^(]*$|^calc/.test(b)){b=b.replace(/calc\(/g,"(");var c={};b=b.replace(a,function(t){return c[t]=null,"U"+t});for(var d="U("+a.source+")",e=b.replace(/[-+]?(\d*\.)?\d+/g,"N").replace(new RegExp("N"+d,"g"),"D").replace(/\s[+-]\s/g,"O").replace(/\s/g,""),f=[/N\*(D)/g,/(N|D)[*\/]N/g,/(N|D)O\1/g,/\((N|D)\)/g],g=0;g<f.length;)f[g].test(e)?(e=e.replace(f[g],"$1"),g=0):g++;if("D"==e){for(var h in c){var i=eval(b.replace(new RegExp("U"+h,"g"),"").replace(new RegExp(d,"g"),"*0"));if(!isFinite(i))return;c[h]=i}return c}}}function d(t,i){return e(t,i,!0)}function e(t,e,i){var n,r=[];for(n in t)r.push(n);for(n in e)r.indexOf(n)<0&&r.push(n);return t=r.map(function(e){return t[e]||0}),e=r.map(function(t){return e[t]||0}),[t,e,function(t){var e=t.map(function(e,n){return 1==t.length&&i&&(e=Math.max(e,0)),a.numberToString(e)+r[n]}).join(" + ");return t.length>1?"calc("+e+")":e}]}var f="px|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc",g=c.bind(null,new RegExp(f,"g")),h=c.bind(null,new RegExp(f+"|%","g")),i=c.bind(null,/deg|rad|grad|turn/g);a.parseLength=g,a.parseLengthOrPercent=h,a.consumeLengthOrPercent=a.consumeParenthesised.bind(null,h),a.parseAngle=i,a.mergeDimensions=e;var j=a.consumeParenthesised.bind(null,g),k=a.consumeRepeated.bind(void 0,j,/^/),l=a.consumeRepeated.bind(void 0,k,/^,/);a.consumeSizePairList=l;var m=function(t){var e=l(t);if(e&&""==e[1])return e[0]},n=a.mergeNestedRepeated.bind(void 0,d," "),o=a.mergeNestedRepeated.bind(void 0,n,",");a.mergeNonNegativeSizePair=n,a.addPropertiesHandler(m,o,["background-size"]),a.addPropertiesHandler(h,d,["border-bottom-width","border-image-width","border-left-width","border-right-width","border-top-width","flex-basis","font-size","height","line-height","max-height","max-width","outline-width","width"]),a.addPropertiesHandler(h,e,["border-bottom-left-radius","border-bottom-right-radius","border-top-left-radius","border-top-right-radius","bottom","left","letter-spacing","margin-bottom","margin-left","margin-right","margin-top","min-height","min-width","outline-offset","padding-bottom","padding-left","padding-right","padding-top","perspective","right","shape-margin","text-indent","top","vertical-align","word-spacing"])}(d,f),function(t,e){function i(e){return t.consumeLengthOrPercent(e)||t.consumeToken(/^auto/,e)}function n(e){var n=t.consumeList([t.ignore(t.consumeToken.bind(null,/^rect/)),t.ignore(t.consumeToken.bind(null,/^\(/)),t.consumeRepeated.bind(null,i,/^,/),t.ignore(t.consumeToken.bind(null,/^\)/))],e);if(n&&4==n[0].length)return n[0]}function r(e,i){return"auto"==e||"auto"==i?[!0,!1,function(n){var r=n?e:i;if("auto"==r)return"auto";var o=t.mergeDimensions(r,r);return o[2](o[0])}]:t.mergeDimensions(e,i)}function o(t){return"rect("+t+")"}var a=t.mergeWrappedNestedRepeated.bind(null,o,r,", ");t.parseBox=n,t.mergeBoxes=a,t.addPropertiesHandler(n,a,["clip"])}(d,f),function(t,e){function i(t){return function(e){var i=0;return t.map(function(t){return t===f?e[i++]:t})}}function n(t){return t}function r(e){if(e=e.toLowerCase().trim(),"none"==e)return[];for(var i,n=/\s*(\w+)\(([^)]*)\)/g,r=[],o=0;i=n.exec(e);){if(i.index!=o)return;o=i.index+i[0].length;var a=i[1],s=m[a];if(!s)return;var u=i[2].split(","),c=s[0];if(c.length<u.length)return;for(var f=[],d=0;d<c.length;d++){var p,_=u[d],g=c[d];if(p=_?{A:function(e){return"0"==e.trim()?h:t.parseAngle(e)},N:t.parseNumber,T:t.parseLengthOrPercent,L:t.parseLength}[g.toUpperCase()](_):{a:h,n:f[0],t:l}[g],void 0===p)return;f.push(p)}if(r.push({t:a,d:f}),n.lastIndex==e.length)return r}}function o(t){return t.toFixed(6).replace(".000000","")}function a(e,i){if(e.decompositionPair!==i){e.decompositionPair=i;var n=t.makeMatrixDecomposition(e)}if(i.decompositionPair!==e){i.decompositionPair=e;var r=t.makeMatrixDecomposition(i)}return null==n[0]||null==r[0]?[[!1],[!0],function(t){return t?i[0].d:e[0].d}]:(n[0].push(0),r[0].push(1),[n,r,function(e){var i=t.quat(n[0][3],r[0][3],e[5]),a=t.composeMatrix(e[0],e[1],e[2],i,e[4]),s=a.map(o).join(",");return s}])}function s(t){return t.replace(/[xy]/,"")}function u(t){return t.replace(/(x|y|z|3d)?$/,"3d")}function c(e,i){var n=t.makeMatrixDecomposition&&!0,r=!1;if(!e.length||!i.length){e.length||(r=!0,e=i,i=[]);for(var o=0;o<e.length;o++){var c=e[o].t,f=e[o].d,l="scale"==c.substr(0,5)?1:0;i.push({t:c,d:f.map(function(t){if("number"==typeof t)return l;var e={};for(var i in t)e[i]=l;return e})})}}var h=function(t,e){return"perspective"==t&&"perspective"==e||("matrix"==t||"matrix3d"==t)&&("matrix"==e||"matrix3d"==e)},d=[],p=[],_=[];if(e.length!=i.length){if(!n)return;var g=a(e,i);d=[g[0]],p=[g[1]],_=[["matrix",[g[2]]]]}else for(var o=0;o<e.length;o++){var c,b=e[o].t,v=i[o].t,y=e[o].d,w=i[o].d,T=m[b],E=m[v];if(h(b,v)){if(!n)return;var g=a([e[o]],[i[o]]);d.push(g[0]),p.push(g[1]),_.push(["matrix",[g[2]]])}else{if(b==v)c=b;else if(T[2]&&E[2]&&s(b)==s(v))c=s(b),y=T[2](y),w=E[2](w);else{if(!T[1]||!E[1]||u(b)!=u(v)){if(!n)return;var g=a(e,i);d=[g[0]],p=[g[1]],_=[["matrix",[g[2]]]];break}c=u(b),y=T[1](y),w=E[1](w)}for(var x=[],A=[],P=[],j=0;j<y.length;j++){var R="number"==typeof y[j]?t.mergeNumbers:t.mergeDimensions,g=R(y[j],w[j]);x[j]=g[0],A[j]=g[1],P.push(g[2])}d.push(x),p.push(A),_.push([c,P])}}if(r){var N=d;d=p,p=N}return[d,p,function(t){return t.map(function(t,e){var i=t.map(function(t,i){return _[e][1][i](t)}).join(",");return"matrix"==_[e][0]&&16==i.split(",").length&&(_[e][0]="matrix3d"),_[e][0]+"("+i+")"}).join(" ")}]}var f=null,l={px:0},h={deg:0},m={matrix:["NNNNNN",[f,f,0,0,f,f,0,0,0,0,1,0,f,f,0,1],n],matrix3d:["NNNNNNNNNNNNNNNN",n],rotate:["A"],rotatex:["A"],rotatey:["A"],rotatez:["A"],rotate3d:["NNNA"],perspective:["L"],scale:["Nn",i([f,f,1]),n],scalex:["N",i([f,1,1]),i([f,1])],scaley:["N",i([1,f,1]),i([1,f])],scalez:["N",i([1,1,f])],scale3d:["NNN",n],skew:["Aa",null,n],skewx:["A",null,i([f,h])],skewy:["A",null,i([h,f])],translate:["Tt",i([f,f,l]),n],translatex:["T",i([f,l,l]),i([f,l])],translatey:["T",i([l,f,l]),i([l,f])],translatez:["L",i([l,l,f])],translate3d:["TTL",n]};t.addPropertiesHandler(r,c,["transform"])}(d,f),function(t,e){function i(t,e){e.concat([t]).forEach(function(e){e in document.documentElement.style&&(n[t]=e)})}var n={};i("transform",["webkitTransform","msTransform"]),i("transformOrigin",["webkitTransformOrigin"]),i("perspective",["webkitPerspective"]),i("perspectiveOrigin",["webkitPerspectiveOrigin"]),t.propertyName=function(t){return n[t]||t}}(d,f)}(),!function(){if(void 0===document.createElement("div").animate([]).oncancel){var t;if(window.performance&&performance.now)var t=function(){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){}}(c,e,f),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<this.effect.children.length;e++)this.effect.children[e]._animation=t,this._childAnimations[e]._setExternalAnimation(t)},_constructChildAnimations:function(){if(this.effect&&this._isGroup){var t=this.effect._timing.delay;this._removeChildAnimations(),this.effect.children.forEach(function(i){var n=e.timeline._play(i);this._childAnimations.push(n),n.playbackRate=this.playbackRate,this._paused&&n.pause(),i._animation=this.effect._animation,this._arrangeChildren(n,t),this.effect instanceof window.SequenceEffect&&(t+=e.groupChildDuration(i))}.bind(this))}},_arrangeChildren:function(t,e){null===this.startTime?t.currentTime=this.currentTime-e/this.playbackRate:t.startTime!==this.startTime+e/this.playbackRate&&(t.startTime=this.startTime+e/this.playbackRate)},get timeline(){return this._timeline},get playState(){return this._animation?this._animation.playState:"idle"},get finished(){return window.Promise?(this._finishedPromise||(e.animationsWithPromises.indexOf(this)==-1&&e.animationsWithPromises.push(this),this._finishedPromise=new Promise(function(t,e){this._resolveFinishedPromise=function(){t(this)},this._rejectFinishedPromise=function(){e({type:DOMException.ABORT_ERR,name:"AbortError"})}}.bind(this)),"finished"==this.playState&&this._resolveFinishedPromise()),this._finishedPromise):(console.warn("Animation Promises require JavaScript Promise constructor"),null)},get ready(){return window.Promise?(this._readyPromise||(e.animationsWithPromises.indexOf(this)==-1&&e.animationsWithPromises.push(this),this._readyPromise=new Promise(function(t,e){this._resolveReadyPromise=function(){t(this)},this._rejectReadyPromise=function(){e({type:DOMException.ABORT_ERR,name:"AbortError"})}}.bind(this)),"pending"!==this.playState&&this._resolveReadyPromise()),this._readyPromise):(console.warn("Animation Promises require JavaScript Promise constructor"),null)},get onfinish(){return this._animation.onfinish},set onfinish(t){"function"==typeof t?this._animation.onfinish=function(e){e.target=this,t.call(this,e)}.bind(this):this._animation.onfinish=t},get oncancel(){return this._animation.oncancel},set oncancel(t){"function"==typeof t?this._animation.oncancel=function(e){e.target=this,t.call(this,e)}.bind(this):this._animation.oncancel=t},get currentTime(){this._updatePromises();var t=this._animation.currentTime;return this._updatePromises(),t},set currentTime(t){this._updatePromises(),this._animation.currentTime=isFinite(t)?t:Math.sign(t)*Number.MAX_VALUE,this._register(),this._forEachChild(function(e,i){e.currentTime=t-i}),this._updatePromises()},get startTime(){return this._animation.startTime},set startTime(t){this._updatePromises(),this._animation.startTime=isFinite(t)?t:Math.sign(t)*Number.MAX_VALUE,this._register(),this._forEachChild(function(e,i){e.startTime=t+i}),this._updatePromises()},get playbackRate(){return this._animation.playbackRate},set playbackRate(t){this._updatePromises();var e=this.currentTime;this._animation.playbackRate=t,this._forEachChild(function(e){e.playbackRate=t}),null!==e&&(this.currentTime=e),this._updatePromises()},play:function(){this._updatePromises(),this._paused=!1,this._animation.play(),this._timeline._animations.indexOf(this)==-1&&this._timeline._animations.push(this),this._register(),e.awaitStartTime(this),this._forEachChild(function(t){var e=t.currentTime;t.play(),t.currentTime=e}),this._updatePromises()},pause:function(){this._updatePromises(),this.currentTime&&(this._holdTime=this.currentTime),this._animation.pause(),this._register(),this._forEachChild(function(t){t.pause()}),this._paused=!0,this._updatePromises()},finish:function(){this._updatePromises(),this._animation.finish(),this._register(),this._updatePromises()},cancel:function(){this._updatePromises(),this._animation.cancel(),this._register(),this._removeChildAnimations(),this._updatePromises()},reverse:function(){this._updatePromises();var t=this.currentTime;this._animation.reverse(),this._forEachChild(function(t){t.reverse()}),null!==t&&(this.currentTime=t),this._updatePromises()},addEventListener:function(t,e){var i=e;"function"==typeof e&&(i=function(t){t.target=this,e.call(this,t)}.bind(this),e._wrapper=i),this._animation.addEventListener(t,i)},removeEventListener:function(t,e){this._animation.removeEventListener(t,e&&e._wrapper||e)},_removeChildAnimations:function(){for(;this._childAnimations.length;)this._childAnimations.pop().cancel()},_forEachChild:function(e){var i=0;if(this.effect.children&&this._childAnimations.length<this.effect.children.length&&this._constructChildAnimations(),this._childAnimations.forEach(function(t){e.call(this,t,i),this.effect instanceof window.SequenceEffect&&(i+=t.effect.activeDuration)}.bind(this)),"pending"!=this.playState){var n=this.effect._timing,r=this.currentTime;null!==r&&(r=t.calculateIterationProgress(t.calculateActiveDuration(n),r,n)),(null==r||isNaN(r))&&this._removeChildAnimations()}}},window.Animation=e.Animation}(c,e,f),function(t,e,i){function n(e){this._frames=t.normalizeKeyframes(e)}function r(){for(var t=!1;u.length;){var e=u.shift();e._updateChildren(),t=!0}return t}var o=function(t){if(t._animation=void 0,t instanceof window.SequenceEffect||t instanceof window.GroupEffect)for(var e=0;e<t.children.length;e++)o(t.children[e])};e.removeMulti=function(t){for(var e=[],i=0;i<t.length;i++){var n=t[i];n._parent?(e.indexOf(n._parent)==-1&&e.push(n._parent),n._parent.children.splice(n._parent.children.indexOf(n),1),n._parent=null,o(n)):n._animation&&n._animation.effect==n&&(n._animation.cancel(),n._animation.effect=new KeyframeEffect(null,[]),n._animation._callback&&(n._animation._callback._animation=null),n._animation._rebuildUnderlyingAnimation(),o(n))}for(i=0;i<e.length;i++)e[i]._rebuild()},e.KeyframeEffect=function(e,i,r,o){return this.target=e,this._parent=null,r=t.numericTimingToObject(r),this._timingInput=t.cloneTimingInput(r),this._timing=t.normalizeTimingInput(r),this.timing=t.makeTiming(r,!1,this),this.timing._effect=this,"function"==typeof i?(t.deprecated("Custom KeyframeEffect","2015-06-22","Use KeyframeEffect.onsample instead."),this._normalizedKeyframes=i):this._normalizedKeyframes=new n(i),this._keyframes=i,this.activeDuration=t.calculateActiveDuration(this._timing),this._id=o,this},e.KeyframeEffect.prototype={getFrames:function(){return"function"==typeof this._normalizedKeyframes?this._normalizedKeyframes:this._normalizedKeyframes._frames},set onsample(t){if("function"==typeof this.getFrames())throw new Error("Setting onsample on custom effect KeyframeEffect is not supported.");this._onsample=t,this._animation&&this._animation._rebuildUnderlyingAnimation()},get parent(){return this._parent},clone:function(){if("function"==typeof this.getFrames())throw new Error("Cloning custom effects is not supported.");var e=new KeyframeEffect(this.target,[],t.cloneTimingInput(this._timingInput),this._id);return e._normalizedKeyframes=this._normalizedKeyframes,e._keyframes=this._keyframes,e},remove:function(){e.removeMulti([this])}};var a=Element.prototype.animate;Element.prototype.animate=function(t,i){var n="";return i&&i.id&&(n=i.id),e.timeline._play(new e.KeyframeEffect(this,t,i,n))};var s=document.createElementNS("http://www.w3.org/1999/xhtml","div");e.newUnderlyingAnimationForKeyframeEffect=function(t){if(t){var e=t.target||s,i=t._keyframes;"function"==typeof i&&(i=[]);var n=t._timingInput;n.id=t._id}else var e=s,i=[],n=0;return a.apply(e,[i,n])},e.bindAnimationForKeyframeEffect=function(t){t.effect&&"function"==typeof t.effect._normalizedKeyframes&&e.bindAnimationForCustomEffect(t)};var u=[];e.awaitStartTime=function(t){null===t.startTime&&t._isGroup&&(0==u.length&&requestAnimationFrame(r),u.push(t))};var c=window.getComputedStyle;Object.defineProperty(window,"getComputedStyle",{configurable:!0,enumerable:!0,value:function(){e.timeline._updateAnimationsPromises();var t=c.apply(this,arguments);return r()&&(t=c.apply(this,arguments)),e.timeline._updateAnimationsPromises(),t}}),window.KeyframeEffect=e.KeyframeEffect,window.Element.prototype.getAnimations=function(){return document.timeline.getAnimations().filter(function(t){return null!==t.effect&&t.effect.target==this}.bind(this))}}(c,e,f),function(t,e,i){function n(t){t._registered||(t._registered=!0,a.push(t),s||(s=!0,requestAnimationFrame(r)))}function r(t){var e=a;a=[],e.sort(function(t,e){return t._sequenceNumber-e._sequenceNumber}),e=e.filter(function(t){t();var e=t._animation?t._animation.playState:"idle";return"running"!=e&&"pending"!=e&&(t._registered=!1),t._registered}),a.push.apply(a,e),a.length?(s=!0,requestAnimationFrame(r)):s=!1}var o=(document.createElementNS("http://www.w3.org/1999/xhtml","div"),0);e.bindAnimationForCustomEffect=function(e){var i,r=e.effect.target,a="function"==typeof e.effect.getFrames();i=a?e.effect.getFrames():e.effect._onsample;var s=e.effect.timing,u=null;s=t.normalizeTimingInput(s);var c=function(){var n=c._animation?c._animation.currentTime:null;null!==n&&(n=t.calculateIterationProgress(t.calculateActiveDuration(s),n,s),isNaN(n)&&(n=null)),n!==u&&(a?i(n,r,e.effect):i(n,e.effect,e.effect._animation)),u=n};c._animation=e,c._registered=!1,c._sequenceNumber=o++,e._callback=c,n(c)};var a=[],s=!1;e.Animation.prototype._register=function(){this._callback&&n(this._callback)}}(c,e,f),function(t,e,i){function n(t){return t._timing.delay+t.activeDuration+t._timing.endDelay}function r(e,i,n){this._id=n,this._parent=null,this.children=e||[],this._reparent(this.children),i=t.numericTimingToObject(i),this._timingInput=t.cloneTimingInput(i),this._timing=t.normalizeTimingInput(i,!0),this.timing=t.makeTiming(i,!0,this),this.timing._effect=this,"auto"===this._timing.duration&&(this._timing.duration=this.activeDuration)}window.SequenceEffect=function(){r.apply(this,arguments)},window.GroupEffect=function(){r.apply(this,arguments)},r.prototype={_isAncestor:function(t){for(var e=this;null!==e;){if(e==t)return!0;e=e._parent}return!1},_rebuild:function(){for(var t=this;t;)"auto"===t.timing.duration&&(t._timing.duration=t.activeDuration),t=t._parent;this._animation&&this._animation._rebuildUnderlyingAnimation()},_reparent:function(t){e.removeMulti(t);for(var i=0;i<t.length;i++)t[i]._parent=this},_putChild:function(t,e){for(var i=e?"Cannot append an ancestor or self":"Cannot prepend an ancestor or self",n=0;n<t.length;n++)if(this._isAncestor(t[n]))throw{type:DOMException.HIERARCHY_REQUEST_ERR,name:"HierarchyRequestError",message:i};for(var n=0;n<t.length;n++)e?this.children.push(t[n]):this.children.unshift(t[n]);this._reparent(t),this._rebuild()},append:function(){this._putChild(arguments,!0)},prepend:function(){this._putChild(arguments,!1)},get parent(){return this._parent},get firstChild(){return this.children.length?this.children[0]:null},get lastChild(){return this.children.length?this.children[this.children.length-1]:null},clone:function(){for(var e=t.cloneTimingInput(this._timingInput),i=[],n=0;n<this.children.length;n++)i.push(this.children[n].clone());return this instanceof GroupEffect?new GroupEffect(i,e):new SequenceEffect(i,e)},remove:function(){e.removeMulti([this])}},window.SequenceEffect.prototype=Object.create(r.prototype),Object.defineProperty(window.SequenceEffect.prototype,"activeDuration",{get:function(){var t=0;return this.children.forEach(function(e){t+=n(e)}),Math.max(t,0)}}),window.GroupEffect.prototype=Object.create(r.prototype),Object.defineProperty(window.GroupEffect.prototype,"activeDuration",{get:function(){var t=0;return this.children.forEach(function(e){t=Math.max(t,n(e))}),t}}),e.newUnderlyingAnimationForGroup=function(i){var n,r=null,o=function(e){var i=n._wrapper;if(i&&"pending"!=i.playState&&i.effect)return null==e?void i._removeChildAnimations():0==e&&i.playbackRate<0&&(r||(r=t.normalizeTimingInput(i.effect.timing)),e=t.calculateIterationProgress(t.calculateActiveDuration(r),-1,r),isNaN(e)||null==e)?(i._forEachChild(function(t){t.currentTime=-1}),void i._removeChildAnimations()):void 0},a=new KeyframeEffect(null,[],i._timing,i._id);return a.onsample=o,n=e.timeline._play(a)},e.bindAnimationForGroup=function(t){t._animation._wrapper=t,t._isGroup=!0,e.awaitStartTime(t),t._constructChildAnimations(),t._setExternalAnimation(t)},e.groupChildDuration=n}(c,e,f),b.true=a}({},function(){return this}())</script><script>Polymer({is:"opaque-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(e){var i=e.node;return this._effect=new KeyframeEffect(i,[{opacity:"1"},{opacity:"1"}],this.timingFromConfig(e)),i.style.opacity="0",this._effect},complete:function(e){e.node.style.opacity=""}})</script><script>!function(){"use strict";var e={pageX:0,pageY:0},t=null,l=[];Polymer.IronDropdownScrollManager={get currentLockingElement(){return this._lockingElements[this._lockingElements.length-1]},elementIsScrollLocked:function(e){var t=this.currentLockingElement;if(void 0===t)return!1;var l;return!!this._hasCachedLockedElement(e)||!this._hasCachedUnlockedElement(e)&&(l=!!t&&t!==e&&!this._composedTreeContains(t,e),l?this._lockedElementCache.push(e):this._unlockedElementCache.push(e),l)},pushScrollLock:function(e){this._lockingElements.indexOf(e)>=0||(0===this._lockingElements.length&&this._lockScrollInteractions(),this._lockingElements.push(e),this._lockedElementCache=[],this._unlockedElementCache=[])},removeScrollLock:function(e){var t=this._lockingElements.indexOf(e);t!==-1&&(this._lockingElements.splice(t,1),this._lockedElementCache=[],this._unlockedElementCache=[],0===this._lockingElements.length&&this._unlockScrollInteractions())},_lockingElements:[],_lockedElementCache:null,_unlockedElementCache:null,_hasCachedLockedElement:function(e){return this._lockedElementCache.indexOf(e)>-1},_hasCachedUnlockedElement:function(e){return this._unlockedElementCache.indexOf(e)>-1},_composedTreeContains:function(e,t){var l,n,o,r;if(e.contains(t))return!0;for(l=Polymer.dom(e).querySelectorAll("content"),o=0;o<l.length;++o)for(n=Polymer.dom(l[o]).getDistributedNodes(),r=0;r<n.length;++r)if(this._composedTreeContains(n[r],t))return!0;return!1},_scrollInteractionHandler:function(t){if(t.cancelable&&this._shouldPreventScrolling(t)&&t.preventDefault(),t.targetTouches){var l=t.targetTouches[0];e.pageX=l.pageX,e.pageY=l.pageY}},_lockScrollInteractions:function(){this._boundScrollHandler=this._boundScrollHandler||this._scrollInteractionHandler.bind(this),document.addEventListener("wheel",this._boundScrollHandler,!0),document.addEventListener("mousewheel",this._boundScrollHandler,!0),document.addEventListener("DOMMouseScroll",this._boundScrollHandler,!0),document.addEventListener("touchstart",this._boundScrollHandler,!0),document.addEventListener("touchmove",this._boundScrollHandler,!0)},_unlockScrollInteractions:function(){document.removeEventListener("wheel",this._boundScrollHandler,!0),document.removeEventListener("mousewheel",this._boundScrollHandler,!0),document.removeEventListener("DOMMouseScroll",this._boundScrollHandler,!0),document.removeEventListener("touchstart",this._boundScrollHandler,!0),document.removeEventListener("touchmove",this._boundScrollHandler,!0)},_shouldPreventScrolling:function(e){var n=Polymer.dom(e).rootTarget;if("touchmove"!==e.type&&t!==n&&(t=n,l=this._getScrollableNodes(Polymer.dom(e).path)),!l.length)return!0;if("touchstart"===e.type)return!1;var o=this._getScrollInfo(e);return!this._getScrollingNode(l,o.deltaX,o.deltaY)},_getScrollableNodes:function(e){for(var t=[],l=e.indexOf(this.currentLockingElement),n=0;n<=l;n++)if(e[n].nodeType===Node.ELEMENT_NODE){var o=e[n],r=o.style;"scroll"!==r.overflow&&"auto"!==r.overflow&&(r=window.getComputedStyle(o)),"scroll"!==r.overflow&&"auto"!==r.overflow||t.push(o)}return t},_getScrollingNode:function(e,t,l){if(t||l)for(var n=Math.abs(l)>=Math.abs(t),o=0;o<e.length;o++){var r=e[o],c=!1;if(c=n?l<0?r.scrollTop>0:r.scrollTop<r.scrollHeight-r.clientHeight:t<0?r.scrollLeft>0:r.scrollLeft<r.scrollWidth-r.clientWidth)return r}},_getScrollInfo:function(t){var l={deltaX:t.deltaX,deltaY:t.deltaY};if("deltaX"in t);else if("wheelDeltaX"in t)l.deltaX=-t.wheelDeltaX,l.deltaY=-t.wheelDeltaY;else if("axis"in t)l.deltaX=1===t.axis?t.detail:0,l.deltaY=2===t.axis?t.detail:0;else if(t.targetTouches){var n=t.targetTouches[0];l.deltaX=e.pageX-n.pageX,l.deltaY=e.pageY-n.pageY}return l}}}()</script><dom-module id="iron-dropdown" assetpath="../bower_components/iron-dropdown/"><template><style>:host{position:fixed}#contentWrapper ::content>*{overflow:auto}#contentWrapper.animating ::content>*{overflow:hidden}</style><div id="contentWrapper"><content id="content" select=".dropdown-content"></content></div></template><script>!function(){"use strict";Polymer({is:"iron-dropdown",behaviors:[Polymer.IronControlState,Polymer.IronA11yKeysBehavior,Polymer.IronOverlayBehavior,Polymer.NeonAnimationRunnerBehavior],properties:{horizontalAlign:{type:String,value:"left",reflectToAttribute:!0},verticalAlign:{type:String,value:"top",reflectToAttribute:!0},openAnimationConfig:{type:Object},closeAnimationConfig:{type:Object},focusTarget:{type:Object},noAnimations:{type:Boolean,value:!1},allowOutsideScroll:{type:Boolean,value:!1},_boundOnCaptureScroll:{type:Function,value:function(){return this._onCaptureScroll.bind(this)}}},listeners:{"neon-animation-finish":"_onNeonAnimationFinish"},observers:["_updateOverlayPosition(positionTarget, verticalAlign, horizontalAlign, verticalOffset, horizontalOffset)"],get containedElement(){return Polymer.dom(this.$.content).getDistributedNodes()[0]},get _focusTarget(){return this.focusTarget||this.containedElement},ready:function(){this._scrollTop=0,this._scrollLeft=0,this._refitOnScrollRAF=null},attached:function(){this.sizingTarget&&this.sizingTarget!==this||(this.sizingTarget=this.containedElement||this)},detached:function(){this.cancelAnimation(),document.removeEventListener("scroll",this._boundOnCaptureScroll),Polymer.IronDropdownScrollManager.removeScrollLock(this)},_openedChanged:function(){this.opened&&this.disabled?this.cancel():(this.cancelAnimation(),this._updateAnimationConfig(),this._saveScrollPosition(),this.opened?(document.addEventListener("scroll",this._boundOnCaptureScroll),!this.allowOutsideScroll&&Polymer.IronDropdownScrollManager.pushScrollLock(this)):(document.removeEventListener("scroll",this._boundOnCaptureScroll),Polymer.IronDropdownScrollManager.removeScrollLock(this)),Polymer.IronOverlayBehaviorImpl._openedChanged.apply(this,arguments))},_renderOpened:function(){!this.noAnimations&&this.animationConfig.open?(this.$.contentWrapper.classList.add("animating"),this.playAnimation("open")):Polymer.IronOverlayBehaviorImpl._renderOpened.apply(this,arguments)},_renderClosed:function(){!this.noAnimations&&this.animationConfig.close?(this.$.contentWrapper.classList.add("animating"),this.playAnimation("close")):Polymer.IronOverlayBehaviorImpl._renderClosed.apply(this,arguments)},_onNeonAnimationFinish:function(){this.$.contentWrapper.classList.remove("animating"),this.opened?this._finishRenderOpened():this._finishRenderClosed()},_onCaptureScroll:function(){this.allowOutsideScroll?(this._refitOnScrollRAF&&window.cancelAnimationFrame(this._refitOnScrollRAF),this._refitOnScrollRAF=window.requestAnimationFrame(this.refit.bind(this))):this._restoreScrollPosition()},_saveScrollPosition:function(){document.scrollingElement?(this._scrollTop=document.scrollingElement.scrollTop,this._scrollLeft=document.scrollingElement.scrollLeft):(this._scrollTop=Math.max(document.documentElement.scrollTop,document.body.scrollTop),this._scrollLeft=Math.max(document.documentElement.scrollLeft,document.body.scrollLeft))},_restoreScrollPosition:function(){document.scrollingElement?(document.scrollingElement.scrollTop=this._scrollTop,document.scrollingElement.scrollLeft=this._scrollLeft):(document.documentElement.scrollTop=this._scrollTop,document.documentElement.scrollLeft=this._scrollLeft,document.body.scrollTop=this._scrollTop,document.body.scrollLeft=this._scrollLeft)},_updateAnimationConfig:function(){for(var o=this.containedElement,t=[].concat(this.openAnimationConfig||[]).concat(this.closeAnimationConfig||[]),n=0;n<t.length;n++)t[n].node=o;this.animationConfig={open:this.openAnimationConfig,close:this.closeAnimationConfig}},_updateOverlayPosition:function(){this.isAttached&&this.notifyResize()},_applyFocus:function(){var o=this.focusTarget||this.containedElement;o&&this.opened&&!this.noAutoFocus?o.focus():Polymer.IronOverlayBehaviorImpl._applyFocus.apply(this,arguments)}})}()</script></dom-module><script>Polymer({is:"fade-in-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(i){var e=i.node;return this._effect=new KeyframeEffect(e,[{opacity:"0"},{opacity:"1"}],this.timingFromConfig(i)),this._effect}})</script><script>Polymer({is:"fade-out-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(e){var i=e.node;return this._effect=new KeyframeEffect(i,[{opacity:"1"},{opacity:"0"}],this.timingFromConfig(e)),this._effect}})</script><script>Polymer({is:"paper-menu-grow-height-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(e){var i=e.node,t=i.getBoundingClientRect(),n=t.height;return this._effect=new KeyframeEffect(i,[{height:n/2+"px"},{height:n+"px"}],this.timingFromConfig(e)),this._effect}}),Polymer({is:"paper-menu-grow-width-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(e){var i=e.node,t=i.getBoundingClientRect(),n=t.width;return this._effect=new KeyframeEffect(i,[{width:n/2+"px"},{width:n+"px"}],this.timingFromConfig(e)),this._effect}}),Polymer({is:"paper-menu-shrink-width-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(e){var i=e.node,t=i.getBoundingClientRect(),n=t.width;return this._effect=new KeyframeEffect(i,[{width:n+"px"},{width:n-n/20+"px"}],this.timingFromConfig(e)),this._effect}}),Polymer({is:"paper-menu-shrink-height-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(e){var i=e.node,t=i.getBoundingClientRect(),n=t.height;t.top;return this.setPrefixedProperty(i,"transformOrigin","0 0"),this._effect=new KeyframeEffect(i,[{height:n+"px",transform:"translateY(0)"},{height:n/2+"px",transform:"translateY(-20px)"}],this.timingFromConfig(e)),this._effect}})</script><dom-module id="paper-menu-button" assetpath="../bower_components/paper-menu-button/"><template><style>:host{display:inline-block;position:relative;padding:8px;outline:0;@apply(--paper-menu-button)}:host([disabled]){cursor:auto;color:var(--disabled-text-color);@apply(--paper-menu-button-disabled)}iron-dropdown{@apply(--paper-menu-button-dropdown)}.dropdown-content{@apply(--shadow-elevation-2dp);position:relative;border-radius:2px;background-color:var(--paper-menu-button-dropdown-background,--primary-background-color);@apply(--paper-menu-button-content)}:host([vertical-align=top]) .dropdown-content{margin-bottom:20px;margin-top:-10px;top:10px}:host([vertical-align=bottom]) .dropdown-content{bottom:10px;margin-bottom:-10px;margin-top:20px}#trigger{cursor:pointer}</style><div id="trigger" on-tap="toggle"><content select=".dropdown-trigger"></content></div><iron-dropdown id="dropdown" opened="{{opened}}" horizontal-align="[[horizontalAlign]]" vertical-align="[[verticalAlign]]" dynamic-align="[[dynamicAlign]]" horizontal-offset="[[horizontalOffset]]" vertical-offset="[[verticalOffset]]" no-overlap="[[noOverlap]]" open-animation-config="[[openAnimationConfig]]" close-animation-config="[[closeAnimationConfig]]" no-animations="[[noAnimations]]" focus-target="[[_dropdownContent]]" allow-outside-scroll="[[allowOutsideScroll]]" restore-focus-on-close="[[restoreFocusOnClose]]" on-iron-overlay-canceled="__onIronOverlayCanceled"><div class="dropdown-content"><content id="content" select=".dropdown-content"></content></div></iron-dropdown></template><script>!function(){"use strict";var e={ANIMATION_CUBIC_BEZIER:"cubic-bezier(.3,.95,.5,1)",MAX_ANIMATION_TIME_MS:400},n=Polymer({is:"paper-menu-button",behaviors:[Polymer.IronA11yKeysBehavior,Polymer.IronControlState],properties:{opened:{type:Boolean,value:!1,notify:!0,observer:"_openedChanged"},horizontalAlign:{type:String,value:"left",reflectToAttribute:!0},verticalAlign:{type:String,value:"top",reflectToAttribute:!0},dynamicAlign:{type:Boolean},horizontalOffset:{type:Number,value:0,notify:!0},verticalOffset:{type:Number,value:0,notify:!0},noOverlap:{type:Boolean},noAnimations:{type:Boolean,value:!1},ignoreSelect:{type:Boolean,value:!1},closeOnActivate:{type:Boolean,value:!1},openAnimationConfig:{type:Object,value:function(){return[{name:"fade-in-animation",timing:{delay:100,duration:200}},{name:"paper-menu-grow-width-animation",timing:{delay:100,duration:150,easing:e.ANIMATION_CUBIC_BEZIER}},{name:"paper-menu-grow-height-animation",timing:{delay:100,duration:275,easing:e.ANIMATION_CUBIC_BEZIER}}]}},closeAnimationConfig:{type:Object,value:function(){return[{name:"fade-out-animation",timing:{duration:150}},{name:"paper-menu-shrink-width-animation",timing:{delay:100,duration:50,easing:e.ANIMATION_CUBIC_BEZIER}},{name:"paper-menu-shrink-height-animation",timing:{duration:200,easing:"ease-in"}}]}},allowOutsideScroll:{type:Boolean,value:!1},restoreFocusOnClose:{type:Boolean,value:!0},_dropdownContent:{type:Object}},hostAttributes:{role:"group","aria-haspopup":"true"},listeners:{"iron-activate":"_onIronActivate","iron-select":"_onIronSelect"},get contentElement(){return Polymer.dom(this.$.content).getDistributedNodes()[0]},toggle:function(){this.opened?this.close():this.open()},open:function(){this.disabled||this.$.dropdown.open()},close:function(){this.$.dropdown.close()},_onIronSelect:function(e){this.ignoreSelect||this.close()},_onIronActivate:function(e){this.closeOnActivate&&this.close()},_openedChanged:function(e,n){e?(this._dropdownContent=this.contentElement,this.fire("paper-dropdown-open")):null!=n&&this.fire("paper-dropdown-close")},_disabledChanged:function(e){Polymer.IronControlState._disabledChanged.apply(this,arguments),e&&this.opened&&this.close()},__onIronOverlayCanceled:function(e){var n=e.detail,t=(Polymer.dom(n).rootTarget,this.$.trigger),o=Polymer.dom(n).path;o.indexOf(t)>-1&&e.preventDefault()}});Object.keys(e).forEach(function(t){n[t]=e[t]}),Polymer.PaperMenuButton=n}()</script></dom-module><iron-iconset-svg name="paper-dropdown-menu" size="24"><svg><defs><g id="arrow-drop-down"><path d="M7 10l5 5 5-5z"></path></g></defs></svg></iron-iconset-svg><dom-module id="paper-dropdown-menu-shared-styles" assetpath="../bower_components/paper-dropdown-menu/"><template><style>:host{display:inline-block;position:relative;text-align:left;-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:transparent;--paper-input-container-input:{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:100%;box-sizing:border-box;cursor:pointer};@apply(--paper-dropdown-menu)}:host([disabled]){@apply(--paper-dropdown-menu-disabled)}:host([noink]) paper-ripple{display:none}:host([no-label-float]) paper-ripple{top:8px}paper-ripple{top:12px;left:0;bottom:8px;right:0;@apply(--paper-dropdown-menu-ripple)}paper-menu-button{display:block;padding:0;@apply(--paper-dropdown-menu-button)}paper-input{@apply(--paper-dropdown-menu-input)}iron-icon{color:var(--disabled-text-color);@apply(--paper-dropdown-menu-icon)}</style></template></dom-module><dom-module id="paper-dropdown-menu" assetpath="../bower_components/paper-dropdown-menu/"><template><style include="paper-dropdown-menu-shared-styles"></style><span role="button"></span><paper-menu-button id="menuButton" vertical-align="[[verticalAlign]]" horizontal-align="[[horizontalAlign]]" dynamic-align="[[dynamicAlign]]" vertical-offset="[[_computeMenuVerticalOffset(noLabelFloat)]]" disabled="[[disabled]]" no-animations="[[noAnimations]]" on-iron-select="_onIronSelect" on-iron-deselect="_onIronDeselect" opened="{{opened}}" close-on-activate="" allow-outside-scroll="[[allowOutsideScroll]]"><div class="dropdown-trigger"><paper-ripple></paper-ripple><paper-input type="text" invalid="[[invalid]]" readonly="" disabled="[[disabled]]" value="[[selectedItemLabel]]" placeholder="[[placeholder]]" error-message="[[errorMessage]]" always-float-label="[[alwaysFloatLabel]]" no-label-float="[[noLabelFloat]]" label="[[label]]"><iron-icon icon="paper-dropdown-menu:arrow-drop-down" suffix=""></iron-icon></paper-input></div><content id="content" select=".dropdown-content"></content></paper-menu-button></template><script>!function(){"use strict";Polymer({is:"paper-dropdown-menu",behaviors:[Polymer.IronButtonState,Polymer.IronControlState,Polymer.IronFormElementBehavior,Polymer.IronValidatableBehavior],properties:{selectedItemLabel:{type:String,notify:!0,readOnly:!0},selectedItem:{type:Object,notify:!0,readOnly:!0},value:{type:String,notify:!0,readOnly:!0},label:{type:String},placeholder:{type:String},errorMessage:{type:String},opened:{type:Boolean,notify:!0,value:!1,observer:"_openedChanged"},allowOutsideScroll:{type:Boolean,value:!1},noLabelFloat:{type:Boolean,value:!1,reflectToAttribute:!0},alwaysFloatLabel:{type:Boolean,value:!1},noAnimations:{type:Boolean,value:!1},horizontalAlign:{type:String,value:"right"},verticalAlign:{type:String,value:"top"},dynamicAlign:{type:Boolean}},listeners:{tap:"_onTap"},keyBindings:{"up down":"open",esc:"close"},hostAttributes:{role:"combobox","aria-autocomplete":"none","aria-haspopup":"true"},observers:["_selectedItemChanged(selectedItem)"],attached:function(){var e=this.contentElement;e&&e.selectedItem&&this._setSelectedItem(e.selectedItem)},get contentElement(){return Polymer.dom(this.$.content).getDistributedNodes()[0]},open:function(){this.$.menuButton.open()},close:function(){this.$.menuButton.close()},_onIronSelect:function(e){this._setSelectedItem(e.detail.item)},_onIronDeselect:function(e){this._setSelectedItem(null)},_onTap:function(e){Polymer.Gestures.findOriginalTarget(e)===this&&this.open()},_selectedItemChanged:function(e){var t="";t=e?e.label||e.getAttribute("label")||e.textContent.trim():"",this._setValue(t),this._setSelectedItemLabel(t)},_computeMenuVerticalOffset:function(e){return e?-4:8},_getValidity:function(e){return this.disabled||!this.required||this.required&&!!this.value},_openedChanged:function(){var e=this.opened?"true":"false",t=this.contentElement;t&&t.setAttribute("aria-expanded",e)}})}()</script></dom-module><dom-module id="paper-menu-shared-styles" assetpath="../bower_components/paper-menu/"><template><style>.selectable-content>::content>.iron-selected{font-weight:700;@apply(--paper-menu-selected-item)}.selectable-content>::content>[disabled]{color:var(--paper-menu-disabled-color,--disabled-text-color)}.selectable-content>::content>:focus{position:relative;outline:0;@apply(--paper-menu-focused-item)}.selectable-content>::content>:focus:after{@apply(--layout-fit);background:currentColor;opacity:var(--dark-divider-opacity);content:'';pointer-events:none;@apply(--paper-menu-focused-item-after)}.selectable-content>::content>[colored]:focus:after{opacity:.26}</style></template></dom-module><dom-module id="paper-menu" assetpath="../bower_components/paper-menu/"><template><style include="paper-menu-shared-styles"></style><style>:host{display:block;padding:8px 0;background:var(--paper-menu-background-color,--primary-background-color);color:var(--paper-menu-color,--primary-text-color);@apply(--paper-menu)}</style><div class="selectable-content"><content></content></div></template><script>!function(){Polymer({is:"paper-menu",behaviors:[Polymer.IronMenuBehavior]})}()</script></dom-module><script>Polymer.PaperItemBehaviorImpl={hostAttributes:{role:"option",tabindex:"0"}},Polymer.PaperItemBehavior=[Polymer.IronButtonState,Polymer.IronControlState,Polymer.PaperItemBehaviorImpl]</script><dom-module id="paper-item-shared-styles" assetpath="../bower_components/paper-item/"><template><style>.paper-item,:host{display:block;position:relative;min-height:var(--paper-item-min-height,48px);padding:0 16px}.paper-item{@apply(--paper-font-subhead);border:none;outline:0;background:#fff;width:100%;text-align:left}.paper-item[hidden],:host([hidden]){display:none!important}.paper-item.iron-selected,:host(.iron-selected){font-weight:var(--paper-item-selected-weight,bold);@apply(--paper-item-selected)}.paper-item[disabled],:host([disabled]){color:var(--paper-item-disabled-color,--disabled-text-color);@apply(--paper-item-disabled)}.paper-item:focus,:host(:focus){position:relative;outline:0;@apply(--paper-item-focused)}.paper-item:focus:before,:host(:focus):before{@apply(--layout-fit);background:currentColor;content:'';opacity:var(--dark-divider-opacity);pointer-events:none;@apply(--paper-item-focused-before)}</style></template></dom-module><dom-module id="paper-item" assetpath="../bower_components/paper-item/"><template><style include="paper-item-shared-styles"></style><style>:host{@apply(--layout-horizontal);@apply(--layout-center);@apply(--paper-font-subhead);@apply(--paper-item)}</style><content></content></template><script>Polymer({is:"paper-item",behaviors:[Polymer.PaperItemBehavior]})</script></dom-module><dom-module id="state-card-input_select" assetpath="state-summary/"><template><style>:host{display:block}state-badge{float:left;margin-top:10px}paper-dropdown-menu{display:block;margin-left:53px}</style><state-badge state-obj="[[stateObj]]"></state-badge><paper-dropdown-menu on-tap="stopPropagation" selected-item-label="{{selectedOption}}" label="[[stateObj.entityDisplay]]"><paper-menu class="dropdown-content" selected="[[computeSelected(stateObj)]]"><template is="dom-repeat" items="[[stateObj.attributes.options]]"><paper-item>[[item]]</paper-item></template></paper-menu></paper-dropdown-menu></template></dom-module><script>Polymer({is:"state-card-input_select",properties:{hass:{type:Object},inDialog:{type:Boolean,value:!1},stateObj:{type:Object},selectedOption:{type:String,observer:"selectedOptionChanged"}},computeSelected:function(t){return t.attributes.options.indexOf(t.state)},selectedOptionChanged:function(t){""!==t&&t!==this.stateObj.state&&this.hass.serviceActions.callService("input_select","select_option",{option:t,entity_id:this.stateObj.entityId})},stopPropagation:function(t){t.stopPropagation()}})</script><script>Polymer.IronRangeBehavior={properties:{value:{type:Number,value:0,notify:!0,reflectToAttribute:!0},min:{type:Number,value:0,notify:!0},max:{type:Number,value:100,notify:!0},step:{type:Number,value:1,notify:!0},ratio:{type:Number,value:0,readOnly:!0,notify:!0}},observers:["_update(value, min, max, step)"],_calcRatio:function(t){return(this._clampValue(t)-this.min)/(this.max-this.min)},_clampValue:function(t){return Math.min(this.max,Math.max(this.min,this._calcStep(t)))},_calcStep:function(t){if(t=parseFloat(t),!this.step)return t;var e=Math.round((t-this.min)/this.step);return this.step<1?e/(1/this.step)+this.min:e*this.step+this.min},_validateValue:function(){var t=this._clampValue(this.value);return this.value=this.oldValue=isNaN(t)?this.oldValue:t,this.value!==t},_update:function(){this._validateValue(),this._setRatio(100*this._calcRatio(this.value))}}</script><dom-module id="paper-progress" assetpath="../bower_components/paper-progress/"><template><style>:host{display:block;width:200px;position:relative;overflow:hidden}:host([hidden]){display:none!important}#progressContainer{@apply(--paper-progress-container);position:relative}#progressContainer,.indeterminate::after{height:var(--paper-progress-height,4px)}#primaryProgress,#secondaryProgress,.indeterminate::after{@apply(--layout-fit)}#progressContainer,.indeterminate::after{background:var(--paper-progress-container-color,--google-grey-300)}:host(.transiting) #primaryProgress,:host(.transiting) #secondaryProgress{-webkit-transition-property:-webkit-transform;transition-property:transform;-webkit-transition-duration:var(--paper-progress-transition-duration,.08s);transition-duration:var(--paper-progress-transition-duration,.08s);-webkit-transition-timing-function:var(--paper-progress-transition-timing-function,ease);transition-timing-function:var(--paper-progress-transition-timing-function,ease);-webkit-transition-delay:var(--paper-progress-transition-delay,0s);transition-delay:var(--paper-progress-transition-delay,0s)}#primaryProgress,#secondaryProgress{@apply(--layout-fit);-webkit-transform-origin:left center;transform-origin:left center;-webkit-transform:scaleX(0);transform:scaleX(0);will-change:transform}#primaryProgress{background:var(--paper-progress-active-color,--google-green-500)}#secondaryProgress{background:var(--paper-progress-secondary-color,--google-green-100)}:host([disabled]) #primaryProgress{background:var(--paper-progress-disabled-active-color,--google-grey-500)}:host([disabled]) #secondaryProgress{background:var(--paper-progress-disabled-secondary-color,--google-grey-300)}:host(:not([disabled])) #primaryProgress.indeterminate{-webkit-transform-origin:right center;transform-origin:right center;-webkit-animation:indeterminate-bar var(--paper-progress-indeterminate-cycle-duration,2s) linear infinite;animation:indeterminate-bar var(--paper-progress-indeterminate-cycle-duration,2s) linear infinite}:host(:not([disabled])) #primaryProgress.indeterminate::after{content:"";-webkit-transform-origin:center center;transform-origin:center center;-webkit-animation:indeterminate-splitter var(--paper-progress-indeterminate-cycle-duration,2s) linear infinite;animation:indeterminate-splitter var(--paper-progress-indeterminate-cycle-duration,2s) linear infinite}@-webkit-keyframes indeterminate-bar{0%{-webkit-transform:scaleX(1) translateX(-100%)}50%{-webkit-transform:scaleX(1) translateX(0)}75%{-webkit-transform:scaleX(1) translateX(0);-webkit-animation-timing-function:cubic-bezier(.28,.62,.37,.91)}100%{-webkit-transform:scaleX(0) translateX(0)}}@-webkit-keyframes indeterminate-splitter{0%{-webkit-transform:scaleX(.75) translateX(-125%)}30%{-webkit-transform:scaleX(.75) translateX(-125%);-webkit-animation-timing-function:cubic-bezier(.42,0,.6,.8)}90%{-webkit-transform:scaleX(.75) translateX(125%)}100%{-webkit-transform:scaleX(.75) translateX(125%)}}@keyframes indeterminate-bar{0%{transform:scaleX(1) translateX(-100%)}50%{transform:scaleX(1) translateX(0)}75%{transform:scaleX(1) translateX(0);animation-timing-function:cubic-bezier(.28,.62,.37,.91)}100%{transform:scaleX(0) translateX(0)}}@keyframes indeterminate-splitter{0%{transform:scaleX(.75) translateX(-125%)}30%{transform:scaleX(.75) translateX(-125%);animation-timing-function:cubic-bezier(.42,0,.6,.8)}90%{transform:scaleX(.75) translateX(125%)}100%{transform:scaleX(.75) translateX(125%)}}</style><div id="progressContainer"><div id="secondaryProgress" hidden$="[[_hideSecondaryProgress(secondaryRatio)]]"></div><div id="primaryProgress"></div></div></template></dom-module><script>Polymer({is:"paper-progress",behaviors:[Polymer.IronRangeBehavior],properties:{secondaryProgress:{type:Number,value:0},secondaryRatio:{type:Number,value:0,readOnly:!0},indeterminate:{type:Boolean,value:!1,observer:"_toggleIndeterminate"},disabled:{type:Boolean,value:!1,reflectToAttribute:!0,observer:"_disabledChanged"}},observers:["_progressChanged(secondaryProgress, value, min, max)"],hostAttributes:{role:"progressbar"},_toggleIndeterminate:function(e){this.toggleClass("indeterminate",e,this.$.primaryProgress)},_transformProgress:function(e,r){var s="scaleX("+r/100+")";e.style.transform=e.style.webkitTransform=s},_mainRatioChanged:function(e){this._transformProgress(this.$.primaryProgress,e)},_progressChanged:function(e,r,s,t){e=this._clampValue(e),r=this._clampValue(r);var a=100*this._calcRatio(e),i=100*this._calcRatio(r);this._setSecondaryRatio(a),this._transformProgress(this.$.secondaryProgress,a),this._transformProgress(this.$.primaryProgress,i),this.secondaryProgress=e,this.setAttribute("aria-valuenow",r),this.setAttribute("aria-valuemin",s),this.setAttribute("aria-valuemax",t)},_disabledChanged:function(e){this.setAttribute("aria-disabled",e?"true":"false")},_hideSecondaryProgress:function(e){return 0===e}})</script><dom-module id="paper-slider" assetpath="../bower_components/paper-slider/"><template strip-whitespace=""><style>:host{@apply(--layout);@apply(--layout-justified);@apply(--layout-center);width:200px;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;--paper-progress-active-color:var(--paper-slider-active-color, --google-blue-700);--paper-progress-secondary-color:var(--paper-slider-secondary-color, --google-blue-300);--paper-progress-disabled-active-color:var(--paper-slider-disabled-active-color, --paper-grey-400);--paper-progress-disabled-secondary-color:var(--paper-slider-disabled-secondary-color, --paper-grey-400)}:host(:focus){outline:0}#sliderContainer{position:relative;width:100%;height:calc(30px + var(--paper-slider-height,2px));margin-left:calc(15px + var(--paper-slider-height,2px)/ 2);margin-right:calc(15px + var(--paper-slider-height,2px)/ 2)}#sliderContainer:focus{outline:0}#sliderContainer.editable{margin-top:12px;margin-bottom:12px}.bar-container{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.ring>.bar-container{left:calc(5px + var(--paper-slider-height,2px)/ 2);transition:left .18s ease}.ring.expand.dragging>.bar-container{transition:none}.ring.expand:not(.pin)>.bar-container{left:calc(8px + var(--paper-slider-height,2px)/ 2)}#sliderBar{padding:15px 0;width:100%;background-color:var(--paper-slider-bar-color,transparent);--paper-progress-container-color:var(--paper-slider-container-color, --paper-grey-400);--paper-progress-height:var(--paper-slider-height, 2px)}.slider-markers{position:absolute;top:calc(14px + var(--paper-slider-height,2px)/ 2);height:var(--paper-slider-height,2px);left:0;right:-1px;box-sizing:border-box;pointer-events:none;@apply(--layout-horizontal)}.slider-marker{@apply(--layout-flex)}.slider-marker::after,.slider-markers::after{content:"";display:block;margin-left:-1px;width:2px;height:2px;border-radius:50%;background-color:#000}#sliderKnob{position:absolute;left:0;top:0;margin-left:calc(-15px - var(--paper-slider-height,2px)/ 2);width:calc(30px + var(--paper-slider-height,2px));height:calc(30px + var(--paper-slider-height,2px))}.transiting>#sliderKnob{transition:left 80ms ease}#sliderKnob:focus{outline:0}#sliderKnob.dragging{transition:none}.snaps>#sliderKnob.dragging{transition:-webkit-transform 80ms ease;transition:transform 80ms ease}#sliderKnobInner{margin:10px;width:calc(100% - 20px);height:calc(100% - 20px);background-color:var(--paper-slider-knob-color,--google-blue-700);border:2px solid var(--paper-slider-knob-color,--google-blue-700);border-radius:50%;-moz-box-sizing:border-box;box-sizing:border-box;transition-property:-webkit-transform,background-color,border;transition-property:transform,background-color,border;transition-duration:.18s;transition-timing-function:ease}.expand:not(.pin)>#sliderKnob>#sliderKnobInner{-webkit-transform:scale(1.5);transform:scale(1.5)}.ring>#sliderKnob>#sliderKnobInner{background-color:var(--paper-slider-knob-start-color,transparent);border:2px solid var(--paper-slider-knob-start-border-color,--paper-grey-400)}#sliderKnobInner::before{background-color:var(--paper-slider-pin-color,--google-blue-700)}.pin>#sliderKnob>#sliderKnobInner::before{content:"";position:absolute;top:0;left:50%;margin-left:-13px;width:26px;height:26px;border-radius:50% 50% 50% 0;-webkit-transform:rotate(-45deg) scale(0) translate(0);transform:rotate(-45deg) scale(0) translate(0)}#sliderKnobInner::after,#sliderKnobInner::before{transition:-webkit-transform .18s ease,background-color .18s ease;transition:transform .18s ease,background-color .18s ease}.pin.ring>#sliderKnob>#sliderKnobInner::before{background-color:var(--paper-slider-pin-start-color,--paper-grey-400)}.pin.expand>#sliderKnob>#sliderKnobInner::before{-webkit-transform:rotate(-45deg) scale(1) translate(17px,-17px);transform:rotate(-45deg) scale(1) translate(17px,-17px)}.pin>#sliderKnob>#sliderKnobInner::after{content:attr(value);position:absolute;top:0;left:50%;margin-left:-16px;width:32px;height:26px;text-align:center;color:var(--paper-slider-font-color,#fff);font-size:10px;-webkit-transform:scale(0) translate(0);transform:scale(0) translate(0)}.pin.expand>#sliderKnob>#sliderKnobInner::after{-webkit-transform:scale(1) translate(0,-17px);transform:scale(1) translate(0,-17px)}.slider-input{width:50px;overflow:hidden;--paper-input-container-input:{text-align:center};@apply(--paper-slider-input)}#sliderContainer.disabled{pointer-events:none}.disabled>#sliderKnob>#sliderKnobInner{background-color:var(--paper-slider-disabled-knob-color,--paper-grey-400);border:2px solid var(--paper-slider-disabled-knob-color,--paper-grey-400);-webkit-transform:scale3d(.75,.75,1);transform:scale3d(.75,.75,1)}.disabled.ring>#sliderKnob>#sliderKnobInner{background-color:var(--paper-slider-knob-start-color,transparent);border:2px solid var(--paper-slider-knob-start-border-color,--paper-grey-400)}paper-ripple{color:var(--paper-slider-knob-color,--google-blue-700)}</style><div id="sliderContainer" class$="[[_getClassNames(disabled, pin, snaps, immediateValue, min, expand, dragging, transiting, editable)]]"><div class="bar-container"><paper-progress disabled$="[[disabled]]" id="sliderBar" aria-hidden="true" min="[[min]]" max="[[max]]" step="[[step]]" value="[[immediateValue]]" secondary-progress="[[secondaryProgress]]" on-down="_bardown" on-up="_resetKnob" on-track="_onTrack"></paper-progress></div><template is="dom-if" if="[[snaps]]"><div class="slider-markers"><template is="dom-repeat" items="[[markers]]"><div class="slider-marker"></div></template></div></template><div id="sliderKnob" on-down="_knobdown" on-up="_resetKnob" on-track="_onTrack" on-transitionend="_knobTransitionEnd"><div id="sliderKnobInner" value$="[[immediateValue]]"></div></div></div><template is="dom-if" if="[[editable]]"><paper-input id="input" type="number" step="[[step]]" min="[[min]]" max="[[max]]" class="slider-input" disabled$="[[disabled]]" value="[[immediateValue]]" on-change="_changeValue" on-keydown="_inputKeyDown" no-label-float=""></paper-input></template></template><script>Polymer({is:"paper-slider",behaviors:[Polymer.IronA11yKeysBehavior,Polymer.IronFormElementBehavior,Polymer.PaperInkyFocusBehavior,Polymer.IronRangeBehavior],properties:{snaps:{type:Boolean,value:!1,notify:!0},pin:{type:Boolean,value:!1,notify:!0},secondaryProgress:{type:Number,value:0,notify:!0,observer:"_secondaryProgressChanged"},editable:{type:Boolean,value:!1},immediateValue:{type:Number,value:0,readOnly:!0,notify:!0},maxMarkers:{type:Number,value:0,notify:!0},expand:{type:Boolean,value:!1,readOnly:!0},dragging:{type:Boolean,value:!1,readOnly:!0},transiting:{type:Boolean,value:!1,readOnly:!0},markers:{type:Array,readOnly:!0,value:[]}},observers:["_updateKnob(value, min, max, snaps, step)","_valueChanged(value)","_immediateValueChanged(immediateValue)","_updateMarkers(maxMarkers, min, max, snaps)"],hostAttributes:{role:"slider",tabindex:0},keyBindings:{"left down pagedown home":"_decrementKey","right up pageup end":"_incrementKey"},increment:function(){this.value=this._clampValue(this.value+this.step)},decrement:function(){this.value=this._clampValue(this.value-this.step)},_updateKnob:function(t,e,i,s,a){this.setAttribute("aria-valuemin",e),this.setAttribute("aria-valuemax",i),this.setAttribute("aria-valuenow",t),this._positionKnob(this._calcRatio(t))},_valueChanged:function(){this.fire("value-change")},_immediateValueChanged:function(){this.dragging?this.fire("immediate-value-change"):this.value=this.immediateValue},_secondaryProgressChanged:function(){this.secondaryProgress=this._clampValue(this.secondaryProgress)},_expandKnob:function(){this._setExpand(!0)},_resetKnob:function(){this.cancelDebouncer("expandKnob"),this._setExpand(!1)},_positionKnob:function(t){this._setImmediateValue(this._calcStep(this._calcKnobPosition(t))),this._setRatio(this._calcRatio(this.immediateValue)),this.$.sliderKnob.style.left=100*this.ratio+"%",this.dragging&&(this._knobstartx=this.ratio*this._w,this.translate3d(0,0,0,this.$.sliderKnob))},_calcKnobPosition:function(t){return(this.max-this.min)*t+this.min},_onTrack:function(t){switch(t.stopPropagation(),t.detail.state){case"start":this._trackStart(t);break;case"track":this._trackX(t);break;case"end":this._trackEnd()}},_trackStart:function(t){this._w=this.$.sliderBar.offsetWidth,this._x=this.ratio*this._w,this._startx=this._x,this._knobstartx=this._startx,this._minx=-this._startx,this._maxx=this._w-this._startx,this.$.sliderKnob.classList.add("dragging"),this._setDragging(!0)},_trackX:function(t){this.dragging||this._trackStart(t);var e=Math.min(this._maxx,Math.max(this._minx,t.detail.dx));this._x=this._startx+e;var i=this._calcStep(this._calcKnobPosition(this._x/this._w));this._setImmediateValue(i);var s=this._calcRatio(this.immediateValue)*this._w-this._knobstartx;this.translate3d(s+"px",0,0,this.$.sliderKnob)},_trackEnd:function(){var t=this.$.sliderKnob.style;this.$.sliderKnob.classList.remove("dragging"),this._setDragging(!1),this._resetKnob(),this.value=this.immediateValue,t.transform=t.webkitTransform="",this.fire("change")},_knobdown:function(t){this._expandKnob(),t.preventDefault(),this.focus()},_bardown:function(t){this._w=this.$.sliderBar.offsetWidth;var e=this.$.sliderBar.getBoundingClientRect(),i=(t.detail.x-e.left)/this._w,s=this.ratio;this._setTransiting(!0),this._positionKnob(i),this.debounce("expandKnob",this._expandKnob,60),s===this.ratio&&this._setTransiting(!1),this.async(function(){this.fire("change")}),t.preventDefault(),this.focus()},_knobTransitionEnd:function(t){t.target===this.$.sliderKnob&&this._setTransiting(!1)},_updateMarkers:function(t,e,i,s){s||this._setMarkers([]);var a=Math.round((i-e)/this.step);a>t&&(a=t),this._setMarkers(new Array(a))},_mergeClasses:function(t){return Object.keys(t).filter(function(e){return t[e]}).join(" ")},_getClassNames:function(){return this._mergeClasses({disabled:this.disabled,pin:this.pin,snaps:this.snaps,ring:this.immediateValue<=this.min,expand:this.expand,dragging:this.dragging,transiting:this.transiting,editable:this.editable})},_incrementKey:function(t){this.disabled||("end"===t.detail.key?this.value=this.max:this.increment(),this.fire("change"))},_decrementKey:function(t){this.disabled||("home"===t.detail.key?this.value=this.min:this.decrement(),this.fire("change"))},_changeValue:function(t){this.value=t.target.value,this.fire("change")},_inputKeyDown:function(t){t.stopPropagation()},_createRipple:function(){return this._rippleContainer=this.$.sliderKnob,Polymer.PaperInkyFocusBehaviorImpl._createRipple.call(this)},_focusedChanged:function(t){t&&this.ensureRipple(),this.hasRipple()&&(t?this._ripple.style.display="":this._ripple.style.display="none",this._ripple.holdDown=t)}})</script></dom-module><dom-module id="state-card-input_slider" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>paper-slider{margin-left:16px}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><paper-slider min="[[min]]" max="[[max]]" value="{{value}}" step="[[step]]" pin="" on-change="selectedValueChanged" on-tap="stopPropagation"></paper-slider></div></template></dom-module><script>Polymer({is:"state-card-input_slider",properties:{hass:{type:Object},inDialog:{type:Boolean,value:!1},stateObj:{type:Object,observer:"stateObjectChanged"},min:{type:Number},max:{type:Number},step:{type:Number},value:{type:Number}},stateObjectChanged:function(t){this.value=Number(t.state),this.min=Number(t.attributes.min),this.max=Number(t.attributes.max),this.step=Number(t.attributes.step)},selectedValueChanged:function(){this.value!==Number(this.stateObj.state)&&this.hass.serviceActions.callService("input_slider","select_value",{value:this.value,entity_id:this.stateObj.entityId})},stopPropagation:function(t){t.stopPropagation()}})</script><dom-module id="state-card-media_player" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>:host{line-height:1.5}.state{@apply(--paper-font-common-nowrap);@apply(--paper-font-body1);margin-left:16px;text-align:right}.main-text{@apply(--paper-font-common-nowrap);color:var(--primary-text-color);text-transform:capitalize}.main-text[take-height]{line-height:40px}.secondary-text{@apply(--paper-font-common-nowrap);color:var(--secondary-text-color)}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><div class="state"><div class="main-text" take-height$="[[!secondaryText]]">[[computePrimaryText(stateObj, isPlaying)]]</div><div class="secondary-text">[[secondaryText]]</div></div></div></template></dom-module><script>Polymer({PLAYING_STATES:["playing","paused"],is:"state-card-media_player",properties:{inDialog:{type:Boolean,value:!1},stateObj:{type:Object},isPlaying:{type:Boolean,computed:"computeIsPlaying(stateObj)"},secondaryText:{type:String,computed:"computeSecondaryText(stateObj)"}},computeIsPlaying:function(t){return this.PLAYING_STATES.indexOf(t.state)!==-1},computePrimaryText:function(t,e){return e?t.attributes.media_title:t.stateDisplay},computeSecondaryText:function(t){var e;return"music"===t.attributes.media_content_type?t.attributes.media_artist:"tvshow"===t.attributes.media_content_type?(e=t.attributes.media_series_title,t.attributes.media_season&&t.attributes.media_episode&&(e+=" S"+t.attributes.media_season+"E"+t.attributes.media_episode),e):t.attributes.app_name?t.attributes.app_name:""}})</script><dom-module id="state-card-scene" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>paper-button{color:var(--default-primary-color);font-weight:500;top:3px;height:37px;margin-right:-.57em}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><paper-button on-tap="activateScene">ACTIVATE</paper-button></div></template></dom-module><script>Polymer({is:"state-card-scene",properties:{hass:{type:Object},inDialog:{type:Boolean,value:!1},stateObj:{type:Object}},activateScene:function(t){t.stopPropagation(),this.hass.serviceActions.callTurnOn(this.stateObj.entityId)}})</script><dom-module id="state-card-script" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>paper-button{color:var(--default-primary-color);font-weight:500;top:3px;height:37px;margin-right:-.57em}ha-entity-toggle{margin-left:16px}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><template is="dom-if" if="[[stateObj.attributes.can_cancel]]"><ha-entity-toggle state-obj="[[stateObj]]" hass="[[hass]]"></ha-entity-toggle></template><template is="dom-if" if="[[!stateObj.attributes.can_cancel]]"><paper-button on-tap="fireScript">ACTIVATE</paper-button></template></div></template></dom-module><script>Polymer({is:"state-card-script",properties:{inDialog:{type:Boolean,value:!1},stateObj:{type:Object}},fireScript:function(t){t.stopPropagation(),this.hass.serviceActions.callTurnOn(this.stateObj.entityId)}})</script><dom-module id="state-card-toggle" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>ha-entity-toggle{margin-left:16px}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><ha-entity-toggle state-obj="[[stateObj]]" hass="[[hass]]"></ha-entity-toggle></div></template></dom-module><script>Polymer({is:"state-card-toggle",properties:{hass:{type:Object},inDialog:{type:Boolean,value:!1},stateObj:{type:Object}}})</script><dom-module id="state-card-weblink" assetpath="state-summary/"><template><style>:host{display:block}.name{@apply(--paper-font-common-nowrap);@apply(--paper-font-body1);color:var(--primary-color);text-transform:capitalize;line-height:40px;margin-left:16px}</style><state-badge state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-badge><a href$="[[stateObj.state]]" target="_blank" class="name" id="link">[[stateObj.entityDisplay]]</a></template></dom-module><script>Polymer({is:"state-card-weblink",properties:{inDialog:{type:Boolean,value:!1},stateObj:{type:Object}},listeners:{tap:"onTap"},onTap:function(t){t.stopPropagation(),t.target!==this.$.link&&window.open(this.stateObj.state,"_blank")}})</script><script>Polymer({is:"state-card-content",properties:{hass:{type:Object},inDialog:{type:Boolean,value:!1},stateObj:{type:Object}},observers:["inputChanged(hass, inDialog, stateObj)"],inputChanged:function(t,e,s){s&&window.hassUtil.dynamicContentUpdater(this,"STATE-CARD-"+window.hassUtil.stateCardType(this.hass,s).toUpperCase(),{hass:t,stateObj:s,inDialog:e})}})</script><dom-module id="ha-entities-card" assetpath="cards/"><template><style is="custom-style" include="iron-flex"></style><style>.states{padding-bottom:16px}.state{padding:4px 16px;cursor:pointer}.header{@apply(--paper-font-headline);line-height:40px;color:var(--primary-text-color);padding:20px 16px 12px}.header .name{@apply(--paper-font-common-nowrap)}ha-entity-toggle{margin-left:16px}.header-more-info{cursor:pointer}</style><ha-card><div class$="[[computeTitleClass(groupEntity)]]" on-tap="entityTapped"><div class="flex name">[[computeTitle(states, groupEntity)]]</div><template is="dom-if" if="[[showGroupToggle(groupEntity, states)]]"><ha-entity-toggle hass="[[hass]]" state-obj="[[groupEntity]]"></ha-entity-toggle></template></div><div class="states"><template is="dom-repeat" items="[[states]]"><div class="state" on-tap="entityTapped"><state-card-content hass="[[hass]]" class="state-card" state-obj="[[item]]"></state-card-content></div></template></div></ha-card></template></dom-module><script>Polymer({is:"ha-entities-card",properties:{hass:{type:Object},states:{type:Array},groupEntity:{type:Object}},computeTitle:function(t,e){return e?e.entityDisplay:t[0].domain.replace(/_/g," ")},computeTitleClass:function(t){var e="header horizontal layout center ";return t&&(e+="header-more-info"),e},entityTapped:function(t){var e;t.target.classList.contains("paper-toggle-button")||t.target.classList.contains("paper-icon-button")||!t.model&&!this.groupEntity||(t.stopPropagation(),e=t.model?t.model.item.entityId:this.groupEntity.entityId,this.async(function(){this.hass.moreInfoActions.selectEntity(e)}.bind(this),1))},showGroupToggle:function(t,e){var n;return!(!t||!e||"hidden"===t.attributes.control||"on"!==t.state&&"off"!==t.state)&&(n=e.reduce(function(t,e){return t+window.hassUtil.canToggle(this.hass,e.entityId)},0),n>1)}})</script><dom-module id="ha-introduction-card" assetpath="cards/"><template><style>:host{@apply(--paper-font-body1)}a{color:var(--dark-primary-color)}ul{margin:8px;padding-left:16px}li{margin-bottom:8px}.content{padding:0 16px 16px}.install{display:block;line-height:1.5em;margin-top:8px;margin-bottom:16px}</style><ha-card header="Welcome Home!"><div class="content"><template is="dom-if" if="[[hass.demo]]">To install Home Assistant, run:<br><code class="install">pip3 install homeassistant<br>hass --open-ui</code></template>Here are some resources to get started.<ul><template is="dom-if" if="[[hass.demo]]"><li><a href="https://home-assistant.io/getting-started/">Home Assistant website</a></li><li><a href="https://home-assistant.io/getting-started/">Installation instructions</a></li><li><a href="https://home-assistant.io/getting-started/troubleshooting/">Troubleshooting your installation</a></li></template><li><a href="https://home-assistant.io/getting-started/configuration/" target="_blank">Configuring Home Assistant</a></li><li><a href="https://home-assistant.io/components/" target="_blank">Available components</a></li><li><a href="https://home-assistant.io/getting-started/troubleshooting-configuration/" target="_blank">Troubleshooting your configuration</a></li><li><a href="https://home-assistant.io/help/" target="_blank">Ask community for help</a></li></ul><template is="dom-if" if="[[showHideInstruction]]">To remove this card, edit your config in <code>configuration.yaml</code> and disable the <code>introduction</code> component.</template></div></ha-card></template></dom-module><script>Polymer({is:"ha-introduction-card",properties:{hass:{type:Object},showHideInstruction:{type:Boolean,value:!0}}})</script><dom-module id="ha-media_player-card" assetpath="cards/"><template><style include="paper-material iron-flex iron-flex-alignment iron-positioning">:host{display:block;position:relative;font-size:0;border-radius:2px;overflow:hidden}.banner{position:relative;background-color:#fff;border-top-left-radius:2px;border-top-right-radius:2px}.banner:before{display:block;content:"";width:100%;padding-top:56%;transition:padding-top .8s}.banner.no-cover{background-position:center center;background-image:url(/static/images/card_media_player_bg.png);background-repeat:no-repeat;background-color:var(--primary-color)}.banner.content-type-music:before{padding-top:100%}.banner.no-cover:before{padding-top:88px}.banner>.cover{position:absolute;top:0;left:0;right:0;bottom:0;border-top-left-radius:2px;border-top-right-radius:2px;background-position:center center;background-size:cover;transition:opacity .8s;opacity:1}.banner.is-off>.cover{opacity:0}.banner>.caption{@apply(--paper-font-caption);position:absolute;left:0;right:0;bottom:0;background-color:rgba(0,0,0,var(--dark-secondary-opacity));padding:8px 16px;font-size:14px;font-weight:500;color:#fff;transition:background-color .5s}.banner.is-off>.caption{background-color:initial}.banner>.caption .title{@apply(--paper-font-common-nowrap);font-size:1.2em;margin:8px 0 4px}.progress{width:100%;--paper-progress-active-color:var(--accent-color);--paper-progress-container-color:#FFF}.controls{position:relative;@apply(--paper-font-body1);padding:8px;border-bottom-left-radius:2px;border-bottom-right-radius:2px;background-color:#fff}.controls paper-icon-button{width:44px;height:44px}paper-icon-button{opacity:var(--dark-primary-opacity)}paper-icon-button[disabled]{opacity:var(--dark-disabled-opacity)}paper-icon-button.primary{width:56px!important;height:56px!important;background-color:var(--primary-color);color:#fff;border-radius:50%;padding:8px;transition:background-color .5s}paper-icon-button.primary[disabled]{background-color:rgba(0,0,0,var(--dark-disabled-opacity))}[invisible]{visibility:hidden!important}</style><div class$="[[computeBannerClasses(playerObj)]]"><div class="cover" id="cover"></div><div class="caption">[[stateObj.entityDisplay]]<div class="title">[[playerObj.primaryText]]</div>[[playerObj.secondaryText]]<br></div></div><paper-progress max="[[stateObj.attributes.media_duration]]" value="[[playbackPosition]]" hidden$="[[computeHideProgress(playerObj)]]" class="progress"></paper-progress><div class="controls layout horizontal justified"><paper-icon-button icon="mdi:power" on-tap="handleTogglePower" invisible$="[[computeHidePowerButton(playerObj)]]" class="self-center secondary"></paper-icon-button><div><paper-icon-button icon="mdi:skip-previous" invisible$="[[!playerObj.supportsPreviousTrack]]" disabled="[[playerObj.isOff]]" on-tap="handlePrevious"></paper-icon-button><paper-icon-button class="primary" icon="[[computePlaybackControlIcon(playerObj)]]" invisible="[[!computePlaybackControlIcon(playerObj)]]" disabled="[[playerObj.isOff]]" on-tap="handlePlaybackControl"></paper-icon-button><paper-icon-button icon="mdi:skip-next" invisible$="[[!playerObj.supportsNextTrack]]" disabled="[[playerObj.isOff]]" on-tap="handleNext"></paper-icon-button></div><paper-icon-button icon="mdi:dots-vertical" on-tap="handleOpenMoreInfo" class="self-center secondary"></paper-icon-button></div></template></dom-module><script>Polymer({is:"ha-media_player-card",properties:{hass:{type:Object},stateObj:{type:Object},playerObj:{type:Object,computed:"computePlayerObj(stateObj)",observer:"playerObjChanged"},playbackControlIcon:{type:String,computed:"computePlaybackControlIcon(playerObj)"},playbackPosition:{type:Number},elevation:{type:Number,value:1,reflectToAttribute:!0}},created:function(){this.updatePlaybackPosition=this.updatePlaybackPosition.bind(this)},playerObjChanged:function(t){var e=t.stateObj.attributes.entity_picture;e?this.$.cover.style.backgroundImage="url("+e+")":this.$.cover.style.backgroundImage="",t.isPlaying?(this._positionTracking||(this._positionTracking=setInterval(this.updatePlaybackPosition,1e3)),this.updatePlaybackPosition()):this._positionTracking&&(clearInterval(this._positionTracking),this._positionTracking=null,this.playbackPosition=0)},updatePlaybackPosition:function(){this.playbackPosition=this.playerObj.currentProgress},computeBannerClasses:function(t){var e="banner";return t.isOff||t.isIdle?e+=" is-off no-cover":t.stateObj.attributes.entity_picture?"music"===t.stateObj.attributes.media_content_type&&(e+=" content-type-music"):e+=" no-cover",e},computeHideProgress:function(t){return!t.showProgress},computeHidePowerButton:function(t){return t.isOff?!t.supportsTurnOn:!t.supportsTurnOff},computePlayerObj:function(t){return t.domainModel(this.hass)},computePlaybackControlIcon:function(t){return t.isPlaying?t.supportsPause?"mdi:pause":"mdi:stop":t.isPaused||t.isOff||t.isIdle?"mdi:play":""},handleNext:function(t){t.stopPropagation(),this.playerObj.nextTrack()},handleOpenMoreInfo:function(t){t.stopPropagation(),this.async(function(){this.hass.moreInfoActions.selectEntity(this.stateObj.entityId)},1)},handlePlaybackControl:function(t){t.stopPropagation(),this.playerObj.mediaPlayPause()},handlePrevious:function(t){t.stopPropagation(),this.playerObj.previousTrack()},handleTogglePower:function(t){t.stopPropagation(),this.playerObj.togglePower()}})</script><dom-module id="ha-persistent_notification-card" assetpath="cards/"><template><style>:host{@apply(--paper-font-body1)}.content{padding:0 16px 16px}paper-button{margin:8px;font-weight:500}</style><ha-card header="[[computeTitle(stateObj)]]"><div id="pnContent" class="content"></div><paper-button on-tap="dismissTap">DISMISS</paper-button></ha-card></template></dom-module><script>Polymer({is:"ha-persistent_notification-card",properties:{hass:{type:Object},stateObj:{type:Object},scriptLoaded:{type:Boolean,value:!1}},observers:["computeContent(stateObj, scriptLoaded)"],computeTitle:function(t){return t.attributes.title||t.entityDisplay},loadScript:function(){var t=function(){this.scriptLoaded=!0}.bind(this),e=function(){console.error("Micromarkdown was not loaded.")};this.importHref("/static/micromarkdown-js.html",t,e)},computeContent:function(t,e){var i="",n="";e&&(i=this.$.pnContent,n=window.micromarkdown.parse(t.state),i.innerHTML=n)},ready:function(){this.loadScript()},dismissTap:function(t){t.preventDefault(),this.hass.entityActions.delete(this.stateObj)}})</script><script>Polymer({is:"ha-card-chooser",properties:{cardData:{type:Object,observer:"cardDataChanged"}},cardDataChanged:function(a){a&&window.hassUtil.dynamicContentUpdater(this,"HA-"+a.cardType.toUpperCase()+"-CARD",a)}})</script><dom-module id="ha-cards" assetpath="components/"><template><style is="custom-style" include="iron-flex iron-flex-factors"></style><style>:host{display:block;padding-top:8px;padding-right:8px}.badges{font-size:85%;text-align:center}.column{max-width:500px;overflow-x:hidden}.zone-card{margin-left:8px;margin-bottom:8px}@media (max-width:500px){:host{padding-right:0}.zone-card{margin-left:0}}@media (max-width:599px){.column{max-width:600px}}</style><div class="main"><template is="dom-if" if="[[cards.badges]]"><div class="badges"><template is="dom-if" if="[[cards.demo]]"><ha-demo-badge></ha-demo-badge></template><ha-badges-card states="[[cards.badges]]" hass="[[hass]]"></ha-badges-card></div></template><div class="horizontal layout center-justified"><template is="dom-repeat" items="[[cards.columns]]" as="column"><div class="column flex-1"><template is="dom-repeat" items="[[column]]" as="card"><div class="zone-card"><ha-card-chooser card-data="[[card]]" hass="[[hass]]"></ha-card-chooser></div></template></div></template></div></div></template></dom-module><script>!function(){"use strict";function t(t){return t in o?o[t]:30}function e(t){return"group"===t.domain?t.attributes.order:t.entityDisplay.toLowerCase()}var n={camera:4,media_player:3,persistent_notification:0},o={configurator:-20,persistent_notification:-15,group:-10,a:-1,updater:0,sun:1,device_tracker:2,alarm_control_panel:3,sensor:5,binary_sensor:6};Polymer({is:"ha-cards",properties:{hass:{type:Object},showIntroduction:{type:Boolean,value:!1},columns:{type:Number,value:2},states:{type:Object},panelVisible:{type:Boolean},viewVisible:{type:Boolean},cards:{type:Object}},observers:["updateCards(columns, states, showIntroduction, panelVisible, viewVisible)"],updateCards:function(t,e,n,o,r){o&&r&&this.debounce("updateCards",function(){this.panelVisible&&this.viewVisible&&(this.cards=this.computeCards(t,e,n))}.bind(this))},computeCards:function(o,r,s){function i(t){return t.filter(function(t){return!(t.entityId in h)})}function a(t){var e=0;for(p=e;p<y.length;p++){if(y[p]<5){e=p;break}y[p]<y[e]&&(e=p)}return y[e]+=t,e}function u(t,e,o){var r,s,i,u;0!==e.length&&(r=[],s=[],i=0,e.forEach(function(t){t.domain in n?(r.push(t),i+=n[t.domain]):(s.push(t),i++)}),i+=s.length>1,u=a(i),s.length>0&&f.columns[u].push({hass:d,cardType:"entities",states:s,groupEntity:o||!1}),r.forEach(function(t){f.columns[u].push({hass:d,cardType:t.domain,stateObj:t})}))}var c,p,d=this.hass,l=r.groupBy(function(t){return t.domain}),h={},f={demo:!1,badges:[],columns:[]},y=[];for(p=0;p<o;p++)f.columns.push([]),y.push(0);return s&&f.columns[a(5)].push({hass:d,cardType:"introduction",showHideInstruction:r.size>0&&!d.demo}),c=this.hass.util.expandGroup,l.keySeq().sortBy(function(e){return t(e)}).forEach(function(n){var o;return"a"===n?void(f.demo=!0):(o=t(n),void(o>=0&&o<10?f.badges.push.apply(f.badges,i(l.get(n)).sortBy(e).toArray()):"group"===n?l.get(n).sortBy(e).forEach(function(t){var e=c(t,r);e.forEach(function(t){h[t.entityId]=!0}),u(t.entityId,e.toArray(),t)}):u(n,i(l.get(n)).sortBy(e).toArray())))}),f.columns=f.columns.filter(function(t){return t.length>0}),f}})}()</script><dom-module id="partial-cards" assetpath="layouts/"><template><style include="iron-flex iron-positioning ha-style">:host{-ms-user-select:none;-webkit-user-select:none;-moz-user-select:none}app-header-layout{background-color:#E5E5E5}paper-tabs{margin-left:12px;--paper-tabs-selection-bar-color:#FFF;text-transform:uppercase}</style><app-header-layout has-scrolling-region="" id="layout"><app-header effects="waterfall" condenses="" fixed=""><app-toolbar><ha-menu-button narrow="[[narrow]]" show-menu="[[showMenu]]"></ha-menu-button><div main-title="">[[computeTitle(views, locationName)]]</div><paper-icon-button icon="mdi:microphone" hidden$="[[!canListen]]" on-tap="handleListenClick"></paper-icon-button></app-toolbar><div sticky="" hidden$="[[!views.length]]"><paper-tabs scrollable="" selected="[[currentView]]" attr-for-selected="data-entity" on-iron-select="handleViewSelected"><paper-tab data-entity="" on-tap="scrollToTop">[[locationName]]</paper-tab><template is="dom-repeat" items="[[views]]"><paper-tab data-entity$="[[item.entityId]]" on-tap="scrollToTop"><template is="dom-if" if="[[item.attributes.icon]]"><iron-icon icon="[[item.attributes.icon]]"></iron-icon></template><template is="dom-if" if="[[!item.attributes.icon]]">[[item.entityDisplay]]</template></paper-tab></template></paper-tabs></div></app-header><iron-pages attr-for-selected="data-view" selected="[[currentView]]" selected-attribute="view-visible"><ha-cards data-view="" show-introduction="[[computeShowIntroduction(currentView, introductionLoaded, states)]]" states="[[states]]" columns="[[_columns]]" hass="[[hass]]" panel-visible="[[panelVisible]]"></ha-cards><template is="dom-repeat" items="[[views]]"><ha-cards data-view$="[[item.entityId]]" show-introduction="[[computeShowIntroduction(currentView, introductionLoaded, states)]]" states="[[states]]" columns="[[_columns]]" hass="[[hass]]" panel-visible="[[panelVisible]]"></ha-cards></template></iron-pages></app-header-layout></template></dom-module><script>Polymer({is:"partial-cards",behaviors:[window.hassBehavior],properties:{hass:{type:Object},narrow:{type:Boolean,value:!1},showMenu:{type:Boolean,value:!1,observer:"handleWindowChange"},panelVisible:{type:Boolean,value:!1},_columns:{type:Number,value:1},canListen:{type:Boolean,bindNuclear:function(e){return[e.voiceGetters.isVoiceSupported,e.configGetters.isComponentLoaded("conversation"),function(e,t){return e&&t}]}},introductionLoaded:{type:Boolean,bindNuclear:function(e){return e.configGetters.isComponentLoaded("introduction")}},locationName:{type:String,bindNuclear:function(e){return e.configGetters.locationName}},currentView:{type:String,bindNuclear:function(e){return[e.viewGetters.currentView,function(e){return e||""}]}},views:{type:Array,bindNuclear:function(e){return[e.viewGetters.views,function(e){return e.valueSeq().sortBy(function(e){return e.attributes.order}).toArray()}]}},states:{type:Object,bindNuclear:function(e){return e.viewGetters.currentViewEntities}}},created:function(){this.handleWindowChange=this.handleWindowChange.bind(this),this.mqls=[300,600,900,1200].map(function(e){var t=window.matchMedia("(min-width: "+e+"px)");return t.addListener(this.handleWindowChange),t}.bind(this))},detached:function(){this.mqls.forEach(function(e){e.removeListener(this.handleWindowChange)})},handleWindowChange:function(){var e=this.mqls.reduce(function(e,t){return e+t.matches},0);this._columns=Math.max(1,e-(!this.narrow&&this.showMenu))},scrollToTop:function(){var e=0,t=this.$.layout.header.scrollTarget,n=function(e,t,n,i){return e/=i,-n*e*(e-2)+t},i=Math.random(),o=200,r=Date.now(),a=t.scrollTop,s=e-a;this._currentAnimationId=i,function c(){var u=Date.now(),l=u-r;l>o?t.scrollTop=e:this._currentAnimationId===i&&(t.scrollTop=n(l,a,s,o),requestAnimationFrame(c.bind(this)))}.call(this)},handleListenClick:function(){this.hass.voiceActions.listen()},handleViewSelected:function(e){var t=e.detail.item.getAttribute("data-entity")||null,n=this.currentView||null;t!==n&&this.async(function(){this.hass.viewActions.selectView(t)}.bind(this),0)},computeTitle:function(e,t){return e.length>0?"Home Assistant":t},computeShowIntroduction:function(e,t,n){return""===e&&(t||0===n.size)}})</script><style is="custom-style">html{font-size:14px;--dark-primary-color:#0288D1;--default-primary-color:#03A9F4;--primary-color:#03A9F4;--light-primary-color:#B3E5FC;--text-primary-color:#ffffff;--accent-color:#FF9800;--primary-background-color:#ffffff;--primary-text-color:#212121;--secondary-text-color:#727272;--disabled-text-color:#bdbdbd;--divider-color:#B6B6B6;--paper-toggle-button-checked-ink-color:#039be5;--paper-toggle-button-checked-button-color:#039be5;--paper-toggle-button-checked-bar-color:#039be5;--paper-slider-knob-color:var(--primary-color);--paper-slider-knob-start-color:var(--primary-color);--paper-slider-pin-color:var(--primary-color);--paper-slider-active-color:var(--primary-color);--paper-slider-secondary-color:var(--light-primary-color);--paper-slider-container-color:var(--divider-color);--google-red-500:#db4437;--google-blue-500:#4285f4;--google-green-500:#0f9d58;--google-yellow-500:#f4b400;--paper-grey-50:#fafafa;--paper-green-400:#66bb6a;--paper-blue-400:#42a5f5;--paper-orange-400:#ffa726;--dark-divider-opacity:0.12;--dark-disabled-opacity:0.38;--dark-secondary-opacity:0.54;--dark-primary-opacity:0.87;--light-divider-opacity:0.12;--light-disabled-opacity:0.3;--light-secondary-opacity:0.7;--light-primary-opacity:1.0}</style><dom-module id="ha-style" assetpath="resources/"><template><style>:host{@apply(--paper-font-body1)}app-header,app-toolbar{background-color:var(--primary-color);font-weight:400;color:#fff}app-toolbar ha-menu-button+[main-title]{margin-left:24px}h1{@apply(--paper-font-title)}</style></template></dom-module><dom-module id="partial-panel-resolver" assetpath="layouts/"><template><style include="iron-flex ha-style">[hidden]{display:none!important}.placeholder{height:100%}.layout{height:calc(100% - 64px)}</style><div hidden$="[[resolved]]" class="placeholder"><app-toolbar><ha-menu-button narrow="[[narrow]]" show-menu="[[showMenu]]"></ha-menu-button></app-toolbar><div class="layout horizontal center-center"><template is="dom-if" if="[[!errorLoading]]"><paper-spinner active=""></paper-spinner></template><template is="dom-if" if="[[errorLoading]]">Error loading panel :(</template></div></div><span id="panel" hidden$="[[!resolved]]"></span></template></dom-module><script>Polymer({is:"partial-panel-resolver",behaviors:[window.hassBehavior],properties:{hass:{type:Object,observer:"updateAttributes"},narrow:{type:Boolean,value:!1,observer:"updateAttributes"},showMenu:{type:Boolean,value:!1,observer:"updateAttributes"},resolved:{type:Boolean,value:!1},errorLoading:{type:Boolean,value:!1},panel:{type:Object,bindNuclear:function(e){return e.navigationGetters.activePanel},observer:"panelChanged"}},panelChanged:function(e){return e?(this.resolved=!1,this.errorLoading=!1,void this.importHref(e.get("url"),function(){window.hassUtil.dynamicContentUpdater(this.$.panel,"ha-panel-"+e.get("component_name"),{hass:this.hass,narrow:this.narrow,showMenu:this.showMenu,panel:e.toJS()}),this.resolved=!0}.bind(this),function(){this.errorLoading=!0}.bind(this),!0)):void(this.$.panel.lastChild&&this.$.panel.removeChild(this.$.panel.lastChild))},updateAttributes:function(){var e=Polymer.dom(this.$.panel).lastChild;e&&(e.hass=this.hass,e.narrow=this.narrow,e.showMenu=this.showMenu)}})</script><dom-module id="paper-toast" assetpath="../bower_components/paper-toast/"><template><style>:host{display:block;position:fixed;background-color:var(--paper-toast-background-color,#323232);color:var(--paper-toast-color,#f1f1f1);min-height:48px;min-width:288px;padding:16px 24px;box-sizing:border-box;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);border-radius:2px;margin:12px;font-size:14px;cursor:default;-webkit-transition:-webkit-transform .3s,opacity .3s;transition:transform .3s,opacity .3s;opacity:0;-webkit-transform:translateY(100px);transform:translateY(100px);@apply(--paper-font-common-base)}:host(.capsule){border-radius:24px}:host(.fit-bottom){width:100%;min-width:0;border-radius:0;margin:0}:host(.paper-toast-open){opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}</style><span id="label">{{text}}</span><content></content></template><script>!function(){var e=null;Polymer({is:"paper-toast",behaviors:[Polymer.IronOverlayBehavior],properties:{fitInto:{type:Object,value:window,observer:"_onFitIntoChanged"},horizontalAlign:{type:String,value:"left"},verticalAlign:{type:String,value:"bottom"},duration:{type:Number,value:3e3},text:{type:String,value:""},noCancelOnOutsideClick:{type:Boolean,value:!0},noAutoFocus:{type:Boolean,value:!0}},listeners:{transitionend:"__onTransitionEnd"},get visible(){return Polymer.Base._warn("`visible` is deprecated, use `opened` instead"),this.opened},get _canAutoClose(){return this.duration>0&&this.duration!==1/0},created:function(){this._autoClose=null,Polymer.IronA11yAnnouncer.requestAvailability()},show:function(e){"string"==typeof e&&(e={text:e});for(var t in e)0===t.indexOf("_")?Polymer.Base._warn('The property "'+t+'" is private and was not set.'):t in this?this[t]=e[t]:Polymer.Base._warn('The property "'+t+'" is not valid.');this.open()},hide:function(){this.close()},__onTransitionEnd:function(e){e&&e.target===this&&"opacity"===e.propertyName&&(this.opened?this._finishRenderOpened():this._finishRenderClosed())},_openedChanged:function(){null!==this._autoClose&&(this.cancelAsync(this._autoClose),this._autoClose=null),this.opened?(e&&e!==this&&e.close(),e=this,this.fire("iron-announce",{text:this.text}),this._canAutoClose&&(this._autoClose=this.async(this.close,this.duration))):e===this&&(e=null),Polymer.IronOverlayBehaviorImpl._openedChanged.apply(this,arguments)},_renderOpened:function(){this.classList.add("paper-toast-open")},_renderClosed:function(){this.classList.remove("paper-toast-open")},_onFitIntoChanged:function(e){this.positionTarget=e}})}()</script></dom-module><dom-module id="notification-manager" assetpath="managers/"><template><style>paper-toast{z-index:1}</style><paper-toast id="toast" text="{{text}}" no-cancel-on-outside-click="[[neg]]"></paper-toast><paper-toast id="connToast" duration="0" text="Connection lost. Reconnecting…" opened="[[!isStreaming]]"></paper-toast></template></dom-module><script>Polymer({is:"notification-manager",behaviors:[window.hassBehavior],properties:{hass:{type:Object},isStreaming:{type:Boolean,bindNuclear:function(t){return t.streamGetters.isStreamingEvents}},neg:{type:Boolean,value:!1},text:{type:String,bindNuclear:function(t){return t.notificationGetters.lastNotificationMessage},observer:"showNotification"},toastClass:{type:String,value:""}},created:function(){this.handleWindowChange=this.handleWindowChange.bind(this),this._mediaq=window.matchMedia("(max-width: 599px)"),this._mediaq.addListener(this.handleWindowChange)},attached:function(){this.handleWindowChange(this._mediaq)},detached:function(){this._mediaq.removeListener(this.handleWindowChange)},handleWindowChange:function(t){this.$.toast.classList.toggle("fit-bottom",t.matches),this.$.connToast.classList.toggle("fit-bottom",t.matches)},showNotification:function(t){t&&this.$.toast.show()}})</script><script>Polymer.PaperDialogBehaviorImpl={hostAttributes:{role:"dialog",tabindex:"-1"},properties:{modal:{type:Boolean,value:!1}},observers:["_modalChanged(modal, _readied)"],listeners:{tap:"_onDialogClick"},ready:function(){this.__prevNoCancelOnOutsideClick=this.noCancelOnOutsideClick,this.__prevNoCancelOnEscKey=this.noCancelOnEscKey,this.__prevWithBackdrop=this.withBackdrop},_modalChanged:function(i,e){e&&(i?(this.__prevNoCancelOnOutsideClick=this.noCancelOnOutsideClick,this.__prevNoCancelOnEscKey=this.noCancelOnEscKey,this.__prevWithBackdrop=this.withBackdrop,this.noCancelOnOutsideClick=!0,this.noCancelOnEscKey=!0,this.withBackdrop=!0):(this.noCancelOnOutsideClick=this.noCancelOnOutsideClick&&this.__prevNoCancelOnOutsideClick,this.noCancelOnEscKey=this.noCancelOnEscKey&&this.__prevNoCancelOnEscKey,this.withBackdrop=this.withBackdrop&&this.__prevWithBackdrop))},_updateClosingReasonConfirmed:function(i){this.closingReason=this.closingReason||{},this.closingReason.confirmed=i},_onDialogClick:function(i){for(var e=Polymer.dom(i).path,o=0;o<e.indexOf(this);o++){var t=e[o];if(t.hasAttribute&&(t.hasAttribute("dialog-dismiss")||t.hasAttribute("dialog-confirm"))){this._updateClosingReasonConfirmed(t.hasAttribute("dialog-confirm")),this.close(),i.stopPropagation();break}}}},Polymer.PaperDialogBehavior=[Polymer.IronOverlayBehavior,Polymer.PaperDialogBehaviorImpl]</script><dom-module id="paper-dialog-shared-styles" assetpath="../bower_components/paper-dialog-behavior/"><template><style>:host{display:block;margin:24px 40px;background:var(--paper-dialog-background-color,--primary-background-color);color:var(--paper-dialog-color,--primary-text-color);@apply(--paper-font-body1);@apply(--shadow-elevation-16dp);@apply(--paper-dialog)}:host>::content>*{margin-top:20px;padding:0 24px}:host>::content>.no-padding{padding:0}:host>::content>:first-child{margin-top:24px}:host>::content>:last-child{margin-bottom:24px}:host>::content h2{position:relative;margin:0;@apply(--paper-font-title);@apply(--paper-dialog-title)}:host>::content .buttons{position:relative;padding:8px 8px 8px 24px;margin:0;color:var(--paper-dialog-button-color,--primary-color);@apply(--layout-horizontal);@apply(--layout-end-justified)}</style></template></dom-module><dom-module id="paper-dialog" assetpath="../bower_components/paper-dialog/"><template><style include="paper-dialog-shared-styles"></style><content></content></template></dom-module><script>!function(){Polymer({is:"paper-dialog",behaviors:[Polymer.PaperDialogBehavior,Polymer.NeonAnimationRunnerBehavior],listeners:{"neon-animation-finish":"_onNeonAnimationFinish"},_renderOpened:function(){this.cancelAnimation(),this.playAnimation("entry")},_renderClosed:function(){this.cancelAnimation(),this.playAnimation("exit")},_onNeonAnimationFinish:function(){this.opened?this._finishRenderOpened():this._finishRenderClosed()}})}()</script><dom-module id="paper-dialog-scrollable" assetpath="../bower_components/paper-dialog-scrollable/"><template><style>:host{display:block;@apply(--layout-relative)}:host(.is-scrolled:not(:first-child))::before{content:'';position:absolute;top:0;left:0;right:0;height:1px;background:var(--divider-color)}:host(.can-scroll:not(.scrolled-to-bottom):not(:last-child))::after{content:'';position:absolute;bottom:0;left:0;right:0;height:1px;background:var(--divider-color)}.scrollable{padding:0 24px;@apply(--layout-scroll);@apply(--paper-dialog-scrollable)}.fit{@apply(--layout-fit)}</style><div id="scrollable" class="scrollable"><content></content></div></template></dom-module><script>Polymer({is:"paper-dialog-scrollable",properties:{dialogElement:{type:Object}},listeners:{"scrollable.scroll":"_scroll"},get scrollTarget(){return this.$.scrollable},ready:function(){this._ensureTarget()},attached:function(){this.classList.add("no-padding"),this._ensureTarget(),requestAnimationFrame(this._scroll.bind(this))},_scroll:function(){this.toggleClass("is-scrolled",this.scrollTarget.scrollTop>0),this.toggleClass("can-scroll",this.scrollTarget.offsetHeight<this.scrollTarget.scrollHeight),this.toggleClass("scrolled-to-bottom",this.scrollTarget.scrollTop+this.scrollTarget.offsetHeight>=this.scrollTarget.scrollHeight)},_ensureTarget:function(){this.dialogElement=this.dialogElement||Polymer.dom(this).parentNode,this.dialogElement&&this.dialogElement.behaviors&&this.dialogElement.behaviors.indexOf(Polymer.PaperDialogBehaviorImpl)>=0?(this.dialogElement.sizingTarget=this.scrollTarget,this.scrollTarget.classList.remove("fit")):this.dialogElement&&this.scrollTarget.classList.add("fit")}})</script><script>!function(){"use strict";Polymer.IronJsonpLibraryBehavior={properties:{libraryLoaded:{type:Boolean,value:!1,notify:!0,readOnly:!0},libraryErrorMessage:{type:String,value:null,notify:!0,readOnly:!0}},observers:["_libraryUrlChanged(libraryUrl)"],_libraryUrlChanged:function(r){this._isReady&&this.libraryUrl&&this._loadLibrary()},_libraryLoadCallback:function(r,i){r?(console.warn("Library load failed:",r.message),this._setLibraryErrorMessage(r.message)):(this._setLibraryErrorMessage(null),this._setLibraryLoaded(!0),this.notifyEvent&&this.fire(this.notifyEvent,i))},_loadLibrary:function(){r.require(this.libraryUrl,this._libraryLoadCallback.bind(this),this.callbackName)},ready:function(){this._isReady=!0,this.libraryUrl&&this._loadLibrary()}};var r={apiMap:{},require:function(r,t,e){var a=this.nameFromUrl(r);this.apiMap[a]||(this.apiMap[a]=new i(a,r,e)),this.apiMap[a].requestNotify(t)},nameFromUrl:function(r){return r.replace(/[\:\/\%\?\&\.\=\-\,]/g,"_")+"_api"}},i=function(r,i,t){if(this.notifiers=[],!t){if(!(i.indexOf(this.callbackMacro)>=0))return void(this.error=new Error("IronJsonpLibraryBehavior a %%callback%% parameter is required in libraryUrl"));t=r+"_loaded",i=i.replace(this.callbackMacro,t)}this.callbackName=t,window[this.callbackName]=this.success.bind(this),this.addScript(i)};i.prototype={callbackMacro:"%%callback%%",loaded:!1,addScript:function(r){var i=document.createElement("script");i.src=r,i.onerror=this.handleError.bind(this);var t=document.querySelector("script")||document.body;t.parentNode.insertBefore(i,t),this.script=i},removeScript:function(){this.script.parentNode&&this.script.parentNode.removeChild(this.script),this.script=null},handleError:function(r){this.error=new Error("Library failed to load"),this.notifyAll(),this.cleanup()},success:function(){this.loaded=!0,this.result=Array.prototype.slice.call(arguments),this.notifyAll(),this.cleanup()},cleanup:function(){delete window[this.callbackName]},notifyAll:function(){this.notifiers.forEach(function(r){r(this.error,this.result)}.bind(this)),this.notifiers=[]},requestNotify:function(r){this.loaded||this.error?r(this.error,this.result):this.notifiers.push(r)}}}()</script><script>Polymer({is:"iron-jsonp-library",behaviors:[Polymer.IronJsonpLibraryBehavior],properties:{libraryUrl:String,callbackName:String,notifyEvent:String}})</script><script>Polymer({is:"google-legacy-loader",behaviors:[Polymer.IronJsonpLibraryBehavior],properties:{libraryUrl:{type:String,value:"https://www.google.com/jsapi?callback=%%callback%%"},notifyEvent:{type:String,value:"api-load"}},get api(){return google}})</script><style>div.charts-tooltip{z-index:200!important}</style><script>Polymer({is:"state-history-chart-timeline",properties:{data:{type:Object,observer:"dataChanged"},isAttached:{type:Boolean,value:!1,observer:"dataChanged"}},created:function(){this.style.display="block"},attached:function(){this.isAttached=!0},dataChanged:function(){this.drawChart()},drawChart:function(){function t(t,e,n,i){var d=e.replace(/_/g," ");a.addRow([t,d,n,i])}var e,a,n,i,d,l=Polymer.dom(this),o=this.data;if(this.isAttached){for(;l.node.lastChild;)l.node.removeChild(l.node.lastChild);o&&0!==o.length&&(e=new window.google.visualization.Timeline(this),a=new window.google.visualization.DataTable,a.addColumn({type:"string",id:"Entity"}),a.addColumn({type:"string",id:"State"}),a.addColumn({type:"date",id:"Start"}),a.addColumn({type:"date",id:"End"}),n=new Date(o.reduce(function(t,e){return Math.min(t,e[0].lastChangedAsDate)},new Date)),i=new Date(n),i.setDate(i.getDate()+1),i>new Date&&(i=new Date),d=0,o.forEach(function(e){var a,n,l=null,o=null;0!==e.length&&(a=e[0].entityDisplay,e.forEach(function(e){null!==l&&e.state!==l?(n=e.lastChangedAsDate,t(a,l,o,n),l=e.state,o=n):null===l&&(l=e.state,o=e.lastChangedAsDate)}),t(a,l,o,i),d++)}),e.draw(a,{height:55+42*d,timeline:{showRowLabels:o.length>1},hAxis:{format:"H:mm"}}))}}})</script><script>!function(){"use strict";function t(t,e){var a,r=[];for(a=t;a<e;a++)r.push(a);return r}function e(t){var e=parseFloat(t);return!isNaN(e)&&isFinite(e)?e:null}Polymer({is:"state-history-chart-line",properties:{data:{type:Object,observer:"dataChanged"},unit:{type:String},isSingleDevice:{type:Boolean,value:!1},isAttached:{type:Boolean,value:!1,observer:"dataChanged"},chartEngine:{type:Object}},created:function(){this.style.display="block"},attached:function(){this.isAttached=!0},dataChanged:function(){this.drawChart()},drawChart:function(){var a,r,n,i,u,o=this.unit,s=this.data;this.isAttached&&(this.chartEngine||(this.chartEngine=new window.google.visualization.LineChart(this)),0!==s.length&&(a={legend:{position:"top"},interpolateNulls:!0,titlePosition:"none",vAxes:{0:{title:o}},hAxis:{format:"H:mm"},chartArea:{left:"60",width:"95%"},explorer:{actions:["dragToZoom","rightClickToReset","dragToPan"],keepInBounds:!0,axis:"horizontal",maxZoomIn:.1}},this.isSingleDevice&&(a.legend.position="none",a.vAxes[0].title=null,a.chartArea.left=40,a.chartArea.height="80%",a.chartArea.top=5,a.enableInteractivity=!1),r=new Date(Math.min.apply(null,s.map(function(t){return t[0].lastChangedAsDate}))),n=new Date(r),n.setDate(n.getDate()+1),n>new Date&&(n=new Date),i=s.map(function(t){function a(t,e){r&&e&&c.push([t[0]].concat(r.slice(1).map(function(t,a){return e[a]?t:null}))),c.push(t),r=t}var r,i,u,o,s=t[t.length-1],l=s.domain,d=s.entityDisplay,c=[],h=new window.google.visualization.DataTable;return h.addColumn({type:"datetime",id:"Time"}),"thermostat"===l?(i=t.reduce(function(t,e){return t||e.attributes.target_temp_high!==e.attributes.target_temp_low},!1),h.addColumn("number",d+" current temperature"),i?(h.addColumn("number",d+" target temperature high"),h.addColumn("number",d+" target temperature low"),o=[!1,!0,!0],u=function(t){var r=e(t.attributes.current_temperature),n=e(t.attributes.target_temp_high),i=e(t.attributes.target_temp_low);a([t.lastUpdatedAsDate,r,n,i],o)}):(h.addColumn("number",d+" target temperature"),o=[!1,!0],u=function(t){var r=e(t.attributes.current_temperature),n=e(t.attributes.temperature);a([t.lastUpdatedAsDate,r,n],o)}),t.forEach(u)):"climate"===l?(i=t.reduce(function(t,e){return t||e.attributes.target_temp_high!==e.attributes.target_temp_low},!1),h.addColumn("number",d+" current temperature"),i?(h.addColumn("number",d+" target temperature high"),h.addColumn("number",d+" target temperature low"),o=[!1,!0,!0],u=function(t){var r=e(t.attributes.current_temperature),n=e(t.attributes.target_temp_high),i=e(t.attributes.target_temp_low);a([t.lastUpdatedAsDate,r,n,i],o)}):(h.addColumn("number",d+" target temperature"),o=[!1,!0],u=function(t){var r=e(t.attributes.current_temperature),n=e(t.attributes.temperature);a([t.lastUpdatedAsDate,r,n],o)}),t.forEach(u)):(h.addColumn("number",d),o="sensor"!==l&&[!0],t.forEach(function(t){var r=e(t.state);a([t.lastChangedAsDate,r],o)})),a([n].concat(r.slice(1)),!1),h.addRows(c),h}),u=1===i.length?i[0]:i.slice(1).reduce(function(e,a){return window.google.visualization.data.join(e,a,"full",[[0,0]],t(1,e.getNumberOfColumns()),t(1,a.getNumberOfColumns()))},i[0]),this.chartEngine.draw(u,a)))}})}()</script><dom-module id="state-history-charts" assetpath="components/"><template><style>:host{display:block}.loading-container{text-align:center;padding:8px}.loading{height:0;overflow:hidden}</style><google-legacy-loader on-api-load="googleApiLoaded"></google-legacy-loader><div hidden$="[[!isLoading]]" class="loading-container"><paper-spinner active="" alt="Updating history data"></paper-spinner></div><div class$="[[computeContentClasses(isLoading)]]"><template is="dom-if" if="[[computeIsEmpty(stateHistory)]]">No state history found.</template><state-history-chart-timeline data="[[groupedStateHistory.timeline]]" is-single-device="[[isSingleDevice]]"></state-history-chart-timeline><template is="dom-repeat" items="[[groupedStateHistory.line]]"><state-history-chart-line unit="[[item.unit]]" data="[[item.data]]" is-single-device="[[isSingleDevice]]"></state-history-chart-line></template></div></template></dom-module><script>Polymer({is:"state-history-charts",properties:{stateHistory:{type:Object},isLoadingData:{type:Boolean,value:!1},apiLoaded:{type:Boolean,value:!1},isLoading:{type:Boolean,computed:"computeIsLoading(isLoadingData, apiLoaded)"},groupedStateHistory:{type:Object,computed:"computeGroupedStateHistory(isLoading, stateHistory)"},isSingleDevice:{type:Boolean,computed:"computeIsSingleDevice(stateHistory)"}},computeIsSingleDevice:function(t){return t&&1===t.size},computeGroupedStateHistory:function(t,e){var i,o={},n=[];return t||!e?{line:[],timeline:[]}:(e.forEach(function(t){var e,i;t&&0!==t.size&&(e=t.find(function(t){return"unit_of_measurement"in t.attributes}),i=!!e&&e.attributes.unit_of_measurement,i?i in o?o[i].push(t.toArray()):o[i]=[t.toArray()]:n.push(t.toArray()))}),n=n.length>0&&n,i=Object.keys(o).map(function(t){return{unit:t,data:o[t]}}),{line:i,timeline:n})},googleApiLoaded:function(){window.google.load("visualization","1",{packages:["timeline","corechart"],callback:function(){this.apiLoaded=!0}.bind(this)})},computeContentClasses:function(t){return t?"loading":""},computeIsLoading:function(t,e){return t||!e},computeIsEmpty:function(t){return t&&0===t.size}})</script><dom-module id="more-info-automation" assetpath="more-infos/"><template><style>paper-button{color:var(--default-primary-color);font-weight:500;top:3px;height:37px}</style><p>Last triggered:<ha-relative-time datetime="[[stateObj.attributes.last_triggered]]"></ha-relative-time></p><paper-button on-tap="handleTriggerTapped">TRIGGER</paper-button></template></dom-module><script>Polymer({is:"more-info-automation",properties:{hass:{type:Object},stateObj:{type:Object}},handleTriggerTapped:function(){this.hass.serviceActions.callService("automation","trigger",{entity_id:this.stateObj.entityId})}})</script><dom-module id="paper-range-slider" assetpath="../bower_components/paper-range-slider/"><template><style>:host{--paper-range-slider-width:200px;@apply(--layout);@apply(--layout-justified);@apply(--layout-center);--paper-range-slider-lower-color:var(--paper-grey-400);--paper-range-slider-active-color:var(--primary-color);--paper-range-slider-higher-color:var(--paper-grey-400);--paper-range-slider-knob-color:var(--primary-color);--paper-range-slider-pin-color:var(--primary-color);--paper-range-slider-pin-start-color:var(--paper-grey-400);--paper-range-slider-knob-start-color:transparent;--paper-range-slider-knob-start-border-color:var(--paper-grey-400)}#sliderOuterDiv_0{display:inline-block;width:var(--paper-range-slider-width)}#sliderOuterDiv_1{position:relative;height:calc(30px + var(--paper-single-range-slider-height,2px));margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sliderKnobMinMax{position:absolute;left:0;top:0;margin-left:calc(-15px - var(--paper-single-range-slider-height,2px)/ 2);width:calc(30px + var(--paper-single-range-slider-height,2px));height:calc(30px + var(--paper-single-range-slider-height,2px))}.divSpanWidth{position:absolute;width:100%;display:block;top:0}#sliderMax{--paper-single-range-slider-bar-color:transparent;--paper-single-range-slider-knob-color:var(--paper-range-slider-knob-color);--paper-single-range-slider-pin-color:var(--paper-range-slider-pin-color);--paper-single-range-slider-active-color:var(--paper-range-slider-active-color);--paper-single-range-slider-secondary-color:var(--paper-range-slider-higher-color);--paper-single-range-slider-pin-start-color:var(--paper-range-slider-pin-start-color);--paper-single-range-slider-knob-start-color:var(--paper-range-slider-knob-start-color);--paper-single-range-slider-knob-start-border-color:var(--paper-range-slider-knob-start-border-color)}#sliderMin{--paper-single-range-slider-active-color:var(--paper-range-slider-lower-color);--paper-single-range-slider-secondary-color:transparent;--paper-single-range-slider-knob-color:var(--paper-range-slider-knob-color);--paper-single-range-slider-pin-color:var(--paper-range-slider-pin-color);--paper-single-range-slider-pin-start-color:var(--paper-range-slider-pin-start-color);--paper-single-range-slider-knob-start-color:var(--paper-range-slider-knob-start-color);--paper-single-range-slider-knob-start-border-color:var(--paper-range-slider-knob-start-border-color)}</style><div id="sliderOuterDiv_0" style=""><div id="sliderOuterDiv_1"><div id="backDiv" class="divSpanWidth" on-down="_backDivDown" on-tap="_backDivTap" on-up="_backDivUp" on-track="_backDivOnTrack" on-transitionend="_backDivTransEnd"><div id="backDivInner_0" style="line-height:200%"><br></div></div><div id="sliderKnobMin" class="sliderKnobMinMax" on-down="_backDivDown" on-up="_backDivUp" on-track="_sliderKnobMinOnTrack"></div><div id="sliderKnobMax" class="sliderKnobMinMax" on-down="_backDivDown" on-up="_backDivUp" on-track="_sliderKnobMaxOnTrack"></div><div class="divSpanWidth" style="pointer-events:none"><paper-single-range-slider id="sliderMax" disabled$="[[disabled]]" on-down="_sliderMaxDown" on-up="_sliderMaxUp" step="[[step]]" min="[[min]]" max="[[max]]" value="[[valueMax]]" secondary-progress="[[max]]" style="width:100%"></paper-single-range-slider></div><div class="divSpanWidth" style="pointer-events:none"><paper-single-range-slider id="sliderMin" disabled$="[[disabled]]" on-down="_sliderMinDown" on-up="_sliderMinUp" noink="" step="[[step]]" min="[[min]]" max="[[max]]" value="[[valueMin]]" style="width:100%"></paper-single-range-slider></div><div id="backDivInner_1" style="line-height:100%"><br></div></div></div></template><script>Polymer({is:"paper-range-slider",behaviors:[Polymer.IronRangeBehavior],properties:{sliderWidth:{type:String,value:"",notify:!0,reflectToAttribute:!0},style:{type:String,value:"",notify:!0,reflectToAttribute:!0},min:{type:Number,value:0,notify:!0,reflectToAttribute:!0},max:{type:Number,value:100,notify:!0,reflectToAttribute:!0},valueMin:{type:Number,value:0,notify:!0,reflectToAttribute:!0},valueMax:{type:Number,value:100,notify:!0,reflectToAttribute:!0},step:{type:Number,value:1,notify:!0,reflectToAttribute:!0},valueDiffMin:{type:Number,value:0,notify:!0,reflectToAttribute:!0},valueDiffMax:{type:Number,value:0,notify:!0,reflectToAttribute:!0},alwaysShowPin:{type:Boolean,value:!1,notify:!0},pin:{type:Boolean,value:!1,notify:!0},snaps:{type:Boolean,value:!1,notify:!0},disabled:{type:Boolean,value:!1,notify:!0},singleSlider:{type:Boolean,value:!1,notify:!0},transDuration:{type:Number,value:250},tapValueExtend:{type:Boolean,value:!0,notify:!0},tapValueReduce:{type:Boolean,value:!1,notify:!0},tapValueMove:{type:Boolean,value:!1,notify:!0}},ready:function(){function i(i){return void 0!=i&&null!=i}i(this._nInitTries)||(this._nInitTries=0);var t=this.$$("#sliderMax").$$("#sliderContainer");if(i(t)&&(t=t.offsetWidth>0),i(t)&&(t=this.$$("#sliderMin").$$("#sliderContainer")),i(t)&&(t=t.offsetWidth>0),i(t))this._renderedReady();else{if(this._nInitTries<1e3){var e=this;setTimeout(function(){e.ready()},10)}else console.error("could not properly initialize the underlying paper-single-range-slider elements ...");this._nInitTries++}},_renderedReady:function(){this.init(),this._setPadding();var i=this;this.$$("#sliderMin").addEventListener("immediate-value-change",function(t){i._setValueMinMax(i._getValuesMinMax(this.immediateValue,null)),i.$.sliderMin._expandKnob(),i.$.sliderMax._expandKnob()}),this.$$("#sliderMax").addEventListener("immediate-value-change",function(t){i._setValueMinMax(i._getValuesMinMax(null,this.immediateValue))}),this.$$("#sliderMin").addEventListener("change",function(t){i._setValueMinMax(i._getValuesMinMax(this.immediateValue,null)),i.alwaysShowPin&&i.$.sliderMin._expandKnob()}),this.$$("#sliderMax").addEventListener("change",function(t){i._setValueMinMax(i._getValuesMinMax(null,this.immediateValue)),i.alwaysShowPin&&i.$.sliderMax._expandKnob()})},_setPadding:function(){var i=document.createElement("div");i.setAttribute("style","position:absolute; top:0px; opacity:0;"),i.innerHTML="invisibleText",document.body.insertBefore(i,document.body.children[0]);var t=i.offsetHeight/2;this.style.paddingTop=t+"px",this.style.paddingBottom=t+"px",i.parentNode.removeChild(i)},_setValueDiff:function(){this._valueDiffMax=Math.max(this.valueDiffMax,0),this._valueDiffMin=Math.max(this.valueDiffMin,0)},_getValuesMinMax:function(i,t){var e=null!=i&&i>=this.min&&i<=this.max,s=null!=t&&t>=this.min&&t<=this.max;if(!e&&!s)return[this.valueMin,this.valueMax];var n=e?i:this.valueMin,a=s?t:this.valueMax;n=Math.min(Math.max(n,this.min),this.max),a=Math.min(Math.max(a,this.min),this.max);var l=a-n;return e?l<this._valueDiffMin?(a=Math.min(this.max,n+this._valueDiffMin),l=a-n,l<this._valueDiffMin&&(n=a-this._valueDiffMin)):l>this._valueDiffMax&&this._valueDiffMax>0&&(a=n+this._valueDiffMax):l<this._valueDiffMin?(n=Math.max(this.min,a-this._valueDiffMin),l=a-n,l<this._valueDiffMin&&(a=n+this._valueDiffMin)):l>this._valueDiffMax&&this._valueDiffMax>0&&(n=a-this._valueDiffMax),[n,a]},_setValueMin:function(i){i=Math.max(i,this.min),this.$$("#sliderMin").value=i,this.valueMin=i},_setValueMax:function(i){i=Math.min(i,this.max),this.$$("#sliderMax").value=i,this.valueMax=i},_setValueMinMax:function(i){this._setValueMin(i[0]),this._setValueMax(i[1]),this._updateSliderKnobMinMax(),this.updateValues()},_setValues:function(i,t){null!=i&&(i<this.min||i>this.max)&&(i=null),null!=t&&(t<this.min||t>this.max)&&(t=null),null!=i&&null!=t&&(i=Math.min(i,t)),this._setValueMinMax(this._getValuesMinMax(i,t))},_updateSliderKnobMinMax:function(){var i=this.$$("#sliderMax").$$("#sliderContainer").offsetWidth,t=i*(this.valueMin-this.min)/(this.max-this.min)+.5*this.$$("#sliderKnobMin").offsetWidth,e=i*(this.valueMax-this.min)/(this.max-this.min)+.5*this.$$("#sliderKnobMax").offsetWidth;this.$$("#sliderKnobMin").style.left=t+"px",this.$$("#sliderKnobMax").style.left=e+"px"},_backDivOnTrack:function(i){switch(i.stopPropagation(),i.detail.state){case"start":this._backDivTrackStart(i);break;case"track":this._backDivTrackDuring(i);break;case"end":this._backDivTrackEnd()}},_backDivTrackStart:function(i){},_backDivTrackDuring:function(i){this._x1_Min=this._x0_Min+i.detail.dx;var t=this._calcStep(this._getRatioPos(this.$$("#sliderMin"),this._x1_Min/this._xWidth));this._x1_Max=this._x0_Max+i.detail.dx;var e=this._calcStep(this._getRatioPos(this.$$("#sliderMax"),this._x1_Max/this._xWidth));t>=this.min&&e<=this.max&&this._setValuesWithCurrentDiff(t,e,!1)},_setValuesWithCurrentDiff:function(i,t,e){var s=this._valueDiffMin,n=this._valueDiffMax;this._valueDiffMin=this.valueMax-this.valueMin,this._valueDiffMax=this.valueMax-this.valueMin,e?this.setValues(i,t):this._setValues(i,t),this._valueDiffMin=s,this._valueDiffMax=n},_backDivTrackEnd:function(){},_sliderKnobMinOnTrack:function(i){this._x1_Min=this._x0_Min+i.detail.dx;var t=this._calcStep(this._getRatioPos(this.$$("#sliderMin"),this._x1_Min/this._xWidth));this._setValues(t,null)},_sliderKnobMaxOnTrack:function(i){this._x1_Max=this._x0_Max+i.detail.dx;var t=this._calcStep(this._getRatioPos(this.$$("#sliderMax"),this._x1_Max/this._xWidth));this._setValues(null,t)},_sliderMinDown:function(){this.$$("#sliderMax")._expandKnob()},_sliderMaxDown:function(i){this.singleSlider?this._setValues(null,this._getEventValue(i)):this.$$("#sliderMin")._expandKnob()},_sliderMinUp:function(){this.alwaysShowPin?this.$$("#sliderMin")._expandKnob():this.$$("#sliderMax")._resetKnob()},_sliderMaxUp:function(){this.alwaysShowPin?this.$$("#sliderMax")._expandKnob():(this.$$("#sliderMin")._resetKnob(),this.singleSlider&&this.$$("#sliderMax")._resetKnob())},_getEventValue:function(i){var t=this.$$("#sliderMax").$$("#sliderContainer").offsetWidth,e=this.$$("#sliderMax").$$("#sliderContainer").getBoundingClientRect(),s=(i.detail.x-e.left)/t,n=this.min+s*(this.max-this.min);return n},_backDivTap:function(i){this._setValueNow=function(i,t){this.tapValueMove?this._setValuesWithCurrentDiff(i,t,!0):this.setValues(i,t)};var t=this._getEventValue(i);if(t>this.valueMin&&t<this.valueMax){if(this.tapValueReduce){var e=t<this.valueMin+(this.valueMax-this.valueMin)/2;e?this._setValueNow(t,null):this._setValueNow(null,t)}}else(this.tapValueExtend||this.tapValueMove)&&(t<this.valueMin&&this._setValueNow(t,null),t>this.valueMax&&this._setValueNow(null,t))},_backDivDown:function(i){this._sliderMinDown(),this._sliderMaxDown(),this._xWidth=this.$$("#sliderMin").$$("#sliderBar").offsetWidth,this._x0_Min=this.$$("#sliderMin").ratio*this._xWidth,this._x0_Max=this.$$("#sliderMax").ratio*this._xWidth},_backDivUp:function(){this._sliderMinUp(),this._sliderMaxUp()},_backDivTransEnd:function(i){},_getRatioPos:function(i,t){return Math.max(i.min,Math.min(i.max,(i.max-i.min)*t+i.min))},init:function(){this.setSingleSlider(this.singleSlider),this.setDisabled(this.disabled),this.alwaysShowPin&&(this.pin=!0),this.$$("#sliderMin").pin=this.pin,this.$$("#sliderMax").pin=this.pin,this.$$("#sliderMin").snaps=this.snaps,this.$$("#sliderMax").snaps=this.snaps,""!=this.sliderWidth&&(this.customStyle["--paper-range-slider-width"]=this.sliderWidth,this.updateStyles()),this.$$("#sliderMin").$$("#sliderBar").$$("#progressContainer").style.background="transparent",this._prevUpdateValues=[this.min,this.max],this._setValueDiff(),this._setValueMinMax(this._getValuesMinMax(this.valueMin,this.valueMax)),this.alwaysShowPin&&(this.$$("#sliderMin")._expandKnob(),this.$$("#sliderMax")._expandKnob())},setValues:function(i,t){this.$$("#sliderMin")._setTransiting(!0),this.$$("#sliderMax")._setTransiting(!0),this._setValues(i,t);var e=this;setTimeout(function(){e.$.sliderMin._setTransiting(!1),e.$.sliderMax._setTransiting(!1)},e.transDuration)},updateValues:function(){this._prevUpdateValues[0]==this.valueMin&&this._prevUpdateValues[1]==this.valueMax||(this._prevUpdateValues=[this.valueMin,this.valueMax],this.async(function(){this.fire("updateValues")}))},setMin:function(i){this.max<i&&(this.max=i),this.min=i,this._prevUpdateValues=[this.min,this.max],this.valueMin<this.min?this._setValues(this.min,null):this._updateSliderKnobMinMax()},setMax:function(i){this.min>i&&(this.min=i),this.max=i,this._prevUpdateValues=[this.min,this.max],this.valueMax>this.max?this._setValues(null,this.max):this._updateSliderKnobMinMax()},setStep:function(i){this.step=i},setValueDiffMin:function(i){this._valueDiffMin=i},setValueDiffMax:function(i){this._valueDiffMax=i},setTapValueExtend:function(i){this.tapValueExtend=i},setTapValueReduce:function(i){this.tapValueReduce=i},setTapValueMove:function(i){this.tapValueMove=i},setDisabled:function(i){this.disabled=i;var t=i?"none":"auto";this.$$("#sliderMax").$$("#sliderKnobInner").style.pointerEvents=t,this.$$("#sliderMin").$$("#sliderKnobInner").style.pointerEvents=t,this.$$("#sliderOuterDiv_1").style.pointerEvents=t,this.$$("#sliderKnobMin").style.pointerEvents=t,this.$$("#sliderKnobMax").style.pointerEvents=t},setSingleSlider:function(i){this.singleSlider=i,i?(this.$$("#backDiv").style.display="none",this.$$("#sliderMax").style.pointerEvents="auto",this.$$("#sliderMax").style.display="",this.$$("#sliderMin").style.display="none",this.$$("#sliderKnobMin").style.pointerEvents="none",this.$$("#sliderKnobMax").style.pointerEvents="none"):(this.$$("#backDiv").style.display="block",this.$$("#sliderMax").style.pointerEvents="none",this.$$("#sliderMax").style.display="",this.$$("#sliderMin").style.display="",this.$$("#sliderKnobMin").style.pointerEvents="auto",this.$$("#sliderKnobMax").style.pointerEvents="auto"),this.$$("#sliderMax").$$("#sliderContainer").style.pointerEvents=this.singleSlider?"auto":"none",this.$$("#sliderMin").$$("#sliderContainer").style.pointerEvents="none"}})</script></dom-module><dom-module id="paper-single-range-slider" assetpath="../bower_components/paper-range-slider/"><template strip-whitespace=""><style>:host{@apply(--layout);@apply(--layout-justified);@apply(--layout-center);width:200px;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;--paper-progress-active-color:var(--paper-single-range-slider-active-color, --google-blue-700);--paper-progress-secondary-color:var(--paper-single-range-slider-secondary-color, --google-blue-300);--paper-progress-disabled-active-color:var(--paper-single-range-slider-disabled-active-color, --paper-grey-400);--paper-progress-disabled-secondary-color:var(--paper-single-range-slider-disabled-secondary-color, --paper-grey-400)}:host(:focus){outline:0}#sliderContainer{position:relative;width:100%;height:calc(30px + var(--paper-single-range-slider-height,2px));margin-left:calc(15px + var(--paper-single-range-slider-height,2px)/ 2);margin-right:calc(15px + var(--paper-single-range-slider-height,2px)/ 2)}#sliderContainer:focus{outline:0}#sliderContainer.editable{margin-top:12px;margin-bottom:12px}.bar-container{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.ring>.bar-container{left:calc(5px + var(--paper-single-range-slider-height,2px)/ 2);transition:left .18s ease}.ring.expand.dragging>.bar-container{transition:none}.ring.expand:not(.pin)>.bar-container{left:calc(8px + var(--paper-single-range-slider-height,2px)/ 2)}#sliderBar{padding:15px 0;width:100%;background-color:var(--paper-single-range-slider-bar-color,transparent);--paper-progress-container-color:var(--paper-single-range-slider-container-color, --paper-grey-400);--paper-progress-height:var(--paper-single-range-slider-height, 2px)}.slider-markers{position:absolute;top:calc(14px + var(--paper-single-range-slider-height,2px)/ 2);height:var(--paper-single-range-slider-height,2px);left:0;right:-1px;box-sizing:border-box;pointer-events:none;@apply(--layout-horizontal)}.slider-marker{@apply(--layout-flex)}.slider-marker::after,.slider-markers::after{content:"";display:block;margin-left:-1px;width:2px;height:2px;border-radius:50%;background-color:#000}#sliderKnob{position:absolute;left:0;top:0;margin-left:calc(-15px - var(--paper-single-range-slider-height,2px)/ 2);width:calc(30px + var(--paper-single-range-slider-height,2px));height:calc(30px + var(--paper-single-range-slider-height,2px))}.transiting>#sliderKnob{transition:left 80ms ease}#sliderKnob:focus{outline:0}#sliderKnob.dragging{transition:none}.snaps>#sliderKnob.dragging{transition:-webkit-transform 80ms ease;transition:transform 80ms ease}#sliderKnobInner{margin:10px;width:calc(100% - 20px);height:calc(100% - 20px);background-color:var(--paper-single-range-slider-knob-color,--google-blue-700);border:2px solid var(--paper-single-range-slider-knob-color,--google-blue-700);border-radius:50%;-moz-box-sizing:border-box;box-sizing:border-box;transition-property:-webkit-transform,background-color,border;transition-property:transform,background-color,border;transition-duration:.18s;transition-timing-function:ease}.expand:not(.pin)>#sliderKnob>#sliderKnobInner{-webkit-transform:scale(1.5);transform:scale(1.5)}.ring>#sliderKnob>#sliderKnobInner{background-color:var(--paper-single-range-slider-knob-start-color,transparent);border:2px solid var(--paper-single-range-slider-knob-start-border-color,--paper-grey-400)}#sliderKnobInner::before{background-color:var(--paper-single-range-slider-pin-color,--google-blue-700)}.pin>#sliderKnob>#sliderKnobInner::before{content:"";position:absolute;top:0;left:50%;margin-left:-13px;width:26px;height:26px;border-radius:50% 50% 50% 0;-webkit-transform:rotate(-45deg) scale(0) translate(0);transform:rotate(-45deg) scale(0) translate(0)}#sliderKnobInner::after,#sliderKnobInner::before{transition:-webkit-transform .18s ease,background-color .18s ease;transition:transform .18s ease,background-color .18s ease}.pin.ring>#sliderKnob>#sliderKnobInner::before{background-color:var(--paper-single-range-slider-pin-start-color,--paper-grey-400)}.pin.expand>#sliderKnob>#sliderKnobInner::before{-webkit-transform:rotate(-45deg) scale(1) translate(17px,-17px);transform:rotate(-45deg) scale(1) translate(17px,-17px)}.pin>#sliderKnob>#sliderKnobInner::after{content:attr(value);position:absolute;top:0;left:50%;margin-left:-16px;width:32px;height:26px;text-align:center;color:var(--paper-single-range-slider-font-color,#fff);font-size:10px;-webkit-transform:scale(0) translate(0);transform:scale(0) translate(0)}.pin.expand>#sliderKnob>#sliderKnobInner::after{-webkit-transform:scale(1) translate(0,-17px);transform:scale(1) translate(0,-17px)}.slider-input{width:50px;overflow:hidden;--paper-input-container-input:{text-align:center};@apply(--paper-single-range-slider-input)}#sliderContainer.disabled{pointer-events:none}.disabled>#sliderKnob>#sliderKnobInner{background-color:var(--paper-single-range-slider-disabled-knob-color,--paper-grey-400);border:2px solid var(--paper-single-range-slider-disabled-knob-color,--paper-grey-400);-webkit-transform:scale3d(.75,.75,1);transform:scale3d(.75,.75,1)}.disabled.ring>#sliderKnob>#sliderKnobInner{background-color:var(--paper-single-range-slider-knob-start-color,transparent);border:2px solid var(--paper-single-range-slider-knob-start-border-color,--paper-grey-400)}paper-ripple{color:var(--paper-single-range-slider-knob-color,--google-blue-700)}</style><div id="sliderContainer" class$="[[_getClassNames(disabled, pin, snaps, immediateValue, min, expand, dragging, transiting, editable)]]"><div class="bar-container"><paper-progress disabled$="[[disabled]]" id="sliderBar" aria-hidden="true" min="[[min]]" max="[[max]]" step="[[step]]" value="[[immediateValue]]" secondary-progress="[[secondaryProgress]]" on-down="_bardown" on-up="_resetKnob" on-track="_onTrack"></paper-progress></div><template is="dom-if" if="[[snaps]]"><div class="slider-markers"><template is="dom-repeat" items="[[markers]]"><div class="slider-marker"></div></template></div></template><div id="sliderKnob" on-down="_knobdown" on-up="_resetKnob" on-track="_onTrack" on-transitionend="_knobTransitionEnd"><div id="sliderKnobInner" value$="[[immediateValue]]"></div></div></div><template is="dom-if" if="[[editable]]"><paper-input id="input" type="number" step="[[step]]" min="[[min]]" max="[[max]]" class="slider-input" disabled$="[[disabled]]" value="[[immediateValue]]" on-change="_changeValue" on-keydown="_inputKeyDown" no-label-float=""></paper-input></template></template><script>Polymer({is:"paper-single-range-slider",behaviors:[Polymer.IronA11yKeysBehavior,Polymer.IronFormElementBehavior,Polymer.PaperInkyFocusBehavior,Polymer.IronRangeBehavior],properties:{snaps:{type:Boolean,value:!1,notify:!0},pin:{type:Boolean,value:!1,notify:!0},secondaryProgress:{type:Number,value:0,notify:!0,observer:"_secondaryProgressChanged"},editable:{type:Boolean,value:!1},immediateValue:{type:Number,value:0,readOnly:!0,notify:!0},maxMarkers:{type:Number,value:0,notify:!0},expand:{type:Boolean,value:!1,readOnly:!0},dragging:{type:Boolean,value:!1,readOnly:!0},transiting:{type:Boolean,value:!1,readOnly:!0},markers:{type:Array,readOnly:!0,value:[]}},observers:["_updateKnob(value, min, max, snaps, step)","_valueChanged(value)","_immediateValueChanged(immediateValue)","_updateMarkers(maxMarkers, min, max, snaps)"],hostAttributes:{role:"slider",tabindex:0},keyBindings:{"left down pagedown home":"_decrementKey","right up pageup end":"_incrementKey"},increment:function(){this.value=this._clampValue(this.value+this.step)},decrement:function(){this.value=this._clampValue(this.value-this.step)},_updateKnob:function(t,e,i,s,a){this.setAttribute("aria-valuemin",e),this.setAttribute("aria-valuemax",i),this.setAttribute("aria-valuenow",t),this._positionKnob(this._calcRatio(t))},_valueChanged:function(){this.fire("value-change")},_immediateValueChanged:function(){this.dragging?this.fire("immediate-value-change"):this.value=this.immediateValue},_secondaryProgressChanged:function(){this.secondaryProgress=this._clampValue(this.secondaryProgress)},_expandKnob:function(){this._setExpand(!0)},_resetKnob:function(){this.cancelDebouncer("expandKnob"),this._setExpand(!1)},_positionKnob:function(t){this._setImmediateValue(this._calcStep(this._calcKnobPosition(t))),this._setRatio(this._calcRatio(this.immediateValue)),this.$.sliderKnob.style.left=100*this.ratio+"%",this.dragging&&(this._knobstartx=this.ratio*this._w,this.translate3d(0,0,0,this.$.sliderKnob))},_calcKnobPosition:function(t){return(this.max-this.min)*t+this.min},_onTrack:function(t){switch(t.stopPropagation(),t.detail.state){case"start":this._trackStart(t);break;case"track":this._trackX(t);break;case"end":this._trackEnd()}},_trackStart:function(t){this._w=this.$.sliderBar.offsetWidth,this._x=this.ratio*this._w,this._startx=this._x,this._knobstartx=this._startx,this._minx=-this._startx,this._maxx=this._w-this._startx,this.$.sliderKnob.classList.add("dragging"),this._setDragging(!0)},_trackX:function(t){this.dragging||this._trackStart(t);var e=Math.min(this._maxx,Math.max(this._minx,t.detail.dx));this._x=this._startx+e;var i=this._calcStep(this._calcKnobPosition(this._x/this._w));this._setImmediateValue(i);var s=this._calcRatio(this.immediateValue)*this._w-this._knobstartx;this.translate3d(s+"px",0,0,this.$.sliderKnob)},_trackEnd:function(){var t=this.$.sliderKnob.style;this.$.sliderKnob.classList.remove("dragging"),this._setDragging(!1),this._resetKnob(),this.value=this.immediateValue,t.transform=t.webkitTransform="",this.fire("change")},_knobdown:function(t){this._expandKnob(),t.preventDefault(),this.focus()},_bardown:function(t){this._w=this.$.sliderBar.offsetWidth;var e=this.$.sliderBar.getBoundingClientRect(),i=(t.detail.x-e.left)/this._w,s=this.ratio;this._setTransiting(!0),this._positionKnob(i),this.debounce("expandKnob",this._expandKnob,60),s===this.ratio&&this._setTransiting(!1),this.async(function(){this.fire("change")}),t.preventDefault(),this.focus()},_knobTransitionEnd:function(t){t.target===this.$.sliderKnob&&this._setTransiting(!1)},_updateMarkers:function(t,e,i,s){s||this._setMarkers([]);var a=Math.round((i-e)/this.step);a>t&&(a=t),this._setMarkers(new Array(a))},_mergeClasses:function(t){return Object.keys(t).filter(function(e){return t[e]}).join(" ")},_getClassNames:function(){return this._mergeClasses({disabled:this.disabled,pin:this.pin,snaps:this.snaps,ring:this.immediateValue<=this.min,expand:this.expand,dragging:this.dragging,transiting:this.transiting,editable:this.editable})},_incrementKey:function(t){this.disabled||("end"===t.detail.key?this.value=this.max:this.increment(),this.fire("change"))},_decrementKey:function(t){this.disabled||("home"===t.detail.key?this.value=this.min:this.decrement(),this.fire("change"))},_changeValue:function(t){this.value=t.target.value,this.fire("change")},_inputKeyDown:function(t){t.stopPropagation()},_createRipple:function(){return this._rippleContainer=this.$.sliderKnob,Polymer.PaperInkyFocusBehaviorImpl._createRipple.call(this)},_focusedChanged:function(t){t&&this.ensureRipple(),this.hasRipple()&&(t?this._ripple.style.display="":this._ripple.style.display="none",this._ripple.holdDown=t)}})</script></dom-module><dom-module id="more-info-climate" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex"></style><style>:host{color:var(--primary-text-color);--paper-input-container-input:{text-transform:capitalize};}.container-aux_heat,.container-away_mode,.container-fan_list,.container-humidity,.container-operation_list,.container-swing_list,.container-temperature{display:none}.has-aux_heat .container-aux_heat,.has-away_mode .container-away_mode,.has-fan_list .container-fan_list,.has-humidity .container-humidity,.has-operation_list .container-operation_list,.has-swing_list .container-swing_list,.has-temperature .container-temperature{display:block}.container-fan_list iron-icon,.container-operation_list iron-icon,.container-swing_list iron-icon{margin:22px 16px 0 0}paper-dropdown-menu{width:100%}paper-slider{width:100%}.auto paper-slider{--paper-slider-active-color:var(--paper-orange-400);--paper-slider-secondary-color:var(--paper-blue-400)}.heat paper-slider{--paper-slider-active-color:var(--paper-orange-400);--paper-slider-secondary-color:var(--paper-green-400)}.cool paper-slider{--paper-slider-active-color:var(--paper-green-400);--paper-slider-secondary-color:var(--paper-blue-400)}.humidity{--paper-slider-active-color:var(--paper-blue-400);--paper-slider-secondary-color:var(--paper-blue-400)}paper-range-slider{--paper-range-slider-lower-color:var(--paper-orange-400);--paper-range-slider-active-color:var(--paper-green-400);--paper-range-slider-higher-color:var(--paper-blue-400);--paper-range-slider-knob-color:var(--primary-color);--paper-range-slider-pin-color:var(--primary-color);--paper-range-slider-width:100%}.single-row{padding:8px 0}.capitalize{text-transform:capitalize}</style><div class$="[[computeClassNames(stateObj)]]"><div class="container-temperature"><div class$="single-row, [[stateObj.attributes.operation_mode]]"><div hidden$="[[computeTargetTempHidden(stateObj)]]">Target Temperature</div><paper-slider min="[[stateObj.attributes.min_temp]]" max="[[stateObj.attributes.max_temp]]" secondary-progress="[[stateObj.attributes.max_temp]]" pin="" step="0.5" value="[[stateObj.attributes.temperature]]" hidden$="[[computeHideTempSlider(stateObj)]]" on-change="targetTemperatureSliderChanged"></paper-slider><paper-range-slider min="[[stateObj.attributes.min_temp]]" max="[[stateObj.attributes.max_temp]]" pin="" step="0.5" value-min="[[stateObj.attributes.target_temp_low]]" value-max="[[stateObj.attributes.target_temp_high]]" value-diff-min="2" hidden$="[[computeHideTempRangeSlider(stateObj)]]" on-change="targetTemperatureRangeSliderChanged"></paper-range-slider></div></div><div class="container-humidity"><div class="single-row"><div>Target Humidity</div><paper-slider class="humidity" min="[[stateObj.attributes.min_humidity]]" max="[[stateObj.attributes.max_humidity]]" secondary-progress="[[stateObj.attributes.max_humidity]]" step="1" pin="" value="[[stateObj.attributes.humidity]]" on-change="targetHumiditySliderChanged"></paper-slider></div></div><div class="container-operation_list"><div class="controls"><paper-dropdown-menu label-float="" label="Operation"><paper-menu class="dropdown-content" selected="{{operationIndex}}"><template is="dom-repeat" items="[[stateObj.attributes.operation_list]]"><paper-item class="capitalize">[[item]]</paper-item></template></paper-menu></paper-dropdown-menu></div></div><div class="container-fan_list"><paper-dropdown-menu label-float="" label="Fan Mode"><paper-menu class="dropdown-content" selected="{{fanIndex}}"><template is="dom-repeat" items="[[stateObj.attributes.fan_list]]"><paper-item>[[item]]</paper-item></template></paper-menu></paper-dropdown-menu></div><div class="container-swing_list"><paper-dropdown-menu label-float="" label="Swing Mode"><paper-menu class="dropdown-content" selected="{{swingIndex}}"><template is="dom-repeat" items="[[stateObj.attributes.swing_list]]"><paper-item>[[item]]</paper-item></template></paper-menu></paper-dropdown-menu></div><div class="container-away_mode"><div class="center horizontal layout single-row"><div class="flex">Away Mode</div><paper-toggle-button checked="[[awayToggleChecked]]" on-change="awayToggleChanged"></paper-toggle-button></div></div><div class="container-aux_heat"><div class="center horizontal layout single-row"><div class="flex">Aux Heat</div><paper-toggle-button checked="[[auxToggleChecked]]" on-change="auxToggleChanged"></paper-toggle-button></div></div></div></template></dom-module><script>Polymer({is:"more-info-climate",properties:{hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"},operationIndex:{type:Number,value:-1,observer:"handleOperationmodeChanged"},fanIndex:{type:Number,value:-1,observer:"handleFanmodeChanged"},swingIndex:{type:Number,value:-1,observer:"handleSwingmodeChanged"},awayToggleChecked:{type:Boolean},auxToggleChecked:{type:Boolean}},stateObjChanged:function(e){this.targetTemperatureSliderValue=e.attributes.temperature,this.awayToggleChecked="on"===e.attributes.away_mode,this.auxheatToggleChecked="on"===e.attributes.aux_heat,e.attributes.fan_list?this.fanIndex=e.attributes.fan_list.indexOf(e.attributes.fan_mode):this.fanIndex=-1,e.attributes.operation_list?this.operationIndex=e.attributes.operation_list.indexOf(e.attributes.operation_mode):this.operationIndex=-1,e.attributes.swing_list?this.swingIndex=e.attributes.swing_list.indexOf(e.attributes.swing_mode):this.swingIndex=-1,this.async(function(){this.fire("iron-resize")}.bind(this),500)},computeTargetTempHidden:function(e){return!e.attributes.temperature&&!e.attributes.target_temp_low&&!e.attributes.target_temp_high},computeHideTempRangeSlider:function(e){return!e.attributes.target_temp_low&&!e.attributes.target_temp_high},computeHideTempSlider:function(e){return!e.attributes.temperature},computeClassNames:function(e){return"more-info-climate "+window.hassUtil.attributeClassNames(e,["away_mode","aux_heat","temperature","humidity","operation_list","fan_list","swing_list"])},targetTemperatureSliderChanged:function(e){var t=e.target.value;t!==this.stateObj.attributes.temperature&&this.callServiceHelper("set_temperature",{temperature:t})},targetTemperatureRangeSliderChanged:function(e){var t=e.currentTarget.valueMin,a=e.currentTarget.valueMax;t===this.stateObj.attributes.target_temp_low&&a===this.stateObj.attributes.target_temp_high||this.callServiceHelper("set_temperature",{target_temp_low:t,target_temp_high:a})},targetHumiditySliderChanged:function(e){var t=e.target.value;t!==this.stateObj.attributes.humidity&&this.callServiceHelper("set_humidity",{humidity:t})},awayToggleChanged:function(e){var t="on"===this.stateObj.attributes.away_mode,a=e.target.checked;t!==a&&this.callServiceHelper("set_away_mode",{away_mode:a})},auxToggleChanged:function(e){var t="on"===this.stateObj.attributes.aux_heat,a=e.target.checked;t!==a&&this.callServiceHelper("set_aux_heat",{aux_heat:a})},handleFanmodeChanged:function(e){var t;""!==e&&e!==-1&&(t=this.stateObj.attributes.fan_list[e],t!==this.stateObj.attributes.fan_mode&&this.callServiceHelper("set_fan_mode",{fan_mode:t}))},handleOperationmodeChanged:function(e){var t;""!==e&&e!==-1&&(t=this.stateObj.attributes.operation_list[e],t!==this.stateObj.attributes.operation_mode&&this.callServiceHelper("set_operation_mode",{operation_mode:t}))},handleSwingmodeChanged:function(e){var t;""!==e&&e!==-1&&(t=this.stateObj.attributes.swing_list[e],t!==this.stateObj.attributes.swing_mode&&this.callServiceHelper("set_swing_mode",{swing_mode:t}))},callServiceHelper:function(e,t){t.entity_id=this.stateObj.entityId,this.hass.serviceActions.callService("climate",e,t).then(function(){this.stateObjChanged(this.stateObj)}.bind(this))}})</script><dom-module id="more-info-cover" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex"></style><style>.current_position,.current_tilt_position{max-height:0;overflow:hidden}.has-current_position .current_position,.has-current_tilt_position .current_tilt_position{max-height:90px}</style><div class$="[[computeClassNames(stateObj)]]"><div class="current_position"><div>Position</div><paper-slider min="0" max="100" value="{{coverPositionSliderValue}}" step="1" pin="" on-change="coverPositionSliderChanged"></paper-slider></div><div class="current_tilt_position"><div>Tilt position</div><paper-icon-button icon="mdi:arrow-top-right" on-tap="onOpenTiltTap" title="Open tilt" disabled="[[computeIsFullyOpenTilt(stateObj)]]"></paper-icon-button><paper-icon-button icon="mdi:stop" on-tap="onStopTiltTap" title="Stop tilt"></paper-icon-button><paper-icon-button icon="mdi:arrow-bottom-left" on-tap="onCloseTiltTap" title="Close tilt" disabled="[[computeIsFullyClosedTilt(stateObj)]]"></paper-icon-button><paper-slider min="0" max="100" value="{{coverTiltPositionSliderValue}}" step="1" pin="" on-change="coverTiltPositionSliderChanged"></paper-slider></div></div></template></dom-module><script>Polymer({is:"more-info-cover",properties:{hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"},coverPositionSliderValue:{type:Number},coverTiltPositionSliderValue:{type:Number}},stateObjChanged:function(t){this.coverPositionSliderValue=t.attributes.current_position,this.coverTiltPositionSliderValue=t.attributes.current_tilt_position},computeClassNames:function(t){return window.hassUtil.attributeClassNames(t,["current_position","current_tilt_position"])},coverPositionSliderChanged:function(t){this.hass.serviceActions.callService("cover","set_cover_position",{entity_id:this.stateObj.entityId,position:t.target.value})},coverTiltPositionSliderChanged:function(t){this.hass.serviceActions.callService("cover","set_cover_tilt_position",{entity_id:this.stateObj.entityId,tilt_position:t.target.value})},computeIsFullyOpenTilt:function(t){return 100===t.attributes.current_tilt_position},computeIsFullyClosedTilt:function(t){return 0===t.attributes.current_tilt_position},onOpenTiltTap:function(){this.hass.serviceActions.callService("cover","open_cover_tilt",{entity_id:this.stateObj.entityId})},onCloseTiltTap:function(){this.hass.serviceActions.callService("cover","close_cover_tilt",{entity_id:this.stateObj.entityId})},onStopTiltTap:function(){this.hass.serviceActions.callService("cover","stop_cover",{entity_id:this.stateObj.entityId})}})</script><dom-module id="more-info-default" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>.data-entry .value{max-width:200px}</style><div class="layout vertical"><template is="dom-repeat" items="[[computeDisplayAttributes(stateObj)]]" as="attribute"><div class="data-entry layout justified horizontal"><div class="key">[[formatAttribute(attribute)]]</div><div class="value">[[getAttributeValue(stateObj, attribute)]]</div></div></template></div></template></dom-module><script>!function(){"use strict";var e=["entity_picture","friendly_name","icon","unit_of_measurement","emulated_hue","emulated_hue_name","haaska_hidden","haaska_name","homebridge_hidden","homebridge_name"];Polymer({is:"more-info-default",properties:{stateObj:{type:Object}},computeDisplayAttributes:function(t){return t?Object.keys(t.attributes).filter(function(t){return e.indexOf(t)===-1}):[]},formatAttribute:function(e){return e.replace(/_/g," ")},getAttributeValue:function(e,t){var r=e.attributes[t];return Array.isArray(r)?r.join(", "):r}})}()</script><dom-module id="more-info-group" assetpath="more-infos/"><template><style>.child-card{margin-bottom:8px}.child-card:last-child{margin-bottom:0}</style><div id="groupedControlDetails"></div><template is="dom-repeat" items="[[states]]" as="state"><div class="child-card"><state-card-content state-obj="[[state]]" hass="[[hass]]"></state-card-content></div></template></template></dom-module><script>Polymer({is:"more-info-group",behaviors:[window.hassBehavior],properties:{hass:{type:Object},stateObj:{type:Object},states:{type:Array,bindNuclear:function(t){return[t.moreInfoGetters.currentEntity,t.entityGetters.entityMap,function(t,e){return t?t.attributes.entity_id.map(e.get.bind(e)):[]}]}}},observers:["statesChanged(stateObj, states)"],statesChanged:function(t,e){var s,i,a,n,r=!1;if(e&&e.length>0)for(s=e[0],r=s.set("entityId",t.entityId).set("attributes",Object.assign({},s.attributes)),i=0;i<e.length;i++)a=e[i],a&&a.domain&&r.domain!==a.domain&&(r=!1);r?window.hassUtil.dynamicContentUpdater(this.$.groupedControlDetails,"MORE-INFO-"+window.hassUtil.stateMoreInfoType(r).toUpperCase(),{stateObj:r,hass:this.hass}):(n=Polymer.dom(this.$.groupedControlDetails),n.lastChild&&n.removeChild(n.lastChild))}})</script><dom-module id="more-info-sun" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><template is="dom-repeat" items="[[computeOrder(risingDate, settingDate)]]"><div class="data-entry layout justified horizontal"><div class="key"><span>[[itemCaption(item)]]</span><ha-relative-time datetime-obj="[[itemDate(item)]]"></ha-relative-time></div><div class="value">[[itemValue(item)]]</div></div></template><div class="data-entry layout justified horizontal"><div class="key">Elevation</div><div class="value">[[stateObj.attributes.elevation]]</div></div></template></dom-module><script>Polymer({is:"more-info-sun",properties:{stateObj:{type:Object},risingDate:{type:Object,computed:"computeRising(stateObj)"},settingDate:{type:Object,computed:"computeSetting(stateObj)"}},computeRising:function(t){return new Date(t.attributes.next_rising)},computeSetting:function(t){return new Date(t.attributes.next_setting)},computeOrder:function(t,e){return t>e?["set","ris"]:["ris","set"]},itemCaption:function(t){return"ris"===t?"Rising ":"Setting "},itemDate:function(t){return"ris"===t?this.risingDate:this.settingDate},itemValue:function(t){return window.hassUtil.formatTime(this.itemDate(t))}})</script><dom-module id="more-info-configurator" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex"></style><style>p{margin:8px 0}p>img{max-width:100%}p.center{text-align:center}p.error{color:#C62828}p.submit{text-align:center;height:41px}paper-spinner{width:14px;height:14px;margin-right:20px}</style><div class="layout vertical"><template is="dom-if" if="[[isConfigurable]]"><p hidden$="[[!stateObj.attributes.description]]">[[stateObj.attributes.description]] <a hidden$="[[!stateObj.attributes.link_url]]" href="[[stateObj.attributes.link_url]]" target="_blank">[[stateObj.attributes.link_name]]</a></p><p class="error" hidden$="[[!stateObj.attributes.errors]]">[[stateObj.attributes.errors]]</p><p class="center" hidden$="[[!stateObj.attributes.description_image]]"><img src="[[stateObj.attributes.description_image]]"></p><template is="dom-repeat" items="[[stateObj.attributes.fields]]"><paper-input-container id="paper-input-fields-{{item.id}}"><label>[[item.name]]</label><input is="iron-input" type="[[item.type]]" id="[[item.id]]" on-change="fieldChanged"></paper-input-container></template><p class="submit"><paper-button raised="" disabled="[[isConfiguring]]" on-tap="submitClicked"><paper-spinner active="[[isConfiguring]]" hidden="[[!isConfiguring]]" alt="Configuring"></paper-spinner>[[submitCaption]]</paper-button></p></template></div></template></dom-module><script>Polymer({is:"more-info-configurator",behaviors:[window.hassBehavior],properties:{stateObj:{type:Object},action:{type:String,value:"display"},isStreaming:{type:Boolean,bindNuclear:function(i){return i.streamGetters.isStreamingEvents}},isConfigurable:{type:Boolean,computed:"computeIsConfigurable(stateObj)"},isConfiguring:{type:Boolean,value:!1},submitCaption:{type:String,computed:"computeSubmitCaption(stateObj)"},fieldInput:{type:Object,value:{}}},computeIsConfigurable:function(i){return"configure"===i.state},computeSubmitCaption:function(i){return i.attributes.submit_caption||"Set configuration"},fieldChanged:function(i){var t=i.target;this.fieldInput[t.id]=t.value},submitClicked:function(){var i={configure_id:this.stateObj.attributes.configure_id,fields:this.fieldInput};this.isConfiguring=!0,this.hass.serviceActions.callService("configurator","configure",i).then(function(){this.isConfiguring=!1,this.isStreaming||this.hass.syncActions.fetchAll()}.bind(this),function(){this.isConfiguring=!1}.bind(this))}})</script><dom-module id="more-info-script" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><div class="layout vertical"><div class="data-entry layout justified horizontal"><div class="key">Last Action</div><div class="value">[[stateObj.attributes.last_action]]</div></div></div></template></dom-module><script>Polymer({is:"more-info-script",properties:{stateObj:{type:Object}}})</script><dom-module id="ha-labeled-slider" assetpath="components/"><template><style>:host{display:block;padding-bottom:16px}.title{margin-bottom:16px;opacity:var(--dark-primary-opacity)}iron-icon{float:left;margin-top:4px;opacity:var(--dark-secondary-opacity)}.slider-container{margin-left:24px}</style><div class="title">[[caption]]</div><iron-icon icon="[[icon]]"></iron-icon><div class="slider-container"><paper-slider min="[[min]]" max="[[max]]" value="{{value}}"></paper-slider></div></template></dom-module><script>Polymer({is:"ha-labeled-slider",properties:{caption:{type:String},icon:{type:String},min:{type:Number},max:{type:Number},value:{type:Number,notify:!0}}})</script><dom-module id="ha-color-picker" assetpath="components/"><template><style>canvas{cursor:crosshair}</style><canvas width="[[width]]" height="[[height]]"></canvas></template></dom-module><script>Polymer({is:"ha-color-picker",properties:{color:{type:Object},width:{type:Number},height:{type:Number}},listeners:{mousedown:"onMouseDown",mouseup:"onMouseUp",touchstart:"onTouchStart",touchend:"onTouchEnd"},onMouseDown:function(t){this.onMouseMove(t),this.addEventListener("mousemove",this.onMouseMove)},onMouseUp:function(){this.removeEventListener("mousemove",this.onMouseMove)},onTouchStart:function(t){this.onTouchMove(t),this.addEventListener("touchmove",this.onTouchMove)},onTouchEnd:function(){this.removeEventListener("touchmove",this.onTouchMove)},onTouchMove:function(t){this.mouseMoveIsThrottled&&(this.mouseMoveIsThrottled=!1,this.processColorSelect(t.touches[0]),this.async(function(){this.mouseMoveIsThrottled=!0}.bind(this),100))},onMouseMove:function(t){this.mouseMoveIsThrottled&&(this.mouseMoveIsThrottled=!1,this.processColorSelect(t),this.async(function(){this.mouseMoveIsThrottled=!0}.bind(this),100))},processColorSelect:function(t){var o=this.canvas.getBoundingClientRect();t.clientX<o.left||t.clientX>=o.left+o.width||t.clientY<o.top||t.clientY>=o.top+o.height||this.onColorSelect(t.clientX-o.left,t.clientY-o.top)},onColorSelect:function(t,o){var e=this.context.getImageData(t,o,1,1).data;this.setColor({r:e[0],g:e[1],b:e[2]})},setColor:function(t){this.color=t,this.fire("colorselected",{rgb:this.color})},ready:function(){this.setColor=this.setColor.bind(this),this.mouseMoveIsThrottled=!0,this.canvas=this.children[0],this.context=this.canvas.getContext("2d"),this.drawGradient()},drawGradient:function(){var t,o,e,i,s;this.width&&this.height||(t=getComputedStyle(this)),o=this.width||parseInt(t.width,10),e=this.height||parseInt(t.height,10),i=this.context.createLinearGradient(0,0,o,0),i.addColorStop(0,"rgb(255,0,0)"),i.addColorStop(.16,"rgb(255,0,255)"),i.addColorStop(.32,"rgb(0,0,255)"),i.addColorStop(.48,"rgb(0,255,255)"),i.addColorStop(.64,"rgb(0,255,0)"),i.addColorStop(.8,"rgb(255,255,0)"),i.addColorStop(1,"rgb(255,0,0)"),this.context.fillStyle=i,this.context.fillRect(0,0,o,e),s=this.context.createLinearGradient(0,0,0,e),s.addColorStop(0,"rgba(255,255,255,1)"),s.addColorStop(.5,"rgba(255,255,255,0)"),s.addColorStop(.5,"rgba(0,0,0,0)"),s.addColorStop(1,"rgba(0,0,0,1)"),this.context.fillStyle=s,this.context.fillRect(0,0,o,e)}})</script><dom-module id="more-info-light" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex"></style><style>.effect_list{padding-bottom:16px}.brightness,.color_temp,.effect_list,.white_value{max-height:0;overflow:hidden;transition:max-height .5s ease-in}ha-color-picker{display:block;width:250px;max-height:0;overflow:hidden;transition:max-height .2s ease-in}.has-brightness .brightness,.has-color_temp .color_temp,.has-effect_list .effect_list,.has-white_value .white_value{max-height:84px}.has-rgb_color ha-color-picker{max-height:200px}</style><div class$="[[computeClassNames(stateObj)]]"><div class="effect_list"><paper-dropdown-menu label-float="" label="Effect"><paper-menu class="dropdown-content" selected="{{effectIndex}}"><template is="dom-repeat" items="[[stateObj.attributes.effect_list]]"><paper-item>[[item]]</paper-item></template></paper-menu></paper-dropdown-menu></div><div class="brightness"><ha-labeled-slider caption="Brightness" icon="mdi:brightness-5" max="255" value="{{brightnessSliderValue}}" on-change="brightnessSliderChanged"></ha-labeled-slider></div><div class="color_temp"><ha-labeled-slider caption="Color Temperature" icon="mdi:thermometer" min="154" max="500" value="{{ctSliderValue}}" on-change="ctSliderChanged"></ha-labeled-slider></div><div class="white_value"><ha-labeled-slider caption="White Value" icon="mdi:file-word-box" max="255" value="{{wvSliderValue}}" on-change="wvSliderChanged"></ha-labeled-slider></div><ha-color-picker on-colorselected="colorPicked" height="200" width="250"></ha-color-picker></div></template></dom-module><script>Polymer({is:"more-info-light",properties:{hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"},effectIndex:{type:Number,value:-1,observer:"effectChanged"},brightnessSliderValue:{type:Number,value:0},ctSliderValue:{type:Number,value:0},wvSliderValue:{type:Number,value:0}},stateObjChanged:function(t){t&&"on"===t.state?(this.brightnessSliderValue=t.attributes.brightness,this.ctSliderValue=t.attributes.color_temp,this.wvSliderValue=t.attributes.white_value,t.attributes.effect_list?this.effectIndex=t.attributes.effect_list.indexOf(t.attributes.effect):this.effectIndex=-1):this.brightnessSliderValue=0,this.async(function(){this.fire("iron-resize")}.bind(this),500)},computeClassNames:function(t){var e=window.hassUtil.attributeClassNames(t,["rgb_color","color_temp","white_value","effect_list"]),i=1;return t&&t.attributes.supported_features&i&&(e+=" has-brightness"),e},effectChanged:function(t){var e;""!==t&&t!==-1&&(e=this.stateObj.attributes.effect_list[t],e!==this.stateObj.attributes.effect&&this.hass.serviceActions.callService("light","turn_on",{entity_id:this.stateObj.entityId,effect:e}))},brightnessSliderChanged:function(t){var e=parseInt(t.target.value,10);isNaN(e)||(0===e?this.hass.serviceActions.callTurnOff(this.stateObj.entityId):this.hass.serviceActions.callService("light","turn_on",{entity_id:this.stateObj.entityId,brightness:e}))},ctSliderChanged:function(t){var e=parseInt(t.target.value,10);isNaN(e)||this.hass.serviceActions.callService("light","turn_on",{entity_id:this.stateObj.entityId,color_temp:e})},wvSliderChanged:function(t){var e=parseInt(t.target.value,10);isNaN(e)||this.hass.serviceActions.callService("light","turn_on",{entity_id:this.stateObj.entityId,white_value:e})},serviceChangeColor:function(t,e,i){t.serviceActions.callService("light","turn_on",{entity_id:e,rgb_color:[i.r,i.g,i.b]})},colorPicked:function(t){return this.skipColorPicked?void(this.colorChanged=!0):(this.color=t.detail.rgb,this.serviceChangeColor(this.hass,this.stateObj.entityId,this.color),this.colorChanged=!1,this.skipColorPicked=!0,void(this.colorDebounce=setTimeout(function(){this.colorChanged&&this.serviceChangeColor(this.hass,this.stateObj.entityId,this.color),this.skipColorPicked=!1}.bind(this),500)))}})</script><dom-module id="more-info-media_player" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>.media-state{text-transform:capitalize}paper-icon-button[highlight]{color:var(--accent-color)}.volume{margin-bottom:8px;max-height:0;overflow:hidden;transition:max-height .5s ease-in}.has-volume_level .volume{max-height:40px}iron-icon.source-input{padding:7px;margin-top:15px}paper-dropdown-menu.source-input{margin-left:10px}[hidden]{display:none!important}</style><div class$="[[computeClassNames(stateObj)]]"><div class="layout horizontal"><div class="flex"><paper-icon-button icon="mdi:power" highlight$="[[isOff]]" on-tap="handleTogglePower" hidden$="[[computeHidePowerButton(isOff, supportsTurnOn, supportsTurnOff)]]"></paper-icon-button></div><div><template is="dom-if" if="[[computeShowPlaybackControls(isOff, hasMediaControl)]]"><paper-icon-button icon="mdi:skip-previous" on-tap="handlePrevious" hidden$="[[!supportsPreviousTrack]]"></paper-icon-button><paper-icon-button icon="[[computePlaybackControlIcon(stateObj)]]" on-tap="handlePlaybackControl" highlight=""></paper-icon-button><paper-icon-button icon="mdi:skip-next" on-tap="handleNext" hidden$="[[!supportsNextTrack]]"></paper-icon-button></template></div></div><div class="volume_buttons center horizontal layout" hidden$="[[computeHideVolumeButtons(isOff, supportsVolumeButtons)]]"><paper-icon-button on-tap="handleVolumeTap" icon="mdi:volume-off"></paper-icon-button><paper-icon-button id="volumeDown" disabled$="[[isMuted]]" on-mousedown="handleVolumeDown" on-touchstart="handleVolumeDown" icon="mdi:volume-medium"></paper-icon-button><paper-icon-button id="volumeUp" disabled$="[[isMuted]]" on-mousedown="handleVolumeUp" on-touchstart="handleVolumeUp" icon="mdi:volume-high"></paper-icon-button></div><div class="volume center horizontal layout" hidden$="[[!supportsVolumeSet]]"><paper-icon-button on-tap="handleVolumeTap" hidden$="[[supportsVolumeButtons]]" icon="[[computeMuteVolumeIcon(isMuted)]]"></paper-icon-button><paper-slider disabled$="[[isMuted]]" min="0" max="100" value="[[volumeSliderValue]]" on-change="volumeSliderChanged" class="flex"></paper-slider></div><div class="controls layout horizontal justified" hidden$="[[computeHideSelectSource(isOff, supportsSelectSource)]]"><iron-icon class="source-input" icon="mdi:login-variant"></iron-icon><paper-dropdown-menu class="source-input" label-float="" label="Source"><paper-menu class="dropdown-content" selected="{{sourceIndex}}"><template is="dom-repeat" items="[[stateObj.attributes.source_list]]"><paper-item>[[item]]</paper-item></template></paper-menu></paper-dropdown-menu></div><div hidden$="[[computeHideTTS(ttsLoaded, supportsPlayMedia)]]" class="layout horizontal end"><paper-input label="Text to speak" class="flex" value="{{ttsMessage}}"></paper-input><paper-icon-button icon="mdi:send" on-tap="sendTTS"></paper-icon-button></div></div></template></dom-module><script>Polymer({is:"more-info-media_player",behaviors:[window.hassBehavior],properties:{ttsLoaded:{type:Boolean,bindNuclear:function(e){return e.configGetters.isComponentLoaded("tts")}},hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"},isOff:{type:Boolean,value:!1},isPlaying:{type:Boolean,value:!1},isMuted:{type:Boolean,value:!1},source:{type:String,value:""},sourceIndex:{type:Number,value:0,observer:"handleSourceChanged"},volumeSliderValue:{type:Number,value:0},ttsMessage:{type:String,value:""},supportsPause:{type:Boolean,value:!1},supportsVolumeSet:{type:Boolean,value:!1},supportsVolumeMute:{type:Boolean,value:!1},supportsPreviousTrack:{type:Boolean,value:!1},supportsNextTrack:{type:Boolean,value:!1},supportsTurnOn:{type:Boolean,value:!1},supportsTurnOff:{type:Boolean,value:!1},supportsPlayMedia:{type:Boolean,value:!1},supportsVolumeButtons:{type:Boolean,value:!1},supportsSelectSource:{type:Boolean,value:!1},hasMediaControl:{type:Boolean,value:!1}},HAS_MEDIA_STATES:["playing","paused","unknown"],stateObjChanged:function(e){e&&(this.isOff="off"===e.state,this.isPlaying="playing"===e.state,this.hasMediaControl=this.HAS_MEDIA_STATES.indexOf(e.state)!==-1,this.volumeSliderValue=100*e.attributes.volume_level,this.isMuted=e.attributes.is_volume_muted,this.source=e.attributes.source,this.supportsPause=0!==(1&e.attributes.supported_media_commands),this.supportsVolumeSet=0!==(4&e.attributes.supported_media_commands),this.supportsVolumeMute=0!==(8&e.attributes.supported_media_commands),this.supportsPreviousTrack=0!==(16&e.attributes.supported_media_commands),this.supportsNextTrack=0!==(32&e.attributes.supported_media_commands),this.supportsTurnOn=0!==(128&e.attributes.supported_media_commands),this.supportsTurnOff=0!==(256&e.attributes.supported_media_commands),this.supportsPlayMedia=0!==(512&e.attributes.supported_media_commands),this.supportsVolumeButtons=0!==(1024&e.attributes.supported_media_commands),this.supportsSelectSource=0!==(2048&e.attributes.supported_media_commands),void 0!==e.attributes.source_list&&(this.sourceIndex=e.attributes.source_list.indexOf(this.source))),this.async(function(){this.fire("iron-resize")}.bind(this),500)},computeClassNames:function(e){return window.hassUtil.attributeClassNames(e,["volume_level"])},computeIsOff:function(e){return"off"===e.state},computeMuteVolumeIcon:function(e){return e?"mdi:volume-off":"mdi:volume-high"},computeHideVolumeButtons:function(e,t){return!t||e},computeShowPlaybackControls:function(e,t){return!e&&t},computePlaybackControlIcon:function(){return this.isPlaying?this.supportsPause?"mdi:pause":"mdi:stop":"mdi:play"},computeHidePowerButton:function(e,t,s){return e?!t:!s},computeHideSelectSource:function(e,t){return e||!t},computeSelectedSource:function(e){return e.attributes.source_list.indexOf(e.attributes.source)},computeHideTTS:function(e,t){return!e||!t},handleTogglePower:function(){this.callService(this.isOff?"turn_on":"turn_off")},handlePrevious:function(){this.callService("media_previous_track")},handlePlaybackControl:function(){this.callService("media_play_pause")},handleNext:function(){this.callService("media_next_track")},handleSourceChanged:function(e){var t;!this.stateObj||void 0===this.stateObj.attributes.source_list||e<0||e>=this.stateObj.attributes.source_list.length||(t=this.stateObj.attributes.source_list[e],t!==this.stateObj.attributes.source&&this.callService("select_source",{source:t}))},handleVolumeTap:function(){this.supportsVolumeMute&&this.callService("volume_mute",{is_volume_muted:!this.isMuted})},handleVolumeUp:function(){var e=this.$.volumeUp;this.handleVolumeWorker("volume_up",e,!0)},handleVolumeDown:function(){var e=this.$.volumeDown;this.handleVolumeWorker("volume_down",e,!0)},handleVolumeWorker:function(e,t,s){(s||void 0!==t&&t.pointerDown)&&(this.callService(e),this.async(function(){this.handleVolumeWorker(e,t,!1)}.bind(this),500))},volumeSliderChanged:function(e){var t=parseFloat(e.target.value),s=t>0?t/100:0;this.callService("volume_set",{volume_level:s})},sendTTS:function(){var e,t,s=this.hass.reactor.evaluate(this.hass.serviceGetters.entityMap).get("tts").get("services").keySeq().toArray();for(t=0;t<s.length;t++)if(s[t].indexOf("_say")!==-1){e=s[t];break}e&&(this.hass.serviceActions.callService("tts",e,{entity_id:this.stateObj.entityId,message:this.ttsMessage}),this.ttsMessage="",document.activeElement.blur())},callService:function(e,t){var s=t||{};s.entity_id=this.stateObj.entityId,this.hass.serviceActions.callService("media_player",e,s)}})</script><dom-module id="more-info-camera" assetpath="more-infos/"><template><style>:host{max-width:640px}.camera-image{width:100%}</style><img class="camera-image" src="[[computeCameraImageUrl(hass, stateObj)]]" on-load="imageLoaded" alt="[[stateObj.entityDisplay]]"></template></dom-module><script>Polymer({is:"more-info-camera",properties:{hass:{type:Object},stateObj:{type:Object}},imageLoaded:function(){this.fire("iron-resize")},computeCameraImageUrl:function(e,t){return e.demo?"/demo/webcam.jpg":t?"/api/camera_proxy_stream/"+t.entityId+"?token="+t.attributes.access_token:"data:image/gif;base64,R0lGODlhAQABAAAAACw="}})</script><dom-module id="more-info-updater" assetpath="more-infos/"><template><style>.link{color:#03A9F4}</style><div><a class="link" href="https://home-assistant.io/getting-started/updating/" target="_blank">Update Instructions</a></div></template></dom-module><script>Polymer({is:"more-info-updater",properties:{stateObj:{type:Object}},computeReleaseNotes:function(t){return t.attributes.release_notes||"https://home-assistant.io/getting-started/updating/"}})</script><dom-module id="more-info-alarm_control_panel" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex"></style><div class="layout horizontal"><paper-input label="code" value="{{enteredCode}}" pattern="[[codeFormat]]" type="password" hidden$="[[!codeInputVisible]]" disabled="[[!codeInputEnabled]]"></paper-input></div><div class="layout horizontal"><paper-button on-tap="handleDisarmTap" hidden$="[[!disarmButtonVisible]]" disabled="[[!codeValid]]">Disarm</paper-button><paper-button on-tap="handleHomeTap" hidden$="[[!armHomeButtonVisible]]" disabled="[[!codeValid]]">Arm Home</paper-button><paper-button on-tap="handleAwayTap" hidden$="[[!armAwayButtonVisible]]" disabled="[[!codeValid]]">Arm Away</paper-button></div></template></dom-module><script>Polymer({is:"more-info-alarm_control_panel",properties:{hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"},enteredCode:{type:String,value:""},disarmButtonVisible:{type:Boolean,value:!1},armHomeButtonVisible:{type:Boolean,value:!1},armAwayButtonVisible:{type:Boolean,value:!1},codeInputVisible:{type:Boolean,value:!1},codeInputEnabled:{type:Boolean,value:!1},codeFormat:{type:String,value:""},codeValid:{type:Boolean,computed:"validateCode(enteredCode, codeFormat)"}},validateCode:function(e,t){var a=new RegExp(t);return null===t||a.test(e)},stateObjChanged:function(e){e&&(this.codeFormat=e.attributes.code_format,this.codeInputVisible=null!==this.codeFormat,this.codeInputEnabled="armed_home"===e.state||"armed_away"===e.state||"disarmed"===e.state||"pending"===e.state||"triggered"===e.state,this.disarmButtonVisible="armed_home"===e.state||"armed_away"===e.state||"pending"===e.state||"triggered"===e.state,this.armHomeButtonVisible="disarmed"===e.state,this.armAwayButtonVisible="disarmed"===e.state),this.async(function(){this.fire("iron-resize")}.bind(this),500)},handleDisarmTap:function(){this.callService("alarm_disarm",{code:this.enteredCode})},handleHomeTap:function(){this.callService("alarm_arm_home",{code:this.enteredCode})},handleAwayTap:function(){this.callService("alarm_arm_away",{code:this.enteredCode})},callService:function(e,t){var a=t||{};a.entity_id=this.stateObj.entityId,this.hass.serviceActions.callService("alarm_control_panel",e,a).then(function(){this.enteredCode=""}.bind(this))}})</script><dom-module id="more-info-lock" assetpath="more-infos/"><template><style>paper-input{display:inline-block}</style><div hidden$="[[!stateObj.attributes.code_format]]"><paper-input label="code" value="{{enteredCode}}" pattern="[[stateObj.attributes.code_format]]" type="password"></paper-input><paper-button on-tap="handleUnlockTap" hidden$="[[!isLocked]]">Unlock</paper-button><paper-button on-tap="handleLockTap" hidden$="[[isLocked]]">Lock</paper-button></div></template></dom-module><script>Polymer({is:"more-info-lock",properties:{hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"},enteredCode:{type:String,value:""}},handleUnlockTap:function(){this.callService("unlock",{code:this.enteredCode})},handleLockTap:function(){this.callService("lock",{code:this.enteredCode})},stateObjChanged:function(e){e&&(this.isLocked="locked"===e.state),this.async(function(){this.fire("iron-resize")}.bind(this),500)},callService:function(e,t){var i=t||{};i.entity_id=this.stateObj.entityId,this.hass.serviceActions.callService("lock",e,i)}})</script><script>Polymer({is:"more-info-content",properties:{hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"}},created:function(){this.style.display="block"},stateObjChanged:function(t){t&&window.hassUtil.dynamicContentUpdater(this,"MORE-INFO-"+window.hassUtil.stateMoreInfoType(t).toUpperCase(),{hass:this.hass,stateObj:t})}})</script><dom-module id="more-info-dialog" assetpath="dialogs/"><template><style>paper-dialog{font-size:14px;width:365px}paper-dialog[data-domain=camera]{width:auto}state-history-charts{position:relative;z-index:1;max-width:365px}state-card-content{margin-bottom:24px;font-size:14px}@media all and (max-width:450px),all and (max-height:500px){paper-dialog{margin:0;width:100%;max-height:calc(100% - 64px);position:fixed!important;bottom:0;left:0;right:0;overflow:scroll}}</style><paper-dialog id="dialog" with-backdrop="" opened="{{dialogOpen}}" data-domain$="[[stateObj.domain]]"><h2><state-card-content state-obj="[[stateObj]]" hass="[[hass]]" in-dialog=""></state-card-content></h2><template is="dom-if" if="[[showHistoryComponent]]"><state-history-charts state-history="[[stateHistory]]" is-loading-data="[[isLoadingHistoryData]]"></state-history-charts></template><paper-dialog-scrollable id="scrollable"><more-info-content state-obj="[[stateObj]]" hass="[[hass]]"></more-info-content></paper-dialog-scrollable></paper-dialog></template></dom-module><script>Polymer({is:"more-info-dialog",behaviors:[window.hassBehavior],properties:{hass:{type:Object},stateObj:{type:Object,bindNuclear:function(t){return t.moreInfoGetters.currentEntity},observer:"stateObjChanged"},stateHistory:{type:Object,bindNuclear:function(t){return[t.moreInfoGetters.currentEntityHistory,function(t){return!!t&&[t]}]}},isLoadingHistoryData:{type:Boolean,computed:"computeIsLoadingHistoryData(delayedDialogOpen, isLoadingEntityHistoryData)"},isLoadingEntityHistoryData:{type:Boolean,bindNuclear:function(t){return t.entityHistoryGetters.isLoadingEntityHistory}},hasHistoryComponent:{type:Boolean,bindNuclear:function(t){return t.configGetters.isComponentLoaded("history")},observer:"fetchHistoryData"},shouldFetchHistory:{type:Boolean,bindNuclear:function(t){return t.moreInfoGetters.isCurrentEntityHistoryStale},observer:"fetchHistoryData"},showHistoryComponent:{type:Boolean,value:!1,computed:"computeShowHistoryComponent(hasHistoryComponent, stateObj)"},dialogOpen:{type:Boolean,value:!1,observer:"dialogOpenChanged"},delayedDialogOpen:{type:Boolean,value:!1}},ready:function(){this.$.scrollable.dialogElement=this.$.dialog},computeIsLoadingHistoryData:function(t,e){return!t||e},computeShowHistoryComponent:function(t,e){return this.hasHistoryComponent&&e&&window.hassUtil.DOMAINS_WITH_NO_HISTORY.indexOf(e.domain)===-1},fetchHistoryData:function(){this.stateObj&&this.hasHistoryComponent&&this.shouldFetchHistory&&this.hass.entityHistoryActions.fetchRecent(this.stateObj.entityId)},stateObjChanged:function(t){return t?void this.async(function(){this.fetchHistoryData(),this.dialogOpen=!0}.bind(this),10):void(this.dialogOpen=!1)},dialogOpenChanged:function(t){t?this.async(function(){this.delayedDialogOpen=!0}.bind(this),10):!t&&this.stateObj&&(this.async(function(){this.hass.moreInfoActions.deselectEntity()}.bind(this),10),this.delayedDialogOpen=!1)}})</script><dom-module id="ha-voice-command-dialog" assetpath="dialogs/"><template><style>iron-icon{margin-right:8px}.content{width:300px;min-height:80px;font-size:18px}.icon{float:left}.text{margin-left:48px;margin-right:24px}.interimTranscript{color:#a9a9a9}@media all and (max-width:450px){paper-dialog{margin:0;width:100%;max-height:calc(100% - 64px);position:fixed!important;bottom:0;left:0;right:0;overflow:scroll}}</style><paper-dialog id="dialog" with-backdrop="" opened="{{dialogOpen}}"><div class="content"><div class="icon"><iron-icon icon="mdi:text-to-speech" hidden$="[[isTransmitting]]"></iron-icon><paper-spinner active$="[[isTransmitting]]" hidden$="[[!isTransmitting]]"></paper-spinner></div><div class="text"><span>{{finalTranscript}}</span> <span class="interimTranscript">[[interimTranscript]]</span> …</div></div></paper-dialog></template></dom-module><script>Polymer({is:"ha-voice-command-dialog",behaviors:[window.hassBehavior],properties:{hass:{type:Object},dialogOpen:{type:Boolean,value:!1,observer:"dialogOpenChanged"},finalTranscript:{type:String,bindNuclear:function(e){return e.voiceGetters.finalTranscript}},interimTranscript:{type:String,bindNuclear:function(e){return e.voiceGetters.extraInterimTranscript}},isTransmitting:{type:Boolean,bindNuclear:function(e){return e.voiceGetters.isTransmitting}},isListening:{type:Boolean,bindNuclear:function(e){return e.voiceGetters.isListening}},showListenInterface:{type:Boolean,computed:"computeShowListenInterface(isListening, isTransmitting)",observer:"showListenInterfaceChanged"}},computeShowListenInterface:function(e,n){return e||n},dialogOpenChanged:function(e){!e&&this.isListening&&this.hass.voiceActions.stop()},showListenInterfaceChanged:function(e){!e&&this.dialogOpen?this.dialogOpen=!1:e&&(this.dialogOpen=!0)}})</script><dom-module id="paper-icon-item" assetpath="../bower_components/paper-item/"><template><style include="paper-item-shared-styles"></style><style>:host{@apply(--layout-horizontal);@apply(--layout-center);@apply(--paper-font-subhead);@apply(--paper-item);@apply(--paper-icon-item)}.content-icon{@apply(--layout-horizontal);@apply(--layout-center);width:var(--paper-item-icon-width,56px);@apply(--paper-item-icon)}</style><div id="contentIcon" class="content-icon"><content select="[item-icon]"></content></div><content></content></template><script>Polymer({is:"paper-icon-item",behaviors:[Polymer.PaperItemBehavior]})</script></dom-module><dom-module id="ha-sidebar" assetpath="components/"><template><style include="iron-flex iron-flex-alignment iron-positioning">:host{--sidebar-text:{opacity:var(--dark-primary-opacity);font-weight:500;font-size:14px};display:block;overflow:auto;-ms-user-select:none;-webkit-user-select:none;-moz-user-select:none}app-toolbar{font-weight:400;opacity:var(--dark-primary-opacity);border-bottom:1px solid #e0e0e0}paper-menu{padding-bottom:0}paper-icon-item{--paper-icon-item:{cursor:pointer};--paper-item-icon:{color:#000;opacity:var(--dark-secondary-opacity)};--paper-item-selected:{color:var(--default-primary-color);background-color:#e8e8e8;opacity:1};}paper-icon-item.iron-selected{--paper-item-icon:{color:var(--default-primary-color);opacity:1};}paper-icon-item .item-text{@apply(--sidebar-text)}paper-icon-item.iron-selected .item-text{opacity:1}paper-icon-item.logout{margin-top:16px}.divider{height:1px;background-color:#000;margin:4px 0;opacity:var(--dark-divider-opacity)}.setting{@apply(--sidebar-text)}.subheader{@apply(--sidebar-text);padding:16px}.dev-tools{padding:0 8px;opacity:var(--dark-secondary-opacity)}</style><app-toolbar><div main-title="">Home Assistant</div><paper-icon-button icon="mdi:chevron-left" hidden$="[[narrow]]" on-tap="toggleMenu"></paper-icon-button></app-toolbar><paper-menu attr-for-selected="data-panel" selected="[[selected]]" on-iron-select="menuSelect"><paper-icon-item on-tap="menuClicked" data-panel="states"><iron-icon item-icon="" icon="mdi:apps"></iron-icon><span class="item-text">States</span></paper-icon-item><template is="dom-repeat" items="[[computePanels(panels)]]"><paper-icon-item on-tap="menuClicked" data-panel$="[[item.url_path]]"><iron-icon item-icon="" icon="[[item.icon]]"></iron-icon><span class="item-text">[[item.title]]</span></paper-icon-item></template><paper-icon-item on-tap="menuClicked" data-panel="logout" class="logout"><iron-icon item-icon="" icon="mdi:exit-to-app"></iron-icon><span class="item-text">Log Out</span></paper-icon-item></paper-menu><div><template is="dom-if" if="[[supportPush]]"><div class="divider"></div><paper-item class="horizontal layout justified"><div class="setting">Push Notifications</div><paper-toggle-button on-change="handlePushChange" checked="{{pushToggleChecked}}"></paper-toggle-button></paper-item></template><div class="divider"></div><div class="subheader">Developer Tools</div><div class="dev-tools layout horizontal justified"><paper-icon-button icon="mdi:remote" data-panel="dev-service" alt="Services" title="Services" on-tap="menuClicked"></paper-icon-button><paper-icon-button icon="mdi:code-tags" data-panel="dev-state" alt="States" title="States" on-tap="menuClicked"></paper-icon-button><paper-icon-button icon="mdi:radio-tower" data-panel="dev-event" alt="Events" title="Events" on-tap="menuClicked"></paper-icon-button><paper-icon-button icon="mdi:file-xml" data-panel="dev-template" alt="Templates" title="Templates" on-tap="menuClicked"></paper-icon-button><paper-icon-button icon="mdi:information-outline" data-panel="dev-info" alt="Info" title="Info" on-tap="menuClicked"></paper-icon-button></div></div></template></dom-module><script>Polymer({is:"ha-sidebar",behaviors:[window.hassBehavior],properties:{hass:{type:Object},menuShown:{type:Boolean},menuSelected:{type:String},narrow:{type:Boolean},selected:{type:String,bindNuclear:function(t){return t.navigationGetters.activePanelName}},panels:{type:Array,bindNuclear:function(t){return[t.navigationGetters.panels,function(t){return t.toJS()}]}},supportPush:{type:Boolean,value:!1,bindNuclear:function(t){return t.pushNotificationGetters.isSupported}},pushToggleChecked:{type:Boolean,bindNuclear:function(t){return t.pushNotificationGetters.isActive}}},created:function(){this._boundUpdateStyles=this.updateStyles.bind(this)},computePanels:function(t){var e={map:1,logbook:2,history:3},n=[];return Object.keys(t).forEach(function(e){t[e].title&&n.push(t[e])}),n.sort(function(t,n){var i=t.component_name in e,o=n.component_name in e;return i&&o?e[t.component_name]-e[n.component_name]:i?-1:o?1:t.title>n.title?1:t.title<n.title?-1:0}),n},menuSelect:function(){this.debounce("updateStyles",this._boundUpdateStyles,1)},menuClicked:function(t){for(var e=t.target,n=5,i=e.getAttribute("data-panel");n&&!i;)e=e.parentElement,i=e.getAttribute("data-panel"),n--;n&&this.selectPanel(i)},toggleMenu:function(){this.fire("close-menu")},selectPanel:function(t){if(t!==this.selected){if("logout"===t)return void this.handleLogOut();this.hass.navigationActions.navigate.apply(null,t.split("/")),this.debounce("updateStyles",this._boundUpdateStyles,1)}},handlePushChange:function(t){t.target.checked?this.hass.pushNotificationActions.subscribePushNotifications().then(function(t){this.pushToggleChecked=t}.bind(this)):this.hass.pushNotificationActions.unsubscribePushNotifications().then(function(t){this.pushToggleChecked=!t}.bind(this))},handleLogOut:function(){this.hass.authActions.logOut()}})</script><dom-module id="home-assistant-main" assetpath="layouts/"><template><notification-manager hass="[[hass]]"></notification-manager><more-info-dialog hass="[[hass]]"></more-info-dialog><ha-voice-command-dialog hass="[[hass]]"></ha-voice-command-dialog><iron-media-query query="(max-width: 870px)" query-matches="{{narrow}}"></iron-media-query><paper-drawer-panel id="drawer" force-narrow="[[computeForceNarrow(narrow, showSidebar)]]" responsive-width="0" disable-swipe="[[isSelectedMap]]" disable-edge-swipe="[[isSelectedMap]]"><ha-sidebar drawer="" narrow="[[narrow]]" hass="[[hass]]"></ha-sidebar><iron-pages main="" attr-for-selected="id" fallback-selection="panel-resolver" selected="[[activePanel]]" selected-attribute="panel-visible"><partial-cards id="states" narrow="[[narrow]]" hass="[[hass]]" show-menu="[[showSidebar]]"></partial-cards><partial-panel-resolver id="panel-resolver" narrow="[[narrow]]" hass="[[hass]]" show-menu="[[showSidebar]]"></partial-panel-resolver></iron-pages></paper-drawer-panel></template></dom-module><script>Polymer({is:"home-assistant-main",behaviors:[window.hassBehavior],properties:{hass:{type:Object},narrow:{type:Boolean,value:!0},activePanel:{type:String,bindNuclear:function(e){return e.navigationGetters.activePanelName},observer:"activePanelChanged"},showSidebar:{type:Boolean,value:!1,bindNuclear:function(e){return e.navigationGetters.showSidebar}}},listeners:{"open-menu":"openMenu","close-menu":"closeMenu"},openMenu:function(){this.narrow?this.$.drawer.openDrawer():this.hass.navigationActions.showSidebar(!0)},closeMenu:function(){this.$.drawer.closeDrawer(),this.showSidebar&&this.hass.navigationActions.showSidebar(!1)},activePanelChanged:function(){this.narrow&&this.$.drawer.closeDrawer()},attached:function(){window.removeInitMsg(),this.hass.startUrlSync()},computeForceNarrow:function(e,n){return e||!n},detached:function(){this.hass.stopUrlSync()}})</script></div><dom-module id="home-assistant"><template><template is="dom-if" if="[[loaded]]"><home-assistant-main hass="[[hass]]"></home-assistant-main></template><template is="dom-if" if="[[!loaded]]"><login-form hass="[[hass]]" force-show-loading="[[computeForceShowLoading(dataLoaded, iconsLoaded)]]"></login-form></template></template></dom-module><script>Polymer({is:"home-assistant",hostAttributes:{icons:null},behaviors:[window.hassBehavior],properties:{hass:{type:Object,value:window.hass},icons:{type:String},dataLoaded:{type:Boolean,bindNuclear:function(o){return o.syncGetters.isDataLoaded}},iconsLoaded:{type:Boolean,value:!1},loaded:{type:Boolean,computed:"computeLoaded(dataLoaded, iconsLoaded)"}},computeLoaded:function(o,t){return o&&t},computeForceShowLoading:function(o,t){return o&&!t},loadIcons:function(){var o=function(){this.iconsLoaded=!0}.bind(this);this.importHref("/static/mdi-"+this.icons+".html",o,function(){this.importHref("/static/mdi.html",o,o)})},ready:function(){this.loadIcons()}})</script></body></html> \ No newline at end of file +n&&e.updateNativeStyleProperties(document.documentElement,this.customStyle)}};return r}(),function(){"use strict";var e=Polymer.Base.serializeValueToAttribute,t=Polymer.StyleProperties,n=Polymer.StyleTransformer,r=Polymer.StyleDefaults,s=Polymer.Settings.useNativeShadow,i=Polymer.Settings.useNativeCSSProperties;Polymer.Base._addFeature({_prepStyleProperties:function(){i||(this._ownStylePropertyNames=this._styles&&this._styles.length?t.decorateStyles(this._styles,this):null)},customStyle:null,getComputedStyleValue:function(e){return i||this._styleProperties||this._computeStyleProperties(),!i&&this._styleProperties&&this._styleProperties[e]||getComputedStyle(this).getPropertyValue(e)},_setupStyleProperties:function(){this.customStyle={},this._styleCache=null,this._styleProperties=null,this._scopeSelector=null,this._ownStyleProperties=null,this._customStyle=null},_needsStyleProperties:function(){return Boolean(!i&&this._ownStylePropertyNames&&this._ownStylePropertyNames.length)},_validateApplyShim:function(){if(this.__applyShimInvalid){Polymer.ApplyShim.transform(this._styles,this.__proto__);var e=n.elementStyles(this);if(s){var t=this._template.content.querySelector("style");t&&(t.textContent=e)}else{var r=this._scopeStyle&&this._scopeStyle.nextSibling;r&&(r.textContent=e)}}},_beforeAttached:function(){this._scopeSelector&&!this.__stylePropertiesInvalid||!this._needsStyleProperties()||(this.__stylePropertiesInvalid=!1,this._updateStyleProperties())},_findStyleHost:function(){for(var e,t=this;e=Polymer.dom(t).getOwnerRoot();){if(Polymer.isInstance(e.host))return e.host;t=e.host}return r},_updateStyleProperties:function(){var e,n=this._findStyleHost();n._styleProperties||n._computeStyleProperties(),n._styleCache||(n._styleCache=new Polymer.StyleCache);var r=t.propertyDataFromStyles(n._styles,this),i=!this.__notStyleScopeCacheable;i&&(r.key.customStyle=this.customStyle,e=n._styleCache.retrieve(this.is,r.key,this._styles));var a=Boolean(e);a?this._styleProperties=e._styleProperties:this._computeStyleProperties(r.properties),this._computeOwnStyleProperties(),a||(e=o.retrieve(this.is,this._ownStyleProperties,this._styles));var l=Boolean(e)&&!a,c=this._applyStyleProperties(e);a||(c=c&&s?c.cloneNode(!0):c,e={style:c,_scopeSelector:this._scopeSelector,_styleProperties:this._styleProperties},i&&(r.key.customStyle={},this.mixin(r.key.customStyle,this.customStyle),n._styleCache.store(this.is,e,r.key,this._styles)),l||o.store(this.is,Object.create(e),this._ownStyleProperties,this._styles))},_computeStyleProperties:function(e){var n=this._findStyleHost();n._styleProperties||n._computeStyleProperties();var r=Object.create(n._styleProperties),s=t.hostAndRootPropertiesForScope(this);this.mixin(r,s.hostProps),e=e||t.propertyDataFromStyles(n._styles,this).properties,this.mixin(r,e),this.mixin(r,s.rootProps),t.mixinCustomStyle(r,this.customStyle),t.reify(r),this._styleProperties=r},_computeOwnStyleProperties:function(){for(var e,t={},n=0;n<this._ownStylePropertyNames.length;n++)e=this._ownStylePropertyNames[n],t[e]=this._styleProperties[e];this._ownStyleProperties=t},_scopeCount:0,_applyStyleProperties:function(e){var n=this._scopeSelector;this._scopeSelector=e?e._scopeSelector:this.is+"-"+this.__proto__._scopeCount++;var r=t.applyElementStyle(this,this._styleProperties,this._scopeSelector,e&&e.style);return s||t.applyElementScopeSelector(this,this._scopeSelector,n,this._scopeCssViaAttr),r},serializeValueToAttribute:function(t,n,r){if(r=r||this,"class"===n&&!s){var i=r===this?this.domHost||this.dataHost:this;i&&(t=i._scopeElementClass(r,t))}r=this.shadyRoot&&this.shadyRoot._hasDistributed?Polymer.dom(r):r,e.call(this,t,n,r)},_scopeElementClass:function(e,t){return s||this._scopeCssViaAttr||(t=(t?t+" ":"")+a+" "+this.is+(e._scopeSelector?" "+l+" "+e._scopeSelector:"")),t},updateStyles:function(e){e&&this.mixin(this.customStyle,e),i?t.updateNativeStyleProperties(this,this.customStyle):(this.isAttached?this._needsStyleProperties()?this._updateStyleProperties():this._styleProperties=null:this.__stylePropertiesInvalid=!0,this._styleCache&&this._styleCache.clear(),this._updateRootStyles())},_updateRootStyles:function(e){e=e||this.root;for(var t,n=Polymer.dom(e)._query(function(e){return e.shadyRoot||e.shadowRoot}),r=0,s=n.length;r<s&&(t=n[r]);r++)t.updateStyles&&t.updateStyles()}}),Polymer.updateStyles=function(e){r.updateStyles(e),Polymer.Base._updateRootStyles(document)};var o=new Polymer.StyleCache;Polymer.customStyleCache=o;var a=n.SCOPE_NAME,l=t.XSCOPE_NAME}(),Polymer.Base._addFeature({_registerFeatures:function(){this._prepIs(),this._prepConstructor(),this._prepStyles()},_finishRegisterFeatures:function(){this._prepTemplate(),this._prepShimStyles(),this._prepAnnotations(),this._prepEffects(),this._prepBehaviors(),this._prepPropertyInfo(),this._prepBindings(),this._prepShady()},_prepBehavior:function(e){this._addPropertyEffects(e.properties),this._addComplexObserverEffects(e.observers),this._addHostAttributes(e.hostAttributes)},_initFeatures:function(){this._setupGestures(),this._setupConfigure(),this._setupStyleProperties(),this._setupDebouncers(),this._setupShady(),this._registerHost(),this._template&&(this._validateApplyShim(),this._poolContent(),this._beginHosting(),this._stampTemplate(),this._endHosting(),this._marshalAnnotationReferences()),this._marshalInstanceEffects(),this._marshalBehaviors(),this._marshalHostAttributes(),this._marshalAttributes(),this._tryReady()},_marshalBehavior:function(e){e.listeners&&this._listenListeners(e.listeners)}}),function(){var e,t=Polymer.StyleProperties,n=Polymer.StyleUtil,r=Polymer.CssParse,s=Polymer.StyleDefaults,i=Polymer.StyleTransformer,o=Polymer.ApplyShim,a=Polymer.Debounce,l=Polymer.Settings;Polymer({is:"custom-style",extends:"style",_template:null,properties:{include:String},ready:function(){this.__appliedElement=this.__appliedElement||this,this.__cssBuild=n.getCssBuildType(this),this.__appliedElement!==this&&(this.__appliedElement.__cssBuild=this.__cssBuild),this._tryApply()},attached:function(){this._tryApply()},_tryApply:function(){if(!this._appliesToDocument&&this.parentNode&&"dom-module"!==this.parentNode.localName){this._appliesToDocument=!0;var e=this.__appliedElement;if(l.useNativeCSSProperties||(this.__needsUpdateStyles=s.hasStyleProperties(),s.addStyle(e)),e.textContent||this.include)this._apply(!0);else{var t=this,n=new MutationObserver(function(){n.disconnect(),t._apply(!0)});n.observe(e,{childList:!0})}}},_updateStyles:function(){Polymer.updateStyles()},_apply:function(e){var t=this.__appliedElement;if(this.include&&(t.textContent=n.cssFromModules(this.include,!0)+t.textContent),t.textContent){var r=this.__cssBuild,s=n.isTargetedBuild(r);if(!l.useNativeCSSProperties||!s){var a=n.rulesForStyle(t);if(s||(n.forEachRule(a,function(e){i.documentRule(e)}),l.useNativeCSSProperties&&!r&&o.transform([t])),l.useNativeCSSProperties)t.textContent=n.toCssText(a);else{var c=this,h=function(){c._flushCustomProperties()};e?Polymer.RenderStatus.whenReady(h):h()}}}},_flushCustomProperties:function(){this.__needsUpdateStyles?(this.__needsUpdateStyles=!1,e=a(e,this._updateStyles)):this._applyCustomProperties()},_applyCustomProperties:function(){var e=this.__appliedElement;this._computeStyleProperties();var s=this._styleProperties,i=n.rulesForStyle(e);i&&(e.textContent=n.toCssText(i,function(e){var n=e.cssText=e.parsedCssText;e.propertyInfo&&e.propertyInfo.cssText&&(n=r.removeCustomPropAssignment(n),e.cssText=t.valueForProperties(n,s))}))}})}(),Polymer.Templatizer={properties:{__hideTemplateChildren__:{observer:"_showHideChildren"}},_instanceProps:Polymer.nob,_parentPropPrefix:"_parent_",templatize:function(e){if(this._templatized=e,e._content||(e._content=e.content),e._content._ctor)return this.ctor=e._content._ctor,void this._prepParentProperties(this.ctor.prototype,e);var t=Object.create(Polymer.Base);this._customPrepAnnotations(t,e),this._prepParentProperties(t,e),t._prepEffects(),this._customPrepEffects(t),t._prepBehaviors(),t._prepPropertyInfo(),t._prepBindings(),t._notifyPathUp=this._notifyPathUpImpl,t._scopeElementClass=this._scopeElementClassImpl,t.listen=this._listenImpl,t._showHideChildren=this._showHideChildrenImpl,t.__setPropertyOrig=this.__setProperty,t.__setProperty=this.__setPropertyImpl;var n=this._constructorImpl,r=function(e,t){n.call(this,e,t)};r.prototype=t,t.constructor=r,e._content._ctor=r,this.ctor=r},_getRootDataHost:function(){return this.dataHost&&this.dataHost._rootDataHost||this.dataHost},_showHideChildrenImpl:function(e){for(var t=this._children,n=0;n<t.length;n++){var r=t[n];Boolean(e)!=Boolean(r.__hideTemplateChildren__)&&(r.nodeType===Node.TEXT_NODE?e?(r.__polymerTextContent__=r.textContent,r.textContent=""):r.textContent=r.__polymerTextContent__:r.style&&(e?(r.__polymerDisplay__=r.style.display,r.style.display="none"):r.style.display=r.__polymerDisplay__)),r.__hideTemplateChildren__=e}},__setPropertyImpl:function(e,t,n,r){r&&r.__hideTemplateChildren__&&"textContent"==e&&(e="__polymerTextContent__"),this.__setPropertyOrig(e,t,n,r)},_debounceTemplate:function(e){Polymer.dom.addDebouncer(this.debounce("_debounceTemplate",e))},_flushTemplates:function(){Polymer.dom.flush()},_customPrepEffects:function(e){var t=e._parentProps;for(var n in t)e._addPropertyEffect(n,"function",this._createHostPropEffector(n));for(n in this._instanceProps)e._addPropertyEffect(n,"function",this._createInstancePropEffector(n))},_customPrepAnnotations:function(e,t){e._template=t;var n=t._content;if(!n._notes){var r=e._rootDataHost;r&&(Polymer.Annotations.prepElement=function(){r._prepElement()}),n._notes=Polymer.Annotations.parseAnnotations(t),Polymer.Annotations.prepElement=null,this._processAnnotations(n._notes)}e._notes=n._notes,e._parentProps=n._parentProps},_prepParentProperties:function(e,t){var n=this._parentProps=e._parentProps;if(this._forwardParentProp&&n){var r,s=e._parentPropProto;if(!s){for(r in this._instanceProps)delete n[r];s=e._parentPropProto=Object.create(null),t!=this&&(Polymer.Bind.prepareModel(s),Polymer.Base.prepareModelNotifyPath(s));for(r in n){var i=this._parentPropPrefix+r,o=[{kind:"function",effect:this._createForwardPropEffector(r),fn:Polymer.Bind._functionEffect},{kind:"notify",fn:Polymer.Bind._notifyEffect,effect:{event:Polymer.CaseMap.camelToDashCase(i)+"-changed"}}];Polymer.Bind._createAccessors(s,i,o)}}var a=this;t!=this&&(Polymer.Bind.prepareInstance(t),t._forwardParentProp=function(e,t){a._forwardParentProp(e,t)}),this._extendTemplate(t,s),t._pathEffector=function(e,t,n){return a._pathEffectorImpl(e,t,n)}}},_createForwardPropEffector:function(e){return function(t,n){this._forwardParentProp(e,n)}},_createHostPropEffector:function(e){var t=this._parentPropPrefix;return function(n,r){this.dataHost._templatized[t+e]=r}},_createInstancePropEffector:function(e){return function(t,n,r,s){s||this.dataHost._forwardInstanceProp(this,e,n)}},_extendTemplate:function(e,t){var n=Object.getOwnPropertyNames(t);t._propertySetter&&(e._propertySetter=t._propertySetter);for(var r,s=0;s<n.length&&(r=n[s]);s++){var i=e[r],o=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(e,r,o),void 0!==i&&e._propertySetter(r,i)}},_showHideChildren:function(e){},_forwardInstancePath:function(e,t,n){},_forwardInstanceProp:function(e,t,n){},_notifyPathUpImpl:function(e,t){var n=this.dataHost,r=Polymer.Path.root(e);n._forwardInstancePath.call(n,this,e,t),r in n._parentProps&&n._templatized._notifyPath(n._parentPropPrefix+e,t)},_pathEffectorImpl:function(e,t,n){if(this._forwardParentPath&&0===e.indexOf(this._parentPropPrefix)){var r=e.substring(this._parentPropPrefix.length),s=Polymer.Path.root(r);s in this._parentProps&&this._forwardParentPath(r,t)}Polymer.Base._pathEffector.call(this._templatized,e,t,n)},_constructorImpl:function(e,t){this._rootDataHost=t._getRootDataHost(),this._setupConfigure(e),this._registerHost(t),this._beginHosting(),this.root=this.instanceTemplate(this._template),this.root.__noContent=!this._notes._hasContent,this.root.__styleScoped=!0,this._endHosting(),this._marshalAnnotatedNodes(),this._marshalInstanceEffects(),this._marshalAnnotatedListeners();for(var n=[],r=this.root.firstChild;r;r=r.nextSibling)n.push(r),r._templateInstance=this;this._children=n,t.__hideTemplateChildren__&&this._showHideChildren(!0),this._tryReady()},_listenImpl:function(e,t,n){var r=this,s=this._rootDataHost,i=s._createEventHandler(e,t,n),o=function(e){e.model=r,i(e)};s._listen(e,t,o)},_scopeElementClassImpl:function(e,t){var n=this._rootDataHost;return n?n._scopeElementClass(e,t):t},stamp:function(e){if(e=e||{},this._parentProps){var t=this._templatized;for(var n in this._parentProps)void 0===e[n]&&(e[n]=t[this._parentPropPrefix+n])}return new this.ctor(e,this)},modelForElement:function(e){for(var t;e;)if(t=e._templateInstance){if(t.dataHost==this)return t;e=t.dataHost}else e=e.parentNode}},Polymer({is:"dom-template",extends:"template",_template:null,behaviors:[Polymer.Templatizer],ready:function(){this.templatize(this)}}),Polymer._collections=new WeakMap,Polymer.Collection=function(e){Polymer._collections.set(e,this),this.userArray=e,this.store=e.slice(),this.initMap()},Polymer.Collection.prototype={constructor:Polymer.Collection,initMap:function(){for(var e=this.omap=new WeakMap,t=this.pmap={},n=this.store,r=0;r<n.length;r++){var s=n[r];s&&"object"==typeof s?e.set(s,r):t[s]=r}},add:function(e){var t=this.store.push(e)-1;return e&&"object"==typeof e?this.omap.set(e,t):this.pmap[e]=t,"#"+t},removeKey:function(e){(e=this._parseKey(e))&&(this._removeFromMap(this.store[e]),delete this.store[e])},_removeFromMap:function(e){e&&"object"==typeof e?this.omap.delete(e):delete this.pmap[e]},remove:function(e){var t=this.getKey(e);return this.removeKey(t),t},getKey:function(e){var t;if(t=e&&"object"==typeof e?this.omap.get(e):this.pmap[e],void 0!=t)return"#"+t},getKeys:function(){return Object.keys(this.store).map(function(e){return"#"+e})},_parseKey:function(e){if(e&&"#"==e[0])return e.slice(1)},setItem:function(e,t){if(e=this._parseKey(e)){var n=this.store[e];n&&this._removeFromMap(n),t&&"object"==typeof t?this.omap.set(t,e):this.pmap[t]=e,this.store[e]=t}},getItem:function(e){if(e=this._parseKey(e))return this.store[e]},getItems:function(){var e=[],t=this.store;for(var n in t)e.push(t[n]);return e},_applySplices:function(e){for(var t,n,r={},s=0;s<e.length&&(n=e[s]);s++){n.addedKeys=[];for(var i=0;i<n.removed.length;i++)t=this.getKey(n.removed[i]),r[t]=r[t]?null:-1;for(i=0;i<n.addedCount;i++){var o=this.userArray[n.index+i];t=this.getKey(o),t=void 0===t?this.add(o):t,r[t]=r[t]?null:1,n.addedKeys.push(t)}}var a=[],l=[];for(t in r)r[t]<0&&(this.removeKey(t),a.push(t)),r[t]>0&&l.push(t);return[{removed:a,added:l}]}},Polymer.Collection.get=function(e){return Polymer._collections.get(e)||new Polymer.Collection(e)},Polymer.Collection.applySplices=function(e,t){var n=Polymer._collections.get(e);return n?n._applySplices(t):null},Polymer({is:"dom-repeat",extends:"template",_template:null,properties:{items:{type:Array},as:{type:String,value:"item"},indexAs:{type:String,value:"index"},sort:{type:Function,observer:"_sortChanged"},filter:{type:Function,observer:"_filterChanged"},observe:{type:String,observer:"_observeChanged"},delay:Number,renderedItemCount:{type:Number,notify:!0,readOnly:!0},initialCount:{type:Number,observer:"_initializeChunking"},targetFramerate:{type:Number,value:20},_targetFrameTime:{type:Number,computed:"_computeFrameTime(targetFramerate)"}},behaviors:[Polymer.Templatizer],observers:["_itemsChanged(items.*)"],created:function(){this._instances=[],this._pool=[],this._limit=1/0;var e=this;this._boundRenderChunk=function(){e._renderChunk()}},detached:function(){this.__isDetached=!0;for(var e=0;e<this._instances.length;e++)this._detachInstance(e)},attached:function(){if(this.__isDetached){this.__isDetached=!1;for(var e=Polymer.dom(Polymer.dom(this).parentNode),t=0;t<this._instances.length;t++)this._attachInstance(t,e)}},ready:function(){this._instanceProps={__key__:!0},this._instanceProps[this.as]=!0,this._instanceProps[this.indexAs]=!0,this.ctor||this.templatize(this)},_sortChanged:function(e){var t=this._getRootDataHost();this._sortFn=e&&("function"==typeof e?e:function(){return t[e].apply(t,arguments)}),this._needFullRefresh=!0,this.items&&this._debounceTemplate(this._render)},_filterChanged:function(e){var t=this._getRootDataHost();this._filterFn=e&&("function"==typeof e?e:function(){return t[e].apply(t,arguments)}),this._needFullRefresh=!0,this.items&&this._debounceTemplate(this._render)},_computeFrameTime:function(e){return Math.ceil(1e3/e)},_initializeChunking:function(){this.initialCount&&(this._limit=this.initialCount,this._chunkCount=this.initialCount,this._lastChunkTime=performance.now())},_tryRenderChunk:function(){this.items&&this._limit<this.items.length&&this.debounce("renderChunk",this._requestRenderChunk)},_requestRenderChunk:function(){requestAnimationFrame(this._boundRenderChunk)},_renderChunk:function(){var e=performance.now(),t=this._targetFrameTime/(e-this._lastChunkTime);this._chunkCount=Math.round(this._chunkCount*t)||1,this._limit+=this._chunkCount,this._lastChunkTime=e,this._debounceTemplate(this._render)},_observeChanged:function(){this._observePaths=this.observe&&this.observe.replace(".*",".").split(" ")},_itemsChanged:function(e){if("items"==e.path)Array.isArray(this.items)?this.collection=Polymer.Collection.get(this.items):this.items?this._error(this._logf("dom-repeat","expected array for `items`, found",this.items)):this.collection=null,this._keySplices=[],this._indexSplices=[],this._needFullRefresh=!0,this._initializeChunking(),this._debounceTemplate(this._render);else if("items.splices"==e.path)this._keySplices=this._keySplices.concat(e.value.keySplices),this._indexSplices=this._indexSplices.concat(e.value.indexSplices),this._debounceTemplate(this._render);else{var t=e.path.slice(6);this._forwardItemPath(t,e.value),this._checkObservedPaths(t)}},_checkObservedPaths:function(e){if(this._observePaths){e=e.substring(e.indexOf(".")+1);for(var t=this._observePaths,n=0;n<t.length;n++)if(0===e.indexOf(t[n]))return this._needFullRefresh=!0,void(this.delay?this.debounce("render",this._render,this.delay):this._debounceTemplate(this._render))}},render:function(){this._needFullRefresh=!0,this._debounceTemplate(this._render),this._flushTemplates()},_render:function(){this._needFullRefresh?(this._applyFullRefresh(),this._needFullRefresh=!1):this._keySplices.length&&(this._sortFn?this._applySplicesUserSort(this._keySplices):this._filterFn?this._applyFullRefresh():this._applySplicesArrayOrder(this._indexSplices)),this._keySplices=[],this._indexSplices=[];for(var e=this._keyToInstIdx={},t=this._instances.length-1;t>=0;t--){var n=this._instances[t];n.isPlaceholder&&t<this._limit?n=this._insertInstance(t,n.__key__):!n.isPlaceholder&&t>=this._limit&&(n=this._downgradeInstance(t,n.__key__)),e[n.__key__]=t,n.isPlaceholder||n.__setProperty(this.indexAs,t,!0)}this._pool.length=0,this._setRenderedItemCount(this._instances.length),this.fire("dom-change"),this._tryRenderChunk()},_applyFullRefresh:function(){var e,t=this.collection;if(this._sortFn)e=t?t.getKeys():[];else{e=[];var n=this.items;if(n)for(var r=0;r<n.length;r++)e.push(t.getKey(n[r]))}var s=this;for(this._filterFn&&(e=e.filter(function(e){return s._filterFn(t.getItem(e))})),this._sortFn&&e.sort(function(e,n){return s._sortFn(t.getItem(e),t.getItem(n))}),r=0;r<e.length;r++){var i=e[r],o=this._instances[r];o?(o.__key__=i,!o.isPlaceholder&&r<this._limit&&o.__setProperty(this.as,t.getItem(i),!0)):r<this._limit?this._insertInstance(r,i):this._insertPlaceholder(r,i)}for(var a=this._instances.length-1;a>=r;a--)this._detachAndRemoveInstance(a)},_numericSort:function(e,t){return e-t},_applySplicesUserSort:function(e){for(var t,n,r=this.collection,s={},i=0;i<e.length&&(n=e[i]);i++){for(var o=0;o<n.removed.length;o++)t=n.removed[o],s[t]=s[t]?null:-1;for(o=0;o<n.added.length;o++)t=n.added[o],s[t]=s[t]?null:1}var a=[],l=[];for(t in s)s[t]===-1&&a.push(this._keyToInstIdx[t]),1===s[t]&&l.push(t);if(a.length)for(a.sort(this._numericSort),i=a.length-1;i>=0;i--){var c=a[i];void 0!==c&&this._detachAndRemoveInstance(c)}var h=this;if(l.length){this._filterFn&&(l=l.filter(function(e){return h._filterFn(r.getItem(e))})),l.sort(function(e,t){return h._sortFn(r.getItem(e),r.getItem(t))});var u=0;for(i=0;i<l.length;i++)u=this._insertRowUserSort(u,l[i])}},_insertRowUserSort:function(e,t){for(var n=this.collection,r=n.getItem(t),s=this._instances.length-1,i=-1;e<=s;){var o=e+s>>1,a=this._instances[o].__key__,l=this._sortFn(n.getItem(a),r);if(l<0)e=o+1;else{if(!(l>0)){i=o;break}s=o-1}}return i<0&&(i=s+1),this._insertPlaceholder(i,t),i},_applySplicesArrayOrder:function(e){for(var t,n=0;n<e.length&&(t=e[n]);n++){for(var r=0;r<t.removed.length;r++)this._detachAndRemoveInstance(t.index);for(r=0;r<t.addedKeys.length;r++)this._insertPlaceholder(t.index+r,t.addedKeys[r])}},_detachInstance:function(e){var t=this._instances[e];if(!t.isPlaceholder){for(var n=0;n<t._children.length;n++){var r=t._children[n];Polymer.dom(t.root).appendChild(r)}return t}},_attachInstance:function(e,t){var n=this._instances[e];n.isPlaceholder||t.insertBefore(n.root,this)},_detachAndRemoveInstance:function(e){var t=this._detachInstance(e);t&&this._pool.push(t),this._instances.splice(e,1)},_insertPlaceholder:function(e,t){this._instances.splice(e,0,{isPlaceholder:!0,__key__:t})},_stampInstance:function(e,t){var n={__key__:t};return n[this.as]=this.collection.getItem(t),n[this.indexAs]=e,this.stamp(n)},_insertInstance:function(e,t){var n=this._pool.pop();n?(n.__setProperty(this.as,this.collection.getItem(t),!0),n.__setProperty("__key__",t,!0)):n=this._stampInstance(e,t);var r=this._instances[e+1],s=r&&!r.isPlaceholder?r._children[0]:this,i=Polymer.dom(this).parentNode;return Polymer.dom(i).insertBefore(n.root,s),this._instances[e]=n,n},_downgradeInstance:function(e,t){var n=this._detachInstance(e);return n&&this._pool.push(n),n={isPlaceholder:!0,__key__:t},this._instances[e]=n,n},_showHideChildren:function(e){for(var t=0;t<this._instances.length;t++)this._instances[t].isPlaceholder||this._instances[t]._showHideChildren(e)},_forwardInstanceProp:function(e,t,n){if(t==this.as){var r;r=this._sortFn||this._filterFn?this.items.indexOf(this.collection.getItem(e.__key__)):e[this.indexAs],this.set("items."+r,n)}},_forwardInstancePath:function(e,t,n){0===t.indexOf(this.as+".")&&this._notifyPath("items."+e.__key__+"."+t.slice(this.as.length+1),n)},_forwardParentProp:function(e,t){for(var n,r=this._instances,s=0;s<r.length&&(n=r[s]);s++)n.isPlaceholder||n.__setProperty(e,t,!0)},_forwardParentPath:function(e,t){for(var n,r=this._instances,s=0;s<r.length&&(n=r[s]);s++)n.isPlaceholder||n._notifyPath(e,t,!0)},_forwardItemPath:function(e,t){if(this._keyToInstIdx){var n=e.indexOf("."),r=e.substring(0,n<0?e.length:n),s=this._keyToInstIdx[r],i=this._instances[s];i&&!i.isPlaceholder&&(n>=0?(e=this.as+"."+e.substring(n+1),i._notifyPath(e,t,!0)):i.__setProperty(this.as,t,!0))}},itemForElement:function(e){var t=this.modelForElement(e);return t&&t[this.as]},keyForElement:function(e){var t=this.modelForElement(e);return t&&t.__key__},indexForElement:function(e){var t=this.modelForElement(e);return t&&t[this.indexAs]}}),Polymer({is:"array-selector",_template:null,properties:{items:{type:Array,observer:"clearSelection"},multi:{type:Boolean,value:!1,observer:"clearSelection"},selected:{type:Object,notify:!0},selectedItem:{type:Object,notify:!0},toggle:{type:Boolean,value:!1}},clearSelection:function(){if(Array.isArray(this.selected))for(var e=0;e<this.selected.length;e++)this.unlinkPaths("selected."+e);else this.unlinkPaths("selected"),this.unlinkPaths("selectedItem");this.multi?this.selected&&!this.selected.length||(this.selected=[],this._selectedColl=Polymer.Collection.get(this.selected)):(this.selected=null,this._selectedColl=null),this.selectedItem=null},isSelected:function(e){return this.multi?void 0!==this._selectedColl.getKey(e):this.selected==e},deselect:function(e){if(this.multi){if(this.isSelected(e)){var t=this._selectedColl.getKey(e);this.arrayDelete("selected",e),this.unlinkPaths("selected."+t)}}else this.selected=null,this.selectedItem=null,this.unlinkPaths("selected"),this.unlinkPaths("selectedItem")},select:function(e){var t=Polymer.Collection.get(this.items),n=t.getKey(e);if(this.multi)if(this.isSelected(e))this.toggle&&this.deselect(e);else{this.push("selected",e);var r=this._selectedColl.getKey(e);this.linkPaths("selected."+r,"items."+n)}else this.toggle&&e==this.selected?this.deselect():(this.selected=e,this.selectedItem=e,this.linkPaths("selected","items."+n),this.linkPaths("selectedItem","items."+n))}}),Polymer({is:"dom-if",extends:"template",_template:null,properties:{if:{type:Boolean,value:!1,observer:"_queueRender"},restamp:{type:Boolean,value:!1,observer:"_queueRender"}},behaviors:[Polymer.Templatizer],_queueRender:function(){this._debounceTemplate(this._render)},detached:function(){this.parentNode&&(this.parentNode.nodeType!=Node.DOCUMENT_FRAGMENT_NODE||Polymer.Settings.hasShadow&&this.parentNode instanceof ShadowRoot)||this._teardownInstance()},attached:function(){this.if&&this.ctor&&this.async(this._ensureInstance)},render:function(){this._flushTemplates()},_render:function(){this.if?(this.ctor||this.templatize(this),this._ensureInstance(),this._showHideChildren()):this.restamp&&this._teardownInstance(),!this.restamp&&this._instance&&this._showHideChildren(),this.if!=this._lastIf&&(this.fire("dom-change"),this._lastIf=this.if)},_ensureInstance:function(){var e=Polymer.dom(this).parentNode;if(e){var t=Polymer.dom(e);if(this._instance){var n=this._instance._children;if(n&&n.length){var r=Polymer.dom(this).previousSibling;if(r!==n[n.length-1])for(var s,i=0;i<n.length&&(s=n[i]);i++)t.insertBefore(s,this)}}else{this._instance=this.stamp();var o=this._instance.root;t.insertBefore(o,this)}}},_teardownInstance:function(){if(this._instance){var e=this._instance._children;if(e&&e.length)for(var t,n=Polymer.dom(Polymer.dom(e[0]).parentNode),r=0;r<e.length&&(t=e[r]);r++)n.removeChild(t);this._instance=null}},_showHideChildren:function(){var e=this.__hideTemplateChildren__||!this.if;this._instance&&this._instance._showHideChildren(e)},_forwardParentProp:function(e,t){this._instance&&this._instance.__setProperty(e,t,!0)},_forwardParentPath:function(e,t){this._instance&&this._instance._notifyPath(e,t,!0)}}),Polymer({is:"dom-bind",extends:"template",_template:null,created:function(){var e=this;Polymer.RenderStatus.whenReady(function(){"loading"==document.readyState?document.addEventListener("DOMContentLoaded",function(){e._markImportsReady()}):e._markImportsReady()})},_ensureReady:function(){this._readied||this._readySelf()},_markImportsReady:function(){this._importsReady=!0,this._ensureReady()},_registerFeatures:function(){this._prepConstructor()},_insertChildren:function(){var e=Polymer.dom(Polymer.dom(this).parentNode);e.insertBefore(this.root,this)},_removeChildren:function(){if(this._children)for(var e=0;e<this._children.length;e++)this.root.appendChild(this._children[e])},_initFeatures:function(){},_scopeElementClass:function(e,t){return this.dataHost?this.dataHost._scopeElementClass(e,t):t},_configureInstanceProperties:function(){},_prepConfigure:function(){var e={};for(var t in this._propertyEffects)e[t]=this[t];var n=this._setupConfigure;this._setupConfigure=function(){n.call(this,e)}},attached:function(){this._importsReady&&this.render()},detached:function(){this._removeChildren()},render:function(){this._ensureReady(),this._children||(this._template=this,this._prepAnnotations(),this._prepEffects(),this._prepBehaviors(),this._prepConfigure(),this._prepBindings(),this._prepPropertyInfo(),Polymer.Base._initFeatures.call(this),this._children=Polymer.TreeApi.arrayCopyChildNodes(this.root)),this._insertChildren(),this.fire("dom-change")}})</script><style>[hidden]{display:none!important}</style><style is="custom-style">:root{--layout:{display:-ms-flexbox;display:-webkit-flex;display:flex};--layout-inline:{display:-ms-inline-flexbox;display:-webkit-inline-flex;display:inline-flex};--layout-horizontal:{@apply(--layout);-ms-flex-direction:row;-webkit-flex-direction:row;flex-direction:row};--layout-horizontal-reverse:{@apply(--layout);-ms-flex-direction:row-reverse;-webkit-flex-direction:row-reverse;flex-direction:row-reverse};--layout-vertical:{@apply(--layout);-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column};--layout-vertical-reverse:{@apply(--layout);-ms-flex-direction:column-reverse;-webkit-flex-direction:column-reverse;flex-direction:column-reverse};--layout-wrap:{-ms-flex-wrap:wrap;-webkit-flex-wrap:wrap;flex-wrap:wrap};--layout-wrap-reverse:{-ms-flex-wrap:wrap-reverse;-webkit-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse};--layout-flex-auto:{-ms-flex:1 1 auto;-webkit-flex:1 1 auto;flex:1 1 auto};--layout-flex-none:{-ms-flex:none;-webkit-flex:none;flex:none};--layout-flex:{-ms-flex:1 1 0px;-webkit-flex:1;flex:1;-webkit-flex-basis:0px;flex-basis:0px};--layout-flex-2:{-ms-flex:2;-webkit-flex:2;flex:2};--layout-flex-3:{-ms-flex:3;-webkit-flex:3;flex:3};--layout-flex-4:{-ms-flex:4;-webkit-flex:4;flex:4};--layout-flex-5:{-ms-flex:5;-webkit-flex:5;flex:5};--layout-flex-6:{-ms-flex:6;-webkit-flex:6;flex:6};--layout-flex-7:{-ms-flex:7;-webkit-flex:7;flex:7};--layout-flex-8:{-ms-flex:8;-webkit-flex:8;flex:8};--layout-flex-9:{-ms-flex:9;-webkit-flex:9;flex:9};--layout-flex-10:{-ms-flex:10;-webkit-flex:10;flex:10};--layout-flex-11:{-ms-flex:11;-webkit-flex:11;flex:11};--layout-flex-12:{-ms-flex:12;-webkit-flex:12;flex:12};--layout-start:{-ms-flex-align:start;-webkit-align-items:flex-start;align-items:flex-start};--layout-center:{-ms-flex-align:center;-webkit-align-items:center;align-items:center};--layout-end:{-ms-flex-align:end;-webkit-align-items:flex-end;align-items:flex-end};--layout-baseline:{-ms-flex-align:baseline;-webkit-align-items:baseline;align-items:baseline};--layout-start-justified:{-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start};--layout-center-justified:{-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center};--layout-end-justified:{-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end};--layout-around-justified:{-ms-flex-pack:distribute;-webkit-justify-content:space-around;justify-content:space-around};--layout-justified:{-ms-flex-pack:justify;-webkit-justify-content:space-between;justify-content:space-between};--layout-center-center:{@apply(--layout-center);@apply(--layout-center-justified)};--layout-self-start:{-ms-align-self:flex-start;-webkit-align-self:flex-start;align-self:flex-start};--layout-self-center:{-ms-align-self:center;-webkit-align-self:center;align-self:center};--layout-self-end:{-ms-align-self:flex-end;-webkit-align-self:flex-end;align-self:flex-end};--layout-self-stretch:{-ms-align-self:stretch;-webkit-align-self:stretch;align-self:stretch};--layout-self-baseline:{-ms-align-self:baseline;-webkit-align-self:baseline;align-self:baseline};--layout-start-aligned:{-ms-flex-line-pack:start;-ms-align-content:flex-start;-webkit-align-content:flex-start;align-content:flex-start};--layout-end-aligned:{-ms-flex-line-pack:end;-ms-align-content:flex-end;-webkit-align-content:flex-end;align-content:flex-end};--layout-center-aligned:{-ms-flex-line-pack:center;-ms-align-content:center;-webkit-align-content:center;align-content:center};--layout-between-aligned:{-ms-flex-line-pack:justify;-ms-align-content:space-between;-webkit-align-content:space-between;align-content:space-between};--layout-around-aligned:{-ms-flex-line-pack:distribute;-ms-align-content:space-around;-webkit-align-content:space-around;align-content:space-around};--layout-block:{display:block};--layout-invisible:{visibility:hidden!important};--layout-relative:{position:relative};--layout-fit:{position:absolute;top:0;right:0;bottom:0;left:0};--layout-scroll:{-webkit-overflow-scrolling:touch;overflow:auto};--layout-fullbleed:{margin:0;height:100vh};--layout-fixed-top:{position:fixed;top:0;left:0;right:0};--layout-fixed-right:{position:fixed;top:0;right:0;bottom:0};--layout-fixed-bottom:{position:fixed;right:0;bottom:0;left:0};--layout-fixed-left:{position:fixed;top:0;bottom:0;left:0};}</style><script>Polymer.PaperSpinnerBehavior={listeners:{animationend:"__reset",webkitAnimationEnd:"__reset"},properties:{active:{type:Boolean,value:!1,reflectToAttribute:!0,observer:"__activeChanged"},alt:{type:String,value:"loading",observer:"__altChanged"},__coolingDown:{type:Boolean,value:!1}},__computeContainerClasses:function(e,t){return[e||t?"active":"",t?"cooldown":""].join(" ")},__activeChanged:function(e,t){this.__setAriaHidden(!e),this.__coolingDown=!e&&t},__altChanged:function(e){e===this.getPropertyInfo("alt").value?this.alt=this.getAttribute("aria-label")||e:(this.__setAriaHidden(""===e),this.setAttribute("aria-label",e))},__setAriaHidden:function(e){var t="aria-hidden";e?this.setAttribute(t,"true"):this.removeAttribute(t)},__reset:function(){this.active=!1,this.__coolingDown=!1}}</script><dom-module id="paper-spinner-styles" assetpath="../bower_components/paper-spinner/"><template><style>:host{display:inline-block;position:relative;width:28px;height:28px;--paper-spinner-container-rotation-duration:1568ms;--paper-spinner-expand-contract-duration:1333ms;--paper-spinner-full-cycle-duration:5332ms;--paper-spinner-cooldown-duration:400ms}#spinnerContainer{width:100%;height:100%;direction:ltr}#spinnerContainer.active{-webkit-animation:container-rotate var(--paper-spinner-container-rotation-duration) linear infinite;animation:container-rotate var(--paper-spinner-container-rotation-duration) linear infinite}@-webkit-keyframes container-rotate{to{-webkit-transform:rotate(360deg)}}@keyframes container-rotate{to{transform:rotate(360deg)}}.spinner-layer{position:absolute;width:100%;height:100%;opacity:0;white-space:nowrap;border-color:var(--paper-spinner-color,--google-blue-500)}.layer-1{border-color:var(--paper-spinner-layer-1-color,--google-blue-500)}.layer-2{border-color:var(--paper-spinner-layer-2-color,--google-red-500)}.layer-3{border-color:var(--paper-spinner-layer-3-color,--google-yellow-500)}.layer-4{border-color:var(--paper-spinner-layer-4-color,--google-green-500)}.active .spinner-layer{-webkit-animation-name:fill-unfill-rotate;-webkit-animation-duration:var(--paper-spinner-full-cycle-duration);-webkit-animation-timing-function:cubic-bezier(.4,0,.2,1);-webkit-animation-iteration-count:infinite;animation-name:fill-unfill-rotate;animation-duration:var(--paper-spinner-full-cycle-duration);animation-timing-function:cubic-bezier(.4,0,.2,1);animation-iteration-count:infinite;opacity:1}.active .spinner-layer.layer-1{-webkit-animation-name:fill-unfill-rotate,layer-1-fade-in-out;animation-name:fill-unfill-rotate,layer-1-fade-in-out}.active .spinner-layer.layer-2{-webkit-animation-name:fill-unfill-rotate,layer-2-fade-in-out;animation-name:fill-unfill-rotate,layer-2-fade-in-out}.active .spinner-layer.layer-3{-webkit-animation-name:fill-unfill-rotate,layer-3-fade-in-out;animation-name:fill-unfill-rotate,layer-3-fade-in-out}.active .spinner-layer.layer-4{-webkit-animation-name:fill-unfill-rotate,layer-4-fade-in-out;animation-name:fill-unfill-rotate,layer-4-fade-in-out}@-webkit-keyframes fill-unfill-rotate{12.5%{-webkit-transform:rotate(135deg)}25%{-webkit-transform:rotate(270deg)}37.5%{-webkit-transform:rotate(405deg)}50%{-webkit-transform:rotate(540deg)}62.5%{-webkit-transform:rotate(675deg)}75%{-webkit-transform:rotate(810deg)}87.5%{-webkit-transform:rotate(945deg)}to{-webkit-transform:rotate(1080deg)}}@keyframes fill-unfill-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}to{transform:rotate(1080deg)}}@-webkit-keyframes layer-1-fade-in-out{0%{opacity:1}25%{opacity:1}26%{opacity:0}89%{opacity:0}90%{opacity:1}to{opacity:1}}@keyframes layer-1-fade-in-out{0%{opacity:1}25%{opacity:1}26%{opacity:0}89%{opacity:0}90%{opacity:1}to{opacity:1}}@-webkit-keyframes layer-2-fade-in-out{0%{opacity:0}15%{opacity:0}25%{opacity:1}50%{opacity:1}51%{opacity:0}to{opacity:0}}@keyframes layer-2-fade-in-out{0%{opacity:0}15%{opacity:0}25%{opacity:1}50%{opacity:1}51%{opacity:0}to{opacity:0}}@-webkit-keyframes layer-3-fade-in-out{0%{opacity:0}40%{opacity:0}50%{opacity:1}75%{opacity:1}76%{opacity:0}to{opacity:0}}@keyframes layer-3-fade-in-out{0%{opacity:0}40%{opacity:0}50%{opacity:1}75%{opacity:1}76%{opacity:0}to{opacity:0}}@-webkit-keyframes layer-4-fade-in-out{0%{opacity:0}65%{opacity:0}75%{opacity:1}90%{opacity:1}to{opacity:0}}@keyframes layer-4-fade-in-out{0%{opacity:0}65%{opacity:0}75%{opacity:1}90%{opacity:1}to{opacity:0}}.circle-clipper{display:inline-block;position:relative;width:50%;height:100%;overflow:hidden;border-color:inherit}.spinner-layer::after{left:45%;width:10%;border-top-style:solid}.circle-clipper::after,.spinner-layer::after{content:'';box-sizing:border-box;position:absolute;top:0;border-width:var(--paper-spinner-stroke-width,3px);border-color:inherit;border-radius:50%}.circle-clipper::after{bottom:0;width:200%;border-style:solid;border-bottom-color:transparent!important}.circle-clipper.left::after{left:0;border-right-color:transparent!important;-webkit-transform:rotate(129deg);transform:rotate(129deg)}.circle-clipper.right::after{left:-100%;border-left-color:transparent!important;-webkit-transform:rotate(-129deg);transform:rotate(-129deg)}.active .circle-clipper::after,.active .gap-patch::after{-webkit-animation-duration:var(--paper-spinner-expand-contract-duration);-webkit-animation-timing-function:cubic-bezier(.4,0,.2,1);-webkit-animation-iteration-count:infinite;animation-duration:var(--paper-spinner-expand-contract-duration);animation-timing-function:cubic-bezier(.4,0,.2,1);animation-iteration-count:infinite}.active .circle-clipper.left::after{-webkit-animation-name:left-spin;animation-name:left-spin}.active .circle-clipper.right::after{-webkit-animation-name:right-spin;animation-name:right-spin}@-webkit-keyframes left-spin{0%{-webkit-transform:rotate(130deg)}50%{-webkit-transform:rotate(-5deg)}to{-webkit-transform:rotate(130deg)}}@keyframes left-spin{0%{transform:rotate(130deg)}50%{transform:rotate(-5deg)}to{transform:rotate(130deg)}}@-webkit-keyframes right-spin{0%{-webkit-transform:rotate(-130deg)}50%{-webkit-transform:rotate(5deg)}to{-webkit-transform:rotate(-130deg)}}@keyframes right-spin{0%{transform:rotate(-130deg)}50%{transform:rotate(5deg)}to{transform:rotate(-130deg)}}#spinnerContainer.cooldown{-webkit-animation:container-rotate var(--paper-spinner-container-rotation-duration) linear infinite,fade-out var(--paper-spinner-cooldown-duration) cubic-bezier(.4,0,.2,1);animation:container-rotate var(--paper-spinner-container-rotation-duration) linear infinite,fade-out var(--paper-spinner-cooldown-duration) cubic-bezier(.4,0,.2,1)}@-webkit-keyframes fade-out{0%{opacity:1}to{opacity:0}}@keyframes fade-out{0%{opacity:1}to{opacity:0}}</style></template></dom-module><dom-module id="paper-spinner" assetpath="../bower_components/paper-spinner/"><template strip-whitespace=""><style include="paper-spinner-styles"></style><div id="spinnerContainer" class-name="[[__computeContainerClasses(active, __coolingDown)]]"><div class="spinner-layer layer-1"><div class="circle-clipper left"></div><div class="circle-clipper right"></div></div><div class="spinner-layer layer-2"><div class="circle-clipper left"></div><div class="circle-clipper right"></div></div><div class="spinner-layer layer-3"><div class="circle-clipper left"></div><div class="circle-clipper right"></div></div><div class="spinner-layer layer-4"><div class="circle-clipper left"></div><div class="circle-clipper right"></div></div></div></template><script>Polymer({is:"paper-spinner",behaviors:[Polymer.PaperSpinnerBehavior]})</script></dom-module><style>@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-Thin.ttf) format("truetype");font-weight:100;font-style:normal}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-ThinItalic.ttf) format("truetype");font-weight:100;font-style:italic}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-Light.ttf) format("truetype");font-weight:300;font-style:normal}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-LightItalic.ttf) format("truetype");font-weight:300;font-style:italic}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-Italic.ttf) format("truetype");font-weight:400;font-style:italic}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-Medium.ttf) format("truetype");font-weight:500;font-style:normal}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-MediumItalic.ttf) format("truetype");font-weight:500;font-style:italic}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-BoldItalic.ttf) format("truetype");font-weight:700;font-style:italic}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-Black.ttf) format("truetype");font-weight:900;font-style:normal}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-BlackItalic.ttf) format("truetype");font-weight:900;font-style:italic}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-Thin.ttf) format("truetype");font-weight:100;font-style:normal}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-ThinItalic.ttf) format("truetype");font-weight:100;font-style:italic}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-Light.ttf) format("truetype");font-weight:300;font-style:normal}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-LightItalic.ttf) format("truetype");font-weight:300;font-style:italic}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-Italic.ttf) format("truetype");font-weight:400;font-style:italic}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-Medium.ttf) format("truetype");font-weight:500;font-style:normal}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-MediumItalic.ttf) format("truetype");font-weight:500;font-style:italic}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-BoldItalic.ttf) format("truetype");font-weight:700;font-style:italic}</style><style is="custom-style">:root{--paper-font-common-base:{font-family:Roboto,Noto,sans-serif;-webkit-font-smoothing:antialiased};--paper-font-common-code:{font-family:'Roboto Mono',Consolas,Menlo,monospace;-webkit-font-smoothing:antialiased};--paper-font-common-expensive-kerning:{text-rendering:optimizeLegibility};--paper-font-common-nowrap:{white-space:nowrap;overflow:hidden;text-overflow:ellipsis};--paper-font-display4:{@apply(--paper-font-common-base);@apply(--paper-font-common-nowrap);font-size:112px;font-weight:300;letter-spacing:-.044em;line-height:120px};--paper-font-display3:{@apply(--paper-font-common-base);@apply(--paper-font-common-nowrap);font-size:56px;font-weight:400;letter-spacing:-.026em;line-height:60px};--paper-font-display2:{@apply(--paper-font-common-base);font-size:45px;font-weight:400;letter-spacing:-.018em;line-height:48px};--paper-font-display1:{@apply(--paper-font-common-base);font-size:34px;font-weight:400;letter-spacing:-.01em;line-height:40px};--paper-font-headline:{@apply(--paper-font-common-base);font-size:24px;font-weight:400;letter-spacing:-.012em;line-height:32px};--paper-font-title:{@apply(--paper-font-common-base);@apply(--paper-font-common-nowrap);font-size:20px;font-weight:500;line-height:28px};--paper-font-subhead:{@apply(--paper-font-common-base);font-size:16px;font-weight:400;line-height:24px};--paper-font-body2:{@apply(--paper-font-common-base);font-size:14px;font-weight:500;line-height:24px};--paper-font-body1:{@apply(--paper-font-common-base);font-size:14px;font-weight:400;line-height:20px};--paper-font-caption:{@apply(--paper-font-common-base);@apply(--paper-font-common-nowrap);font-size:12px;font-weight:400;letter-spacing:0.011em;line-height:20px};--paper-font-menu:{@apply(--paper-font-common-base);@apply(--paper-font-common-nowrap);font-size:13px;font-weight:500;line-height:24px};--paper-font-button:{@apply(--paper-font-common-base);@apply(--paper-font-common-nowrap);font-size:14px;font-weight:500;letter-spacing:0.018em;line-height:24px;text-transform:uppercase};--paper-font-code2:{@apply(--paper-font-common-code);font-size:14px;font-weight:700;line-height:20px};--paper-font-code1:{@apply(--paper-font-common-code);font-size:14px;font-weight:500;line-height:20px};}</style><dom-module id="iron-flex" assetpath="../bower_components/iron-flex-layout/"><template><style>.layout.horizontal,.layout.vertical{display:-ms-flexbox;display:-webkit-flex;display:flex}.layout.inline{display:-ms-inline-flexbox;display:-webkit-inline-flex;display:inline-flex}.layout.horizontal{-ms-flex-direction:row;-webkit-flex-direction:row;flex-direction:row}.layout.vertical{-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column}.layout.wrap{-ms-flex-wrap:wrap;-webkit-flex-wrap:wrap;flex-wrap:wrap}.layout.center,.layout.center-center{-ms-flex-align:center;-webkit-align-items:center;align-items:center}.layout.center-center,.layout.center-justified{-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center}.flex{-ms-flex:1 1 0px;-webkit-flex:1;flex:1;-webkit-flex-basis:0px;flex-basis:0px}.flex-auto{-ms-flex:1 1 auto;-webkit-flex:1 1 auto;flex:1 1 auto}.flex-none{-ms-flex:none;-webkit-flex:none;flex:none}</style></template></dom-module><dom-module id="iron-flex-reverse" assetpath="../bower_components/iron-flex-layout/"><template><style>.layout.horizontal-reverse,.layout.vertical-reverse{display:-ms-flexbox;display:-webkit-flex;display:flex}.layout.horizontal-reverse{-ms-flex-direction:row-reverse;-webkit-flex-direction:row-reverse;flex-direction:row-reverse}.layout.vertical-reverse{-ms-flex-direction:column-reverse;-webkit-flex-direction:column-reverse;flex-direction:column-reverse}.layout.wrap-reverse{-ms-flex-wrap:wrap-reverse;-webkit-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse}</style></template></dom-module><dom-module id="iron-flex-alignment" assetpath="../bower_components/iron-flex-layout/"><template><style>.layout.start{-ms-flex-align:start;-webkit-align-items:flex-start;align-items:flex-start}.layout.center,.layout.center-center{-ms-flex-align:center;-webkit-align-items:center;align-items:center}.layout.end{-ms-flex-align:end;-webkit-align-items:flex-end;align-items:flex-end}.layout.baseline{-ms-flex-align:baseline;-webkit-align-items:baseline;align-items:baseline}.layout.start-justified{-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start}.layout.center-center,.layout.center-justified{-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center}.layout.end-justified{-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end}.layout.around-justified{-ms-flex-pack:distribute;-webkit-justify-content:space-around;justify-content:space-around}.layout.justified{-ms-flex-pack:justify;-webkit-justify-content:space-between;justify-content:space-between}.self-start{-ms-align-self:flex-start;-webkit-align-self:flex-start;align-self:flex-start}.self-center{-ms-align-self:center;-webkit-align-self:center;align-self:center}.self-end{-ms-align-self:flex-end;-webkit-align-self:flex-end;align-self:flex-end}.self-stretch{-ms-align-self:stretch;-webkit-align-self:stretch;align-self:stretch}.self-baseline{-ms-align-self:baseline;-webkit-align-self:baseline;align-self:baseline}; .layout.start-aligned{-ms-flex-line-pack:start;-ms-align-content:flex-start;-webkit-align-content:flex-start;align-content:flex-start}.layout.end-aligned{-ms-flex-line-pack:end;-ms-align-content:flex-end;-webkit-align-content:flex-end;align-content:flex-end}.layout.center-aligned{-ms-flex-line-pack:center;-ms-align-content:center;-webkit-align-content:center;align-content:center}.layout.between-aligned{-ms-flex-line-pack:justify;-ms-align-content:space-between;-webkit-align-content:space-between;align-content:space-between}.layout.around-aligned{-ms-flex-line-pack:distribute;-ms-align-content:space-around;-webkit-align-content:space-around;align-content:space-around}</style></template></dom-module><dom-module id="iron-flex-factors" assetpath="../bower_components/iron-flex-layout/"><template><style>.flex,.flex-1{-ms-flex:1 1 0px;-webkit-flex:1;flex:1;-webkit-flex-basis:0px;flex-basis:0px}.flex-2{-ms-flex:2;-webkit-flex:2;flex:2}.flex-3{-ms-flex:3;-webkit-flex:3;flex:3}.flex-4{-ms-flex:4;-webkit-flex:4;flex:4}.flex-5{-ms-flex:5;-webkit-flex:5;flex:5}.flex-6{-ms-flex:6;-webkit-flex:6;flex:6}.flex-7{-ms-flex:7;-webkit-flex:7;flex:7}.flex-8{-ms-flex:8;-webkit-flex:8;flex:8}.flex-9{-ms-flex:9;-webkit-flex:9;flex:9}.flex-10{-ms-flex:10;-webkit-flex:10;flex:10}.flex-11{-ms-flex:11;-webkit-flex:11;flex:11}.flex-12{-ms-flex:12;-webkit-flex:12;flex:12}</style></template></dom-module><dom-module id="iron-positioning" assetpath="../bower_components/iron-flex-layout/"><template><style>.block{display:block}[hidden]{display:none!important}.invisible{visibility:hidden!important}.relative{position:relative}.fit{position:absolute;top:0;right:0;bottom:0;left:0}body.fullbleed{margin:0;height:100vh}.scroll{-webkit-overflow-scrolling:touch;overflow:auto}.fixed-bottom,.fixed-left,.fixed-right,.fixed-top{position:fixed}.fixed-top{top:0;left:0;right:0}.fixed-right{top:0;right:0;bottom:0}.fixed-bottom{right:0;bottom:0;left:0}.fixed-left{top:0;bottom:0;left:0}</style></template></dom-module><script>!function(n){"use strict";function t(n,t){for(var e=[],r=0,u=n.length;r<u;r++)e.push(n[r].substr(0,t));return e}function e(n){return function(t,e,r){var u=r[n].indexOf(e.charAt(0).toUpperCase()+e.substr(1).toLowerCase());~u&&(t.month=u)}}function r(n,t){for(n=String(n),t=t||2;n.length<t;)n="0"+n;return n}var u={},o=/d{1,4}|M{1,4}|YY(?:YY)?|S{1,3}|Do|ZZ|([HhMsDm])\1?|[aA]|"[^"]*"|'[^']*'/g,a=/\d\d?/,i=/\d{3}/,s=/\d{4}/,m=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,d=function(){},f=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],c=["January","February","March","April","May","June","July","August","September","October","November","December"],h=t(c,3),l=t(f,3);u.i18n={dayNamesShort:l,dayNames:f,monthNamesShort:h,monthNames:c,amPm:["am","pm"],DoFn:function(n){return n+["th","st","nd","rd"][n%10>3?0:(n-n%10!==10)*n%10]}};var M={D:function(n){return n.getDate()},DD:function(n){return r(n.getDate())},Do:function(n,t){return t.DoFn(n.getDate())},d:function(n){return n.getDay()},dd:function(n){return r(n.getDay())},ddd:function(n,t){return t.dayNamesShort[n.getDay()]},dddd:function(n,t){return t.dayNames[n.getDay()]},M:function(n){return n.getMonth()+1},MM:function(n){return r(n.getMonth()+1)},MMM:function(n,t){return t.monthNamesShort[n.getMonth()]},MMMM:function(n,t){return t.monthNames[n.getMonth()]},YY:function(n){return String(n.getFullYear()).substr(2)},YYYY:function(n){return n.getFullYear()},h:function(n){return n.getHours()%12||12},hh:function(n){return r(n.getHours()%12||12)},H:function(n){return n.getHours()},HH:function(n){return r(n.getHours())},m:function(n){return n.getMinutes()},mm:function(n){return r(n.getMinutes())},s:function(n){return n.getSeconds()},ss:function(n){return r(n.getSeconds())},S:function(n){return Math.round(n.getMilliseconds()/100)},SS:function(n){return r(Math.round(n.getMilliseconds()/10),2)},SSS:function(n){return r(n.getMilliseconds(),3)},a:function(n,t){return n.getHours()<12?t.amPm[0]:t.amPm[1]},A:function(n,t){return n.getHours()<12?t.amPm[0].toUpperCase():t.amPm[1].toUpperCase()},ZZ:function(n){var t=n.getTimezoneOffset();return(t>0?"-":"+")+r(100*Math.floor(Math.abs(t)/60)+Math.abs(t)%60,4)}},g={D:[a,function(n,t){n.day=t}],Do:[new RegExp(a.source+m.source),function(n,t){n.day=parseInt(t,10)}],M:[a,function(n,t){n.month=t-1}],YY:[a,function(n,t){var e=new Date,r=+(""+e.getFullYear()).substr(0,2);n.year=""+(t>68?r-1:r)+t}],h:[a,function(n,t){n.hour=t}],m:[a,function(n,t){n.minute=t}],s:[a,function(n,t){n.second=t}],YYYY:[s,function(n,t){n.year=t}],S:[/\d/,function(n,t){n.millisecond=100*t}],SS:[/\d{2}/,function(n,t){n.millisecond=10*t}],SSS:[i,function(n,t){n.millisecond=t}],d:[a,d],ddd:[m,d],MMM:[m,e("monthNamesShort")],MMMM:[m,e("monthNames")],a:[m,function(n,t,e){var r=t.toLowerCase();r===e.amPm[0]?n.isPm=!1:r===e.amPm[1]&&(n.isPm=!0)}],ZZ:[/[\+\-]\d\d:?\d\d/,function(n,t){var e,r=(t+"").match(/([\+\-]|\d\d)/gi);r&&(e=+(60*r[1])+parseInt(r[2],10),n.timezoneOffset="+"===r[0]?e:-e)}]};g.dd=g.d,g.dddd=g.ddd,g.DD=g.D,g.mm=g.m,g.hh=g.H=g.HH=g.h,g.MM=g.M,g.ss=g.s,g.A=g.a,u.masks={default:"ddd MMM DD YYYY HH:mm:ss",shortDate:"M/D/YY",mediumDate:"MMM D, YYYY",longDate:"MMMM D, YYYY",fullDate:"dddd, MMMM D, YYYY",shortTime:"HH:mm",mediumTime:"HH:mm:ss",longTime:"HH:mm:ss.SSS"},u.format=function(n,t,e){var r=e||u.i18n;if("number"==typeof n&&(n=new Date(n)),"[object Date]"!==Object.prototype.toString.call(n)||isNaN(n.getTime()))throw new Error("Invalid Date in fecha.format");return t=u.masks[t]||t||u.masks.default,t.replace(o,function(t){return t in M?M[t](n,r):t.slice(1,t.length-1)})},u.parse=function(n,t,e){var r=e||u.i18n;if("string"!=typeof t)throw new Error("Invalid format in fecha.parse");if(t=u.masks[t]||t,n.length>1e3)return!1;var a=!0,i={};if(t.replace(o,function(t){if(g[t]){var e=g[t],u=n.search(e[0]);~u?n.replace(e[0],function(t){return e[1](i,t,r),n=n.substr(u+t.length),t}):a=!1}return g[t]?"":t.slice(1,t.length-1)}),!a)return!1;var s=new Date;i.isPm===!0&&null!=i.hour&&12!==+i.hour?i.hour=+i.hour+12:i.isPm===!1&&12===+i.hour&&(i.hour=0);var m;return null!=i.timezoneOffset?(i.minute=+(i.minute||0)-+i.timezoneOffset,m=new Date(Date.UTC(i.year||s.getFullYear(),i.month||0,i.day||1,i.hour||0,i.minute||0,i.second||0,i.millisecond||0))):m=new Date(i.year||s.getFullYear(),i.month||0,i.day||1,i.hour||0,i.minute||0,i.second||0,i.millisecond||0),m},"undefined"!=typeof module&&module.exports?module.exports=u:"function"==typeof define&&define.amd?define(function(){return u}):n.fecha=u}(this)</script><script>function toLocaleStringSupportsOptions(){try{(new Date).toLocaleString("i")}catch(e){return"RangeError"===e.name}return!1}function toLocaleDateStringSupportsOptions(){try{(new Date).toLocaleDateString("i")}catch(e){return"RangeError"===e.name}return!1}function toLocaleTimeStringSupportsOptions(){try{(new Date).toLocaleTimeString("i")}catch(e){return"RangeError"===e.name}return!1}window.hassUtil=window.hassUtil||{},window.hassUtil.DEFAULT_ICON="mdi:bookmark",window.hassUtil.OFF_STATES=["off","closed","unlocked"],window.hassUtil.DOMAINS_WITH_CARD=["climate","cover","configurator","input_select","input_slider","media_player","scene","script","weblink"],window.hassUtil.DOMAINS_WITH_MORE_INFO=["light","group","sun","climate","configurator","cover","script","media_player","camera","updater","alarm_control_panel","lock","automation"],window.hassUtil.DOMAINS_WITH_NO_HISTORY=["camera","configurator","scene"],window.hassUtil.HIDE_MORE_INFO=["input_select","scene","script","input_slider"],window.hassUtil.LANGUAGE=navigator.languages?navigator.languages[0]:navigator.language||navigator.userLanguage,window.hassUtil.attributeClassNames=function(e,t){return e?t.map(function(t){return t in e.attributes?"has-"+t:""}).join(" "):""},window.hassUtil.canToggle=function(e,t){return e.reactor.evaluate(e.serviceGetters.canToggleEntity(t))},window.hassUtil.dynamicContentUpdater=function(e,t,i){var n,a=Polymer.dom(e);a.lastChild&&a.lastChild.tagName===t?n=a.lastChild:(a.lastChild&&a.removeChild(a.lastChild),n=document.createElement(t)),Object.keys(i).forEach(function(e){n[e]=i[e]}),null===n.parentNode&&a.appendChild(n)},window.fecha.masks.haDateTime=window.fecha.masks.shortTime+" "+window.fecha.masks.mediumDate,toLocaleStringSupportsOptions()?window.hassUtil.formatDateTime=function(e){return e.toLocaleString(window.hassUtil.LANGUAGE,{year:"numeric",month:"long",day:"numeric",hour:"numeric",minute:"2-digit"})}:window.hassUtil.formatDateTime=function(e){return window.fecha.format(e,"haDateTime")},toLocaleDateStringSupportsOptions()?window.hassUtil.formatDate=function(e){return e.toLocaleDateString(window.hassUtil.LANGUAGE,{year:"numeric",month:"long",day:"numeric"})}:window.hassUtil.formatDate=function(e){return window.fecha.format(e,"mediumDate")},toLocaleTimeStringSupportsOptions()?window.hassUtil.formatTime=function(e){return e.toLocaleTimeString(window.hassUtil.LANGUAGE,{hour:"numeric",minute:"2-digit"})}:window.hassUtil.formatTime=function(e){return window.fecha.format(e,"shortTime")},window.hassUtil.relativeTime=function(e){var t,i=Math.abs(new Date-e)/1e3,n=new Date>e?"%s ago":"in %s",a=window.hassUtil.relativeTime.tests;for(t=0;t<a.length;t+=2){if(i<a[t])return i=Math.floor(i),n.replace("%s",1===i?"1 "+a[t+1]:i+" "+a[t+1]+"s");i/=a[t]}return i=Math.floor(i),n.replace("%s",1===i?"1 week":i+" weeks")},window.hassUtil.relativeTime.tests=[60,"second",60,"minute",24,"hour",7,"day"],window.hassUtil.stateCardType=function(e,t){return"unavailable"===t.state?"display":window.hassUtil.DOMAINS_WITH_CARD.indexOf(t.domain)!==-1?t.domain:window.hassUtil.canToggle(e,t.entityId)&&"hidden"!==t.attributes.control?"toggle":"display"},window.hassUtil.stateMoreInfoType=function(e){return window.hassUtil.DOMAINS_WITH_MORE_INFO.indexOf(e.domain)!==-1?e.domain:window.hassUtil.HIDE_MORE_INFO.indexOf(e.domain)!==-1?"hidden":"default"},window.hassUtil.domainIcon=function(e,t){switch(e){case"alarm_control_panel":return t&&"disarmed"===t?"mdi:bell-outline":"mdi:bell";case"automation":return"mdi:playlist-play";case"binary_sensor":return t&&"off"===t?"mdi:radiobox-blank":"mdi:checkbox-marked-circle";case"camera":return"mdi:video";case"climate":return"mdi:nest-thermostat";case"configurator":return"mdi:settings";case"conversation":return"mdi:text-to-speech";case"cover":return t&&"open"===t?"mdi:window-open":"mdi:window-closed";case"device_tracker":return"mdi:account";case"fan":return"mdi:fan";case"group":return"mdi:google-circles-communities";case"homeassistant":return"mdi:home";case"input_boolean":return"mdi:drawing";case"input_select":return"mdi:format-list-bulleted";case"input_slider":return"mdi:ray-vertex";case"light":return"mdi:lightbulb";case"lock":return t&&"unlocked"===t?"mdi:lock-open":"mdi:lock";case"media_player":return t&&"off"!==t&&"idle"!==t?"mdi:cast-connected":"mdi:cast";case"notify":return"mdi:comment-alert";case"proximity":return"mdi:apple-safari";case"remote":return"mdi:remote";case"scene":return"mdi:google-pages";case"script":return"mdi:file-document";case"sensor":return"mdi:eye";case"simple_alarm":return"mdi:bell";case"sun":return"mdi:white-balance-sunny";case"switch":return"mdi:flash";case"updater":return"mdi:cloud-upload";case"weblink":return"mdi:open-in-new";default:return console.warn("Unable to find icon for domain "+e+" ("+t+")"),window.hassUtil.DEFAULT_ICON}},window.hassUtil.binarySensorIcon=function(e){var t=e.state&&"off"===e.state;switch(e.attributes.sensor_class){case"connectivity":return t?"mdi:server-network-off":"mdi:server-network";case"light":return t?"mdi:brightness-5":"mdi:brightness-7";case"moisture":return t?"mdi:water-off":"mdi:water";case"motion":return t?"mdi:walk":"mdi:run";case"occupancy":return t?"mdi:home":"mdi:home-outline";case"opening":return t?"mdi:crop-square":"mdi:exit-to-app";case"sound":return t?"mdi:music-note-off":"mdi:music-note";case"vibration":return t?"mdi:crop-portrait":"mdi:vibrate";case"gas":case"power":case"safety":case"smoke":return t?"mdi:verified":"mdi:alert";default:return t?"mdi:radiobox-blank":"mdi:checkbox-marked-circle"}},window.hassUtil.stateIcon=function(e){var t;if(!e)return window.hassUtil.DEFAULT_ICON;if(e.attributes.icon)return e.attributes.icon;if(t=e.attributes.unit_of_measurement,t&&"sensor"===e.domain){if("°C"===t||"°F"===t)return"mdi:thermometer";if("Mice"===t)return"mdi:mouse-variant"}else if("binary_sensor"===e.domain)return window.hassUtil.binarySensorIcon(e);return window.hassUtil.domainIcon(e.domain,e.state)}</script><script>window.hassBehavior={attached:function(){var e=this.hass;if(!e)throw new Error("No hass property found on "+this.nodeName);this.nuclearUnwatchFns=Object.keys(this.properties).reduce(function(t,r){var n;if(!("bindNuclear"in this.properties[r]))return t;if(n=this.properties[r].bindNuclear(e),!n)throw new Error("Undefined getter specified for key "+r+" on "+this.nodeName);return this[r]=e.reactor.evaluate(n),t.concat(e.reactor.observe(n,function(e){this[r]=e}.bind(this)))}.bind(this),[])},detached:function(){for(;this.nuclearUnwatchFns.length;)this.nuclearUnwatchFns.shift()()}}</script><style is="custom-style">:root{--primary-text-color:var(--light-theme-text-color);--primary-background-color:var(--light-theme-background-color);--secondary-text-color:var(--light-theme-secondary-color);--disabled-text-color:var(--light-theme-disabled-color);--divider-color:var(--light-theme-divider-color);--error-color:var(--paper-deep-orange-a700);--primary-color:var(--paper-indigo-500);--light-primary-color:var(--paper-indigo-100);--dark-primary-color:var(--paper-indigo-700);--accent-color:var(--paper-pink-a200);--light-accent-color:var(--paper-pink-a100);--dark-accent-color:var(--paper-pink-a400);--light-theme-background-color:#ffffff;--light-theme-base-color:#000000;--light-theme-text-color:var(--paper-grey-900);--light-theme-secondary-color:#737373;--light-theme-disabled-color:#9b9b9b;--light-theme-divider-color:#dbdbdb;--dark-theme-background-color:var(--paper-grey-900);--dark-theme-base-color:#ffffff;--dark-theme-text-color:#ffffff;--dark-theme-secondary-color:#bcbcbc;--dark-theme-disabled-color:#646464;--dark-theme-divider-color:#3c3c3c;--text-primary-color:var(--dark-theme-text-color);--default-primary-color:var(--primary-color)}</style><script>!function(){var e={},t={},i=null;Polymer.IronMeta=Polymer({is:"iron-meta",properties:{type:{type:String,value:"default",observer:"_typeChanged"},key:{type:String,observer:"_keyChanged"},value:{type:Object,notify:!0,observer:"_valueChanged"},self:{type:Boolean,observer:"_selfChanged"},list:{type:Array,notify:!0}},hostAttributes:{hidden:!0},factoryImpl:function(e){if(e)for(var t in e)switch(t){case"type":case"key":case"value":this[t]=e[t]}},created:function(){this._metaDatas=e,this._metaArrays=t},_keyChanged:function(e,t){this._resetRegistration(t)},_valueChanged:function(e){this._resetRegistration(this.key)},_selfChanged:function(e){e&&(this.value=this)},_typeChanged:function(i){this._unregisterKey(this.key),e[i]||(e[i]={}),this._metaData=e[i],t[i]||(t[i]=[]),this.list=t[i],this._registerKeyValue(this.key,this.value)},byKey:function(e){return this._metaData&&this._metaData[e]},_resetRegistration:function(e){this._unregisterKey(e),this._registerKeyValue(this.key,this.value)},_unregisterKey:function(e){this._unregister(e,this._metaData,this.list)},_registerKeyValue:function(e,t){this._register(e,t,this._metaData,this.list)},_register:function(e,t,i,a){e&&i&&void 0!==t&&(i[e]=t,a.push(t))},_unregister:function(e,t,i){if(e&&t&&e in t){var a=t[e];delete t[e],this.arrayDelete(i,a)}}}),Polymer.IronMeta.getIronMeta=function(){return null===i&&(i=new Polymer.IronMeta),i},Polymer.IronMetaQuery=Polymer({is:"iron-meta-query",properties:{type:{type:String,value:"default",observer:"_typeChanged"},key:{type:String,observer:"_keyChanged"},value:{type:Object,notify:!0,readOnly:!0},list:{type:Array,notify:!0}},factoryImpl:function(e){if(e)for(var t in e)switch(t){case"type":case"key":this[t]=e[t]}},created:function(){this._metaDatas=e,this._metaArrays=t},_keyChanged:function(e){this._setValue(this._metaData&&this._metaData[e])},_typeChanged:function(i){this._metaData=e[i],this.list=t[i],this.key&&this._keyChanged(this.key)},byKey:function(e){return this._metaData&&this._metaData[e]}})}()</script><script>Polymer.IronValidatableBehaviorMeta=null,Polymer.IronValidatableBehavior={properties:{validator:{type:String},invalid:{notify:!0,reflectToAttribute:!0,type:Boolean,value:!1},_validatorMeta:{type:Object},validatorType:{type:String,value:"validator"},_validator:{type:Object,computed:"__computeValidator(validator)"}},observers:["_invalidChanged(invalid)"],registered:function(){Polymer.IronValidatableBehaviorMeta=new Polymer.IronMeta({type:"validator"})},_invalidChanged:function(){this.invalid?this.setAttribute("aria-invalid","true"):this.removeAttribute("aria-invalid")},hasValidator:function(){return null!=this._validator},validate:function(a){return this.invalid=!this._getValidity(a),!this.invalid},_getValidity:function(a){return!this.hasValidator()||this._validator.validate(a)},__computeValidator:function(){return Polymer.IronValidatableBehaviorMeta&&Polymer.IronValidatableBehaviorMeta.byKey(this.validator)}}</script><script>Polymer.IronFormElementBehavior={properties:{name:{type:String},value:{notify:!0,type:String},required:{type:Boolean,value:!1},_parentForm:{type:Object}},attached:function(){this.fire("iron-form-element-register")},detached:function(){this._parentForm&&this._parentForm.fire("iron-form-element-unregister",{target:this})}}</script><script>Polymer.IronCheckedElementBehaviorImpl={properties:{checked:{type:Boolean,value:!1,reflectToAttribute:!0,notify:!0,observer:"_checkedChanged"},toggles:{type:Boolean,value:!0,reflectToAttribute:!0},value:{type:String,value:"on",observer:"_valueChanged"}},observers:["_requiredChanged(required)"],created:function(){this._hasIronCheckedElementBehavior=!0},_getValidity:function(e){return this.disabled||!this.required||this.checked},_requiredChanged:function(){this.required?this.setAttribute("aria-required","true"):this.removeAttribute("aria-required")},_checkedChanged:function(){this.active=this.checked,this.fire("iron-change")},_valueChanged:function(){void 0!==this.value&&null!==this.value||(this.value="on")}},Polymer.IronCheckedElementBehavior=[Polymer.IronFormElementBehavior,Polymer.IronValidatableBehavior,Polymer.IronCheckedElementBehaviorImpl]</script><script>!function(){"use strict";function e(e,t){var n="";if(e){var i=e.toLowerCase();" "===i||v.test(i)?n="space":f.test(i)?n="esc":1==i.length?t&&!u.test(i)||(n=i):n=c.test(i)?i.replace("arrow",""):"multiply"==i?"*":i}return n}function t(e){var t="";return e&&(e in o?t=o[e]:h.test(e)?(e=parseInt(e.replace("U+","0x"),16),t=String.fromCharCode(e).toLowerCase()):t=e.toLowerCase()),t}function n(e){var t="";return Number(e)&&(t=e>=65&&e<=90?String.fromCharCode(32+e):e>=112&&e<=123?"f"+(e-112):e>=48&&e<=57?String(e-48):e>=96&&e<=105?String(e-96):d[e]),t}function i(i,r){return i.key?e(i.key,r):i.detail&&i.detail.key?e(i.detail.key,r):t(i.keyIdentifier)||n(i.keyCode)||""}function r(e,t){var n=i(t,e.hasModifiers);return n===e.key&&(!e.hasModifiers||!!t.shiftKey==!!e.shiftKey&&!!t.ctrlKey==!!e.ctrlKey&&!!t.altKey==!!e.altKey&&!!t.metaKey==!!e.metaKey)}function s(e){return 1===e.length?{combo:e,key:e,event:"keydown"}:e.split("+").reduce(function(e,t){var n=t.split(":"),i=n[0],r=n[1];return i in y?(e[y[i]]=!0,e.hasModifiers=!0):(e.key=i,e.event=r||"keydown"),e},{combo:e.split(":").shift()})}function a(e){return e.trim().split(" ").map(function(e){return s(e)})}var o={"U+0008":"backspace","U+0009":"tab","U+001B":"esc","U+0020":"space","U+007F":"del"},d={8:"backspace",9:"tab",13:"enter",27:"esc",33:"pageup",34:"pagedown",35:"end",36:"home",32:"space",37:"left",38:"up",39:"right",40:"down",46:"del",106:"*"},y={shift:"shiftKey",ctrl:"ctrlKey",alt:"altKey",meta:"metaKey"},u=/[a-z0-9*]/,h=/U\+/,c=/^arrow/,v=/^space(bar)?/,f=/^escape$/;Polymer.IronA11yKeysBehavior={properties:{keyEventTarget:{type:Object,value:function(){return this}},stopKeyboardEventPropagation:{type:Boolean,value:!1},_boundKeyHandlers:{type:Array,value:function(){return[]}},_imperativeKeyBindings:{type:Object,value:function(){return{}}}},observers:["_resetKeyEventListeners(keyEventTarget, _boundKeyHandlers)"],keyBindings:{},registered:function(){this._prepKeyBindings()},attached:function(){this._listenKeyEventListeners()},detached:function(){this._unlistenKeyEventListeners()},addOwnKeyBinding:function(e,t){this._imperativeKeyBindings[e]=t,this._prepKeyBindings(),this._resetKeyEventListeners()},removeOwnKeyBindings:function(){this._imperativeKeyBindings={},this._prepKeyBindings(),this._resetKeyEventListeners()},keyboardEventMatchesKeys:function(e,t){for(var n=a(t),i=0;i<n.length;++i)if(r(n[i],e))return!0;return!1},_collectKeyBindings:function(){var e=this.behaviors.map(function(e){return e.keyBindings});return e.indexOf(this.keyBindings)===-1&&e.push(this.keyBindings),e},_prepKeyBindings:function(){this._keyBindings={},this._collectKeyBindings().forEach(function(e){for(var t in e)this._addKeyBinding(t,e[t])},this);for(var e in this._imperativeKeyBindings)this._addKeyBinding(e,this._imperativeKeyBindings[e]);for(var t in this._keyBindings)this._keyBindings[t].sort(function(e,t){var n=e[0].hasModifiers,i=t[0].hasModifiers;return n===i?0:n?-1:1})},_addKeyBinding:function(e,t){a(e).forEach(function(e){this._keyBindings[e.event]=this._keyBindings[e.event]||[],this._keyBindings[e.event].push([e,t])},this)},_resetKeyEventListeners:function(){this._unlistenKeyEventListeners(),this.isAttached&&this._listenKeyEventListeners()},_listenKeyEventListeners:function(){this.keyEventTarget&&Object.keys(this._keyBindings).forEach(function(e){var t=this._keyBindings[e],n=this._onKeyBindingEvent.bind(this,t);this._boundKeyHandlers.push([this.keyEventTarget,e,n]),this.keyEventTarget.addEventListener(e,n)},this)},_unlistenKeyEventListeners:function(){for(var e,t,n,i;this._boundKeyHandlers.length;)e=this._boundKeyHandlers.pop(),t=e[0],n=e[1],i=e[2],t.removeEventListener(n,i)},_onKeyBindingEvent:function(e,t){if(this.stopKeyboardEventPropagation&&t.stopPropagation(),!t.defaultPrevented)for(var n=0;n<e.length;n++){var i=e[n][0],s=e[n][1];if(r(i,t)&&(this._triggerKeyHandler(i,s,t),t.defaultPrevented))return}},_triggerKeyHandler:function(e,t,n){var i=Object.create(e);i.keyboardEvent=n;var r=new CustomEvent(e.event,{detail:i,cancelable:!0});this[t].call(this,r),r.defaultPrevented&&n.preventDefault()}}}()</script><script>Polymer.IronControlState={properties:{focused:{type:Boolean,value:!1,notify:!0,readOnly:!0,reflectToAttribute:!0},disabled:{type:Boolean,value:!1,notify:!0,observer:"_disabledChanged",reflectToAttribute:!0},_oldTabIndex:{type:Number},_boundFocusBlurHandler:{type:Function,value:function(){return this._focusBlurHandler.bind(this)}}},observers:["_changedControlState(focused, disabled)"],ready:function(){this.addEventListener("focus",this._boundFocusBlurHandler,!0),this.addEventListener("blur",this._boundFocusBlurHandler,!0)},_focusBlurHandler:function(e){if(e.target===this)this._setFocused("focus"===e.type);else if(!this.shadowRoot){var t=Polymer.dom(e).localTarget;this.isLightDescendant(t)||this.fire(e.type,{sourceEvent:e},{node:this,bubbles:e.bubbles,cancelable:e.cancelable})}},_disabledChanged:function(e,t){this.setAttribute("aria-disabled",e?"true":"false"),this.style.pointerEvents=e?"none":"",e?(this._oldTabIndex=this.tabIndex,this._setFocused(!1),this.tabIndex=-1,this.blur()):void 0!==this._oldTabIndex&&(this.tabIndex=this._oldTabIndex)},_changedControlState:function(){this._controlStateChanged&&this._controlStateChanged()}}</script><script>Polymer.IronButtonStateImpl={properties:{pressed:{type:Boolean,readOnly:!0,value:!1,reflectToAttribute:!0,observer:"_pressedChanged"},toggles:{type:Boolean,value:!1,reflectToAttribute:!0},active:{type:Boolean,value:!1,notify:!0,reflectToAttribute:!0},pointerDown:{type:Boolean,readOnly:!0,value:!1},receivedFocusFromKeyboard:{type:Boolean,readOnly:!0},ariaActiveAttribute:{type:String,value:"aria-pressed",observer:"_ariaActiveAttributeChanged"}},listeners:{down:"_downHandler",up:"_upHandler",tap:"_tapHandler"},observers:["_detectKeyboardFocus(focused)","_activeChanged(active, ariaActiveAttribute)"],keyBindings:{"enter:keydown":"_asyncClick","space:keydown":"_spaceKeyDownHandler","space:keyup":"_spaceKeyUpHandler"},_mouseEventRe:/^mouse/,_tapHandler:function(){this.toggles?this._userActivate(!this.active):this.active=!1},_detectKeyboardFocus:function(e){this._setReceivedFocusFromKeyboard(!this.pointerDown&&e)},_userActivate:function(e){this.active!==e&&(this.active=e,this.fire("change"))},_downHandler:function(e){this._setPointerDown(!0),this._setPressed(!0),this._setReceivedFocusFromKeyboard(!1)},_upHandler:function(){this._setPointerDown(!1),this._setPressed(!1)},_spaceKeyDownHandler:function(e){var t=e.detail.keyboardEvent,i=Polymer.dom(t).localTarget;this.isLightDescendant(i)||(t.preventDefault(),t.stopImmediatePropagation(),this._setPressed(!0))},_spaceKeyUpHandler:function(e){var t=e.detail.keyboardEvent,i=Polymer.dom(t).localTarget;this.isLightDescendant(i)||(this.pressed&&this._asyncClick(),this._setPressed(!1))},_asyncClick:function(){this.async(function(){this.click()},1)},_pressedChanged:function(e){this._changedButtonState()},_ariaActiveAttributeChanged:function(e,t){t&&t!=e&&this.hasAttribute(t)&&this.removeAttribute(t)},_activeChanged:function(e,t){this.toggles?this.setAttribute(this.ariaActiveAttribute,e?"true":"false"):this.removeAttribute(this.ariaActiveAttribute),this._changedButtonState()},_controlStateChanged:function(){this.disabled?this._setPressed(!1):this._changedButtonState()},_changedButtonState:function(){this._buttonStateChanged&&this._buttonStateChanged()}},Polymer.IronButtonState=[Polymer.IronA11yKeysBehavior,Polymer.IronButtonStateImpl]</script><dom-module id="paper-ripple" assetpath="../bower_components/paper-ripple/"><template><style>:host{display:block;position:absolute;border-radius:inherit;overflow:hidden;top:0;left:0;right:0;bottom:0;pointer-events:none}:host([animating]){-webkit-transform:translate(0,0);transform:translate3d(0,0,0)}#background,#waves,.wave,.wave-container{pointer-events:none;position:absolute;top:0;left:0;width:100%;height:100%}#background,.wave{opacity:0}#waves,.wave{overflow:hidden}.wave,.wave-container{border-radius:50%}:host(.circle) #background,:host(.circle) #waves{border-radius:50%}:host(.circle) .wave-container{overflow:hidden}</style><div id="background"></div><div id="waves"></div></template></dom-module><script>!function(){function t(t){this.element=t,this.width=this.boundingRect.width,this.height=this.boundingRect.height,this.size=Math.max(this.width,this.height)}function i(t){this.element=t,this.color=window.getComputedStyle(t).color,this.wave=document.createElement("div"),this.waveContainer=document.createElement("div"),this.wave.style.backgroundColor=this.color,this.wave.classList.add("wave"),this.waveContainer.classList.add("wave-container"),Polymer.dom(this.waveContainer).appendChild(this.wave),this.resetInteractionState()}var e={distance:function(t,i,e,n){var s=t-e,o=i-n;return Math.sqrt(s*s+o*o)},now:window.performance&&window.performance.now?window.performance.now.bind(window.performance):Date.now};t.prototype={get boundingRect(){return this.element.getBoundingClientRect()},furthestCornerDistanceFrom:function(t,i){var n=e.distance(t,i,0,0),s=e.distance(t,i,this.width,0),o=e.distance(t,i,0,this.height),a=e.distance(t,i,this.width,this.height);return Math.max(n,s,o,a)}},i.MAX_RADIUS=300,i.prototype={get recenters(){return this.element.recenters},get center(){return this.element.center},get mouseDownElapsed(){var t;return this.mouseDownStart?(t=e.now()-this.mouseDownStart,this.mouseUpStart&&(t-=this.mouseUpElapsed),t):0},get mouseUpElapsed(){return this.mouseUpStart?e.now()-this.mouseUpStart:0},get mouseDownElapsedSeconds(){return this.mouseDownElapsed/1e3},get mouseUpElapsedSeconds(){return this.mouseUpElapsed/1e3},get mouseInteractionSeconds(){return this.mouseDownElapsedSeconds+this.mouseUpElapsedSeconds},get initialOpacity(){return this.element.initialOpacity},get opacityDecayVelocity(){return this.element.opacityDecayVelocity},get radius(){var t=this.containerMetrics.width*this.containerMetrics.width,e=this.containerMetrics.height*this.containerMetrics.height,n=1.1*Math.min(Math.sqrt(t+e),i.MAX_RADIUS)+5,s=1.1-.2*(n/i.MAX_RADIUS),o=this.mouseInteractionSeconds/s,a=n*(1-Math.pow(80,-o));return Math.abs(a)},get opacity(){return this.mouseUpStart?Math.max(0,this.initialOpacity-this.mouseUpElapsedSeconds*this.opacityDecayVelocity):this.initialOpacity},get outerOpacity(){var t=.3*this.mouseUpElapsedSeconds,i=this.opacity;return Math.max(0,Math.min(t,i))},get isOpacityFullyDecayed(){return this.opacity<.01&&this.radius>=Math.min(this.maxRadius,i.MAX_RADIUS)},get isRestingAtMaxRadius(){return this.opacity>=this.initialOpacity&&this.radius>=Math.min(this.maxRadius,i.MAX_RADIUS)},get isAnimationComplete(){return this.mouseUpStart?this.isOpacityFullyDecayed:this.isRestingAtMaxRadius},get translationFraction(){return Math.min(1,this.radius/this.containerMetrics.size*2/Math.sqrt(2))},get xNow(){return this.xEnd?this.xStart+this.translationFraction*(this.xEnd-this.xStart):this.xStart},get yNow(){return this.yEnd?this.yStart+this.translationFraction*(this.yEnd-this.yStart):this.yStart},get isMouseDown(){return this.mouseDownStart&&!this.mouseUpStart},resetInteractionState:function(){this.maxRadius=0,this.mouseDownStart=0,this.mouseUpStart=0,this.xStart=0,this.yStart=0,this.xEnd=0,this.yEnd=0,this.slideDistance=0,this.containerMetrics=new t(this.element)},draw:function(){var t,i,e;this.wave.style.opacity=this.opacity,t=this.radius/(this.containerMetrics.size/2),i=this.xNow-this.containerMetrics.width/2,e=this.yNow-this.containerMetrics.height/2,this.waveContainer.style.webkitTransform="translate("+i+"px, "+e+"px)",this.waveContainer.style.transform="translate3d("+i+"px, "+e+"px, 0)",this.wave.style.webkitTransform="scale("+t+","+t+")",this.wave.style.transform="scale3d("+t+","+t+",1)"},downAction:function(t){var i=this.containerMetrics.width/2,n=this.containerMetrics.height/2;this.resetInteractionState(),this.mouseDownStart=e.now(),this.center?(this.xStart=i,this.yStart=n,this.slideDistance=e.distance(this.xStart,this.yStart,this.xEnd,this.yEnd)):(this.xStart=t?t.detail.x-this.containerMetrics.boundingRect.left:this.containerMetrics.width/2,this.yStart=t?t.detail.y-this.containerMetrics.boundingRect.top:this.containerMetrics.height/2),this.recenters&&(this.xEnd=i,this.yEnd=n,this.slideDistance=e.distance(this.xStart,this.yStart,this.xEnd,this.yEnd)),this.maxRadius=this.containerMetrics.furthestCornerDistanceFrom(this.xStart,this.yStart),this.waveContainer.style.top=(this.containerMetrics.height-this.containerMetrics.size)/2+"px",this.waveContainer.style.left=(this.containerMetrics.width-this.containerMetrics.size)/2+"px",this.waveContainer.style.width=this.containerMetrics.size+"px",this.waveContainer.style.height=this.containerMetrics.size+"px"},upAction:function(t){this.isMouseDown&&(this.mouseUpStart=e.now())},remove:function(){Polymer.dom(this.waveContainer.parentNode).removeChild(this.waveContainer)}},Polymer({is:"paper-ripple",behaviors:[Polymer.IronA11yKeysBehavior],properties:{initialOpacity:{type:Number,value:.25},opacityDecayVelocity:{type:Number,value:.8},recenters:{type:Boolean,value:!1},center:{type:Boolean,value:!1},ripples:{type:Array,value:function(){return[]}},animating:{type:Boolean,readOnly:!0,reflectToAttribute:!0,value:!1},holdDown:{type:Boolean,value:!1,observer:"_holdDownChanged"},noink:{type:Boolean,value:!1},_animating:{type:Boolean},_boundAnimate:{type:Function,value:function(){return this.animate.bind(this)}}},get target(){return this.keyEventTarget},keyBindings:{"enter:keydown":"_onEnterKeydown","space:keydown":"_onSpaceKeydown","space:keyup":"_onSpaceKeyup"},attached:function(){11==this.parentNode.nodeType?this.keyEventTarget=Polymer.dom(this).getOwnerRoot().host:this.keyEventTarget=this.parentNode;var t=this.keyEventTarget;this.listen(t,"up","uiUpAction"),this.listen(t,"down","uiDownAction")},detached:function(){this.unlisten(this.keyEventTarget,"up","uiUpAction"),this.unlisten(this.keyEventTarget,"down","uiDownAction"),this.keyEventTarget=null},get shouldKeepAnimating(){for(var t=0;t<this.ripples.length;++t)if(!this.ripples[t].isAnimationComplete)return!0;return!1},simulatedRipple:function(){this.downAction(null),this.async(function(){this.upAction()},1)},uiDownAction:function(t){this.noink||this.downAction(t)},downAction:function(t){if(!(this.holdDown&&this.ripples.length>0)){var i=this.addRipple();i.downAction(t),this._animating||(this._animating=!0,this.animate())}},uiUpAction:function(t){this.noink||this.upAction(t)},upAction:function(t){this.holdDown||(this.ripples.forEach(function(i){i.upAction(t)}),this._animating=!0,this.animate())},onAnimationComplete:function(){this._animating=!1,this.$.background.style.backgroundColor=null,this.fire("transitionend")},addRipple:function(){var t=new i(this);return Polymer.dom(this.$.waves).appendChild(t.waveContainer),this.$.background.style.backgroundColor=t.color,this.ripples.push(t),this._setAnimating(!0),t},removeRipple:function(t){var i=this.ripples.indexOf(t);i<0||(this.ripples.splice(i,1),t.remove(),this.ripples.length||this._setAnimating(!1))},animate:function(){if(this._animating){var t,i;for(t=0;t<this.ripples.length;++t)i=this.ripples[t],i.draw(),this.$.background.style.opacity=i.outerOpacity,i.isOpacityFullyDecayed&&!i.isRestingAtMaxRadius&&this.removeRipple(i);this.shouldKeepAnimating||0!==this.ripples.length?window.requestAnimationFrame(this._boundAnimate):this.onAnimationComplete()}},_onEnterKeydown:function(){this.uiDownAction(),this.async(this.uiUpAction,1)},_onSpaceKeydown:function(){this.uiDownAction()},_onSpaceKeyup:function(){this.uiUpAction()},_holdDownChanged:function(t,i){void 0!==i&&(t?this.downAction():this.upAction())}})}()</script><script>Polymer.PaperRippleBehavior={properties:{noink:{type:Boolean,observer:"_noinkChanged"},_rippleContainer:{type:Object}},_buttonStateChanged:function(){this.focused&&this.ensureRipple()},_downHandler:function(e){Polymer.IronButtonStateImpl._downHandler.call(this,e),this.pressed&&this.ensureRipple(e)},ensureRipple:function(e){if(!this.hasRipple()){this._ripple=this._createRipple(),this._ripple.noink=this.noink;var i=this._rippleContainer||this.root;if(i&&Polymer.dom(i).appendChild(this._ripple),e){var n=Polymer.dom(this._rippleContainer||this),t=Polymer.dom(e).rootTarget;n.deepContains(t)&&this._ripple.uiDownAction(e)}}},getRipple:function(){return this.ensureRipple(),this._ripple},hasRipple:function(){return Boolean(this._ripple)},_createRipple:function(){return document.createElement("paper-ripple")},_noinkChanged:function(e){this.hasRipple()&&(this._ripple.noink=e)}}</script><script>Polymer.PaperInkyFocusBehaviorImpl={observers:["_focusedChanged(receivedFocusFromKeyboard)"],_focusedChanged:function(e){e&&this.ensureRipple(),this.hasRipple()&&(this._ripple.holdDown=e)},_createRipple:function(){var e=Polymer.PaperRippleBehavior._createRipple();return e.id="ink",e.setAttribute("center",""),e.classList.add("circle"),e}},Polymer.PaperInkyFocusBehavior=[Polymer.IronButtonState,Polymer.IronControlState,Polymer.PaperRippleBehavior,Polymer.PaperInkyFocusBehaviorImpl]</script><script>Polymer.PaperCheckedElementBehaviorImpl={_checkedChanged:function(){Polymer.IronCheckedElementBehaviorImpl._checkedChanged.call(this),this.hasRipple()&&(this.checked?this._ripple.setAttribute("checked",""):this._ripple.removeAttribute("checked"))},_buttonStateChanged:function(){Polymer.PaperRippleBehavior._buttonStateChanged.call(this),this.disabled||this.isAttached&&(this.checked=this.active)}},Polymer.PaperCheckedElementBehavior=[Polymer.PaperInkyFocusBehavior,Polymer.IronCheckedElementBehavior,Polymer.PaperCheckedElementBehaviorImpl]</script><dom-module id="paper-checkbox" assetpath="../bower_components/paper-checkbox/"><template strip-whitespace=""><style>:host{display:inline-block;white-space:nowrap;cursor:pointer;--calculated-paper-checkbox-size:var(--paper-checkbox-size, 18px);--calculated-paper-checkbox-ink-size:var(--paper-checkbox-ink-size, -1px);@apply(--paper-font-common-base);line-height:0;-webkit-tap-highlight-color:transparent}:host([hidden]){display:none!important}:host(:focus){outline:0}.hidden{display:none}#checkboxContainer{display:inline-block;position:relative;width:var(--calculated-paper-checkbox-size);height:var(--calculated-paper-checkbox-size);min-width:var(--calculated-paper-checkbox-size);margin:var(--paper-checkbox-margin,initial);vertical-align:var(--paper-checkbox-vertical-align,middle);background-color:var(--paper-checkbox-unchecked-background-color,transparent)}#ink{position:absolute;top:calc(0px - (var(--calculated-paper-checkbox-ink-size) - var(--calculated-paper-checkbox-size))/ 2);left:calc(0px - (var(--calculated-paper-checkbox-ink-size) - var(--calculated-paper-checkbox-size))/ 2);width:var(--calculated-paper-checkbox-ink-size);height:var(--calculated-paper-checkbox-ink-size);color:var(--paper-checkbox-unchecked-ink-color,var(--primary-text-color));opacity:.6;pointer-events:none}:host-context([dir=rtl]) #ink{right:calc(0px - (var(--calculated-paper-checkbox-ink-size) - var(--calculated-paper-checkbox-size))/ 2);left:auto}#ink[checked]{color:var(--paper-checkbox-checked-ink-color,var(--primary-color))}#checkbox{position:relative;box-sizing:border-box;height:100%;border:solid 2px;border-color:var(--paper-checkbox-unchecked-color,var(--primary-text-color));border-radius:2px;pointer-events:none;-webkit-transition:background-color 140ms,border-color 140ms;transition:background-color 140ms,border-color 140ms}#checkbox.checked #checkmark{-webkit-animation:checkmark-expand 140ms ease-out forwards;animation:checkmark-expand 140ms ease-out forwards}@-webkit-keyframes checkmark-expand{0%{-webkit-transform:scale(0,0) rotate(45deg)}100%{-webkit-transform:scale(1,1) rotate(45deg)}}@keyframes checkmark-expand{0%{transform:scale(0,0) rotate(45deg)}100%{transform:scale(1,1) rotate(45deg)}}#checkbox.checked{background-color:var(--paper-checkbox-checked-color,var(--primary-color));border-color:var(--paper-checkbox-checked-color,var(--primary-color))}#checkmark{position:absolute;width:36%;height:70%;border-style:solid;border-top:none;border-left:none;border-right-width:calc(2/15 * var(--calculated-paper-checkbox-size));border-bottom-width:calc(2/15 * var(--calculated-paper-checkbox-size));border-color:var(--paper-checkbox-checkmark-color,#fff);-webkit-transform-origin:97% 86%;transform-origin:97% 86%;box-sizing:content-box}:host-context([dir=rtl]) #checkmark{-webkit-transform-origin:50% 14%;transform-origin:50% 14%}#checkboxLabel{position:relative;display:inline-block;vertical-align:middle;padding-left:var(--paper-checkbox-label-spacing,8px);white-space:normal;line-height:normal;color:var(--paper-checkbox-label-color,var(--primary-text-color));@apply(--paper-checkbox-label)}:host([checked]) #checkboxLabel{color:var(--paper-checkbox-label-checked-color,var(--paper-checkbox-label-color,var(--primary-text-color)));@apply(--paper-checkbox-label-checked)}:host-context([dir=rtl]) #checkboxLabel{padding-right:var(--paper-checkbox-label-spacing,8px);padding-left:0}#checkboxLabel[hidden]{display:none}:host([disabled]) #checkbox{opacity:.5;border-color:var(--paper-checkbox-unchecked-color,var(--primary-text-color))}:host([disabled][checked]) #checkbox{background-color:var(--paper-checkbox-unchecked-color,var(--primary-text-color));opacity:.5}:host([disabled]) #checkboxLabel{opacity:.65}#checkbox.invalid:not(.checked){border-color:var(--paper-checkbox-error-color,var(--error-color))}</style><div id="checkboxContainer"><div id="checkbox" class$="[[_computeCheckboxClass(checked, invalid)]]"><div id="checkmark" class$="[[_computeCheckmarkClass(checked)]]"></div></div></div><div id="checkboxLabel"><content></content></div></template><script>Polymer({is:"paper-checkbox",behaviors:[Polymer.PaperCheckedElementBehavior],hostAttributes:{role:"checkbox","aria-checked":!1,tabindex:0},properties:{ariaActiveAttribute:{type:String,value:"aria-checked"}},attached:function(){var e=this.getComputedStyleValue("--calculated-paper-checkbox-ink-size").trim();if("-1px"===e){var t=parseFloat(this.getComputedStyleValue("--calculated-paper-checkbox-size").trim()),a=Math.floor(8/3*t);a%2!==t%2&&a++,this.customStyle["--paper-checkbox-ink-size"]=a+"px",this.updateStyles()}},_computeCheckboxClass:function(e,t){var a="";return e&&(a+="checked "),t&&(a+="invalid"),a},_computeCheckmarkClass:function(e){return e?"":"hidden"},_createRipple:function(){return this._rippleContainer=this.$.checkboxContainer,Polymer.PaperInkyFocusBehaviorImpl._createRipple.call(this)}})</script></dom-module><script>Polymer.PaperButtonBehaviorImpl={properties:{elevation:{type:Number,reflectToAttribute:!0,readOnly:!0}},observers:["_calculateElevation(focused, disabled, active, pressed, receivedFocusFromKeyboard)","_computeKeyboardClass(receivedFocusFromKeyboard)"],hostAttributes:{role:"button",tabindex:"0",animated:!0},_calculateElevation:function(){var e=1;this.disabled?e=0:this.active||this.pressed?e=4:this.receivedFocusFromKeyboard&&(e=3),this._setElevation(e)},_computeKeyboardClass:function(e){this.toggleClass("keyboard-focus",e)},_spaceKeyDownHandler:function(e){Polymer.IronButtonStateImpl._spaceKeyDownHandler.call(this,e),this.hasRipple()&&this.getRipple().ripples.length<1&&this._ripple.uiDownAction()},_spaceKeyUpHandler:function(e){Polymer.IronButtonStateImpl._spaceKeyUpHandler.call(this,e),this.hasRipple()&&this._ripple.uiUpAction()}},Polymer.PaperButtonBehavior=[Polymer.IronButtonState,Polymer.IronControlState,Polymer.PaperRippleBehavior,Polymer.PaperButtonBehaviorImpl]</script><style is="custom-style">:root{--shadow-transition:{transition:box-shadow .28s cubic-bezier(.4,0,.2,1)};--shadow-none:{box-shadow:none};--shadow-elevation-2dp:{box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2)};--shadow-elevation-3dp:{box-shadow:0 3px 4px 0 rgba(0,0,0,.14),0 1px 8px 0 rgba(0,0,0,.12),0 3px 3px -2px rgba(0,0,0,.4)};--shadow-elevation-4dp:{box-shadow:0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12),0 2px 4px -1px rgba(0,0,0,.4)};--shadow-elevation-6dp:{box-shadow:0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12),0 3px 5px -1px rgba(0,0,0,.4)};--shadow-elevation-8dp:{box-shadow:0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12),0 5px 5px -3px rgba(0,0,0,.4)};--shadow-elevation-12dp:{box-shadow:0 12px 16px 1px rgba(0,0,0,.14),0 4px 22px 3px rgba(0,0,0,.12),0 6px 7px -4px rgba(0,0,0,.4)};--shadow-elevation-16dp:{box-shadow:0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12),0 8px 10px -5px rgba(0,0,0,.4)};--shadow-elevation-24dp:{box-shadow:0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12),0 11px 15px -7px rgba(0,0,0,.4)};}</style><dom-module id="paper-material-shared-styles" assetpath="../bower_components/paper-material/"><template><style>:host{display:block;position:relative}:host([elevation="1"]){@apply(--shadow-elevation-2dp)}:host([elevation="2"]){@apply(--shadow-elevation-4dp)}:host([elevation="3"]){@apply(--shadow-elevation-6dp)}:host([elevation="4"]){@apply(--shadow-elevation-8dp)}:host([elevation="5"]){@apply(--shadow-elevation-16dp)}</style></template></dom-module><dom-module id="paper-button" assetpath="../bower_components/paper-button/"><template strip-whitespace=""><style include="paper-material-shared-styles">:host{@apply(--layout-inline);@apply(--layout-center-center);position:relative;box-sizing:border-box;min-width:5.14em;margin:0 .29em;background:0 0;-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:transparent;font:inherit;text-transform:uppercase;outline-width:0;border-radius:3px;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none;cursor:pointer;z-index:0;padding:.7em .57em;@apply(--paper-font-common-base);@apply(--paper-button)}:host([hidden]){display:none!important}:host([raised].keyboard-focus){font-weight:700;@apply(--paper-button-raised-keyboard-focus)}:host(:not([raised]).keyboard-focus){font-weight:700;@apply(--paper-button-flat-keyboard-focus)}:host([disabled]){background:#eaeaea;color:#a8a8a8;cursor:auto;pointer-events:none;@apply(--paper-button-disabled)}:host([animated]){@apply(--shadow-transition)}paper-ripple{color:var(--paper-button-ink-color)}</style><content></content></template><script>Polymer({is:"paper-button",behaviors:[Polymer.PaperButtonBehavior],properties:{raised:{type:Boolean,reflectToAttribute:!0,value:!1,observer:"_calculateElevation"}},_calculateElevation:function(){this.raised?Polymer.PaperButtonBehaviorImpl._calculateElevation.apply(this):this._setElevation(0)}})</script></dom-module><dom-module id="paper-input-container" assetpath="../bower_components/paper-input/"><template><style>:host{display:block;padding:8px 0;@apply(--paper-input-container)}:host([inline]){display:inline-block}:host([disabled]){pointer-events:none;opacity:.33;@apply(--paper-input-container-disabled)}:host([hidden]){display:none!important}.floated-label-placeholder{@apply(--paper-font-caption)}.underline{height:2px;position:relative}.focused-line{@apply(--layout-fit);border-bottom:2px solid var(--paper-input-container-focus-color,--primary-color);-webkit-transform-origin:center center;transform-origin:center center;-webkit-transform:scale3d(0,1,1);transform:scale3d(0,1,1);@apply(--paper-input-container-underline-focus)}.underline.is-highlighted .focused-line{-webkit-transform:none;transform:none;-webkit-transition:-webkit-transform .25s;transition:transform .25s;@apply(--paper-transition-easing)}.underline.is-invalid .focused-line{border-color:var(--paper-input-container-invalid-color,--error-color);-webkit-transform:none;transform:none;-webkit-transition:-webkit-transform .25s;transition:transform .25s;@apply(--paper-transition-easing)}.unfocused-line{@apply(--layout-fit);border-bottom:1px solid var(--paper-input-container-color,--secondary-text-color);@apply(--paper-input-container-underline)}:host([disabled]) .unfocused-line{border-bottom:1px dashed;border-color:var(--paper-input-container-color,--secondary-text-color);@apply(--paper-input-container-underline-disabled)}.label-and-input-container{@apply(--layout-flex-auto);@apply(--layout-relative);width:100%;max-width:100%}.input-content{@apply(--layout-horizontal);@apply(--layout-center);position:relative}.input-content ::content .paper-input-label,.input-content ::content label{position:absolute;top:0;right:0;left:0;width:100%;font:inherit;color:var(--paper-input-container-color,--secondary-text-color);-webkit-transition:-webkit-transform .25s,width .25s;transition:transform .25s,width .25s;-webkit-transform-origin:left top;transform-origin:left top;@apply(--paper-font-common-nowrap);@apply(--paper-font-subhead);@apply(--paper-input-container-label);@apply(--paper-transition-easing)}.input-content.label-is-floating ::content .paper-input-label,.input-content.label-is-floating ::content label{-webkit-transform:translateY(-75%) scale(.75);transform:translateY(-75%) scale(.75);width:133%;@apply(--paper-input-container-label-floating)}:host-context([dir=rtl]) .input-content.label-is-floating ::content .paper-input-label,:host-context([dir=rtl]) .input-content.label-is-floating ::content label{width:100%;-webkit-transform-origin:right top;transform-origin:right top}.input-content.label-is-highlighted ::content .paper-input-label,.input-content.label-is-highlighted ::content label{color:var(--paper-input-container-focus-color,--primary-color);@apply(--paper-input-container-label-focus)}.input-content.is-invalid ::content .paper-input-label,.input-content.is-invalid ::content label{color:var(--paper-input-container-invalid-color,--error-color)}.input-content.label-is-hidden ::content .paper-input-label,.input-content.label-is-hidden ::content label{visibility:hidden}.input-content ::content .paper-input-input,.input-content ::content input,.input-content ::content iron-autogrow-textarea,.input-content ::content textarea{position:relative;outline:0;box-shadow:none;padding:0;width:100%;max-width:100%;background:0 0;border:none;color:var(--paper-input-container-input-color,--primary-text-color);-webkit-appearance:none;text-align:inherit;vertical-align:bottom;@apply(--paper-font-subhead);@apply(--paper-input-container-input)}.input-content ::content input::-webkit-inner-spin-button,.input-content ::content input::-webkit-outer-spin-button{@apply(--paper-input-container-input-webkit-spinner)}::content [prefix]{@apply(--paper-font-subhead);@apply(--paper-input-prefix);@apply(--layout-flex-none)}::content [suffix]{@apply(--paper-font-subhead);@apply(--paper-input-suffix);@apply(--layout-flex-none)}.input-content ::content input{min-width:0}.input-content ::content textarea{resize:none}.add-on-content{position:relative}.add-on-content.is-invalid ::content *{color:var(--paper-input-container-invalid-color,--error-color)}.add-on-content.is-highlighted ::content *{color:var(--paper-input-container-focus-color,--primary-color)}</style><template is="dom-if" if="[[!noLabelFloat]]"><div class="floated-label-placeholder" aria-hidden="true"> </div></template><div class$="[[_computeInputContentClass(noLabelFloat,alwaysFloatLabel,focused,invalid,_inputHasContent)]]"><content select="[prefix]" id="prefix"></content><div class="label-and-input-container" id="labelAndInputContainer"><content select=":not([add-on]):not([prefix]):not([suffix])"></content></div><content select="[suffix]"></content></div><div class$="[[_computeUnderlineClass(focused,invalid)]]"><div class="unfocused-line"></div><div class="focused-line"></div></div><div class$="[[_computeAddOnContentClass(focused,invalid)]]"><content id="addOnContent" select="[add-on]"></content></div></template></dom-module><script>Polymer({is:"paper-input-container",properties:{noLabelFloat:{type:Boolean,value:!1},alwaysFloatLabel:{type:Boolean,value:!1},attrForValue:{type:String,value:"bind-value"},autoValidate:{type:Boolean,value:!1},invalid:{observer:"_invalidChanged",type:Boolean,value:!1},focused:{readOnly:!0,type:Boolean,value:!1,notify:!0},_addons:{type:Array},_inputHasContent:{type:Boolean,value:!1},_inputSelector:{type:String,value:"input,textarea,.paper-input-input"},_boundOnFocus:{type:Function,value:function(){return this._onFocus.bind(this)}},_boundOnBlur:{type:Function,value:function(){return this._onBlur.bind(this)}},_boundOnInput:{type:Function,value:function(){return this._onInput.bind(this)}},_boundValueChanged:{type:Function,value:function(){return this._onValueChanged.bind(this)}}},listeners:{"addon-attached":"_onAddonAttached","iron-input-validate":"_onIronInputValidate"},get _valueChangedEvent(){return this.attrForValue+"-changed"},get _propertyForValue(){return Polymer.CaseMap.dashToCamelCase(this.attrForValue)},get _inputElement(){return Polymer.dom(this).querySelector(this._inputSelector)},get _inputElementValue(){return this._inputElement[this._propertyForValue]||this._inputElement.value},ready:function(){this._addons||(this._addons=[]),this.addEventListener("focus",this._boundOnFocus,!0),this.addEventListener("blur",this._boundOnBlur,!0)},attached:function(){this.attrForValue?this._inputElement.addEventListener(this._valueChangedEvent,this._boundValueChanged):this.addEventListener("input",this._onInput),""!=this._inputElementValue?this._handleValueAndAutoValidate(this._inputElement):this._handleValue(this._inputElement)},_onAddonAttached:function(t){this._addons||(this._addons=[]);var n=t.target;this._addons.indexOf(n)===-1&&(this._addons.push(n),this.isAttached&&this._handleValue(this._inputElement))},_onFocus:function(){this._setFocused(!0)},_onBlur:function(){this._setFocused(!1),this._handleValueAndAutoValidate(this._inputElement)},_onInput:function(t){this._handleValueAndAutoValidate(t.target)},_onValueChanged:function(t){this._handleValueAndAutoValidate(t.target)},_handleValue:function(t){var n=this._inputElementValue;n||0===n||"number"===t.type&&!t.checkValidity()?this._inputHasContent=!0:this._inputHasContent=!1,this.updateAddons({inputElement:t,value:n,invalid:this.invalid})},_handleValueAndAutoValidate:function(t){if(this.autoValidate){var n;n=t.validate?t.validate(this._inputElementValue):t.checkValidity(),this.invalid=!n}this._handleValue(t)},_onIronInputValidate:function(t){this.invalid=this._inputElement.invalid},_invalidChanged:function(){this._addons&&this.updateAddons({invalid:this.invalid})},updateAddons:function(t){for(var n,e=0;n=this._addons[e];e++)n.update(t)},_computeInputContentClass:function(t,n,e,i,a){var u="input-content";if(t)a&&(u+=" label-is-hidden");else{var o=this.querySelector("label");n||a?(u+=" label-is-floating",this.$.labelAndInputContainer.style.position="static",i?u+=" is-invalid":e&&(u+=" label-is-highlighted")):o&&(this.$.labelAndInputContainer.style.position="relative")}return u},_computeUnderlineClass:function(t,n){var e="underline";return n?e+=" is-invalid":t&&(e+=" is-highlighted"),e},_computeAddOnContentClass:function(t,n){var e="add-on-content";return n?e+=" is-invalid":t&&(e+=" is-highlighted"),e}})</script><script>Polymer.PaperInputAddonBehavior={hostAttributes:{"add-on":""},attached:function(){this.fire("addon-attached")},update:function(t){}}</script><dom-module id="paper-input-error" assetpath="../bower_components/paper-input/"><template><style>:host{display:inline-block;visibility:hidden;color:var(--paper-input-container-invalid-color,--error-color);@apply(--paper-font-caption);@apply(--paper-input-error);position:absolute;left:0;right:0}:host([invalid]){visibility:visible};</style><content></content></template></dom-module><script>Polymer({is:"paper-input-error",behaviors:[Polymer.PaperInputAddonBehavior],properties:{invalid:{readOnly:!0,reflectToAttribute:!0,type:Boolean}},update:function(e){this._setInvalid(e.invalid)}})</script><dom-module id="iron-a11y-announcer" assetpath="../bower_components/iron-a11y-announcer/"><template><style>:host{display:inline-block;position:fixed;clip:rect(0,0,0,0)}</style><div aria-live$="[[mode]]">[[_text]]</div></template><script>!function(){"use strict";Polymer.IronA11yAnnouncer=Polymer({is:"iron-a11y-announcer",properties:{mode:{type:String,value:"polite"},_text:{type:String,value:""}},created:function(){Polymer.IronA11yAnnouncer.instance||(Polymer.IronA11yAnnouncer.instance=this),document.body.addEventListener("iron-announce",this._onIronAnnounce.bind(this))},announce:function(n){this._text="",this.async(function(){this._text=n},100)},_onIronAnnounce:function(n){n.detail&&n.detail.text&&this.announce(n.detail.text)}}),Polymer.IronA11yAnnouncer.instance=null,Polymer.IronA11yAnnouncer.requestAvailability=function(){Polymer.IronA11yAnnouncer.instance||(Polymer.IronA11yAnnouncer.instance=document.createElement("iron-a11y-announcer")),document.body.appendChild(Polymer.IronA11yAnnouncer.instance)}}()</script></dom-module><script>Polymer({is:"iron-input",extends:"input",behaviors:[Polymer.IronValidatableBehavior],properties:{bindValue:{observer:"_bindValueChanged",type:String},preventInvalidInput:{type:Boolean},allowedPattern:{type:String,observer:"_allowedPatternChanged"},_previousValidInput:{type:String,value:""},_patternAlreadyChecked:{type:Boolean,value:!1}},listeners:{input:"_onInput",keypress:"_onKeypress"},registered:function(){this._canDispatchEventOnDisabled()||(this._origDispatchEvent=this.dispatchEvent,this.dispatchEvent=this._dispatchEventFirefoxIE)},created:function(){Polymer.IronA11yAnnouncer.requestAvailability()},_canDispatchEventOnDisabled:function(){var e=document.createElement("input"),t=!1;e.disabled=!0,e.addEventListener("feature-check-dispatch-event",function(){t=!0});try{e.dispatchEvent(new Event("feature-check-dispatch-event"))}catch(e){}return t},_dispatchEventFirefoxIE:function(){var e=this.disabled;this.disabled=!1,this._origDispatchEvent.apply(this,arguments),this.disabled=e},get _patternRegExp(){var e;if(this.allowedPattern)e=new RegExp(this.allowedPattern);else switch(this.type){case"number":e=/[0-9.,e-]/}return e},ready:function(){this.bindValue=this.value},_bindValueChanged:function(){this.value!==this.bindValue&&(this.value=this.bindValue||0===this.bindValue||this.bindValue===!1?this.bindValue:""),this.fire("bind-value-changed",{value:this.bindValue})},_allowedPatternChanged:function(){this.preventInvalidInput=!!this.allowedPattern},_onInput:function(){if(this.preventInvalidInput&&!this._patternAlreadyChecked){var e=this._checkPatternValidity();e||(this._announceInvalidCharacter("Invalid string of characters not entered."),this.value=this._previousValidInput)}this.bindValue=this.value,this._previousValidInput=this.value,this._patternAlreadyChecked=!1},_isPrintable:function(e){var t=8==e.keyCode||9==e.keyCode||13==e.keyCode||27==e.keyCode,i=19==e.keyCode||20==e.keyCode||45==e.keyCode||46==e.keyCode||144==e.keyCode||145==e.keyCode||e.keyCode>32&&e.keyCode<41||e.keyCode>111&&e.keyCode<124;return!(t||0==e.charCode&&i)},_onKeypress:function(e){if(this.preventInvalidInput||"number"===this.type){var t=this._patternRegExp;if(t&&!(e.metaKey||e.ctrlKey||e.altKey)){this._patternAlreadyChecked=!0;var i=String.fromCharCode(e.charCode);this._isPrintable(e)&&!t.test(i)&&(e.preventDefault(),this._announceInvalidCharacter("Invalid character "+i+" not entered."))}}},_checkPatternValidity:function(){var e=this._patternRegExp;if(!e)return!0;for(var t=0;t<this.value.length;t++)if(!e.test(this.value[t]))return!1;return!0},validate:function(){var e=this.checkValidity();return e&&(this.required&&""===this.value?e=!1:this.hasValidator()&&(e=Polymer.IronValidatableBehavior.validate.call(this,this.value))),this.invalid=!e,this.fire("iron-input-validate"),e},_announceInvalidCharacter:function(e){this.fire("iron-announce",{text:e})}})</script><dom-module id="login-form" assetpath="layouts/"><template><style is="custom-style" include="iron-flex iron-positioning"></style><style>:host{white-space:nowrap}#passwordDecorator{display:block;margin-bottom:16px}paper-checkbox{margin-right:8px}paper-button{margin-left:72px}.interact{height:125px}#validatebox{margin-top:16px;text-align:center}.validatemessage{margin-top:10px}</style><div class="layout vertical center center-center fit"><img src="/static/icons/favicon-192x192.png" height="192"> <a href="#" id="hideKeyboardOnFocus"></a><div class="interact"><div id="loginform" hidden$="[[showLoading]]"><paper-input-container id="passwordDecorator" invalid="[[isInvalid]]"><label>Password</label><input is="iron-input" type="password" id="passwordInput"><paper-input-error invalid="[[isInvalid]]">[[errorMessage]]</paper-input-error></paper-input-container><div class="layout horizontal center"><paper-checkbox for="" id="rememberLogin">Remember</paper-checkbox><paper-button id="loginButton">Log In</paper-button></div></div><div id="validatebox" hidden$="[[!showLoading]]"><paper-spinner active="true"></paper-spinner><br><div class="validatemessage">Loading data</div></div></div></div></template></dom-module><script>Polymer({is:"login-form",behaviors:[window.hassBehavior],properties:{hass:{type:Object},errorMessage:{type:String,bindNuclear:function(e){return e.authGetters.attemptErrorMessage}},isInvalid:{type:Boolean,bindNuclear:function(e){return e.authGetters.isInvalidAttempt}},isValidating:{type:Boolean,observer:"isValidatingChanged",bindNuclear:function(e){return e.authGetters.isValidating}},loadingResources:{type:Boolean,value:!1},forceShowLoading:{type:Boolean,value:!1},showLoading:{type:Boolean,computed:"computeShowSpinner(forceShowLoading, isValidating)"}},listeners:{keydown:"passwordKeyDown","loginButton.tap":"validatePassword"},observers:["validatingChanged(isValidating, isInvalid)"],attached:function(){window.removeInitMsg()},computeShowSpinner:function(e,i){return e||i},validatingChanged:function(e,i){e||i||(this.$.passwordInput.value="")},isValidatingChanged:function(e){e||this.async(function(){this.$.passwordInput.focus()}.bind(this),10)},passwordKeyDown:function(e){13===e.keyCode?(this.validatePassword(),e.preventDefault()):this.isInvalid&&(this.isInvalid=!1)},validatePassword:function(){this.$.hideKeyboardOnFocus.focus(),window.validateAuth(this.$.passwordInput.value,this.$.rememberLogin.checked)}})</script><script>Polymer({is:"iron-media-query",properties:{queryMatches:{type:Boolean,value:!1,readOnly:!0,notify:!0},query:{type:String,observer:"queryChanged"},full:{type:Boolean,value:!1},_boundMQHandler:{value:function(){return this.queryHandler.bind(this)}},_mq:{value:null}},attached:function(){this.style.display="none",this.queryChanged()},detached:function(){this._remove()},_add:function(){this._mq&&this._mq.addListener(this._boundMQHandler)},_remove:function(){this._mq&&this._mq.removeListener(this._boundMQHandler),this._mq=null},queryChanged:function(){this._remove();var e=this.query;e&&(this.full||"("===e[0]||(e="("+e+")"),this._mq=window.matchMedia(e),this._add(),this.queryHandler(this._mq))},queryHandler:function(e){this._setQueryMatches(e.matches)}})</script><script>Polymer.IronSelection=function(e){this.selection=[],this.selectCallback=e},Polymer.IronSelection.prototype={get:function(){return this.multi?this.selection.slice():this.selection[0]},clear:function(e){this.selection.slice().forEach(function(t){(!e||e.indexOf(t)<0)&&this.setItemSelected(t,!1)},this)},isSelected:function(e){return this.selection.indexOf(e)>=0},setItemSelected:function(e,t){if(null!=e&&t!==this.isSelected(e)){if(t)this.selection.push(e);else{var i=this.selection.indexOf(e);i>=0&&this.selection.splice(i,1)}this.selectCallback&&this.selectCallback(e,t)}},select:function(e){this.multi?this.toggle(e):this.get()!==e&&(this.setItemSelected(this.get(),!1),this.setItemSelected(e,!0))},toggle:function(e){this.setItemSelected(e,!this.isSelected(e))}}</script><script>Polymer.IronSelectableBehavior={properties:{attrForSelected:{type:String,value:null},selected:{type:String,notify:!0},selectedItem:{type:Object,readOnly:!0,notify:!0},activateEvent:{type:String,value:"tap",observer:"_activateEventChanged"},selectable:String,selectedClass:{type:String,value:"iron-selected"},selectedAttribute:{type:String,value:null},fallbackSelection:{type:String,value:null},items:{type:Array,readOnly:!0,notify:!0,value:function(){return[]}},_excludedLocalNames:{type:Object,value:function(){return{template:1}}}},observers:["_updateAttrForSelected(attrForSelected)","_updateSelected(selected)","_checkFallback(fallbackSelection)"],created:function(){this._bindFilterItem=this._filterItem.bind(this),this._selection=new Polymer.IronSelection(this._applySelection.bind(this))},attached:function(){this._observer=this._observeItems(this),this._updateItems(),this._shouldUpdateSelection||this._updateSelected(),this._addListener(this.activateEvent)},detached:function(){this._observer&&Polymer.dom(this).unobserveNodes(this._observer),this._removeListener(this.activateEvent)},indexOf:function(e){return this.items.indexOf(e)},select:function(e){this.selected=e},selectPrevious:function(){var e=this.items.length,t=(Number(this._valueToIndex(this.selected))-1+e)%e;this.selected=this._indexToValue(t)},selectNext:function(){var e=(Number(this._valueToIndex(this.selected))+1)%this.items.length;this.selected=this._indexToValue(e)},selectIndex:function(e){this.select(this._indexToValue(e))},forceSynchronousItemUpdate:function(){this._updateItems()},get _shouldUpdateSelection(){return null!=this.selected},_checkFallback:function(){this._shouldUpdateSelection&&this._updateSelected()},_addListener:function(e){this.listen(this,e,"_activateHandler")},_removeListener:function(e){this.unlisten(this,e,"_activateHandler")},_activateEventChanged:function(e,t){this._removeListener(t),this._addListener(e)},_updateItems:function(){var e=Polymer.dom(this).queryDistributedElements(this.selectable||"*");e=Array.prototype.filter.call(e,this._bindFilterItem),this._setItems(e)},_updateAttrForSelected:function(){this._shouldUpdateSelection&&(this.selected=this._indexToValue(this.indexOf(this.selectedItem)))},_updateSelected:function(){this._selectSelected(this.selected)},_selectSelected:function(e){this._selection.select(this._valueToItem(this.selected)),this.fallbackSelection&&this.items.length&&void 0===this._selection.get()&&(this.selected=this.fallbackSelection)},_filterItem:function(e){return!this._excludedLocalNames[e.localName]},_valueToItem:function(e){return null==e?null:this.items[this._valueToIndex(e)]},_valueToIndex:function(e){if(!this.attrForSelected)return Number(e);for(var t,i=0;t=this.items[i];i++)if(this._valueForItem(t)==e)return i},_indexToValue:function(e){if(!this.attrForSelected)return e;var t=this.items[e];return t?this._valueForItem(t):void 0},_valueForItem:function(e){var t=e[Polymer.CaseMap.dashToCamelCase(this.attrForSelected)];return void 0!=t?t:e.getAttribute(this.attrForSelected)},_applySelection:function(e,t){this.selectedClass&&this.toggleClass(this.selectedClass,t,e),this.selectedAttribute&&this.toggleAttribute(this.selectedAttribute,t,e),this._selectionChange(),this.fire("iron-"+(t?"select":"deselect"),{item:e})},_selectionChange:function(){this._setSelectedItem(this._selection.get())},_observeItems:function(e){return Polymer.dom(e).observeNodes(function(e){this._updateItems(),this._shouldUpdateSelection&&this._updateSelected(),this.fire("iron-items-changed",e,{bubbles:!1,cancelable:!1})})},_activateHandler:function(e){for(var t=e.target,i=this.items;t&&t!=this;){var s=i.indexOf(t);if(s>=0){var n=this._indexToValue(s);return void this._itemActivate(n,t)}t=t.parentNode}},_itemActivate:function(e,t){this.fire("iron-activate",{selected:e,item:t},{cancelable:!0}).defaultPrevented||this.select(e)}}</script><script>Polymer.IronMultiSelectableBehaviorImpl={properties:{multi:{type:Boolean,value:!1,observer:"multiChanged"},selectedValues:{type:Array,notify:!0},selectedItems:{type:Array,readOnly:!0,notify:!0}},observers:["_updateSelected(selectedValues.splices)"],select:function(e){this.multi?this.selectedValues?this._toggleSelected(e):this.selectedValues=[e]:this.selected=e},multiChanged:function(e){this._selection.multi=e},get _shouldUpdateSelection(){return null!=this.selected||null!=this.selectedValues&&this.selectedValues.length},_updateAttrForSelected:function(){this.multi?this._shouldUpdateSelection&&(this.selectedValues=this.selectedItems.map(function(e){return this._indexToValue(this.indexOf(e))},this).filter(function(e){return null!=e},this)):Polymer.IronSelectableBehavior._updateAttrForSelected.apply(this)},_updateSelected:function(){this.multi?this._selectMulti(this.selectedValues):this._selectSelected(this.selected)},_selectMulti:function(e){if(e){var t=this._valuesToItems(e);this._selection.clear(t);for(var l=0;l<t.length;l++)this._selection.setItemSelected(t[l],!0);if(this.fallbackSelection&&this.items.length&&!this._selection.get().length){var s=this._valueToItem(this.fallbackSelection);s&&(this.selectedValues=[this.fallbackSelection])}}else this._selection.clear()},_selectionChange:function(){var e=this._selection.get();this.multi?this._setSelectedItems(e):(this._setSelectedItems([e]),this._setSelectedItem(e))},_toggleSelected:function(e){var t=this.selectedValues.indexOf(e),l=t<0;l?this.push("selectedValues",e):this.splice("selectedValues",t,1)},_valuesToItems:function(e){return null==e?null:e.map(function(e){return this._valueToItem(e)},this)}},Polymer.IronMultiSelectableBehavior=[Polymer.IronSelectableBehavior,Polymer.IronMultiSelectableBehaviorImpl]</script><script>Polymer({is:"iron-selector",behaviors:[Polymer.IronMultiSelectableBehavior]})</script><script>Polymer.IronResizableBehavior={properties:{_parentResizable:{type:Object,observer:"_parentResizableChanged"},_notifyingDescendant:{type:Boolean,value:!1}},listeners:{"iron-request-resize-notifications":"_onIronRequestResizeNotifications"},created:function(){this._interestedResizables=[],this._boundNotifyResize=this.notifyResize.bind(this)},attached:function(){this.fire("iron-request-resize-notifications",null,{node:this,bubbles:!0,cancelable:!0}),this._parentResizable||(window.addEventListener("resize",this._boundNotifyResize),this.notifyResize())},detached:function(){this._parentResizable?this._parentResizable.stopResizeNotificationsFor(this):window.removeEventListener("resize",this._boundNotifyResize),this._parentResizable=null},notifyResize:function(){this.isAttached&&(this._interestedResizables.forEach(function(e){this.resizerShouldNotify(e)&&this._notifyDescendant(e)},this),this._fireResize())},assignParentResizable:function(e){this._parentResizable=e},stopResizeNotificationsFor:function(e){var i=this._interestedResizables.indexOf(e);i>-1&&(this._interestedResizables.splice(i,1),this.unlisten(e,"iron-resize","_onDescendantIronResize"))},resizerShouldNotify:function(e){return!0},_onDescendantIronResize:function(e){return this._notifyingDescendant?void e.stopPropagation():void(Polymer.Settings.useShadow||this._fireResize())},_fireResize:function(){this.fire("iron-resize",null,{node:this,bubbles:!1})},_onIronRequestResizeNotifications:function(e){var i=e.path?e.path[0]:e.target;i!==this&&(this._interestedResizables.indexOf(i)===-1&&(this._interestedResizables.push(i),this.listen(i,"iron-resize","_onDescendantIronResize")),i.assignParentResizable(this),this._notifyDescendant(i),e.stopPropagation())},_parentResizableChanged:function(e){e&&window.removeEventListener("resize",this._boundNotifyResize)},_notifyDescendant:function(e){this.isAttached&&(this._notifyingDescendant=!0,e.notifyResize(),this._notifyingDescendant=!1)}}</script><dom-module id="paper-drawer-panel" assetpath="../bower_components/paper-drawer-panel/"><template><style>:host{display:block;position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden}iron-selector>#drawer{position:absolute;top:0;left:0;height:100%;background-color:#fff;-moz-box-sizing:border-box;box-sizing:border-box;@apply(--paper-drawer-panel-drawer-container)}.transition-drawer{transition:-webkit-transform ease-in-out .3s,width ease-in-out .3s,visibility .3s;transition:transform ease-in-out .3s,width ease-in-out .3s,visibility .3s}.left-drawer>#drawer{@apply(--paper-drawer-panel-left-drawer-container)}.right-drawer>#drawer{left:auto;right:0;@apply(--paper-drawer-panel-right-drawer-container)}iron-selector>#main{position:absolute;top:0;right:0;bottom:0;@apply(--paper-drawer-panel-main-container)}.transition>#main{transition:left ease-in-out .3s,padding ease-in-out .3s}.right-drawer>#main{left:0}.right-drawer.transition>#main{transition:right ease-in-out .3s,padding ease-in-out .3s}#main>::content>[main]{height:100%}#drawer>::content>[drawer]{height:100%}#scrim{position:absolute;top:0;right:0;bottom:0;left:0;visibility:hidden;opacity:0;transition:opacity ease-in-out .38s,visibility ease-in-out .38s;background-color:rgba(0,0,0,.3);@apply(--paper-drawer-panel-scrim)}.narrow-layout>#drawer{will-change:transform}.narrow-layout>#drawer.iron-selected{box-shadow:2px 2px 4px rgba(0,0,0,.15)}.right-drawer.narrow-layout>#drawer.iron-selected{box-shadow:-2px 2px 4px rgba(0,0,0,.15)}.narrow-layout>#drawer>::content>[drawer]{border:0}.left-drawer.narrow-layout>#drawer:not(.iron-selected){visibility:hidden;-webkit-transform:translateX(-100%);transform:translateX(-100%)}.right-drawer.narrow-layout>#drawer:not(.iron-selected){left:auto;visibility:hidden;-webkit-transform:translateX(100%);transform:translateX(100%)}.left-drawer.dragging>#drawer:not(.iron-selected),.left-drawer.peeking>#drawer:not(.iron-selected),.right-drawer.dragging>#drawer:not(.iron-selected),.right-drawer.peeking>#drawer:not(.iron-selected){visibility:visible}.narrow-layout>#main{padding:0}.right-drawer.narrow-layout>#main{left:0;right:0}.dragging>#main>#scrim,.narrow-layout>#main:not(.iron-selected)>#scrim{visibility:visible;opacity:var(--paper-drawer-panel-scrim-opacity,1)}.narrow-layout>#main>*{margin:0;min-height:100%;left:0;right:0;-moz-box-sizing:border-box;box-sizing:border-box}iron-selector:not(.narrow-layout) ::content [paper-drawer-toggle]{display:none}</style><iron-media-query id="mq" on-query-matches-changed="_onQueryMatchesChanged" query="[[_computeMediaQuery(forceNarrow, responsiveWidth)]]"></iron-media-query><iron-selector attr-for-selected="id" class$="[[_computeIronSelectorClass(narrow, _transition, dragging, rightDrawer, peeking)]]" activate-event="" selected="[[selected]]"><div id="main" style$="[[_computeMainStyle(narrow, rightDrawer, drawerWidth)]]"><content select="[main]"></content><div id="scrim" on-tap="closeDrawer"></div></div><div id="drawer" style$="[[_computeDrawerStyle(drawerWidth)]]"><content id="drawerContent" select="[drawer]"></content></div></iron-selector></template><script>!function(){"use strict";function e(e){var t=[];for(var i in e)e.hasOwnProperty(i)&&e[i]&&t.push(i);return t.join(" ")}var t=null;Polymer({is:"paper-drawer-panel",behaviors:[Polymer.IronResizableBehavior],properties:{defaultSelected:{type:String,value:"main"},disableEdgeSwipe:{type:Boolean,value:!1},disableSwipe:{type:Boolean,value:!1},dragging:{type:Boolean,value:!1,readOnly:!0,notify:!0},drawerWidth:{type:String,value:"256px"},edgeSwipeSensitivity:{type:Number,value:30},forceNarrow:{type:Boolean,value:!1},hasTransform:{type:Boolean,value:function(){return"transform"in this.style}},hasWillChange:{type:Boolean,value:function(){return"willChange"in this.style}},narrow:{reflectToAttribute:!0,type:Boolean,value:!1,readOnly:!0,notify:!0},peeking:{type:Boolean,value:!1,readOnly:!0,notify:!0},responsiveWidth:{type:String,value:"768px"},rightDrawer:{type:Boolean,value:!1},selected:{reflectToAttribute:!0,notify:!0,type:String,value:null},drawerToggleAttribute:{type:String,value:"paper-drawer-toggle"},drawerFocusSelector:{type:String,value:'a[href]:not([tabindex="-1"]),area[href]:not([tabindex="-1"]),input:not([disabled]):not([tabindex="-1"]),select:not([disabled]):not([tabindex="-1"]),textarea:not([disabled]):not([tabindex="-1"]),button:not([disabled]):not([tabindex="-1"]),iframe:not([tabindex="-1"]),[tabindex]:not([tabindex="-1"]),[contentEditable=true]:not([tabindex="-1"])'},_transition:{type:Boolean,value:!1}},listeners:{tap:"_onTap",track:"_onTrack",down:"_downHandler",up:"_upHandler",transitionend:"_onTransitionEnd"},observers:["_forceNarrowChanged(forceNarrow, defaultSelected)","_toggleFocusListener(selected)"],ready:function(){this._transition=!0,this._boundFocusListener=this._didFocus.bind(this)},togglePanel:function(){this._isMainSelected()?this.openDrawer():this.closeDrawer()},openDrawer:function(){requestAnimationFrame(function(){this.toggleClass("transition-drawer",!0,this.$.drawer),this.selected="drawer"}.bind(this))},closeDrawer:function(){requestAnimationFrame(function(){this.toggleClass("transition-drawer",!0,this.$.drawer),this.selected="main"}.bind(this))},_onTransitionEnd:function(e){var t=Polymer.dom(e).localTarget;if(t===this&&("left"!==e.propertyName&&"right"!==e.propertyName||this.notifyResize(),"transform"===e.propertyName&&(requestAnimationFrame(function(){this.toggleClass("transition-drawer",!1,this.$.drawer)}.bind(this)),"drawer"===this.selected))){var i=this._getAutoFocusedNode();i&&i.focus()}},_computeIronSelectorClass:function(t,i,r,n,a){return e({dragging:r,"narrow-layout":t,"right-drawer":n,"left-drawer":!n,transition:i,peeking:a})},_computeDrawerStyle:function(e){return"width:"+e+";"},_computeMainStyle:function(e,t,i){var r="";return r+="left:"+(e||t?"0":i)+";",t&&(r+="right:"+(e?"":i)+";"),r},_computeMediaQuery:function(e,t){return e?"":"(max-width: "+t+")"},_computeSwipeOverlayHidden:function(e,t){return!e||t},_onTrack:function(e){if(!t||this===t)switch(e.detail.state){case"start":this._trackStart(e);break;case"track":this._trackX(e);break;case"end":this._trackEnd(e)}},_responsiveChange:function(e){this._setNarrow(e),this.selected=this.narrow?this.defaultSelected:null,this.setScrollDirection(this._swipeAllowed()?"y":"all"),this.fire("paper-responsive-change",{narrow:this.narrow})},_onQueryMatchesChanged:function(e){this._responsiveChange(e.detail.value)},_forceNarrowChanged:function(){this._responsiveChange(this.forceNarrow||this.$.mq.queryMatches)},_swipeAllowed:function(){return this.narrow&&!this.disableSwipe},_isMainSelected:function(){return"main"===this.selected},_startEdgePeek:function(){this.width=this.$.drawer.offsetWidth,this._moveDrawer(this._translateXForDeltaX(this.rightDrawer?-this.edgeSwipeSensitivity:this.edgeSwipeSensitivity)),this._setPeeking(!0)},_stopEdgePeek:function(){this.peeking&&(this._setPeeking(!1),this._moveDrawer(null))},_downHandler:function(e){!this.dragging&&this._isMainSelected()&&this._isEdgeTouch(e)&&!t&&(this._startEdgePeek(),e.preventDefault(),t=this)},_upHandler:function(){this._stopEdgePeek(),t=null},_onTap:function(e){var t=Polymer.dom(e).localTarget,i=t&&this.drawerToggleAttribute&&t.hasAttribute(this.drawerToggleAttribute);i&&this.togglePanel()},_isEdgeTouch:function(e){var t=e.detail.x;return!this.disableEdgeSwipe&&this._swipeAllowed()&&(this.rightDrawer?t>=this.offsetWidth-this.edgeSwipeSensitivity:t<=this.edgeSwipeSensitivity)},_trackStart:function(e){this._swipeAllowed()&&(t=this,this._setDragging(!0),this._isMainSelected()&&this._setDragging(this.peeking||this._isEdgeTouch(e)),this.dragging&&(this.width=this.$.drawer.offsetWidth,this._transition=!1))},_translateXForDeltaX:function(e){var t=this._isMainSelected();return this.rightDrawer?Math.max(0,t?this.width+e:e):Math.min(0,t?e-this.width:e)},_trackX:function(e){if(this.dragging){var t=e.detail.dx;if(this.peeking){if(Math.abs(t)<=this.edgeSwipeSensitivity)return;this._setPeeking(!1)}this._moveDrawer(this._translateXForDeltaX(t))}},_trackEnd:function(e){if(this.dragging){var i=e.detail.dx>0;this._setDragging(!1),this._transition=!0,t=null,this._moveDrawer(null),this.rightDrawer?this[i?"closeDrawer":"openDrawer"]():this[i?"openDrawer":"closeDrawer"]()}},_transformForTranslateX:function(e){return null===e?"":this.hasWillChange?"translateX("+e+"px)":"translate3d("+e+"px, 0, 0)"},_moveDrawer:function(e){this.transform(this._transformForTranslateX(e),this.$.drawer)},_getDrawerContent:function(){return Polymer.dom(this.$.drawerContent).getDistributedNodes()[0]},_getAutoFocusedNode:function(){var e=this._getDrawerContent();return this.drawerFocusSelector?Polymer.dom(e).querySelector(this.drawerFocusSelector)||e:null},_toggleFocusListener:function(e){"drawer"===e?this.addEventListener("focus",this._boundFocusListener,!0):this.removeEventListener("focus",this._boundFocusListener,!0)},_didFocus:function(e){var t=this._getAutoFocusedNode();if(t){var i=Polymer.dom(e).path,r=(i[0],this._getDrawerContent()),n=i.indexOf(r)!==-1;n||(e.stopPropagation(),t.focus())}},_isDrawerClosed:function(e,t){return!e||"drawer"!==t}})}()</script></dom-module><dom-module id="iron-pages" assetpath="../bower_components/iron-pages/"><template><style>:host{display:block}:host>::content>:not(.iron-selected){display:none!important}</style><content></content></template><script>Polymer({is:"iron-pages",behaviors:[Polymer.IronResizableBehavior,Polymer.IronSelectableBehavior],properties:{activateEvent:{type:String,value:null}},observers:["_selectedPageChanged(selected)"],_selectedPageChanged:function(e,a){this.async(this.notifyResize)}})</script></dom-module><dom-module id="iron-icon" assetpath="../bower_components/iron-icon/"><template><style>:host{@apply(--layout-inline);@apply(--layout-center-center);position:relative;vertical-align:middle;fill:var(--iron-icon-fill-color,currentcolor);stroke:var(--iron-icon-stroke-color,none);width:var(--iron-icon-width,24px);height:var(--iron-icon-height,24px);@apply(--iron-icon)}</style></template><script>Polymer({is:"iron-icon",properties:{icon:{type:String},theme:{type:String},src:{type:String},_meta:{value:Polymer.Base.create("iron-meta",{type:"iconset"})}},observers:["_updateIcon(_meta, isAttached)","_updateIcon(theme, isAttached)","_srcChanged(src, isAttached)","_iconChanged(icon, isAttached)"],_DEFAULT_ICONSET:"icons",_iconChanged:function(t){var i=(t||"").split(":");this._iconName=i.pop(),this._iconsetName=i.pop()||this._DEFAULT_ICONSET,this._updateIcon()},_srcChanged:function(t){this._updateIcon()},_usesIconset:function(){return this.icon||!this.src},_updateIcon:function(){this._usesIconset()?(this._img&&this._img.parentNode&&Polymer.dom(this.root).removeChild(this._img),""===this._iconName?this._iconset&&this._iconset.removeIcon(this):this._iconsetName&&this._meta&&(this._iconset=this._meta.byKey(this._iconsetName),this._iconset?(this._iconset.applyIcon(this,this._iconName,this.theme),this.unlisten(window,"iron-iconset-added","_updateIcon")):this.listen(window,"iron-iconset-added","_updateIcon"))):(this._iconset&&this._iconset.removeIcon(this),this._img||(this._img=document.createElement("img"),this._img.style.width="100%",this._img.style.height="100%",this._img.draggable=!1),this._img.src=this.src,Polymer.dom(this.root).appendChild(this._img))}})</script></dom-module><dom-module id="paper-icon-button" assetpath="../bower_components/paper-icon-button/"><template strip-whitespace=""><style>:host{display:inline-block;position:relative;padding:8px;outline:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;z-index:0;line-height:1;width:40px;height:40px;-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:transparent;box-sizing:border-box!important;@apply(--paper-icon-button)}:host #ink{color:var(--paper-icon-button-ink-color,--primary-text-color);opacity:.6}:host([disabled]){color:var(--paper-icon-button-disabled-text,--disabled-text-color);pointer-events:none;cursor:auto;@apply(--paper-icon-button-disabled)}:host(:hover){@apply(--paper-icon-button-hover)}iron-icon{--iron-icon-width:100%;--iron-icon-height:100%}</style><iron-icon id="icon" src="[[src]]" icon="[[icon]]" alt$="[[alt]]"></iron-icon></template><script>Polymer({is:"paper-icon-button",hostAttributes:{role:"button",tabindex:"0"},behaviors:[Polymer.PaperInkyFocusBehavior],properties:{src:{type:String},icon:{type:String},alt:{type:String,observer:"_altChanged"}},_altChanged:function(t,e){var r=this.getAttribute("aria-label");r&&e!=r||this.setAttribute("aria-label",t)}})</script></dom-module><script>Polymer.IronMenuBehaviorImpl={properties:{focusedItem:{observer:"_focusedItemChanged",readOnly:!0,type:Object},attrForItemTitle:{type:String}},_SEARCH_RESET_TIMEOUT_MS:1e3,hostAttributes:{role:"menu",tabindex:"0"},observers:["_updateMultiselectable(multi)"],listeners:{focus:"_onFocus",keydown:"_onKeydown","iron-items-changed":"_onIronItemsChanged"},keyBindings:{up:"_onUpKey",down:"_onDownKey",esc:"_onEscKey","shift+tab:keydown":"_onShiftTabDown"},attached:function(){this._resetTabindices()},select:function(e){this._defaultFocusAsync&&(this.cancelAsync(this._defaultFocusAsync),this._defaultFocusAsync=null);var t=this._valueToItem(e);t&&t.hasAttribute("disabled")||(this._setFocusedItem(t),Polymer.IronMultiSelectableBehaviorImpl.select.apply(this,arguments))},_resetTabindices:function(){var e=this.multi?this.selectedItems&&this.selectedItems[0]:this.selectedItem;this.items.forEach(function(t){t.setAttribute("tabindex",t===e?"0":"-1")},this)},_updateMultiselectable:function(e){e?this.setAttribute("aria-multiselectable","true"):this.removeAttribute("aria-multiselectable")},_focusWithKeyboardEvent:function(e){this.cancelDebouncer("_clearSearchText");var t=this._searchText||"",s=e.key&&1==e.key.length?e.key:String.fromCharCode(e.keyCode);t+=s.toLocaleLowerCase();for(var i,o=t.length,n=0;i=this.items[n];n++)if(!i.hasAttribute("disabled")){var r=this.attrForItemTitle||"textContent",a=(i[r]||i.getAttribute(r)||"").trim();if(!(a.length<o)&&a.slice(0,o).toLocaleLowerCase()==t){this._setFocusedItem(i);break}}this._searchText=t,this.debounce("_clearSearchText",this._clearSearchText,this._SEARCH_RESET_TIMEOUT_MS)},_clearSearchText:function(){this._searchText=""},_focusPrevious:function(){for(var e=this.items.length,t=Number(this.indexOf(this.focusedItem)),s=1;s<e+1;s++){var i=this.items[(t-s+e)%e];if(!i.hasAttribute("disabled")){var o=Polymer.dom(i).getOwnerRoot()||document;if(this._setFocusedItem(i),Polymer.dom(o).activeElement==i)return}}},_focusNext:function(){for(var e=this.items.length,t=Number(this.indexOf(this.focusedItem)),s=1;s<e+1;s++){var i=this.items[(t+s)%e];if(!i.hasAttribute("disabled")){var o=Polymer.dom(i).getOwnerRoot()||document;if(this._setFocusedItem(i),Polymer.dom(o).activeElement==i)return}}},_applySelection:function(e,t){t?e.setAttribute("aria-selected","true"):e.removeAttribute("aria-selected"),Polymer.IronSelectableBehavior._applySelection.apply(this,arguments)},_focusedItemChanged:function(e,t){t&&t.setAttribute("tabindex","-1"),e&&(e.setAttribute("tabindex","0"),e.focus())},_onIronItemsChanged:function(e){e.detail.addedNodes.length&&this._resetTabindices()},_onShiftTabDown:function(e){var t=this.getAttribute("tabindex");Polymer.IronMenuBehaviorImpl._shiftTabPressed=!0,this._setFocusedItem(null),this.setAttribute("tabindex","-1"),this.async(function(){this.setAttribute("tabindex",t),Polymer.IronMenuBehaviorImpl._shiftTabPressed=!1},1)},_onFocus:function(e){if(!Polymer.IronMenuBehaviorImpl._shiftTabPressed){var t=Polymer.dom(e).rootTarget;(t===this||"undefined"==typeof t.tabIndex||this.isLightDescendant(t))&&(this._defaultFocusAsync=this.async(function(){var e=this.multi?this.selectedItems&&this.selectedItems[0]:this.selectedItem;this._setFocusedItem(null),e?this._setFocusedItem(e):this.items[0]&&this._focusNext()}))}},_onUpKey:function(e){this._focusPrevious(),e.detail.keyboardEvent.preventDefault()},_onDownKey:function(e){this._focusNext(),e.detail.keyboardEvent.preventDefault()},_onEscKey:function(e){this.focusedItem.blur()},_onKeydown:function(e){this.keyboardEventMatchesKeys(e,"up down esc")||this._focusWithKeyboardEvent(e),e.stopPropagation()},_activateHandler:function(e){Polymer.IronSelectableBehavior._activateHandler.call(this,e),e.stopPropagation()}},Polymer.IronMenuBehaviorImpl._shiftTabPressed=!1,Polymer.IronMenuBehavior=[Polymer.IronMultiSelectableBehavior,Polymer.IronA11yKeysBehavior,Polymer.IronMenuBehaviorImpl]</script><script>Polymer.IronMenubarBehaviorImpl={hostAttributes:{role:"menubar"},keyBindings:{left:"_onLeftKey",right:"_onRightKey"},_onUpKey:function(e){this.focusedItem.click(),e.detail.keyboardEvent.preventDefault()},_onDownKey:function(e){this.focusedItem.click(),e.detail.keyboardEvent.preventDefault()},get _isRTL(){return"rtl"===window.getComputedStyle(this).direction},_onLeftKey:function(e){this._isRTL?this._focusNext():this._focusPrevious(),e.detail.keyboardEvent.preventDefault()},_onRightKey:function(e){this._isRTL?this._focusPrevious():this._focusNext(),e.detail.keyboardEvent.preventDefault()},_onKeydown:function(e){this.keyboardEventMatchesKeys(e,"up down left right esc")||this._focusWithKeyboardEvent(e)}},Polymer.IronMenubarBehavior=[Polymer.IronMenuBehavior,Polymer.IronMenubarBehaviorImpl]</script><script>Polymer({is:"iron-iconset-svg",properties:{name:{type:String,observer:"_nameChanged"},size:{type:Number,value:24},rtlMirroring:{type:Boolean,value:!1}},attached:function(){this.style.display="none"},getIconNames:function(){return this._icons=this._createIconMap(),Object.keys(this._icons).map(function(e){return this.name+":"+e},this)},applyIcon:function(e,t){e=e.root||e,this.removeIcon(e);var n=this._cloneIcon(t,this.rtlMirroring&&this._targetIsRTL(e));if(n){var r=Polymer.dom(e);return r.insertBefore(n,r.childNodes[0]),e._svgIcon=n}return null},removeIcon:function(e){e=e.root||e,e._svgIcon&&(Polymer.dom(e).removeChild(e._svgIcon),e._svgIcon=null)},_targetIsRTL:function(e){return null==this.__targetIsRTL&&(e&&e.nodeType!==Node.ELEMENT_NODE&&(e=e.host),this.__targetIsRTL=e&&"rtl"===window.getComputedStyle(e).direction),this.__targetIsRTL},_nameChanged:function(){new Polymer.IronMeta({type:"iconset",key:this.name,value:this}),this.async(function(){this.fire("iron-iconset-added",this,{node:window})})},_createIconMap:function(){var e=Object.create(null);return Polymer.dom(this).querySelectorAll("[id]").forEach(function(t){e[t.id]=t}),e},_cloneIcon:function(e,t){return this._icons=this._icons||this._createIconMap(),this._prepareSvgClone(this._icons[e],this.size,t)},_prepareSvgClone:function(e,t,n){if(e){var r=e.cloneNode(!0),i=document.createElementNS("http://www.w3.org/2000/svg","svg"),o=r.getAttribute("viewBox")||"0 0 "+t+" "+t,s="pointer-events: none; display: block; width: 100%; height: 100%;";return n&&r.hasAttribute("mirror-in-rtl")&&(s+="-webkit-transform:scale(-1,1);transform:scale(-1,1);"),i.setAttribute("viewBox",o),i.setAttribute("preserveAspectRatio","xMidYMid meet"),i.style.cssText=s,i.appendChild(r).removeAttribute("id"),i}return null}})</script><iron-iconset-svg name="paper-tabs" size="24"><svg><defs><g id="chevron-left"><path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"></path></g><g id="chevron-right"><path d="M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"></path></g></defs></svg></iron-iconset-svg><dom-module id="paper-tab" assetpath="../bower_components/paper-tabs/"><template><style>:host{@apply(--layout-inline);@apply(--layout-center);@apply(--layout-center-justified);@apply(--layout-flex-auto);position:relative;padding:0 12px;overflow:hidden;cursor:pointer;vertical-align:middle;@apply(--paper-font-common-base);@apply(--paper-tab)}:host(:focus){outline:0}:host([link]){padding:0}.tab-content{height:100%;transform:translateZ(0);-webkit-transform:translateZ(0);transition:opacity .1s cubic-bezier(.4,0,1,1);@apply(--layout-horizontal);@apply(--layout-center-center);@apply(--layout-flex-auto);@apply(--paper-tab-content)}:host(:not(.iron-selected))>.tab-content{opacity:.8;@apply(--paper-tab-content-unselected)}:host(:focus) .tab-content{opacity:1;font-weight:700}paper-ripple{color:var(--paper-tab-ink,--paper-yellow-a100)}.tab-content>::content>a{@apply(--layout-flex-auto);height:100%}</style><div class="tab-content"><content></content></div></template><script>Polymer({is:"paper-tab",behaviors:[Polymer.IronControlState,Polymer.IronButtonState,Polymer.PaperRippleBehavior],properties:{link:{type:Boolean,value:!1,reflectToAttribute:!0}},hostAttributes:{role:"tab"},listeners:{down:"_updateNoink",tap:"_onTap"},attached:function(){this._updateNoink()},get _parentNoink(){var t=Polymer.dom(this).parentNode;return!!t&&!!t.noink},_updateNoink:function(){this.noink=!!this.noink||!!this._parentNoink},_onTap:function(t){if(this.link){var e=this.queryEffectiveChildren("a");if(!e)return;if(t.target===e)return;e.click()}}})</script></dom-module><dom-module id="paper-tabs" assetpath="../bower_components/paper-tabs/"><template><style>:host{@apply(--layout);@apply(--layout-center);height:48px;font-size:14px;font-weight:500;overflow:hidden;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:transparent;@apply(--paper-tabs)}:host-context([dir=rtl]){@apply(--layout-horizontal-reverse)}#tabsContainer{position:relative;height:100%;white-space:nowrap;overflow:hidden;@apply(--layout-flex-auto);@apply(--paper-tabs-container)}#tabsContent{height:100%;-moz-flex-basis:auto;-ms-flex-basis:auto;flex-basis:auto;@apply(--paper-tabs-content)}#tabsContent.scrollable{position:absolute;white-space:nowrap}#tabsContent.scrollable.fit-container,#tabsContent:not(.scrollable){@apply(--layout-horizontal)}#tabsContent.scrollable.fit-container{min-width:100%}#tabsContent.scrollable.fit-container>::content>*{-ms-flex:1 0 auto;-webkit-flex:1 0 auto;flex:1 0 auto}.hidden{display:none}.not-visible{opacity:0;cursor:default}paper-icon-button{width:48px;height:48px;padding:12px;margin:0 4px}#selectionBar{position:absolute;height:2px;bottom:0;left:0;right:0;background-color:var(--paper-tabs-selection-bar-color,--paper-yellow-a100);-webkit-transform:scale(0);transform:scale(0);-webkit-transform-origin:left center;transform-origin:left center;transition:-webkit-transform;transition:transform;@apply(--paper-tabs-selection-bar)}#selectionBar.align-bottom{top:0;bottom:auto}#selectionBar.expand{transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,1,1)}#selectionBar.contract{transition-duration:.18s;transition-timing-function:cubic-bezier(0,0,.2,1)}#tabsContent>::content>:not(#selectionBar){height:100%}</style><paper-icon-button icon="paper-tabs:chevron-left" class$="[[_computeScrollButtonClass(_leftHidden, scrollable, hideScrollButtons)]]" on-up="_onScrollButtonUp" on-down="_onLeftScrollButtonDown" tabindex="-1"></paper-icon-button><div id="tabsContainer" on-track="_scroll" on-down="_down"><div id="tabsContent" class$="[[_computeTabsContentClass(scrollable, fitContainer)]]"><div id="selectionBar" class$="[[_computeSelectionBarClass(noBar, alignBottom)]]" on-transitionend="_onBarTransitionEnd"></div><content select="*"></content></div></div><paper-icon-button icon="paper-tabs:chevron-right" class$="[[_computeScrollButtonClass(_rightHidden, scrollable, hideScrollButtons)]]" on-up="_onScrollButtonUp" on-down="_onRightScrollButtonDown" tabindex="-1"></paper-icon-button></template><script>Polymer({is:"paper-tabs",behaviors:[Polymer.IronResizableBehavior,Polymer.IronMenubarBehavior],properties:{noink:{type:Boolean,value:!1,observer:"_noinkChanged"},noBar:{type:Boolean,value:!1},noSlide:{type:Boolean,value:!1},scrollable:{type:Boolean,value:!1},fitContainer:{type:Boolean,value:!1},disableDrag:{type:Boolean,value:!1},hideScrollButtons:{type:Boolean,value:!1},alignBottom:{type:Boolean,value:!1},selectable:{type:String,value:"paper-tab"},autoselect:{type:Boolean,value:!1},autoselectDelay:{type:Number,value:0},_step:{type:Number,value:10},_holdDelay:{type:Number,value:1},_leftHidden:{type:Boolean,value:!1},_rightHidden:{type:Boolean,value:!1},_previousTab:{type:Object}},hostAttributes:{role:"tablist"},listeners:{"iron-resize":"_onTabSizingChanged","iron-items-changed":"_onTabSizingChanged","iron-select":"_onIronSelect","iron-deselect":"_onIronDeselect"},keyBindings:{"left:keyup right:keyup":"_onArrowKeyup"},created:function(){this._holdJob=null,this._pendingActivationItem=void 0,this._pendingActivationTimeout=void 0,this._bindDelayedActivationHandler=this._delayedActivationHandler.bind(this),this.addEventListener("blur",this._onBlurCapture.bind(this),!0)},ready:function(){this.setScrollDirection("y",this.$.tabsContainer)},detached:function(){this._cancelPendingActivation()},_noinkChanged:function(t){var e=Polymer.dom(this).querySelectorAll("paper-tab");e.forEach(t?this._setNoinkAttribute:this._removeNoinkAttribute)},_setNoinkAttribute:function(t){t.setAttribute("noink","")},_removeNoinkAttribute:function(t){t.removeAttribute("noink")},_computeScrollButtonClass:function(t,e,i){return!e||i?"hidden":t?"not-visible":""},_computeTabsContentClass:function(t,e){return t?"scrollable"+(e?" fit-container":""):" fit-container"},_computeSelectionBarClass:function(t,e){return t?"hidden":e?"align-bottom":""},_onTabSizingChanged:function(){this.debounce("_onTabSizingChanged",function(){this._scroll(),this._tabChanged(this.selectedItem)},10)},_onIronSelect:function(t){this._tabChanged(t.detail.item,this._previousTab),this._previousTab=t.detail.item,this.cancelDebouncer("tab-changed")},_onIronDeselect:function(t){this.debounce("tab-changed",function(){this._tabChanged(null,this._previousTab),this._previousTab=null},1)},_activateHandler:function(){this._cancelPendingActivation(),Polymer.IronMenuBehaviorImpl._activateHandler.apply(this,arguments)},_scheduleActivation:function(t,e){this._pendingActivationItem=t,this._pendingActivationTimeout=this.async(this._bindDelayedActivationHandler,e)},_delayedActivationHandler:function(){var t=this._pendingActivationItem;this._pendingActivationItem=void 0,this._pendingActivationTimeout=void 0,t.fire(this.activateEvent,null,{bubbles:!0,cancelable:!0})},_cancelPendingActivation:function(){void 0!==this._pendingActivationTimeout&&(this.cancelAsync(this._pendingActivationTimeout),this._pendingActivationItem=void 0,this._pendingActivationTimeout=void 0)},_onArrowKeyup:function(t){this.autoselect&&this._scheduleActivation(this.focusedItem,this.autoselectDelay)},_onBlurCapture:function(t){t.target===this._pendingActivationItem&&this._cancelPendingActivation()},get _tabContainerScrollSize(){return Math.max(0,this.$.tabsContainer.scrollWidth-this.$.tabsContainer.offsetWidth)},_scroll:function(t,e){if(this.scrollable){var i=e&&-e.ddx||0;this._affectScroll(i)}},_down:function(t){this.async(function(){this._defaultFocusAsync&&(this.cancelAsync(this._defaultFocusAsync),this._defaultFocusAsync=null)},1)},_affectScroll:function(t){this.$.tabsContainer.scrollLeft+=t;var e=this.$.tabsContainer.scrollLeft;this._leftHidden=0===e,this._rightHidden=e===this._tabContainerScrollSize},_onLeftScrollButtonDown:function(){this._scrollToLeft(),this._holdJob=setInterval(this._scrollToLeft.bind(this),this._holdDelay)},_onRightScrollButtonDown:function(){this._scrollToRight(),this._holdJob=setInterval(this._scrollToRight.bind(this),this._holdDelay)},_onScrollButtonUp:function(){clearInterval(this._holdJob),this._holdJob=null},_scrollToLeft:function(){this._affectScroll(-this._step)},_scrollToRight:function(){this._affectScroll(this._step)},_tabChanged:function(t,e){if(!t)return this.$.selectionBar.classList.remove("expand"),this.$.selectionBar.classList.remove("contract"),void this._positionBar(0,0);var i=this.$.tabsContent.getBoundingClientRect(),n=i.width,o=t.getBoundingClientRect(),s=o.left-i.left;if(this._pos={width:this._calcPercent(o.width,n),left:this._calcPercent(s,n)},this.noSlide||null==e)return this.$.selectionBar.classList.remove("expand"),this.$.selectionBar.classList.remove("contract"),void this._positionBar(this._pos.width,this._pos.left);var a=e.getBoundingClientRect(),l=this.items.indexOf(e),c=this.items.indexOf(t),r=5;this.$.selectionBar.classList.add("expand");var h=l<c,d=this._isRTL;d&&(h=!h),h?this._positionBar(this._calcPercent(o.left+o.width-a.left,n)-r,this._left):this._positionBar(this._calcPercent(a.left+a.width-o.left,n)-r,this._calcPercent(s,n)+r),this.scrollable&&this._scrollToSelectedIfNeeded(o.width,s)},_scrollToSelectedIfNeeded:function(t,e){var i=e-this.$.tabsContainer.scrollLeft;i<0?this.$.tabsContainer.scrollLeft+=i:(i+=t-this.$.tabsContainer.offsetWidth,i>0&&(this.$.tabsContainer.scrollLeft+=i))},_calcPercent:function(t,e){return 100*t/e},_positionBar:function(t,e){t=t||0,e=e||0,this._width=t,this._left=e,this.transform("translateX("+e+"%) scaleX("+t/100+")",this.$.selectionBar)},_onBarTransitionEnd:function(t){var e=this.$.selectionBar.classList;e.contains("expand")?(e.remove("expand"),e.add("contract"),this._positionBar(this._pos.width,this._pos.left)):e.contains("contract")&&e.remove("contract")}})</script></dom-module><dom-module id="app-header-layout" assetpath="../bower_components/app-layout/app-header-layout/"><template><style>:host{display:block;position:relative;z-index:0}:host>::content>app-header{@apply(--layout-fixed-top);z-index:1}:host([has-scrolling-region]){height:100%}:host([has-scrolling-region])>::content>app-header{position:absolute}:host([has-scrolling-region])>#contentContainer{@apply(--layout-fit);overflow-y:auto;-webkit-overflow-scrolling:touch}:host([fullbleed]){@apply(--layout-vertical);@apply(--layout-fit)}:host([fullbleed])>#contentContainer{@apply(--layout-vertical);@apply(--layout-flex)}#contentContainer{position:relative;z-index:0}</style><content id="header" select="app-header"></content><div id="contentContainer"><content></content></div></template><script>Polymer({is:"app-header-layout",behaviors:[Polymer.IronResizableBehavior],properties:{hasScrollingRegion:{type:Boolean,value:!1,reflectToAttribute:!0}},listeners:{"iron-resize":"_resizeHandler","app-header-reset-layout":"_resetLayoutHandler"},observers:["resetLayout(isAttached, hasScrollingRegion)"],get header(){return Polymer.dom(this.$.header).getDistributedNodes()[0]},resetLayout:function(){this._updateScroller(),this.debounce("_resetLayout",this._updateContentPosition)},_updateContentPosition:function(){var e=this.header;if(this.isAttached&&e){var t=e.offsetHeight;if(this.hasScrollingRegion)e.style.left="",e.style.right="";else{var i=this.getBoundingClientRect(),o=document.documentElement.clientWidth-i.right;e.style.left=i.left+"px",e.style.right=o+"px"}var n=this.$.contentContainer.style;e.fixed&&!e.willCondense()&&this.hasScrollingRegion?(n.marginTop=t+"px",n.paddingTop=""):(n.paddingTop=t+"px",n.marginTop="")}},_updateScroller:function(){if(this.isAttached){var e=this.header;e&&(e.scrollTarget=this.hasScrollingRegion?this.$.contentContainer:this.ownerDocument.documentElement)}},_resizeHandler:function(){this.resetLayout()},_resetLayoutHandler:function(e){this.resetLayout(),e.stopPropagation()}})</script></dom-module><script>Polymer.IronScrollTargetBehavior={properties:{scrollTarget:{type:Object,value:function(){return this._defaultScrollTarget}}},observers:["_scrollTargetChanged(scrollTarget, isAttached)"],_shouldHaveListener:!0,_scrollTargetChanged:function(t,l){this._oldScrollTarget&&(this._toggleScrollListener(!1,this._oldScrollTarget),this._oldScrollTarget=null),l&&("document"===t?this.scrollTarget=this._doc:"string"==typeof t?this.scrollTarget=this.domHost?this.domHost.$[t]:Polymer.dom(this.ownerDocument).querySelector("#"+t):this._isValidScrollTarget()&&(this._boundScrollHandler=this._boundScrollHandler||this._scrollHandler.bind(this),this._oldScrollTarget=t,this._toggleScrollListener(this._shouldHaveListener,t)))},_scrollHandler:function(){},get _defaultScrollTarget(){return this._doc},get _doc(){return this.ownerDocument.documentElement},get _scrollTop(){return this._isValidScrollTarget()?this.scrollTarget===this._doc?window.pageYOffset:this.scrollTarget.scrollTop:0},get _scrollLeft(){return this._isValidScrollTarget()?this.scrollTarget===this._doc?window.pageXOffset:this.scrollTarget.scrollLeft:0},set _scrollTop(t){this.scrollTarget===this._doc?window.scrollTo(window.pageXOffset,t):this._isValidScrollTarget()&&(this.scrollTarget.scrollTop=t)},set _scrollLeft(t){this.scrollTarget===this._doc?window.scrollTo(t,window.pageYOffset):this._isValidScrollTarget()&&(this.scrollTarget.scrollLeft=t)},scroll:function(t,l){this.scrollTarget===this._doc?window.scrollTo(t,l):this._isValidScrollTarget()&&(this.scrollTarget.scrollLeft=t,this.scrollTarget.scrollTop=l)},get _scrollTargetWidth(){return this._isValidScrollTarget()?this.scrollTarget===this._doc?window.innerWidth:this.scrollTarget.offsetWidth:0},get _scrollTargetHeight(){return this._isValidScrollTarget()?this.scrollTarget===this._doc?window.innerHeight:this.scrollTarget.offsetHeight:0},_isValidScrollTarget:function(){return this.scrollTarget instanceof HTMLElement},_toggleScrollListener:function(t,l){if(this._boundScrollHandler){var e=l===this._doc?window:l;t?e.addEventListener("scroll",this._boundScrollHandler):e.removeEventListener("scroll",this._boundScrollHandler)}},toggleScrollListener:function(t){this._shouldHaveListener=t,this._toggleScrollListener(t,this.scrollTarget)}}</script><script>Polymer.AppLayout=Polymer.AppLayout||{},Polymer.AppLayout._scrollEffects=Polymer.AppLayout._scrollEffects||{},Polymer.AppLayout.scrollTimingFunction=function(o,l,e,r){return o/=r,-e*o*(o-2)+l},Polymer.AppLayout.registerEffect=function(o,l){if(null!=Polymer.AppLayout._scrollEffects[o])throw new Error("effect `"+o+"` is already registered.");Polymer.AppLayout._scrollEffects[o]=l},Polymer.AppLayout.scroll=function(o){o=o||{};var l=document.documentElement,e=o.target||l,r="scrollBehavior"in e.style&&e.scroll,t="app-layout-silent-scroll",s=o.top||0,c=o.left||0,i=e===l?window.scrollTo:function(o,l){e.scrollLeft=o,e.scrollTop=l};if("smooth"===o.behavior)if(r)e.scroll(o);else{var n=Polymer.AppLayout.scrollTimingFunction,a=Date.now(),p=e===l?window.pageYOffset:e.scrollTop,u=e===l?window.pageXOffset:e.scrollLeft,y=s-p,f=c-u,m=300,L=function o(){var l=Date.now(),e=l-a;e<m?(i(n(e,u,f,m),n(e,p,y,m)),requestAnimationFrame(o)):i(c,s)}.bind(this);L()}else"silent"===o.behavior?(l.classList.add(t),clearInterval(Polymer.AppLayout._scrollTimer),Polymer.AppLayout._scrollTimer=setTimeout(function(){l.classList.remove(t),Polymer.AppLayout._scrollTimer=null},100),i(c,s)):i(c,s)}</script><script>Polymer.AppScrollEffectsBehavior=[Polymer.IronScrollTargetBehavior,{properties:{effects:{type:String},effectsConfig:{type:Object,value:function(){return{}}},disabled:{type:Boolean,reflectToAttribute:!0,value:!1},threshold:{type:Number,value:0},thresholdTriggered:{type:Boolean,notify:!0,readOnly:!0,reflectToAttribute:!0}},observers:["_effectsChanged(effects, effectsConfig, isAttached)"],_updateScrollState:function(){},isOnScreen:function(){return!1},isContentBelow:function(){return!1},_effectsRunFn:null,_effects:null,get _clampedScrollTop(){return Math.max(0,this._scrollTop)},detached:function(){this._tearDownEffects()},createEffect:function(t,e){var n=Polymer.AppLayout._scrollEffects[t];if(!n)throw new ReferenceError(this._getUndefinedMsg(t));var f=this._boundEffect(n,e||{});return f.setUp(),f},_effectsChanged:function(t,e,n){this._tearDownEffects(),""!==t&&n&&(t.split(" ").forEach(function(t){var n;""!==t&&((n=Polymer.AppLayout._scrollEffects[t])?this._effects.push(this._boundEffect(n,e[t])):console.warn(this._getUndefinedMsg(t)))},this),this._setUpEffect())},_layoutIfDirty:function(){return this.offsetWidth},_boundEffect:function(t,e){e=e||{};var n=parseFloat(e.startsAt||0),f=parseFloat(e.endsAt||1),s=f-n,r=function(){},o=0===n&&1===f?t.run:function(e,f){t.run.call(this,Math.max(0,(e-n)/s),f)};return{setUp:t.setUp?t.setUp.bind(this,e):r,run:t.run?o.bind(this):r,tearDown:t.tearDown?t.tearDown.bind(this):r}},_setUpEffect:function(){this.isAttached&&this._effects&&(this._effectsRunFn=[],this._effects.forEach(function(t){t.setUp()!==!1&&this._effectsRunFn.push(t.run)},this))},_tearDownEffects:function(){this._effects&&this._effects.forEach(function(t){t.tearDown()}),this._effectsRunFn=[],this._effects=[]},_runEffects:function(t,e){this._effectsRunFn&&this._effectsRunFn.forEach(function(n){n(t,e)})},_scrollHandler:function(){if(!this.disabled){var t=this._clampedScrollTop;this._updateScrollState(t),this.threshold>0&&this._setThresholdTriggered(t>=this.threshold)}},_getDOMRef:function(t){console.warn("_getDOMRef","`"+t+"` is undefined")},_getUndefinedMsg:function(t){return"Scroll effect `"+t+"` is undefined. Did you forget to import app-layout/app-scroll-effects/effects/"+t+".html ?"}}]</script><script>Polymer.AppLayout.registerEffect("waterfall",{run:function(){this.shadow=this.isOnScreen()&&this.isContentBelow()}})</script><dom-module id="app-header" assetpath="../bower_components/app-layout/app-header/"><template><style>:host{position:relative;display:block;transition-timing-function:linear;transition-property:-webkit-transform;transition-property:transform}:host::after{position:absolute;right:0;bottom:-5px;left:0;width:100%;height:5px;content:"";transition:opacity .4s;pointer-events:none;opacity:0;box-shadow:inset 0 5px 6px -3px rgba(0,0,0,.4);will-change:opacity;@apply(--app-header-shadow)}:host([shadow])::after{opacity:1}::content [condensed-title],::content [main-title]{-webkit-transform-origin:left top;transform-origin:left top;white-space:nowrap}::content [condensed-title]{opacity:0}#background{@apply(--layout-fit);overflow:hidden}#backgroundFrontLayer,#backgroundRearLayer{@apply(--layout-fit);height:100%;pointer-events:none;background-size:cover}#backgroundFrontLayer{@apply(--app-header-background-front-layer)}#backgroundRearLayer{opacity:0;@apply(--app-header-background-rear-layer)}#contentContainer{position:relative;width:100%;height:100%}:host([disabled]),:host([disabled]) #backgroundFrontLayer,:host([disabled]) #backgroundRearLayer,:host([disabled]) ::content>[sticky],:host([disabled]) ::content>app-toolbar:first-of-type,:host([disabled])::after,:host-context(.app-layout-silent-scroll),:host-context(.app-layout-silent-scroll) #backgroundFrontLayer,:host-context(.app-layout-silent-scroll) #backgroundRearLayer,:host-context(.app-layout-silent-scroll) ::content>[sticky],:host-context(.app-layout-silent-scroll) ::content>app-toolbar:first-of-type,:host-context(.app-layout-silent-scroll)::after{transition:none!important}</style><div id="contentContainer"><content id="content"></content></div></template><script>Polymer({is:"app-header",behaviors:[Polymer.AppScrollEffectsBehavior,Polymer.IronResizableBehavior],properties:{condenses:{type:Boolean,value:!1},fixed:{type:Boolean,value:!1},reveals:{type:Boolean,value:!1},shadow:{type:Boolean,reflectToAttribute:!0,value:!1}},observers:["resetLayout(isAttached, condenses, fixed)"],listeners:{"iron-resize":"_resizeHandler"},_height:0,_dHeight:0,_stickyElTop:0,_stickyEl:null,_top:0,_progress:0,_wasScrollingDown:!1,_initScrollTop:0,_initTimestamp:0,_lastTimestamp:0,_lastScrollTop:0,get _maxHeaderTop(){return this.fixed?this._dHeight:this._height+5},_getStickyEl:function(){for(var t,e=Polymer.dom(this.$.content).getDistributedNodes(),i=0;i<e.length;i++)if(e[i].nodeType===Node.ELEMENT_NODE){var s=e[i];if(s.hasAttribute("sticky")){t=s;break}t||(t=s)}return t},resetLayout:function(){this.debounce("_resetLayout",function(){if(0!==this.offsetWidth||0!==this.offsetHeight){var t=this._clampedScrollTop,e=0===this._height||0===t,i=this.disabled;this._height=this.offsetHeight,this._stickyEl=this._getStickyEl(),this.disabled=!0,e||this._updateScrollState(0,!0),this._mayMove()?this._dHeight=this._stickyEl?this._height-this._stickyEl.offsetHeight:0:this._dHeight=0,this._stickyElTop=this._stickyEl?this._stickyEl.offsetTop:0,this._setUpEffect(),e?this._updateScrollState(t,!0):(this._updateScrollState(this._lastScrollTop,!0),this._layoutIfDirty()),this.disabled=i,this.fire("app-header-reset-layout")}})},_updateScrollState:function(t,e){if(0!==this._height){var i=0,s=0,o=this._top,r=(this._lastScrollTop,this._maxHeaderTop),h=t-this._lastScrollTop,n=Math.abs(h),a=t>this._lastScrollTop,l=Date.now();if(this._mayMove()&&(s=this._clamp(this.reveals?o+h:t,0,r)),t>=this._dHeight&&(s=this.condenses&&!this.fixed?Math.max(this._dHeight,s):s,this.style.transitionDuration="0ms"),this.reveals&&!this.disabled&&n<100&&((l-this._initTimestamp>300||this._wasScrollingDown!==a)&&(this._initScrollTop=t,this._initTimestamp=l),t>=r))if(Math.abs(this._initScrollTop-t)>30||n>10){a&&t>=r?s=r:!a&&t>=this._dHeight&&(s=this.condenses&&!this.fixed?this._dHeight:0);var _=h/(l-this._lastTimestamp);this.style.transitionDuration=this._clamp((s-o)/_,0,300)+"ms"}else s=this._top;i=0===this._dHeight?t>0?1:0:s/this._dHeight,e||(this._lastScrollTop=t,this._top=s,this._wasScrollingDown=a,this._lastTimestamp=l),(e||i!==this._progress||o!==s||0===t)&&(this._progress=i,this._runEffects(i,s),this._transformHeader(s))}},_mayMove:function(){return this.condenses||!this.fixed},willCondense:function(){return this._dHeight>0&&this.condenses},isOnScreen:function(){return 0!==this._height&&this._top<this._height},isContentBelow:function(){return 0===this._top?this._clampedScrollTop>0:this._clampedScrollTop-this._maxHeaderTop>=0},_transformHeader:function(t){this.translate3d(0,-t+"px",0),this._stickyEl&&this.translate3d(0,this.condenses&&t>=this._stickyElTop?Math.min(t,this._dHeight)-this._stickyElTop+"px":0,0,this._stickyEl)},_resizeHandler:function(){this.resetLayout()},_clamp:function(t,e,i){return Math.min(i,Math.max(e,t))},_ensureBgContainers:function(){this._bgContainer||(this._bgContainer=document.createElement("div"),this._bgContainer.id="background",this._bgRear=document.createElement("div"),this._bgRear.id="backgroundRearLayer",this._bgContainer.appendChild(this._bgRear),this._bgFront=document.createElement("div"),this._bgFront.id="backgroundFrontLayer",this._bgContainer.appendChild(this._bgFront),Polymer.dom(this.root).insertBefore(this._bgContainer,this.$.contentContainer))},_getDOMRef:function(t){switch(t){case"backgroundFrontLayer":return this._ensureBgContainers(),this._bgFront;case"backgroundRearLayer":return this._ensureBgContainers(),this._bgRear;case"background":return this._ensureBgContainers(),this._bgContainer;case"mainTitle":return Polymer.dom(this).querySelector("[main-title]");case"condensedTitle":return Polymer.dom(this).querySelector("[condensed-title]")}return null},getScrollState:function(){return{progress:this._progress,top:this._top}}})</script></dom-module><dom-module id="app-toolbar" assetpath="../bower_components/app-layout/app-toolbar/"><template><style>:host{@apply(--layout-horizontal);@apply(--layout-center);position:relative;height:64px;padding:0 16px;pointer-events:none;font-size:var(--app-toolbar-font-size,20px)}::content>*{pointer-events:auto}::content>paper-icon-button{font-size:0}::content>[condensed-title],::content>[main-title]{pointer-events:none;@apply(--layout-flex)}::content>[bottom-item]{position:absolute;right:0;bottom:0;left:0}::content>[top-item]{position:absolute;top:0;right:0;left:0}::content>[spacer]{margin-left:64px}</style><content></content></template><script>Polymer({is:"app-toolbar"})</script></dom-module><dom-module id="ha-menu-button" assetpath="components/"><template><style>.invisible{visibility:hidden}</style><paper-icon-button icon="mdi:menu" class$="[[computeMenuButtonClass(narrow, showMenu)]]" on-tap="toggleMenu"></paper-icon-button></template></dom-module><script>Polymer({is:"ha-menu-button",properties:{narrow:{type:Boolean,value:!1},showMenu:{type:Boolean,value:!1}},computeMenuButtonClass:function(e,n){return!e&&n?"invisible":""},toggleMenu:function(){this.fire("open-menu")}})</script><dom-module id="ha-label-badge" assetpath="/"><template><style>.badge-container{display:inline-block;text-align:center;vertical-align:top;margin-bottom:16px}.label-badge{position:relative;display:block;margin:0 auto;width:2.5em;text-align:center;height:2.5em;line-height:2.5em;font-size:1.5em;border-radius:50%;border:.1em solid var(--ha-label-badge-color,--default-primary-color);color:#4c4c4c;white-space:nowrap;background-color:#fff;background-size:cover;transition:border .3s ease-in-out}.label-badge .value{font-size:90%;overflow:hidden;text-overflow:ellipsis}.label-badge .value.big{font-size:70%}.label-badge .label{position:absolute;bottom:-1em;left:0;right:0;line-height:1em;font-size:.5em}.label-badge .label span{max-width:80%;display:inline-block;background-color:var(--ha-label-badge-color,--default-primary-color);color:#fff;border-radius:1em;padding:4px 8px;font-weight:500;text-transform:uppercase;overflow:hidden;text-overflow:ellipsis;transition:background-color .3s ease-in-out}.badge-container .title{margin-top:1em;font-size:.9em;width:5em;font-weight:300;overflow:hidden;text-overflow:ellipsis;line-height:normal}iron-image{border-radius:50%}[hidden]{display:none!important}</style><div class="badge-container"><div class="label-badge" id="badge"><div class$="[[computeClasses(value)]]"><iron-icon icon="[[icon]]" hidden$="[[computeHideIcon(icon, value, image)]]"></iron-icon><span hidden$="[[computeHideValue(value, image)]]">[[value]]</span></div><div class="label" hidden$="[[!label]]"><span>[[label]]</span></div></div><div class="title">[[description]]</div></div></template></dom-module><script>Polymer({is:"ha-label-badge",properties:{value:{type:String,value:null},icon:{type:String,value:null},label:{type:String,value:null},description:{type:String},image:{type:String,value:null,observer:"imageChanged"}},computeClasses:function(e){return e&&e.length>4?"value big":"value"},computeHideIcon:function(e,n,l){return!e||n||l},computeHideValue:function(e,n){return!e||n},imageChanged:function(e){this.$.badge.style.backgroundImage=e?"url("+e+")":""}})</script><dom-module id="ha-demo-badge" assetpath="components/"><template><style>:host{--ha-label-badge-color:#dac90d}</style><ha-label-badge icon="mdi:emoticon" label="Demo" description=""></ha-label-badge></template></dom-module><script>Polymer({is:"ha-demo-badge"})</script><dom-module id="ha-state-label-badge" assetpath="components/entity/"><template><style>:host{cursor:pointer}ha-label-badge{--ha-label-badge-color:rgb(223, 76, 30)}.blue{--ha-label-badge-color:#039be5}.green{--ha-label-badge-color:#0DA035}.grey{--ha-label-badge-color:var(--paper-grey-500)}</style><ha-label-badge class$="[[computeClasses(state)]]" value="[[computeValue(state)]]" icon="[[computeIcon(state)]]" image="[[computeImage(state)]]" label="[[computeLabel(state)]]" description="[[computeDescription(state)]]"></ha-label-badge></template></dom-module><script>Polymer({is:"ha-state-label-badge",properties:{hass:{type:Object},state:{type:Object,observer:"stateChanged"}},listeners:{tap:"badgeTap"},badgeTap:function(e){e.stopPropagation(),this.async(function(){this.hass.moreInfoActions.selectEntity(this.state.entityId)},1)},computeClasses:function(e){switch(e.domain){case"binary_sensor":case"updater":return"blue";default:return""}},computeValue:function(e){switch(e.domain){case"binary_sensor":case"device_tracker":case"updater":case"sun":case"alarm_control_panel":return null;case"sensor":default:return"unknown"===e.state?"-":e.state}},computeIcon:function(e){if("unavailable"===e.state)return null;switch(e.domain){case"alarm_control_panel":return"pending"===e.state?"mdi:clock-fast":"armed_away"===e.state?"mdi:nature":"armed_home"===e.state?"mdi:home-variant":"triggered"===e.state?"mdi:alert-circle":window.hassUtil.domainIcon(e.domain,e.state);case"binary_sensor":case"device_tracker":case"updater":return window.hassUtil.stateIcon(e);case"sun":return"above_horizon"===e.state?window.hassUtil.domainIcon(e.domain):"mdi:brightness-3";default:return null}},computeImage:function(e){return e.attributes.entity_picture||null},computeLabel:function(e){if("unavailable"===e.state)return"unavai";switch(e.domain){case"device_tracker":return"not_home"===e.state?"Away":e.state;case"alarm_control_panel":return"pending"===e.state?"pend":"armed_away"===e.state||"armed_home"===e.state?"armed":"triggered"===e.state?"trig":"disarm";default:return e.attributes.unit_of_measurement||null}},computeDescription:function(e){return e.entityDisplay},stateChanged:function(){this.updateStyles()}})</script><dom-module id="ha-badges-card" assetpath="cards/"><template><template is="dom-repeat" items="[[states]]"><ha-state-label-badge hass="[[hass]]" state="[[item]]"></ha-state-label-badge></template></template></dom-module><script>Polymer({is:"ha-badges-card",properties:{hass:{type:Object},states:{type:Array}}})</script><dom-module id="paper-material" assetpath="../bower_components/paper-material/"><template><style include="paper-material-shared-styles"></style><style>:host([animated]){@apply(--shadow-transition)}</style><content></content></template></dom-module><script>Polymer({is:"paper-material",properties:{elevation:{type:Number,reflectToAttribute:!0,value:1},animated:{type:Boolean,reflectToAttribute:!0,value:!1}}})</script><dom-module id="ha-camera-card" assetpath="cards/"><template><style include="paper-material">:host{display:block;position:relative;font-size:0;border-radius:2px;cursor:pointer;min-height:48px;line-height:0}.camera-feed{width:100%;height:auto;border-radius:2px}.caption{@apply(--paper-font-common-nowrap);position:absolute;left:0;right:0;bottom:0;border-bottom-left-radius:2px;border-bottom-right-radius:2px;background-color:rgba(0,0,0,.3);padding:16px;font-size:16px;font-weight:500;line-height:16px;color:#fff}</style><img src="[[cameraFeedSrc]]" class="camera-feed" hidden$="[[!imageLoaded]]" on-load="imageLoadSuccess" on-error="imageLoadFail" alt="[[stateObj.entityDisplay]]"><div class="caption">[[stateObj.entityDisplay]]<template is="dom-if" if="[[!imageLoaded]]">(Error loading image)</template></div></template></dom-module><script>Polymer({is:"ha-camera-card",UPDATE_INTERVAL:1e4,properties:{hass:{type:Object},stateObj:{type:Object,observer:"updateCameraFeedSrc"},cameraFeedSrc:{type:String},imageLoaded:{type:Boolean,value:!0},elevation:{type:Number,value:1,reflectToAttribute:!0}},listeners:{tap:"cardTapped"},attached:function(){this.timer=setInterval(function(){this.updateCameraFeedSrc(this.stateObj)}.bind(this),this.UPDATE_INTERVAL)},detached:function(){clearInterval(this.timer)},cardTapped:function(){this.async(function(){this.hass.moreInfoActions.selectEntity(this.stateObj.entityId)}.bind(this),1)},updateCameraFeedSrc:function(e){const t=e.attributes,a=(new Date).getTime();this.cameraFeedSrc=t.entity_picture+"&time="+a},imageLoadSuccess:function(){this.imageLoaded=!0},imageLoadFail:function(){this.imageLoaded=!1}})</script><dom-module id="ha-card" assetpath="/"><template><style include="paper-material">:host{display:block;border-radius:2px;transition:all .3s ease-out;background-color:#fff}.header{@apply(--paper-font-headline);@apply(--paper-font-common-expensive-kerning);opacity:var(--dark-primary-opacity);padding:24px 16px 16px;text-transform:capitalize}</style><template is="dom-if" if="[[header]]"><div class="header">[[header]]</div></template><slot></slot></template></dom-module><script>Polymer({is:"ha-card",properties:{header:{type:String},elevation:{type:Number,value:1,reflectToAttribute:!0}}})</script><dom-module id="paper-toggle-button" assetpath="../bower_components/paper-toggle-button/"><template strip-whitespace=""><style>:host{display:inline-block;@apply(--layout-horizontal);@apply(--layout-center);@apply(--paper-font-common-base)}:host([disabled]){pointer-events:none}:host(:focus){outline:0}.toggle-bar{position:absolute;height:100%;width:100%;border-radius:8px;pointer-events:none;opacity:.4;transition:background-color linear .08s;background-color:var(--paper-toggle-button-unchecked-bar-color,#000);@apply(--paper-toggle-button-unchecked-bar)}.toggle-button{position:absolute;top:-3px;left:0;height:20px;width:20px;border-radius:50%;box-shadow:0 1px 5px 0 rgba(0,0,0,.6);transition:-webkit-transform linear .08s,background-color linear .08s;transition:transform linear .08s,background-color linear .08s;will-change:transform;background-color:var(--paper-toggle-button-unchecked-button-color,--paper-grey-50);@apply(--paper-toggle-button-unchecked-button)}.toggle-button.dragging{-webkit-transition:none;transition:none}:host([checked]:not([disabled])) .toggle-bar{opacity:.5;background-color:var(--paper-toggle-button-checked-bar-color,--primary-color);@apply(--paper-toggle-button-checked-bar)}:host([disabled]) .toggle-bar{background-color:#000;opacity:.12}:host([checked]) .toggle-button{-webkit-transform:translate(16px,0);transform:translate(16px,0)}:host([checked]:not([disabled])) .toggle-button{background-color:var(--paper-toggle-button-checked-button-color,--primary-color);@apply(--paper-toggle-button-checked-button)}:host([disabled]) .toggle-button{background-color:#bdbdbd;opacity:1}.toggle-ink{position:absolute;top:-14px;left:-14px;right:auto;bottom:auto;width:48px;height:48px;opacity:.5;pointer-events:none;color:var(--paper-toggle-button-unchecked-ink-color,--primary-text-color)}:host([checked]) .toggle-ink{color:var(--paper-toggle-button-checked-ink-color,--primary-color)}.toggle-container{display:inline-block;position:relative;width:36px;height:14px;margin:4px 1px}.toggle-label{position:relative;display:inline-block;vertical-align:middle;padding-left:var(--paper-toggle-button-label-spacing,8px);pointer-events:none;color:var(--paper-toggle-button-label-color,--primary-text-color)}:host([invalid]) .toggle-bar{background-color:var(--paper-toggle-button-invalid-bar-color,--error-color)}:host([invalid]) .toggle-button{background-color:var(--paper-toggle-button-invalid-button-color,--error-color)}:host([invalid]) .toggle-ink{color:var(--paper-toggle-button-invalid-ink-color,--error-color)}</style><div class="toggle-container"><div id="toggleBar" class="toggle-bar"></div><div id="toggleButton" class="toggle-button"></div></div><div class="toggle-label"><content></content></div></template><script>Polymer({is:"paper-toggle-button",behaviors:[Polymer.PaperCheckedElementBehavior],hostAttributes:{role:"button","aria-pressed":"false",tabindex:0},properties:{},listeners:{track:"_ontrack"},attached:function(){Polymer.RenderStatus.afterNextRender(this,function(){this.setScrollDirection("y")})},_ontrack:function(t){var e=t.detail;"start"===e.state?this._trackStart(e):"track"===e.state?this._trackMove(e):"end"===e.state&&this._trackEnd(e)},_trackStart:function(t){this._width=this.$.toggleBar.offsetWidth/2,this._trackChecked=this.checked,this.$.toggleButton.classList.add("dragging")},_trackMove:function(t){var e=t.dx;this._x=Math.min(this._width,Math.max(0,this._trackChecked?this._width+e:e)),this.translate3d(this._x+"px",0,0,this.$.toggleButton),this._userActivate(this._x>this._width/2)},_trackEnd:function(t){this.$.toggleButton.classList.remove("dragging"),this.transform("",this.$.toggleButton)},_createRipple:function(){this._rippleContainer=this.$.toggleButton;var t=Polymer.PaperRippleBehavior._createRipple();return t.id="ink",t.setAttribute("recenters",""),t.classList.add("circle","toggle-ink"),t}})</script></dom-module><dom-module id="ha-entity-toggle" assetpath="components/entity/"><template><style>:host{white-space:nowrap}paper-icon-button{color:var(--primary-text-color);transition:color .5s}paper-icon-button[state-active]{color:var(--default-primary-color)}paper-toggle-button{cursor:pointer;--paper-toggle-button-label-spacing:0;padding:13px 5px;margin:-4px -5px}</style><template is="dom-if" if="[[stateObj.attributes.assumed_state]]"><paper-icon-button icon="mdi:flash-off" on-tap="turnOff" state-active$="[[!isOn]]"></paper-icon-button><paper-icon-button icon="mdi:flash" on-tap="turnOn" state-active$="[[isOn]]"></paper-icon-button></template><template is="dom-if" if="[[!stateObj.attributes.assumed_state]]"><paper-toggle-button class="self-center" checked="[[toggleChecked]]" on-change="toggleChanged"></paper-toggle-button></template></template></dom-module><script>Polymer({is:"ha-entity-toggle",properties:{hass:{type:Object},stateObj:{type:Object},toggleChecked:{type:Boolean,value:!1},isOn:{type:Boolean,computed:"computeIsOn(stateObj)",observer:"isOnChanged"}},listeners:{tap:"onTap"},onTap:function(t){t.stopPropagation()},ready:function(){this.forceStateChange()},toggleChanged:function(t){var e=t.target.checked;e&&!this.isOn?this.callService(!0):!e&&this.isOn&&this.callService(!1)},isOnChanged:function(t){this.toggleChecked=t},forceStateChange:function(){this.toggleChecked===this.isOn&&(this.toggleChecked=!this.toggleChecked),this.toggleChecked=this.isOn},turnOn:function(){this.callService(!0)},turnOff:function(){this.callService(!1)},computeIsOn:function(t){return t&&window.hassUtil.OFF_STATES.indexOf(t.state)===-1},callService:function(t){var e,i,n;"lock"===this.stateObj.domain?(e="lock",i=t?"lock":"unlock"):"garage_door"===this.stateObj.domain?(e="garage_door",i=t?"open":"close"):(e="homeassistant",i=t?"turn_on":"turn_off"),n=this.stateObj,this.hass.serviceActions.callService(e,i,{entity_id:this.stateObj.entityId}).then(function(){setTimeout(function(){this.stateObj===n&&this.forceStateChange()}.bind(this),2e3)}.bind(this))}})</script><dom-module id="ha-state-icon" assetpath="/"><template><iron-icon icon="[[computeIcon(stateObj)]]"></iron-icon></template></dom-module><script>Polymer({is:"ha-state-icon",properties:{stateObj:{type:Object}},computeIcon:function(t){return window.hassUtil.stateIcon(t)}})</script><dom-module id="state-badge" assetpath="components/entity/"><template><style>:host{position:relative;display:inline-block;width:40px;color:#44739E;border-radius:50%;height:40px;text-align:center;background-size:cover;line-height:40px}ha-state-icon{transition:color .3s ease-in-out}ha-state-icon[data-domain=binary_sensor][data-state=on],ha-state-icon[data-domain=light][data-state=on],ha-state-icon[data-domain=sun][data-state=above_horizon],ha-state-icon[data-domain=switch][data-state=on]{color:#FDD835}ha-state-icon[data-state=unavailable]{color:var(--disabled-text-color)}</style><ha-state-icon id="icon" state-obj="[[stateObj]]" data-domain$="[[stateObj.domain]]" data-state$="[[stateObj.state]]"></ha-state-icon></template></dom-module><script>Polymer({is:"state-badge",properties:{stateObj:{type:Object,observer:"updateIconColor"}},updateIconColor:function(t){return t.attributes.entity_picture?(this.style.backgroundImage="url("+t.attributes.entity_picture+")",void(this.$.icon.style.display="none")):(this.style.backgroundImage="",this.$.icon.style.display="inline",void("light"===t.domain&&"on"===t.state&&t.attributes.rgb_color&&t.attributes.rgb_color.reduce(function(t,e){return t+e},0)<730?this.$.icon.style.color="rgb("+t.attributes.rgb_color.join(",")+")":this.$.icon.style.color=null))}})</script><script>Polymer({is:"ha-relative-time",properties:{datetime:{type:String,observer:"datetimeChanged"},datetimeObj:{type:Object,observer:"datetimeObjChanged"},parsedDateTime:{type:Object}},created:function(){this.updateRelative=this.updateRelative.bind(this)},attached:function(){this.updateInterval=setInterval(this.updateRelative,6e4)},detached:function(){clearInterval(this.updateInterval)},datetimeChanged:function(e){this.parsedDateTime=e?new Date(e):null,this.updateRelative()},datetimeObjChanged:function(e){this.parsedDateTime=e,this.updateRelative()},updateRelative:function(){var e=Polymer.dom(this);e.innerHTML=this.parsedDateTime?window.hassUtil.relativeTime(this.parsedDateTime):"never"}})</script><dom-module id="state-info" assetpath="components/entity/"><template><style>:host{@apply(--paper-font-body1);min-width:150px;white-space:nowrap}state-badge{float:left}.info{margin-left:56px}.name{@apply(--paper-font-common-nowrap);color:var(--primary-text-color);line-height:40px}.name[in-dialog]{line-height:20px}.time-ago{@apply(--paper-font-common-nowrap);color:var(--secondary-text-color)}</style><div><state-badge state-obj="[[stateObj]]"></state-badge><div class="info"><div class="name" in-dialog$="[[inDialog]]">[[stateObj.entityDisplay]]</div><template is="dom-if" if="[[inDialog]]"><div class="time-ago"><ha-relative-time datetime-obj="[[stateObj.lastChangedAsDate]]"></ha-relative-time></div></template></div></div></template></dom-module><script>Polymer({is:"state-info",properties:{detailed:{type:Boolean,value:!1},stateObj:{type:Object},inDialog:{type:Boolean}}})</script><dom-module id="state-card-climate" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>:host{@apply(--paper-font-body1);line-height:1.5}.state{margin-left:16px;text-align:right}.target{color:var(--primary-text-color)}.current{color:var(--secondary-text-color)}.operation-mode{font-weight:700;text-transform:capitalize}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><div class="state"><div class="target"><span class="operation-mode">[[stateObj.attributes.operation_mode]] </span><span>[[computeTargetTemperature(stateObj)]]</span></div><div class="current"><span>Currently: </span><span>[[stateObj.attributes.current_temperature]]</span> <span></span> <span>[[stateObj.attributes.unit_of_measurement]]</span></div></div></div></template></dom-module><script>Polymer({is:"state-card-climate",properties:{inDialog:{type:Boolean,value:!1},stateObj:{type:Object}},computeTargetTemperature:function(t){var e="";return t.attributes.target_temp_low&&t.attributes.target_temp_high?e=t.attributes.target_temp_low+" - "+t.attributes.target_temp_high+" "+t.attributes.unit_of_measurement:t.attributes.temperature&&(e=t.attributes.temperature+" "+t.attributes.unit_of_measurement),e}})</script><dom-module id="state-card-configurator" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>paper-button{color:var(--default-primary-color);font-weight:500;top:3px;height:37px;margin-right:-.57em}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><paper-button hidden$="[[inDialog]]">[[stateObj.state]]</paper-button></div><template is="dom-if" if="[[stateObj.attributes.description_image]]"><img hidden="" src="[[stateObj.attributes.description_image]]"></template></template></dom-module><script>Polymer({is:"state-card-configurator",properties:{inDialog:{type:Boolean,value:!1},stateObj:{type:Object}}})</script><dom-module id="state-card-cover" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>:host{line-height:1.5}.state{text-align:right;white-space:nowrap;width:127px}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><div class="state"><paper-icon-button icon="mdi:arrow-up" on-tap="onOpenTap" disabled="[[computeIsFullyOpen(stateObj)]]"></paper-icon-button><paper-icon-button icon="mdi:stop" on-tap="onStopTap"></paper-icon-button><paper-icon-button icon="mdi:arrow-down" on-tap="onCloseTap" disabled="[[computeIsFullyClosed(stateObj)]]"></paper-icon-button></div></div></template></dom-module><script>Polymer({is:"state-card-cover",properties:{hass:{type:Object},inDialog:{type:Boolean,value:!1},stateObj:{type:Object}},computeIsFullyOpen:function(t){return void 0!==t.attributes.current_position?100===t.attributes.current_position:"open"===t.state},computeIsFullyClosed:function(t){return void 0!==t.attributes.current_position?0===t.attributes.current_position:"closed"===t.state},onOpenTap:function(){this.hass.serviceActions.callService("cover","open_cover",{entity_id:this.stateObj.entityId})},onCloseTap:function(){this.hass.serviceActions.callService("cover","close_cover",{entity_id:this.stateObj.entityId})},onStopTap:function(){this.hass.serviceActions.callService("cover","stop_cover",{entity_id:this.stateObj.entityId})}})</script><dom-module id="state-card-display" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>.state{@apply(--paper-font-body1);color:var(--primary-text-color);margin-left:16px;text-align:right;line-height:40px}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><div class="state">[[stateObj.stateDisplay]]</div></div></template></dom-module><script>Polymer({is:"state-card-display",properties:{inDialog:{type:Boolean,value:!1},stateObj:{type:Object}}})</script><script>Polymer.PaperInputHelper={},Polymer.PaperInputHelper.NextLabelID=1,Polymer.PaperInputHelper.NextAddonID=1,Polymer.PaperInputBehaviorImpl={properties:{label:{type:String},value:{notify:!0,type:String},disabled:{type:Boolean,value:!1},invalid:{type:Boolean,value:!1,notify:!0},preventInvalidInput:{type:Boolean},allowedPattern:{type:String},type:{type:String},list:{type:String},pattern:{type:String},required:{type:Boolean,value:!1},errorMessage:{type:String},charCounter:{type:Boolean,value:!1},noLabelFloat:{type:Boolean,value:!1},alwaysFloatLabel:{type:Boolean,value:!1},autoValidate:{type:Boolean,value:!1},validator:{type:String},autocomplete:{type:String,value:"off"},autofocus:{type:Boolean,observer:"_autofocusChanged"},inputmode:{type:String},minlength:{type:Number},maxlength:{type:Number},min:{type:String},max:{type:String},step:{type:String},name:{type:String},placeholder:{type:String,value:""},readonly:{type:Boolean,value:!1},size:{type:Number},autocapitalize:{type:String,value:"none"},autocorrect:{type:String,value:"off"},autosave:{type:String},results:{type:Number},accept:{type:String},multiple:{type:Boolean},_ariaDescribedBy:{type:String,value:""},_ariaLabelledBy:{type:String,value:""}},listeners:{"addon-attached":"_onAddonAttached"},keyBindings:{"shift+tab:keydown":"_onShiftTabDown"},hostAttributes:{tabindex:0},get inputElement(){return this.$.input},get _focusableElement(){return this.inputElement},registered:function(){this._typesThatHaveText=["date","datetime","datetime-local","month","time","week","file"]},attached:function(){this._updateAriaLabelledBy(),this.inputElement&&this._typesThatHaveText.indexOf(this.inputElement.type)!==-1&&(this.alwaysFloatLabel=!0)},_appendStringWithSpace:function(e,t){return e=e?e+" "+t:t},_onAddonAttached:function(e){var t=e.path?e.path[0]:e.target;if(t.id)this._ariaDescribedBy=this._appendStringWithSpace(this._ariaDescribedBy,t.id);else{var a="paper-input-add-on-"+Polymer.PaperInputHelper.NextAddonID++;t.id=a,this._ariaDescribedBy=this._appendStringWithSpace(this._ariaDescribedBy,a)}},validate:function(){return this.inputElement.validate()},_focusBlurHandler:function(e){Polymer.IronControlState._focusBlurHandler.call(this,e),this.focused&&!this._shiftTabPressed&&this._focusableElement.focus()},_onShiftTabDown:function(e){var t=this.getAttribute("tabindex");this._shiftTabPressed=!0,this.setAttribute("tabindex","-1"),this.async(function(){this.setAttribute("tabindex",t),this._shiftTabPressed=!1},1)},_handleAutoValidate:function(){this.autoValidate&&this.validate()},updateValueAndPreserveCaret:function(e){try{var t=this.inputElement.selectionStart;this.value=e,this.inputElement.selectionStart=t,this.inputElement.selectionEnd=t}catch(t){this.value=e}},_computeAlwaysFloatLabel:function(e,t){return t||e},_updateAriaLabelledBy:function(){var e=Polymer.dom(this.root).querySelector("label");if(!e)return void(this._ariaLabelledBy="");var t;e.id?t=e.id:(t="paper-input-label-"+Polymer.PaperInputHelper.NextLabelID++,e.id=t),this._ariaLabelledBy=t},_onChange:function(e){this.shadowRoot&&this.fire(e.type,{sourceEvent:e},{node:this,bubbles:e.bubbles,cancelable:e.cancelable})},_autofocusChanged:function(){if(this.autofocus&&this._focusableElement){var e=document.activeElement,t=e instanceof HTMLElement,a=t&&e!==document.body&&e!==document.documentElement;a||this._focusableElement.focus()}}},Polymer.PaperInputBehavior=[Polymer.IronControlState,Polymer.IronA11yKeysBehavior,Polymer.PaperInputBehaviorImpl]</script><dom-module id="paper-input-char-counter" assetpath="../bower_components/paper-input/"><template><style>:host{display:inline-block;float:right;@apply(--paper-font-caption);@apply(--paper-input-char-counter)}:host([hidden]){display:none!important}:host-context([dir=rtl]){float:left}</style><span>[[_charCounterStr]]</span></template></dom-module><script>Polymer({is:"paper-input-char-counter",behaviors:[Polymer.PaperInputAddonBehavior],properties:{_charCounterStr:{type:String,value:"0"}},update:function(t){if(t.inputElement){t.value=t.value||"";var e=t.value.toString().length.toString();t.inputElement.hasAttribute("maxlength")&&(e+="/"+t.inputElement.getAttribute("maxlength")),this._charCounterStr=e}}})</script><dom-module id="paper-input" assetpath="../bower_components/paper-input/"><template><style>:host{display:block}:host([focused]){outline:0}:host([hidden]){display:none!important}input::-webkit-input-placeholder{color:var(--paper-input-container-color,--secondary-text-color)}input:-moz-placeholder{color:var(--paper-input-container-color,--secondary-text-color)}input::-moz-placeholder{color:var(--paper-input-container-color,--secondary-text-color)}input:-ms-input-placeholder{color:var(--paper-input-container-color,--secondary-text-color)}label{pointer-events:none}</style><paper-input-container no-label-float="[[noLabelFloat]]" always-float-label="[[_computeAlwaysFloatLabel(alwaysFloatLabel,placeholder)]]" auto-validate$="[[autoValidate]]" disabled$="[[disabled]]" invalid="[[invalid]]"><content select="[prefix]"></content><label hidden$="[[!label]]" aria-hidden="true" for="input">[[label]]</label><input is="iron-input" id="input" aria-labelledby$="[[_ariaLabelledBy]]" aria-describedby$="[[_ariaDescribedBy]]" disabled$="[[disabled]]" title$="[[title]]" bind-value="{{value}}" invalid="{{invalid}}" prevent-invalid-input="[[preventInvalidInput]]" allowed-pattern="[[allowedPattern]]" validator="[[validator]]" type$="[[type]]" pattern$="[[pattern]]" required$="[[required]]" autocomplete$="[[autocomplete]]" autofocus$="[[autofocus]]" inputmode$="[[inputmode]]" minlength$="[[minlength]]" maxlength$="[[maxlength]]" min$="[[min]]" max$="[[max]]" step$="[[step]]" name$="[[name]]" placeholder$="[[placeholder]]" readonly$="[[readonly]]" list$="[[list]]" size$="[[size]]" autocapitalize$="[[autocapitalize]]" autocorrect$="[[autocorrect]]" on-change="_onChange" tabindex$="[[tabindex]]" autosave$="[[autosave]]" results$="[[results]]" accept$="[[accept]]" multiple$="[[multiple]]"><content select="[suffix]"></content><template is="dom-if" if="[[errorMessage]]"><paper-input-error aria-live="assertive">[[errorMessage]]</paper-input-error></template><template is="dom-if" if="[[charCounter]]"><paper-input-char-counter></paper-input-char-counter></template></paper-input-container></template></dom-module><script>Polymer({is:"paper-input",behaviors:[Polymer.IronFormElementBehavior,Polymer.PaperInputBehavior]})</script><script>Polymer.IronFitBehavior={properties:{sizingTarget:{type:Object,value:function(){return this}},fitInto:{type:Object,value:window},noOverlap:{type:Boolean},positionTarget:{type:Element},horizontalAlign:{type:String},verticalAlign:{type:String},dynamicAlign:{type:Boolean},horizontalOffset:{type:Number,value:0,notify:!0},verticalOffset:{type:Number,value:0,notify:!0},autoFitOnAttach:{type:Boolean,value:!1},_fitInfo:{type:Object}},get _fitWidth(){var t;return t=this.fitInto===window?this.fitInto.innerWidth:this.fitInto.getBoundingClientRect().width},get _fitHeight(){var t;return t=this.fitInto===window?this.fitInto.innerHeight:this.fitInto.getBoundingClientRect().height},get _fitLeft(){var t;return t=this.fitInto===window?0:this.fitInto.getBoundingClientRect().left},get _fitTop(){var t;return t=this.fitInto===window?0:this.fitInto.getBoundingClientRect().top},get _defaultPositionTarget(){var t=Polymer.dom(this).parentNode;return t&&t.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&(t=t.host),t},get _localeHorizontalAlign(){if(this._isRTL){if("right"===this.horizontalAlign)return"left";if("left"===this.horizontalAlign)return"right"}return this.horizontalAlign},attached:function(){this._isRTL="rtl"==window.getComputedStyle(this).direction,this.positionTarget=this.positionTarget||this._defaultPositionTarget,this.autoFitOnAttach&&("none"===window.getComputedStyle(this).display?setTimeout(function(){this.fit()}.bind(this)):this.fit())},fit:function(){this.position(),this.constrain(),this.center()},_discoverInfo:function(){if(!this._fitInfo){var t=window.getComputedStyle(this),i=window.getComputedStyle(this.sizingTarget);this._fitInfo={inlineStyle:{top:this.style.top||"",left:this.style.left||"",position:this.style.position||""},sizerInlineStyle:{maxWidth:this.sizingTarget.style.maxWidth||"",maxHeight:this.sizingTarget.style.maxHeight||"",boxSizing:this.sizingTarget.style.boxSizing||""},positionedBy:{vertically:"auto"!==t.top?"top":"auto"!==t.bottom?"bottom":null,horizontally:"auto"!==t.left?"left":"auto"!==t.right?"right":null},sizedBy:{height:"none"!==i.maxHeight,width:"none"!==i.maxWidth,minWidth:parseInt(i.minWidth,10)||0,minHeight:parseInt(i.minHeight,10)||0},margin:{top:parseInt(t.marginTop,10)||0,right:parseInt(t.marginRight,10)||0,bottom:parseInt(t.marginBottom,10)||0,left:parseInt(t.marginLeft,10)||0}},this.verticalOffset&&(this._fitInfo.margin.top=this._fitInfo.margin.bottom=this.verticalOffset,this._fitInfo.inlineStyle.marginTop=this.style.marginTop||"",this._fitInfo.inlineStyle.marginBottom=this.style.marginBottom||"",this.style.marginTop=this.style.marginBottom=this.verticalOffset+"px"),this.horizontalOffset&&(this._fitInfo.margin.left=this._fitInfo.margin.right=this.horizontalOffset,this._fitInfo.inlineStyle.marginLeft=this.style.marginLeft||"",this._fitInfo.inlineStyle.marginRight=this.style.marginRight||"",this.style.marginLeft=this.style.marginRight=this.horizontalOffset+"px")}},resetFit:function(){var t=this._fitInfo||{};for(var i in t.sizerInlineStyle)this.sizingTarget.style[i]=t.sizerInlineStyle[i];for(var i in t.inlineStyle)this.style[i]=t.inlineStyle[i];this._fitInfo=null},refit:function(){var t=this.sizingTarget.scrollLeft,i=this.sizingTarget.scrollTop;this.resetFit(),this.fit(),this.sizingTarget.scrollLeft=t,this.sizingTarget.scrollTop=i},position:function(){if(this.horizontalAlign||this.verticalAlign){this._discoverInfo(),this.style.position="fixed",this.sizingTarget.style.boxSizing="border-box",this.style.left="0px",this.style.top="0px";var t=this.getBoundingClientRect(),i=this.__getNormalizedRect(this.positionTarget),e=this.__getNormalizedRect(this.fitInto),n=this._fitInfo.margin,o={width:t.width+n.left+n.right,height:t.height+n.top+n.bottom},h=this.__getPosition(this._localeHorizontalAlign,this.verticalAlign,o,i,e),s=h.left+n.left,l=h.top+n.top,r=Math.min(e.right-n.right,s+t.width),a=Math.min(e.bottom-n.bottom,l+t.height),g=this._fitInfo.sizedBy.minWidth,f=this._fitInfo.sizedBy.minHeight;s<n.left&&(s=n.left,r-s<g&&(s=r-g)),l<n.top&&(l=n.top,a-l<f&&(l=a-f)),this.sizingTarget.style.maxWidth=r-s+"px",this.sizingTarget.style.maxHeight=a-l+"px",this.style.left=s-t.left+"px",this.style.top=l-t.top+"px"}},constrain:function(){if(!this.horizontalAlign&&!this.verticalAlign){this._discoverInfo();var t=this._fitInfo;t.positionedBy.vertically||(this.style.position="fixed",this.style.top="0px"),t.positionedBy.horizontally||(this.style.position="fixed",this.style.left="0px"),this.sizingTarget.style.boxSizing="border-box";var i=this.getBoundingClientRect();t.sizedBy.height||this.__sizeDimension(i,t.positionedBy.vertically,"top","bottom","Height"),t.sizedBy.width||this.__sizeDimension(i,t.positionedBy.horizontally,"left","right","Width")}},_sizeDimension:function(t,i,e,n,o){this.__sizeDimension(t,i,e,n,o)},__sizeDimension:function(t,i,e,n,o){var h=this._fitInfo,s=this.__getNormalizedRect(this.fitInto),l="Width"===o?s.width:s.height,r=i===n,a=r?l-t[n]:t[e],g=h.margin[r?e:n],f="offset"+o,p=this[f]-this.sizingTarget[f];this.sizingTarget.style["max"+o]=l-g-a-p+"px"},center:function(){if(!this.horizontalAlign&&!this.verticalAlign){this._discoverInfo();var t=this._fitInfo.positionedBy;if(!t.vertically||!t.horizontally){this.style.position="fixed",t.vertically||(this.style.top="0px"),t.horizontally||(this.style.left="0px");var i=this.getBoundingClientRect(),e=this.__getNormalizedRect(this.fitInto);if(!t.vertically){var n=e.top-i.top+(e.height-i.height)/2;this.style.top=n+"px"}if(!t.horizontally){var o=e.left-i.left+(e.width-i.width)/2;this.style.left=o+"px"}}}},__getNormalizedRect:function(t){return t===document.documentElement||t===window?{top:0,left:0,width:window.innerWidth,height:window.innerHeight,right:window.innerWidth,bottom:window.innerHeight}:t.getBoundingClientRect()},__getCroppedArea:function(t,i,e){var n=Math.min(0,t.top)+Math.min(0,e.bottom-(t.top+i.height)),o=Math.min(0,t.left)+Math.min(0,e.right-(t.left+i.width));return Math.abs(n)*i.width+Math.abs(o)*i.height},__getPosition:function(t,i,e,n,o){var h=[{verticalAlign:"top",horizontalAlign:"left",top:n.top,left:n.left},{verticalAlign:"top",horizontalAlign:"right",top:n.top,left:n.right-e.width},{verticalAlign:"bottom",horizontalAlign:"left",top:n.bottom-e.height,left:n.left},{verticalAlign:"bottom",horizontalAlign:"right",top:n.bottom-e.height,left:n.right-e.width}];if(this.noOverlap){for(var s=0,l=h.length;s<l;s++){var r={};for(var a in h[s])r[a]=h[s][a];h.push(r)}h[0].top=h[1].top+=n.height,h[2].top=h[3].top-=n.height,h[4].left=h[6].left+=n.width,h[5].left=h[7].left-=n.width}i="auto"===i?null:i,t="auto"===t?null:t;for(var g,s=0;s<h.length;s++){var f=h[s];if(!this.dynamicAlign&&!this.noOverlap&&f.verticalAlign===i&&f.horizontalAlign===t){g=f;break}var p=!(i&&f.verticalAlign!==i||t&&f.horizontalAlign!==t);if(this.dynamicAlign||p){g=g||f,f.croppedArea=this.__getCroppedArea(f,e,o);var d=f.croppedArea-g.croppedArea;if((d<0||0===d&&p)&&(g=f),0===g.croppedArea&&p)break}}return g}}</script><dom-module id="iron-overlay-backdrop" assetpath="/"><template><style>:host{position:fixed;top:0;left:0;width:100%;height:100%;background-color:var(--iron-overlay-backdrop-background-color,#000);opacity:0;transition:opacity .2s;pointer-events:none;@apply(--iron-overlay-backdrop)}:host(.opened){opacity:var(--iron-overlay-backdrop-opacity,.6);pointer-events:auto;@apply(--iron-overlay-backdrop-opened)}</style><content></content></template></dom-module><script>!function(){"use strict";Polymer({is:"iron-overlay-backdrop",properties:{opened:{reflectToAttribute:!0,type:Boolean,value:!1,observer:"_openedChanged"}},listeners:{transitionend:"_onTransitionend"},created:function(){this.__openedRaf=null},attached:function(){this.opened&&this._openedChanged(this.opened)},prepare:function(){this.opened&&!this.parentNode&&Polymer.dom(document.body).appendChild(this)},open:function(){this.opened=!0},close:function(){this.opened=!1},complete:function(){this.opened||this.parentNode!==document.body||Polymer.dom(this.parentNode).removeChild(this)},_onTransitionend:function(e){e&&e.target===this&&this.complete()},_openedChanged:function(e){if(e)this.prepare();else{var t=window.getComputedStyle(this);"0s"!==t.transitionDuration&&0!=t.opacity||this.complete()}this.isAttached&&(this.__openedRaf&&(window.cancelAnimationFrame(this.__openedRaf),this.__openedRaf=null),this.scrollTop=this.scrollTop,this.__openedRaf=window.requestAnimationFrame(function(){this.__openedRaf=null,this.toggleClass("opened",this.opened)}.bind(this)))}})}()</script><script>Polymer.IronOverlayManagerClass=function(){this._overlays=[],this._minimumZ=101,this._backdropElement=null,Polymer.Gestures.add(document,"tap",this._onCaptureClick.bind(this)),document.addEventListener("focus",this._onCaptureFocus.bind(this),!0),document.addEventListener("keydown",this._onCaptureKeyDown.bind(this),!0)},Polymer.IronOverlayManagerClass.prototype={constructor:Polymer.IronOverlayManagerClass,get backdropElement(){return this._backdropElement||(this._backdropElement=document.createElement("iron-overlay-backdrop")),this._backdropElement},get deepActiveElement(){for(var e=document.activeElement||document.body;e.root&&Polymer.dom(e.root).activeElement;)e=Polymer.dom(e.root).activeElement;return e},_bringOverlayAtIndexToFront:function(e){var t=this._overlays[e];if(t){var r=this._overlays.length-1,a=this._overlays[r];if(a&&this._shouldBeBehindOverlay(t,a)&&r--,!(e>=r)){var n=Math.max(this.currentOverlayZ(),this._minimumZ);for(this._getZ(t)<=n&&this._applyOverlayZ(t,n);e<r;)this._overlays[e]=this._overlays[e+1],e++;this._overlays[r]=t}}},addOrRemoveOverlay:function(e){e.opened?this.addOverlay(e):this.removeOverlay(e)},addOverlay:function(e){var t=this._overlays.indexOf(e);if(t>=0)return this._bringOverlayAtIndexToFront(t),void this.trackBackdrop();var r=this._overlays.length,a=this._overlays[r-1],n=Math.max(this._getZ(a),this._minimumZ),o=this._getZ(e);if(a&&this._shouldBeBehindOverlay(e,a)){this._applyOverlayZ(a,n),r--;var i=this._overlays[r-1];n=Math.max(this._getZ(i),this._minimumZ)}o<=n&&this._applyOverlayZ(e,n),this._overlays.splice(r,0,e),this.trackBackdrop()},removeOverlay:function(e){var t=this._overlays.indexOf(e);t!==-1&&(this._overlays.splice(t,1),this.trackBackdrop())},currentOverlay:function(){var e=this._overlays.length-1;return this._overlays[e]},currentOverlayZ:function(){return this._getZ(this.currentOverlay())},ensureMinimumZ:function(e){this._minimumZ=Math.max(this._minimumZ,e)},focusOverlay:function(){var e=this.currentOverlay();e&&e._applyFocus()},trackBackdrop:function(){var e=this._overlayWithBackdrop();(e||this._backdropElement)&&(this.backdropElement.style.zIndex=this._getZ(e)-1,this.backdropElement.opened=!!e)},getBackdrops:function(){for(var e=[],t=0;t<this._overlays.length;t++)this._overlays[t].withBackdrop&&e.push(this._overlays[t]);return e},backdropZ:function(){return this._getZ(this._overlayWithBackdrop())-1},_overlayWithBackdrop:function(){for(var e=0;e<this._overlays.length;e++)if(this._overlays[e].withBackdrop)return this._overlays[e]},_getZ:function(e){var t=this._minimumZ;if(e){var r=Number(e.style.zIndex||window.getComputedStyle(e).zIndex);r===r&&(t=r)}return t},_setZ:function(e,t){e.style.zIndex=t},_applyOverlayZ:function(e,t){this._setZ(e,t+2)},_overlayInPath:function(e){e=e||[];for(var t=0;t<e.length;t++)if(e[t]._manager===this)return e[t]},_onCaptureClick:function(e){var t=this.currentOverlay();t&&this._overlayInPath(Polymer.dom(e).path)!==t&&t._onCaptureClick(e)},_onCaptureFocus:function(e){var t=this.currentOverlay();t&&t._onCaptureFocus(e)},_onCaptureKeyDown:function(e){var t=this.currentOverlay();t&&(Polymer.IronA11yKeysBehavior.keyboardEventMatchesKeys(e,"esc")?t._onCaptureEsc(e):Polymer.IronA11yKeysBehavior.keyboardEventMatchesKeys(e,"tab")&&t._onCaptureTab(e))},_shouldBeBehindOverlay:function(e,t){return!e.alwaysOnTop&&t.alwaysOnTop}},Polymer.IronOverlayManager=new Polymer.IronOverlayManagerClass</script><script>!function(){"use strict";var e=Element.prototype,t=e.matches||e.matchesSelector||e.mozMatchesSelector||e.msMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;Polymer.IronFocusablesHelper={getTabbableNodes:function(e){var t=[],r=this._collectTabbableNodes(e,t);return r?this._sortByTabIndex(t):t},isFocusable:function(e){return t.call(e,"input, select, textarea, button, object")?t.call(e,":not([disabled])"):t.call(e,"a[href], area[href], iframe, [tabindex], [contentEditable]")},isTabbable:function(e){return this.isFocusable(e)&&t.call(e,':not([tabindex="-1"])')&&this._isVisible(e)},_normalizedTabIndex:function(e){if(this.isFocusable(e)){var t=e.getAttribute("tabindex")||0;return Number(t)}return-1},_collectTabbableNodes:function(e,t){if(e.nodeType!==Node.ELEMENT_NODE||!this._isVisible(e))return!1;var r=e,a=this._normalizedTabIndex(r),i=a>0;a>=0&&t.push(r);var n;n="content"===r.localName?Polymer.dom(r).getDistributedNodes():Polymer.dom(r.root||r).children;for(var o=0;o<n.length;o++){var s=this._collectTabbableNodes(n[o],t);i=i||s}return i},_isVisible:function(e){var t=e.style;return"hidden"!==t.visibility&&"none"!==t.display&&(t=window.getComputedStyle(e),"hidden"!==t.visibility&&"none"!==t.display)},_sortByTabIndex:function(e){var t=e.length;if(t<2)return e;var r=Math.ceil(t/2),a=this._sortByTabIndex(e.slice(0,r)),i=this._sortByTabIndex(e.slice(r));return this._mergeSortByTabIndex(a,i)},_mergeSortByTabIndex:function(e,t){for(var r=[];e.length>0&&t.length>0;)this._hasLowerTabOrder(e[0],t[0])?r.push(t.shift()):r.push(e.shift());return r.concat(e,t)},_hasLowerTabOrder:function(e,t){var r=Math.max(e.tabIndex,0),a=Math.max(t.tabIndex,0);return 0===r||0===a?a>r:r>a}}}()</script><script>!function(){"use strict";Polymer.IronOverlayBehaviorImpl={properties:{opened:{observer:"_openedChanged",type:Boolean,value:!1,notify:!0},canceled:{observer:"_canceledChanged",readOnly:!0,type:Boolean,value:!1},withBackdrop:{observer:"_withBackdropChanged",type:Boolean},noAutoFocus:{type:Boolean,value:!1},noCancelOnEscKey:{type:Boolean,value:!1},noCancelOnOutsideClick:{type:Boolean,value:!1},closingReason:{type:Object},restoreFocusOnClose:{type:Boolean,value:!1},alwaysOnTop:{type:Boolean},_manager:{type:Object,value:Polymer.IronOverlayManager},_focusedChild:{type:Object}},listeners:{"iron-resize":"_onIronResize"},get backdropElement(){return this._manager.backdropElement},get _focusNode(){return this._focusedChild||Polymer.dom(this).querySelector("[autofocus]")||this},get _focusableNodes(){return Polymer.IronFocusablesHelper.getTabbableNodes(this)},ready:function(){this.__isAnimating=!1,this.__shouldRemoveTabIndex=!1,this.__firstFocusableNode=this.__lastFocusableNode=null,this.__raf=null,this.__restoreFocusNode=null,this._ensureSetup()},attached:function(){this.opened&&this._openedChanged(this.opened),this._observer=Polymer.dom(this).observeNodes(this._onNodesChange)},detached:function(){Polymer.dom(this).unobserveNodes(this._observer),this._observer=null,this.__raf&&(window.cancelAnimationFrame(this.__raf),this.__raf=null),this._manager.removeOverlay(this)},toggle:function(){this._setCanceled(!1),this.opened=!this.opened},open:function(){this._setCanceled(!1),this.opened=!0},close:function(){this._setCanceled(!1),this.opened=!1},cancel:function(e){var t=this.fire("iron-overlay-canceled",e,{cancelable:!0});t.defaultPrevented||(this._setCanceled(!0),this.opened=!1)},invalidateTabbables:function(){this.__firstFocusableNode=this.__lastFocusableNode=null},_ensureSetup:function(){this._overlaySetup||(this._overlaySetup=!0,this.style.outline="none",this.style.display="none")},_openedChanged:function(e){e?this.removeAttribute("aria-hidden"):this.setAttribute("aria-hidden","true"),this.isAttached&&(this.__isAnimating=!0,this.__onNextAnimationFrame(this.__openedChanged))},_canceledChanged:function(){this.closingReason=this.closingReason||{},this.closingReason.canceled=this.canceled},_withBackdropChanged:function(){this.withBackdrop&&!this.hasAttribute("tabindex")?(this.setAttribute("tabindex","-1"),this.__shouldRemoveTabIndex=!0):this.__shouldRemoveTabIndex&&(this.removeAttribute("tabindex"),this.__shouldRemoveTabIndex=!1),this.opened&&this.isAttached&&this._manager.trackBackdrop()},_prepareRenderOpened:function(){this.__restoreFocusNode=this._manager.deepActiveElement,this._preparePositioning(),this.refit(),this._finishPositioning(),this.noAutoFocus&&document.activeElement===this._focusNode&&(this._focusNode.blur(),this.__restoreFocusNode.focus())},_renderOpened:function(){this._finishRenderOpened()},_renderClosed:function(){this._finishRenderClosed()},_finishRenderOpened:function(){this.notifyResize(),this.__isAnimating=!1,this.fire("iron-overlay-opened")},_finishRenderClosed:function(){this.style.display="none",this.style.zIndex="",this.notifyResize(),this.__isAnimating=!1,this.fire("iron-overlay-closed",this.closingReason)},_preparePositioning:function(){this.style.transition=this.style.webkitTransition="none",this.style.transform=this.style.webkitTransform="none",this.style.display=""},_finishPositioning:function(){this.style.display="none",this.scrollTop=this.scrollTop,this.style.transition=this.style.webkitTransition="",this.style.transform=this.style.webkitTransform="",this.style.display="",this.scrollTop=this.scrollTop},_applyFocus:function(){if(this.opened)this.noAutoFocus||this._focusNode.focus();else{this._focusNode.blur(),this._focusedChild=null,this.restoreFocusOnClose&&this.__restoreFocusNode&&this.__restoreFocusNode.focus(),this.__restoreFocusNode=null;var e=this._manager.currentOverlay();e&&this!==e&&e._applyFocus()}},_onCaptureClick:function(e){this.noCancelOnOutsideClick||this.cancel(e)},_onCaptureFocus:function(e){if(this.withBackdrop){var t=Polymer.dom(e).path;t.indexOf(this)===-1?(e.stopPropagation(),this._applyFocus()):this._focusedChild=t[0]}},_onCaptureEsc:function(e){this.noCancelOnEscKey||this.cancel(e)},_onCaptureTab:function(e){if(this.withBackdrop){this.__ensureFirstLastFocusables();var t=e.shiftKey,i=t?this.__firstFocusableNode:this.__lastFocusableNode,s=t?this.__lastFocusableNode:this.__firstFocusableNode,o=!1;if(i===s)o=!0;else{var n=this._manager.deepActiveElement;o=n===i||n===this}o&&(e.preventDefault(),this._focusedChild=s,this._applyFocus())}},_onIronResize:function(){this.opened&&!this.__isAnimating&&this.__onNextAnimationFrame(this.refit)},_onNodesChange:function(){this.opened&&!this.__isAnimating&&(this.invalidateTabbables(),this.notifyResize())},__ensureFirstLastFocusables:function(){if(!this.__firstFocusableNode||!this.__lastFocusableNode){var e=this._focusableNodes;this.__firstFocusableNode=e[0],this.__lastFocusableNode=e[e.length-1]}},__openedChanged:function(){this.opened?(this._prepareRenderOpened(),this._manager.addOverlay(this),this._applyFocus(),this._renderOpened()):(this._manager.removeOverlay(this),this._applyFocus(),this._renderClosed())},__onNextAnimationFrame:function(e){this.__raf&&window.cancelAnimationFrame(this.__raf);var t=this;this.__raf=window.requestAnimationFrame(function(){t.__raf=null,e.call(t)})}},Polymer.IronOverlayBehavior=[Polymer.IronFitBehavior,Polymer.IronResizableBehavior,Polymer.IronOverlayBehaviorImpl]}()</script><script>Polymer.NeonAnimatableBehavior={properties:{animationConfig:{type:Object},entryAnimation:{observer:"_entryAnimationChanged",type:String},exitAnimation:{observer:"_exitAnimationChanged",type:String}},_entryAnimationChanged:function(){this.animationConfig=this.animationConfig||{},this.animationConfig.entry=[{name:this.entryAnimation,node:this}]},_exitAnimationChanged:function(){this.animationConfig=this.animationConfig||{},this.animationConfig.exit=[{name:this.exitAnimation,node:this}]},_copyProperties:function(i,n){for(var t in n)i[t]=n[t]},_cloneConfig:function(i){var n={isClone:!0};return this._copyProperties(n,i),n},_getAnimationConfigRecursive:function(i,n,t){if(this.animationConfig){if(this.animationConfig.value&&"function"==typeof this.animationConfig.value)return void this._warn(this._logf("playAnimation","Please put 'animationConfig' inside of your components 'properties' object instead of outside of it."));var o;if(o=i?this.animationConfig[i]:this.animationConfig,Array.isArray(o)||(o=[o]),o)for(var e,a=0;e=o[a];a++)if(e.animatable)e.animatable._getAnimationConfigRecursive(e.type||i,n,t);else if(e.id){var r=n[e.id];r?(r.isClone||(n[e.id]=this._cloneConfig(r),r=n[e.id]),this._copyProperties(r,e)):n[e.id]=e}else t.push(e)}},getAnimationConfig:function(i){var n={},t=[];this._getAnimationConfigRecursive(i,n,t);for(var o in n)t.push(n[o]);return t}}</script><script>Polymer.NeonAnimationRunnerBehaviorImpl={_configureAnimations:function(n){var i=[];if(n.length>0)for(var e,t=0;e=n[t];t++){var o=document.createElement(e.name);if(o.isNeonAnimation){var a=null;try{a=o.configure(e),"function"!=typeof a.cancel&&(a=document.timeline.play(a))}catch(n){a=null,console.warn("Couldnt play","(",e.name,").",n)}a&&i.push({neonAnimation:o,config:e,animation:a})}else console.warn(this.is+":",e.name,"not found!")}return i},_shouldComplete:function(n){for(var i=!0,e=0;e<n.length;e++)if("finished"!=n[e].animation.playState){i=!1;break}return i},_complete:function(n){for(var i=0;i<n.length;i++)n[i].neonAnimation.complete(n[i].config);for(var i=0;i<n.length;i++)n[i].animation.cancel()},playAnimation:function(n,i){var e=this.getAnimationConfig(n);if(e){this._active=this._active||{},this._active[n]&&(this._complete(this._active[n]),delete this._active[n]);var t=this._configureAnimations(e);if(0==t.length)return void this.fire("neon-animation-finish",i,{bubbles:!1});this._active[n]=t;for(var o=0;o<t.length;o++)t[o].animation.onfinish=function(){this._shouldComplete(t)&&(this._complete(t),delete this._active[n],this.fire("neon-animation-finish",i,{bubbles:!1}))}.bind(this)}},cancelAnimation:function(){for(var n in this._animations)this._animations[n].cancel();this._animations={}}},Polymer.NeonAnimationRunnerBehavior=[Polymer.NeonAnimatableBehavior,Polymer.NeonAnimationRunnerBehaviorImpl]</script><script>Polymer.NeonAnimationBehavior={properties:{animationTiming:{type:Object,value:function(){return{duration:500,easing:"cubic-bezier(0.4, 0, 0.2, 1)",fill:"both"}}}},isNeonAnimation:!0,timingFromConfig:function(i){if(i.timing)for(var n in i.timing)this.animationTiming[n]=i.timing[n];return this.animationTiming},setPrefixedProperty:function(i,n,r){for(var t,o={transform:["webkitTransform"],transformOrigin:["mozTransformOrigin","webkitTransformOrigin"]},e=o[n],m=0;t=e[m];m++)i.style[t]=r;i.style[n]=r},complete:function(){}}</script><script>!function(a,b){var c={},d={},e={},f=null;!function(t,e){function i(t){if("number"==typeof t)return t;var e={};for(var i in t)e[i]=t[i];return e}function n(){this._delay=0,this._endDelay=0,this._fill="none",this._iterationStart=0,this._iterations=1,this._duration=0,this._playbackRate=1,this._direction="normal",this._easing="linear",this._easingFunction=E}function r(){return t.isDeprecated("Invalid timing inputs","2016-03-02","TypeError exceptions will be thrown instead.",!0)}function o(e,i,r){var o=new n;return i&&(o.fill="both",o.duration="auto"),"number"!=typeof e||isNaN(e)?void 0!==e&&Object.getOwnPropertyNames(e).forEach(function(i){if("auto"!=e[i]){if(("number"==typeof o[i]||"duration"==i)&&("number"!=typeof e[i]||isNaN(e[i])))return;if("fill"==i&&w.indexOf(e[i])==-1)return;if("direction"==i&&T.indexOf(e[i])==-1)return;if("playbackRate"==i&&1!==e[i]&&t.isDeprecated("AnimationEffectTiming.playbackRate","2014-11-28","Use Animation.playbackRate instead."))return;o[i]=e[i]}}):o.duration=e,o}function a(t){return"number"==typeof t&&(t=isNaN(t)?{duration:0}:{duration:t}),t}function s(e,i){return e=t.numericTimingToObject(e),o(e,i)}function u(t,e,i,n){return t<0||t>1||i<0||i>1?E:function(r){function o(t,e,i){return 3*t*(1-i)*(1-i)*i+3*e*(1-i)*i*i+i*i*i}if(r<=0){var a=0;return t>0?a=e/t:!e&&i>0&&(a=n/i),a*r}if(r>=1){var s=0;return i<1?s=(n-1)/(i-1):1==i&&t<1&&(s=(e-1)/(t-1)),1+s*(r-1)}for(var u=0,c=1;u<c;){var f=(u+c)/2,l=o(t,i,f);if(Math.abs(r-l)<1e-5)return o(e,n,f);l<r?u=f:c=f}return o(e,n,f)}}function c(t,e){return function(i){if(i>=1)return 1;var n=1/t;return i+=e*n,i-i%n}}function f(t){R||(R=document.createElement("div").style),R.animationTimingFunction="",R.animationTimingFunction=t;var e=R.animationTimingFunction;if(""==e&&r())throw new TypeError(t+" is not a valid value for easing");return e}function l(t){if("linear"==t)return E;var e=O.exec(t);if(e)return u.apply(this,e.slice(1).map(Number));var i=k.exec(t);if(i)return c(Number(i[1]),{start:x,middle:A,end:P}[i[2]]);var n=j[t];return n?n:E}function h(t){return Math.abs(m(t)/t.playbackRate)}function m(t){return 0===t.duration||0===t.iterations?0:t.duration*t.iterations}function d(t,e,i){if(null==e)return S;var n=i.delay+t+i.endDelay;return e<Math.min(i.delay,n)?C:e>=Math.min(i.delay+t,n)?D:F}function p(t,e,i,n,r){switch(n){case C:return"backwards"==e||"both"==e?0:null;case F:return i-r;case D:return"forwards"==e||"both"==e?t:null;case S:return null}}function _(t,e,i,n,r){var o=r;return 0===t?e!==C&&(o+=i):o+=n/t,o}function g(t,e,i,n,r,o){var a=t===1/0?e%1:t%1;return 0!==a||i!==D||0===n||0===r&&0!==o||(a=1),a}function b(t,e,i,n){return t===D&&e===1/0?1/0:1===i?Math.floor(n)-1:Math.floor(n)}function v(t,e,i){var n=t;if("normal"!==t&&"reverse"!==t){var r=e;"alternate-reverse"===t&&(r+=1),n="normal",r!==1/0&&r%2!==0&&(n="reverse")}return"normal"===n?i:1-i}function y(t,e,i){var n=d(t,e,i),r=p(t,i.fill,e,n,i.delay);if(null===r)return null;var o=_(i.duration,n,i.iterations,r,i.iterationStart),a=g(o,i.iterationStart,n,i.iterations,r,i.duration),s=b(n,i.iterations,a,o),u=v(i.direction,s,a);return i._easingFunction(u)}var w="backwards|forwards|both|none".split("|"),T="reverse|alternate|alternate-reverse".split("|"),E=function(t){return t};n.prototype={_setMember:function(e,i){this["_"+e]=i,this._effect&&(this._effect._timingInput[e]=i,this._effect._timing=t.normalizeTimingInput(this._effect._timingInput),this._effect.activeDuration=t.calculateActiveDuration(this._effect._timing),this._effect._animation&&this._effect._animation._rebuildUnderlyingAnimation())},get playbackRate(){return this._playbackRate},set delay(t){this._setMember("delay",t)},get delay(){return this._delay},set endDelay(t){this._setMember("endDelay",t)},get endDelay(){return this._endDelay},set fill(t){this._setMember("fill",t)},get fill(){return this._fill},set iterationStart(t){if((isNaN(t)||t<0)&&r())throw new TypeError("iterationStart must be a non-negative number, received: "+timing.iterationStart);this._setMember("iterationStart",t)},get iterationStart(){return this._iterationStart},set duration(t){if("auto"!=t&&(isNaN(t)||t<0)&&r())throw new TypeError("duration must be non-negative or auto, received: "+t);this._setMember("duration",t)},get duration(){return this._duration},set direction(t){this._setMember("direction",t)},get direction(){return this._direction},set easing(t){this._easingFunction=l(f(t)),this._setMember("easing",t)},get easing(){return this._easing},set iterations(t){if((isNaN(t)||t<0)&&r())throw new TypeError("iterations must be non-negative, received: "+t);this._setMember("iterations",t)},get iterations(){return this._iterations}};var x=1,A=.5,P=0,j={ease:u(.25,.1,.25,1),"ease-in":u(.42,0,1,1),"ease-out":u(0,0,.58,1),"ease-in-out":u(.42,0,.58,1),"step-start":c(1,x),"step-middle":c(1,A),"step-end":c(1,P)},R=null,N="\\s*(-?\\d+\\.?\\d*|-?\\.\\d+)\\s*",O=new RegExp("cubic-bezier\\("+N+","+N+","+N+","+N+"\\)"),k=/steps\(\s*(\d+)\s*,\s*(start|middle|end)\s*\)/,S=0,C=1,D=2,F=3;t.cloneTimingInput=i,t.makeTiming=o,t.numericTimingToObject=a,t.normalizeTimingInput=s,t.calculateActiveDuration=h,t.calculateIterationProgress=y,t.calculatePhase=d,t.normalizeEasing=f,t.parseEasingFunction=l}(c,f),function(t,e){function i(t,e){return t in f?f[t][e]||e:e}function n(t){return"display"===t||0===t.lastIndexOf("animation",0)||0===t.lastIndexOf("transition",0)}function r(t,e,r){if(!n(t)){var o=s[t];if(o){u.style[t]=e;for(var a in o){var c=o[a],f=u.style[c];r[c]=i(c,f)}}else r[t]=i(t,e)}}function o(t){var e=[];for(var i in t)if(!(i in["easing","offset","composite"])){var n=t[i];Array.isArray(n)||(n=[n]);for(var r,o=n.length,a=0;a<o;a++)r={},"offset"in t?r.offset=t.offset:1==o?r.offset=1:r.offset=a/(o-1),"easing"in t&&(r.easing=t.easing),"composite"in t&&(r.composite=t.composite),r[i]=n[a],e.push(r)}return e.sort(function(t,e){return t.offset-e.offset}),e}function a(e){function i(){var t=n.length;null==n[t-1].offset&&(n[t-1].offset=1),t>1&&null==n[0].offset&&(n[0].offset=0);for(var e=0,i=n[0].offset,r=1;r<t;r++){var o=n[r].offset;if(null!=o){for(var a=1;a<r-e;a++)n[e+a].offset=i+(o-i)*a/(r-e);e=r,i=o}}}if(null==e)return[];window.Symbol&&Symbol.iterator&&Array.prototype.from&&e[Symbol.iterator]&&(e=Array.from(e)),Array.isArray(e)||(e=o(e));for(var n=e.map(function(e){var i={};for(var n in e){var o=e[n];if("offset"==n){if(null!=o){if(o=Number(o),!isFinite(o))throw new TypeError("Keyframe offsets must be numbers.");if(o<0||o>1)throw new TypeError("Keyframe offsets must be between 0 and 1.")}}else if("composite"==n){if("add"==o||"accumulate"==o)throw{type:DOMException.NOT_SUPPORTED_ERR,name:"NotSupportedError",message:"add compositing is not supported"};if("replace"!=o)throw new TypeError("Invalid composite mode "+o+".")}else o="easing"==n?t.normalizeEasing(o):""+o;r(n,o,i)}return void 0==i.offset&&(i.offset=null),void 0==i.easing&&(i.easing="linear"),i}),a=!0,s=-(1/0),u=0;u<n.length;u++){var c=n[u].offset;if(null!=c){if(c<s)throw new TypeError("Keyframes are not loosely sorted by offset. Sort or specify offsets.");s=c}else a=!1}return n=n.filter(function(t){return t.offset>=0&&t.offset<=1}),a||i(),n}var s={background:["backgroundImage","backgroundPosition","backgroundSize","backgroundRepeat","backgroundAttachment","backgroundOrigin","backgroundClip","backgroundColor"],border:["borderTopColor","borderTopStyle","borderTopWidth","borderRightColor","borderRightStyle","borderRightWidth","borderBottomColor","borderBottomStyle","borderBottomWidth","borderLeftColor","borderLeftStyle","borderLeftWidth"],borderBottom:["borderBottomWidth","borderBottomStyle","borderBottomColor"],borderColor:["borderTopColor","borderRightColor","borderBottomColor","borderLeftColor"],borderLeft:["borderLeftWidth","borderLeftStyle","borderLeftColor"],borderRadius:["borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius"],borderRight:["borderRightWidth","borderRightStyle","borderRightColor"],borderTop:["borderTopWidth","borderTopStyle","borderTopColor"],borderWidth:["borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth"],flex:["flexGrow","flexShrink","flexBasis"],font:["fontFamily","fontSize","fontStyle","fontVariant","fontWeight","lineHeight"],margin:["marginTop","marginRight","marginBottom","marginLeft"],outline:["outlineColor","outlineStyle","outlineWidth"],padding:["paddingTop","paddingRight","paddingBottom","paddingLeft"]},u=document.createElementNS("http://www.w3.org/1999/xhtml","div"),c={thin:"1px",medium:"3px",thick:"5px"},f={borderBottomWidth:c,borderLeftWidth:c,borderRightWidth:c,borderTopWidth:c,fontSize:{"xx-small":"60%","x-small":"75%",small:"89%",medium:"100%",large:"120%","x-large":"150%","xx-large":"200%"},fontWeight:{normal:"400",bold:"700"},outlineWidth:c,textShadow:{none:"0px 0px 0px transparent"},boxShadow:{none:"0px 0px 0px 0px transparent"}};t.convertToArrayForm=o,t.normalizeKeyframes=a}(c,f),function(t){var e={};t.isDeprecated=function(t,i,n,r){var o=r?"are":"is",a=new Date,s=new Date(i);return s.setMonth(s.getMonth()+3),!(a<s&&(t in e||console.warn("Web Animations: "+t+" "+o+" deprecated and will stop working on "+s.toDateString()+". "+n),e[t]=!0,1))},t.deprecated=function(e,i,n,r){var o=r?"are":"is";if(t.isDeprecated(e,i,n,r))throw new Error(e+" "+o+" no longer supported. "+n)}}(c),function(){if(document.documentElement.animate){var a=document.documentElement.animate([],0),b=!0;if(a&&(b=!1,"play|currentTime|pause|reverse|playbackRate|cancel|finish|startTime|playState".split("|").forEach(function(t){void 0===a[t]&&(b=!0)})),!b)return}!function(t,e,i){function n(t){for(var e={},i=0;i<t.length;i++)for(var n in t[i])if("offset"!=n&&"easing"!=n&&"composite"!=n){var r={offset:t[i].offset,easing:t[i].easing,value:t[i][n]};e[n]=e[n]||[],e[n].push(r)}for(var o in e){var a=e[o];if(0!=a[0].offset||1!=a[a.length-1].offset)throw{type:DOMException.NOT_SUPPORTED_ERR,name:"NotSupportedError",message:"Partial keyframes are not supported"}}return e}function r(i){var n=[];for(var r in i)for(var o=i[r],a=0;a<o.length-1;a++){var s=a,u=a+1,c=o[s].offset,f=o[u].offset,l=c,h=f;0==a&&(l=-(1/0),0==f&&(u=s)),a==o.length-2&&(h=1/0,1==c&&(s=u)),n.push({applyFrom:l,applyTo:h,startOffset:o[s].offset,endOffset:o[u].offset,easingFunction:t.parseEasingFunction(o[s].easing),property:r,interpolation:e.propertyInterpolation(r,o[s].value,o[u].value)})}return n.sort(function(t,e){return t.startOffset-e.startOffset}),n}e.convertEffectInput=function(i){var o=t.normalizeKeyframes(i),a=n(o),s=r(a);return function(t,i){if(null!=i)s.filter(function(t){return i>=t.applyFrom&&i<t.applyTo}).forEach(function(n){var r=i-n.startOffset,o=n.endOffset-n.startOffset,a=0==o?0:n.easingFunction(r/o);e.apply(t,n.property,n.interpolation(a))});else for(var n in a)"offset"!=n&&"easing"!=n&&"composite"!=n&&e.clear(t,n)}}}(c,d,f),function(t,e,i){function n(t){return t.replace(/-(.)/g,function(t,e){return e.toUpperCase()})}function r(t,e,i){s[i]=s[i]||[],s[i].push([t,e])}function o(t,e,i){for(var o=0;o<i.length;o++){var a=i[o];r(t,e,n(a))}}function a(i,r,o){var a=i;/-/.test(i)&&!t.isDeprecated("Hyphenated property names","2016-03-22","Use camelCase instead.",!0)&&(a=n(i)),"initial"!=r&&"initial"!=o||("initial"==r&&(r=u[a]),"initial"==o&&(o=u[a]));for(var c=r==o?[]:s[a],f=0;c&&f<c.length;f++){var l=c[f][0](r),h=c[f][0](o);if(void 0!==l&&void 0!==h){var m=c[f][1](l,h);if(m){var d=e.Interpolation.apply(null,m);return function(t){return 0==t?r:1==t?o:d(t)}}}}return e.Interpolation(!1,!0,function(t){return t?o:r})}var s={};e.addPropertiesHandler=o;var u={backgroundColor:"transparent",backgroundPosition:"0% 0%",borderBottomColor:"currentColor",borderBottomLeftRadius:"0px",borderBottomRightRadius:"0px",borderBottomWidth:"3px",borderLeftColor:"currentColor",borderLeftWidth:"3px",borderRightColor:"currentColor",borderRightWidth:"3px",borderSpacing:"2px",borderTopColor:"currentColor",borderTopLeftRadius:"0px",borderTopRightRadius:"0px",borderTopWidth:"3px",bottom:"auto",clip:"rect(0px, 0px, 0px, 0px)",color:"black",fontSize:"100%",fontWeight:"400",height:"auto",left:"auto",letterSpacing:"normal",lineHeight:"120%",marginBottom:"0px",marginLeft:"0px",marginRight:"0px",marginTop:"0px",maxHeight:"none",maxWidth:"none",minHeight:"0px",minWidth:"0px",opacity:"1.0",outlineColor:"invert",outlineOffset:"0px",outlineWidth:"3px",paddingBottom:"0px",paddingLeft:"0px",paddingRight:"0px",paddingTop:"0px",right:"auto",textIndent:"0px",textShadow:"0px 0px 0px transparent",top:"auto",transform:"",verticalAlign:"0px",visibility:"visible",width:"auto",wordSpacing:"normal",zIndex:"auto"};e.propertyInterpolation=a}(c,d,f),function(t,e,i){function n(e){var i=t.calculateActiveDuration(e),n=function(n){return t.calculateIterationProgress(i,n,e)};return n._totalDuration=e.delay+i+e.endDelay,n}e.KeyframeEffect=function(i,r,o,a){var s,u=n(t.normalizeTimingInput(o)),c=e.convertEffectInput(r),f=function(){c(i,s)};return f._update=function(t){return s=u(t),null!==s},f._clear=function(){c(i,null)},f._hasSameTarget=function(t){return i===t},f._target=i,f._totalDuration=u._totalDuration,f._id=a,f},e.NullEffect=function(t){var e=function(){t&&(t(),t=null)};return e._update=function(){return null},e._totalDuration=0,e._hasSameTarget=function(){return!1},e}}(c,d,f),function(t,e){t.apply=function(e,i,n){e.style[t.propertyName(i)]=n},t.clear=function(e,i){e.style[t.propertyName(i)]=""}}(d,f),function(t){window.Element.prototype.animate=function(e,i){var n="";return i&&i.id&&(n=i.id),t.timeline._play(t.KeyframeEffect(this,e,i,n))}}(d),function(t,e){function i(t,e,n){if("number"==typeof t&&"number"==typeof e)return t*(1-n)+e*n;if("boolean"==typeof t&&"boolean"==typeof e)return n<.5?t:e;if(t.length==e.length){for(var r=[],o=0;o<t.length;o++)r.push(i(t[o],e[o],n));return r}throw"Mismatched interpolation arguments "+t+":"+e}t.Interpolation=function(t,e,n){return function(r){return n(i(t,e,r))}}}(d,f),function(t,e,i){t.sequenceNumber=0;var n=function(t,e,i){this.target=t,this.currentTime=e,this.timelineTime=i,this.type="finish",this.bubbles=!1,this.cancelable=!1,this.currentTarget=t,this.defaultPrevented=!1,this.eventPhase=Event.AT_TARGET,this.timeStamp=Date.now()};e.Animation=function(e){this.id="",e&&e._id&&(this.id=e._id),this._sequenceNumber=t.sequenceNumber++,this._currentTime=0,this._startTime=null,this._paused=!1,this._playbackRate=1,this._inTimeline=!0,this._finishedFlag=!0,this.onfinish=null,this._finishHandlers=[],this._effect=e,this._inEffect=this._effect._update(0),this._idle=!0,this._currentTimePending=!1},e.Animation.prototype={_ensureAlive:function(){this.playbackRate<0&&0===this.currentTime?this._inEffect=this._effect._update(-1):this._inEffect=this._effect._update(this.currentTime),this._inTimeline||!this._inEffect&&this._finishedFlag||(this._inTimeline=!0,e.timeline._animations.push(this))},_tickCurrentTime:function(t,e){t!=this._currentTime&&(this._currentTime=t,this._isFinished&&!e&&(this._currentTime=this._playbackRate>0?this._totalDuration:0),this._ensureAlive())},get currentTime(){return this._idle||this._currentTimePending?null:this._currentTime},set currentTime(t){t=+t,isNaN(t)||(e.restart(),this._paused||null==this._startTime||(this._startTime=this._timeline.currentTime-t/this._playbackRate),this._currentTimePending=!1,this._currentTime!=t&&(this._idle&&(this._idle=!1,this._paused=!0),this._tickCurrentTime(t,!0),e.applyDirtiedAnimation(this)))},get startTime(){return this._startTime},set startTime(t){t=+t,isNaN(t)||this._paused||this._idle||(this._startTime=t,this._tickCurrentTime((this._timeline.currentTime-this._startTime)*this.playbackRate),e.applyDirtiedAnimation(this))},get playbackRate(){return this._playbackRate},set playbackRate(t){if(t!=this._playbackRate){var i=this.currentTime;this._playbackRate=t,this._startTime=null,"paused"!=this.playState&&"idle"!=this.playState&&(this._finishedFlag=!1,this._idle=!1,this._ensureAlive(),e.applyDirtiedAnimation(this)),null!=i&&(this.currentTime=i)}},get _isFinished(){return!this._idle&&(this._playbackRate>0&&this._currentTime>=this._totalDuration||this._playbackRate<0&&this._currentTime<=0)},get _totalDuration(){return this._effect._totalDuration},get playState(){return this._idle?"idle":null==this._startTime&&!this._paused&&0!=this.playbackRate||this._currentTimePending?"pending":this._paused?"paused":this._isFinished?"finished":"running"},_rewind:function(){if(this._playbackRate>=0)this._currentTime=0;else{if(!(this._totalDuration<1/0))throw new DOMException("Unable to rewind negative playback rate animation with infinite duration","InvalidStateError");this._currentTime=this._totalDuration}},play:function(){this._paused=!1,(this._isFinished||this._idle)&&(this._rewind(),this._startTime=null),this._finishedFlag=!1,this._idle=!1,this._ensureAlive(),e.applyDirtiedAnimation(this)},pause:function(){this._isFinished||this._paused||this._idle?this._idle&&(this._rewind(),this._idle=!1):this._currentTimePending=!0,this._startTime=null,this._paused=!0},finish:function(){this._idle||(this.currentTime=this._playbackRate>0?this._totalDuration:0,this._startTime=this._totalDuration-this.currentTime,this._currentTimePending=!1,e.applyDirtiedAnimation(this))},cancel:function(){this._inEffect&&(this._inEffect=!1,this._idle=!0,this._paused=!1,this._isFinished=!0,this._finishedFlag=!0,this._currentTime=0,this._startTime=null,this._effect._update(null),e.applyDirtiedAnimation(this))},reverse:function(){this.playbackRate*=-1,this.play()},addEventListener:function(t,e){"function"==typeof e&&"finish"==t&&this._finishHandlers.push(e)},removeEventListener:function(t,e){if("finish"==t){var i=this._finishHandlers.indexOf(e);i>=0&&this._finishHandlers.splice(i,1)}},_fireEvents:function(t){if(this._isFinished){if(!this._finishedFlag){var e=new n(this,this._currentTime,t),i=this._finishHandlers.concat(this.onfinish?[this.onfinish]:[]);setTimeout(function(){i.forEach(function(t){t.call(e.target,e)})},0),this._finishedFlag=!0}}else this._finishedFlag=!1},_tick:function(t,e){this._idle||this._paused||(null==this._startTime?e&&(this.startTime=t-this._currentTime/this.playbackRate):this._isFinished||this._tickCurrentTime((t-this._startTime)*this.playbackRate)),e&&(this._currentTimePending=!1,this._fireEvents(t))},get _needsTick(){return this.playState in{pending:1,running:1}||!this._finishedFlag},_targetAnimations:function(){var t=this._effect._target;return t._activeAnimations||(t._activeAnimations=[]),t._activeAnimations},_markTarget:function(){var t=this._targetAnimations();t.indexOf(this)===-1&&t.push(this)},_unmarkTarget:function(){var t=this._targetAnimations(),e=t.indexOf(this);e!==-1&&t.splice(e,1)}}}(c,d,f),function(t,e,i){function n(t){var e=c;c=[],t<_.currentTime&&(t=_.currentTime),_._animations.sort(r),_._animations=s(t,!0,_._animations)[0],e.forEach(function(e){e[1](t)}),a(),l=void 0}function r(t,e){return t._sequenceNumber-e._sequenceNumber}function o(){this._animations=[],this.currentTime=window.performance&&performance.now?performance.now():0}function a(){d.forEach(function(t){t()}),d.length=0}function s(t,i,n){p=!0,m=!1;var r=e.timeline;r.currentTime=t,h=!1;var o=[],a=[],s=[],u=[];return n.forEach(function(e){e._tick(t,i),e._inEffect?(a.push(e._effect),e._markTarget()):(o.push(e._effect),e._unmarkTarget()),e._needsTick&&(h=!0);var n=e._inEffect||e._needsTick;e._inTimeline=n,n?s.push(e):u.push(e)}),d.push.apply(d,o),d.push.apply(d,a),h&&requestAnimationFrame(function(){}),p=!1,[s,u]}var u=window.requestAnimationFrame,c=[],f=0;window.requestAnimationFrame=function(t){var e=f++;return 0==c.length&&u(n),c.push([e,t]),e},window.cancelAnimationFrame=function(t){c.forEach(function(e){e[0]==t&&(e[1]=function(){})})},o.prototype={_play:function(i){i._timing=t.normalizeTimingInput(i.timing);var n=new e.Animation(i);return n._idle=!1,n._timeline=this,this._animations.push(n),e.restart(),e.applyDirtiedAnimation(n),n}};var l=void 0,h=!1,m=!1;e.restart=function(){return h||(h=!0,requestAnimationFrame(function(){}),m=!0),m},e.applyDirtiedAnimation=function(t){if(!p){t._markTarget();var i=t._targetAnimations();i.sort(r);var n=s(e.timeline.currentTime,!1,i.slice())[1];n.forEach(function(t){var e=_._animations.indexOf(t);e!==-1&&_._animations.splice(e,1)}),a()}};var d=[],p=!1,_=new o;e.timeline=_}(c,d,f),function(t){function e(t,e){var i=t.exec(e);if(i)return i=t.ignoreCase?i[0].toLowerCase():i[0],[i,e.substr(i.length)]}function i(t,e){e=e.replace(/^\s*/,"");var i=t(e);if(i)return[i[0],i[1].replace(/^\s*/,"")]}function n(t,n,r){t=i.bind(null,t);for(var o=[];;){var a=t(r);if(!a)return[o,r];if(o.push(a[0]),r=a[1],a=e(n,r),!a||""==a[1])return[o,r];r=a[1]}}function r(t,e){for(var i=0,n=0;n<e.length&&(!/\s|,/.test(e[n])||0!=i);n++)if("("==e[n])i++;else if(")"==e[n]&&(i--,0==i&&n++,i<=0))break;var r=t(e.substr(0,n));return void 0==r?void 0:[r,e.substr(n)]}function o(t,e){for(var i=t,n=e;i&&n;)i>n?i%=n:n%=i;return i=t*e/(i+n)}function a(t){return function(e){var i=t(e);return i&&(i[0]=void 0),i}}function s(t,e){return function(i){var n=t(i);return n?n:[e,i]}}function u(e,i){for(var n=[],r=0;r<e.length;r++){var o=t.consumeTrimmed(e[r],i);if(!o||""==o[0])return;void 0!==o[0]&&n.push(o[0]),i=o[1]}if(""==i)return n}function c(t,e,i,n,r){for(var a=[],s=[],u=[],c=o(n.length,r.length),f=0;f<c;f++){var l=e(n[f%n.length],r[f%r.length]);if(!l)return;a.push(l[0]),s.push(l[1]),u.push(l[2])}return[a,s,function(e){var n=e.map(function(t,e){return u[e](t)}).join(i);return t?t(n):n}]}function f(t,e,i){for(var n=[],r=[],o=[],a=0,s=0;s<i.length;s++)if("function"==typeof i[s]){var u=i[s](t[a],e[a++]);n.push(u[0]),r.push(u[1]),o.push(u[2])}else!function(t){n.push(!1),r.push(!1),o.push(function(){return i[t]})}(s);return[n,r,function(t){for(var e="",i=0;i<t.length;i++)e+=o[i](t[i]);return e}]}t.consumeToken=e,t.consumeTrimmed=i,t.consumeRepeated=n,t.consumeParenthesised=r,t.ignore=a,t.optional=s,t.consumeList=u,t.mergeNestedRepeated=c.bind(null,null),t.mergeWrappedNestedRepeated=c,t.mergeList=f}(d),function(t){function e(e){function i(e){var i=t.consumeToken(/^inset/i,e);if(i)return n.inset=!0,i;var i=t.consumeLengthOrPercent(e);if(i)return n.lengths.push(i[0]),i;var i=t.consumeColor(e);return i?(n.color=i[0],i):void 0}var n={inset:!1,lengths:[],color:null},r=t.consumeRepeated(i,/^/,e);if(r&&r[0].length)return[n,r[1]]}function i(i){var n=t.consumeRepeated(e,/^,/,i);if(n&&""==n[1])return n[0]}function n(e,i){for(;e.lengths.length<Math.max(e.lengths.length,i.lengths.length);)e.lengths.push({px:0});for(;i.lengths.length<Math.max(e.lengths.length,i.lengths.length);)i.lengths.push({px:0});if(e.inset==i.inset&&!!e.color==!!i.color){for(var n,r=[],o=[[],0],a=[[],0],s=0;s<e.lengths.length;s++){var u=t.mergeDimensions(e.lengths[s],i.lengths[s],2==s);o[0].push(u[0]),a[0].push(u[1]),r.push(u[2])}if(e.color&&i.color){var c=t.mergeColors(e.color,i.color);o[1]=c[0],a[1]=c[1],n=c[2]}return[o,a,function(t){for(var i=e.inset?"inset ":" ",o=0;o<r.length;o++)i+=r[o](t[0][o])+" ";return n&&(i+=n(t[1])),i}]}}function r(e,i,n,r){function o(t){return{inset:t,color:[0,0,0,0],lengths:[{px:0},{px:0},{px:0},{px:0}]}}for(var a=[],s=[],u=0;u<n.length||u<r.length;u++){var c=n[u]||o(r[u].inset),f=r[u]||o(n[u].inset);a.push(c),s.push(f)}return t.mergeNestedRepeated(e,i,a,s)}var o=r.bind(null,n,", ");t.addPropertiesHandler(i,o,["box-shadow","text-shadow"])}(d),function(t,e){function i(t){return t.toFixed(3).replace(".000","")}function n(t,e,i){return Math.min(e,Math.max(t,i))}function r(t){if(/^\s*[-+]?(\d*\.)?\d+\s*$/.test(t))return Number(t)}function o(t,e){return[t,e,i]}function a(t,e){if(0!=t)return u(0,1/0)(t,e)}function s(t,e){return[t,e,function(t){return Math.round(n(1,1/0,t))}]}function u(t,e){return function(r,o){return[r,o,function(r){return i(n(t,e,r))}]}}function c(t,e){return[t,e,Math.round]}t.clamp=n,t.addPropertiesHandler(r,u(0,1/0),["border-image-width","line-height"]),t.addPropertiesHandler(r,u(0,1),["opacity","shape-image-threshold"]),t.addPropertiesHandler(r,a,["flex-grow","flex-shrink"]),t.addPropertiesHandler(r,s,["orphans","widows"]),t.addPropertiesHandler(r,c,["z-index"]),t.parseNumber=r,t.mergeNumbers=o,t.numberToString=i}(d,f),function(t,e){function i(t,e){if("visible"==t||"visible"==e)return[0,1,function(i){return i<=0?t:i>=1?e:"visible"}]}t.addPropertiesHandler(String,i,["visibility"])}(d),function(t,e){function i(t){t=t.trim(),o.fillStyle="#000",o.fillStyle=t;var e=o.fillStyle;if(o.fillStyle="#fff",o.fillStyle=t,e==o.fillStyle){o.fillRect(0,0,1,1);var i=o.getImageData(0,0,1,1).data;o.clearRect(0,0,1,1);var n=i[3]/255;return[i[0]*n,i[1]*n,i[2]*n,n]}}function n(e,i){return[e,i,function(e){function i(t){return Math.max(0,Math.min(255,t))}if(e[3])for(var n=0;n<3;n++)e[n]=Math.round(i(e[n]/e[3]));return e[3]=t.numberToString(t.clamp(0,1,e[3])),"rgba("+e.join(",")+")"}]}var r=document.createElementNS("http://www.w3.org/1999/xhtml","canvas");r.width=r.height=1;var o=r.getContext("2d");t.addPropertiesHandler(i,n,["background-color","border-bottom-color","border-left-color","border-right-color","border-top-color","color","outline-color","text-decoration-color"]),t.consumeColor=t.consumeParenthesised.bind(null,i),t.mergeColors=n}(d,f),function(a,b){function c(a,b){if(b=b.trim().toLowerCase(),"0"==b&&"px".search(a)>=0)return{px:0};if(/^[^(]*$|^calc/.test(b)){b=b.replace(/calc\(/g,"(");var c={};b=b.replace(a,function(t){return c[t]=null,"U"+t});for(var d="U("+a.source+")",e=b.replace(/[-+]?(\d*\.)?\d+/g,"N").replace(new RegExp("N"+d,"g"),"D").replace(/\s[+-]\s/g,"O").replace(/\s/g,""),f=[/N\*(D)/g,/(N|D)[*\/]N/g,/(N|D)O\1/g,/\((N|D)\)/g],g=0;g<f.length;)f[g].test(e)?(e=e.replace(f[g],"$1"),g=0):g++;if("D"==e){for(var h in c){var i=eval(b.replace(new RegExp("U"+h,"g"),"").replace(new RegExp(d,"g"),"*0"));if(!isFinite(i))return;c[h]=i}return c}}}function d(t,i){return e(t,i,!0)}function e(t,e,i){var n,r=[];for(n in t)r.push(n);for(n in e)r.indexOf(n)<0&&r.push(n);return t=r.map(function(e){return t[e]||0}),e=r.map(function(t){return e[t]||0}),[t,e,function(t){var e=t.map(function(e,n){return 1==t.length&&i&&(e=Math.max(e,0)),a.numberToString(e)+r[n]}).join(" + ");return t.length>1?"calc("+e+")":e}]}var f="px|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc",g=c.bind(null,new RegExp(f,"g")),h=c.bind(null,new RegExp(f+"|%","g")),i=c.bind(null,/deg|rad|grad|turn/g);a.parseLength=g,a.parseLengthOrPercent=h,a.consumeLengthOrPercent=a.consumeParenthesised.bind(null,h),a.parseAngle=i,a.mergeDimensions=e;var j=a.consumeParenthesised.bind(null,g),k=a.consumeRepeated.bind(void 0,j,/^/),l=a.consumeRepeated.bind(void 0,k,/^,/);a.consumeSizePairList=l;var m=function(t){var e=l(t);if(e&&""==e[1])return e[0]},n=a.mergeNestedRepeated.bind(void 0,d," "),o=a.mergeNestedRepeated.bind(void 0,n,",");a.mergeNonNegativeSizePair=n,a.addPropertiesHandler(m,o,["background-size"]),a.addPropertiesHandler(h,d,["border-bottom-width","border-image-width","border-left-width","border-right-width","border-top-width","flex-basis","font-size","height","line-height","max-height","max-width","outline-width","width"]),a.addPropertiesHandler(h,e,["border-bottom-left-radius","border-bottom-right-radius","border-top-left-radius","border-top-right-radius","bottom","left","letter-spacing","margin-bottom","margin-left","margin-right","margin-top","min-height","min-width","outline-offset","padding-bottom","padding-left","padding-right","padding-top","perspective","right","shape-margin","text-indent","top","vertical-align","word-spacing"])}(d,f),function(t,e){function i(e){return t.consumeLengthOrPercent(e)||t.consumeToken(/^auto/,e)}function n(e){var n=t.consumeList([t.ignore(t.consumeToken.bind(null,/^rect/)),t.ignore(t.consumeToken.bind(null,/^\(/)),t.consumeRepeated.bind(null,i,/^,/),t.ignore(t.consumeToken.bind(null,/^\)/))],e);if(n&&4==n[0].length)return n[0]}function r(e,i){return"auto"==e||"auto"==i?[!0,!1,function(n){var r=n?e:i;if("auto"==r)return"auto";var o=t.mergeDimensions(r,r);return o[2](o[0])}]:t.mergeDimensions(e,i)}function o(t){return"rect("+t+")"}var a=t.mergeWrappedNestedRepeated.bind(null,o,r,", ");t.parseBox=n,t.mergeBoxes=a,t.addPropertiesHandler(n,a,["clip"])}(d,f),function(t,e){function i(t){return function(e){var i=0;return t.map(function(t){return t===f?e[i++]:t})}}function n(t){return t}function r(e){if(e=e.toLowerCase().trim(),"none"==e)return[];for(var i,n=/\s*(\w+)\(([^)]*)\)/g,r=[],o=0;i=n.exec(e);){if(i.index!=o)return;o=i.index+i[0].length;var a=i[1],s=m[a];if(!s)return;var u=i[2].split(","),c=s[0];if(c.length<u.length)return;for(var f=[],d=0;d<c.length;d++){var p,_=u[d],g=c[d];if(p=_?{A:function(e){return"0"==e.trim()?h:t.parseAngle(e)},N:t.parseNumber,T:t.parseLengthOrPercent,L:t.parseLength}[g.toUpperCase()](_):{a:h,n:f[0],t:l}[g],void 0===p)return;f.push(p)}if(r.push({t:a,d:f}),n.lastIndex==e.length)return r}}function o(t){return t.toFixed(6).replace(".000000","")}function a(e,i){if(e.decompositionPair!==i){e.decompositionPair=i;var n=t.makeMatrixDecomposition(e)}if(i.decompositionPair!==e){i.decompositionPair=e;var r=t.makeMatrixDecomposition(i)}return null==n[0]||null==r[0]?[[!1],[!0],function(t){return t?i[0].d:e[0].d}]:(n[0].push(0),r[0].push(1),[n,r,function(e){var i=t.quat(n[0][3],r[0][3],e[5]),a=t.composeMatrix(e[0],e[1],e[2],i,e[4]),s=a.map(o).join(",");return s}])}function s(t){return t.replace(/[xy]/,"")}function u(t){return t.replace(/(x|y|z|3d)?$/,"3d")}function c(e,i){var n=t.makeMatrixDecomposition&&!0,r=!1;if(!e.length||!i.length){e.length||(r=!0,e=i,i=[]);for(var o=0;o<e.length;o++){var c=e[o].t,f=e[o].d,l="scale"==c.substr(0,5)?1:0;i.push({t:c,d:f.map(function(t){if("number"==typeof t)return l;var e={};for(var i in t)e[i]=l;return e})})}}var h=function(t,e){return"perspective"==t&&"perspective"==e||("matrix"==t||"matrix3d"==t)&&("matrix"==e||"matrix3d"==e)},d=[],p=[],_=[];if(e.length!=i.length){if(!n)return;var g=a(e,i);d=[g[0]],p=[g[1]],_=[["matrix",[g[2]]]]}else for(var o=0;o<e.length;o++){var c,b=e[o].t,v=i[o].t,y=e[o].d,w=i[o].d,T=m[b],E=m[v];if(h(b,v)){if(!n)return;var g=a([e[o]],[i[o]]);d.push(g[0]),p.push(g[1]),_.push(["matrix",[g[2]]])}else{if(b==v)c=b;else if(T[2]&&E[2]&&s(b)==s(v))c=s(b),y=T[2](y),w=E[2](w);else{if(!T[1]||!E[1]||u(b)!=u(v)){if(!n)return;var g=a(e,i);d=[g[0]],p=[g[1]],_=[["matrix",[g[2]]]];break}c=u(b),y=T[1](y),w=E[1](w)}for(var x=[],A=[],P=[],j=0;j<y.length;j++){var R="number"==typeof y[j]?t.mergeNumbers:t.mergeDimensions,g=R(y[j],w[j]);x[j]=g[0],A[j]=g[1],P.push(g[2])}d.push(x),p.push(A),_.push([c,P])}}if(r){var N=d;d=p,p=N}return[d,p,function(t){return t.map(function(t,e){var i=t.map(function(t,i){return _[e][1][i](t)}).join(",");return"matrix"==_[e][0]&&16==i.split(",").length&&(_[e][0]="matrix3d"),_[e][0]+"("+i+")"}).join(" ")}]}var f=null,l={px:0},h={deg:0},m={matrix:["NNNNNN",[f,f,0,0,f,f,0,0,0,0,1,0,f,f,0,1],n],matrix3d:["NNNNNNNNNNNNNNNN",n],rotate:["A"],rotatex:["A"],rotatey:["A"],rotatez:["A"],rotate3d:["NNNA"],perspective:["L"],scale:["Nn",i([f,f,1]),n],scalex:["N",i([f,1,1]),i([f,1])],scaley:["N",i([1,f,1]),i([1,f])],scalez:["N",i([1,1,f])],scale3d:["NNN",n],skew:["Aa",null,n],skewx:["A",null,i([f,h])],skewy:["A",null,i([h,f])],translate:["Tt",i([f,f,l]),n],translatex:["T",i([f,l,l]),i([f,l])],translatey:["T",i([l,f,l]),i([l,f])],translatez:["L",i([l,l,f])],translate3d:["TTL",n]};t.addPropertiesHandler(r,c,["transform"])}(d,f),function(t,e){function i(t,e){e.concat([t]).forEach(function(e){e in document.documentElement.style&&(n[t]=e)})}var n={};i("transform",["webkitTransform","msTransform"]),i("transformOrigin",["webkitTransformOrigin"]),i("perspective",["webkitPerspective"]),i("perspectiveOrigin",["webkitPerspectiveOrigin"]),t.propertyName=function(t){return n[t]||t}}(d,f)}(),!function(){if(void 0===document.createElement("div").animate([]).oncancel){var t;if(window.performance&&performance.now)var t=function(){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){}}(c,e,f),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<this.effect.children.length;e++)this.effect.children[e]._animation=t,this._childAnimations[e]._setExternalAnimation(t)},_constructChildAnimations:function(){if(this.effect&&this._isGroup){var t=this.effect._timing.delay;this._removeChildAnimations(),this.effect.children.forEach(function(i){var n=e.timeline._play(i);this._childAnimations.push(n),n.playbackRate=this.playbackRate,this._paused&&n.pause(),i._animation=this.effect._animation,this._arrangeChildren(n,t),this.effect instanceof window.SequenceEffect&&(t+=e.groupChildDuration(i))}.bind(this))}},_arrangeChildren:function(t,e){null===this.startTime?t.currentTime=this.currentTime-e/this.playbackRate:t.startTime!==this.startTime+e/this.playbackRate&&(t.startTime=this.startTime+e/this.playbackRate)},get timeline(){return this._timeline},get playState(){return this._animation?this._animation.playState:"idle"},get finished(){return window.Promise?(this._finishedPromise||(e.animationsWithPromises.indexOf(this)==-1&&e.animationsWithPromises.push(this),this._finishedPromise=new Promise(function(t,e){this._resolveFinishedPromise=function(){t(this)},this._rejectFinishedPromise=function(){e({type:DOMException.ABORT_ERR,name:"AbortError"})}}.bind(this)),"finished"==this.playState&&this._resolveFinishedPromise()),this._finishedPromise):(console.warn("Animation Promises require JavaScript Promise constructor"),null)},get ready(){return window.Promise?(this._readyPromise||(e.animationsWithPromises.indexOf(this)==-1&&e.animationsWithPromises.push(this),this._readyPromise=new Promise(function(t,e){this._resolveReadyPromise=function(){t(this)},this._rejectReadyPromise=function(){e({type:DOMException.ABORT_ERR,name:"AbortError"})}}.bind(this)),"pending"!==this.playState&&this._resolveReadyPromise()),this._readyPromise):(console.warn("Animation Promises require JavaScript Promise constructor"),null)},get onfinish(){return this._animation.onfinish},set onfinish(t){"function"==typeof t?this._animation.onfinish=function(e){e.target=this,t.call(this,e)}.bind(this):this._animation.onfinish=t},get oncancel(){return this._animation.oncancel},set oncancel(t){"function"==typeof t?this._animation.oncancel=function(e){e.target=this,t.call(this,e)}.bind(this):this._animation.oncancel=t},get currentTime(){this._updatePromises();var t=this._animation.currentTime;return this._updatePromises(),t},set currentTime(t){this._updatePromises(),this._animation.currentTime=isFinite(t)?t:Math.sign(t)*Number.MAX_VALUE,this._register(),this._forEachChild(function(e,i){e.currentTime=t-i}),this._updatePromises()},get startTime(){return this._animation.startTime},set startTime(t){this._updatePromises(),this._animation.startTime=isFinite(t)?t:Math.sign(t)*Number.MAX_VALUE,this._register(),this._forEachChild(function(e,i){e.startTime=t+i}),this._updatePromises()},get playbackRate(){return this._animation.playbackRate},set playbackRate(t){this._updatePromises();var e=this.currentTime;this._animation.playbackRate=t,this._forEachChild(function(e){e.playbackRate=t}),null!==e&&(this.currentTime=e),this._updatePromises()},play:function(){this._updatePromises(),this._paused=!1,this._animation.play(),this._timeline._animations.indexOf(this)==-1&&this._timeline._animations.push(this),this._register(),e.awaitStartTime(this),this._forEachChild(function(t){var e=t.currentTime;t.play(),t.currentTime=e}),this._updatePromises()},pause:function(){this._updatePromises(),this.currentTime&&(this._holdTime=this.currentTime),this._animation.pause(),this._register(),this._forEachChild(function(t){t.pause()}),this._paused=!0,this._updatePromises()},finish:function(){this._updatePromises(),this._animation.finish(),this._register(),this._updatePromises()},cancel:function(){this._updatePromises(),this._animation.cancel(),this._register(),this._removeChildAnimations(),this._updatePromises()},reverse:function(){this._updatePromises();var t=this.currentTime;this._animation.reverse(),this._forEachChild(function(t){t.reverse()}),null!==t&&(this.currentTime=t),this._updatePromises()},addEventListener:function(t,e){var i=e;"function"==typeof e&&(i=function(t){t.target=this,e.call(this,t)}.bind(this),e._wrapper=i),this._animation.addEventListener(t,i)},removeEventListener:function(t,e){this._animation.removeEventListener(t,e&&e._wrapper||e)},_removeChildAnimations:function(){for(;this._childAnimations.length;)this._childAnimations.pop().cancel()},_forEachChild:function(e){var i=0;if(this.effect.children&&this._childAnimations.length<this.effect.children.length&&this._constructChildAnimations(),this._childAnimations.forEach(function(t){e.call(this,t,i),this.effect instanceof window.SequenceEffect&&(i+=t.effect.activeDuration)}.bind(this)),"pending"!=this.playState){var n=this.effect._timing,r=this.currentTime;null!==r&&(r=t.calculateIterationProgress(t.calculateActiveDuration(n),r,n)),(null==r||isNaN(r))&&this._removeChildAnimations()}}},window.Animation=e.Animation}(c,e,f),function(t,e,i){function n(e){this._frames=t.normalizeKeyframes(e)}function r(){for(var t=!1;u.length;){var e=u.shift();e._updateChildren(),t=!0}return t}var o=function(t){if(t._animation=void 0,t instanceof window.SequenceEffect||t instanceof window.GroupEffect)for(var e=0;e<t.children.length;e++)o(t.children[e])};e.removeMulti=function(t){for(var e=[],i=0;i<t.length;i++){var n=t[i];n._parent?(e.indexOf(n._parent)==-1&&e.push(n._parent),n._parent.children.splice(n._parent.children.indexOf(n),1),n._parent=null,o(n)):n._animation&&n._animation.effect==n&&(n._animation.cancel(),n._animation.effect=new KeyframeEffect(null,[]),n._animation._callback&&(n._animation._callback._animation=null),n._animation._rebuildUnderlyingAnimation(),o(n))}for(i=0;i<e.length;i++)e[i]._rebuild()},e.KeyframeEffect=function(e,i,r,o){return this.target=e,this._parent=null,r=t.numericTimingToObject(r),this._timingInput=t.cloneTimingInput(r),this._timing=t.normalizeTimingInput(r),this.timing=t.makeTiming(r,!1,this),this.timing._effect=this,"function"==typeof i?(t.deprecated("Custom KeyframeEffect","2015-06-22","Use KeyframeEffect.onsample instead."),this._normalizedKeyframes=i):this._normalizedKeyframes=new n(i),this._keyframes=i,this.activeDuration=t.calculateActiveDuration(this._timing),this._id=o,this},e.KeyframeEffect.prototype={getFrames:function(){return"function"==typeof this._normalizedKeyframes?this._normalizedKeyframes:this._normalizedKeyframes._frames},set onsample(t){if("function"==typeof this.getFrames())throw new Error("Setting onsample on custom effect KeyframeEffect is not supported.");this._onsample=t,this._animation&&this._animation._rebuildUnderlyingAnimation()},get parent(){return this._parent},clone:function(){if("function"==typeof this.getFrames())throw new Error("Cloning custom effects is not supported.");var e=new KeyframeEffect(this.target,[],t.cloneTimingInput(this._timingInput),this._id);return e._normalizedKeyframes=this._normalizedKeyframes,e._keyframes=this._keyframes,e},remove:function(){e.removeMulti([this])}};var a=Element.prototype.animate;Element.prototype.animate=function(t,i){var n="";return i&&i.id&&(n=i.id),e.timeline._play(new e.KeyframeEffect(this,t,i,n))};var s=document.createElementNS("http://www.w3.org/1999/xhtml","div");e.newUnderlyingAnimationForKeyframeEffect=function(t){if(t){var e=t.target||s,i=t._keyframes;"function"==typeof i&&(i=[]);var n=t._timingInput;n.id=t._id}else var e=s,i=[],n=0;return a.apply(e,[i,n])},e.bindAnimationForKeyframeEffect=function(t){t.effect&&"function"==typeof t.effect._normalizedKeyframes&&e.bindAnimationForCustomEffect(t)};var u=[];e.awaitStartTime=function(t){null===t.startTime&&t._isGroup&&(0==u.length&&requestAnimationFrame(r),u.push(t))};var c=window.getComputedStyle;Object.defineProperty(window,"getComputedStyle",{configurable:!0,enumerable:!0,value:function(){e.timeline._updateAnimationsPromises();var t=c.apply(this,arguments);return r()&&(t=c.apply(this,arguments)),e.timeline._updateAnimationsPromises(),t}}),window.KeyframeEffect=e.KeyframeEffect,window.Element.prototype.getAnimations=function(){return document.timeline.getAnimations().filter(function(t){return null!==t.effect&&t.effect.target==this}.bind(this))}}(c,e,f),function(t,e,i){function n(t){t._registered||(t._registered=!0,a.push(t),s||(s=!0,requestAnimationFrame(r)))}function r(t){var e=a;a=[],e.sort(function(t,e){return t._sequenceNumber-e._sequenceNumber}),e=e.filter(function(t){t();var e=t._animation?t._animation.playState:"idle";return"running"!=e&&"pending"!=e&&(t._registered=!1),t._registered}),a.push.apply(a,e),a.length?(s=!0,requestAnimationFrame(r)):s=!1}var o=(document.createElementNS("http://www.w3.org/1999/xhtml","div"),0);e.bindAnimationForCustomEffect=function(e){var i,r=e.effect.target,a="function"==typeof e.effect.getFrames();i=a?e.effect.getFrames():e.effect._onsample;var s=e.effect.timing,u=null;s=t.normalizeTimingInput(s);var c=function(){var n=c._animation?c._animation.currentTime:null;null!==n&&(n=t.calculateIterationProgress(t.calculateActiveDuration(s),n,s),isNaN(n)&&(n=null)),n!==u&&(a?i(n,r,e.effect):i(n,e.effect,e.effect._animation)),u=n};c._animation=e,c._registered=!1,c._sequenceNumber=o++,e._callback=c,n(c)};var a=[],s=!1;e.Animation.prototype._register=function(){this._callback&&n(this._callback)}}(c,e,f),function(t,e,i){function n(t){return t._timing.delay+t.activeDuration+t._timing.endDelay}function r(e,i,n){this._id=n,this._parent=null,this.children=e||[],this._reparent(this.children),i=t.numericTimingToObject(i),this._timingInput=t.cloneTimingInput(i),this._timing=t.normalizeTimingInput(i,!0),this.timing=t.makeTiming(i,!0,this),this.timing._effect=this,"auto"===this._timing.duration&&(this._timing.duration=this.activeDuration)}window.SequenceEffect=function(){r.apply(this,arguments)},window.GroupEffect=function(){r.apply(this,arguments)},r.prototype={_isAncestor:function(t){for(var e=this;null!==e;){if(e==t)return!0;e=e._parent}return!1},_rebuild:function(){for(var t=this;t;)"auto"===t.timing.duration&&(t._timing.duration=t.activeDuration),t=t._parent;this._animation&&this._animation._rebuildUnderlyingAnimation()},_reparent:function(t){e.removeMulti(t);for(var i=0;i<t.length;i++)t[i]._parent=this},_putChild:function(t,e){for(var i=e?"Cannot append an ancestor or self":"Cannot prepend an ancestor or self",n=0;n<t.length;n++)if(this._isAncestor(t[n]))throw{type:DOMException.HIERARCHY_REQUEST_ERR,name:"HierarchyRequestError",message:i};for(var n=0;n<t.length;n++)e?this.children.push(t[n]):this.children.unshift(t[n]);this._reparent(t),this._rebuild()},append:function(){this._putChild(arguments,!0)},prepend:function(){this._putChild(arguments,!1)},get parent(){return this._parent},get firstChild(){return this.children.length?this.children[0]:null},get lastChild(){return this.children.length?this.children[this.children.length-1]:null},clone:function(){for(var e=t.cloneTimingInput(this._timingInput),i=[],n=0;n<this.children.length;n++)i.push(this.children[n].clone());return this instanceof GroupEffect?new GroupEffect(i,e):new SequenceEffect(i,e)},remove:function(){e.removeMulti([this])}},window.SequenceEffect.prototype=Object.create(r.prototype),Object.defineProperty(window.SequenceEffect.prototype,"activeDuration",{get:function(){var t=0;return this.children.forEach(function(e){t+=n(e)}),Math.max(t,0)}}),window.GroupEffect.prototype=Object.create(r.prototype),Object.defineProperty(window.GroupEffect.prototype,"activeDuration",{get:function(){var t=0;return this.children.forEach(function(e){t=Math.max(t,n(e))}),t}}),e.newUnderlyingAnimationForGroup=function(i){var n,r=null,o=function(e){var i=n._wrapper;if(i&&"pending"!=i.playState&&i.effect)return null==e?void i._removeChildAnimations():0==e&&i.playbackRate<0&&(r||(r=t.normalizeTimingInput(i.effect.timing)),e=t.calculateIterationProgress(t.calculateActiveDuration(r),-1,r),isNaN(e)||null==e)?(i._forEachChild(function(t){t.currentTime=-1}),void i._removeChildAnimations()):void 0},a=new KeyframeEffect(null,[],i._timing,i._id);return a.onsample=o,n=e.timeline._play(a)},e.bindAnimationForGroup=function(t){t._animation._wrapper=t,t._isGroup=!0,e.awaitStartTime(t),t._constructChildAnimations(),t._setExternalAnimation(t)},e.groupChildDuration=n}(c,e,f),b.true=a}({},function(){return this}())</script><script>Polymer({is:"opaque-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(e){var i=e.node;return this._effect=new KeyframeEffect(i,[{opacity:"1"},{opacity:"1"}],this.timingFromConfig(e)),i.style.opacity="0",this._effect},complete:function(e){e.node.style.opacity=""}})</script><script>!function(){"use strict";var e={pageX:0,pageY:0},t=null,l=[];Polymer.IronDropdownScrollManager={get currentLockingElement(){return this._lockingElements[this._lockingElements.length-1]},elementIsScrollLocked:function(e){var t=this.currentLockingElement;if(void 0===t)return!1;var l;return!!this._hasCachedLockedElement(e)||!this._hasCachedUnlockedElement(e)&&(l=!!t&&t!==e&&!this._composedTreeContains(t,e),l?this._lockedElementCache.push(e):this._unlockedElementCache.push(e),l)},pushScrollLock:function(e){this._lockingElements.indexOf(e)>=0||(0===this._lockingElements.length&&this._lockScrollInteractions(),this._lockingElements.push(e),this._lockedElementCache=[],this._unlockedElementCache=[])},removeScrollLock:function(e){var t=this._lockingElements.indexOf(e);t!==-1&&(this._lockingElements.splice(t,1),this._lockedElementCache=[],this._unlockedElementCache=[],0===this._lockingElements.length&&this._unlockScrollInteractions())},_lockingElements:[],_lockedElementCache:null,_unlockedElementCache:null,_hasCachedLockedElement:function(e){return this._lockedElementCache.indexOf(e)>-1},_hasCachedUnlockedElement:function(e){return this._unlockedElementCache.indexOf(e)>-1},_composedTreeContains:function(e,t){var l,n,o,r;if(e.contains(t))return!0;for(l=Polymer.dom(e).querySelectorAll("content"),o=0;o<l.length;++o)for(n=Polymer.dom(l[o]).getDistributedNodes(),r=0;r<n.length;++r)if(this._composedTreeContains(n[r],t))return!0;return!1},_scrollInteractionHandler:function(t){if(t.cancelable&&this._shouldPreventScrolling(t)&&t.preventDefault(),t.targetTouches){var l=t.targetTouches[0];e.pageX=l.pageX,e.pageY=l.pageY}},_lockScrollInteractions:function(){this._boundScrollHandler=this._boundScrollHandler||this._scrollInteractionHandler.bind(this),document.addEventListener("wheel",this._boundScrollHandler,!0),document.addEventListener("mousewheel",this._boundScrollHandler,!0),document.addEventListener("DOMMouseScroll",this._boundScrollHandler,!0),document.addEventListener("touchstart",this._boundScrollHandler,!0),document.addEventListener("touchmove",this._boundScrollHandler,!0)},_unlockScrollInteractions:function(){document.removeEventListener("wheel",this._boundScrollHandler,!0),document.removeEventListener("mousewheel",this._boundScrollHandler,!0),document.removeEventListener("DOMMouseScroll",this._boundScrollHandler,!0),document.removeEventListener("touchstart",this._boundScrollHandler,!0),document.removeEventListener("touchmove",this._boundScrollHandler,!0)},_shouldPreventScrolling:function(e){var n=Polymer.dom(e).rootTarget;if("touchmove"!==e.type&&t!==n&&(t=n,l=this._getScrollableNodes(Polymer.dom(e).path)),!l.length)return!0;if("touchstart"===e.type)return!1;var o=this._getScrollInfo(e);return!this._getScrollingNode(l,o.deltaX,o.deltaY)},_getScrollableNodes:function(e){for(var t=[],l=e.indexOf(this.currentLockingElement),n=0;n<=l;n++)if(e[n].nodeType===Node.ELEMENT_NODE){var o=e[n],r=o.style;"scroll"!==r.overflow&&"auto"!==r.overflow&&(r=window.getComputedStyle(o)),"scroll"!==r.overflow&&"auto"!==r.overflow||t.push(o)}return t},_getScrollingNode:function(e,t,l){if(t||l)for(var n=Math.abs(l)>=Math.abs(t),o=0;o<e.length;o++){var r=e[o],c=!1;if(c=n?l<0?r.scrollTop>0:r.scrollTop<r.scrollHeight-r.clientHeight:t<0?r.scrollLeft>0:r.scrollLeft<r.scrollWidth-r.clientWidth)return r}},_getScrollInfo:function(t){var l={deltaX:t.deltaX,deltaY:t.deltaY};if("deltaX"in t);else if("wheelDeltaX"in t)l.deltaX=-t.wheelDeltaX,l.deltaY=-t.wheelDeltaY;else if("axis"in t)l.deltaX=1===t.axis?t.detail:0,l.deltaY=2===t.axis?t.detail:0;else if(t.targetTouches){var n=t.targetTouches[0];l.deltaX=e.pageX-n.pageX,l.deltaY=e.pageY-n.pageY}return l}}}()</script><dom-module id="iron-dropdown" assetpath="../bower_components/iron-dropdown/"><template><style>:host{position:fixed}#contentWrapper ::content>*{overflow:auto}#contentWrapper.animating ::content>*{overflow:hidden}</style><div id="contentWrapper"><content id="content" select=".dropdown-content"></content></div></template><script>!function(){"use strict";Polymer({is:"iron-dropdown",behaviors:[Polymer.IronControlState,Polymer.IronA11yKeysBehavior,Polymer.IronOverlayBehavior,Polymer.NeonAnimationRunnerBehavior],properties:{horizontalAlign:{type:String,value:"left",reflectToAttribute:!0},verticalAlign:{type:String,value:"top",reflectToAttribute:!0},openAnimationConfig:{type:Object},closeAnimationConfig:{type:Object},focusTarget:{type:Object},noAnimations:{type:Boolean,value:!1},allowOutsideScroll:{type:Boolean,value:!1},_boundOnCaptureScroll:{type:Function,value:function(){return this._onCaptureScroll.bind(this)}}},listeners:{"neon-animation-finish":"_onNeonAnimationFinish"},observers:["_updateOverlayPosition(positionTarget, verticalAlign, horizontalAlign, verticalOffset, horizontalOffset)"],get containedElement(){return Polymer.dom(this.$.content).getDistributedNodes()[0]},get _focusTarget(){return this.focusTarget||this.containedElement},ready:function(){this._scrollTop=0,this._scrollLeft=0,this._refitOnScrollRAF=null},attached:function(){this.sizingTarget&&this.sizingTarget!==this||(this.sizingTarget=this.containedElement||this)},detached:function(){this.cancelAnimation(),document.removeEventListener("scroll",this._boundOnCaptureScroll),Polymer.IronDropdownScrollManager.removeScrollLock(this)},_openedChanged:function(){this.opened&&this.disabled?this.cancel():(this.cancelAnimation(),this._updateAnimationConfig(),this._saveScrollPosition(),this.opened?(document.addEventListener("scroll",this._boundOnCaptureScroll),!this.allowOutsideScroll&&Polymer.IronDropdownScrollManager.pushScrollLock(this)):(document.removeEventListener("scroll",this._boundOnCaptureScroll),Polymer.IronDropdownScrollManager.removeScrollLock(this)),Polymer.IronOverlayBehaviorImpl._openedChanged.apply(this,arguments))},_renderOpened:function(){!this.noAnimations&&this.animationConfig.open?(this.$.contentWrapper.classList.add("animating"),this.playAnimation("open")):Polymer.IronOverlayBehaviorImpl._renderOpened.apply(this,arguments)},_renderClosed:function(){!this.noAnimations&&this.animationConfig.close?(this.$.contentWrapper.classList.add("animating"),this.playAnimation("close")):Polymer.IronOverlayBehaviorImpl._renderClosed.apply(this,arguments)},_onNeonAnimationFinish:function(){this.$.contentWrapper.classList.remove("animating"),this.opened?this._finishRenderOpened():this._finishRenderClosed()},_onCaptureScroll:function(){this.allowOutsideScroll?(this._refitOnScrollRAF&&window.cancelAnimationFrame(this._refitOnScrollRAF),this._refitOnScrollRAF=window.requestAnimationFrame(this.refit.bind(this))):this._restoreScrollPosition()},_saveScrollPosition:function(){document.scrollingElement?(this._scrollTop=document.scrollingElement.scrollTop,this._scrollLeft=document.scrollingElement.scrollLeft):(this._scrollTop=Math.max(document.documentElement.scrollTop,document.body.scrollTop),this._scrollLeft=Math.max(document.documentElement.scrollLeft,document.body.scrollLeft))},_restoreScrollPosition:function(){document.scrollingElement?(document.scrollingElement.scrollTop=this._scrollTop,document.scrollingElement.scrollLeft=this._scrollLeft):(document.documentElement.scrollTop=this._scrollTop,document.documentElement.scrollLeft=this._scrollLeft,document.body.scrollTop=this._scrollTop,document.body.scrollLeft=this._scrollLeft)},_updateAnimationConfig:function(){for(var o=this.containedElement,t=[].concat(this.openAnimationConfig||[]).concat(this.closeAnimationConfig||[]),n=0;n<t.length;n++)t[n].node=o;this.animationConfig={open:this.openAnimationConfig,close:this.closeAnimationConfig}},_updateOverlayPosition:function(){this.isAttached&&this.notifyResize()},_applyFocus:function(){var o=this.focusTarget||this.containedElement;o&&this.opened&&!this.noAutoFocus?o.focus():Polymer.IronOverlayBehaviorImpl._applyFocus.apply(this,arguments)}})}()</script></dom-module><script>Polymer({is:"fade-in-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(i){var e=i.node;return this._effect=new KeyframeEffect(e,[{opacity:"0"},{opacity:"1"}],this.timingFromConfig(i)),this._effect}})</script><script>Polymer({is:"fade-out-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(e){var i=e.node;return this._effect=new KeyframeEffect(i,[{opacity:"1"},{opacity:"0"}],this.timingFromConfig(e)),this._effect}})</script><script>Polymer({is:"paper-menu-grow-height-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(e){var i=e.node,t=i.getBoundingClientRect(),n=t.height;return this._effect=new KeyframeEffect(i,[{height:n/2+"px"},{height:n+"px"}],this.timingFromConfig(e)),this._effect}}),Polymer({is:"paper-menu-grow-width-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(e){var i=e.node,t=i.getBoundingClientRect(),n=t.width;return this._effect=new KeyframeEffect(i,[{width:n/2+"px"},{width:n+"px"}],this.timingFromConfig(e)),this._effect}}),Polymer({is:"paper-menu-shrink-width-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(e){var i=e.node,t=i.getBoundingClientRect(),n=t.width;return this._effect=new KeyframeEffect(i,[{width:n+"px"},{width:n-n/20+"px"}],this.timingFromConfig(e)),this._effect}}),Polymer({is:"paper-menu-shrink-height-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(e){var i=e.node,t=i.getBoundingClientRect(),n=t.height;t.top;return this.setPrefixedProperty(i,"transformOrigin","0 0"),this._effect=new KeyframeEffect(i,[{height:n+"px",transform:"translateY(0)"},{height:n/2+"px",transform:"translateY(-20px)"}],this.timingFromConfig(e)),this._effect}})</script><dom-module id="paper-menu-button" assetpath="../bower_components/paper-menu-button/"><template><style>:host{display:inline-block;position:relative;padding:8px;outline:0;@apply(--paper-menu-button)}:host([disabled]){cursor:auto;color:var(--disabled-text-color);@apply(--paper-menu-button-disabled)}iron-dropdown{@apply(--paper-menu-button-dropdown)}.dropdown-content{@apply(--shadow-elevation-2dp);position:relative;border-radius:2px;background-color:var(--paper-menu-button-dropdown-background,--primary-background-color);@apply(--paper-menu-button-content)}:host([vertical-align=top]) .dropdown-content{margin-bottom:20px;margin-top:-10px;top:10px}:host([vertical-align=bottom]) .dropdown-content{bottom:10px;margin-bottom:-10px;margin-top:20px}#trigger{cursor:pointer}</style><div id="trigger" on-tap="toggle"><content select=".dropdown-trigger"></content></div><iron-dropdown id="dropdown" opened="{{opened}}" horizontal-align="[[horizontalAlign]]" vertical-align="[[verticalAlign]]" dynamic-align="[[dynamicAlign]]" horizontal-offset="[[horizontalOffset]]" vertical-offset="[[verticalOffset]]" no-overlap="[[noOverlap]]" open-animation-config="[[openAnimationConfig]]" close-animation-config="[[closeAnimationConfig]]" no-animations="[[noAnimations]]" focus-target="[[_dropdownContent]]" allow-outside-scroll="[[allowOutsideScroll]]" restore-focus-on-close="[[restoreFocusOnClose]]" on-iron-overlay-canceled="__onIronOverlayCanceled"><div class="dropdown-content"><content id="content" select=".dropdown-content"></content></div></iron-dropdown></template><script>!function(){"use strict";var e={ANIMATION_CUBIC_BEZIER:"cubic-bezier(.3,.95,.5,1)",MAX_ANIMATION_TIME_MS:400},n=Polymer({is:"paper-menu-button",behaviors:[Polymer.IronA11yKeysBehavior,Polymer.IronControlState],properties:{opened:{type:Boolean,value:!1,notify:!0,observer:"_openedChanged"},horizontalAlign:{type:String,value:"left",reflectToAttribute:!0},verticalAlign:{type:String,value:"top",reflectToAttribute:!0},dynamicAlign:{type:Boolean},horizontalOffset:{type:Number,value:0,notify:!0},verticalOffset:{type:Number,value:0,notify:!0},noOverlap:{type:Boolean},noAnimations:{type:Boolean,value:!1},ignoreSelect:{type:Boolean,value:!1},closeOnActivate:{type:Boolean,value:!1},openAnimationConfig:{type:Object,value:function(){return[{name:"fade-in-animation",timing:{delay:100,duration:200}},{name:"paper-menu-grow-width-animation",timing:{delay:100,duration:150,easing:e.ANIMATION_CUBIC_BEZIER}},{name:"paper-menu-grow-height-animation",timing:{delay:100,duration:275,easing:e.ANIMATION_CUBIC_BEZIER}}]}},closeAnimationConfig:{type:Object,value:function(){return[{name:"fade-out-animation",timing:{duration:150}},{name:"paper-menu-shrink-width-animation",timing:{delay:100,duration:50,easing:e.ANIMATION_CUBIC_BEZIER}},{name:"paper-menu-shrink-height-animation",timing:{duration:200,easing:"ease-in"}}]}},allowOutsideScroll:{type:Boolean,value:!1},restoreFocusOnClose:{type:Boolean,value:!0},_dropdownContent:{type:Object}},hostAttributes:{role:"group","aria-haspopup":"true"},listeners:{"iron-activate":"_onIronActivate","iron-select":"_onIronSelect"},get contentElement(){return Polymer.dom(this.$.content).getDistributedNodes()[0]},toggle:function(){this.opened?this.close():this.open()},open:function(){this.disabled||this.$.dropdown.open()},close:function(){this.$.dropdown.close()},_onIronSelect:function(e){this.ignoreSelect||this.close()},_onIronActivate:function(e){this.closeOnActivate&&this.close()},_openedChanged:function(e,n){e?(this._dropdownContent=this.contentElement,this.fire("paper-dropdown-open")):null!=n&&this.fire("paper-dropdown-close")},_disabledChanged:function(e){Polymer.IronControlState._disabledChanged.apply(this,arguments),e&&this.opened&&this.close()},__onIronOverlayCanceled:function(e){var n=e.detail,t=(Polymer.dom(n).rootTarget,this.$.trigger),o=Polymer.dom(n).path;o.indexOf(t)>-1&&e.preventDefault()}});Object.keys(e).forEach(function(t){n[t]=e[t]}),Polymer.PaperMenuButton=n}()</script></dom-module><iron-iconset-svg name="paper-dropdown-menu" size="24"><svg><defs><g id="arrow-drop-down"><path d="M7 10l5 5 5-5z"></path></g></defs></svg></iron-iconset-svg><dom-module id="paper-dropdown-menu-shared-styles" assetpath="../bower_components/paper-dropdown-menu/"><template><style>:host{display:inline-block;position:relative;text-align:left;-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:transparent;--paper-input-container-input:{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:100%;box-sizing:border-box;cursor:pointer};@apply(--paper-dropdown-menu)}:host([disabled]){@apply(--paper-dropdown-menu-disabled)}:host([noink]) paper-ripple{display:none}:host([no-label-float]) paper-ripple{top:8px}paper-ripple{top:12px;left:0;bottom:8px;right:0;@apply(--paper-dropdown-menu-ripple)}paper-menu-button{display:block;padding:0;@apply(--paper-dropdown-menu-button)}paper-input{@apply(--paper-dropdown-menu-input)}iron-icon{color:var(--disabled-text-color);@apply(--paper-dropdown-menu-icon)}</style></template></dom-module><dom-module id="paper-dropdown-menu" assetpath="../bower_components/paper-dropdown-menu/"><template><style include="paper-dropdown-menu-shared-styles"></style><span role="button"></span><paper-menu-button id="menuButton" vertical-align="[[verticalAlign]]" horizontal-align="[[horizontalAlign]]" dynamic-align="[[dynamicAlign]]" vertical-offset="[[_computeMenuVerticalOffset(noLabelFloat)]]" disabled="[[disabled]]" no-animations="[[noAnimations]]" on-iron-select="_onIronSelect" on-iron-deselect="_onIronDeselect" opened="{{opened}}" close-on-activate="" allow-outside-scroll="[[allowOutsideScroll]]"><div class="dropdown-trigger"><paper-ripple></paper-ripple><paper-input type="text" invalid="[[invalid]]" readonly="" disabled="[[disabled]]" value="[[selectedItemLabel]]" placeholder="[[placeholder]]" error-message="[[errorMessage]]" always-float-label="[[alwaysFloatLabel]]" no-label-float="[[noLabelFloat]]" label="[[label]]"><iron-icon icon="paper-dropdown-menu:arrow-drop-down" suffix=""></iron-icon></paper-input></div><content id="content" select=".dropdown-content"></content></paper-menu-button></template><script>!function(){"use strict";Polymer({is:"paper-dropdown-menu",behaviors:[Polymer.IronButtonState,Polymer.IronControlState,Polymer.IronFormElementBehavior,Polymer.IronValidatableBehavior],properties:{selectedItemLabel:{type:String,notify:!0,readOnly:!0},selectedItem:{type:Object,notify:!0,readOnly:!0},value:{type:String,notify:!0,readOnly:!0},label:{type:String},placeholder:{type:String},errorMessage:{type:String},opened:{type:Boolean,notify:!0,value:!1,observer:"_openedChanged"},allowOutsideScroll:{type:Boolean,value:!1},noLabelFloat:{type:Boolean,value:!1,reflectToAttribute:!0},alwaysFloatLabel:{type:Boolean,value:!1},noAnimations:{type:Boolean,value:!1},horizontalAlign:{type:String,value:"right"},verticalAlign:{type:String,value:"top"},dynamicAlign:{type:Boolean}},listeners:{tap:"_onTap"},keyBindings:{"up down":"open",esc:"close"},hostAttributes:{role:"combobox","aria-autocomplete":"none","aria-haspopup":"true"},observers:["_selectedItemChanged(selectedItem)"],attached:function(){var e=this.contentElement;e&&e.selectedItem&&this._setSelectedItem(e.selectedItem)},get contentElement(){return Polymer.dom(this.$.content).getDistributedNodes()[0]},open:function(){this.$.menuButton.open()},close:function(){this.$.menuButton.close()},_onIronSelect:function(e){this._setSelectedItem(e.detail.item)},_onIronDeselect:function(e){this._setSelectedItem(null)},_onTap:function(e){Polymer.Gestures.findOriginalTarget(e)===this&&this.open()},_selectedItemChanged:function(e){var t="";t=e?e.label||e.getAttribute("label")||e.textContent.trim():"",this._setValue(t),this._setSelectedItemLabel(t)},_computeMenuVerticalOffset:function(e){return e?-4:8},_getValidity:function(e){return this.disabled||!this.required||this.required&&!!this.value},_openedChanged:function(){var e=this.opened?"true":"false",t=this.contentElement;t&&t.setAttribute("aria-expanded",e)}})}()</script></dom-module><dom-module id="paper-menu-shared-styles" assetpath="../bower_components/paper-menu/"><template><style>.selectable-content>::content>.iron-selected{font-weight:700;@apply(--paper-menu-selected-item)}.selectable-content>::content>[disabled]{color:var(--paper-menu-disabled-color,--disabled-text-color)}.selectable-content>::content>:focus{position:relative;outline:0;@apply(--paper-menu-focused-item)}.selectable-content>::content>:focus:after{@apply(--layout-fit);background:currentColor;opacity:var(--dark-divider-opacity);content:'';pointer-events:none;@apply(--paper-menu-focused-item-after)}.selectable-content>::content>[colored]:focus:after{opacity:.26}</style></template></dom-module><dom-module id="paper-menu" assetpath="../bower_components/paper-menu/"><template><style include="paper-menu-shared-styles"></style><style>:host{display:block;padding:8px 0;background:var(--paper-menu-background-color,--primary-background-color);color:var(--paper-menu-color,--primary-text-color);@apply(--paper-menu)}</style><div class="selectable-content"><content></content></div></template><script>!function(){Polymer({is:"paper-menu",behaviors:[Polymer.IronMenuBehavior]})}()</script></dom-module><script>Polymer.PaperItemBehaviorImpl={hostAttributes:{role:"option",tabindex:"0"}},Polymer.PaperItemBehavior=[Polymer.IronButtonState,Polymer.IronControlState,Polymer.PaperItemBehaviorImpl]</script><dom-module id="paper-item-shared-styles" assetpath="../bower_components/paper-item/"><template><style>.paper-item,:host{display:block;position:relative;min-height:var(--paper-item-min-height,48px);padding:0 16px}.paper-item{@apply(--paper-font-subhead);border:none;outline:0;background:#fff;width:100%;text-align:left}.paper-item[hidden],:host([hidden]){display:none!important}.paper-item.iron-selected,:host(.iron-selected){font-weight:var(--paper-item-selected-weight,bold);@apply(--paper-item-selected)}.paper-item[disabled],:host([disabled]){color:var(--paper-item-disabled-color,--disabled-text-color);@apply(--paper-item-disabled)}.paper-item:focus,:host(:focus){position:relative;outline:0;@apply(--paper-item-focused)}.paper-item:focus:before,:host(:focus):before{@apply(--layout-fit);background:currentColor;content:'';opacity:var(--dark-divider-opacity);pointer-events:none;@apply(--paper-item-focused-before)}</style></template></dom-module><dom-module id="paper-item" assetpath="../bower_components/paper-item/"><template><style include="paper-item-shared-styles"></style><style>:host{@apply(--layout-horizontal);@apply(--layout-center);@apply(--paper-font-subhead);@apply(--paper-item)}</style><content></content></template><script>Polymer({is:"paper-item",behaviors:[Polymer.PaperItemBehavior]})</script></dom-module><dom-module id="state-card-input_select" assetpath="state-summary/"><template><style>:host{display:block}state-badge{float:left;margin-top:10px}paper-dropdown-menu{display:block;margin-left:53px}</style><state-badge state-obj="[[stateObj]]"></state-badge><paper-dropdown-menu on-tap="stopPropagation" selected-item-label="{{selectedOption}}" label="[[stateObj.entityDisplay]]"><paper-menu class="dropdown-content" selected="[[computeSelected(stateObj)]]"><template is="dom-repeat" items="[[stateObj.attributes.options]]"><paper-item>[[item]]</paper-item></template></paper-menu></paper-dropdown-menu></template></dom-module><script>Polymer({is:"state-card-input_select",properties:{hass:{type:Object},inDialog:{type:Boolean,value:!1},stateObj:{type:Object},selectedOption:{type:String,observer:"selectedOptionChanged"}},computeSelected:function(t){return t.attributes.options.indexOf(t.state)},selectedOptionChanged:function(t){""!==t&&t!==this.stateObj.state&&this.hass.serviceActions.callService("input_select","select_option",{option:t,entity_id:this.stateObj.entityId})},stopPropagation:function(t){t.stopPropagation()}})</script><script>Polymer.IronRangeBehavior={properties:{value:{type:Number,value:0,notify:!0,reflectToAttribute:!0},min:{type:Number,value:0,notify:!0},max:{type:Number,value:100,notify:!0},step:{type:Number,value:1,notify:!0},ratio:{type:Number,value:0,readOnly:!0,notify:!0}},observers:["_update(value, min, max, step)"],_calcRatio:function(t){return(this._clampValue(t)-this.min)/(this.max-this.min)},_clampValue:function(t){return Math.min(this.max,Math.max(this.min,this._calcStep(t)))},_calcStep:function(t){if(t=parseFloat(t),!this.step)return t;var e=Math.round((t-this.min)/this.step);return this.step<1?e/(1/this.step)+this.min:e*this.step+this.min},_validateValue:function(){var t=this._clampValue(this.value);return this.value=this.oldValue=isNaN(t)?this.oldValue:t,this.value!==t},_update:function(){this._validateValue(),this._setRatio(100*this._calcRatio(this.value))}}</script><dom-module id="paper-progress" assetpath="../bower_components/paper-progress/"><template><style>:host{display:block;width:200px;position:relative;overflow:hidden}:host([hidden]){display:none!important}#progressContainer{@apply(--paper-progress-container);position:relative}#progressContainer,.indeterminate::after{height:var(--paper-progress-height,4px)}#primaryProgress,#secondaryProgress,.indeterminate::after{@apply(--layout-fit)}#progressContainer,.indeterminate::after{background:var(--paper-progress-container-color,--google-grey-300)}:host(.transiting) #primaryProgress,:host(.transiting) #secondaryProgress{-webkit-transition-property:-webkit-transform;transition-property:transform;-webkit-transition-duration:var(--paper-progress-transition-duration,.08s);transition-duration:var(--paper-progress-transition-duration,.08s);-webkit-transition-timing-function:var(--paper-progress-transition-timing-function,ease);transition-timing-function:var(--paper-progress-transition-timing-function,ease);-webkit-transition-delay:var(--paper-progress-transition-delay,0s);transition-delay:var(--paper-progress-transition-delay,0s)}#primaryProgress,#secondaryProgress{@apply(--layout-fit);-webkit-transform-origin:left center;transform-origin:left center;-webkit-transform:scaleX(0);transform:scaleX(0);will-change:transform}#primaryProgress{background:var(--paper-progress-active-color,--google-green-500)}#secondaryProgress{background:var(--paper-progress-secondary-color,--google-green-100)}:host([disabled]) #primaryProgress{background:var(--paper-progress-disabled-active-color,--google-grey-500)}:host([disabled]) #secondaryProgress{background:var(--paper-progress-disabled-secondary-color,--google-grey-300)}:host(:not([disabled])) #primaryProgress.indeterminate{-webkit-transform-origin:right center;transform-origin:right center;-webkit-animation:indeterminate-bar var(--paper-progress-indeterminate-cycle-duration,2s) linear infinite;animation:indeterminate-bar var(--paper-progress-indeterminate-cycle-duration,2s) linear infinite}:host(:not([disabled])) #primaryProgress.indeterminate::after{content:"";-webkit-transform-origin:center center;transform-origin:center center;-webkit-animation:indeterminate-splitter var(--paper-progress-indeterminate-cycle-duration,2s) linear infinite;animation:indeterminate-splitter var(--paper-progress-indeterminate-cycle-duration,2s) linear infinite}@-webkit-keyframes indeterminate-bar{0%{-webkit-transform:scaleX(1) translateX(-100%)}50%{-webkit-transform:scaleX(1) translateX(0)}75%{-webkit-transform:scaleX(1) translateX(0);-webkit-animation-timing-function:cubic-bezier(.28,.62,.37,.91)}100%{-webkit-transform:scaleX(0) translateX(0)}}@-webkit-keyframes indeterminate-splitter{0%{-webkit-transform:scaleX(.75) translateX(-125%)}30%{-webkit-transform:scaleX(.75) translateX(-125%);-webkit-animation-timing-function:cubic-bezier(.42,0,.6,.8)}90%{-webkit-transform:scaleX(.75) translateX(125%)}100%{-webkit-transform:scaleX(.75) translateX(125%)}}@keyframes indeterminate-bar{0%{transform:scaleX(1) translateX(-100%)}50%{transform:scaleX(1) translateX(0)}75%{transform:scaleX(1) translateX(0);animation-timing-function:cubic-bezier(.28,.62,.37,.91)}100%{transform:scaleX(0) translateX(0)}}@keyframes indeterminate-splitter{0%{transform:scaleX(.75) translateX(-125%)}30%{transform:scaleX(.75) translateX(-125%);animation-timing-function:cubic-bezier(.42,0,.6,.8)}90%{transform:scaleX(.75) translateX(125%)}100%{transform:scaleX(.75) translateX(125%)}}</style><div id="progressContainer"><div id="secondaryProgress" hidden$="[[_hideSecondaryProgress(secondaryRatio)]]"></div><div id="primaryProgress"></div></div></template></dom-module><script>Polymer({is:"paper-progress",behaviors:[Polymer.IronRangeBehavior],properties:{secondaryProgress:{type:Number,value:0},secondaryRatio:{type:Number,value:0,readOnly:!0},indeterminate:{type:Boolean,value:!1,observer:"_toggleIndeterminate"},disabled:{type:Boolean,value:!1,reflectToAttribute:!0,observer:"_disabledChanged"}},observers:["_progressChanged(secondaryProgress, value, min, max)"],hostAttributes:{role:"progressbar"},_toggleIndeterminate:function(e){this.toggleClass("indeterminate",e,this.$.primaryProgress)},_transformProgress:function(e,r){var s="scaleX("+r/100+")";e.style.transform=e.style.webkitTransform=s},_mainRatioChanged:function(e){this._transformProgress(this.$.primaryProgress,e)},_progressChanged:function(e,r,s,t){e=this._clampValue(e),r=this._clampValue(r);var a=100*this._calcRatio(e),i=100*this._calcRatio(r);this._setSecondaryRatio(a),this._transformProgress(this.$.secondaryProgress,a),this._transformProgress(this.$.primaryProgress,i),this.secondaryProgress=e,this.setAttribute("aria-valuenow",r),this.setAttribute("aria-valuemin",s),this.setAttribute("aria-valuemax",t)},_disabledChanged:function(e){this.setAttribute("aria-disabled",e?"true":"false")},_hideSecondaryProgress:function(e){return 0===e}})</script><dom-module id="paper-slider" assetpath="../bower_components/paper-slider/"><template strip-whitespace=""><style>:host{@apply(--layout);@apply(--layout-justified);@apply(--layout-center);width:200px;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;--paper-progress-active-color:var(--paper-slider-active-color, --google-blue-700);--paper-progress-secondary-color:var(--paper-slider-secondary-color, --google-blue-300);--paper-progress-disabled-active-color:var(--paper-slider-disabled-active-color, --paper-grey-400);--paper-progress-disabled-secondary-color:var(--paper-slider-disabled-secondary-color, --paper-grey-400)}:host(:focus){outline:0}#sliderContainer{position:relative;width:100%;height:calc(30px + var(--paper-slider-height,2px));margin-left:calc(15px + var(--paper-slider-height,2px)/ 2);margin-right:calc(15px + var(--paper-slider-height,2px)/ 2)}#sliderContainer:focus{outline:0}#sliderContainer.editable{margin-top:12px;margin-bottom:12px}.bar-container{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.ring>.bar-container{left:calc(5px + var(--paper-slider-height,2px)/ 2);transition:left .18s ease}.ring.expand.dragging>.bar-container{transition:none}.ring.expand:not(.pin)>.bar-container{left:calc(8px + var(--paper-slider-height,2px)/ 2)}#sliderBar{padding:15px 0;width:100%;background-color:var(--paper-slider-bar-color,transparent);--paper-progress-container-color:var(--paper-slider-container-color, --paper-grey-400);--paper-progress-height:var(--paper-slider-height, 2px)}.slider-markers{position:absolute;top:calc(14px + var(--paper-slider-height,2px)/ 2);height:var(--paper-slider-height,2px);left:0;right:-1px;box-sizing:border-box;pointer-events:none;@apply(--layout-horizontal)}.slider-marker{@apply(--layout-flex)}.slider-marker::after,.slider-markers::after{content:"";display:block;margin-left:-1px;width:2px;height:2px;border-radius:50%;background-color:#000}#sliderKnob{position:absolute;left:0;top:0;margin-left:calc(-15px - var(--paper-slider-height,2px)/ 2);width:calc(30px + var(--paper-slider-height,2px));height:calc(30px + var(--paper-slider-height,2px))}.transiting>#sliderKnob{transition:left 80ms ease}#sliderKnob:focus{outline:0}#sliderKnob.dragging{transition:none}.snaps>#sliderKnob.dragging{transition:-webkit-transform 80ms ease;transition:transform 80ms ease}#sliderKnobInner{margin:10px;width:calc(100% - 20px);height:calc(100% - 20px);background-color:var(--paper-slider-knob-color,--google-blue-700);border:2px solid var(--paper-slider-knob-color,--google-blue-700);border-radius:50%;-moz-box-sizing:border-box;box-sizing:border-box;transition-property:-webkit-transform,background-color,border;transition-property:transform,background-color,border;transition-duration:.18s;transition-timing-function:ease}.expand:not(.pin)>#sliderKnob>#sliderKnobInner{-webkit-transform:scale(1.5);transform:scale(1.5)}.ring>#sliderKnob>#sliderKnobInner{background-color:var(--paper-slider-knob-start-color,transparent);border:2px solid var(--paper-slider-knob-start-border-color,--paper-grey-400)}#sliderKnobInner::before{background-color:var(--paper-slider-pin-color,--google-blue-700)}.pin>#sliderKnob>#sliderKnobInner::before{content:"";position:absolute;top:0;left:50%;margin-left:-13px;width:26px;height:26px;border-radius:50% 50% 50% 0;-webkit-transform:rotate(-45deg) scale(0) translate(0);transform:rotate(-45deg) scale(0) translate(0)}#sliderKnobInner::after,#sliderKnobInner::before{transition:-webkit-transform .18s ease,background-color .18s ease;transition:transform .18s ease,background-color .18s ease}.pin.ring>#sliderKnob>#sliderKnobInner::before{background-color:var(--paper-slider-pin-start-color,--paper-grey-400)}.pin.expand>#sliderKnob>#sliderKnobInner::before{-webkit-transform:rotate(-45deg) scale(1) translate(17px,-17px);transform:rotate(-45deg) scale(1) translate(17px,-17px)}.pin>#sliderKnob>#sliderKnobInner::after{content:attr(value);position:absolute;top:0;left:50%;margin-left:-16px;width:32px;height:26px;text-align:center;color:var(--paper-slider-font-color,#fff);font-size:10px;-webkit-transform:scale(0) translate(0);transform:scale(0) translate(0)}.pin.expand>#sliderKnob>#sliderKnobInner::after{-webkit-transform:scale(1) translate(0,-17px);transform:scale(1) translate(0,-17px)}.slider-input{width:50px;overflow:hidden;--paper-input-container-input:{text-align:center};@apply(--paper-slider-input)}#sliderContainer.disabled{pointer-events:none}.disabled>#sliderKnob>#sliderKnobInner{background-color:var(--paper-slider-disabled-knob-color,--paper-grey-400);border:2px solid var(--paper-slider-disabled-knob-color,--paper-grey-400);-webkit-transform:scale3d(.75,.75,1);transform:scale3d(.75,.75,1)}.disabled.ring>#sliderKnob>#sliderKnobInner{background-color:var(--paper-slider-knob-start-color,transparent);border:2px solid var(--paper-slider-knob-start-border-color,--paper-grey-400)}paper-ripple{color:var(--paper-slider-knob-color,--google-blue-700)}</style><div id="sliderContainer" class$="[[_getClassNames(disabled, pin, snaps, immediateValue, min, expand, dragging, transiting, editable)]]"><div class="bar-container"><paper-progress disabled$="[[disabled]]" id="sliderBar" aria-hidden="true" min="[[min]]" max="[[max]]" step="[[step]]" value="[[immediateValue]]" secondary-progress="[[secondaryProgress]]" on-down="_bardown" on-up="_resetKnob" on-track="_onTrack"></paper-progress></div><template is="dom-if" if="[[snaps]]"><div class="slider-markers"><template is="dom-repeat" items="[[markers]]"><div class="slider-marker"></div></template></div></template><div id="sliderKnob" on-down="_knobdown" on-up="_resetKnob" on-track="_onTrack" on-transitionend="_knobTransitionEnd"><div id="sliderKnobInner" value$="[[immediateValue]]"></div></div></div><template is="dom-if" if="[[editable]]"><paper-input id="input" type="number" step="[[step]]" min="[[min]]" max="[[max]]" class="slider-input" disabled$="[[disabled]]" value="[[immediateValue]]" on-change="_changeValue" on-keydown="_inputKeyDown" no-label-float=""></paper-input></template></template><script>Polymer({is:"paper-slider",behaviors:[Polymer.IronA11yKeysBehavior,Polymer.IronFormElementBehavior,Polymer.PaperInkyFocusBehavior,Polymer.IronRangeBehavior],properties:{snaps:{type:Boolean,value:!1,notify:!0},pin:{type:Boolean,value:!1,notify:!0},secondaryProgress:{type:Number,value:0,notify:!0,observer:"_secondaryProgressChanged"},editable:{type:Boolean,value:!1},immediateValue:{type:Number,value:0,readOnly:!0,notify:!0},maxMarkers:{type:Number,value:0,notify:!0},expand:{type:Boolean,value:!1,readOnly:!0},dragging:{type:Boolean,value:!1,readOnly:!0},transiting:{type:Boolean,value:!1,readOnly:!0},markers:{type:Array,readOnly:!0,value:[]}},observers:["_updateKnob(value, min, max, snaps, step)","_valueChanged(value)","_immediateValueChanged(immediateValue)","_updateMarkers(maxMarkers, min, max, snaps)"],hostAttributes:{role:"slider",tabindex:0},keyBindings:{"left down pagedown home":"_decrementKey","right up pageup end":"_incrementKey"},increment:function(){this.value=this._clampValue(this.value+this.step)},decrement:function(){this.value=this._clampValue(this.value-this.step)},_updateKnob:function(t,e,i,s,a){this.setAttribute("aria-valuemin",e),this.setAttribute("aria-valuemax",i),this.setAttribute("aria-valuenow",t),this._positionKnob(this._calcRatio(t))},_valueChanged:function(){this.fire("value-change")},_immediateValueChanged:function(){this.dragging?this.fire("immediate-value-change"):this.value=this.immediateValue},_secondaryProgressChanged:function(){this.secondaryProgress=this._clampValue(this.secondaryProgress)},_expandKnob:function(){this._setExpand(!0)},_resetKnob:function(){this.cancelDebouncer("expandKnob"),this._setExpand(!1)},_positionKnob:function(t){this._setImmediateValue(this._calcStep(this._calcKnobPosition(t))),this._setRatio(this._calcRatio(this.immediateValue)),this.$.sliderKnob.style.left=100*this.ratio+"%",this.dragging&&(this._knobstartx=this.ratio*this._w,this.translate3d(0,0,0,this.$.sliderKnob))},_calcKnobPosition:function(t){return(this.max-this.min)*t+this.min},_onTrack:function(t){switch(t.stopPropagation(),t.detail.state){case"start":this._trackStart(t);break;case"track":this._trackX(t);break;case"end":this._trackEnd()}},_trackStart:function(t){this._w=this.$.sliderBar.offsetWidth,this._x=this.ratio*this._w,this._startx=this._x,this._knobstartx=this._startx,this._minx=-this._startx,this._maxx=this._w-this._startx,this.$.sliderKnob.classList.add("dragging"),this._setDragging(!0)},_trackX:function(t){this.dragging||this._trackStart(t);var e=Math.min(this._maxx,Math.max(this._minx,t.detail.dx));this._x=this._startx+e;var i=this._calcStep(this._calcKnobPosition(this._x/this._w));this._setImmediateValue(i);var s=this._calcRatio(this.immediateValue)*this._w-this._knobstartx;this.translate3d(s+"px",0,0,this.$.sliderKnob)},_trackEnd:function(){var t=this.$.sliderKnob.style;this.$.sliderKnob.classList.remove("dragging"),this._setDragging(!1),this._resetKnob(),this.value=this.immediateValue,t.transform=t.webkitTransform="",this.fire("change")},_knobdown:function(t){this._expandKnob(),t.preventDefault(),this.focus()},_bardown:function(t){this._w=this.$.sliderBar.offsetWidth;var e=this.$.sliderBar.getBoundingClientRect(),i=(t.detail.x-e.left)/this._w,s=this.ratio;this._setTransiting(!0),this._positionKnob(i),this.debounce("expandKnob",this._expandKnob,60),s===this.ratio&&this._setTransiting(!1),this.async(function(){this.fire("change")}),t.preventDefault(),this.focus()},_knobTransitionEnd:function(t){t.target===this.$.sliderKnob&&this._setTransiting(!1)},_updateMarkers:function(t,e,i,s){s||this._setMarkers([]);var a=Math.round((i-e)/this.step);a>t&&(a=t),this._setMarkers(new Array(a))},_mergeClasses:function(t){return Object.keys(t).filter(function(e){return t[e]}).join(" ")},_getClassNames:function(){return this._mergeClasses({disabled:this.disabled,pin:this.pin,snaps:this.snaps,ring:this.immediateValue<=this.min,expand:this.expand,dragging:this.dragging,transiting:this.transiting,editable:this.editable})},_incrementKey:function(t){this.disabled||("end"===t.detail.key?this.value=this.max:this.increment(),this.fire("change"))},_decrementKey:function(t){this.disabled||("home"===t.detail.key?this.value=this.min:this.decrement(),this.fire("change"))},_changeValue:function(t){this.value=t.target.value,this.fire("change")},_inputKeyDown:function(t){t.stopPropagation()},_createRipple:function(){return this._rippleContainer=this.$.sliderKnob,Polymer.PaperInkyFocusBehaviorImpl._createRipple.call(this)},_focusedChanged:function(t){t&&this.ensureRipple(),this.hasRipple()&&(t?this._ripple.style.display="":this._ripple.style.display="none",this._ripple.holdDown=t)}})</script></dom-module><dom-module id="state-card-input_slider" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>paper-slider{margin-left:16px}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><paper-slider min="[[min]]" max="[[max]]" value="{{value}}" step="[[step]]" pin="" on-change="selectedValueChanged" on-tap="stopPropagation"></paper-slider></div></template></dom-module><script>Polymer({is:"state-card-input_slider",properties:{hass:{type:Object},inDialog:{type:Boolean,value:!1},stateObj:{type:Object,observer:"stateObjectChanged"},min:{type:Number},max:{type:Number},step:{type:Number},value:{type:Number}},stateObjectChanged:function(t){this.value=Number(t.state),this.min=Number(t.attributes.min),this.max=Number(t.attributes.max),this.step=Number(t.attributes.step)},selectedValueChanged:function(){this.value!==Number(this.stateObj.state)&&this.hass.serviceActions.callService("input_slider","select_value",{value:this.value,entity_id:this.stateObj.entityId})},stopPropagation:function(t){t.stopPropagation()}})</script><dom-module id="state-card-media_player" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>:host{line-height:1.5}.state{@apply(--paper-font-common-nowrap);@apply(--paper-font-body1);margin-left:16px;text-align:right}.main-text{@apply(--paper-font-common-nowrap);color:var(--primary-text-color);text-transform:capitalize}.main-text[take-height]{line-height:40px}.secondary-text{@apply(--paper-font-common-nowrap);color:var(--secondary-text-color)}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><div class="state"><div class="main-text" take-height$="[[!secondaryText]]">[[computePrimaryText(stateObj, isPlaying)]]</div><div class="secondary-text">[[secondaryText]]</div></div></div></template></dom-module><script>Polymer({PLAYING_STATES:["playing","paused"],is:"state-card-media_player",properties:{inDialog:{type:Boolean,value:!1},stateObj:{type:Object},isPlaying:{type:Boolean,computed:"computeIsPlaying(stateObj)"},secondaryText:{type:String,computed:"computeSecondaryText(stateObj)"}},computeIsPlaying:function(t){return this.PLAYING_STATES.indexOf(t.state)!==-1},computePrimaryText:function(t,e){return e?t.attributes.media_title:t.stateDisplay},computeSecondaryText:function(t){var e;return"music"===t.attributes.media_content_type?t.attributes.media_artist:"tvshow"===t.attributes.media_content_type?(e=t.attributes.media_series_title,t.attributes.media_season&&t.attributes.media_episode&&(e+=" S"+t.attributes.media_season+"E"+t.attributes.media_episode),e):t.attributes.app_name?t.attributes.app_name:""}})</script><dom-module id="state-card-scene" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>paper-button{color:var(--default-primary-color);font-weight:500;top:3px;height:37px;margin-right:-.57em}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><paper-button on-tap="activateScene">ACTIVATE</paper-button></div></template></dom-module><script>Polymer({is:"state-card-scene",properties:{hass:{type:Object},inDialog:{type:Boolean,value:!1},stateObj:{type:Object}},activateScene:function(t){t.stopPropagation(),this.hass.serviceActions.callTurnOn(this.stateObj.entityId)}})</script><dom-module id="state-card-script" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>paper-button{color:var(--default-primary-color);font-weight:500;top:3px;height:37px;margin-right:-.57em}ha-entity-toggle{margin-left:16px}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><template is="dom-if" if="[[stateObj.attributes.can_cancel]]"><ha-entity-toggle state-obj="[[stateObj]]" hass="[[hass]]"></ha-entity-toggle></template><template is="dom-if" if="[[!stateObj.attributes.can_cancel]]"><paper-button on-tap="fireScript">ACTIVATE</paper-button></template></div></template></dom-module><script>Polymer({is:"state-card-script",properties:{inDialog:{type:Boolean,value:!1},stateObj:{type:Object}},fireScript:function(t){t.stopPropagation(),this.hass.serviceActions.callTurnOn(this.stateObj.entityId)}})</script><dom-module id="state-card-toggle" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>ha-entity-toggle{margin-left:16px}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><ha-entity-toggle state-obj="[[stateObj]]" hass="[[hass]]"></ha-entity-toggle></div></template></dom-module><script>Polymer({is:"state-card-toggle",properties:{hass:{type:Object},inDialog:{type:Boolean,value:!1},stateObj:{type:Object}}})</script><dom-module id="state-card-weblink" assetpath="state-summary/"><template><style>:host{display:block}.name{@apply(--paper-font-common-nowrap);@apply(--paper-font-body1);color:var(--primary-color);text-transform:capitalize;line-height:40px;margin-left:16px}</style><state-badge state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-badge><a href$="[[stateObj.state]]" target="_blank" class="name" id="link">[[stateObj.entityDisplay]]</a></template></dom-module><script>Polymer({is:"state-card-weblink",properties:{inDialog:{type:Boolean,value:!1},stateObj:{type:Object}},listeners:{tap:"onTap"},onTap:function(t){t.stopPropagation(),t.target!==this.$.link&&window.open(this.stateObj.state,"_blank")}})</script><script>Polymer({is:"state-card-content",properties:{hass:{type:Object},inDialog:{type:Boolean,value:!1},stateObj:{type:Object}},observers:["inputChanged(hass, inDialog, stateObj)"],inputChanged:function(t,e,s){s&&window.hassUtil.dynamicContentUpdater(this,"STATE-CARD-"+window.hassUtil.stateCardType(this.hass,s).toUpperCase(),{hass:t,stateObj:s,inDialog:e})}})</script><dom-module id="ha-entities-card" assetpath="cards/"><template><style is="custom-style" include="iron-flex"></style><style>.states{padding-bottom:16px}.state{padding:4px 16px;cursor:pointer}.header{@apply(--paper-font-headline);line-height:40px;color:var(--primary-text-color);padding:20px 16px 12px}.header .name{@apply(--paper-font-common-nowrap)}ha-entity-toggle{margin-left:16px}.header-more-info{cursor:pointer}</style><ha-card><div class$="[[computeTitleClass(groupEntity)]]" on-tap="entityTapped"><div class="flex name">[[computeTitle(states, groupEntity)]]</div><template is="dom-if" if="[[showGroupToggle(groupEntity, states)]]"><ha-entity-toggle hass="[[hass]]" state-obj="[[groupEntity]]"></ha-entity-toggle></template></div><div class="states"><template is="dom-repeat" items="[[states]]"><div class="state" on-tap="entityTapped"><state-card-content hass="[[hass]]" class="state-card" state-obj="[[item]]"></state-card-content></div></template></div></ha-card></template></dom-module><script>Polymer({is:"ha-entities-card",properties:{hass:{type:Object},states:{type:Array},groupEntity:{type:Object}},computeTitle:function(t,e){return e?e.entityDisplay:t[0].domain.replace(/_/g," ")},computeTitleClass:function(t){var e="header horizontal layout center ";return t&&(e+="header-more-info"),e},entityTapped:function(t){var e;t.target.classList.contains("paper-toggle-button")||t.target.classList.contains("paper-icon-button")||!t.model&&!this.groupEntity||(t.stopPropagation(),e=t.model?t.model.item.entityId:this.groupEntity.entityId,this.async(function(){this.hass.moreInfoActions.selectEntity(e)}.bind(this),1))},showGroupToggle:function(t,e){var n;return!(!t||!e||"hidden"===t.attributes.control||"on"!==t.state&&"off"!==t.state)&&(n=e.reduce(function(t,e){return t+window.hassUtil.canToggle(this.hass,e.entityId)},0),n>1)}})</script><dom-module id="ha-introduction-card" assetpath="cards/"><template><style>:host{@apply(--paper-font-body1)}a{color:var(--dark-primary-color)}ul{margin:8px;padding-left:16px}li{margin-bottom:8px}.content{padding:0 16px 16px}.install{display:block;line-height:1.5em;margin-top:8px;margin-bottom:16px}</style><ha-card header="Welcome Home!"><div class="content"><template is="dom-if" if="[[hass.demo]]">To install Home Assistant, run:<br><code class="install">pip3 install homeassistant<br>hass --open-ui</code></template>Here are some resources to get started.<ul><template is="dom-if" if="[[hass.demo]]"><li><a href="https://home-assistant.io/getting-started/">Home Assistant website</a></li><li><a href="https://home-assistant.io/getting-started/">Installation instructions</a></li><li><a href="https://home-assistant.io/getting-started/troubleshooting/">Troubleshooting your installation</a></li></template><li><a href="https://home-assistant.io/getting-started/configuration/" target="_blank">Configuring Home Assistant</a></li><li><a href="https://home-assistant.io/components/" target="_blank">Available components</a></li><li><a href="https://home-assistant.io/getting-started/troubleshooting-configuration/" target="_blank">Troubleshooting your configuration</a></li><li><a href="https://home-assistant.io/help/" target="_blank">Ask community for help</a></li></ul><template is="dom-if" if="[[showHideInstruction]]">To remove this card, edit your config in <code>configuration.yaml</code> and disable the <code>introduction</code> component.</template></div></ha-card></template></dom-module><script>Polymer({is:"ha-introduction-card",properties:{hass:{type:Object},showHideInstruction:{type:Boolean,value:!0}}})</script><dom-module id="ha-media_player-card" assetpath="cards/"><template><style include="paper-material iron-flex iron-flex-alignment iron-positioning">:host{display:block;position:relative;font-size:0;border-radius:2px;overflow:hidden}.banner{position:relative;background-color:#fff;border-top-left-radius:2px;border-top-right-radius:2px}.banner:before{display:block;content:"";width:100%;padding-top:56%;transition:padding-top .8s}.banner.no-cover{background-position:center center;background-image:url(/static/images/card_media_player_bg.png);background-repeat:no-repeat;background-color:var(--primary-color)}.banner.content-type-music:before{padding-top:100%}.banner.no-cover:before{padding-top:88px}.banner>.cover{position:absolute;top:0;left:0;right:0;bottom:0;border-top-left-radius:2px;border-top-right-radius:2px;background-position:center center;background-size:cover;transition:opacity .8s;opacity:1}.banner.is-off>.cover{opacity:0}.banner>.caption{@apply(--paper-font-caption);position:absolute;left:0;right:0;bottom:0;background-color:rgba(0,0,0,var(--dark-secondary-opacity));padding:8px 16px;font-size:14px;font-weight:500;color:#fff;transition:background-color .5s}.banner.is-off>.caption{background-color:initial}.banner>.caption .title{@apply(--paper-font-common-nowrap);font-size:1.2em;margin:8px 0 4px}.progress{width:100%;--paper-progress-active-color:var(--accent-color);--paper-progress-container-color:#FFF}.controls{position:relative;@apply(--paper-font-body1);padding:8px;border-bottom-left-radius:2px;border-bottom-right-radius:2px;background-color:#fff}.controls paper-icon-button{width:44px;height:44px}paper-icon-button{opacity:var(--dark-primary-opacity)}paper-icon-button[disabled]{opacity:var(--dark-disabled-opacity)}paper-icon-button.primary{width:56px!important;height:56px!important;background-color:var(--primary-color);color:#fff;border-radius:50%;padding:8px;transition:background-color .5s}paper-icon-button.primary[disabled]{background-color:rgba(0,0,0,var(--dark-disabled-opacity))}[invisible]{visibility:hidden!important}</style><div class$="[[computeBannerClasses(playerObj)]]"><div class="cover" id="cover"></div><div class="caption">[[stateObj.entityDisplay]]<div class="title">[[playerObj.primaryText]]</div>[[playerObj.secondaryText]]<br></div></div><paper-progress max="[[stateObj.attributes.media_duration]]" value="[[playbackPosition]]" hidden$="[[computeHideProgress(playerObj)]]" class="progress"></paper-progress><div class="controls layout horizontal justified"><paper-icon-button icon="mdi:power" on-tap="handleTogglePower" invisible$="[[computeHidePowerButton(playerObj)]]" class="self-center secondary"></paper-icon-button><div><paper-icon-button icon="mdi:skip-previous" invisible$="[[!playerObj.supportsPreviousTrack]]" disabled="[[playerObj.isOff]]" on-tap="handlePrevious"></paper-icon-button><paper-icon-button class="primary" icon="[[computePlaybackControlIcon(playerObj)]]" invisible$="[[!computePlaybackControlIcon(playerObj)]]" disabled="[[playerObj.isOff]]" on-tap="handlePlaybackControl"></paper-icon-button><paper-icon-button icon="mdi:skip-next" invisible$="[[!playerObj.supportsNextTrack]]" disabled="[[playerObj.isOff]]" on-tap="handleNext"></paper-icon-button></div><paper-icon-button icon="mdi:dots-vertical" on-tap="handleOpenMoreInfo" class="self-center secondary"></paper-icon-button></div></template></dom-module><script>Polymer({is:"ha-media_player-card",properties:{hass:{type:Object},stateObj:{type:Object},playerObj:{type:Object,computed:"computePlayerObj(stateObj)",observer:"playerObjChanged"},playbackControlIcon:{type:String,computed:"computePlaybackControlIcon(playerObj)"},playbackPosition:{type:Number},elevation:{type:Number,value:1,reflectToAttribute:!0}},created:function(){this.updatePlaybackPosition=this.updatePlaybackPosition.bind(this)},playerObjChanged:function(t){var e=t.stateObj.attributes.entity_picture;e?this.$.cover.style.backgroundImage="url("+e+")":this.$.cover.style.backgroundImage="",t.isPlaying?(this._positionTracking||(this._positionTracking=setInterval(this.updatePlaybackPosition,1e3)),this.updatePlaybackPosition()):this._positionTracking&&(clearInterval(this._positionTracking),this._positionTracking=null,this.playbackPosition=0)},updatePlaybackPosition:function(){this.playbackPosition=this.playerObj.currentProgress},computeBannerClasses:function(t){var e="banner";return t.isOff||t.isIdle?e+=" is-off no-cover":t.stateObj.attributes.entity_picture?"music"===t.stateObj.attributes.media_content_type&&(e+=" content-type-music"):e+=" no-cover",e},computeHideProgress:function(t){return!t.showProgress},computeHidePowerButton:function(t){return t.isOff?!t.supportsTurnOn:!t.supportsTurnOff},computePlayerObj:function(t){return t.domainModel(this.hass)},computePlaybackControlIcon:function(t){return t.isPlaying?t.supportsPause?"mdi:pause":"mdi:stop":t.isPaused||t.isOff||t.isIdle?t.supportsPlay?"mdi:play":null:""},handleNext:function(t){t.stopPropagation(),this.playerObj.nextTrack()},handleOpenMoreInfo:function(t){t.stopPropagation(),this.async(function(){this.hass.moreInfoActions.selectEntity(this.stateObj.entityId)},1)},handlePlaybackControl:function(t){t.stopPropagation(),this.playerObj.mediaPlayPause()},handlePrevious:function(t){t.stopPropagation(),this.playerObj.previousTrack()},handleTogglePower:function(t){t.stopPropagation(),this.playerObj.togglePower()}})</script><dom-module id="ha-persistent_notification-card" assetpath="cards/"><template><style>:host{@apply(--paper-font-body1)}.content{padding:0 16px 16px}paper-button{margin:8px;font-weight:500}</style><ha-card header="[[computeTitle(stateObj)]]"><div id="pnContent" class="content"></div><paper-button on-tap="dismissTap">DISMISS</paper-button></ha-card></template></dom-module><script>Polymer({is:"ha-persistent_notification-card",properties:{hass:{type:Object},stateObj:{type:Object},scriptLoaded:{type:Boolean,value:!1}},observers:["computeContent(stateObj, scriptLoaded)"],computeTitle:function(t){return t.attributes.title||t.entityDisplay},loadScript:function(){var t=function(){this.scriptLoaded=!0}.bind(this),e=function(){console.error("Micromarkdown was not loaded.")};this.importHref("/static/micromarkdown-js.html",t,e)},computeContent:function(t,e){var i="",n="";e&&(i=this.$.pnContent,n=window.micromarkdown.parse(t.state),i.innerHTML=n)},ready:function(){this.loadScript()},dismissTap:function(t){t.preventDefault(),this.hass.entityActions.delete(this.stateObj)}})</script><script>Polymer({is:"ha-card-chooser",properties:{cardData:{type:Object,observer:"cardDataChanged"}},cardDataChanged:function(a){a&&window.hassUtil.dynamicContentUpdater(this,"HA-"+a.cardType.toUpperCase()+"-CARD",a)}})</script><dom-module id="ha-cards" assetpath="components/"><template><style is="custom-style" include="iron-flex iron-flex-factors"></style><style>:host{display:block;padding-top:8px;padding-right:8px}.badges{font-size:85%;text-align:center}.column{max-width:500px;overflow-x:hidden}.zone-card{margin-left:8px;margin-bottom:8px}@media (max-width:500px){:host{padding-right:0}.zone-card{margin-left:0}}@media (max-width:599px){.column{max-width:600px}}</style><div class="main"><template is="dom-if" if="[[cards.badges]]"><div class="badges"><template is="dom-if" if="[[cards.demo]]"><ha-demo-badge></ha-demo-badge></template><ha-badges-card states="[[cards.badges]]" hass="[[hass]]"></ha-badges-card></div></template><div class="horizontal layout center-justified"><template is="dom-repeat" items="[[cards.columns]]" as="column"><div class="column flex-1"><template is="dom-repeat" items="[[column]]" as="card"><div class="zone-card"><ha-card-chooser card-data="[[card]]" hass="[[hass]]"></ha-card-chooser></div></template></div></template></div></div></template></dom-module><script>!function(){"use strict";function t(t){return t in o?o[t]:30}function e(t){return"group"===t.domain?t.attributes.order:t.entityDisplay.toLowerCase()}var n={camera:4,media_player:3,persistent_notification:0},o={configurator:-20,persistent_notification:-15,group:-10,a:-1,updater:0,sun:1,device_tracker:2,alarm_control_panel:3,sensor:5,binary_sensor:6};Polymer({is:"ha-cards",properties:{hass:{type:Object},showIntroduction:{type:Boolean,value:!1},columns:{type:Number,value:2},states:{type:Object},panelVisible:{type:Boolean},viewVisible:{type:Boolean},cards:{type:Object}},observers:["updateCards(columns, states, showIntroduction, panelVisible, viewVisible)"],updateCards:function(t,e,n,o,r){o&&r&&this.debounce("updateCards",function(){this.panelVisible&&this.viewVisible&&(this.cards=this.computeCards(t,e,n))}.bind(this))},computeCards:function(o,r,s){function i(t){return t.filter(function(t){return!(t.entityId in h)})}function a(t){var e=0;for(p=e;p<y.length;p++){if(y[p]<5){e=p;break}y[p]<y[e]&&(e=p)}return y[e]+=t,e}function u(t,e,o){var r,s,i,u;0!==e.length&&(r=[],s=[],i=0,e.forEach(function(t){t.domain in n?(r.push(t),i+=n[t.domain]):(s.push(t),i++)}),i+=s.length>1,u=a(i),s.length>0&&f.columns[u].push({hass:d,cardType:"entities",states:s,groupEntity:o||!1}),r.forEach(function(t){f.columns[u].push({hass:d,cardType:t.domain,stateObj:t})}))}var c,p,d=this.hass,l=r.groupBy(function(t){return t.domain}),h={},f={demo:!1,badges:[],columns:[]},y=[];for(p=0;p<o;p++)f.columns.push([]),y.push(0);return s&&f.columns[a(5)].push({hass:d,cardType:"introduction",showHideInstruction:r.size>0&&!d.demo}),c=this.hass.util.expandGroup,l.keySeq().sortBy(function(e){return t(e)}).forEach(function(n){var o;return"a"===n?void(f.demo=!0):(o=t(n),void(o>=0&&o<10?f.badges.push.apply(f.badges,i(l.get(n)).sortBy(e).toArray()):"group"===n?l.get(n).sortBy(e).forEach(function(t){var e=c(t,r);e.forEach(function(t){h[t.entityId]=!0}),u(t.entityId,e.toArray(),t)}):u(n,i(l.get(n)).sortBy(e).toArray())))}),f.columns=f.columns.filter(function(t){return t.length>0}),f}})}()</script><dom-module id="partial-cards" assetpath="layouts/"><template><style include="iron-flex iron-positioning ha-style">:host{-ms-user-select:none;-webkit-user-select:none;-moz-user-select:none}app-header-layout{background-color:#E5E5E5}paper-tabs{margin-left:12px;--paper-tabs-selection-bar-color:#FFF;text-transform:uppercase}</style><app-header-layout has-scrolling-region="" id="layout"><app-header effects="waterfall" condenses="" fixed=""><app-toolbar><ha-menu-button narrow="[[narrow]]" show-menu="[[showMenu]]"></ha-menu-button><div main-title="">[[computeTitle(views, locationName)]]</div><paper-icon-button icon="mdi:microphone" hidden$="[[!canListen]]" on-tap="handleListenClick"></paper-icon-button></app-toolbar><div sticky="" hidden$="[[!views.length]]"><paper-tabs scrollable="" selected="[[currentView]]" attr-for-selected="data-entity" on-iron-select="handleViewSelected"><paper-tab data-entity="" on-tap="scrollToTop">[[locationName]]</paper-tab><template is="dom-repeat" items="[[views]]"><paper-tab data-entity$="[[item.entityId]]" on-tap="scrollToTop"><template is="dom-if" if="[[item.attributes.icon]]"><iron-icon icon="[[item.attributes.icon]]"></iron-icon></template><template is="dom-if" if="[[!item.attributes.icon]]">[[item.entityDisplay]]</template></paper-tab></template></paper-tabs></div></app-header><iron-pages attr-for-selected="data-view" selected="[[currentView]]" selected-attribute="view-visible"><ha-cards data-view="" show-introduction="[[computeShowIntroduction(currentView, introductionLoaded, states)]]" states="[[states]]" columns="[[_columns]]" hass="[[hass]]" panel-visible="[[panelVisible]]"></ha-cards><template is="dom-repeat" items="[[views]]"><ha-cards data-view$="[[item.entityId]]" show-introduction="[[computeShowIntroduction(currentView, introductionLoaded, states)]]" states="[[states]]" columns="[[_columns]]" hass="[[hass]]" panel-visible="[[panelVisible]]"></ha-cards></template></iron-pages></app-header-layout></template></dom-module><script>Polymer({is:"partial-cards",behaviors:[window.hassBehavior],properties:{hass:{type:Object},narrow:{type:Boolean,value:!1},showMenu:{type:Boolean,value:!1,observer:"handleWindowChange"},panelVisible:{type:Boolean,value:!1},_columns:{type:Number,value:1},canListen:{type:Boolean,bindNuclear:function(e){return[e.voiceGetters.isVoiceSupported,e.configGetters.isComponentLoaded("conversation"),function(e,t){return e&&t}]}},introductionLoaded:{type:Boolean,bindNuclear:function(e){return e.configGetters.isComponentLoaded("introduction")}},locationName:{type:String,bindNuclear:function(e){return e.configGetters.locationName}},currentView:{type:String,bindNuclear:function(e){return[e.viewGetters.currentView,function(e){return e||""}]}},views:{type:Array,bindNuclear:function(e){return[e.viewGetters.views,function(e){return e.valueSeq().sortBy(function(e){return e.attributes.order}).toArray()}]}},states:{type:Object,bindNuclear:function(e){return e.viewGetters.currentViewEntities}}},created:function(){this.handleWindowChange=this.handleWindowChange.bind(this),this.mqls=[300,600,900,1200].map(function(e){var t=window.matchMedia("(min-width: "+e+"px)");return t.addListener(this.handleWindowChange),t}.bind(this))},detached:function(){this.mqls.forEach(function(e){e.removeListener(this.handleWindowChange)})},handleWindowChange:function(){var e=this.mqls.reduce(function(e,t){return e+t.matches},0);this._columns=Math.max(1,e-(!this.narrow&&this.showMenu))},scrollToTop:function(){var e=0,t=this.$.layout.header.scrollTarget,n=function(e,t,n,i){return e/=i,-n*e*(e-2)+t},i=Math.random(),o=200,r=Date.now(),a=t.scrollTop,s=e-a;this._currentAnimationId=i,function c(){var u=Date.now(),l=u-r;l>o?t.scrollTop=e:this._currentAnimationId===i&&(t.scrollTop=n(l,a,s,o),requestAnimationFrame(c.bind(this)))}.call(this)},handleListenClick:function(){this.hass.voiceActions.listen()},handleViewSelected:function(e){var t=e.detail.item.getAttribute("data-entity")||null,n=this.currentView||null;t!==n&&this.async(function(){this.hass.viewActions.selectView(t)}.bind(this),0)},computeTitle:function(e,t){return e.length>0?"Home Assistant":t},computeShowIntroduction:function(e,t,n){return""===e&&(t||0===n.size)}})</script><style is="custom-style">html{font-size:14px;--dark-primary-color:#0288D1;--default-primary-color:#03A9F4;--primary-color:#03A9F4;--light-primary-color:#B3E5FC;--text-primary-color:#ffffff;--accent-color:#FF9800;--primary-background-color:#ffffff;--primary-text-color:#212121;--secondary-text-color:#727272;--disabled-text-color:#bdbdbd;--divider-color:#B6B6B6;--paper-toggle-button-checked-ink-color:#039be5;--paper-toggle-button-checked-button-color:#039be5;--paper-toggle-button-checked-bar-color:#039be5;--paper-slider-knob-color:var(--primary-color);--paper-slider-knob-start-color:var(--primary-color);--paper-slider-pin-color:var(--primary-color);--paper-slider-active-color:var(--primary-color);--paper-slider-secondary-color:var(--light-primary-color);--paper-slider-container-color:var(--divider-color);--google-red-500:#db4437;--google-blue-500:#4285f4;--google-green-500:#0f9d58;--google-yellow-500:#f4b400;--paper-grey-50:#fafafa;--paper-green-400:#66bb6a;--paper-blue-400:#42a5f5;--paper-orange-400:#ffa726;--dark-divider-opacity:0.12;--dark-disabled-opacity:0.38;--dark-secondary-opacity:0.54;--dark-primary-opacity:0.87;--light-divider-opacity:0.12;--light-disabled-opacity:0.3;--light-secondary-opacity:0.7;--light-primary-opacity:1.0}</style><dom-module id="ha-style" assetpath="resources/"><template><style>:host{@apply(--paper-font-body1)}app-header,app-toolbar{background-color:var(--primary-color);font-weight:400;color:#fff}app-toolbar ha-menu-button+[main-title]{margin-left:24px}h1{@apply(--paper-font-title)}</style></template></dom-module><dom-module id="partial-panel-resolver" assetpath="layouts/"><template><style include="iron-flex ha-style">[hidden]{display:none!important}.placeholder{height:100%}.layout{height:calc(100% - 64px)}</style><div hidden$="[[resolved]]" class="placeholder"><app-toolbar><ha-menu-button narrow="[[narrow]]" show-menu="[[showMenu]]"></ha-menu-button></app-toolbar><div class="layout horizontal center-center"><template is="dom-if" if="[[!errorLoading]]"><paper-spinner active=""></paper-spinner></template><template is="dom-if" if="[[errorLoading]]">Error loading panel :(</template></div></div><span id="panel" hidden$="[[!resolved]]"></span></template></dom-module><script>Polymer({is:"partial-panel-resolver",behaviors:[window.hassBehavior],properties:{hass:{type:Object,observer:"updateAttributes"},narrow:{type:Boolean,value:!1,observer:"updateAttributes"},showMenu:{type:Boolean,value:!1,observer:"updateAttributes"},resolved:{type:Boolean,value:!1},errorLoading:{type:Boolean,value:!1},panel:{type:Object,bindNuclear:function(e){return e.navigationGetters.activePanel},observer:"panelChanged"}},panelChanged:function(e){return e?(this.resolved=!1,this.errorLoading=!1,void this.importHref(e.get("url"),function(){window.hassUtil.dynamicContentUpdater(this.$.panel,"ha-panel-"+e.get("component_name"),{hass:this.hass,narrow:this.narrow,showMenu:this.showMenu,panel:e.toJS()}),this.resolved=!0}.bind(this),function(){this.errorLoading=!0}.bind(this),!0)):void(this.$.panel.lastChild&&this.$.panel.removeChild(this.$.panel.lastChild))},updateAttributes:function(){var e=Polymer.dom(this.$.panel).lastChild;e&&(e.hass=this.hass,e.narrow=this.narrow,e.showMenu=this.showMenu)}})</script><dom-module id="paper-toast" assetpath="../bower_components/paper-toast/"><template><style>:host{display:block;position:fixed;background-color:var(--paper-toast-background-color,#323232);color:var(--paper-toast-color,#f1f1f1);min-height:48px;min-width:288px;padding:16px 24px;box-sizing:border-box;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);border-radius:2px;margin:12px;font-size:14px;cursor:default;-webkit-transition:-webkit-transform .3s,opacity .3s;transition:transform .3s,opacity .3s;opacity:0;-webkit-transform:translateY(100px);transform:translateY(100px);@apply(--paper-font-common-base)}:host(.capsule){border-radius:24px}:host(.fit-bottom){width:100%;min-width:0;border-radius:0;margin:0}:host(.paper-toast-open){opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}</style><span id="label">{{text}}</span><content></content></template><script>!function(){var e=null;Polymer({is:"paper-toast",behaviors:[Polymer.IronOverlayBehavior],properties:{fitInto:{type:Object,value:window,observer:"_onFitIntoChanged"},horizontalAlign:{type:String,value:"left"},verticalAlign:{type:String,value:"bottom"},duration:{type:Number,value:3e3},text:{type:String,value:""},noCancelOnOutsideClick:{type:Boolean,value:!0},noAutoFocus:{type:Boolean,value:!0}},listeners:{transitionend:"__onTransitionEnd"},get visible(){return Polymer.Base._warn("`visible` is deprecated, use `opened` instead"),this.opened},get _canAutoClose(){return this.duration>0&&this.duration!==1/0},created:function(){this._autoClose=null,Polymer.IronA11yAnnouncer.requestAvailability()},show:function(e){"string"==typeof e&&(e={text:e});for(var t in e)0===t.indexOf("_")?Polymer.Base._warn('The property "'+t+'" is private and was not set.'):t in this?this[t]=e[t]:Polymer.Base._warn('The property "'+t+'" is not valid.');this.open()},hide:function(){this.close()},__onTransitionEnd:function(e){e&&e.target===this&&"opacity"===e.propertyName&&(this.opened?this._finishRenderOpened():this._finishRenderClosed())},_openedChanged:function(){null!==this._autoClose&&(this.cancelAsync(this._autoClose),this._autoClose=null),this.opened?(e&&e!==this&&e.close(),e=this,this.fire("iron-announce",{text:this.text}),this._canAutoClose&&(this._autoClose=this.async(this.close,this.duration))):e===this&&(e=null),Polymer.IronOverlayBehaviorImpl._openedChanged.apply(this,arguments)},_renderOpened:function(){this.classList.add("paper-toast-open")},_renderClosed:function(){this.classList.remove("paper-toast-open")},_onFitIntoChanged:function(e){this.positionTarget=e}})}()</script></dom-module><dom-module id="notification-manager" assetpath="managers/"><template><style>paper-toast{z-index:1}</style><paper-toast id="toast" text="{{text}}" no-cancel-on-outside-click="[[neg]]"></paper-toast><paper-toast id="connToast" duration="0" text="Connection lost. Reconnecting…" opened="[[!isStreaming]]"></paper-toast></template></dom-module><script>Polymer({is:"notification-manager",behaviors:[window.hassBehavior],properties:{hass:{type:Object},isStreaming:{type:Boolean,bindNuclear:function(t){return t.streamGetters.isStreamingEvents}},neg:{type:Boolean,value:!1},text:{type:String,bindNuclear:function(t){return t.notificationGetters.lastNotificationMessage},observer:"showNotification"},toastClass:{type:String,value:""}},created:function(){this.handleWindowChange=this.handleWindowChange.bind(this),this._mediaq=window.matchMedia("(max-width: 599px)"),this._mediaq.addListener(this.handleWindowChange)},attached:function(){this.handleWindowChange(this._mediaq)},detached:function(){this._mediaq.removeListener(this.handleWindowChange)},handleWindowChange:function(t){this.$.toast.classList.toggle("fit-bottom",t.matches),this.$.connToast.classList.toggle("fit-bottom",t.matches)},showNotification:function(t){t&&this.$.toast.show()}})</script><script>Polymer.PaperDialogBehaviorImpl={hostAttributes:{role:"dialog",tabindex:"-1"},properties:{modal:{type:Boolean,value:!1}},observers:["_modalChanged(modal, _readied)"],listeners:{tap:"_onDialogClick"},ready:function(){this.__prevNoCancelOnOutsideClick=this.noCancelOnOutsideClick,this.__prevNoCancelOnEscKey=this.noCancelOnEscKey,this.__prevWithBackdrop=this.withBackdrop},_modalChanged:function(i,e){e&&(i?(this.__prevNoCancelOnOutsideClick=this.noCancelOnOutsideClick,this.__prevNoCancelOnEscKey=this.noCancelOnEscKey,this.__prevWithBackdrop=this.withBackdrop,this.noCancelOnOutsideClick=!0,this.noCancelOnEscKey=!0,this.withBackdrop=!0):(this.noCancelOnOutsideClick=this.noCancelOnOutsideClick&&this.__prevNoCancelOnOutsideClick,this.noCancelOnEscKey=this.noCancelOnEscKey&&this.__prevNoCancelOnEscKey,this.withBackdrop=this.withBackdrop&&this.__prevWithBackdrop))},_updateClosingReasonConfirmed:function(i){this.closingReason=this.closingReason||{},this.closingReason.confirmed=i},_onDialogClick:function(i){for(var e=Polymer.dom(i).path,o=0;o<e.indexOf(this);o++){var t=e[o];if(t.hasAttribute&&(t.hasAttribute("dialog-dismiss")||t.hasAttribute("dialog-confirm"))){this._updateClosingReasonConfirmed(t.hasAttribute("dialog-confirm")),this.close(),i.stopPropagation();break}}}},Polymer.PaperDialogBehavior=[Polymer.IronOverlayBehavior,Polymer.PaperDialogBehaviorImpl]</script><dom-module id="paper-dialog-shared-styles" assetpath="../bower_components/paper-dialog-behavior/"><template><style>:host{display:block;margin:24px 40px;background:var(--paper-dialog-background-color,--primary-background-color);color:var(--paper-dialog-color,--primary-text-color);@apply(--paper-font-body1);@apply(--shadow-elevation-16dp);@apply(--paper-dialog)}:host>::content>*{margin-top:20px;padding:0 24px}:host>::content>.no-padding{padding:0}:host>::content>:first-child{margin-top:24px}:host>::content>:last-child{margin-bottom:24px}:host>::content h2{position:relative;margin:0;@apply(--paper-font-title);@apply(--paper-dialog-title)}:host>::content .buttons{position:relative;padding:8px 8px 8px 24px;margin:0;color:var(--paper-dialog-button-color,--primary-color);@apply(--layout-horizontal);@apply(--layout-end-justified)}</style></template></dom-module><dom-module id="paper-dialog" assetpath="../bower_components/paper-dialog/"><template><style include="paper-dialog-shared-styles"></style><content></content></template></dom-module><script>!function(){Polymer({is:"paper-dialog",behaviors:[Polymer.PaperDialogBehavior,Polymer.NeonAnimationRunnerBehavior],listeners:{"neon-animation-finish":"_onNeonAnimationFinish"},_renderOpened:function(){this.cancelAnimation(),this.playAnimation("entry")},_renderClosed:function(){this.cancelAnimation(),this.playAnimation("exit")},_onNeonAnimationFinish:function(){this.opened?this._finishRenderOpened():this._finishRenderClosed()}})}()</script><dom-module id="paper-dialog-scrollable" assetpath="../bower_components/paper-dialog-scrollable/"><template><style>:host{display:block;@apply(--layout-relative)}:host(.is-scrolled:not(:first-child))::before{content:'';position:absolute;top:0;left:0;right:0;height:1px;background:var(--divider-color)}:host(.can-scroll:not(.scrolled-to-bottom):not(:last-child))::after{content:'';position:absolute;bottom:0;left:0;right:0;height:1px;background:var(--divider-color)}.scrollable{padding:0 24px;@apply(--layout-scroll);@apply(--paper-dialog-scrollable)}.fit{@apply(--layout-fit)}</style><div id="scrollable" class="scrollable"><content></content></div></template></dom-module><script>Polymer({is:"paper-dialog-scrollable",properties:{dialogElement:{type:Object}},listeners:{"scrollable.scroll":"_scroll"},get scrollTarget(){return this.$.scrollable},ready:function(){this._ensureTarget()},attached:function(){this.classList.add("no-padding"),this._ensureTarget(),requestAnimationFrame(this._scroll.bind(this))},_scroll:function(){this.toggleClass("is-scrolled",this.scrollTarget.scrollTop>0),this.toggleClass("can-scroll",this.scrollTarget.offsetHeight<this.scrollTarget.scrollHeight),this.toggleClass("scrolled-to-bottom",this.scrollTarget.scrollTop+this.scrollTarget.offsetHeight>=this.scrollTarget.scrollHeight)},_ensureTarget:function(){this.dialogElement=this.dialogElement||Polymer.dom(this).parentNode,this.dialogElement&&this.dialogElement.behaviors&&this.dialogElement.behaviors.indexOf(Polymer.PaperDialogBehaviorImpl)>=0?(this.dialogElement.sizingTarget=this.scrollTarget,this.scrollTarget.classList.remove("fit")):this.dialogElement&&this.scrollTarget.classList.add("fit")}})</script><script>!function(){"use strict";Polymer.IronJsonpLibraryBehavior={properties:{libraryLoaded:{type:Boolean,value:!1,notify:!0,readOnly:!0},libraryErrorMessage:{type:String,value:null,notify:!0,readOnly:!0}},observers:["_libraryUrlChanged(libraryUrl)"],_libraryUrlChanged:function(r){this._isReady&&this.libraryUrl&&this._loadLibrary()},_libraryLoadCallback:function(r,i){r?(console.warn("Library load failed:",r.message),this._setLibraryErrorMessage(r.message)):(this._setLibraryErrorMessage(null),this._setLibraryLoaded(!0),this.notifyEvent&&this.fire(this.notifyEvent,i))},_loadLibrary:function(){r.require(this.libraryUrl,this._libraryLoadCallback.bind(this),this.callbackName)},ready:function(){this._isReady=!0,this.libraryUrl&&this._loadLibrary()}};var r={apiMap:{},require:function(r,t,e){var a=this.nameFromUrl(r);this.apiMap[a]||(this.apiMap[a]=new i(a,r,e)),this.apiMap[a].requestNotify(t)},nameFromUrl:function(r){return r.replace(/[\:\/\%\?\&\.\=\-\,]/g,"_")+"_api"}},i=function(r,i,t){if(this.notifiers=[],!t){if(!(i.indexOf(this.callbackMacro)>=0))return void(this.error=new Error("IronJsonpLibraryBehavior a %%callback%% parameter is required in libraryUrl"));t=r+"_loaded",i=i.replace(this.callbackMacro,t)}this.callbackName=t,window[this.callbackName]=this.success.bind(this),this.addScript(i)};i.prototype={callbackMacro:"%%callback%%",loaded:!1,addScript:function(r){var i=document.createElement("script");i.src=r,i.onerror=this.handleError.bind(this);var t=document.querySelector("script")||document.body;t.parentNode.insertBefore(i,t),this.script=i},removeScript:function(){this.script.parentNode&&this.script.parentNode.removeChild(this.script),this.script=null},handleError:function(r){this.error=new Error("Library failed to load"),this.notifyAll(),this.cleanup()},success:function(){this.loaded=!0,this.result=Array.prototype.slice.call(arguments),this.notifyAll(),this.cleanup()},cleanup:function(){delete window[this.callbackName]},notifyAll:function(){this.notifiers.forEach(function(r){r(this.error,this.result)}.bind(this)),this.notifiers=[]},requestNotify:function(r){this.loaded||this.error?r(this.error,this.result):this.notifiers.push(r)}}}()</script><script>Polymer({is:"iron-jsonp-library",behaviors:[Polymer.IronJsonpLibraryBehavior],properties:{libraryUrl:String,callbackName:String,notifyEvent:String}})</script><script>Polymer({is:"google-legacy-loader",behaviors:[Polymer.IronJsonpLibraryBehavior],properties:{libraryUrl:{type:String,value:"https://www.google.com/jsapi?callback=%%callback%%"},notifyEvent:{type:String,value:"api-load"}},get api(){return google}})</script><style>div.charts-tooltip{z-index:200!important}</style><script>Polymer({is:"state-history-chart-timeline",properties:{data:{type:Object,observer:"dataChanged"},isAttached:{type:Boolean,value:!1,observer:"dataChanged"}},created:function(){this.style.display="block"},attached:function(){this.isAttached=!0},dataChanged:function(){this.drawChart()},drawChart:function(){function t(t,e,n,i){var d=e.replace(/_/g," ");a.addRow([t,d,n,i])}var e,a,n,i,d,l=Polymer.dom(this),o=this.data;if(this.isAttached){for(;l.node.lastChild;)l.node.removeChild(l.node.lastChild);o&&0!==o.length&&(e=new window.google.visualization.Timeline(this),a=new window.google.visualization.DataTable,a.addColumn({type:"string",id:"Entity"}),a.addColumn({type:"string",id:"State"}),a.addColumn({type:"date",id:"Start"}),a.addColumn({type:"date",id:"End"}),n=new Date(o.reduce(function(t,e){return Math.min(t,e[0].lastChangedAsDate)},new Date)),i=new Date(n),i.setDate(i.getDate()+1),i>new Date&&(i=new Date),d=0,o.forEach(function(e){var a,n,l=null,o=null;0!==e.length&&(a=e[0].entityDisplay,e.forEach(function(e){null!==l&&e.state!==l?(n=e.lastChangedAsDate,t(a,l,o,n),l=e.state,o=n):null===l&&(l=e.state,o=e.lastChangedAsDate)}),t(a,l,o,i),d++)}),e.draw(a,{height:55+42*d,timeline:{showRowLabels:o.length>1},hAxis:{format:"H:mm"}}))}}})</script><script>!function(){"use strict";function t(t,e){var a,r=[];for(a=t;a<e;a++)r.push(a);return r}function e(t){var e=parseFloat(t);return!isNaN(e)&&isFinite(e)?e:null}Polymer({is:"state-history-chart-line",properties:{data:{type:Object,observer:"dataChanged"},unit:{type:String},isSingleDevice:{type:Boolean,value:!1},isAttached:{type:Boolean,value:!1,observer:"dataChanged"},chartEngine:{type:Object}},created:function(){this.style.display="block"},attached:function(){this.isAttached=!0},dataChanged:function(){this.drawChart()},drawChart:function(){var a,r,n,i,u,o=this.unit,s=this.data;this.isAttached&&(this.chartEngine||(this.chartEngine=new window.google.visualization.LineChart(this)),0!==s.length&&(a={legend:{position:"top"},interpolateNulls:!0,titlePosition:"none",vAxes:{0:{title:o}},hAxis:{format:"H:mm"},chartArea:{left:"60",width:"95%"},explorer:{actions:["dragToZoom","rightClickToReset","dragToPan"],keepInBounds:!0,axis:"horizontal",maxZoomIn:.1}},this.isSingleDevice&&(a.legend.position="none",a.vAxes[0].title=null,a.chartArea.left=40,a.chartArea.height="80%",a.chartArea.top=5,a.enableInteractivity=!1),r=new Date(Math.min.apply(null,s.map(function(t){return t[0].lastChangedAsDate}))),n=new Date(r),n.setDate(n.getDate()+1),n>new Date&&(n=new Date),i=s.map(function(t){function a(t,e){r&&e&&c.push([t[0]].concat(r.slice(1).map(function(t,a){return e[a]?t:null}))),c.push(t),r=t}var r,i,u,o,s=t[t.length-1],l=s.domain,d=s.entityDisplay,c=[],h=new window.google.visualization.DataTable;return h.addColumn({type:"datetime",id:"Time"}),"thermostat"===l?(i=t.reduce(function(t,e){return t||e.attributes.target_temp_high!==e.attributes.target_temp_low},!1),h.addColumn("number",d+" current temperature"),i?(h.addColumn("number",d+" target temperature high"),h.addColumn("number",d+" target temperature low"),o=[!1,!0,!0],u=function(t){var r=e(t.attributes.current_temperature),n=e(t.attributes.target_temp_high),i=e(t.attributes.target_temp_low);a([t.lastUpdatedAsDate,r,n,i],o)}):(h.addColumn("number",d+" target temperature"),o=[!1,!0],u=function(t){var r=e(t.attributes.current_temperature),n=e(t.attributes.temperature);a([t.lastUpdatedAsDate,r,n],o)}),t.forEach(u)):"climate"===l?(i=t.reduce(function(t,e){return t||e.attributes.target_temp_high!==e.attributes.target_temp_low},!1),h.addColumn("number",d+" current temperature"),i?(h.addColumn("number",d+" target temperature high"),h.addColumn("number",d+" target temperature low"),o=[!1,!0,!0],u=function(t){var r=e(t.attributes.current_temperature),n=e(t.attributes.target_temp_high),i=e(t.attributes.target_temp_low);a([t.lastUpdatedAsDate,r,n,i],o)}):(h.addColumn("number",d+" target temperature"),o=[!1,!0],u=function(t){var r=e(t.attributes.current_temperature),n=e(t.attributes.temperature);a([t.lastUpdatedAsDate,r,n],o)}),t.forEach(u)):(h.addColumn("number",d),o="sensor"!==l&&[!0],t.forEach(function(t){var r=e(t.state);a([t.lastChangedAsDate,r],o)})),a([n].concat(r.slice(1)),!1),h.addRows(c),h}),u=1===i.length?i[0]:i.slice(1).reduce(function(e,a){return window.google.visualization.data.join(e,a,"full",[[0,0]],t(1,e.getNumberOfColumns()),t(1,a.getNumberOfColumns()))},i[0]),this.chartEngine.draw(u,a)))}})}()</script><dom-module id="state-history-charts" assetpath="components/"><template><style>:host{display:block}.loading-container{text-align:center;padding:8px}.loading{height:0;overflow:hidden}</style><google-legacy-loader on-api-load="googleApiLoaded"></google-legacy-loader><div hidden$="[[!isLoading]]" class="loading-container"><paper-spinner active="" alt="Updating history data"></paper-spinner></div><div class$="[[computeContentClasses(isLoading)]]"><template is="dom-if" if="[[computeIsEmpty(stateHistory)]]">No state history found.</template><state-history-chart-timeline data="[[groupedStateHistory.timeline]]" is-single-device="[[isSingleDevice]]"></state-history-chart-timeline><template is="dom-repeat" items="[[groupedStateHistory.line]]"><state-history-chart-line unit="[[item.unit]]" data="[[item.data]]" is-single-device="[[isSingleDevice]]"></state-history-chart-line></template></div></template></dom-module><script>Polymer({is:"state-history-charts",properties:{stateHistory:{type:Object},isLoadingData:{type:Boolean,value:!1},apiLoaded:{type:Boolean,value:!1},isLoading:{type:Boolean,computed:"computeIsLoading(isLoadingData, apiLoaded)"},groupedStateHistory:{type:Object,computed:"computeGroupedStateHistory(isLoading, stateHistory)"},isSingleDevice:{type:Boolean,computed:"computeIsSingleDevice(stateHistory)"}},computeIsSingleDevice:function(t){return t&&1===t.size},computeGroupedStateHistory:function(t,e){var i,o={},n=[];return t||!e?{line:[],timeline:[]}:(e.forEach(function(t){var e,i;t&&0!==t.size&&(e=t.find(function(t){return"unit_of_measurement"in t.attributes}),i=!!e&&e.attributes.unit_of_measurement,i?i in o?o[i].push(t.toArray()):o[i]=[t.toArray()]:n.push(t.toArray()))}),n=n.length>0&&n,i=Object.keys(o).map(function(t){return{unit:t,data:o[t]}}),{line:i,timeline:n})},googleApiLoaded:function(){window.google.load("visualization","1",{packages:["timeline","corechart"],callback:function(){this.apiLoaded=!0}.bind(this)})},computeContentClasses:function(t){return t?"loading":""},computeIsLoading:function(t,e){return t||!e},computeIsEmpty:function(t){return t&&0===t.size}})</script><dom-module id="more-info-automation" assetpath="more-infos/"><template><style>paper-button{color:var(--default-primary-color);font-weight:500;top:3px;height:37px}</style><p>Last triggered:<ha-relative-time datetime="[[stateObj.attributes.last_triggered]]"></ha-relative-time></p><paper-button on-tap="handleTriggerTapped">TRIGGER</paper-button></template></dom-module><script>Polymer({is:"more-info-automation",properties:{hass:{type:Object},stateObj:{type:Object}},handleTriggerTapped:function(){this.hass.serviceActions.callService("automation","trigger",{entity_id:this.stateObj.entityId})}})</script><dom-module id="paper-range-slider" assetpath="../bower_components/paper-range-slider/"><template><style>:host{--paper-range-slider-width:200px;@apply(--layout);@apply(--layout-justified);@apply(--layout-center);--paper-range-slider-lower-color:var(--paper-grey-400);--paper-range-slider-active-color:var(--primary-color);--paper-range-slider-higher-color:var(--paper-grey-400);--paper-range-slider-knob-color:var(--primary-color);--paper-range-slider-pin-color:var(--primary-color);--paper-range-slider-pin-start-color:var(--paper-grey-400);--paper-range-slider-knob-start-color:transparent;--paper-range-slider-knob-start-border-color:var(--paper-grey-400)}#sliderOuterDiv_0{display:inline-block;width:var(--paper-range-slider-width)}#sliderOuterDiv_1{position:relative;height:calc(30px + var(--paper-single-range-slider-height,2px));margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sliderKnobMinMax{position:absolute;left:0;top:0;margin-left:calc(-15px - var(--paper-single-range-slider-height,2px)/ 2);width:calc(30px + var(--paper-single-range-slider-height,2px));height:calc(30px + var(--paper-single-range-slider-height,2px))}.divSpanWidth{position:absolute;width:100%;display:block;top:0}#sliderMax{--paper-single-range-slider-bar-color:transparent;--paper-single-range-slider-knob-color:var(--paper-range-slider-knob-color);--paper-single-range-slider-pin-color:var(--paper-range-slider-pin-color);--paper-single-range-slider-active-color:var(--paper-range-slider-active-color);--paper-single-range-slider-secondary-color:var(--paper-range-slider-higher-color);--paper-single-range-slider-pin-start-color:var(--paper-range-slider-pin-start-color);--paper-single-range-slider-knob-start-color:var(--paper-range-slider-knob-start-color);--paper-single-range-slider-knob-start-border-color:var(--paper-range-slider-knob-start-border-color)}#sliderMin{--paper-single-range-slider-active-color:var(--paper-range-slider-lower-color);--paper-single-range-slider-secondary-color:transparent;--paper-single-range-slider-knob-color:var(--paper-range-slider-knob-color);--paper-single-range-slider-pin-color:var(--paper-range-slider-pin-color);--paper-single-range-slider-pin-start-color:var(--paper-range-slider-pin-start-color);--paper-single-range-slider-knob-start-color:var(--paper-range-slider-knob-start-color);--paper-single-range-slider-knob-start-border-color:var(--paper-range-slider-knob-start-border-color)}</style><div id="sliderOuterDiv_0" style=""><div id="sliderOuterDiv_1"><div id="backDiv" class="divSpanWidth" on-down="_backDivDown" on-tap="_backDivTap" on-up="_backDivUp" on-track="_backDivOnTrack" on-transitionend="_backDivTransEnd"><div id="backDivInner_0" style="line-height:200%"><br></div></div><div id="sliderKnobMin" class="sliderKnobMinMax" on-down="_backDivDown" on-up="_backDivUp" on-track="_sliderKnobMinOnTrack"></div><div id="sliderKnobMax" class="sliderKnobMinMax" on-down="_backDivDown" on-up="_backDivUp" on-track="_sliderKnobMaxOnTrack"></div><div class="divSpanWidth" style="pointer-events:none"><paper-single-range-slider id="sliderMax" disabled$="[[disabled]]" on-down="_sliderMaxDown" on-up="_sliderMaxUp" step="[[step]]" min="[[min]]" max="[[max]]" value="[[valueMax]]" secondary-progress="[[max]]" style="width:100%"></paper-single-range-slider></div><div class="divSpanWidth" style="pointer-events:none"><paper-single-range-slider id="sliderMin" disabled$="[[disabled]]" on-down="_sliderMinDown" on-up="_sliderMinUp" noink="" step="[[step]]" min="[[min]]" max="[[max]]" value="[[valueMin]]" style="width:100%"></paper-single-range-slider></div><div id="backDivInner_1" style="line-height:100%"><br></div></div></div></template><script>Polymer({is:"paper-range-slider",behaviors:[Polymer.IronRangeBehavior],properties:{sliderWidth:{type:String,value:"",notify:!0,reflectToAttribute:!0},style:{type:String,value:"",notify:!0,reflectToAttribute:!0},min:{type:Number,value:0,notify:!0,reflectToAttribute:!0},max:{type:Number,value:100,notify:!0,reflectToAttribute:!0},valueMin:{type:Number,value:0,notify:!0,reflectToAttribute:!0},valueMax:{type:Number,value:100,notify:!0,reflectToAttribute:!0},step:{type:Number,value:1,notify:!0,reflectToAttribute:!0},valueDiffMin:{type:Number,value:0,notify:!0,reflectToAttribute:!0},valueDiffMax:{type:Number,value:0,notify:!0,reflectToAttribute:!0},alwaysShowPin:{type:Boolean,value:!1,notify:!0},pin:{type:Boolean,value:!1,notify:!0},snaps:{type:Boolean,value:!1,notify:!0},disabled:{type:Boolean,value:!1,notify:!0},singleSlider:{type:Boolean,value:!1,notify:!0},transDuration:{type:Number,value:250},tapValueExtend:{type:Boolean,value:!0,notify:!0},tapValueReduce:{type:Boolean,value:!1,notify:!0},tapValueMove:{type:Boolean,value:!1,notify:!0}},ready:function(){function i(i){return void 0!=i&&null!=i}i(this._nInitTries)||(this._nInitTries=0);var t=this.$$("#sliderMax").$$("#sliderContainer");if(i(t)&&(t=t.offsetWidth>0),i(t)&&(t=this.$$("#sliderMin").$$("#sliderContainer")),i(t)&&(t=t.offsetWidth>0),i(t))this._renderedReady();else{if(this._nInitTries<1e3){var e=this;setTimeout(function(){e.ready()},10)}else console.error("could not properly initialize the underlying paper-single-range-slider elements ...");this._nInitTries++}},_renderedReady:function(){this.init(),this._setPadding();var i=this;this.$$("#sliderMin").addEventListener("immediate-value-change",function(t){i._setValueMinMax(i._getValuesMinMax(this.immediateValue,null)),i.$.sliderMin._expandKnob(),i.$.sliderMax._expandKnob()}),this.$$("#sliderMax").addEventListener("immediate-value-change",function(t){i._setValueMinMax(i._getValuesMinMax(null,this.immediateValue))}),this.$$("#sliderMin").addEventListener("change",function(t){i._setValueMinMax(i._getValuesMinMax(this.immediateValue,null)),i.alwaysShowPin&&i.$.sliderMin._expandKnob()}),this.$$("#sliderMax").addEventListener("change",function(t){i._setValueMinMax(i._getValuesMinMax(null,this.immediateValue)),i.alwaysShowPin&&i.$.sliderMax._expandKnob()})},_setPadding:function(){var i=document.createElement("div");i.setAttribute("style","position:absolute; top:0px; opacity:0;"),i.innerHTML="invisibleText",document.body.insertBefore(i,document.body.children[0]);var t=i.offsetHeight/2;this.style.paddingTop=t+"px",this.style.paddingBottom=t+"px",i.parentNode.removeChild(i)},_setValueDiff:function(){this._valueDiffMax=Math.max(this.valueDiffMax,0),this._valueDiffMin=Math.max(this.valueDiffMin,0)},_getValuesMinMax:function(i,t){var e=null!=i&&i>=this.min&&i<=this.max,s=null!=t&&t>=this.min&&t<=this.max;if(!e&&!s)return[this.valueMin,this.valueMax];var n=e?i:this.valueMin,a=s?t:this.valueMax;n=Math.min(Math.max(n,this.min),this.max),a=Math.min(Math.max(a,this.min),this.max);var l=a-n;return e?l<this._valueDiffMin?(a=Math.min(this.max,n+this._valueDiffMin),l=a-n,l<this._valueDiffMin&&(n=a-this._valueDiffMin)):l>this._valueDiffMax&&this._valueDiffMax>0&&(a=n+this._valueDiffMax):l<this._valueDiffMin?(n=Math.max(this.min,a-this._valueDiffMin),l=a-n,l<this._valueDiffMin&&(a=n+this._valueDiffMin)):l>this._valueDiffMax&&this._valueDiffMax>0&&(n=a-this._valueDiffMax),[n,a]},_setValueMin:function(i){i=Math.max(i,this.min),this.$$("#sliderMin").value=i,this.valueMin=i},_setValueMax:function(i){i=Math.min(i,this.max),this.$$("#sliderMax").value=i,this.valueMax=i},_setValueMinMax:function(i){this._setValueMin(i[0]),this._setValueMax(i[1]),this._updateSliderKnobMinMax(),this.updateValues()},_setValues:function(i,t){null!=i&&(i<this.min||i>this.max)&&(i=null),null!=t&&(t<this.min||t>this.max)&&(t=null),null!=i&&null!=t&&(i=Math.min(i,t)),this._setValueMinMax(this._getValuesMinMax(i,t))},_updateSliderKnobMinMax:function(){var i=this.$$("#sliderMax").$$("#sliderContainer").offsetWidth,t=i*(this.valueMin-this.min)/(this.max-this.min)+.5*this.$$("#sliderKnobMin").offsetWidth,e=i*(this.valueMax-this.min)/(this.max-this.min)+.5*this.$$("#sliderKnobMax").offsetWidth;this.$$("#sliderKnobMin").style.left=t+"px",this.$$("#sliderKnobMax").style.left=e+"px"},_backDivOnTrack:function(i){switch(i.stopPropagation(),i.detail.state){case"start":this._backDivTrackStart(i);break;case"track":this._backDivTrackDuring(i);break;case"end":this._backDivTrackEnd()}},_backDivTrackStart:function(i){},_backDivTrackDuring:function(i){this._x1_Min=this._x0_Min+i.detail.dx;var t=this._calcStep(this._getRatioPos(this.$$("#sliderMin"),this._x1_Min/this._xWidth));this._x1_Max=this._x0_Max+i.detail.dx;var e=this._calcStep(this._getRatioPos(this.$$("#sliderMax"),this._x1_Max/this._xWidth));t>=this.min&&e<=this.max&&this._setValuesWithCurrentDiff(t,e,!1)},_setValuesWithCurrentDiff:function(i,t,e){var s=this._valueDiffMin,n=this._valueDiffMax;this._valueDiffMin=this.valueMax-this.valueMin,this._valueDiffMax=this.valueMax-this.valueMin,e?this.setValues(i,t):this._setValues(i,t),this._valueDiffMin=s,this._valueDiffMax=n},_backDivTrackEnd:function(){},_sliderKnobMinOnTrack:function(i){this._x1_Min=this._x0_Min+i.detail.dx;var t=this._calcStep(this._getRatioPos(this.$$("#sliderMin"),this._x1_Min/this._xWidth));this._setValues(t,null)},_sliderKnobMaxOnTrack:function(i){this._x1_Max=this._x0_Max+i.detail.dx;var t=this._calcStep(this._getRatioPos(this.$$("#sliderMax"),this._x1_Max/this._xWidth));this._setValues(null,t)},_sliderMinDown:function(){this.$$("#sliderMax")._expandKnob()},_sliderMaxDown:function(i){this.singleSlider?this._setValues(null,this._getEventValue(i)):this.$$("#sliderMin")._expandKnob()},_sliderMinUp:function(){this.alwaysShowPin?this.$$("#sliderMin")._expandKnob():this.$$("#sliderMax")._resetKnob()},_sliderMaxUp:function(){this.alwaysShowPin?this.$$("#sliderMax")._expandKnob():(this.$$("#sliderMin")._resetKnob(),this.singleSlider&&this.$$("#sliderMax")._resetKnob())},_getEventValue:function(i){var t=this.$$("#sliderMax").$$("#sliderContainer").offsetWidth,e=this.$$("#sliderMax").$$("#sliderContainer").getBoundingClientRect(),s=(i.detail.x-e.left)/t,n=this.min+s*(this.max-this.min);return n},_backDivTap:function(i){this._setValueNow=function(i,t){this.tapValueMove?this._setValuesWithCurrentDiff(i,t,!0):this.setValues(i,t)};var t=this._getEventValue(i);if(t>this.valueMin&&t<this.valueMax){if(this.tapValueReduce){var e=t<this.valueMin+(this.valueMax-this.valueMin)/2;e?this._setValueNow(t,null):this._setValueNow(null,t)}}else(this.tapValueExtend||this.tapValueMove)&&(t<this.valueMin&&this._setValueNow(t,null),t>this.valueMax&&this._setValueNow(null,t))},_backDivDown:function(i){this._sliderMinDown(),this._sliderMaxDown(),this._xWidth=this.$$("#sliderMin").$$("#sliderBar").offsetWidth,this._x0_Min=this.$$("#sliderMin").ratio*this._xWidth,this._x0_Max=this.$$("#sliderMax").ratio*this._xWidth},_backDivUp:function(){this._sliderMinUp(),this._sliderMaxUp()},_backDivTransEnd:function(i){},_getRatioPos:function(i,t){return Math.max(i.min,Math.min(i.max,(i.max-i.min)*t+i.min))},init:function(){this.setSingleSlider(this.singleSlider),this.setDisabled(this.disabled),this.alwaysShowPin&&(this.pin=!0),this.$$("#sliderMin").pin=this.pin,this.$$("#sliderMax").pin=this.pin,this.$$("#sliderMin").snaps=this.snaps,this.$$("#sliderMax").snaps=this.snaps,""!=this.sliderWidth&&(this.customStyle["--paper-range-slider-width"]=this.sliderWidth,this.updateStyles()),this.$$("#sliderMin").$$("#sliderBar").$$("#progressContainer").style.background="transparent",this._prevUpdateValues=[this.min,this.max],this._setValueDiff(),this._setValueMinMax(this._getValuesMinMax(this.valueMin,this.valueMax)),this.alwaysShowPin&&(this.$$("#sliderMin")._expandKnob(),this.$$("#sliderMax")._expandKnob())},setValues:function(i,t){this.$$("#sliderMin")._setTransiting(!0),this.$$("#sliderMax")._setTransiting(!0),this._setValues(i,t);var e=this;setTimeout(function(){e.$.sliderMin._setTransiting(!1),e.$.sliderMax._setTransiting(!1)},e.transDuration)},updateValues:function(){this._prevUpdateValues[0]==this.valueMin&&this._prevUpdateValues[1]==this.valueMax||(this._prevUpdateValues=[this.valueMin,this.valueMax],this.async(function(){this.fire("updateValues")}))},setMin:function(i){this.max<i&&(this.max=i),this.min=i,this._prevUpdateValues=[this.min,this.max],this.valueMin<this.min?this._setValues(this.min,null):this._updateSliderKnobMinMax()},setMax:function(i){this.min>i&&(this.min=i),this.max=i,this._prevUpdateValues=[this.min,this.max],this.valueMax>this.max?this._setValues(null,this.max):this._updateSliderKnobMinMax()},setStep:function(i){this.step=i},setValueDiffMin:function(i){this._valueDiffMin=i},setValueDiffMax:function(i){this._valueDiffMax=i},setTapValueExtend:function(i){this.tapValueExtend=i},setTapValueReduce:function(i){this.tapValueReduce=i},setTapValueMove:function(i){this.tapValueMove=i},setDisabled:function(i){this.disabled=i;var t=i?"none":"auto";this.$$("#sliderMax").$$("#sliderKnobInner").style.pointerEvents=t,this.$$("#sliderMin").$$("#sliderKnobInner").style.pointerEvents=t,this.$$("#sliderOuterDiv_1").style.pointerEvents=t,this.$$("#sliderKnobMin").style.pointerEvents=t,this.$$("#sliderKnobMax").style.pointerEvents=t},setSingleSlider:function(i){this.singleSlider=i,i?(this.$$("#backDiv").style.display="none",this.$$("#sliderMax").style.pointerEvents="auto",this.$$("#sliderMax").style.display="",this.$$("#sliderMin").style.display="none",this.$$("#sliderKnobMin").style.pointerEvents="none",this.$$("#sliderKnobMax").style.pointerEvents="none"):(this.$$("#backDiv").style.display="block",this.$$("#sliderMax").style.pointerEvents="none",this.$$("#sliderMax").style.display="",this.$$("#sliderMin").style.display="",this.$$("#sliderKnobMin").style.pointerEvents="auto",this.$$("#sliderKnobMax").style.pointerEvents="auto"),this.$$("#sliderMax").$$("#sliderContainer").style.pointerEvents=this.singleSlider?"auto":"none",this.$$("#sliderMin").$$("#sliderContainer").style.pointerEvents="none"}})</script></dom-module><dom-module id="paper-single-range-slider" assetpath="../bower_components/paper-range-slider/"><template strip-whitespace=""><style>:host{@apply(--layout);@apply(--layout-justified);@apply(--layout-center);width:200px;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;--paper-progress-active-color:var(--paper-single-range-slider-active-color, --google-blue-700);--paper-progress-secondary-color:var(--paper-single-range-slider-secondary-color, --google-blue-300);--paper-progress-disabled-active-color:var(--paper-single-range-slider-disabled-active-color, --paper-grey-400);--paper-progress-disabled-secondary-color:var(--paper-single-range-slider-disabled-secondary-color, --paper-grey-400)}:host(:focus){outline:0}#sliderContainer{position:relative;width:100%;height:calc(30px + var(--paper-single-range-slider-height,2px));margin-left:calc(15px + var(--paper-single-range-slider-height,2px)/ 2);margin-right:calc(15px + var(--paper-single-range-slider-height,2px)/ 2)}#sliderContainer:focus{outline:0}#sliderContainer.editable{margin-top:12px;margin-bottom:12px}.bar-container{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.ring>.bar-container{left:calc(5px + var(--paper-single-range-slider-height,2px)/ 2);transition:left .18s ease}.ring.expand.dragging>.bar-container{transition:none}.ring.expand:not(.pin)>.bar-container{left:calc(8px + var(--paper-single-range-slider-height,2px)/ 2)}#sliderBar{padding:15px 0;width:100%;background-color:var(--paper-single-range-slider-bar-color,transparent);--paper-progress-container-color:var(--paper-single-range-slider-container-color, --paper-grey-400);--paper-progress-height:var(--paper-single-range-slider-height, 2px)}.slider-markers{position:absolute;top:calc(14px + var(--paper-single-range-slider-height,2px)/ 2);height:var(--paper-single-range-slider-height,2px);left:0;right:-1px;box-sizing:border-box;pointer-events:none;@apply(--layout-horizontal)}.slider-marker{@apply(--layout-flex)}.slider-marker::after,.slider-markers::after{content:"";display:block;margin-left:-1px;width:2px;height:2px;border-radius:50%;background-color:#000}#sliderKnob{position:absolute;left:0;top:0;margin-left:calc(-15px - var(--paper-single-range-slider-height,2px)/ 2);width:calc(30px + var(--paper-single-range-slider-height,2px));height:calc(30px + var(--paper-single-range-slider-height,2px))}.transiting>#sliderKnob{transition:left 80ms ease}#sliderKnob:focus{outline:0}#sliderKnob.dragging{transition:none}.snaps>#sliderKnob.dragging{transition:-webkit-transform 80ms ease;transition:transform 80ms ease}#sliderKnobInner{margin:10px;width:calc(100% - 20px);height:calc(100% - 20px);background-color:var(--paper-single-range-slider-knob-color,--google-blue-700);border:2px solid var(--paper-single-range-slider-knob-color,--google-blue-700);border-radius:50%;-moz-box-sizing:border-box;box-sizing:border-box;transition-property:-webkit-transform,background-color,border;transition-property:transform,background-color,border;transition-duration:.18s;transition-timing-function:ease}.expand:not(.pin)>#sliderKnob>#sliderKnobInner{-webkit-transform:scale(1.5);transform:scale(1.5)}.ring>#sliderKnob>#sliderKnobInner{background-color:var(--paper-single-range-slider-knob-start-color,transparent);border:2px solid var(--paper-single-range-slider-knob-start-border-color,--paper-grey-400)}#sliderKnobInner::before{background-color:var(--paper-single-range-slider-pin-color,--google-blue-700)}.pin>#sliderKnob>#sliderKnobInner::before{content:"";position:absolute;top:0;left:50%;margin-left:-13px;width:26px;height:26px;border-radius:50% 50% 50% 0;-webkit-transform:rotate(-45deg) scale(0) translate(0);transform:rotate(-45deg) scale(0) translate(0)}#sliderKnobInner::after,#sliderKnobInner::before{transition:-webkit-transform .18s ease,background-color .18s ease;transition:transform .18s ease,background-color .18s ease}.pin.ring>#sliderKnob>#sliderKnobInner::before{background-color:var(--paper-single-range-slider-pin-start-color,--paper-grey-400)}.pin.expand>#sliderKnob>#sliderKnobInner::before{-webkit-transform:rotate(-45deg) scale(1) translate(17px,-17px);transform:rotate(-45deg) scale(1) translate(17px,-17px)}.pin>#sliderKnob>#sliderKnobInner::after{content:attr(value);position:absolute;top:0;left:50%;margin-left:-16px;width:32px;height:26px;text-align:center;color:var(--paper-single-range-slider-font-color,#fff);font-size:10px;-webkit-transform:scale(0) translate(0);transform:scale(0) translate(0)}.pin.expand>#sliderKnob>#sliderKnobInner::after{-webkit-transform:scale(1) translate(0,-17px);transform:scale(1) translate(0,-17px)}.slider-input{width:50px;overflow:hidden;--paper-input-container-input:{text-align:center};@apply(--paper-single-range-slider-input)}#sliderContainer.disabled{pointer-events:none}.disabled>#sliderKnob>#sliderKnobInner{background-color:var(--paper-single-range-slider-disabled-knob-color,--paper-grey-400);border:2px solid var(--paper-single-range-slider-disabled-knob-color,--paper-grey-400);-webkit-transform:scale3d(.75,.75,1);transform:scale3d(.75,.75,1)}.disabled.ring>#sliderKnob>#sliderKnobInner{background-color:var(--paper-single-range-slider-knob-start-color,transparent);border:2px solid var(--paper-single-range-slider-knob-start-border-color,--paper-grey-400)}paper-ripple{color:var(--paper-single-range-slider-knob-color,--google-blue-700)}</style><div id="sliderContainer" class$="[[_getClassNames(disabled, pin, snaps, immediateValue, min, expand, dragging, transiting, editable)]]"><div class="bar-container"><paper-progress disabled$="[[disabled]]" id="sliderBar" aria-hidden="true" min="[[min]]" max="[[max]]" step="[[step]]" value="[[immediateValue]]" secondary-progress="[[secondaryProgress]]" on-down="_bardown" on-up="_resetKnob" on-track="_onTrack"></paper-progress></div><template is="dom-if" if="[[snaps]]"><div class="slider-markers"><template is="dom-repeat" items="[[markers]]"><div class="slider-marker"></div></template></div></template><div id="sliderKnob" on-down="_knobdown" on-up="_resetKnob" on-track="_onTrack" on-transitionend="_knobTransitionEnd"><div id="sliderKnobInner" value$="[[immediateValue]]"></div></div></div><template is="dom-if" if="[[editable]]"><paper-input id="input" type="number" step="[[step]]" min="[[min]]" max="[[max]]" class="slider-input" disabled$="[[disabled]]" value="[[immediateValue]]" on-change="_changeValue" on-keydown="_inputKeyDown" no-label-float=""></paper-input></template></template><script>Polymer({is:"paper-single-range-slider",behaviors:[Polymer.IronA11yKeysBehavior,Polymer.IronFormElementBehavior,Polymer.PaperInkyFocusBehavior,Polymer.IronRangeBehavior],properties:{snaps:{type:Boolean,value:!1,notify:!0},pin:{type:Boolean,value:!1,notify:!0},secondaryProgress:{type:Number,value:0,notify:!0,observer:"_secondaryProgressChanged"},editable:{type:Boolean,value:!1},immediateValue:{type:Number,value:0,readOnly:!0,notify:!0},maxMarkers:{type:Number,value:0,notify:!0},expand:{type:Boolean,value:!1,readOnly:!0},dragging:{type:Boolean,value:!1,readOnly:!0},transiting:{type:Boolean,value:!1,readOnly:!0},markers:{type:Array,readOnly:!0,value:[]}},observers:["_updateKnob(value, min, max, snaps, step)","_valueChanged(value)","_immediateValueChanged(immediateValue)","_updateMarkers(maxMarkers, min, max, snaps)"],hostAttributes:{role:"slider",tabindex:0},keyBindings:{"left down pagedown home":"_decrementKey","right up pageup end":"_incrementKey"},increment:function(){this.value=this._clampValue(this.value+this.step)},decrement:function(){this.value=this._clampValue(this.value-this.step)},_updateKnob:function(t,e,i,s,a){this.setAttribute("aria-valuemin",e),this.setAttribute("aria-valuemax",i),this.setAttribute("aria-valuenow",t),this._positionKnob(this._calcRatio(t))},_valueChanged:function(){this.fire("value-change")},_immediateValueChanged:function(){this.dragging?this.fire("immediate-value-change"):this.value=this.immediateValue},_secondaryProgressChanged:function(){this.secondaryProgress=this._clampValue(this.secondaryProgress)},_expandKnob:function(){this._setExpand(!0)},_resetKnob:function(){this.cancelDebouncer("expandKnob"),this._setExpand(!1)},_positionKnob:function(t){this._setImmediateValue(this._calcStep(this._calcKnobPosition(t))),this._setRatio(this._calcRatio(this.immediateValue)),this.$.sliderKnob.style.left=100*this.ratio+"%",this.dragging&&(this._knobstartx=this.ratio*this._w,this.translate3d(0,0,0,this.$.sliderKnob))},_calcKnobPosition:function(t){return(this.max-this.min)*t+this.min},_onTrack:function(t){switch(t.stopPropagation(),t.detail.state){case"start":this._trackStart(t);break;case"track":this._trackX(t);break;case"end":this._trackEnd()}},_trackStart:function(t){this._w=this.$.sliderBar.offsetWidth,this._x=this.ratio*this._w,this._startx=this._x,this._knobstartx=this._startx,this._minx=-this._startx,this._maxx=this._w-this._startx,this.$.sliderKnob.classList.add("dragging"),this._setDragging(!0)},_trackX:function(t){this.dragging||this._trackStart(t);var e=Math.min(this._maxx,Math.max(this._minx,t.detail.dx));this._x=this._startx+e;var i=this._calcStep(this._calcKnobPosition(this._x/this._w));this._setImmediateValue(i);var s=this._calcRatio(this.immediateValue)*this._w-this._knobstartx;this.translate3d(s+"px",0,0,this.$.sliderKnob)},_trackEnd:function(){var t=this.$.sliderKnob.style;this.$.sliderKnob.classList.remove("dragging"),this._setDragging(!1),this._resetKnob(),this.value=this.immediateValue,t.transform=t.webkitTransform="",this.fire("change")},_knobdown:function(t){this._expandKnob(),t.preventDefault(),this.focus()},_bardown:function(t){this._w=this.$.sliderBar.offsetWidth;var e=this.$.sliderBar.getBoundingClientRect(),i=(t.detail.x-e.left)/this._w,s=this.ratio;this._setTransiting(!0),this._positionKnob(i),this.debounce("expandKnob",this._expandKnob,60),s===this.ratio&&this._setTransiting(!1),this.async(function(){this.fire("change")}),t.preventDefault(),this.focus()},_knobTransitionEnd:function(t){t.target===this.$.sliderKnob&&this._setTransiting(!1)},_updateMarkers:function(t,e,i,s){s||this._setMarkers([]);var a=Math.round((i-e)/this.step);a>t&&(a=t),this._setMarkers(new Array(a))},_mergeClasses:function(t){return Object.keys(t).filter(function(e){return t[e]}).join(" ")},_getClassNames:function(){return this._mergeClasses({disabled:this.disabled,pin:this.pin,snaps:this.snaps,ring:this.immediateValue<=this.min,expand:this.expand,dragging:this.dragging,transiting:this.transiting,editable:this.editable})},_incrementKey:function(t){this.disabled||("end"===t.detail.key?this.value=this.max:this.increment(),this.fire("change"))},_decrementKey:function(t){this.disabled||("home"===t.detail.key?this.value=this.min:this.decrement(),this.fire("change"))},_changeValue:function(t){this.value=t.target.value,this.fire("change")},_inputKeyDown:function(t){t.stopPropagation()},_createRipple:function(){return this._rippleContainer=this.$.sliderKnob,Polymer.PaperInkyFocusBehaviorImpl._createRipple.call(this)},_focusedChanged:function(t){t&&this.ensureRipple(),this.hasRipple()&&(t?this._ripple.style.display="":this._ripple.style.display="none",this._ripple.holdDown=t)}})</script></dom-module><dom-module id="more-info-climate" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex"></style><style>:host{color:var(--primary-text-color);--paper-input-container-input:{text-transform:capitalize};}.container-aux_heat,.container-away_mode,.container-fan_list,.container-humidity,.container-operation_list,.container-swing_list,.container-temperature{display:none}.has-aux_heat .container-aux_heat,.has-away_mode .container-away_mode,.has-fan_list .container-fan_list,.has-humidity .container-humidity,.has-operation_list .container-operation_list,.has-swing_list .container-swing_list,.has-temperature .container-temperature{display:block}.container-fan_list iron-icon,.container-operation_list iron-icon,.container-swing_list iron-icon{margin:22px 16px 0 0}paper-dropdown-menu{width:100%}paper-slider{width:100%}.auto paper-slider{--paper-slider-active-color:var(--paper-orange-400);--paper-slider-secondary-color:var(--paper-blue-400)}.heat paper-slider{--paper-slider-active-color:var(--paper-orange-400);--paper-slider-secondary-color:var(--paper-green-400)}.cool paper-slider{--paper-slider-active-color:var(--paper-green-400);--paper-slider-secondary-color:var(--paper-blue-400)}.humidity{--paper-slider-active-color:var(--paper-blue-400);--paper-slider-secondary-color:var(--paper-blue-400)}paper-range-slider{--paper-range-slider-lower-color:var(--paper-orange-400);--paper-range-slider-active-color:var(--paper-green-400);--paper-range-slider-higher-color:var(--paper-blue-400);--paper-range-slider-knob-color:var(--primary-color);--paper-range-slider-pin-color:var(--primary-color);--paper-range-slider-width:100%}.single-row{padding:8px 0}.capitalize{text-transform:capitalize}</style><div class$="[[computeClassNames(stateObj)]]"><div class="container-temperature"><div class$="single-row, [[stateObj.attributes.operation_mode]]"><div hidden$="[[computeTargetTempHidden(stateObj)]]">Target Temperature</div><paper-slider min="[[stateObj.attributes.min_temp]]" max="[[stateObj.attributes.max_temp]]" secondary-progress="[[stateObj.attributes.max_temp]]" pin="" step="0.5" value="[[stateObj.attributes.temperature]]" hidden$="[[computeHideTempSlider(stateObj)]]" on-change="targetTemperatureSliderChanged"></paper-slider><paper-range-slider min="[[stateObj.attributes.min_temp]]" max="[[stateObj.attributes.max_temp]]" pin="" step="0.5" value-min="[[stateObj.attributes.target_temp_low]]" value-max="[[stateObj.attributes.target_temp_high]]" value-diff-min="2" hidden$="[[computeHideTempRangeSlider(stateObj)]]" on-change="targetTemperatureRangeSliderChanged"></paper-range-slider></div></div><div class="container-humidity"><div class="single-row"><div>Target Humidity</div><paper-slider class="humidity" min="[[stateObj.attributes.min_humidity]]" max="[[stateObj.attributes.max_humidity]]" secondary-progress="[[stateObj.attributes.max_humidity]]" step="1" pin="" value="[[stateObj.attributes.humidity]]" on-change="targetHumiditySliderChanged"></paper-slider></div></div><div class="container-operation_list"><div class="controls"><paper-dropdown-menu label-float="" label="Operation"><paper-menu class="dropdown-content" selected="{{operationIndex}}"><template is="dom-repeat" items="[[stateObj.attributes.operation_list]]"><paper-item class="capitalize">[[item]]</paper-item></template></paper-menu></paper-dropdown-menu></div></div><div class="container-fan_list"><paper-dropdown-menu label-float="" label="Fan Mode"><paper-menu class="dropdown-content" selected="{{fanIndex}}"><template is="dom-repeat" items="[[stateObj.attributes.fan_list]]"><paper-item>[[item]]</paper-item></template></paper-menu></paper-dropdown-menu></div><div class="container-swing_list"><paper-dropdown-menu label-float="" label="Swing Mode"><paper-menu class="dropdown-content" selected="{{swingIndex}}"><template is="dom-repeat" items="[[stateObj.attributes.swing_list]]"><paper-item>[[item]]</paper-item></template></paper-menu></paper-dropdown-menu></div><div class="container-away_mode"><div class="center horizontal layout single-row"><div class="flex">Away Mode</div><paper-toggle-button checked="[[awayToggleChecked]]" on-change="awayToggleChanged"></paper-toggle-button></div></div><div class="container-aux_heat"><div class="center horizontal layout single-row"><div class="flex">Aux Heat</div><paper-toggle-button checked="[[auxToggleChecked]]" on-change="auxToggleChanged"></paper-toggle-button></div></div></div></template></dom-module><script>Polymer({is:"more-info-climate",properties:{hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"},operationIndex:{type:Number,value:-1,observer:"handleOperationmodeChanged"},fanIndex:{type:Number,value:-1,observer:"handleFanmodeChanged"},swingIndex:{type:Number,value:-1,observer:"handleSwingmodeChanged"},awayToggleChecked:{type:Boolean},auxToggleChecked:{type:Boolean}},stateObjChanged:function(e){this.targetTemperatureSliderValue=e.attributes.temperature,this.awayToggleChecked="on"===e.attributes.away_mode,this.auxheatToggleChecked="on"===e.attributes.aux_heat,e.attributes.fan_list?this.fanIndex=e.attributes.fan_list.indexOf(e.attributes.fan_mode):this.fanIndex=-1,e.attributes.operation_list?this.operationIndex=e.attributes.operation_list.indexOf(e.attributes.operation_mode):this.operationIndex=-1,e.attributes.swing_list?this.swingIndex=e.attributes.swing_list.indexOf(e.attributes.swing_mode):this.swingIndex=-1,this.async(function(){this.fire("iron-resize")}.bind(this),500)},computeTargetTempHidden:function(e){return!e.attributes.temperature&&!e.attributes.target_temp_low&&!e.attributes.target_temp_high},computeHideTempRangeSlider:function(e){return!e.attributes.target_temp_low&&!e.attributes.target_temp_high},computeHideTempSlider:function(e){return!e.attributes.temperature},computeClassNames:function(e){return"more-info-climate "+window.hassUtil.attributeClassNames(e,["away_mode","aux_heat","temperature","humidity","operation_list","fan_list","swing_list"])},targetTemperatureSliderChanged:function(e){var t=e.target.value;t!==this.stateObj.attributes.temperature&&this.callServiceHelper("set_temperature",{temperature:t})},targetTemperatureRangeSliderChanged:function(e){var t=e.currentTarget.valueMin,a=e.currentTarget.valueMax;t===this.stateObj.attributes.target_temp_low&&a===this.stateObj.attributes.target_temp_high||this.callServiceHelper("set_temperature",{target_temp_low:t,target_temp_high:a})},targetHumiditySliderChanged:function(e){var t=e.target.value;t!==this.stateObj.attributes.humidity&&this.callServiceHelper("set_humidity",{humidity:t})},awayToggleChanged:function(e){var t="on"===this.stateObj.attributes.away_mode,a=e.target.checked;t!==a&&this.callServiceHelper("set_away_mode",{away_mode:a})},auxToggleChanged:function(e){var t="on"===this.stateObj.attributes.aux_heat,a=e.target.checked;t!==a&&this.callServiceHelper("set_aux_heat",{aux_heat:a})},handleFanmodeChanged:function(e){var t;""!==e&&e!==-1&&(t=this.stateObj.attributes.fan_list[e],t!==this.stateObj.attributes.fan_mode&&this.callServiceHelper("set_fan_mode",{fan_mode:t}))},handleOperationmodeChanged:function(e){var t;""!==e&&e!==-1&&(t=this.stateObj.attributes.operation_list[e],t!==this.stateObj.attributes.operation_mode&&this.callServiceHelper("set_operation_mode",{operation_mode:t}))},handleSwingmodeChanged:function(e){var t;""!==e&&e!==-1&&(t=this.stateObj.attributes.swing_list[e],t!==this.stateObj.attributes.swing_mode&&this.callServiceHelper("set_swing_mode",{swing_mode:t}))},callServiceHelper:function(e,t){t.entity_id=this.stateObj.entityId,this.hass.serviceActions.callService("climate",e,t).then(function(){this.stateObjChanged(this.stateObj)}.bind(this))}})</script><dom-module id="more-info-cover" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex"></style><style>.current_position,.current_tilt_position{max-height:0;overflow:hidden}.has-current_position .current_position,.has-current_tilt_position .current_tilt_position{max-height:90px}</style><div class$="[[computeClassNames(stateObj)]]"><div class="current_position"><div>Position</div><paper-slider min="0" max="100" value="{{coverPositionSliderValue}}" step="1" pin="" on-change="coverPositionSliderChanged"></paper-slider></div><div class="current_tilt_position"><div>Tilt position</div><paper-icon-button icon="mdi:arrow-top-right" on-tap="onOpenTiltTap" title="Open tilt" disabled="[[computeIsFullyOpenTilt(stateObj)]]"></paper-icon-button><paper-icon-button icon="mdi:stop" on-tap="onStopTiltTap" title="Stop tilt"></paper-icon-button><paper-icon-button icon="mdi:arrow-bottom-left" on-tap="onCloseTiltTap" title="Close tilt" disabled="[[computeIsFullyClosedTilt(stateObj)]]"></paper-icon-button><paper-slider min="0" max="100" value="{{coverTiltPositionSliderValue}}" step="1" pin="" on-change="coverTiltPositionSliderChanged"></paper-slider></div></div></template></dom-module><script>Polymer({is:"more-info-cover",properties:{hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"},coverPositionSliderValue:{type:Number},coverTiltPositionSliderValue:{type:Number}},stateObjChanged:function(t){this.coverPositionSliderValue=t.attributes.current_position,this.coverTiltPositionSliderValue=t.attributes.current_tilt_position},computeClassNames:function(t){return window.hassUtil.attributeClassNames(t,["current_position","current_tilt_position"])},coverPositionSliderChanged:function(t){this.hass.serviceActions.callService("cover","set_cover_position",{entity_id:this.stateObj.entityId,position:t.target.value})},coverTiltPositionSliderChanged:function(t){this.hass.serviceActions.callService("cover","set_cover_tilt_position",{entity_id:this.stateObj.entityId,tilt_position:t.target.value})},computeIsFullyOpenTilt:function(t){return 100===t.attributes.current_tilt_position},computeIsFullyClosedTilt:function(t){return 0===t.attributes.current_tilt_position},onOpenTiltTap:function(){this.hass.serviceActions.callService("cover","open_cover_tilt",{entity_id:this.stateObj.entityId})},onCloseTiltTap:function(){this.hass.serviceActions.callService("cover","close_cover_tilt",{entity_id:this.stateObj.entityId})},onStopTiltTap:function(){this.hass.serviceActions.callService("cover","stop_cover",{entity_id:this.stateObj.entityId})}})</script><dom-module id="more-info-default" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>.data-entry .value{max-width:200px}</style><div class="layout vertical"><template is="dom-repeat" items="[[computeDisplayAttributes(stateObj)]]" as="attribute"><div class="data-entry layout justified horizontal"><div class="key">[[formatAttribute(attribute)]]</div><div class="value">[[getAttributeValue(stateObj, attribute)]]</div></div></template></div></template></dom-module><script>!function(){"use strict";var e=["entity_picture","friendly_name","icon","unit_of_measurement","emulated_hue","emulated_hue_name","haaska_hidden","haaska_name","homebridge_hidden","homebridge_name"];Polymer({is:"more-info-default",properties:{stateObj:{type:Object}},computeDisplayAttributes:function(t){return t?Object.keys(t.attributes).filter(function(t){return e.indexOf(t)===-1}):[]},formatAttribute:function(e){return e.replace(/_/g," ")},getAttributeValue:function(e,t){var r=e.attributes[t];return Array.isArray(r)?r.join(", "):r}})}()</script><dom-module id="more-info-group" assetpath="more-infos/"><template><style>.child-card{margin-bottom:8px}.child-card:last-child{margin-bottom:0}</style><div id="groupedControlDetails"></div><template is="dom-repeat" items="[[states]]" as="state"><div class="child-card"><state-card-content state-obj="[[state]]" hass="[[hass]]"></state-card-content></div></template></template></dom-module><script>Polymer({is:"more-info-group",behaviors:[window.hassBehavior],properties:{hass:{type:Object},stateObj:{type:Object},states:{type:Array,bindNuclear:function(t){return[t.moreInfoGetters.currentEntity,t.entityGetters.entityMap,function(t,e){return t?t.attributes.entity_id.map(e.get.bind(e)):[]}]}}},observers:["statesChanged(stateObj, states)"],statesChanged:function(t,e){var s,i,a,n,r=!1;if(e&&e.length>0)for(s=e[0],r=s.set("entityId",t.entityId).set("attributes",Object.assign({},s.attributes)),i=0;i<e.length;i++)a=e[i],a&&a.domain&&r.domain!==a.domain&&(r=!1);r?window.hassUtil.dynamicContentUpdater(this.$.groupedControlDetails,"MORE-INFO-"+window.hassUtil.stateMoreInfoType(r).toUpperCase(),{stateObj:r,hass:this.hass}):(n=Polymer.dom(this.$.groupedControlDetails),n.lastChild&&n.removeChild(n.lastChild))}})</script><dom-module id="more-info-sun" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><template is="dom-repeat" items="[[computeOrder(risingDate, settingDate)]]"><div class="data-entry layout justified horizontal"><div class="key"><span>[[itemCaption(item)]]</span><ha-relative-time datetime-obj="[[itemDate(item)]]"></ha-relative-time></div><div class="value">[[itemValue(item)]]</div></div></template><div class="data-entry layout justified horizontal"><div class="key">Elevation</div><div class="value">[[stateObj.attributes.elevation]]</div></div></template></dom-module><script>Polymer({is:"more-info-sun",properties:{stateObj:{type:Object},risingDate:{type:Object,computed:"computeRising(stateObj)"},settingDate:{type:Object,computed:"computeSetting(stateObj)"}},computeRising:function(t){return new Date(t.attributes.next_rising)},computeSetting:function(t){return new Date(t.attributes.next_setting)},computeOrder:function(t,e){return t>e?["set","ris"]:["ris","set"]},itemCaption:function(t){return"ris"===t?"Rising ":"Setting "},itemDate:function(t){return"ris"===t?this.risingDate:this.settingDate},itemValue:function(t){return window.hassUtil.formatTime(this.itemDate(t))}})</script><dom-module id="more-info-configurator" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex"></style><style>p{margin:8px 0}p>img{max-width:100%}p.center{text-align:center}p.error{color:#C62828}p.submit{text-align:center;height:41px}paper-spinner{width:14px;height:14px;margin-right:20px}</style><div class="layout vertical"><template is="dom-if" if="[[isConfigurable]]"><p hidden$="[[!stateObj.attributes.description]]">[[stateObj.attributes.description]] <a hidden$="[[!stateObj.attributes.link_url]]" href="[[stateObj.attributes.link_url]]" target="_blank">[[stateObj.attributes.link_name]]</a></p><p class="error" hidden$="[[!stateObj.attributes.errors]]">[[stateObj.attributes.errors]]</p><p class="center" hidden$="[[!stateObj.attributes.description_image]]"><img src="[[stateObj.attributes.description_image]]"></p><template is="dom-repeat" items="[[stateObj.attributes.fields]]"><paper-input-container id="paper-input-fields-{{item.id}}"><label>[[item.name]]</label><input is="iron-input" type="[[item.type]]" id="[[item.id]]" on-change="fieldChanged"></paper-input-container></template><p class="submit"><paper-button raised="" disabled="[[isConfiguring]]" on-tap="submitClicked"><paper-spinner active="[[isConfiguring]]" hidden="[[!isConfiguring]]" alt="Configuring"></paper-spinner>[[submitCaption]]</paper-button></p></template></div></template></dom-module><script>Polymer({is:"more-info-configurator",behaviors:[window.hassBehavior],properties:{stateObj:{type:Object},action:{type:String,value:"display"},isStreaming:{type:Boolean,bindNuclear:function(i){return i.streamGetters.isStreamingEvents}},isConfigurable:{type:Boolean,computed:"computeIsConfigurable(stateObj)"},isConfiguring:{type:Boolean,value:!1},submitCaption:{type:String,computed:"computeSubmitCaption(stateObj)"},fieldInput:{type:Object,value:{}}},computeIsConfigurable:function(i){return"configure"===i.state},computeSubmitCaption:function(i){return i.attributes.submit_caption||"Set configuration"},fieldChanged:function(i){var t=i.target;this.fieldInput[t.id]=t.value},submitClicked:function(){var i={configure_id:this.stateObj.attributes.configure_id,fields:this.fieldInput};this.isConfiguring=!0,this.hass.serviceActions.callService("configurator","configure",i).then(function(){this.isConfiguring=!1,this.isStreaming||this.hass.syncActions.fetchAll()}.bind(this),function(){this.isConfiguring=!1}.bind(this))}})</script><dom-module id="more-info-script" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><div class="layout vertical"><div class="data-entry layout justified horizontal"><div class="key">Last Action</div><div class="value">[[stateObj.attributes.last_action]]</div></div></div></template></dom-module><script>Polymer({is:"more-info-script",properties:{stateObj:{type:Object}}})</script><dom-module id="ha-labeled-slider" assetpath="components/"><template><style>:host{display:block;padding-bottom:16px}.title{margin-bottom:16px;opacity:var(--dark-primary-opacity)}iron-icon{float:left;margin-top:4px;opacity:var(--dark-secondary-opacity)}.slider-container{margin-left:24px}</style><div class="title">[[caption]]</div><iron-icon icon="[[icon]]"></iron-icon><div class="slider-container"><paper-slider min="[[min]]" max="[[max]]" value="{{value}}"></paper-slider></div></template></dom-module><script>Polymer({is:"ha-labeled-slider",properties:{caption:{type:String},icon:{type:String},min:{type:Number},max:{type:Number},value:{type:Number,notify:!0}}})</script><dom-module id="ha-color-picker" assetpath="components/"><template><style>canvas{cursor:crosshair}</style><canvas width="[[width]]" height="[[height]]"></canvas></template></dom-module><script>Polymer({is:"ha-color-picker",properties:{color:{type:Object},width:{type:Number},height:{type:Number}},listeners:{mousedown:"onMouseDown",mouseup:"onMouseUp",touchstart:"onTouchStart",touchend:"onTouchEnd"},onMouseDown:function(t){this.onMouseMove(t),this.addEventListener("mousemove",this.onMouseMove)},onMouseUp:function(){this.removeEventListener("mousemove",this.onMouseMove)},onTouchStart:function(t){this.onTouchMove(t),this.addEventListener("touchmove",this.onTouchMove)},onTouchEnd:function(){this.removeEventListener("touchmove",this.onTouchMove)},onTouchMove:function(t){this.mouseMoveIsThrottled&&(this.mouseMoveIsThrottled=!1,this.processColorSelect(t.touches[0]),this.async(function(){this.mouseMoveIsThrottled=!0}.bind(this),100))},onMouseMove:function(t){this.mouseMoveIsThrottled&&(this.mouseMoveIsThrottled=!1,this.processColorSelect(t),this.async(function(){this.mouseMoveIsThrottled=!0}.bind(this),100))},processColorSelect:function(t){var o=this.canvas.getBoundingClientRect();t.clientX<o.left||t.clientX>=o.left+o.width||t.clientY<o.top||t.clientY>=o.top+o.height||this.onColorSelect(t.clientX-o.left,t.clientY-o.top)},onColorSelect:function(t,o){var e=this.context.getImageData(t,o,1,1).data;this.setColor({r:e[0],g:e[1],b:e[2]})},setColor:function(t){this.color=t,this.fire("colorselected",{rgb:this.color})},ready:function(){this.setColor=this.setColor.bind(this),this.mouseMoveIsThrottled=!0,this.canvas=this.children[0],this.context=this.canvas.getContext("2d"),this.drawGradient()},drawGradient:function(){var t,o,e,i,s;this.width&&this.height||(t=getComputedStyle(this)),o=this.width||parseInt(t.width,10),e=this.height||parseInt(t.height,10),i=this.context.createLinearGradient(0,0,o,0),i.addColorStop(0,"rgb(255,0,0)"),i.addColorStop(.16,"rgb(255,0,255)"),i.addColorStop(.32,"rgb(0,0,255)"),i.addColorStop(.48,"rgb(0,255,255)"),i.addColorStop(.64,"rgb(0,255,0)"),i.addColorStop(.8,"rgb(255,255,0)"),i.addColorStop(1,"rgb(255,0,0)"),this.context.fillStyle=i,this.context.fillRect(0,0,o,e),s=this.context.createLinearGradient(0,0,0,e),s.addColorStop(0,"rgba(255,255,255,1)"),s.addColorStop(.5,"rgba(255,255,255,0)"),s.addColorStop(.5,"rgba(0,0,0,0)"),s.addColorStop(1,"rgba(0,0,0,1)"),this.context.fillStyle=s,this.context.fillRect(0,0,o,e)}})</script><dom-module id="more-info-light" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex"></style><style>.effect_list{padding-bottom:16px}.brightness,.color_temp,.effect_list,.white_value{max-height:0;overflow:hidden;transition:max-height .5s ease-in}ha-color-picker{display:block;width:250px;max-height:0;overflow:hidden;transition:max-height .2s ease-in}.has-brightness .brightness,.has-color_temp .color_temp,.has-effect_list .effect_list,.has-white_value .white_value{max-height:84px}.has-rgb_color ha-color-picker{max-height:200px}</style><div class$="[[computeClassNames(stateObj)]]"><div class="effect_list"><paper-dropdown-menu label-float="" label="Effect"><paper-menu class="dropdown-content" selected="{{effectIndex}}"><template is="dom-repeat" items="[[stateObj.attributes.effect_list]]"><paper-item>[[item]]</paper-item></template></paper-menu></paper-dropdown-menu></div><div class="brightness"><ha-labeled-slider caption="Brightness" icon="mdi:brightness-5" max="255" value="{{brightnessSliderValue}}" on-change="brightnessSliderChanged"></ha-labeled-slider></div><div class="color_temp"><ha-labeled-slider caption="Color Temperature" icon="mdi:thermometer" min="154" max="500" value="{{ctSliderValue}}" on-change="ctSliderChanged"></ha-labeled-slider></div><div class="white_value"><ha-labeled-slider caption="White Value" icon="mdi:file-word-box" max="255" value="{{wvSliderValue}}" on-change="wvSliderChanged"></ha-labeled-slider></div><ha-color-picker on-colorselected="colorPicked" height="200" width="250"></ha-color-picker></div></template></dom-module><script>Polymer({is:"more-info-light",properties:{hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"},effectIndex:{type:Number,value:-1,observer:"effectChanged"},brightnessSliderValue:{type:Number,value:0},ctSliderValue:{type:Number,value:0},wvSliderValue:{type:Number,value:0}},stateObjChanged:function(t){t&&"on"===t.state?(this.brightnessSliderValue=t.attributes.brightness,this.ctSliderValue=t.attributes.color_temp,this.wvSliderValue=t.attributes.white_value,t.attributes.effect_list?this.effectIndex=t.attributes.effect_list.indexOf(t.attributes.effect):this.effectIndex=-1):this.brightnessSliderValue=0,this.async(function(){this.fire("iron-resize")}.bind(this),500)},computeClassNames:function(t){var e=window.hassUtil.attributeClassNames(t,["rgb_color","color_temp","white_value","effect_list"]),i=1;return t&&t.attributes.supported_features&i&&(e+=" has-brightness"),e},effectChanged:function(t){var e;""!==t&&t!==-1&&(e=this.stateObj.attributes.effect_list[t],e!==this.stateObj.attributes.effect&&this.hass.serviceActions.callService("light","turn_on",{entity_id:this.stateObj.entityId,effect:e}))},brightnessSliderChanged:function(t){var e=parseInt(t.target.value,10);isNaN(e)||(0===e?this.hass.serviceActions.callTurnOff(this.stateObj.entityId):this.hass.serviceActions.callService("light","turn_on",{entity_id:this.stateObj.entityId,brightness:e}))},ctSliderChanged:function(t){var e=parseInt(t.target.value,10);isNaN(e)||this.hass.serviceActions.callService("light","turn_on",{entity_id:this.stateObj.entityId,color_temp:e})},wvSliderChanged:function(t){var e=parseInt(t.target.value,10);isNaN(e)||this.hass.serviceActions.callService("light","turn_on",{entity_id:this.stateObj.entityId,white_value:e})},serviceChangeColor:function(t,e,i){t.serviceActions.callService("light","turn_on",{entity_id:e,rgb_color:[i.r,i.g,i.b]})},colorPicked:function(t){return this.skipColorPicked?void(this.colorChanged=!0):(this.color=t.detail.rgb,this.serviceChangeColor(this.hass,this.stateObj.entityId,this.color),this.colorChanged=!1,this.skipColorPicked=!0,void(this.colorDebounce=setTimeout(function(){this.colorChanged&&this.serviceChangeColor(this.hass,this.stateObj.entityId,this.color),this.skipColorPicked=!1}.bind(this),500)))}})</script><dom-module id="more-info-media_player" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>.media-state{text-transform:capitalize}paper-icon-button[highlight]{color:var(--accent-color)}.volume{margin-bottom:8px;max-height:0;overflow:hidden;transition:max-height .5s ease-in}.has-volume_level .volume{max-height:40px}iron-icon.source-input{padding:7px;margin-top:15px}paper-dropdown-menu.source-input{margin-left:10px}[hidden]{display:none!important}</style><div class$="[[computeClassNames(stateObj)]]"><div class="layout horizontal"><div class="flex"><paper-icon-button icon="mdi:power" highlight$="[[isOff]]" on-tap="handleTogglePower" hidden$="[[computeHidePowerButton(isOff, supportsTurnOn, supportsTurnOff)]]"></paper-icon-button></div><div><template is="dom-if" if="[[computeShowPlaybackControls(isOff, hasMediaControl)]]"><paper-icon-button icon="mdi:skip-previous" on-tap="handlePrevious" hidden$="[[!supportsPreviousTrack]]"></paper-icon-button><paper-icon-button icon="[[computePlaybackControlIcon(stateObj)]]" on-tap="handlePlaybackControl" hidden$="[[!computePlaybackControlIcon(stateObj)]]" highlight=""></paper-icon-button><paper-icon-button icon="mdi:skip-next" on-tap="handleNext" hidden$="[[!supportsNextTrack]]"></paper-icon-button></template></div></div><div class="volume_buttons center horizontal layout" hidden$="[[computeHideVolumeButtons(isOff, supportsVolumeButtons)]]"><paper-icon-button on-tap="handleVolumeTap" icon="mdi:volume-off"></paper-icon-button><paper-icon-button id="volumeDown" disabled$="[[isMuted]]" on-mousedown="handleVolumeDown" on-touchstart="handleVolumeDown" icon="mdi:volume-medium"></paper-icon-button><paper-icon-button id="volumeUp" disabled$="[[isMuted]]" on-mousedown="handleVolumeUp" on-touchstart="handleVolumeUp" icon="mdi:volume-high"></paper-icon-button></div><div class="volume center horizontal layout" hidden$="[[!supportsVolumeSet]]"><paper-icon-button on-tap="handleVolumeTap" hidden$="[[supportsVolumeButtons]]" icon="[[computeMuteVolumeIcon(isMuted)]]"></paper-icon-button><paper-slider disabled$="[[isMuted]]" min="0" max="100" value="[[volumeSliderValue]]" on-change="volumeSliderChanged" class="flex"></paper-slider></div><div class="controls layout horizontal justified" hidden$="[[computeHideSelectSource(isOff, supportsSelectSource)]]"><iron-icon class="source-input" icon="mdi:login-variant"></iron-icon><paper-dropdown-menu class="source-input" label-float="" label="Source"><paper-menu class="dropdown-content" selected="{{sourceIndex}}"><template is="dom-repeat" items="[[stateObj.attributes.source_list]]"><paper-item>[[item]]</paper-item></template></paper-menu></paper-dropdown-menu></div><div hidden$="[[computeHideTTS(ttsLoaded, supportsPlayMedia)]]" class="layout horizontal end"><paper-input label="Text to speak" class="flex" value="{{ttsMessage}}"></paper-input><paper-icon-button icon="mdi:send" on-tap="sendTTS"></paper-icon-button></div></div></template></dom-module><script>Polymer({is:"more-info-media_player",behaviors:[window.hassBehavior],properties:{ttsLoaded:{type:Boolean,bindNuclear:function(e){return e.configGetters.isComponentLoaded("tts")}},hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"},isOff:{type:Boolean,value:!1},isPlaying:{type:Boolean,value:!1},isMuted:{type:Boolean,value:!1},source:{type:String,value:""},sourceIndex:{type:Number,value:0,observer:"handleSourceChanged"},volumeSliderValue:{type:Number,value:0},ttsMessage:{type:String,value:""},supportsPause:{type:Boolean,value:!1},supportsVolumeSet:{type:Boolean,value:!1},supportsVolumeMute:{type:Boolean,value:!1},supportsPreviousTrack:{type:Boolean,value:!1},supportsNextTrack:{type:Boolean,value:!1},supportsTurnOn:{type:Boolean,value:!1},supportsTurnOff:{type:Boolean,value:!1},supportsPlayMedia:{type:Boolean,value:!1},supportsVolumeButtons:{type:Boolean,value:!1},supportsSelectSource:{type:Boolean,value:!1},supportsPlay:{type:Boolean,value:!1},hasMediaControl:{type:Boolean,value:!1}},HAS_MEDIA_STATES:["playing","paused","unknown"],stateObjChanged:function(e){e&&(this.isOff="off"===e.state,this.isPlaying="playing"===e.state,this.hasMediaControl=this.HAS_MEDIA_STATES.indexOf(e.state)!==-1,this.volumeSliderValue=100*e.attributes.volume_level,this.isMuted=e.attributes.is_volume_muted,this.source=e.attributes.source,this.supportsPause=0!==(1&e.attributes.supported_media_commands),this.supportsVolumeSet=0!==(4&e.attributes.supported_media_commands),this.supportsVolumeMute=0!==(8&e.attributes.supported_media_commands),this.supportsPreviousTrack=0!==(16&e.attributes.supported_media_commands),this.supportsNextTrack=0!==(32&e.attributes.supported_media_commands),this.supportsTurnOn=0!==(128&e.attributes.supported_media_commands),this.supportsTurnOff=0!==(256&e.attributes.supported_media_commands),this.supportsPlayMedia=0!==(512&e.attributes.supported_media_commands),this.supportsVolumeButtons=0!==(1024&e.attributes.supported_media_commands),this.supportsSelectSource=0!==(2048&e.attributes.supported_media_commands),this.supportsPlay=0!==(16384&e.attributes.supported_media_commands),void 0!==e.attributes.source_list&&(this.sourceIndex=e.attributes.source_list.indexOf(this.source))),this.async(function(){this.fire("iron-resize")}.bind(this),500)},computeClassNames:function(e){return window.hassUtil.attributeClassNames(e,["volume_level"])},computeIsOff:function(e){return"off"===e.state},computeMuteVolumeIcon:function(e){return e?"mdi:volume-off":"mdi:volume-high"},computeHideVolumeButtons:function(e,t){return!t||e},computeShowPlaybackControls:function(e,t){return!e&&t},computePlaybackControlIcon:function(){return this.isPlaying?this.supportsPause?"mdi:pause":"mdi:stop":this.supportsPlay?"mdi:play":null},computeHidePowerButton:function(e,t,s){return e?!t:!s},computeHideSelectSource:function(e,t){return e||!t},computeSelectedSource:function(e){return e.attributes.source_list.indexOf(e.attributes.source)},computeHideTTS:function(e,t){return!e||!t},handleTogglePower:function(){this.callService(this.isOff?"turn_on":"turn_off")},handlePrevious:function(){this.callService("media_previous_track")},handlePlaybackControl:function(){this.callService("media_play_pause")},handleNext:function(){this.callService("media_next_track")},handleSourceChanged:function(e){var t;!this.stateObj||void 0===this.stateObj.attributes.source_list||e<0||e>=this.stateObj.attributes.source_list.length||(t=this.stateObj.attributes.source_list[e],t!==this.stateObj.attributes.source&&this.callService("select_source",{source:t}))},handleVolumeTap:function(){this.supportsVolumeMute&&this.callService("volume_mute",{is_volume_muted:!this.isMuted})},handleVolumeUp:function(){var e=this.$.volumeUp;this.handleVolumeWorker("volume_up",e,!0)},handleVolumeDown:function(){var e=this.$.volumeDown;this.handleVolumeWorker("volume_down",e,!0)},handleVolumeWorker:function(e,t,s){(s||void 0!==t&&t.pointerDown)&&(this.callService(e),this.async(function(){this.handleVolumeWorker(e,t,!1)}.bind(this),500))},volumeSliderChanged:function(e){var t=parseFloat(e.target.value),s=t>0?t/100:0;this.callService("volume_set",{volume_level:s})},sendTTS:function(){var e,t,s=this.hass.reactor.evaluate(this.hass.serviceGetters.entityMap).get("tts").get("services").keySeq().toArray();for(t=0;t<s.length;t++)if(s[t].indexOf("_say")!==-1){e=s[t];break}e&&(this.hass.serviceActions.callService("tts",e,{entity_id:this.stateObj.entityId,message:this.ttsMessage}),this.ttsMessage="",document.activeElement.blur())},callService:function(e,t){var s=t||{};s.entity_id=this.stateObj.entityId,this.hass.serviceActions.callService("media_player",e,s)}})</script><dom-module id="more-info-camera" assetpath="more-infos/"><template><style>:host{max-width:640px}.camera-image{width:100%}</style><img class="camera-image" src="[[computeCameraImageUrl(hass, stateObj)]]" on-load="imageLoaded" alt="[[stateObj.entityDisplay]]"></template></dom-module><script>Polymer({is:"more-info-camera",properties:{hass:{type:Object},stateObj:{type:Object}},imageLoaded:function(){this.fire("iron-resize")},computeCameraImageUrl:function(e,t){return e.demo?"/demo/webcam.jpg":t?"/api/camera_proxy_stream/"+t.entityId+"?token="+t.attributes.access_token:"data:image/gif;base64,R0lGODlhAQABAAAAACw="}})</script><dom-module id="more-info-updater" assetpath="more-infos/"><template><style>.link{color:#03A9F4}</style><div><a class="link" href="https://home-assistant.io/getting-started/updating/" target="_blank">Update Instructions</a></div></template></dom-module><script>Polymer({is:"more-info-updater",properties:{stateObj:{type:Object}},computeReleaseNotes:function(t){return t.attributes.release_notes||"https://home-assistant.io/getting-started/updating/"}})</script><dom-module id="more-info-alarm_control_panel" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex"></style><div class="layout horizontal"><paper-input label="code" value="{{enteredCode}}" pattern="[[codeFormat]]" type="password" hidden$="[[!codeInputVisible]]" disabled="[[!codeInputEnabled]]"></paper-input></div><div class="layout horizontal"><paper-button on-tap="handleDisarmTap" hidden$="[[!disarmButtonVisible]]" disabled="[[!codeValid]]">Disarm</paper-button><paper-button on-tap="handleHomeTap" hidden$="[[!armHomeButtonVisible]]" disabled="[[!codeValid]]">Arm Home</paper-button><paper-button on-tap="handleAwayTap" hidden$="[[!armAwayButtonVisible]]" disabled="[[!codeValid]]">Arm Away</paper-button></div></template></dom-module><script>Polymer({is:"more-info-alarm_control_panel",properties:{hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"},enteredCode:{type:String,value:""},disarmButtonVisible:{type:Boolean,value:!1},armHomeButtonVisible:{type:Boolean,value:!1},armAwayButtonVisible:{type:Boolean,value:!1},codeInputVisible:{type:Boolean,value:!1},codeInputEnabled:{type:Boolean,value:!1},codeFormat:{type:String,value:""},codeValid:{type:Boolean,computed:"validateCode(enteredCode, codeFormat)"}},validateCode:function(e,t){var a=new RegExp(t);return null===t||a.test(e)},stateObjChanged:function(e){e&&(this.codeFormat=e.attributes.code_format,this.codeInputVisible=null!==this.codeFormat,this.codeInputEnabled="armed_home"===e.state||"armed_away"===e.state||"disarmed"===e.state||"pending"===e.state||"triggered"===e.state,this.disarmButtonVisible="armed_home"===e.state||"armed_away"===e.state||"pending"===e.state||"triggered"===e.state,this.armHomeButtonVisible="disarmed"===e.state,this.armAwayButtonVisible="disarmed"===e.state),this.async(function(){this.fire("iron-resize")}.bind(this),500)},handleDisarmTap:function(){this.callService("alarm_disarm",{code:this.enteredCode})},handleHomeTap:function(){this.callService("alarm_arm_home",{code:this.enteredCode})},handleAwayTap:function(){this.callService("alarm_arm_away",{code:this.enteredCode})},callService:function(e,t){var a=t||{};a.entity_id=this.stateObj.entityId,this.hass.serviceActions.callService("alarm_control_panel",e,a).then(function(){this.enteredCode=""}.bind(this))}})</script><dom-module id="more-info-lock" assetpath="more-infos/"><template><style>paper-input{display:inline-block}</style><div hidden$="[[!stateObj.attributes.code_format]]"><paper-input label="code" value="{{enteredCode}}" pattern="[[stateObj.attributes.code_format]]" type="password"></paper-input><paper-button on-tap="handleUnlockTap" hidden$="[[!isLocked]]">Unlock</paper-button><paper-button on-tap="handleLockTap" hidden$="[[isLocked]]">Lock</paper-button></div></template></dom-module><script>Polymer({is:"more-info-lock",properties:{hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"},enteredCode:{type:String,value:""}},handleUnlockTap:function(){this.callService("unlock",{code:this.enteredCode})},handleLockTap:function(){this.callService("lock",{code:this.enteredCode})},stateObjChanged:function(e){e&&(this.isLocked="locked"===e.state),this.async(function(){this.fire("iron-resize")}.bind(this),500)},callService:function(e,t){var i=t||{};i.entity_id=this.stateObj.entityId,this.hass.serviceActions.callService("lock",e,i)}})</script><script>Polymer({is:"more-info-content",properties:{hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"}},created:function(){this.style.display="block"},stateObjChanged:function(t){t&&window.hassUtil.dynamicContentUpdater(this,"MORE-INFO-"+window.hassUtil.stateMoreInfoType(t).toUpperCase(),{hass:this.hass,stateObj:t})}})</script><dom-module id="more-info-dialog" assetpath="dialogs/"><template><style>paper-dialog{font-size:14px;width:365px}paper-dialog[data-domain=camera]{width:auto}state-history-charts{position:relative;z-index:1;max-width:365px}state-card-content{margin-bottom:24px;font-size:14px}@media all and (max-width:450px),all and (max-height:500px){paper-dialog{margin:0;width:100%;max-height:calc(100% - 64px);position:fixed!important;bottom:0;left:0;right:0;overflow:scroll}}</style><paper-dialog id="dialog" with-backdrop="" opened="{{dialogOpen}}" data-domain$="[[stateObj.domain]]"><h2><state-card-content state-obj="[[stateObj]]" hass="[[hass]]" in-dialog=""></state-card-content></h2><template is="dom-if" if="[[showHistoryComponent]]"><state-history-charts state-history="[[stateHistory]]" is-loading-data="[[isLoadingHistoryData]]"></state-history-charts></template><paper-dialog-scrollable id="scrollable"><more-info-content state-obj="[[stateObj]]" hass="[[hass]]"></more-info-content></paper-dialog-scrollable></paper-dialog></template></dom-module><script>Polymer({is:"more-info-dialog",behaviors:[window.hassBehavior],properties:{hass:{type:Object},stateObj:{type:Object,bindNuclear:function(t){return t.moreInfoGetters.currentEntity},observer:"stateObjChanged"},stateHistory:{type:Object,bindNuclear:function(t){return[t.moreInfoGetters.currentEntityHistory,function(t){return!!t&&[t]}]}},isLoadingHistoryData:{type:Boolean,computed:"computeIsLoadingHistoryData(delayedDialogOpen, isLoadingEntityHistoryData)"},isLoadingEntityHistoryData:{type:Boolean,bindNuclear:function(t){return t.entityHistoryGetters.isLoadingEntityHistory}},hasHistoryComponent:{type:Boolean,bindNuclear:function(t){return t.configGetters.isComponentLoaded("history")},observer:"fetchHistoryData"},shouldFetchHistory:{type:Boolean,bindNuclear:function(t){return t.moreInfoGetters.isCurrentEntityHistoryStale},observer:"fetchHistoryData"},showHistoryComponent:{type:Boolean,value:!1,computed:"computeShowHistoryComponent(hasHistoryComponent, stateObj)"},dialogOpen:{type:Boolean,value:!1,observer:"dialogOpenChanged"},delayedDialogOpen:{type:Boolean,value:!1}},ready:function(){this.$.scrollable.dialogElement=this.$.dialog},computeIsLoadingHistoryData:function(t,e){return!t||e},computeShowHistoryComponent:function(t,e){return this.hasHistoryComponent&&e&&window.hassUtil.DOMAINS_WITH_NO_HISTORY.indexOf(e.domain)===-1},fetchHistoryData:function(){this.stateObj&&this.hasHistoryComponent&&this.shouldFetchHistory&&this.hass.entityHistoryActions.fetchRecent(this.stateObj.entityId)},stateObjChanged:function(t){return t?void this.async(function(){this.fetchHistoryData(),this.dialogOpen=!0}.bind(this),10):void(this.dialogOpen=!1)},dialogOpenChanged:function(t){t?this.async(function(){this.delayedDialogOpen=!0}.bind(this),10):!t&&this.stateObj&&(this.async(function(){this.hass.moreInfoActions.deselectEntity()}.bind(this),10),this.delayedDialogOpen=!1)}})</script><dom-module id="ha-voice-command-dialog" assetpath="dialogs/"><template><style>iron-icon{margin-right:8px}.content{width:300px;min-height:80px;font-size:18px}.icon{float:left}.text{margin-left:48px;margin-right:24px}.interimTranscript{color:#a9a9a9}@media all and (max-width:450px){paper-dialog{margin:0;width:100%;max-height:calc(100% - 64px);position:fixed!important;bottom:0;left:0;right:0;overflow:scroll}}</style><paper-dialog id="dialog" with-backdrop="" opened="{{dialogOpen}}"><div class="content"><div class="icon"><iron-icon icon="mdi:text-to-speech" hidden$="[[isTransmitting]]"></iron-icon><paper-spinner active$="[[isTransmitting]]" hidden$="[[!isTransmitting]]"></paper-spinner></div><div class="text"><span>{{finalTranscript}}</span> <span class="interimTranscript">[[interimTranscript]]</span> …</div></div></paper-dialog></template></dom-module><script>Polymer({is:"ha-voice-command-dialog",behaviors:[window.hassBehavior],properties:{hass:{type:Object},dialogOpen:{type:Boolean,value:!1,observer:"dialogOpenChanged"},finalTranscript:{type:String,bindNuclear:function(e){return e.voiceGetters.finalTranscript}},interimTranscript:{type:String,bindNuclear:function(e){return e.voiceGetters.extraInterimTranscript}},isTransmitting:{type:Boolean,bindNuclear:function(e){return e.voiceGetters.isTransmitting}},isListening:{type:Boolean,bindNuclear:function(e){return e.voiceGetters.isListening}},showListenInterface:{type:Boolean,computed:"computeShowListenInterface(isListening, isTransmitting)",observer:"showListenInterfaceChanged"}},computeShowListenInterface:function(e,n){return e||n},dialogOpenChanged:function(e){!e&&this.isListening&&this.hass.voiceActions.stop()},showListenInterfaceChanged:function(e){!e&&this.dialogOpen?this.dialogOpen=!1:e&&(this.dialogOpen=!0)}})</script><dom-module id="paper-icon-item" assetpath="../bower_components/paper-item/"><template><style include="paper-item-shared-styles"></style><style>:host{@apply(--layout-horizontal);@apply(--layout-center);@apply(--paper-font-subhead);@apply(--paper-item);@apply(--paper-icon-item)}.content-icon{@apply(--layout-horizontal);@apply(--layout-center);width:var(--paper-item-icon-width,56px);@apply(--paper-item-icon)}</style><div id="contentIcon" class="content-icon"><content select="[item-icon]"></content></div><content></content></template><script>Polymer({is:"paper-icon-item",behaviors:[Polymer.PaperItemBehavior]})</script></dom-module><dom-module id="ha-sidebar" assetpath="components/"><template><style include="iron-flex iron-flex-alignment iron-positioning">:host{--sidebar-text:{opacity:var(--dark-primary-opacity);font-weight:500;font-size:14px};display:block;overflow:auto;-ms-user-select:none;-webkit-user-select:none;-moz-user-select:none}app-toolbar{font-weight:400;opacity:var(--dark-primary-opacity);border-bottom:1px solid #e0e0e0}paper-menu{padding-bottom:0}paper-icon-item{--paper-icon-item:{cursor:pointer};--paper-item-icon:{color:#000;opacity:var(--dark-secondary-opacity)};--paper-item-selected:{color:var(--default-primary-color);background-color:#e8e8e8;opacity:1};}paper-icon-item.iron-selected{--paper-item-icon:{color:var(--default-primary-color);opacity:1};}paper-icon-item .item-text{@apply(--sidebar-text)}paper-icon-item.iron-selected .item-text{opacity:1}paper-icon-item.logout{margin-top:16px}.divider{height:1px;background-color:#000;margin:4px 0;opacity:var(--dark-divider-opacity)}.setting{@apply(--sidebar-text)}.subheader{@apply(--sidebar-text);padding:16px}.dev-tools{padding:0 8px;opacity:var(--dark-secondary-opacity)}</style><app-toolbar><div main-title="">Home Assistant</div><paper-icon-button icon="mdi:chevron-left" hidden$="[[narrow]]" on-tap="toggleMenu"></paper-icon-button></app-toolbar><paper-menu attr-for-selected="data-panel" selected="[[selected]]" on-iron-select="menuSelect"><paper-icon-item on-tap="menuClicked" data-panel="states"><iron-icon item-icon="" icon="mdi:apps"></iron-icon><span class="item-text">States</span></paper-icon-item><template is="dom-repeat" items="[[computePanels(panels)]]"><paper-icon-item on-tap="menuClicked" data-panel$="[[item.url_path]]"><iron-icon item-icon="" icon="[[item.icon]]"></iron-icon><span class="item-text">[[item.title]]</span></paper-icon-item></template><paper-icon-item on-tap="menuClicked" data-panel="logout" class="logout"><iron-icon item-icon="" icon="mdi:exit-to-app"></iron-icon><span class="item-text">Log Out</span></paper-icon-item></paper-menu><div><template is="dom-if" if="[[supportPush]]"><div class="divider"></div><paper-item class="horizontal layout justified"><div class="setting">Push Notifications</div><paper-toggle-button on-change="handlePushChange" checked="{{pushToggleChecked}}"></paper-toggle-button></paper-item></template><div class="divider"></div><div class="subheader">Developer Tools</div><div class="dev-tools layout horizontal justified"><paper-icon-button icon="mdi:remote" data-panel="dev-service" alt="Services" title="Services" on-tap="menuClicked"></paper-icon-button><paper-icon-button icon="mdi:code-tags" data-panel="dev-state" alt="States" title="States" on-tap="menuClicked"></paper-icon-button><paper-icon-button icon="mdi:radio-tower" data-panel="dev-event" alt="Events" title="Events" on-tap="menuClicked"></paper-icon-button><paper-icon-button icon="mdi:file-xml" data-panel="dev-template" alt="Templates" title="Templates" on-tap="menuClicked"></paper-icon-button><paper-icon-button icon="mdi:information-outline" data-panel="dev-info" alt="Info" title="Info" on-tap="menuClicked"></paper-icon-button></div></div></template></dom-module><script>Polymer({is:"ha-sidebar",behaviors:[window.hassBehavior],properties:{hass:{type:Object},menuShown:{type:Boolean},menuSelected:{type:String},narrow:{type:Boolean},selected:{type:String,bindNuclear:function(t){return t.navigationGetters.activePanelName}},panels:{type:Array,bindNuclear:function(t){return[t.navigationGetters.panels,function(t){return t.toJS()}]}},supportPush:{type:Boolean,value:!1,bindNuclear:function(t){return t.pushNotificationGetters.isSupported}},pushToggleChecked:{type:Boolean,bindNuclear:function(t){return t.pushNotificationGetters.isActive}}},created:function(){this._boundUpdateStyles=this.updateStyles.bind(this)},computePanels:function(t){var e={map:1,logbook:2,history:3},n=[];return Object.keys(t).forEach(function(e){t[e].title&&n.push(t[e])}),n.sort(function(t,n){var i=t.component_name in e,o=n.component_name in e;return i&&o?e[t.component_name]-e[n.component_name]:i?-1:o?1:t.title>n.title?1:t.title<n.title?-1:0}),n},menuSelect:function(){this.debounce("updateStyles",this._boundUpdateStyles,1)},menuClicked:function(t){for(var e=t.target,n=5,i=e.getAttribute("data-panel");n&&!i;)e=e.parentElement,i=e.getAttribute("data-panel"),n--;n&&this.selectPanel(i)},toggleMenu:function(){this.fire("close-menu")},selectPanel:function(t){if(t!==this.selected){if("logout"===t)return void this.handleLogOut();this.hass.navigationActions.navigate.apply(null,t.split("/")),this.debounce("updateStyles",this._boundUpdateStyles,1)}},handlePushChange:function(t){t.target.checked?this.hass.pushNotificationActions.subscribePushNotifications().then(function(t){this.pushToggleChecked=t}.bind(this)):this.hass.pushNotificationActions.unsubscribePushNotifications().then(function(t){this.pushToggleChecked=!t}.bind(this))},handleLogOut:function(){this.hass.authActions.logOut()}})</script><dom-module id="home-assistant-main" assetpath="layouts/"><template><notification-manager hass="[[hass]]"></notification-manager><more-info-dialog hass="[[hass]]"></more-info-dialog><ha-voice-command-dialog hass="[[hass]]"></ha-voice-command-dialog><iron-media-query query="(max-width: 870px)" query-matches="{{narrow}}"></iron-media-query><paper-drawer-panel id="drawer" force-narrow="[[computeForceNarrow(narrow, showSidebar)]]" responsive-width="0" disable-swipe="[[isSelectedMap]]" disable-edge-swipe="[[isSelectedMap]]"><ha-sidebar drawer="" narrow="[[narrow]]" hass="[[hass]]"></ha-sidebar><iron-pages main="" attr-for-selected="id" fallback-selection="panel-resolver" selected="[[activePanel]]" selected-attribute="panel-visible"><partial-cards id="states" narrow="[[narrow]]" hass="[[hass]]" show-menu="[[showSidebar]]"></partial-cards><partial-panel-resolver id="panel-resolver" narrow="[[narrow]]" hass="[[hass]]" show-menu="[[showSidebar]]"></partial-panel-resolver></iron-pages></paper-drawer-panel></template></dom-module><script>Polymer({is:"home-assistant-main",behaviors:[window.hassBehavior],properties:{hass:{type:Object},narrow:{type:Boolean,value:!0},activePanel:{type:String,bindNuclear:function(e){return e.navigationGetters.activePanelName},observer:"activePanelChanged"},showSidebar:{type:Boolean,value:!1,bindNuclear:function(e){return e.navigationGetters.showSidebar}}},listeners:{"open-menu":"openMenu","close-menu":"closeMenu"},openMenu:function(){this.narrow?this.$.drawer.openDrawer():this.hass.navigationActions.showSidebar(!0)},closeMenu:function(){this.$.drawer.closeDrawer(),this.showSidebar&&this.hass.navigationActions.showSidebar(!1)},activePanelChanged:function(){this.narrow&&this.$.drawer.closeDrawer()},attached:function(){window.removeInitMsg(),this.hass.startUrlSync()},computeForceNarrow:function(e,n){return e||!n},detached:function(){this.hass.stopUrlSync()}})</script></div><dom-module id="home-assistant"><template><template is="dom-if" if="[[loaded]]"><home-assistant-main hass="[[hass]]"></home-assistant-main></template><template is="dom-if" if="[[!loaded]]"><login-form hass="[[hass]]" force-show-loading="[[computeForceShowLoading(dataLoaded, iconsLoaded)]]"></login-form></template></template></dom-module><script>Polymer({is:"home-assistant",hostAttributes:{icons:null},behaviors:[window.hassBehavior],properties:{hass:{type:Object,value:window.hass},icons:{type:String},dataLoaded:{type:Boolean,bindNuclear:function(o){return o.syncGetters.isDataLoaded}},iconsLoaded:{type:Boolean,value:!1},loaded:{type:Boolean,computed:"computeLoaded(dataLoaded, iconsLoaded)"}},computeLoaded:function(o,t){return o&&t},computeForceShowLoading:function(o,t){return o&&!t},loadIcons:function(){var o=function(){this.iconsLoaded=!0}.bind(this);this.importHref("/static/mdi-"+this.icons+".html",o,function(){this.importHref("/static/mdi.html",o,o)})},ready:function(){this.loadIcons()}})</script></body></html> \ 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 cf5960d5805d5476f6676f719af498050f1bfe84..ca8c799c522e8783885db768038366dd810d5255 100644 GIT binary patch delta 56149 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 O_x}JqePqp>CkOyk+HE5M delta 56039 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 IA-*OE0P&H&X8-^I diff --git a/homeassistant/components/frontend/www_static/home-assistant-polymer b/homeassistant/components/frontend/www_static/home-assistant-polymer index 029ed863957..84e87e7554b 160000 --- a/homeassistant/components/frontend/www_static/home-assistant-polymer +++ b/homeassistant/components/frontend/www_static/home-assistant-polymer @@ -1 +1 @@ -Subproject commit 029ed86395786b40cf57079e749d898f88019b20 +Subproject commit 84e87e7554b9cd9acfc63ecadcb3e41ccd89eb30 diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-dev-event.html b/homeassistant/components/frontend/www_static/panels/ha-panel-dev-event.html index 7eba3c45d42..531167d98a8 100644 --- a/homeassistant/components/frontend/www_static/panels/ha-panel-dev-event.html +++ b/homeassistant/components/frontend/www_static/panels/ha-panel-dev-event.html @@ -1 +1 @@ -<html><head><meta charset="UTF-8"></head><body><div hidden="" by-vulcanize=""><dom-module id="iron-autogrow-textarea" assetpath="../../bower_components/iron-autogrow-textarea/"><template><style>:host{display:inline-block;position:relative;width:400px;border:1px solid;padding:2px;-moz-appearance:textarea;-webkit-appearance:textarea;overflow:hidden}.mirror-text{visibility:hidden;word-wrap:break-word}.fit{@apply(--layout-fit)}textarea{position:relative;outline:0;border:none;resize:none;background:inherit;color:inherit;width:100%;height:100%;font-size:inherit;font-family:inherit;line-height:inherit;text-align:inherit;@apply(--iron-autogrow-textarea)}::content textarea:invalid{box-shadow:none}textarea::-webkit-input-placeholder{@apply(--iron-autogrow-textarea-placeholder)}textarea:-moz-placeholder{@apply(--iron-autogrow-textarea-placeholder)}textarea::-moz-placeholder{@apply(--iron-autogrow-textarea-placeholder)}textarea:-ms-input-placeholder{@apply(--iron-autogrow-textarea-placeholder)}</style><div id="mirror" class="mirror-text" aria-hidden="true"> </div><div class="textarea-container fit"><textarea id="textarea" name$="[[name]]" autocomplete$="[[autocomplete]]" autofocus$="[[autofocus]]" inputmode$="[[inputmode]]" placeholder$="[[placeholder]]" readonly$="[[readonly]]" required$="[[required]]" disabled$="[[disabled]]" rows$="[[rows]]" minlength$="[[minlength]]" maxlength$="[[maxlength]]"></textarea></div></template></dom-module><script>Polymer({is:"iron-autogrow-textarea",behaviors:[Polymer.IronFormElementBehavior,Polymer.IronValidatableBehavior,Polymer.IronControlState],properties:{bindValue:{observer:"_bindValueChanged",type:String},rows:{type:Number,value:1,observer:"_updateCached"},maxRows:{type:Number,value:0,observer:"_updateCached"},autocomplete:{type:String,value:"off"},autofocus:{type:Boolean,value:!1},inputmode:{type:String},placeholder:{type:String},readonly:{type:String},required:{type:Boolean},minlength:{type:Number},maxlength:{type:Number}},listeners:{input:"_onInput"},observers:["_onValueChanged(value)"],get textarea(){return this.$.textarea},get selectionStart(){return this.$.textarea.selectionStart},get selectionEnd(){return this.$.textarea.selectionEnd},set selectionStart(e){this.$.textarea.selectionStart=e},set selectionEnd(e){this.$.textarea.selectionEnd=e},validate:function(){if(!this.required&&""==this.value)return this.invalid=!1,!0;var e;return this.hasValidator()?e=Polymer.IronValidatableBehavior.validate.call(this,this.value):(e=this.$.textarea.validity.valid,this.invalid=!e),this.fire("iron-input-validate"),e},_bindValueChanged:function(){var e=this.textarea;e&&(e.value!==this.bindValue&&(e.value=this.bindValue||0===this.bindValue?this.bindValue:""),this.value=this.bindValue,this.$.mirror.innerHTML=this._valueForMirror(),this.fire("bind-value-changed",{value:this.bindValue}))},_onInput:function(e){this.bindValue=e.path?e.path[0].value:e.target.value},_constrain:function(e){var t;for(e=e||[""],t=this.maxRows>0&&e.length>this.maxRows?e.slice(0,this.maxRows):e.slice(0);this.rows>0&&t.length<this.rows;)t.push("");return t.join("<br/>")+" "},_valueForMirror:function(){var e=this.textarea;if(e)return this.tokens=e&&e.value?e.value.replace(/&/gm,"&").replace(/"/gm,""").replace(/'/gm,"'").replace(/</gm,"<").replace(/>/gm,">").split("\n"):[""],this._constrain(this.tokens)},_updateCached:function(){this.$.mirror.innerHTML=this._constrain(this.tokens)},_onValueChanged:function(){this.bindValue=this.value}})</script><dom-module id="paper-textarea" assetpath="../../bower_components/paper-input/"><template><style>:host{display:block}:host([hidden]){display:none!important}label{pointer-events:none}</style><paper-input-container no-label-float$="[[noLabelFloat]]" always-float-label="[[_computeAlwaysFloatLabel(alwaysFloatLabel,placeholder)]]" auto-validate$="[[autoValidate]]" disabled$="[[disabled]]" invalid="[[invalid]]"><label hidden$="[[!label]]" aria-hidden="true">[[label]]</label><iron-autogrow-textarea id="input" class="paper-input-input" bind-value="{{value}}" invalid="{{invalid}}" disabled$="[[disabled]]" autocomplete$="[[autocomplete]]" autofocus$="[[autofocus]]" inputmode$="[[inputmode]]" name$="[[name]]" placeholder$="[[placeholder]]" readonly$="[[readonly]]" required$="[[required]]" minlength$="[[minlength]]" maxlength$="[[maxlength]]" autocapitalize$="[[autocapitalize]]" rows$="[[rows]]" max-rows$="[[maxRows]]" on-change="_onChange"></iron-autogrow-textarea><template is="dom-if" if="[[errorMessage]]"><paper-input-error>[[errorMessage]]</paper-input-error></template><template is="dom-if" if="[[charCounter]]"><paper-input-char-counter></paper-input-char-counter></template></paper-input-container></template></dom-module><script>Polymer({is:"paper-textarea",behaviors:[Polymer.PaperInputBehavior,Polymer.IronFormElementBehavior],properties:{_ariaLabelledBy:{observer:"_ariaLabelledByChanged",type:String},_ariaDescribedBy:{observer:"_ariaDescribedByChanged",type:String},rows:{type:Number,value:1},maxRows:{type:Number,value:0}},_ariaLabelledByChanged:function(e){this.$.input.textarea.setAttribute("aria-labelledby",e)},_ariaDescribedByChanged:function(e){this.$.input.textarea.setAttribute("aria-describedby",e)},get _focusableElement(){return this.$.input.textarea}})</script><dom-module id="events-list" assetpath="./"><template><style>ul{margin:0;padding:0}li{list-style:none;line-height:2em}a{color:var(--dark-primary-color)}</style><ul><template is="dom-repeat" items="[[events]]" as="event"><li><a href="#" on-click="eventSelected">{{event.event}}</a> <span>(</span><span>{{event.listenerCount}}</span><span> listeners)</span></li></template></ul></template></dom-module><script>Polymer({is:"events-list",behaviors:[window.hassBehavior],properties:{hass:{type:Object},events:{type:Array,bindNuclear:function(e){return[e.eventGetters.entityMap,function(e){return e.valueSeq().sortBy(function(e){return e.event}).toArray()}]}}},eventSelected:function(e){e.preventDefault(),this.fire("event-selected",{eventType:e.model.event.event})}})</script></div><dom-module id="ha-panel-dev-event"><template><style is="custom-style" include="ha-style iron-flex iron-positioning"></style><style>:host{background-color:#fff;-ms-user-select:initial;-webkit-user-select:initial;-moz-user-select:initial}.content{@apply(--paper-font-body1);padding:24px}.ha-form{margin-right:16px}.header{@apply(--paper-font-title)}</style><app-header-layout has-scrolling-region=""><app-header fixed=""><app-toolbar><ha-menu-button narrow="[[narrow]]" show-menu="[[showMenu]]"></ha-menu-button><div main-title="">Events</div></app-toolbar></app-header><div class$="[[computeFormClasses(narrow)]]"><div class="flex"><p>Fire an event on the event bus.</p><div class="ha-form"><paper-input label="Event Type" autofocus="" required="" value="{{eventType}}"></paper-input><paper-textarea label="Event Data (JSON, optional)" value="{{eventData}}"></paper-textarea><paper-button on-tap="fireEvent" raised="">Fire Event</paper-button></div></div><div><div class="header">Available Events</div><events-list on-event-selected="eventSelected" hass="[[hass]]"></events-list></div></div></app-header-layout></template></dom-module><script>Polymer({is:"ha-panel-dev-event",properties:{hass:{type:Object},narrow:{type:Boolean,value:!1},showMenu:{type:Boolean,value:!1},eventType:{type:String,value:""},eventData:{type:String,value:""}},eventSelected:function(e){this.eventType=e.detail.eventType},fireEvent:function(){var e;try{e=this.eventData?JSON.parse(this.eventData):{}}catch(e){return void alert("Error parsing JSON: "+e)}this.hass.eventActions.fireEvent(this.eventType,e)},computeFormClasses:function(e){return e?"content fit":"content fit layout horizontal"}})</script></body></html> \ No newline at end of file +<html><head><meta charset="UTF-8"></head><body><div hidden="" by-vulcanize=""><dom-module id="iron-autogrow-textarea" assetpath="../../bower_components/iron-autogrow-textarea/"><template><style>:host{display:inline-block;position:relative;width:400px;border:1px solid;padding:2px;-moz-appearance:textarea;-webkit-appearance:textarea;overflow:hidden}.mirror-text{visibility:hidden;word-wrap:break-word}.fit{@apply(--layout-fit)}textarea{position:relative;outline:0;border:none;resize:none;background:inherit;color:inherit;width:100%;height:100%;font-size:inherit;font-family:inherit;line-height:inherit;text-align:inherit;@apply(--iron-autogrow-textarea)}::content textarea:invalid{box-shadow:none}textarea::-webkit-input-placeholder{@apply(--iron-autogrow-textarea-placeholder)}textarea:-moz-placeholder{@apply(--iron-autogrow-textarea-placeholder)}textarea::-moz-placeholder{@apply(--iron-autogrow-textarea-placeholder)}textarea:-ms-input-placeholder{@apply(--iron-autogrow-textarea-placeholder)}</style><div id="mirror" class="mirror-text" aria-hidden="true"> </div><div class="textarea-container fit"><textarea id="textarea" name$="[[name]]" autocomplete$="[[autocomplete]]" autofocus$="[[autofocus]]" inputmode$="[[inputmode]]" placeholder$="[[placeholder]]" readonly$="[[readonly]]" required$="[[required]]" disabled$="[[disabled]]" rows$="[[rows]]" minlength$="[[minlength]]" maxlength$="[[maxlength]]"></textarea></div></template></dom-module><script>Polymer({is:"iron-autogrow-textarea",behaviors:[Polymer.IronFormElementBehavior,Polymer.IronValidatableBehavior,Polymer.IronControlState],properties:{bindValue:{observer:"_bindValueChanged",type:String},rows:{type:Number,value:1,observer:"_updateCached"},maxRows:{type:Number,value:0,observer:"_updateCached"},autocomplete:{type:String,value:"off"},autofocus:{type:Boolean,value:!1},inputmode:{type:String},placeholder:{type:String},readonly:{type:String},required:{type:Boolean},minlength:{type:Number},maxlength:{type:Number}},listeners:{input:"_onInput"},observers:["_onValueChanged(value)"],get textarea(){return this.$.textarea},get selectionStart(){return this.$.textarea.selectionStart},get selectionEnd(){return this.$.textarea.selectionEnd},set selectionStart(e){this.$.textarea.selectionStart=e},set selectionEnd(e){this.$.textarea.selectionEnd=e},attached:function(){var e=navigator.userAgent.match(/iP(?:[oa]d|hone)/);e&&(this.$.textarea.style.marginLeft="-3px")},validate:function(){if(!this.required&&""==this.value)return this.invalid=!1,!0;var e;return this.hasValidator()?e=Polymer.IronValidatableBehavior.validate.call(this,this.value):(e=this.$.textarea.validity.valid,this.invalid=!e),this.fire("iron-input-validate"),e},_bindValueChanged:function(){var e=this.textarea;e&&(e.value!==this.bindValue&&(e.value=this.bindValue||0===this.bindValue?this.bindValue:""),this.value=this.bindValue,this.$.mirror.innerHTML=this._valueForMirror(),this.fire("bind-value-changed",{value:this.bindValue}))},_onInput:function(e){this.bindValue=e.path?e.path[0].value:e.target.value},_constrain:function(e){var t;for(e=e||[""],t=this.maxRows>0&&e.length>this.maxRows?e.slice(0,this.maxRows):e.slice(0);this.rows>0&&t.length<this.rows;)t.push("");return t.join("<br/>")+" "},_valueForMirror:function(){var e=this.textarea;if(e)return this.tokens=e&&e.value?e.value.replace(/&/gm,"&").replace(/"/gm,""").replace(/'/gm,"'").replace(/</gm,"<").replace(/>/gm,">").split("\n"):[""],this._constrain(this.tokens)},_updateCached:function(){this.$.mirror.innerHTML=this._constrain(this.tokens)},_onValueChanged:function(){this.bindValue=this.value}})</script><dom-module id="paper-textarea" assetpath="../../bower_components/paper-input/"><template><style>:host{display:block}:host([hidden]){display:none!important}label{pointer-events:none}</style><paper-input-container no-label-float$="[[noLabelFloat]]" always-float-label="[[_computeAlwaysFloatLabel(alwaysFloatLabel,placeholder)]]" auto-validate$="[[autoValidate]]" disabled$="[[disabled]]" invalid="[[invalid]]"><label hidden$="[[!label]]" aria-hidden="true">[[label]]</label><iron-autogrow-textarea id="input" class="paper-input-input" bind-value="{{value}}" invalid="{{invalid}}" disabled$="[[disabled]]" autocomplete$="[[autocomplete]]" autofocus$="[[autofocus]]" inputmode$="[[inputmode]]" name$="[[name]]" placeholder$="[[placeholder]]" readonly$="[[readonly]]" required$="[[required]]" minlength$="[[minlength]]" maxlength$="[[maxlength]]" autocapitalize$="[[autocapitalize]]" rows$="[[rows]]" max-rows$="[[maxRows]]" on-change="_onChange"></iron-autogrow-textarea><template is="dom-if" if="[[errorMessage]]"><paper-input-error>[[errorMessage]]</paper-input-error></template><template is="dom-if" if="[[charCounter]]"><paper-input-char-counter></paper-input-char-counter></template></paper-input-container></template></dom-module><script>Polymer({is:"paper-textarea",behaviors:[Polymer.PaperInputBehavior,Polymer.IronFormElementBehavior],properties:{_ariaLabelledBy:{observer:"_ariaLabelledByChanged",type:String},_ariaDescribedBy:{observer:"_ariaDescribedByChanged",type:String},rows:{type:Number,value:1},maxRows:{type:Number,value:0}},_ariaLabelledByChanged:function(e){this.$.input.textarea.setAttribute("aria-labelledby",e)},_ariaDescribedByChanged:function(e){this.$.input.textarea.setAttribute("aria-describedby",e)},get _focusableElement(){return this.$.input.textarea}})</script><dom-module id="events-list" assetpath="./"><template><style>ul{margin:0;padding:0}li{list-style:none;line-height:2em}a{color:var(--dark-primary-color)}</style><ul><template is="dom-repeat" items="[[events]]" as="event"><li><a href="#" on-click="eventSelected">{{event.event}}</a> <span>(</span><span>{{event.listenerCount}}</span><span> listeners)</span></li></template></ul></template></dom-module><script>Polymer({is:"events-list",behaviors:[window.hassBehavior],properties:{hass:{type:Object},events:{type:Array,bindNuclear:function(e){return[e.eventGetters.entityMap,function(e){return e.valueSeq().sortBy(function(e){return e.event}).toArray()}]}}},eventSelected:function(e){e.preventDefault(),this.fire("event-selected",{eventType:e.model.event.event})}})</script></div><dom-module id="ha-panel-dev-event"><template><style is="custom-style" include="ha-style iron-flex iron-positioning"></style><style>:host{background-color:#fff;-ms-user-select:initial;-webkit-user-select:initial;-moz-user-select:initial}.content{@apply(--paper-font-body1);padding:16px}.ha-form{margin-right:16px}.header{@apply(--paper-font-title)}</style><app-header-layout has-scrolling-region=""><app-header fixed=""><app-toolbar><ha-menu-button narrow="[[narrow]]" show-menu="[[showMenu]]"></ha-menu-button><div main-title="">Events</div></app-toolbar></app-header><div class$="[[computeFormClasses(narrow)]]"><div class="flex"><p>Fire an event on the event bus.</p><div class="ha-form"><paper-input label="Event Type" autofocus="" required="" value="{{eventType}}"></paper-input><paper-textarea label="Event Data (JSON, optional)" value="{{eventData}}"></paper-textarea><paper-button on-tap="fireEvent" raised="">Fire Event</paper-button></div></div><div><div class="header">Available Events</div><events-list on-event-selected="eventSelected" hass="[[hass]]"></events-list></div></div></app-header-layout></template></dom-module><script>Polymer({is:"ha-panel-dev-event",properties:{hass:{type:Object},narrow:{type:Boolean,value:!1},showMenu:{type:Boolean,value:!1},eventType:{type:String,value:""},eventData:{type:String,value:""}},eventSelected:function(e){this.eventType=e.detail.eventType},fireEvent:function(){var e;try{e=this.eventData?JSON.parse(this.eventData):{}}catch(e){return void alert("Error parsing JSON: "+e)}this.hass.eventActions.fireEvent(this.eventType,e)},computeFormClasses:function(e){return e?"content fit":"content fit layout horizontal"}})</script></body></html> \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-dev-event.html.gz b/homeassistant/components/frontend/www_static/panels/ha-panel-dev-event.html.gz index d259eb65eaa18c5f6d235138c124bc7eb8809f73..22fde6f1a5f3e6636e49768837b19d6081bac803 100644 GIT binary patch delta 2696 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 CuQp8p delta 2611 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 VQ!+mokMs}B{{b=Xkv(S~003!k5`X{z diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-dev-info.html b/homeassistant/components/frontend/www_static/panels/ha-panel-dev-info.html index 1a01891f25f..0ecddfec1f3 100644 --- a/homeassistant/components/frontend/www_static/panels/ha-panel-dev-info.html +++ b/homeassistant/components/frontend/www_static/panels/ha-panel-dev-info.html @@ -1,2 +1,2 @@ -<html><head><meta charset="UTF-8"></head><body><dom-module id="ha-panel-dev-info"><template><style include="iron-positioning ha-style">:host{background-color:#fff;-ms-user-select:initial;-webkit-user-select:initial;-moz-user-select:initial}.content{padding:24px}.about{text-align:center;line-height:2em}.version{@apply(--paper-font-headline)}.develop{@apply(--paper-font-subhead)}.about a{color:var(--dark-primary-color)}.error-log-intro{margin-top:16px;border-top:1px solid var(--light-primary-color);padding-top:16px}paper-icon-button{float:right}.error-log{@apply(--paper-font-code1) +<html><head><meta charset="UTF-8"></head><body><dom-module id="ha-panel-dev-info"><template><style include="iron-positioning ha-style">:host{background-color:#fff;-ms-user-select:initial;-webkit-user-select:initial;-moz-user-select:initial}.content{padding:16px}.about{text-align:center;line-height:2em}.version{@apply(--paper-font-headline)}.develop{@apply(--paper-font-subhead)}.about a{color:var(--dark-primary-color)}.error-log-intro{margin-top:16px;border-top:1px solid var(--light-primary-color);padding-top:16px}paper-icon-button{float:right}.error-log{@apply(--paper-font-code1) clear: both;white-space:pre-wrap}</style><app-header-layout has-scrolling-region=""><app-header fixed=""><app-toolbar><ha-menu-button narrow="[[narrow]]" show-menu="[[showMenu]]"></ha-menu-button><div main-title="">About</div></app-toolbar></app-header><div class="content fit"><div class="about"><p class="version"><a href="https://home-assistant.io"><img src="/static/icons/favicon-192x192.png" height="192"></a><br>Home Assistant<br>[[hassVersion]]</p><p>Path to configuration.yaml: [[hassConfigDir]]</p><p class="develop"><a href="https://home-assistant.io/developers/credits/" target="_blank">Developed by a bunch of awesome people.</a></p><p>Published under the MIT license<br>Source: <a href="https://github.com/home-assistant/home-assistant" target="_blank">server</a> — <a href="https://github.com/home-assistant/home-assistant-polymer" target="_blank">frontend-ui</a> — <a href="https://github.com/home-assistant/home-assistant-js" target="_blank">frontend-core</a></p><p>Built using <a href="https://www.python.org">Python 3</a>, <a href="https://www.polymer-project.org" target="_blank">Polymer [[polymerVersion]]</a>, <a href="https://optimizely.github.io/nuclear-js/" target="_blank">NuclearJS [[nuclearVersion]]</a><br>Icons by <a href="https://www.google.com/design/icons/" target="_blank">Google</a> and <a href="https://MaterialDesignIcons.com" target="_blank">MaterialDesignIcons.com</a>.</p></div><p class="error-log-intro">The following errors have been logged this session:<paper-icon-button icon="mdi:refresh" on-tap="refreshErrorLog"></paper-icon-button></p><div class="error-log">[[errorLog]]</div></div></app-header-layout></template></dom-module><script>Polymer({is:"ha-panel-dev-info",behaviors:[window.hassBehavior],properties:{hass:{type:Object},narrow:{type:Boolean,value:!1},showMenu:{type:Boolean,value:!1},hassVersion:{type:String,bindNuclear:function(r){return r.configGetters.serverVersion}},hassConfigDir:{type:String,bindNuclear:function(r){return r.configGetters.configDir}},polymerVersion:{type:String,value:Polymer.version},nuclearVersion:{type:String,value:"1.4.0"},errorLog:{type:String,value:""}},attached:function(){this.refreshErrorLog()},refreshErrorLog:function(r){r&&r.preventDefault(),this.errorLog="Loading error log…",this.hass.errorLogActions.fetchErrorLog().then(function(r){this.errorLog=r||"No errors have been reported."}.bind(this))}})</script></body></html> \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-dev-info.html.gz b/homeassistant/components/frontend/www_static/panels/ha-panel-dev-info.html.gz index a7ff46fcb8a79d0f1df724933fb404b7a3592677..8c840c85985b1c1ac0056f7060ebd0e1e3256dee 100644 GIT binary patch delta 1124 zcmV-q1e^Q63cU&kABzYGq}6hf2P+J8!>}o~v2<Cx4ow%4K0tqd8GOs<)2QD}bhesL zGhGFh&Kd<wW;0%jz=#@DkijC5b*>4IP#Gl<=2M3&kE>JFWH95>>N+smNtC*lb-~EG zgYbD=YKQAYq<4kYO`Qd)R@%m2<avG?R4!;7*ua5;6k}Nvfl#Nx5|TTK$M-7z{@6wv zrn*L`acxAFQ4D|a$v5V{4Mn0GTqE3LAe1cXI3*0&QzdH%N{~f~@pGu!Z~@j)^y}}1 zF={mmD1Ad-a$*g9oxH)g4XGTUv^ffMP2!Q`!7CH%KG}t^1k8lJ3yhVOu&cfb1O#if z4U{gZ#%T4LHVat?s7)9DX`*dL^xbcB&zx2=V?Cepu|IzzJROqX6107Il8O@~4I(9& zD=jd#-g?LX(S%Z+!O8eDHvFXugpFCEu{>Rt5+QI#q!1em!O{xTPNVMB=TqY9ibh0A ztb8p>;R2Uht&|VXLP52jalQ*>xx9yLyNFt=L|Brr2r8(XA%0d1ig`KXH#hy)?JZ}n z)XNU!m;HZ_3;L!Fukk%=(z#r)O86Q}RN%dx`NNt<v_bGa&(TA0y<w_^b2C0jjRHo# zx6z$DEt$>2pemmdD=p;ISct~OQB>**0>Vg#qQ+4A29s66oK0t(>L^gAkv}&V<zmqt z;K_H-@994@b-`J$-5I9^pQfNbw)3Bel$~uz{mOsM4OQO#)`xL>JB<uQH@_5EGSrM% zb6GT2_{I%aqEa#IEq>^B&ZXVhY%&@e;Gbj^4Ons>r4}-YF5(PH;(iMKo+we@@%i}x z%2={uf+bCzmQ3eNEW!D73}~Yu>{1+}ZxSV4NftCvNH<slyLf%gl%(c%;M2a+jU{EW zgCKtkiDi?}u&5rz`{?IkoHTRjG<_KC)5kylJu?kTwW`1#ddO|3t1M{b|KR4G`x_6b zwy;yt7mZZN8s}&Cfyd=?8JZQAq!4WjKELd~*;n3v@&vq3k*1S=M?<=^I|$~o2a(_g z_>M}CGHZjflJ7yS!l4SJvAXHT5~X`YTW>S_&7ZHx$pGAQ;-&K1_n6n-(M$@h3sRpi zcLt6wkfA3JeZA_C-NA`EJ7l|{o72)wb>5S%155;up81WF{sTdO7sKl9gd|FlqXZYP z{Z72bm4Wz|#0$5b^moj#_<}A55cOmsR0HwnC+%c&*E|W>nZ5(&3N0PWB%xpidB!=- zJU@X)cD%NLjjfpt``P>okksJ9e)<edZO^-%(f^4#-LMerek1PF_BjpZ-aMD6KznU< z%!HqWUx#1vcCtBt^rIk7?ggSqX|6wnJzjg6hK~d{8n=^2OZ%BVduBs=l`QCzK8IX1 z3P<Bf$FzxI#@}d>ZTrJF#ix&d@*d=iyG5RLv@Xm6)13%Hx^?Q&uGf8j`{4tBs}H-+ qg3%Ts3way*lNx!m@wjcr^m^(gJ&pP&dDK1O{{nDhR%FQo3jhElwl8S_ delta 1126 zcmV-s1eyE23cm^mABzYGn3zP72P+I@#jq*1v1Hl04sBPFK0tr|G5Chhr%}I|=xjBg zX1WS0oiz%W%x1h4fe|&RAcI99>s%8ap)yJ!%%=`l9#^NT$zaB%)pcOBlPGm9>w=MW z2jTO$)DG8)Nbd@(n>q_pt+b85$n*Rxs9exEuz>>wDaNuU0-?@=B_wwekMC9b{jrTU zOm&S=<JyQUqZohU)92>C4Mn0GTqE3LAe1cXI3*0&GbL*XN{~f~@hMboxB%-Y`t^6h z7_}M&l)fP^Ik5)5PTpYLhExtv+8l+sCh^Ge;FXDWpX@?d0%pSA1;)xs*i~Nz0)n;L z21*xHW3+lrn}w_c)FwXp+T5Qd+Ga%G{WkZ^X(cn(^C^EH`y;}$A^9yq+lMEqI6=}N zQi8eC0%Pl~cl;ksDAgI9j6Y+;U#dXZm?av^vt=m}0%t@Dv9S;=tuXC0>P~$=C9bY$ zM5M&Z*P;|IaH-Ww`S2_hRO=b%yHJ+Pd&stnsI^LjB?*h5g1Q;vXSJZ1mot8I(|_IG za^_0C>_C5h+5dP=-?ZU1zGqE3mkU-2Ut@_1yti|ISks6$2)^ezdI+vJOqFnM#s{fU zz{vMDx^t%`vsoBa<x^s%g`64-(YQE@N?k!f80k>d7)sw@vMQLf>5Nky1<Ew?=jNhZ zEV=_c`S$dl{zFq2ob}qBaa!<c3hHA!|A|Q1`G$YguiV^F<=t<67`M06$WV0iw*pIs znh|R*i^dAyxZz4vDrUXK_ubB=v>TgEMnePqlZ>JPOU|RzLMG8goFPfvPoduvCF(mq zzZ^grOIA#<q^Z-A>70orIG>IIZ4`uEibM2GqNFRyf(8od21{VCUtTjMskt5aw6Any zNtu7_Ajm>u*(5Y9sz>oY`gs^9%^W&S9|rsM@sEGcOoLLbDzJwha@*-D3mW-9xOwOP z#zU$t>{RrkkqTMk{OmsPxLhtnv%-=TqHV$FZ@X{ymA9Wf0q;|!>7?J$knZdbf_dA6 zNN@vuN2N!ZwLw|Q_n=ncPzBOh-E?D#(mgh!tvCJV&sXGR0PZ>QQhDin%xmvxCWY1o zsn3@?14kFg(36M0UUbOr;6$Arvc0C8)6z|K*^{dSOau>}`IVFV13`a_VfA)G5~avd zf{WLFCtl;qK>SPMh1*X0J7!qCpo;-SJy{6VK>YbhJK5YdPXczP?|`{NOUE)vD40Q> zaZWSOPvDUquPtC>Yi7fKHopKQHMp>!J_A$R^KNJKe_~EIEX2Csi2JmCPD8mj&m}6* zURxbA;V0qq@JrrKHiv(H6vWBBKolv>^@p&>YcJFAk>Ez-cJgRxKhtN=Y)G$?1zpmY zkc&p)XgukdHZjcjD=o5ZfB2^O^zl#LgM4wf$n%cYg*jll6G2F~PCeT7y3cPveBf{N sVfR@u+9G5jZ$p1lBX2eyx9yl-Pran4QU4^5x+nZ!7vHfO$qNDi08CjjHvj+t diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-dev-service.html b/homeassistant/components/frontend/www_static/panels/ha-panel-dev-service.html index 9ce5304213e..8364b2e9991 100644 --- a/homeassistant/components/frontend/www_static/panels/ha-panel-dev-service.html +++ b/homeassistant/components/frontend/www_static/panels/ha-panel-dev-service.html @@ -1 +1 @@ -<html><head><meta charset="UTF-8"></head><body><div hidden="" by-vulcanize=""><script>!function(){var e={},t={},i=null;Polymer.IronMeta=Polymer({is:"iron-meta",properties:{type:{type:String,value:"default",observer:"_typeChanged"},key:{type:String,observer:"_keyChanged"},value:{type:Object,notify:!0,observer:"_valueChanged"},self:{type:Boolean,observer:"_selfChanged"},list:{type:Array,notify:!0}},hostAttributes:{hidden:!0},factoryImpl:function(e){if(e)for(var t in e)switch(t){case"type":case"key":case"value":this[t]=e[t]}},created:function(){this._metaDatas=e,this._metaArrays=t},_keyChanged:function(e,t){this._resetRegistration(t)},_valueChanged:function(e){this._resetRegistration(this.key)},_selfChanged:function(e){e&&(this.value=this)},_typeChanged:function(i){this._unregisterKey(this.key),e[i]||(e[i]={}),this._metaData=e[i],t[i]||(t[i]=[]),this.list=t[i],this._registerKeyValue(this.key,this.value)},byKey:function(e){return this._metaData&&this._metaData[e]},_resetRegistration:function(e){this._unregisterKey(e),this._registerKeyValue(this.key,this.value)},_unregisterKey:function(e){this._unregister(e,this._metaData,this.list)},_registerKeyValue:function(e,t){this._register(e,t,this._metaData,this.list)},_register:function(e,t,i,a){e&&i&&void 0!==t&&(i[e]=t,a.push(t))},_unregister:function(e,t,i){if(e&&t&&e in t){var a=t[e];delete t[e],this.arrayDelete(i,a)}}}),Polymer.IronMeta.getIronMeta=function(){return null===i&&(i=new Polymer.IronMeta),i},Polymer.IronMetaQuery=Polymer({is:"iron-meta-query",properties:{type:{type:String,value:"default",observer:"_typeChanged"},key:{type:String,observer:"_keyChanged"},value:{type:Object,notify:!0,readOnly:!0},list:{type:Array,notify:!0}},factoryImpl:function(e){if(e)for(var t in e)switch(t){case"type":case"key":this[t]=e[t]}},created:function(){this._metaDatas=e,this._metaArrays=t},_keyChanged:function(e){this._setValue(this._metaData&&this._metaData[e])},_typeChanged:function(i){this._metaData=e[i],this.list=t[i],this.key&&this._keyChanged(this.key)},byKey:function(e){return this._metaData&&this._metaData[e]}})}()</script><script>Polymer.IronValidatableBehaviorMeta=null,Polymer.IronValidatableBehavior={properties:{validator:{type:String},invalid:{notify:!0,reflectToAttribute:!0,type:Boolean,value:!1},_validatorMeta:{type:Object},validatorType:{type:String,value:"validator"},_validator:{type:Object,computed:"__computeValidator(validator)"}},observers:["_invalidChanged(invalid)"],registered:function(){Polymer.IronValidatableBehaviorMeta=new Polymer.IronMeta({type:"validator"})},_invalidChanged:function(){this.invalid?this.setAttribute("aria-invalid","true"):this.removeAttribute("aria-invalid")},hasValidator:function(){return null!=this._validator},validate:function(a){return this.invalid=!this._getValidity(a),!this.invalid},_getValidity:function(a){return!this.hasValidator()||this._validator.validate(a)},__computeValidator:function(){return Polymer.IronValidatableBehaviorMeta&&Polymer.IronValidatableBehaviorMeta.byKey(this.validator)}}</script><script>Polymer.IronFormElementBehavior={properties:{name:{type:String},value:{notify:!0,type:String},required:{type:Boolean,value:!1},_parentForm:{type:Object}},attached:function(){this.fire("iron-form-element-register")},detached:function(){this._parentForm&&this._parentForm.fire("iron-form-element-unregister",{target:this})}}</script><dom-module id="iron-autogrow-textarea" assetpath="../../bower_components/iron-autogrow-textarea/"><template><style>:host{display:inline-block;position:relative;width:400px;border:1px solid;padding:2px;-moz-appearance:textarea;-webkit-appearance:textarea;overflow:hidden}.mirror-text{visibility:hidden;word-wrap:break-word}.fit{@apply(--layout-fit)}textarea{position:relative;outline:0;border:none;resize:none;background:inherit;color:inherit;width:100%;height:100%;font-size:inherit;font-family:inherit;line-height:inherit;text-align:inherit;@apply(--iron-autogrow-textarea)}::content textarea:invalid{box-shadow:none}textarea::-webkit-input-placeholder{@apply(--iron-autogrow-textarea-placeholder)}textarea:-moz-placeholder{@apply(--iron-autogrow-textarea-placeholder)}textarea::-moz-placeholder{@apply(--iron-autogrow-textarea-placeholder)}textarea:-ms-input-placeholder{@apply(--iron-autogrow-textarea-placeholder)}</style><div id="mirror" class="mirror-text" aria-hidden="true"> </div><div class="textarea-container fit"><textarea id="textarea" name$="[[name]]" autocomplete$="[[autocomplete]]" autofocus$="[[autofocus]]" inputmode$="[[inputmode]]" placeholder$="[[placeholder]]" readonly$="[[readonly]]" required$="[[required]]" disabled$="[[disabled]]" rows$="[[rows]]" minlength$="[[minlength]]" maxlength$="[[maxlength]]"></textarea></div></template></dom-module><script>Polymer({is:"iron-autogrow-textarea",behaviors:[Polymer.IronFormElementBehavior,Polymer.IronValidatableBehavior,Polymer.IronControlState],properties:{bindValue:{observer:"_bindValueChanged",type:String},rows:{type:Number,value:1,observer:"_updateCached"},maxRows:{type:Number,value:0,observer:"_updateCached"},autocomplete:{type:String,value:"off"},autofocus:{type:Boolean,value:!1},inputmode:{type:String},placeholder:{type:String},readonly:{type:String},required:{type:Boolean},minlength:{type:Number},maxlength:{type:Number}},listeners:{input:"_onInput"},observers:["_onValueChanged(value)"],get textarea(){return this.$.textarea},get selectionStart(){return this.$.textarea.selectionStart},get selectionEnd(){return this.$.textarea.selectionEnd},set selectionStart(e){this.$.textarea.selectionStart=e},set selectionEnd(e){this.$.textarea.selectionEnd=e},validate:function(){if(!this.required&&""==this.value)return this.invalid=!1,!0;var e;return this.hasValidator()?e=Polymer.IronValidatableBehavior.validate.call(this,this.value):(e=this.$.textarea.validity.valid,this.invalid=!e),this.fire("iron-input-validate"),e},_bindValueChanged:function(){var e=this.textarea;e&&(e.value!==this.bindValue&&(e.value=this.bindValue||0===this.bindValue?this.bindValue:""),this.value=this.bindValue,this.$.mirror.innerHTML=this._valueForMirror(),this.fire("bind-value-changed",{value:this.bindValue}))},_onInput:function(e){this.bindValue=e.path?e.path[0].value:e.target.value},_constrain:function(e){var t;for(e=e||[""],t=this.maxRows>0&&e.length>this.maxRows?e.slice(0,this.maxRows):e.slice(0);this.rows>0&&t.length<this.rows;)t.push("");return t.join("<br/>")+" "},_valueForMirror:function(){var e=this.textarea;if(e)return this.tokens=e&&e.value?e.value.replace(/&/gm,"&").replace(/"/gm,""").replace(/'/gm,"'").replace(/</gm,"<").replace(/>/gm,">").split("\n"):[""],this._constrain(this.tokens)},_updateCached:function(){this.$.mirror.innerHTML=this._constrain(this.tokens)},_onValueChanged:function(){this.bindValue=this.value}})</script><script>Polymer.PaperInputHelper={},Polymer.PaperInputHelper.NextLabelID=1,Polymer.PaperInputHelper.NextAddonID=1,Polymer.PaperInputBehaviorImpl={properties:{label:{type:String},value:{notify:!0,type:String},disabled:{type:Boolean,value:!1},invalid:{type:Boolean,value:!1,notify:!0},preventInvalidInput:{type:Boolean},allowedPattern:{type:String},type:{type:String},list:{type:String},pattern:{type:String},required:{type:Boolean,value:!1},errorMessage:{type:String},charCounter:{type:Boolean,value:!1},noLabelFloat:{type:Boolean,value:!1},alwaysFloatLabel:{type:Boolean,value:!1},autoValidate:{type:Boolean,value:!1},validator:{type:String},autocomplete:{type:String,value:"off"},autofocus:{type:Boolean,observer:"_autofocusChanged"},inputmode:{type:String},minlength:{type:Number},maxlength:{type:Number},min:{type:String},max:{type:String},step:{type:String},name:{type:String},placeholder:{type:String,value:""},readonly:{type:Boolean,value:!1},size:{type:Number},autocapitalize:{type:String,value:"none"},autocorrect:{type:String,value:"off"},autosave:{type:String},results:{type:Number},accept:{type:String},multiple:{type:Boolean},_ariaDescribedBy:{type:String,value:""},_ariaLabelledBy:{type:String,value:""}},listeners:{"addon-attached":"_onAddonAttached"},keyBindings:{"shift+tab:keydown":"_onShiftTabDown"},hostAttributes:{tabindex:0},get inputElement(){return this.$.input},get _focusableElement(){return this.inputElement},registered:function(){this._typesThatHaveText=["date","datetime","datetime-local","month","time","week","file"]},attached:function(){this._updateAriaLabelledBy(),this.inputElement&&this._typesThatHaveText.indexOf(this.inputElement.type)!==-1&&(this.alwaysFloatLabel=!0)},_appendStringWithSpace:function(e,t){return e=e?e+" "+t:t},_onAddonAttached:function(e){var t=e.path?e.path[0]:e.target;if(t.id)this._ariaDescribedBy=this._appendStringWithSpace(this._ariaDescribedBy,t.id);else{var a="paper-input-add-on-"+Polymer.PaperInputHelper.NextAddonID++;t.id=a,this._ariaDescribedBy=this._appendStringWithSpace(this._ariaDescribedBy,a)}},validate:function(){return this.inputElement.validate()},_focusBlurHandler:function(e){Polymer.IronControlState._focusBlurHandler.call(this,e),this.focused&&!this._shiftTabPressed&&this._focusableElement.focus()},_onShiftTabDown:function(e){var t=this.getAttribute("tabindex");this._shiftTabPressed=!0,this.setAttribute("tabindex","-1"),this.async(function(){this.setAttribute("tabindex",t),this._shiftTabPressed=!1},1)},_handleAutoValidate:function(){this.autoValidate&&this.validate()},updateValueAndPreserveCaret:function(e){try{var t=this.inputElement.selectionStart;this.value=e,this.inputElement.selectionStart=t,this.inputElement.selectionEnd=t}catch(t){this.value=e}},_computeAlwaysFloatLabel:function(e,t){return t||e},_updateAriaLabelledBy:function(){var e=Polymer.dom(this.root).querySelector("label");if(!e)return void(this._ariaLabelledBy="");var t;e.id?t=e.id:(t="paper-input-label-"+Polymer.PaperInputHelper.NextLabelID++,e.id=t),this._ariaLabelledBy=t},_onChange:function(e){this.shadowRoot&&this.fire(e.type,{sourceEvent:e},{node:this,bubbles:e.bubbles,cancelable:e.cancelable})},_autofocusChanged:function(){if(this.autofocus&&this._focusableElement){var e=document.activeElement,t=e instanceof HTMLElement,a=t&&e!==document.body&&e!==document.documentElement;a||this._focusableElement.focus()}}},Polymer.PaperInputBehavior=[Polymer.IronControlState,Polymer.IronA11yKeysBehavior,Polymer.PaperInputBehaviorImpl]</script><script>Polymer.PaperInputAddonBehavior={hostAttributes:{"add-on":""},attached:function(){this.fire("addon-attached")},update:function(t){}}</script><dom-module id="paper-input-char-counter" assetpath="../../bower_components/paper-input/"><template><style>:host{display:inline-block;float:right;@apply(--paper-font-caption);@apply(--paper-input-char-counter)}:host([hidden]){display:none!important}:host-context([dir=rtl]){float:left}</style><span>[[_charCounterStr]]</span></template></dom-module><script>Polymer({is:"paper-input-char-counter",behaviors:[Polymer.PaperInputAddonBehavior],properties:{_charCounterStr:{type:String,value:"0"}},update:function(t){if(t.inputElement){t.value=t.value||"";var e=t.value.toString().length.toString();t.inputElement.hasAttribute("maxlength")&&(e+="/"+t.inputElement.getAttribute("maxlength")),this._charCounterStr=e}}})</script><dom-module id="paper-textarea" assetpath="../../bower_components/paper-input/"><template><style>:host{display:block}:host([hidden]){display:none!important}label{pointer-events:none}</style><paper-input-container no-label-float$="[[noLabelFloat]]" always-float-label="[[_computeAlwaysFloatLabel(alwaysFloatLabel,placeholder)]]" auto-validate$="[[autoValidate]]" disabled$="[[disabled]]" invalid="[[invalid]]"><label hidden$="[[!label]]" aria-hidden="true">[[label]]</label><iron-autogrow-textarea id="input" class="paper-input-input" bind-value="{{value}}" invalid="{{invalid}}" disabled$="[[disabled]]" autocomplete$="[[autocomplete]]" autofocus$="[[autofocus]]" inputmode$="[[inputmode]]" name$="[[name]]" placeholder$="[[placeholder]]" readonly$="[[readonly]]" required$="[[required]]" minlength$="[[minlength]]" maxlength$="[[maxlength]]" autocapitalize$="[[autocapitalize]]" rows$="[[rows]]" max-rows$="[[maxRows]]" on-change="_onChange"></iron-autogrow-textarea><template is="dom-if" if="[[errorMessage]]"><paper-input-error>[[errorMessage]]</paper-input-error></template><template is="dom-if" if="[[charCounter]]"><paper-input-char-counter></paper-input-char-counter></template></paper-input-container></template></dom-module><script>Polymer({is:"paper-textarea",behaviors:[Polymer.PaperInputBehavior,Polymer.IronFormElementBehavior],properties:{_ariaLabelledBy:{observer:"_ariaLabelledByChanged",type:String},_ariaDescribedBy:{observer:"_ariaDescribedByChanged",type:String},rows:{type:Number,value:1},maxRows:{type:Number,value:0}},_ariaLabelledByChanged:function(e){this.$.input.textarea.setAttribute("aria-labelledby",e)},_ariaDescribedByChanged:function(e){this.$.input.textarea.setAttribute("aria-describedby",e)},get _focusableElement(){return this.$.input.textarea}})</script><script>function MakePromise(t){function e(t){if("object"!=typeof this||"function"!=typeof t)throw new TypeError;this._state=null,this._value=null,this._deferreds=[],u(t,i.bind(this),r.bind(this))}function n(e){var n=this;return null===this._state?void this._deferreds.push(e):void t(function(){var t=n._state?e.onFulfilled:e.onRejected;if("function"!=typeof t)return void(n._state?e.resolve:e.reject)(n._value);var i;try{i=t(n._value)}catch(t){return void e.reject(t)}e.resolve(i)})}function i(t){try{if(t===this)throw new TypeError;if(t&&("object"==typeof t||"function"==typeof t)){var e=t.then;if("function"==typeof e)return void u(e.bind(t),i.bind(this),r.bind(this))}this._state=!0,this._value=t,o.call(this)}catch(t){r.call(this,t)}}function r(t){this._state=!1,this._value=t,o.call(this)}function o(){for(var t=0,e=this._deferreds.length;t<e;t++)n.call(this,this._deferreds[t]);this._deferreds=null}function u(t,e,n){var i=!1;try{t(function(t){i||(i=!0,e(t))},function(t){i||(i=!0,n(t))})}catch(t){if(i)return;i=!0,n(t)}}return e.prototype.catch=function(t){return this.then(null,t)},e.prototype.then=function(t,i){var r=this;return new e(function(e,o){n.call(r,{onFulfilled:t,onRejected:i,resolve:e,reject:o})})},e.resolve=function(t){return t&&"object"==typeof t&&t.constructor===e?t:new e(function(e){e(t)})},e.reject=function(t){return new e(function(e,n){n(t)})},e}"undefined"!=typeof module&&(module.exports=MakePromise)</script><script>window.Promise||(window.Promise=MakePromise(Polymer.Base.async))</script><script>Promise.all=Promise.all||function(){var r=Array.prototype.slice.call(1===arguments.length&&Array.isArray(arguments[0])?arguments[0]:arguments);return new Promise(function(n,e){function t(i,c){try{if(c&&("object"==typeof c||"function"==typeof c)){var f=c.then;if("function"==typeof f)return void f.call(c,function(r){t(i,r)},e)}r[i]=c,0===--o&&n(r)}catch(r){e(r)}}if(0===r.length)return n([]);for(var o=r.length,i=0;i<r.length;i++)t(i,r[i])})},Promise.race=Promise.race||function(r){var n=r;return new Promise(function(r,e){for(var t=0,o=n.length;t<o;t++)n[t].then(r,e)})}</script><script>!function(){"use strict";var t=/\.splices$/,e=/\.length$/,i=/\.?#?([0-9]+)$/;Polymer.AppStorageBehavior={properties:{data:{type:Object,notify:!0,value:function(){return this.zeroValue}},sequentialTransactions:{type:Boolean,value:!1},log:{type:Boolean,value:!1}},observers:["__dataChanged(data.*)"],created:function(){this.__initialized=!1,this.__syncingToMemory=!1,this.__initializingStoredValue=null,this.__transactionQueueAdvances=Promise.resolve()},ready:function(){this._initializeStoredValue()},get isNew(){return!0},get transactionsComplete(){return this.__transactionQueueAdvances},get zeroValue(){},save:function(){return Promise.resolve()},reset:function(){},destroy:function(){return this.data=this.zeroValue,this.save()},initializeStoredValue:function(){return this.isNew?Promise.resolve():this._getStoredValue("data").then(function(t){return this._log("Got stored value!",t,this.data),null==t?this._setStoredValue("data",this.data||this.zeroValue):void this.syncToMemory(function(){this.set("data",t)})}.bind(this))},getStoredValue:function(t){return Promise.resolve()},setStoredValue:function(t,e){return Promise.resolve(e)},memoryPathToStoragePath:function(t){return t},storagePathToMemoryPath:function(t){return t},syncToMemory:function(t){this.__syncingToMemory||(this._group("Sync to memory."),this.__syncingToMemory=!0,t.call(this),this.__syncingToMemory=!1,this._groupEnd("Sync to memory."))},valueIsEmpty:function(t){return Array.isArray(t)?0===t.length:Object.prototype.isPrototypeOf(t)?0===Object.keys(t).length:null==t},_getStoredValue:function(t){return this.getStoredValue(this.memoryPathToStoragePath(t))},_setStoredValue:function(t,e){return this.setStoredValue(this.memoryPathToStoragePath(t),e)},_enqueueTransaction:function(t){if(this.sequentialTransactions)t=t.bind(this);else{var e=t.call(this);t=function(){return e}}return this.__transactionQueueAdvances=this.__transactionQueueAdvances.then(t).catch(function(t){this._error("Error performing queued transaction.",t)}.bind(this))},_log:function(){this.log&&console.log.apply(console,arguments)},_error:function(){this.log&&console.error.apply(console,arguments)},_group:function(){this.log&&console.group.apply(console,arguments)},_groupEnd:function(){this.log&&console.groupEnd.apply(console,arguments)},_initializeStoredValue:function(){if(!this.__initializingStoredValue){this._group("Initializing stored value.");var t=this.__initializingStoredValue=this.initializeStoredValue().then(function(){this.__initialized=!0,this.__initializingStoredValue=null,this._groupEnd("Initializing stored value.")}.bind(this));return this._enqueueTransaction(function(){return t})}},__dataChanged:function(t){if(!this.isNew&&!this.__syncingToMemory&&this.__initialized&&!this.__pathCanBeIgnored(t.path)){var e=this.__normalizeMemoryPath(t.path),i=t.value,n=i&&i.indexSplices;this._enqueueTransaction(function(){return this._log("Setting",e+":",n||i),n&&this.__pathIsSplices(e)&&(e=this.__parentPath(e),i=this.get(e)),this._setStoredValue(e,i)})}},__normalizeMemoryPath:function(t){for(var e=t.split("."),i=[],n=[],r=[],o=0;o<e.length;++o)n.push(e[o]),/^#/.test(e[o])?r.push(this.get(i).indexOf(this.get(n))):r.push(e[o]),i.push(e[o]);return r.join(".")},__parentPath:function(t){var e=t.split(".");return e.slice(0,e.length-1).join(".")},__pathCanBeIgnored:function(t){return e.test(t)&&Array.isArray(this.get(this.__parentPath(t)))},__pathIsSplices:function(e){return t.test(e)&&Array.isArray(this.get(this.__parentPath(e)))},__pathRefersToArray:function(i){return(t.test(i)||e.test(i))&&Array.isArray(this.get(this.__parentPath(i)))},__pathTailToIndex:function(t){var e=t.split(".").pop();return window.parseInt(e.replace(i,"$1"),10)}}}()</script><dom-module id="app-localstorage-document" assetpath="../../bower_components/app-storage/app-localstorage/"><script>"use strict";Polymer({is:"app-localstorage-document",behaviors:[Polymer.AppStorageBehavior],properties:{key:{type:String,notify:!0},sessionOnly:{type:Boolean,value:!1},storage:{type:Object,computed:"__computeStorage(sessionOnly)"}},observers:["__storageSourceChanged(storage, key)"],attached:function(){this.listen(window,"storage","__onStorage"),this.listen(window.top,"app-local-storage-changed","__onAppLocalStorageChanged")},detached:function(){this.unlisten(window,"storage","__onStorage"),this.unlisten(window.top,"app-local-storage-changed","__onAppLocalStorageChanged")},get isNew(){return!this.key},save:function(e){try{this.__setStorageValue(e,this.data)}catch(e){return Promise.reject(e)}return this.key=e,Promise.resolve()},reset:function(){this.key=null,this.data=this.zeroValue},destroy:function(){try{this.storage.removeItem(this.key),this.reset()}catch(e){return Promise.reject(e)}return Promise.resolve()},getStoredValue:function(e){var t;if(null!=this.key)try{t=this.__parseValueFromStorage(),t=null!=t?this.get(e,{data:t}):void 0}catch(e){return Promise.reject(e)}return Promise.resolve(t)},setStoredValue:function(e,t){if(null!=this.key){try{this.__setStorageValue(this.key,this.data)}catch(e){return Promise.reject(e)}this.fire("app-local-storage-changed",this,{node:window.top})}return Promise.resolve(t)},__computeStorage:function(e){return e?window.sessionStorage:window.localStorage},__storageSourceChanged:function(e,t){this._initializeStoredValue()},__onStorage:function(e){e.key===this.key&&e.storageArea===this.storage&&this.syncToMemory(function(){this.set("data",this.__parseValueFromStorage())})},__onAppLocalStorageChanged:function(e){e.detail!==this&&e.detail.key===this.key&&e.detail.storage===this.storage&&this.syncToMemory(function(){this.set("data",e.detail.data)})},__parseValueFromStorage:function(){try{return JSON.parse(this.storage.getItem(this.key))}catch(e){console.error("Failed to parse value from storage for",this.key)}},__setStorageValue:function(e,t){this.storage.setItem(this.key,JSON.stringify(this.data))}})</script></dom-module><script>window.vaadin=window.vaadin||{},vaadin.elements=vaadin.elements||{},vaadin.elements.combobox=vaadin.elements.combobox||{},vaadin.elements.combobox.DropdownBehavior={properties:{opened:{type:Boolean,notify:!0,value:!1,reflectToAttribute:!0,observer:"_openedChanged"},disabled:{type:Boolean,value:!1,reflectToAttribute:!0},readonly:{type:Boolean,value:!1,reflectToAttribute:!0}},open:function(){this.disabled||this.readonly||(this.opened=!0)},close:function(){this.opened=!1},detached:function(){this.close()},_openedChanged:function(e,t){void 0!==t&&(this.opened?this._open():this._close())},_open:function(){this.$.overlay._moveTo(document.body),this._addOutsideClickListener(),this.$.overlay.touchDevice||this.inputElement.focused||this.inputElement.focus(),this.fire("vaadin-dropdown-opened")},_close:function(){this.$.overlay._moveTo(this.root),this._removeOutsideClickListener(),this.fire("vaadin-dropdown-closed")},_outsideClickListener:function(e){var t=Polymer.dom(e).path;t.indexOf(this)===-1&&(this.opened=!1)},_addOutsideClickListener:function(){this.$.overlay.touchDevice?(Polymer.Gestures.add(document,"tap",null),document.addEventListener("tap",this._outsideClickListener.bind(this),!0)):document.addEventListener("click",this._outsideClickListener.bind(this),!0)},_removeOutsideClickListener:function(){this.$.overlay.touchDevice?(Polymer.Gestures.remove(document,"tap",null),document.removeEventListener("tap",this._outsideClickListener.bind(this),!0)):document.removeEventListener("click",this._outsideClickListener.bind(this),!0)}}</script><script>window.vaadin=window.vaadin||{},vaadin.elements=vaadin.elements||{},vaadin.elements.combobox=vaadin.elements.combobox||{},vaadin.elements.combobox.ComboBoxBehaviorImpl={properties:{items:{type:Array},allowCustomValue:{type:Boolean,value:!1},value:{type:String,observer:"_valueChanged",notify:!1},hasValue:{type:Boolean,value:!1,readonly:!0,reflectToAttribute:!0},_focusedIndex:{type:Number,value:-1},_filter:{type:String,value:""},selectedItem:{type:Object,readOnly:!0,notify:!0},itemLabelPath:{type:String,value:"label"},itemValuePath:{type:String,value:"value"},inputElement:{type:HTMLElement,readOnly:!0},_toggleElement:Object,_clearElement:Object,_inputElementValue:String,_closeOnBlurIsPrevented:Boolean},observers:["_filterChanged(_filter, itemValuePath, itemLabelPath)","_itemsChanged(items.splices)","_setItems(items, itemValuePath, itemLabelPath)"],listeners:{"vaadin-dropdown-opened":"_onOpened","vaadin-dropdown-closed":"_onClosed",keydown:"_onKeyDown",tap:"_onTap"},ready:function(){void 0===this.value&&(this.value=""),Polymer.IronA11yAnnouncer.requestAvailability()},_onBlur:function(){this._closeOnBlurIsPrevented||this.close()},_onOverlayDown:function(e){this.$.overlay.touchDevice&&e.target!==this.$.overlay.$.scroller&&(this._closeOnBlurIsPrevented=!0,this.inputElement.blur(),this._closeOnBlurIsPrevented=!1)},_onTap:function(e){this._closeOnBlurIsPrevented=!0;var t=Polymer.dom(e).path;t.indexOf(this._clearElement)!==-1?this._clear():t.indexOf(this._toggleElement)!==-1?this._toggle():t.indexOf(this.inputElement)!==-1&&this._openAsync(),this._closeOnBlurIsPrevented=!1},_onKeyDown:function(e){this._isEventKey(e,"down")?(this._closeOnBlurIsPrevented=!0,this._onArrowDown(),this._closeOnBlurIsPrevented=!1,e.preventDefault()):this._isEventKey(e,"up")?(this._closeOnBlurIsPrevented=!0,this._onArrowUp(),this._closeOnBlurIsPrevented=!1,e.preventDefault()):this._isEventKey(e,"enter")?this._onEnter(e):this._isEventKey(e,"esc")&&this._onEscape()},_isEventKey:function(e,t){return Polymer.IronA11yKeysBehavior.keyboardEventMatchesKeys(e,t)},_getItemLabel:function(e){return this.$.overlay.getItemLabel(e)},_getItemValue:function(e){var t=this.get(this.itemValuePath,e);return void 0!==t&&null!==t||(t=e?e.toString():""),t},_onArrowDown:function(){this.opened?this.$.overlay._items&&(this._focusedIndex=Math.min(this.$.overlay._items.length-1,this._focusedIndex+1),this._prefillFocusedItemLabel()):this.open()},_onArrowUp:function(){this.opened?(this._focusedIndex>-1?this._focusedIndex=Math.max(0,this._focusedIndex-1):this.$.overlay._items&&(this._focusedIndex=this.$.overlay._items.length-1),this._prefillFocusedItemLabel()):this.open()},_prefillFocusedItemLabel:function(){this._focusedIndex>-1&&(this._inputElementValue=this._getItemLabel(this.$.overlay._focusedItem),this._setSelectionRange())},_setSelectionRange:function(){this.inputElement.setSelectionRange&&this.inputElement.setSelectionRange(0,this._inputElementValue.length)},_onEnter:function(e){this.opened&&(this.allowCustomValue||""===this._inputElementValue||this._focusedIndex>-1)&&(this.close(),e.preventDefault())},_onEscape:function(){this.opened&&(this._focusedIndex>-1?(this._focusedIndex=-1,this._revertInputValue()):this.cancel())},_openAsync:function(){this.async(this.open)},_toggle:function(){this.opened?this.close():this.open()},_clear:function(){this.value=""},cancel:function(){this._inputElementValue=this._getItemLabel(this.selectedItem),this.close()},_onOpened:function(){this.$.overlay.hidden=!this._hasItems(this.$.overlay._items),this.$.overlay.ensureItemsRendered(),this.$.overlay.notifyResize(),this.$.overlay.adjustScrollPosition()},_onClosed:function(){if(this._focusedIndex>-1)this.$.overlay._selectItem(this._focusedIndex),this._inputElementValue=this._getItemLabel(this.selectedItem);else if(""===this._inputElementValue)this._clear();else if(this.allowCustomValue){var e=this.fire("custom-value-set",this._inputElementValue,{cancelable:!0});e.defaultPrevented||(this.value=this._inputElementValue)}else this._inputElementValue=this._getItemLabel(this.selectedItem);this._clearSelectionRange(),this._filter=""},_inputValueChanged:function(e){Polymer.dom(e).path.indexOf(this.inputElement)!==-1&&(this._filter===this._inputElementValue?this._filterChanged(this._filter):this._filter=this._inputElementValue,this.opened||this.open())},_clearSelectionRange:function(){if(this._focusedInput()===this.inputElement&&this.inputElement.setSelectionRange){var e=this._inputElementValue?this._inputElementValue.length:0;this.inputElement.setSelectionRange(e,e)}},_focusedInput:function(){return Polymer.dom(this).querySelector("input:focus")||Polymer.dom(this.root).querySelector("input:focus")},_filterChanged:function(e){this.unlisten(this.$.overlay,"_selected-item-changed","_selectedItemChanged"),this._setItems(this._filterItems(this.items,e)),this._focusedIndex=this.$.overlay.indexOfLabel(e),this.listen(this.$.overlay,"_selected-item-changed","_selectedItemChanged"),this.async(function(){this.$.overlay.notifyResize()}.bind(this))},_revertInputValue:function(){""!==this._filter?this._inputElementValue=this._filter:this._inputElementValue=this._getItemLabel(this.selectedItem),this._clearSelectionRange()},_valueChanged:function(e){this.hasValue=!!e;var t=this._indexOfValue(e),i=t>-1&&this.items[t];this.$.overlay._items&&i&&this.$.overlay._items.indexOf(i)>-1?this.$.overlay._selectItem(i):(this._inputElementValue=this.allowCustomValue?e:"",this._setSelectedItem(null),this._focusedIndex=-1,this.$.overlay.$.selector.clearSelection()),this.fire("change",void 0,{bubbles:!0}),this.close()},_itemsChanged:function(e){e&&e.indexSplices&&this._setItems(e.indexSplices[0].object)},_filterItems:function(e,t){return e?e.filter(function(e){return t=t.toString().toLowerCase()||"",this._getItemLabel(e).toString().toLowerCase().indexOf(t)>-1}.bind(this)):e},_setItems:function(e){this.$.overlay.notifyPath("_items",void 0),this.$.overlay.set("_items",e);var t=this._indexOfValue(this.value,e);t>-1&&this.$.overlay._selectItem(t),this.$.overlay.hidden=!this._hasItems(e),this.$.overlay.notifyResize()},_hasItems:function(e){return e&&e.length},_indexOfValue:function(e,t){if(t=t||this.items,t&&e)for(var i=0;i<t.length;i++)if(this._getItemValue(t[i]).toString()===e.toString())return i;return-1},_selectedItemChanged:function(e,t){null!==t.value&&(this._setSelectedItem(t.value),this._inputElementValue=this._getItemLabel(this.selectedItem),this.value=this._getItemValue(this.selectedItem),this._focusedIndex=this.$.overlay._items.indexOf(t.value)),this.opened&&this.close()},_getValidity:function(){if(this.inputElement.validate)return this.inputElement.validate()},_preventDefault:function(e){e.preventDefault()},_stopPropagation:function(e){e.stopPropagation()}},vaadin.elements.combobox.ComboBoxBehavior=[Polymer.IronFormElementBehavior,vaadin.elements.combobox.DropdownBehavior,vaadin.elements.combobox.ComboBoxBehaviorImpl]</script><dom-module id="iron-list" assetpath="../../bower_components/iron-list/"><template><style>:host{display:block;position:relative}@media only screen and (-webkit-max-device-pixel-ratio:1){:host{will-change:transform}}#items{@apply(--iron-list-items-container);position:relative}:host(:not([grid])) #items>::content>*{width:100%}; #items>::content>*{box-sizing:border-box;margin:0;position:absolute;top:0;will-change:transform}</style><array-selector id="selector" items="{{items}}" selected="{{selectedItems}}" selected-item="{{selectedItem}}"></array-selector><div id="items"><content></content></div></template></dom-module><script>!function(){var t=navigator.userAgent.match(/iP(?:hone|ad;(?: U;)? CPU) OS (\d+)/),i=t&&t[1]>=8,e=3,s="-10000px",h=-100;Polymer({is:"iron-list",properties:{items:{type:Array},maxPhysicalCount:{type:Number,value:500},as:{type:String,value:"item"},indexAs:{type:String,value:"index"},selectedAs:{type:String,value:"selected"},grid:{type:Boolean,value:!1,reflectToAttribute:!0},selectionEnabled:{type:Boolean,value:!1},selectedItem:{type:Object,notify:!0},selectedItems:{type:Object,notify:!0},multiSelection:{type:Boolean,value:!1}},observers:["_itemsChanged(items.*)","_selectionEnabledChanged(selectionEnabled)","_multiSelectionChanged(multiSelection)","_setOverflow(scrollTarget)"],behaviors:[Polymer.Templatizer,Polymer.IronResizableBehavior,Polymer.IronA11yKeysBehavior,Polymer.IronScrollTargetBehavior],keyBindings:{up:"_didMoveUp",down:"_didMoveDown",enter:"_didEnter"},_ratio:.5,_scrollerPaddingTop:0,_scrollPosition:0,_physicalSize:0,_physicalAverage:0,_physicalAverageCount:0,_physicalTop:0,_virtualCount:0,_physicalIndexForKey:null,_estScrollHeight:0,_scrollHeight:0,_viewportHeight:0,_viewportWidth:0,_physicalItems:null,_physicalSizes:null,_firstVisibleIndexVal:null,_lastVisibleIndexVal:null,_collection:null,_maxPages:2,_focusedItem:null,_focusedIndex:-1,_offscreenFocusedItem:null,_focusBackfillItem:null,_itemsPerRow:1,_itemWidth:0,_rowHeight:0,_templateCost:0,get _physicalBottom(){return this._physicalTop+this._physicalSize},get _scrollBottom(){return this._scrollPosition+this._viewportHeight},get _virtualEnd(){return this._virtualStart+this._physicalCount-1},get _hiddenContentSize(){var t=this.grid?this._physicalRows*this._rowHeight:this._physicalSize;return t-this._viewportHeight},get _maxScrollTop(){return this._estScrollHeight-this._viewportHeight+this._scrollerPaddingTop},_minVirtualStart:0,get _maxVirtualStart(){return Math.max(0,this._virtualCount-this._physicalCount)},_virtualStartVal:0,set _virtualStart(t){this._virtualStartVal=Math.min(this._maxVirtualStart,Math.max(this._minVirtualStart,t))},get _virtualStart(){return this._virtualStartVal||0},_physicalStartVal:0,set _physicalStart(t){this._physicalStartVal=t%this._physicalCount,this._physicalStartVal<0&&(this._physicalStartVal=this._physicalCount+this._physicalStartVal),this._physicalEnd=(this._physicalStart+this._physicalCount-1)%this._physicalCount},get _physicalStart(){return this._physicalStartVal||0},_physicalCountVal:0,set _physicalCount(t){this._physicalCountVal=t,this._physicalEnd=(this._physicalStart+this._physicalCount-1)%this._physicalCount},get _physicalCount(){return this._physicalCountVal},_physicalEnd:0,get _optPhysicalSize(){return this.grid?this._estRowsInView*this._rowHeight*this._maxPages:0===this._viewportHeight?1/0:this._viewportHeight*this._maxPages},get _isVisible(){return Boolean(this.offsetWidth||this.offsetHeight)},get firstVisibleIndex(){if(null===this._firstVisibleIndexVal){var t=Math.floor(this._physicalTop+this._scrollerPaddingTop);this._firstVisibleIndexVal=this._iterateItems(function(i,e){return t+=this._getPhysicalSizeIncrement(i),t>this._scrollPosition?this.grid?e-e%this._itemsPerRow:e:this.grid&&this._virtualCount-1===e?e-e%this._itemsPerRow:void 0})||0}return this._firstVisibleIndexVal},get lastVisibleIndex(){if(null===this._lastVisibleIndexVal)if(this.grid){var t=this.firstVisibleIndex+this._estRowsInView*this._itemsPerRow-1;this._lastVisibleIndexVal=Math.min(this._virtualCount,t)}else{var i=this._physicalTop;this._iterateItems(function(t,e){return!(i<this._scrollBottom)||(this._lastVisibleIndexVal=e,void(i+=this._getPhysicalSizeIncrement(t)))})}return this._lastVisibleIndexVal},get _defaultScrollTarget(){return this},get _virtualRowCount(){return Math.ceil(this._virtualCount/this._itemsPerRow)},get _estRowsInView(){return Math.ceil(this._viewportHeight/this._rowHeight)},get _physicalRows(){return Math.ceil(this._physicalCount/this._itemsPerRow)},ready:function(){this.addEventListener("focus",this._didFocus.bind(this),!0)},attached:function(){0===this._physicalCount&&this._debounceTemplate(this._render),this.listen(this,"iron-resize","_resizeHandler")},detached:function(){this.unlisten(this,"iron-resize","_resizeHandler")},_setOverflow:function(t){this.style.webkitOverflowScrolling=t===this?"touch":"",this.style.overflow=t===this?"auto":""},updateViewportBoundaries:function(){var t=window.getComputedStyle(this);this._scrollerPaddingTop=this.scrollTarget===this?0:parseInt(t["padding-top"],10),this._isRTL=Boolean("rtl"===t.direction),this._viewportWidth=this.$.items.offsetWidth,this._viewportHeight=this._scrollTargetHeight,this.grid&&this._updateGridMetrics()},_scrollHandler:function(){var t=Math.max(0,Math.min(this._maxScrollTop,this._scrollTop)),i=t-this._scrollPosition,e=i>=0;if(this._scrollPosition=t,this._firstVisibleIndexVal=null,this._lastVisibleIndexVal=null,Math.abs(i)>this._physicalSize){var s=Math.round(i/this._physicalAverage)*this._itemsPerRow;this._physicalTop=this._physicalTop+i,this._virtualStart=this._virtualStart+s,this._physicalStart=this._physicalStart+s,this._update()}else{var h=this._getReusables(e);e?(this._physicalTop=h.physicalTop,this._virtualStart=this._virtualStart+h.indexes.length,this._physicalStart=this._physicalStart+h.indexes.length):(this._virtualStart=this._virtualStart-h.indexes.length,this._physicalStart=this._physicalStart-h.indexes.length),0===h.indexes.length?this._increasePoolIfNeeded():this._update(h.indexes,e?null:h.indexes)}},_getReusables:function(t){var i,e,s,h,l=[],o=this._hiddenContentSize*this._ratio,a=this._virtualStart,n=this._virtualEnd,r=this._physicalCount,c=this._physicalTop+this._scrollerPaddingTop,_=this._scrollTop,u=this._scrollBottom;for(t?(i=this._physicalStart,e=this._physicalEnd,s=_-c):(i=this._physicalEnd,e=this._physicalStart,s=this._physicalBottom-u);;){if(h=this._getPhysicalSizeIncrement(i),s-=h,l.length>=r||s<=o)break;if(t){if(n+l.length+1>=this._virtualCount)break;if(c+h>=_)break;l.push(i),c+=h,i=(i+1)%r}else{if(a-l.length<=0)break;if(c+this._physicalSize-h<=u)break;l.push(i),c-=h,i=0===i?r-1:i-1}}return{indexes:l,physicalTop:c-this._scrollerPaddingTop}},_update:function(t,i){if(!t||0!==t.length){if(this._manageFocus(),this._assignModels(t),this._updateMetrics(t),i)for(;i.length;){var e=i.pop();this._physicalTop-=this._getPhysicalSizeIncrement(e)}this._positionItems(),this._updateScrollerSize(),this._increasePoolIfNeeded()}},_createPool:function(t){var i=new Array(t);this._ensureTemplatized();for(var e=0;e<t;e++){var s=this.stamp(null);i[e]=s.root.querySelector("*"),Polymer.dom(this).appendChild(s.root)}return i},_increasePoolIfNeeded:function(){var t=this,i=this._physicalBottom>=this._scrollBottom&&this._physicalTop<=this._scrollPosition;if(this._physicalSize>=this._optPhysicalSize&&i)return!1;var e=Math.round(.5*this._physicalCount);return i?(this._yield(function(){t._increasePool(Math.min(e,Math.max(1,Math.round(50/t._templateCost))))}),!0):(this._debounceTemplate(this._increasePool.bind(this,e)),!0)},_yield:function(t){var i=window,e=i.requestIdleCallback?i.requestIdleCallback(t):i.setTimeout(t,16);Polymer.dom.addDebouncer({complete:function(){i.cancelIdleCallback?i.cancelIdleCallback(e):i.clearTimeout(e),t()}})},_increasePool:function(t){var i=Math.min(this._physicalCount+t,this._virtualCount-this._virtualStart,Math.max(this.maxPhysicalCount,e)),s=this._physicalCount,h=i-s,l=window.performance.now();h<=0||([].push.apply(this._physicalItems,this._createPool(h)),[].push.apply(this._physicalSizes,new Array(h)),this._physicalCount=s+h,this._physicalStart>this._physicalEnd&&this._isIndexRendered(this._focusedIndex)&&this._getPhysicalIndex(this._focusedIndex)<this._physicalEnd&&(this._physicalStart=this._physicalStart+h),this._update(),this._templateCost=(window.performance.now()-l)/h)},_render:function(){if(this.isAttached&&this._isVisible)if(0===this._physicalCount)this.updateViewportBoundaries(),this._increasePool(e);else{var t=this._getReusables(!0);this._physicalTop=t.physicalTop,this._virtualStart=this._virtualStart+t.indexes.length,this._physicalStart=this._physicalStart+t.indexes.length,this._update(t.indexes),this._update()}},_ensureTemplatized:function(){if(!this.ctor){var t={};t.__key__=!0,t[this.as]=!0,t[this.indexAs]=!0,t[this.selectedAs]=!0,t.tabIndex=!0,this._instanceProps=t,this._userTemplate=Polymer.dom(this).querySelector("template"),this._userTemplate?this.templatize(this._userTemplate):console.warn("iron-list requires a template to be provided in light-dom")}},_getStampedChildren:function(){return this._physicalItems},_forwardInstancePath:function(t,i,e){0===i.indexOf(this.as+".")&&this.notifyPath("items."+t.__key__+"."+i.slice(this.as.length+1),e)},_forwardParentProp:function(t,i){this._physicalItems&&this._physicalItems.forEach(function(e){e._templateInstance[t]=i},this)},_forwardParentPath:function(t,i){this._physicalItems&&this._physicalItems.forEach(function(e){e._templateInstance.notifyPath(t,i,!0)},this)},_forwardItemPath:function(t,i){if(this._physicalIndexForKey){var e=t.indexOf("."),s=t.substring(0,e<0?t.length:e),h=this._physicalIndexForKey[s],l=this._offscreenFocusedItem,o=l&&l._templateInstance.__key__===s?l:this._physicalItems[h];if(o&&o._templateInstance.__key__===s)if(e>=0)t=this.as+"."+t.substring(e+1),o._templateInstance.notifyPath(t,i,!0);else{var a=o._templateInstance[this.as];if(Array.isArray(this.selectedItems)){for(var n=0;n<this.selectedItems.length;n++)if(this.selectedItems[n]===a){this.set("selectedItems."+n,i);break}}else this.selectedItem===a&&this.set("selectedItem",i);o._templateInstance[this.as]=i}}},_itemsChanged:function(t){"items"===t.path?(this._virtualStart=0,this._physicalTop=0,this._virtualCount=this.items?this.items.length:0,this._collection=this.items?Polymer.Collection.get(this.items):null,this._physicalIndexForKey={},this._firstVisibleIndexVal=null,this._lastVisibleIndexVal=null,this._physicalCount=this._physicalCount||0,this._physicalItems=this._physicalItems||[],this._physicalSizes=this._physicalSizes||[],this._physicalStart=0,this._scrollTop>this._scrollerPaddingTop&&this._resetScrollPosition(0),this._removeFocusedItem(),this._debounceTemplate(this._render)):"items.splices"===t.path?(this._adjustVirtualIndex(t.value.indexSplices),this._virtualCount=this.items?this.items.length:0,this._debounceTemplate(this._render)):this._forwardItemPath(t.path.split(".").slice(1).join("."),t.value)},_adjustVirtualIndex:function(t){t.forEach(function(t){if(t.removed.forEach(this._removeItem,this),t.index<this._virtualStart){var i=Math.max(t.addedCount-t.removed.length,t.index-this._virtualStart);this._virtualStart=this._virtualStart+i,this._focusedIndex>=0&&(this._focusedIndex=this._focusedIndex+i)}},this)},_removeItem:function(t){this.$.selector.deselect(t),this._focusedItem&&this._focusedItem._templateInstance[this.as]===t&&this._removeFocusedItem()},_iterateItems:function(t,i){var e,s,h,l;if(2===arguments.length&&i){for(l=0;l<i.length;l++)if(e=i[l],s=this._computeVidx(e),null!=(h=t.call(this,e,s)))return h}else{for(e=this._physicalStart,s=this._virtualStart;e<this._physicalCount;e++,s++)if(null!=(h=t.call(this,e,s)))return h;for(e=0;e<this._physicalStart;e++,s++)if(null!=(h=t.call(this,e,s)))return h}},_computeVidx:function(t){return t>=this._physicalStart?this._virtualStart+(t-this._physicalStart):this._virtualStart+(this._physicalCount-this._physicalStart)+t},_assignModels:function(t){this._iterateItems(function(t,i){var e=this._physicalItems[t],s=e._templateInstance,h=this.items&&this.items[i];null!=h?(s[this.as]=h,s.__key__=this._collection.getKey(h),s[this.selectedAs]=this.$.selector.isSelected(h),s[this.indexAs]=i,s.tabIndex=this._focusedIndex===i?0:-1,this._physicalIndexForKey[s.__key__]=t,e.removeAttribute("hidden")):(s.__key__=null,e.setAttribute("hidden",""))},t)},_updateMetrics:function(t){Polymer.dom.flush();var i=0,e=0,s=this._physicalAverageCount,h=this._physicalAverage;this._iterateItems(function(t,s){e+=this._physicalSizes[t]||0,this._physicalSizes[t]=this._physicalItems[t].offsetHeight,i+=this._physicalSizes[t],this._physicalAverageCount+=this._physicalSizes[t]?1:0},t),this.grid?(this._updateGridMetrics(),this._physicalSize=Math.ceil(this._physicalCount/this._itemsPerRow)*this._rowHeight):this._physicalSize=this._physicalSize+i-e,this._physicalAverageCount!==s&&(this._physicalAverage=Math.round((h*s+i)/this._physicalAverageCount))},_updateGridMetrics:function(){this._itemWidth=this._physicalCount>0?this._physicalItems[0].getBoundingClientRect().width:200,this._rowHeight=this._physicalCount>0?this._physicalItems[0].offsetHeight:200,this._itemsPerRow=this._itemWidth?Math.floor(this._viewportWidth/this._itemWidth):this._itemsPerRow},_positionItems:function(){this._adjustScrollPosition();var t=this._physicalTop;if(this.grid){var i=this._itemsPerRow*this._itemWidth,e=(this._viewportWidth-i)/2;this._iterateItems(function(i,s){var h=s%this._itemsPerRow,l=Math.floor(h*this._itemWidth+e);this._isRTL&&(l*=-1),this.translate3d(l+"px",t+"px",0,this._physicalItems[i]),this._shouldRenderNextRow(s)&&(t+=this._rowHeight)})}else this._iterateItems(function(i,e){this.translate3d(0,t+"px",0,this._physicalItems[i]),t+=this._physicalSizes[i]})},_getPhysicalSizeIncrement:function(t){return this.grid?this._computeVidx(t)%this._itemsPerRow!==this._itemsPerRow-1?0:this._rowHeight:this._physicalSizes[t]},_shouldRenderNextRow:function(t){return t%this._itemsPerRow===this._itemsPerRow-1},_adjustScrollPosition:function(){var t=0===this._virtualStart?this._physicalTop:Math.min(this._scrollPosition+this._physicalTop,0);t&&(this._physicalTop=this._physicalTop-t,i||0===this._physicalTop||this._resetScrollPosition(this._scrollTop-t))},_resetScrollPosition:function(t){this.scrollTarget&&(this._scrollTop=t,this._scrollPosition=this._scrollTop)},_updateScrollerSize:function(t){this.grid?this._estScrollHeight=this._virtualRowCount*this._rowHeight:this._estScrollHeight=this._physicalBottom+Math.max(this._virtualCount-this._physicalCount-this._virtualStart,0)*this._physicalAverage,t=t||0===this._scrollHeight,t=t||this._scrollPosition>=this._estScrollHeight-this._physicalSize,t=t||this.grid&&this.$.items.style.height<this._estScrollHeight,(t||Math.abs(this._estScrollHeight-this._scrollHeight)>=this._optPhysicalSize)&&(this.$.items.style.height=this._estScrollHeight+"px",this._scrollHeight=this._estScrollHeight)},scrollToItem:function(t){return this.scrollToIndex(this.items.indexOf(t))},scrollToIndex:function(t){if(!("number"!=typeof t||t<0||t>this.items.length-1)&&(Polymer.dom.flush(),0!==this._physicalCount)){t=Math.min(Math.max(t,0),this._virtualCount-1),(!this._isIndexRendered(t)||t>=this._maxVirtualStart)&&(this._virtualStart=this.grid?t-2*this._itemsPerRow:t-1),this._manageFocus(),this._assignModels(),this._updateMetrics(),this._physicalTop=Math.floor(this._virtualStart/this._itemsPerRow)*this._physicalAverage;for(var i=this._physicalStart,e=this._virtualStart,s=0,h=this._hiddenContentSize;e<t&&s<=h;)s+=this._getPhysicalSizeIncrement(i),i=(i+1)%this._physicalCount,e++;this._updateScrollerSize(!0),this._positionItems(),this._resetScrollPosition(this._physicalTop+this._scrollerPaddingTop+s),this._increasePoolIfNeeded(),this._firstVisibleIndexVal=null,this._lastVisibleIndexVal=null}},_resetAverage:function(){this._physicalAverage=0,this._physicalAverageCount=0},_resizeHandler:function(){this._debounceTemplate(function(){var t=Math.abs(this._viewportHeight-this._scrollTargetHeight);this.updateViewportBoundaries(),("ontouchstart"in window||navigator.maxTouchPoints>0)&&t>0&&t<100||(this._isVisible?(this.toggleScrollListener(!0),this._resetAverage(),this._render()):this.toggleScrollListener(!1))}.bind(this))},_getModelFromItem:function(t){var i=this._collection.getKey(t),e=this._physicalIndexForKey[i];return null!=e?this._physicalItems[e]._templateInstance:null},_getNormalizedItem:function(t){if(void 0===this._collection.getKey(t)){if("number"==typeof t){if(t=this.items[t],!t)throw new RangeError("<item> not found");return t}throw new TypeError("<item> should be a valid item")}return t},selectItem:function(t){t=this._getNormalizedItem(t);var i=this._getModelFromItem(t);!this.multiSelection&&this.selectedItem&&this.deselectItem(this.selectedItem),i&&(i[this.selectedAs]=!0),this.$.selector.select(t),this.updateSizeForItem(t)},deselectItem:function(t){t=this._getNormalizedItem(t);var i=this._getModelFromItem(t);i&&(i[this.selectedAs]=!1),this.$.selector.deselect(t),this.updateSizeForItem(t)},toggleSelectionForItem:function(t){t=this._getNormalizedItem(t),this.$.selector.isSelected(t)?this.deselectItem(t):this.selectItem(t)},clearSelection:function(){function t(t){var i=this._getModelFromItem(t);i&&(i[this.selectedAs]=!1)}Array.isArray(this.selectedItems)?this.selectedItems.forEach(t,this):this.selectedItem&&t.call(this,this.selectedItem),this.$.selector.clearSelection()},_selectionEnabledChanged:function(t){var i=t?this.listen:this.unlisten;i.call(this,this,"tap","_selectionHandler")},_selectionHandler:function(t){var i=this.modelForElement(t.target);if(i){var e,s,l=Polymer.dom(t).path[0],o=Polymer.dom(this.domHost?this.domHost.root:document).activeElement,a=this._physicalItems[this._getPhysicalIndex(i[this.indexAs])];"input"!==l.localName&&"button"!==l.localName&&"select"!==l.localName&&(e=i.tabIndex,i.tabIndex=h,s=o?o.tabIndex:-1,i.tabIndex=e,o&&a!==o&&a.contains(o)&&s!==h||this.toggleSelectionForItem(i[this.as]))}},_multiSelectionChanged:function(t){this.clearSelection(),this.$.selector.multi=t},updateSizeForItem:function(t){t=this._getNormalizedItem(t);var i=this._collection.getKey(t),e=this._physicalIndexForKey[i];null!=e&&(this._updateMetrics([e]),this._positionItems())},_manageFocus:function(){var t=this._focusedIndex;t>=0&&t<this._virtualCount?this._isIndexRendered(t)?this._restoreFocusedItem():this._createFocusBackfillItem():this._virtualCount>0&&this._physicalCount>0&&(this._focusedIndex=this._virtualStart,this._focusedItem=this._physicalItems[this._physicalStart])},_isIndexRendered:function(t){return t>=this._virtualStart&&t<=this._virtualEnd},_isIndexVisible:function(t){return t>=this.firstVisibleIndex&&t<=this.lastVisibleIndex},_getPhysicalIndex:function(t){return this._physicalIndexForKey[this._collection.getKey(this._getNormalizedItem(t))]},_focusPhysicalItem:function(t){if(!(t<0||t>=this._virtualCount)){this._restoreFocusedItem(),this._isIndexRendered(t)||this.scrollToIndex(t);var i,e=this._physicalItems[this._getPhysicalIndex(t)],s=e._templateInstance;s.tabIndex=h,e.tabIndex===h&&(i=e),i||(i=Polymer.dom(e).querySelector('[tabindex="'+h+'"]')),s.tabIndex=0,this._focusedIndex=t,i&&i.focus()}},_removeFocusedItem:function(){this._offscreenFocusedItem&&Polymer.dom(this).removeChild(this._offscreenFocusedItem),this._offscreenFocusedItem=null,this._focusBackfillItem=null,this._focusedItem=null,this._focusedIndex=-1},_createFocusBackfillItem:function(){var t=this._focusedIndex,i=this._getPhysicalIndex(t);if(!(this._offscreenFocusedItem||null==i||t<0)){if(!this._focusBackfillItem){var e=this.stamp(null);this._focusBackfillItem=e.root.querySelector("*"),Polymer.dom(this).appendChild(e.root)}this._offscreenFocusedItem=this._physicalItems[i],this._offscreenFocusedItem._templateInstance.tabIndex=0,this._physicalItems[i]=this._focusBackfillItem,this.translate3d(0,s,0,this._offscreenFocusedItem)}},_restoreFocusedItem:function(){var t,i=this._focusedIndex;!this._offscreenFocusedItem||this._focusedIndex<0||(this._assignModels(),t=this._getPhysicalIndex(i),null!=t&&(this._focusBackfillItem=this._physicalItems[t],this._focusBackfillItem._templateInstance.tabIndex=-1,this._physicalItems[t]=this._offscreenFocusedItem,this._offscreenFocusedItem=null,this.translate3d(0,s,0,this._focusBackfillItem)))},_didFocus:function(t){var i=this.modelForElement(t.target),e=this._focusedItem?this._focusedItem._templateInstance:null,s=null!==this._offscreenFocusedItem,h=this._focusedIndex;i&&e&&(e===i?this._isIndexVisible(h)||this.scrollToIndex(h):(this._restoreFocusedItem(),e.tabIndex=-1,i.tabIndex=0,h=i[this.indexAs],this._focusedIndex=h,this._focusedItem=this._physicalItems[this._getPhysicalIndex(h)],s&&!this._offscreenFocusedItem&&this._update()))},_didMoveUp:function(){this._focusPhysicalItem(this._focusedIndex-1)},_didMoveDown:function(t){t.detail.keyboardEvent.preventDefault(),this._focusPhysicalItem(this._focusedIndex+1)},_didEnter:function(t){this._focusPhysicalItem(this._focusedIndex),this._selectionHandler(t.detail.keyboardEvent)}})}()</script><script>window.vaadin=window.vaadin||{},vaadin.elements=vaadin.elements||{},vaadin.elements.combobox=vaadin.elements.combobox||{},vaadin.elements.combobox.OverlayBehaviorImpl={properties:{positionTarget:{type:Object},verticalOffset:{type:Number,value:0},_alignedAbove:{type:Boolean,value:!1}},listeners:{"iron-resize":"_setPosition"},created:function(){this._boundSetPosition=this._setPosition.bind(this)},_unwrapIfNeeded:function(t){var e=Polymer.Settings.hasShadow&&!Polymer.Settings.nativeShadow;return e?window.unwrap(t):t},_processPendingMutationObserversFor:function(t){Polymer.Settings.useNativeCustomElements||CustomElements.takeRecords(t)},_moveTo:function(t){var e=this.parentNode;Polymer.dom(t).appendChild(this),e&&(this._processPendingMutationObserversFor(e),e.host&&Polymer.StyleTransformer.dom(this,e.host.is,this._scopeCssViaAttr,!0)),this._processPendingMutationObserversFor(this),t.host&&Polymer.StyleTransformer.dom(this,t.host.is,this._scopeCssViaAttr),t===document.body?(this.style.position=this._isPositionFixed(this.positionTarget)?"fixed":"absolute",window.addEventListener("scroll",this._boundSetPosition,!0),this._setPosition()):window.removeEventListener("scroll",this._boundSetPosition,!0)},_verticalOffset:function(t,e){return this._alignedAbove?-t.height:e.height+this.verticalOffset},_isPositionFixed:function(t){var e=t.offsetParent;return"fixed"===window.getComputedStyle(this._unwrapIfNeeded(t)).position||e&&this._isPositionFixed(e)},_maxHeight:function(t){var e=8,i=116,o=Math.min(window.innerHeight,document.body.scrollHeight-document.body.scrollTop);return this._alignedAbove?Math.max(t.top-e+Math.min(document.body.scrollTop,0),i)+"px":Math.max(o-t.bottom-e,i)+"px"},_setPosition:function(t){if(t&&t.target){var e=t.target===document?document.body:t.target,i=this._unwrapIfNeeded(this.parentElement);if(!e.contains(this)&&!e.contains(this.positionTarget)||i!==document.body)return}var o=this.positionTarget.getBoundingClientRect();this._alignedAbove=this._shouldAlignAbove(),this.style.maxHeight=this._maxHeight(o),this.$.selector.style.maxHeight=this._maxHeight(o);var s=this.getBoundingClientRect();this._translateX=o.left-s.left+(this._translateX||0),this._translateY=o.top-s.top+(this._translateY||0)+this._verticalOffset(s,o);var n=window.devicePixelRatio||1;this._translateX=Math.round(this._translateX*n)/n,this._translateY=Math.round(this._translateY*n)/n,this.translate3d(this._translateX+"px",this._translateY+"px","0"),this.style.width=this.positionTarget.clientWidth+"px",this.updateViewportBoundaries()},_shouldAlignAbove:function(){var t=(window.innerHeight-this.positionTarget.getBoundingClientRect().bottom-Math.min(document.body.scrollTop,0))/window.innerHeight;return t<.3}},vaadin.elements.combobox.OverlayBehavior=[Polymer.IronResizableBehavior,vaadin.elements.combobox.OverlayBehaviorImpl]</script><dom-module id="vaadin-combo-box-overlay" assetpath="../../bower_components/vaadin-combo-box/"><style>:host{position:absolute;@apply(--shadow-elevation-2dp);background:#fff;border-radius:0 0 2px 2px;top:0;left:0;z-index:200;overflow:hidden}#scroller{overflow:auto;max-height:var(--vaadin-combo-box-overlay-max-height,65vh);transform:translate3d(0,0,0);-webkit-overflow-scrolling:touch}#selector{--iron-list-items-container:{border-top:8px solid transparent;border-bottom:8px solid transparent};}#selector .item{cursor:pointer;padding:13px 16px;color:var(--primary-text-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#selector .item[focused],#selector:not([touch-device]) .item:hover{background:#eee}#selector .item[selected]{color:var(--primary-color)}</style><template><div id="scroller" scroller="[[_getScroller()]]" on-tap="_stopPropagation"><iron-list id="selector" touch-device$="[[touchDevice]]" role="listbox" data-selection$="[[_ariaActiveIndex]]" on-touchend="_preventDefault" selected-item="{{_selectedItem}}" items="[[_items]]" selection-enabled="" scroll-target="[[_getScroller()]]"><template><div class="item" id$="it[[index]]" selected$="[[selected]]" role$="[[_getAriaRole(index)]]" aria-selected$="[[_getAriaSelected(_focusedIndex,index)]]" focused$="[[_isItemFocused(_focusedIndex,index)]]">[[getItemLabel(item)]]</div></template></iron-list></div></template></dom-module><script>Polymer({is:"vaadin-combo-box-overlay",behaviors:[vaadin.elements.combobox.OverlayBehavior],properties:{touchDevice:{type:Boolean,reflectToAttribute:!0,value:function(){try{return document.createEvent("TouchEvent"),!0}catch(e){return!1}}},_selectedItem:{type:String,notify:!0},_items:{type:Object},_focusedIndex:{type:Number,notify:!0,value:-1,observer:"_focusedIndexChanged"},_focusedItem:{type:String,computed:"_getFocusedItem(_focusedIndex)"},_ariaActiveIndex:{type:Number,notify:!0,computed:"_getAriaActiveIndex(_focusedIndex)"},_itemLabelPath:{type:String,value:"label"},_itemValuePath:{type:String,value:"value"}},ready:function(){this._patchWheelOverScrolling(),void 0!==this.$.selector._scroller&&(this.$.selector._scroller=this._getScroller())},_getFocusedItem:function(e){if(e>=0)return this._items[e]},indexOfLabel:function(e){if(this._items&&e)for(var t=0;t<this._items.length;t++)if(this.getItemLabel(this._items[t]).toString().toLowerCase()===e.toString().toLowerCase())return t;return-1},getItemLabel:function(e){var t=this.get(this._itemLabelPath,e);return void 0!==t&&null!==t||(t=e?e.toString():""),t},_isItemFocused:function(e,t){return e==t},_getAriaActiveIndex:function(e){return e>=0&&"it"+e},_getAriaSelected:function(e,t){return this._isItemFocused(e,t).toString()},_getAriaRole:function(e){return void 0!==e&&"option"},_focusedIndexChanged:function(e){e>=0&&this._scrollIntoView(e)},_scrollIntoView:function(e){if(void 0!==this._visibleItemsCount()){var t=e;e>this._lastVisibleIndex()?(t=e-this._visibleItemsCount()+1,this.$.selector.scrollToIndex(e)):e>this.$.selector.firstVisibleIndex&&(t=this.$.selector.firstVisibleIndex),this.$.selector.scrollToIndex(Math.max(0,t))}},ensureItemsRendered:function(){this.$.selector.flushDebouncer("_debounceTemplate"),this.$.selector._render&&this.$.selector._render()},adjustScrollPosition:function(){this._items&&this._scrollIntoView(this._focusedIndex)},_getScroller:function(){return this.$.scroller},_patchWheelOverScrolling:function(){var e=this.$.selector;e.addEventListener("wheel",function(t){var i=e._scroller||e.scrollTarget,o=0===i.scrollTop,r=i.scrollHeight-i.scrollTop-i.clientHeight<=1;o&&t.deltaY<0?t.preventDefault():r&&t.deltaY>0&&t.preventDefault()})},updateViewportBoundaries:function(){this._cachedViewportTotalPadding=void 0,this.$.selector.updateViewportBoundaries()},get _viewportTotalPadding(){if(void 0===this._cachedViewportTotalPadding){var e=window.getComputedStyle(this._unwrapIfNeeded(this.$.selector.$.items));this._cachedViewportTotalPadding=[e.paddingTop,e.paddingBottom,e.borderTopWidth,e.borderBottomWidth].map(function(e){return parseInt(e,10)}).reduce(function(e,t){return e+t})}return this._cachedViewportTotalPadding},_visibleItemsCount:function(){var e=this.$.selector._physicalStart,t=this.$.selector._physicalSizes[e],i=this.$.selector._viewportHeight||this.$.selector._viewportSize;if(t&&i){var o=(i-this._viewportTotalPadding)/t;return Math.floor(o)}},_lastVisibleIndex:function(){if(this._visibleItemsCount())return this.$.selector.firstVisibleIndex+this._visibleItemsCount()-1},_selectItem:function(e){e="number"==typeof e?this._items[e]:e,this.$.selector.selectedItem!==e&&this.$.selector.selectItem(e)},_preventDefault:function(e){e.preventDefault()},_stopPropagation:function(e){e.stopPropagation()}})</script><dom-module id="vaadin-combo-box-shared-styles" assetpath="../../bower_components/vaadin-combo-box/"><template><style>.rotate-on-open,:host ::content .rotate-on-open{transition:all .2s!important}:host([opened]) .rotate-on-open,:host([opened]) ::content .rotate-on-open{-webkit-transform:rotate(180deg);transform:rotate(180deg)}:host ::content paper-icon-button.small,paper-icon-button.small{box-sizing:content-box!important;bottom:-6px!important;width:20px!important;height:20px!important;padding:4px 6px 8px!important}:host(:not([has-value])) .clear-button,:host(:not([has-value])) ::content .clear-button,:host(:not([opened])) .clear-button,:host(:not([opened])) ::content .clear-button{display:none}:host([disabled]) .toggle-button,:host([disabled]) ::content .toggle-button,:host([readonly]) .toggle-button,:host([readonly]) ::content .toggle-button{display:none}</style></template><script>Polymer({is:"vaadin-combo-box-shared-styles"})</script></dom-module><script>Polymer({is:"iron-iconset-svg",properties:{name:{type:String,observer:"_nameChanged"},size:{type:Number,value:24},rtlMirroring:{type:Boolean,value:!1}},attached:function(){this.style.display="none"},getIconNames:function(){return this._icons=this._createIconMap(),Object.keys(this._icons).map(function(e){return this.name+":"+e},this)},applyIcon:function(e,t){e=e.root||e,this.removeIcon(e);var n=this._cloneIcon(t,this.rtlMirroring&&this._targetIsRTL(e));if(n){var r=Polymer.dom(e);return r.insertBefore(n,r.childNodes[0]),e._svgIcon=n}return null},removeIcon:function(e){e=e.root||e,e._svgIcon&&(Polymer.dom(e).removeChild(e._svgIcon),e._svgIcon=null)},_targetIsRTL:function(e){return null==this.__targetIsRTL&&(e&&e.nodeType!==Node.ELEMENT_NODE&&(e=e.host),this.__targetIsRTL=e&&"rtl"===window.getComputedStyle(e).direction),this.__targetIsRTL},_nameChanged:function(){new Polymer.IronMeta({type:"iconset",key:this.name,value:this}),this.async(function(){this.fire("iron-iconset-added",this,{node:window})})},_createIconMap:function(){var e=Object.create(null);return Polymer.dom(this).querySelectorAll("[id]").forEach(function(t){e[t.id]=t}),e},_cloneIcon:function(e,t){return this._icons=this._icons||this._createIconMap(),this._prepareSvgClone(this._icons[e],this.size,t)},_prepareSvgClone:function(e,t,n){if(e){var r=e.cloneNode(!0),i=document.createElementNS("http://www.w3.org/2000/svg","svg"),o=r.getAttribute("viewBox")||"0 0 "+t+" "+t,s="pointer-events: none; display: block; width: 100%; height: 100%;";return n&&r.hasAttribute("mirror-in-rtl")&&(s+="-webkit-transform:scale(-1,1);transform:scale(-1,1);"),i.setAttribute("viewBox",o),i.setAttribute("preserveAspectRatio","xMidYMid meet"),i.style.cssText=s,i.appendChild(r).removeAttribute("id"),i}return null}})</script><iron-iconset-svg size="24" name="vaadin-combo-box"><svg><defs><g id="arrow-drop-down"><path d="M7 10l5 5 5-5z"></path></g><g id="clear"><path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"></path></g></defs></svg></iron-iconset-svg><dom-module id="vaadin-combo-box" assetpath="../../bower_components/vaadin-combo-box/"><style include="vaadin-combo-box-shared-styles">:host{display:block;padding:8px 0}:host>#overlay{display:none}paper-input-container{position:relative;padding:0}:host ::content paper-icon-button.clear-button,:host ::content paper-icon-button.toggle-button,paper-icon-button.clear-button,paper-icon-button.toggle-button{position:absolute;bottom:-4px;right:-4px;line-height:18px!important;width:32px;height:32px;padding:4px;text-align:center;color:rgba(0,0,0,.38);cursor:pointer;margin-top:-1px;--paper-icon-button-ink-color:rgba(0, 0, 0, .54)}paper-input-container ::content paper-icon-button.clear-button,paper-input-container paper-icon-button.clear-button{right:28px}:host([opened]) paper-input-container ::content paper-icon-button,:host([opened]) paper-input-container paper-icon-button,paper-input-container ::content paper-icon-button:hover,paper-input-container paper-icon-button:hover{color:rgba(0,0,0,.54)}:host([opened]) paper-input-container ::content paper-icon-button:hover,:host([opened]) paper-input-container paper-icon-button:hover{color:rgba(0,0,0,.86)}:host([opened]) paper-input-container{z-index:20}#input::-ms-clear{display:none}#input{box-sizing:border-box;padding-right:28px}:host([opened][has-value]) #input{padding-right:60px;margin-right:-32px}</style><template><paper-input-container id="inputContainer" disabled$="[[disabled]]" no-label-float="[[noLabelFloat]]" always-float-label="[[_computeAlwaysFloatLabel(alwaysFloatLabel,placeholder)]]" auto-validate$="[[autoValidate]]" invalid="[[invalid]]"><label on-down="_preventDefault" id="label" hidden$="[[!label]]" aria-hidden="true" on-tap="_openAsync">[[label]]</label><content select="[prefix]"></content><input is="iron-input" id="input" type="text" role="combobox" autocomplete="off" autocapitalize="none" bind-value="{{_inputElementValue}}" aria-labelledby="label" aria-activedescendant$="[[_ariaActiveIndex]]" aria-expanded$="[[_getAriaExpanded(opened)]]" aria-autocomplete="list" aria-owns="overlay" disabled$="[[disabled]]" invalid="{{invalid}}" prevent-invalid-input="[[preventInvalidInput]]" allowed-pattern="[[allowedPattern]]" pattern$="[[pattern]]" required$="[[required]]" autofocus$="[[autofocus]]" inputmode$="[[inputmode]]" name$="[[name]]" placeholder$="[[placeholder]]" readonly$="[[readonly]]" size$="[[size]]" on-input="_inputValueChanged" on-blur="_onBlur" on-change="_stopPropagation" key-event-target=""><content select="[suffix]"></content><content select=".clear-button"><paper-icon-button id="clearIcon" tabindex="-1" icon="vaadin-combo-box:clear" on-down="_preventDefault" class="clear-button small"></paper-icon-button></content><content select=".toggle-button"><paper-icon-button id="toggleIcon" tabindex="-1" icon="vaadin-combo-box:arrow-drop-down" aria-controls="overlay" on-down="_preventDefault" class="toggle-button rotate-on-open"></paper-icon-button></content><template is="dom-if" if="[[errorMessage]]"><paper-input-error>[[errorMessage]]</paper-input-error></template></paper-input-container><vaadin-combo-box-overlay id="overlay" _aria-active-index="{{_ariaActiveIndex}}" position-target="[[_getPositionTarget()]]" _focused-index="[[_focusedIndex]]" _item-label-path="[[itemLabelPath]]" on-down="_onOverlayDown" on-mousedown="_preventDefault" vertical-offset="2"></vaadin-combo-box-overlay></template></dom-module><script>Polymer({is:"vaadin-combo-box",behaviors:[Polymer.IronValidatableBehavior,vaadin.elements.combobox.ComboBoxBehavior],properties:{label:{type:String,reflectToAttribute:!0},noLabelFloat:{type:Boolean,value:!1},alwaysFloatLabel:{type:Boolean,value:!1},autoValidate:{type:Boolean,value:!1},disabled:{type:Boolean,value:!1},preventInvalidInput:{type:Boolean},allowedPattern:{type:String},pattern:{type:String},required:{type:Boolean,value:!1},errorMessage:{type:String},autofocus:{type:Boolean},inputmode:{type:String},name:{type:String},placeholder:{type:String,value:""},readonly:{type:Boolean,value:!1},size:{type:Number}},attached:function(){this._setInputElement(this.$.input),this._toggleElement=Polymer.dom(this).querySelector(".toggle-button")||this.$.toggleIcon,this._clearElement=Polymer.dom(this).querySelector(".clear-button")||this.$.clearIcon},_computeAlwaysFloatLabel:function(e,t){return t||e},_getPositionTarget:function(){return this.$.inputContainer},_getAriaExpanded:function(e){return e.toString()}})</script></div><dom-module id="ha-panel-dev-service"><template><style include="ha-style">:host{background-color:#fff;-ms-user-select:initial;-webkit-user-select:initial;-moz-user-select:initial}.content{padding:24px}.ha-form{margin-right:16px;max-width:500px}.description{margin-top:24px;white-space:pre-wrap}.header{@apply(--paper-font-title)}.attributes th{text-align:left}.attributes tr{vertical-align:top}.attributes tr:nth-child(even){background-color:#eee}.attributes td:nth-child(3){white-space:pre-wrap;word-break:break-word}pre{margin:0}</style><app-header-layout has-scrolling-region=""><app-header fixed=""><app-toolbar><ha-menu-button narrow="[[narrow]]" show-menu="[[showMenu]]"></ha-menu-button><div main-title="">Services</div></app-toolbar></app-header><app-localstorage-document key="panel-dev-service-state-domain" data="{{domain}}"></app-localstorage-document><app-localstorage-document key="panel-dev-service-state-service" data="{{service}}"></app-localstorage-document><app-localstorage-document key="panel-dev-service-state-servicedata" data="{{serviceData}}"></app-localstorage-document><div class="content"><p>Call a service from a component.</p><div class="ha-form"><vaadin-combo-box label="Domain" items="[[computeDomains(serviceDomains)]]" value="{{domain}}"></vaadin-combo-box><vaadin-combo-box label="Service" items="[[computeServices(serviceDomains, domain)]]" value="{{service}}"></vaadin-combo-box><paper-textarea label="Service Data (JSON, optional)" value="{{serviceData}}"></paper-textarea><paper-button on-tap="callService" raised="">Call Service</paper-button></div><template is="dom-if" if="[[!domain]]"><h1>Select a domain and service to see the description</h1></template><template is="dom-if" if="[[domain]]"><template is="dom-if" if="[[!service]]"><h1>Select a service to see the description</h1></template></template><template is="dom-if" if="[[domain]]"><template is="dom-if" if="[[service]]"><template is="dom-if" if="[[!_attributes.length]]"><h1>No description is available</h1></template><template is="dom-if" if="[[_attributes.length]]"><h1>Valid Parameters</h1><table class="attributes"><tbody><tr><th>Parameter</th><th>Description</th><th>Example</th></tr><template is="dom-repeat" items="[[_attributes]]" as="attribute"><tr><td><pre>[[attribute.key]]</pre></td><td>[[attribute.description]]</td><td>[[attribute.example]]</td></tr></template></tbody></table></template></template></template></div></app-header-layout></template></dom-module><script>Polymer({is:"ha-panel-dev-service",behaviors:[window.hassBehavior],properties:{hass:{type:Object},narrow:{type:Boolean,value:!1},showMenu:{type:Boolean,value:!1},domain:{type:String,value:"",observer:"domainChanged"},service:{type:String,value:"",observer:"serviceChanged"},serviceData:{type:String,value:""},_attributes:{type:Array,computed:"computeAttributesArray(hass, domain, service)"},serviceDomains:{type:Array,bindNuclear:function(e){return e.serviceGetters.entityMap}}},computeAttributesArray:function(e,t,r){return e.reactor.evaluate([e.serviceGetters.entityMap,function(e){return e.has(t)&&e.get(t).get("services").has(r)?e.get(t).get("services").get(r).get("fields").map(function(e,t){var r=e.toJS();return r.key=t,r}).toArray():[]}])},computeDomains:function(e){return e.valueSeq().map(function(e){return e.domain}).sort().toJS()},computeServices:function(e,t){return t?e.get(t).get("services").keySeq().toArray():""},domainChanged:function(){this.service="",this.serviceData=""},serviceChanged:function(){this.serviceData=""},callService:function(){var e;try{e=this.serviceData?JSON.parse(this.serviceData):{}}catch(e){return void alert("Error parsing JSON: "+e)}this.hass.serviceActions.callService(this.domain,this.service,e)}})</script></body></html> \ No newline at end of file +<html><head><meta charset="UTF-8"></head><body><div hidden="" by-vulcanize=""><script>!function(){var e={},t={},i=null;Polymer.IronMeta=Polymer({is:"iron-meta",properties:{type:{type:String,value:"default",observer:"_typeChanged"},key:{type:String,observer:"_keyChanged"},value:{type:Object,notify:!0,observer:"_valueChanged"},self:{type:Boolean,observer:"_selfChanged"},list:{type:Array,notify:!0}},hostAttributes:{hidden:!0},factoryImpl:function(e){if(e)for(var t in e)switch(t){case"type":case"key":case"value":this[t]=e[t]}},created:function(){this._metaDatas=e,this._metaArrays=t},_keyChanged:function(e,t){this._resetRegistration(t)},_valueChanged:function(e){this._resetRegistration(this.key)},_selfChanged:function(e){e&&(this.value=this)},_typeChanged:function(i){this._unregisterKey(this.key),e[i]||(e[i]={}),this._metaData=e[i],t[i]||(t[i]=[]),this.list=t[i],this._registerKeyValue(this.key,this.value)},byKey:function(e){return this._metaData&&this._metaData[e]},_resetRegistration:function(e){this._unregisterKey(e),this._registerKeyValue(this.key,this.value)},_unregisterKey:function(e){this._unregister(e,this._metaData,this.list)},_registerKeyValue:function(e,t){this._register(e,t,this._metaData,this.list)},_register:function(e,t,i,a){e&&i&&void 0!==t&&(i[e]=t,a.push(t))},_unregister:function(e,t,i){if(e&&t&&e in t){var a=t[e];delete t[e],this.arrayDelete(i,a)}}}),Polymer.IronMeta.getIronMeta=function(){return null===i&&(i=new Polymer.IronMeta),i},Polymer.IronMetaQuery=Polymer({is:"iron-meta-query",properties:{type:{type:String,value:"default",observer:"_typeChanged"},key:{type:String,observer:"_keyChanged"},value:{type:Object,notify:!0,readOnly:!0},list:{type:Array,notify:!0}},factoryImpl:function(e){if(e)for(var t in e)switch(t){case"type":case"key":this[t]=e[t]}},created:function(){this._metaDatas=e,this._metaArrays=t},_keyChanged:function(e){this._setValue(this._metaData&&this._metaData[e])},_typeChanged:function(i){this._metaData=e[i],this.list=t[i],this.key&&this._keyChanged(this.key)},byKey:function(e){return this._metaData&&this._metaData[e]}})}()</script><script>Polymer.IronValidatableBehaviorMeta=null,Polymer.IronValidatableBehavior={properties:{validator:{type:String},invalid:{notify:!0,reflectToAttribute:!0,type:Boolean,value:!1},_validatorMeta:{type:Object},validatorType:{type:String,value:"validator"},_validator:{type:Object,computed:"__computeValidator(validator)"}},observers:["_invalidChanged(invalid)"],registered:function(){Polymer.IronValidatableBehaviorMeta=new Polymer.IronMeta({type:"validator"})},_invalidChanged:function(){this.invalid?this.setAttribute("aria-invalid","true"):this.removeAttribute("aria-invalid")},hasValidator:function(){return null!=this._validator},validate:function(a){return this.invalid=!this._getValidity(a),!this.invalid},_getValidity:function(a){return!this.hasValidator()||this._validator.validate(a)},__computeValidator:function(){return Polymer.IronValidatableBehaviorMeta&&Polymer.IronValidatableBehaviorMeta.byKey(this.validator)}}</script><script>Polymer.IronFormElementBehavior={properties:{name:{type:String},value:{notify:!0,type:String},required:{type:Boolean,value:!1},_parentForm:{type:Object}},attached:function(){this.fire("iron-form-element-register")},detached:function(){this._parentForm&&this._parentForm.fire("iron-form-element-unregister",{target:this})}}</script><dom-module id="iron-autogrow-textarea" assetpath="../../bower_components/iron-autogrow-textarea/"><template><style>:host{display:inline-block;position:relative;width:400px;border:1px solid;padding:2px;-moz-appearance:textarea;-webkit-appearance:textarea;overflow:hidden}.mirror-text{visibility:hidden;word-wrap:break-word}.fit{@apply(--layout-fit)}textarea{position:relative;outline:0;border:none;resize:none;background:inherit;color:inherit;width:100%;height:100%;font-size:inherit;font-family:inherit;line-height:inherit;text-align:inherit;@apply(--iron-autogrow-textarea)}::content textarea:invalid{box-shadow:none}textarea::-webkit-input-placeholder{@apply(--iron-autogrow-textarea-placeholder)}textarea:-moz-placeholder{@apply(--iron-autogrow-textarea-placeholder)}textarea::-moz-placeholder{@apply(--iron-autogrow-textarea-placeholder)}textarea:-ms-input-placeholder{@apply(--iron-autogrow-textarea-placeholder)}</style><div id="mirror" class="mirror-text" aria-hidden="true"> </div><div class="textarea-container fit"><textarea id="textarea" name$="[[name]]" autocomplete$="[[autocomplete]]" autofocus$="[[autofocus]]" inputmode$="[[inputmode]]" placeholder$="[[placeholder]]" readonly$="[[readonly]]" required$="[[required]]" disabled$="[[disabled]]" rows$="[[rows]]" minlength$="[[minlength]]" maxlength$="[[maxlength]]"></textarea></div></template></dom-module><script>Polymer({is:"iron-autogrow-textarea",behaviors:[Polymer.IronFormElementBehavior,Polymer.IronValidatableBehavior,Polymer.IronControlState],properties:{bindValue:{observer:"_bindValueChanged",type:String},rows:{type:Number,value:1,observer:"_updateCached"},maxRows:{type:Number,value:0,observer:"_updateCached"},autocomplete:{type:String,value:"off"},autofocus:{type:Boolean,value:!1},inputmode:{type:String},placeholder:{type:String},readonly:{type:String},required:{type:Boolean},minlength:{type:Number},maxlength:{type:Number}},listeners:{input:"_onInput"},observers:["_onValueChanged(value)"],get textarea(){return this.$.textarea},get selectionStart(){return this.$.textarea.selectionStart},get selectionEnd(){return this.$.textarea.selectionEnd},set selectionStart(e){this.$.textarea.selectionStart=e},set selectionEnd(e){this.$.textarea.selectionEnd=e},attached:function(){var e=navigator.userAgent.match(/iP(?:[oa]d|hone)/);e&&(this.$.textarea.style.marginLeft="-3px")},validate:function(){if(!this.required&&""==this.value)return this.invalid=!1,!0;var e;return this.hasValidator()?e=Polymer.IronValidatableBehavior.validate.call(this,this.value):(e=this.$.textarea.validity.valid,this.invalid=!e),this.fire("iron-input-validate"),e},_bindValueChanged:function(){var e=this.textarea;e&&(e.value!==this.bindValue&&(e.value=this.bindValue||0===this.bindValue?this.bindValue:""),this.value=this.bindValue,this.$.mirror.innerHTML=this._valueForMirror(),this.fire("bind-value-changed",{value:this.bindValue}))},_onInput:function(e){this.bindValue=e.path?e.path[0].value:e.target.value},_constrain:function(e){var t;for(e=e||[""],t=this.maxRows>0&&e.length>this.maxRows?e.slice(0,this.maxRows):e.slice(0);this.rows>0&&t.length<this.rows;)t.push("");return t.join("<br/>")+" "},_valueForMirror:function(){var e=this.textarea;if(e)return this.tokens=e&&e.value?e.value.replace(/&/gm,"&").replace(/"/gm,""").replace(/'/gm,"'").replace(/</gm,"<").replace(/>/gm,">").split("\n"):[""],this._constrain(this.tokens)},_updateCached:function(){this.$.mirror.innerHTML=this._constrain(this.tokens)},_onValueChanged:function(){this.bindValue=this.value}})</script><script>Polymer.PaperInputHelper={},Polymer.PaperInputHelper.NextLabelID=1,Polymer.PaperInputHelper.NextAddonID=1,Polymer.PaperInputBehaviorImpl={properties:{label:{type:String},value:{notify:!0,type:String},disabled:{type:Boolean,value:!1},invalid:{type:Boolean,value:!1,notify:!0},preventInvalidInput:{type:Boolean},allowedPattern:{type:String},type:{type:String},list:{type:String},pattern:{type:String},required:{type:Boolean,value:!1},errorMessage:{type:String},charCounter:{type:Boolean,value:!1},noLabelFloat:{type:Boolean,value:!1},alwaysFloatLabel:{type:Boolean,value:!1},autoValidate:{type:Boolean,value:!1},validator:{type:String},autocomplete:{type:String,value:"off"},autofocus:{type:Boolean,observer:"_autofocusChanged"},inputmode:{type:String},minlength:{type:Number},maxlength:{type:Number},min:{type:String},max:{type:String},step:{type:String},name:{type:String},placeholder:{type:String,value:""},readonly:{type:Boolean,value:!1},size:{type:Number},autocapitalize:{type:String,value:"none"},autocorrect:{type:String,value:"off"},autosave:{type:String},results:{type:Number},accept:{type:String},multiple:{type:Boolean},_ariaDescribedBy:{type:String,value:""},_ariaLabelledBy:{type:String,value:""}},listeners:{"addon-attached":"_onAddonAttached"},keyBindings:{"shift+tab:keydown":"_onShiftTabDown"},hostAttributes:{tabindex:0},get inputElement(){return this.$.input},get _focusableElement(){return this.inputElement},registered:function(){this._typesThatHaveText=["date","datetime","datetime-local","month","time","week","file"]},attached:function(){this._updateAriaLabelledBy(),this.inputElement&&this._typesThatHaveText.indexOf(this.inputElement.type)!==-1&&(this.alwaysFloatLabel=!0)},_appendStringWithSpace:function(e,t){return e=e?e+" "+t:t},_onAddonAttached:function(e){var t=e.path?e.path[0]:e.target;if(t.id)this._ariaDescribedBy=this._appendStringWithSpace(this._ariaDescribedBy,t.id);else{var a="paper-input-add-on-"+Polymer.PaperInputHelper.NextAddonID++;t.id=a,this._ariaDescribedBy=this._appendStringWithSpace(this._ariaDescribedBy,a)}},validate:function(){return this.inputElement.validate()},_focusBlurHandler:function(e){Polymer.IronControlState._focusBlurHandler.call(this,e),this.focused&&!this._shiftTabPressed&&this._focusableElement.focus()},_onShiftTabDown:function(e){var t=this.getAttribute("tabindex");this._shiftTabPressed=!0,this.setAttribute("tabindex","-1"),this.async(function(){this.setAttribute("tabindex",t),this._shiftTabPressed=!1},1)},_handleAutoValidate:function(){this.autoValidate&&this.validate()},updateValueAndPreserveCaret:function(e){try{var t=this.inputElement.selectionStart;this.value=e,this.inputElement.selectionStart=t,this.inputElement.selectionEnd=t}catch(t){this.value=e}},_computeAlwaysFloatLabel:function(e,t){return t||e},_updateAriaLabelledBy:function(){var e=Polymer.dom(this.root).querySelector("label");if(!e)return void(this._ariaLabelledBy="");var t;e.id?t=e.id:(t="paper-input-label-"+Polymer.PaperInputHelper.NextLabelID++,e.id=t),this._ariaLabelledBy=t},_onChange:function(e){this.shadowRoot&&this.fire(e.type,{sourceEvent:e},{node:this,bubbles:e.bubbles,cancelable:e.cancelable})},_autofocusChanged:function(){if(this.autofocus&&this._focusableElement){var e=document.activeElement,t=e instanceof HTMLElement,a=t&&e!==document.body&&e!==document.documentElement;a||this._focusableElement.focus()}}},Polymer.PaperInputBehavior=[Polymer.IronControlState,Polymer.IronA11yKeysBehavior,Polymer.PaperInputBehaviorImpl]</script><script>Polymer.PaperInputAddonBehavior={hostAttributes:{"add-on":""},attached:function(){this.fire("addon-attached")},update:function(t){}}</script><dom-module id="paper-input-char-counter" assetpath="../../bower_components/paper-input/"><template><style>:host{display:inline-block;float:right;@apply(--paper-font-caption);@apply(--paper-input-char-counter)}:host([hidden]){display:none!important}:host-context([dir=rtl]){float:left}</style><span>[[_charCounterStr]]</span></template></dom-module><script>Polymer({is:"paper-input-char-counter",behaviors:[Polymer.PaperInputAddonBehavior],properties:{_charCounterStr:{type:String,value:"0"}},update:function(t){if(t.inputElement){t.value=t.value||"";var e=t.value.toString().length.toString();t.inputElement.hasAttribute("maxlength")&&(e+="/"+t.inputElement.getAttribute("maxlength")),this._charCounterStr=e}}})</script><dom-module id="paper-textarea" assetpath="../../bower_components/paper-input/"><template><style>:host{display:block}:host([hidden]){display:none!important}label{pointer-events:none}</style><paper-input-container no-label-float$="[[noLabelFloat]]" always-float-label="[[_computeAlwaysFloatLabel(alwaysFloatLabel,placeholder)]]" auto-validate$="[[autoValidate]]" disabled$="[[disabled]]" invalid="[[invalid]]"><label hidden$="[[!label]]" aria-hidden="true">[[label]]</label><iron-autogrow-textarea id="input" class="paper-input-input" bind-value="{{value}}" invalid="{{invalid}}" disabled$="[[disabled]]" autocomplete$="[[autocomplete]]" autofocus$="[[autofocus]]" inputmode$="[[inputmode]]" name$="[[name]]" placeholder$="[[placeholder]]" readonly$="[[readonly]]" required$="[[required]]" minlength$="[[minlength]]" maxlength$="[[maxlength]]" autocapitalize$="[[autocapitalize]]" rows$="[[rows]]" max-rows$="[[maxRows]]" on-change="_onChange"></iron-autogrow-textarea><template is="dom-if" if="[[errorMessage]]"><paper-input-error>[[errorMessage]]</paper-input-error></template><template is="dom-if" if="[[charCounter]]"><paper-input-char-counter></paper-input-char-counter></template></paper-input-container></template></dom-module><script>Polymer({is:"paper-textarea",behaviors:[Polymer.PaperInputBehavior,Polymer.IronFormElementBehavior],properties:{_ariaLabelledBy:{observer:"_ariaLabelledByChanged",type:String},_ariaDescribedBy:{observer:"_ariaDescribedByChanged",type:String},rows:{type:Number,value:1},maxRows:{type:Number,value:0}},_ariaLabelledByChanged:function(e){this.$.input.textarea.setAttribute("aria-labelledby",e)},_ariaDescribedByChanged:function(e){this.$.input.textarea.setAttribute("aria-describedby",e)},get _focusableElement(){return this.$.input.textarea}})</script><script>function MakePromise(t){function e(t){if("object"!=typeof this||"function"!=typeof t)throw new TypeError;this._state=null,this._value=null,this._deferreds=[],u(t,i.bind(this),r.bind(this))}function n(e){var n=this;return null===this._state?void this._deferreds.push(e):void t(function(){var t=n._state?e.onFulfilled:e.onRejected;if("function"!=typeof t)return void(n._state?e.resolve:e.reject)(n._value);var i;try{i=t(n._value)}catch(t){return void e.reject(t)}e.resolve(i)})}function i(t){try{if(t===this)throw new TypeError;if(t&&("object"==typeof t||"function"==typeof t)){var e=t.then;if("function"==typeof e)return void u(e.bind(t),i.bind(this),r.bind(this))}this._state=!0,this._value=t,o.call(this)}catch(t){r.call(this,t)}}function r(t){this._state=!1,this._value=t,o.call(this)}function o(){for(var t=0,e=this._deferreds.length;t<e;t++)n.call(this,this._deferreds[t]);this._deferreds=null}function u(t,e,n){var i=!1;try{t(function(t){i||(i=!0,e(t))},function(t){i||(i=!0,n(t))})}catch(t){if(i)return;i=!0,n(t)}}return e.prototype.catch=function(t){return this.then(null,t)},e.prototype.then=function(t,i){var r=this;return new e(function(e,o){n.call(r,{onFulfilled:t,onRejected:i,resolve:e,reject:o})})},e.resolve=function(t){return t&&"object"==typeof t&&t.constructor===e?t:new e(function(e){e(t)})},e.reject=function(t){return new e(function(e,n){n(t)})},e}"undefined"!=typeof module&&(module.exports=MakePromise)</script><script>window.Promise||(window.Promise=MakePromise(Polymer.Base.async))</script><script>Promise.all=Promise.all||function(){var r=Array.prototype.slice.call(1===arguments.length&&Array.isArray(arguments[0])?arguments[0]:arguments);return new Promise(function(n,e){function t(i,c){try{if(c&&("object"==typeof c||"function"==typeof c)){var f=c.then;if("function"==typeof f)return void f.call(c,function(r){t(i,r)},e)}r[i]=c,0===--o&&n(r)}catch(r){e(r)}}if(0===r.length)return n([]);for(var o=r.length,i=0;i<r.length;i++)t(i,r[i])})},Promise.race=Promise.race||function(r){var n=r;return new Promise(function(r,e){for(var t=0,o=n.length;t<o;t++)n[t].then(r,e)})}</script><script>!function(){"use strict";var t=/\.splices$/,e=/\.length$/,i=/\.?#?([0-9]+)$/;Polymer.AppStorageBehavior={properties:{data:{type:Object,notify:!0,value:function(){return this.zeroValue}},sequentialTransactions:{type:Boolean,value:!1},log:{type:Boolean,value:!1}},observers:["__dataChanged(data.*)"],created:function(){this.__initialized=!1,this.__syncingToMemory=!1,this.__initializingStoredValue=null,this.__transactionQueueAdvances=Promise.resolve()},ready:function(){this._initializeStoredValue()},get isNew(){return!0},get transactionsComplete(){return this.__transactionQueueAdvances},get zeroValue(){},save:function(){return Promise.resolve()},reset:function(){},destroy:function(){return this.data=this.zeroValue,this.save()},initializeStoredValue:function(){return this.isNew?Promise.resolve():this._getStoredValue("data").then(function(t){return this._log("Got stored value!",t,this.data),null==t?this._setStoredValue("data",this.data||this.zeroValue):void this.syncToMemory(function(){this.set("data",t)})}.bind(this))},getStoredValue:function(t){return Promise.resolve()},setStoredValue:function(t,e){return Promise.resolve(e)},memoryPathToStoragePath:function(t){return t},storagePathToMemoryPath:function(t){return t},syncToMemory:function(t){this.__syncingToMemory||(this._group("Sync to memory."),this.__syncingToMemory=!0,t.call(this),this.__syncingToMemory=!1,this._groupEnd("Sync to memory."))},valueIsEmpty:function(t){return Array.isArray(t)?0===t.length:Object.prototype.isPrototypeOf(t)?0===Object.keys(t).length:null==t},_getStoredValue:function(t){return this.getStoredValue(this.memoryPathToStoragePath(t))},_setStoredValue:function(t,e){return this.setStoredValue(this.memoryPathToStoragePath(t),e)},_enqueueTransaction:function(t){if(this.sequentialTransactions)t=t.bind(this);else{var e=t.call(this);t=function(){return e}}return this.__transactionQueueAdvances=this.__transactionQueueAdvances.then(t).catch(function(t){this._error("Error performing queued transaction.",t)}.bind(this))},_log:function(){this.log&&console.log.apply(console,arguments)},_error:function(){this.log&&console.error.apply(console,arguments)},_group:function(){this.log&&console.group.apply(console,arguments)},_groupEnd:function(){this.log&&console.groupEnd.apply(console,arguments)},_initializeStoredValue:function(){if(!this.__initializingStoredValue){this._group("Initializing stored value.");var t=this.__initializingStoredValue=this.initializeStoredValue().then(function(){this.__initialized=!0,this.__initializingStoredValue=null,this._groupEnd("Initializing stored value.")}.bind(this));return this._enqueueTransaction(function(){return t})}},__dataChanged:function(t){if(!this.isNew&&!this.__syncingToMemory&&this.__initialized&&!this.__pathCanBeIgnored(t.path)){var e=this.__normalizeMemoryPath(t.path),i=t.value,n=i&&i.indexSplices;this._enqueueTransaction(function(){return this._log("Setting",e+":",n||i),n&&this.__pathIsSplices(e)&&(e=this.__parentPath(e),i=this.get(e)),this._setStoredValue(e,i)})}},__normalizeMemoryPath:function(t){for(var e=t.split("."),i=[],n=[],r=[],o=0;o<e.length;++o)n.push(e[o]),/^#/.test(e[o])?r.push(this.get(i).indexOf(this.get(n))):r.push(e[o]),i.push(e[o]);return r.join(".")},__parentPath:function(t){var e=t.split(".");return e.slice(0,e.length-1).join(".")},__pathCanBeIgnored:function(t){return e.test(t)&&Array.isArray(this.get(this.__parentPath(t)))},__pathIsSplices:function(e){return t.test(e)&&Array.isArray(this.get(this.__parentPath(e)))},__pathRefersToArray:function(i){return(t.test(i)||e.test(i))&&Array.isArray(this.get(this.__parentPath(i)))},__pathTailToIndex:function(t){var e=t.split(".").pop();return window.parseInt(e.replace(i,"$1"),10)}}}()</script><dom-module id="app-localstorage-document" assetpath="../../bower_components/app-storage/app-localstorage/"><script>"use strict";Polymer({is:"app-localstorage-document",behaviors:[Polymer.AppStorageBehavior],properties:{key:{type:String,notify:!0},sessionOnly:{type:Boolean,value:!1},storage:{type:Object,computed:"__computeStorage(sessionOnly)"}},observers:["__storageSourceChanged(storage, key)"],attached:function(){this.listen(window,"storage","__onStorage"),this.listen(window.top,"app-local-storage-changed","__onAppLocalStorageChanged")},detached:function(){this.unlisten(window,"storage","__onStorage"),this.unlisten(window.top,"app-local-storage-changed","__onAppLocalStorageChanged")},get isNew(){return!this.key},save:function(e){try{this.__setStorageValue(e,this.data)}catch(e){return Promise.reject(e)}return this.key=e,Promise.resolve()},reset:function(){this.key=null,this.data=this.zeroValue},destroy:function(){try{this.storage.removeItem(this.key),this.reset()}catch(e){return Promise.reject(e)}return Promise.resolve()},getStoredValue:function(e){var t;if(null!=this.key)try{t=this.__parseValueFromStorage(),t=null!=t?this.get(e,{data:t}):void 0}catch(e){return Promise.reject(e)}return Promise.resolve(t)},setStoredValue:function(e,t){if(null!=this.key){try{this.__setStorageValue(this.key,this.data)}catch(e){return Promise.reject(e)}this.fire("app-local-storage-changed",this,{node:window.top})}return Promise.resolve(t)},__computeStorage:function(e){return e?window.sessionStorage:window.localStorage},__storageSourceChanged:function(e,t){this._initializeStoredValue()},__onStorage:function(e){e.key===this.key&&e.storageArea===this.storage&&this.syncToMemory(function(){this.set("data",this.__parseValueFromStorage())})},__onAppLocalStorageChanged:function(e){e.detail!==this&&e.detail.key===this.key&&e.detail.storage===this.storage&&this.syncToMemory(function(){this.set("data",e.detail.data)})},__parseValueFromStorage:function(){try{return JSON.parse(this.storage.getItem(this.key))}catch(e){console.error("Failed to parse value from storage for",this.key)}},__setStorageValue:function(e,t){this.storage.setItem(this.key,JSON.stringify(this.data))}})</script></dom-module><script>window.vaadin=window.vaadin||{},vaadin.elements=vaadin.elements||{},vaadin.elements.combobox=vaadin.elements.combobox||{},vaadin.elements.combobox.DropdownBehavior={properties:{opened:{type:Boolean,notify:!0,value:!1,reflectToAttribute:!0,observer:"_openedChanged"},disabled:{type:Boolean,value:!1,reflectToAttribute:!0},readonly:{type:Boolean,value:!1,reflectToAttribute:!0}},open:function(){this.disabled||this.readonly||(this.opened=!0)},close:function(){this.opened=!1},detached:function(){this.close()},_openedChanged:function(e,t){void 0!==t&&(this.opened?this._open():this._close())},_open:function(){this.$.overlay._moveTo(document.body),this._addOutsideClickListener(),this.$.overlay.touchDevice||this.inputElement.focused||this.inputElement.focus(),this.fire("vaadin-dropdown-opened")},_close:function(){this.$.overlay._moveTo(this.root),this._removeOutsideClickListener(),this.fire("vaadin-dropdown-closed")},_outsideClickListener:function(e){var t=Polymer.dom(e).path;t.indexOf(this)===-1&&(this.opened=!1)},_addOutsideClickListener:function(){this.$.overlay.touchDevice?(Polymer.Gestures.add(document,"tap",null),document.addEventListener("tap",this._outsideClickListener.bind(this),!0)):document.addEventListener("click",this._outsideClickListener.bind(this),!0)},_removeOutsideClickListener:function(){this.$.overlay.touchDevice?(Polymer.Gestures.remove(document,"tap",null),document.removeEventListener("tap",this._outsideClickListener.bind(this),!0)):document.removeEventListener("click",this._outsideClickListener.bind(this),!0)}}</script><script>window.vaadin=window.vaadin||{},vaadin.elements=vaadin.elements||{},vaadin.elements.combobox=vaadin.elements.combobox||{},vaadin.elements.combobox.ComboBoxBehaviorImpl={properties:{items:{type:Array},allowCustomValue:{type:Boolean,value:!1},value:{type:String,observer:"_valueChanged",notify:!1},hasValue:{type:Boolean,value:!1,readonly:!0,reflectToAttribute:!0},_focusedIndex:{type:Number,value:-1},_filter:{type:String,value:""},selectedItem:{type:Object,readOnly:!0,notify:!0},itemLabelPath:{type:String,value:"label"},itemValuePath:{type:String,value:"value"},inputElement:{type:HTMLElement,readOnly:!0},_toggleElement:Object,_clearElement:Object,_inputElementValue:String,_closeOnBlurIsPrevented:Boolean},observers:["_filterChanged(_filter, itemValuePath, itemLabelPath)","_itemsChanged(items.splices)","_setItems(items, itemValuePath, itemLabelPath)"],listeners:{"vaadin-dropdown-opened":"_onOpened","vaadin-dropdown-closed":"_onClosed",keydown:"_onKeyDown",tap:"_onTap"},ready:function(){void 0===this.value&&(this.value=""),Polymer.IronA11yAnnouncer.requestAvailability()},_onBlur:function(){this._closeOnBlurIsPrevented||this.close()},_onOverlayDown:function(e){this.$.overlay.touchDevice&&e.target!==this.$.overlay.$.scroller&&(this._closeOnBlurIsPrevented=!0,this.inputElement.blur(),this._closeOnBlurIsPrevented=!1)},_onTap:function(e){this._closeOnBlurIsPrevented=!0;var t=Polymer.dom(e).path;t.indexOf(this._clearElement)!==-1?this._clear():t.indexOf(this._toggleElement)!==-1?this._toggle():t.indexOf(this.inputElement)!==-1&&this._openAsync(),this._closeOnBlurIsPrevented=!1},_onKeyDown:function(e){this._isEventKey(e,"down")?(this._closeOnBlurIsPrevented=!0,this._onArrowDown(),this._closeOnBlurIsPrevented=!1,e.preventDefault()):this._isEventKey(e,"up")?(this._closeOnBlurIsPrevented=!0,this._onArrowUp(),this._closeOnBlurIsPrevented=!1,e.preventDefault()):this._isEventKey(e,"enter")?this._onEnter(e):this._isEventKey(e,"esc")&&this._onEscape()},_isEventKey:function(e,t){return Polymer.IronA11yKeysBehavior.keyboardEventMatchesKeys(e,t)},_getItemLabel:function(e){return this.$.overlay.getItemLabel(e)},_getItemValue:function(e){var t=this.get(this.itemValuePath,e);return void 0!==t&&null!==t||(t=e?e.toString():""),t},_onArrowDown:function(){this.opened?this.$.overlay._items&&(this._focusedIndex=Math.min(this.$.overlay._items.length-1,this._focusedIndex+1),this._prefillFocusedItemLabel()):this.open()},_onArrowUp:function(){this.opened?(this._focusedIndex>-1?this._focusedIndex=Math.max(0,this._focusedIndex-1):this.$.overlay._items&&(this._focusedIndex=this.$.overlay._items.length-1),this._prefillFocusedItemLabel()):this.open()},_prefillFocusedItemLabel:function(){this._focusedIndex>-1&&(this._inputElementValue=this._getItemLabel(this.$.overlay._focusedItem),this._setSelectionRange())},_setSelectionRange:function(){this.inputElement.setSelectionRange&&this.inputElement.setSelectionRange(0,this._inputElementValue.length)},_onEnter:function(e){this.opened&&(this.allowCustomValue||""===this._inputElementValue||this._focusedIndex>-1)&&(this.close(),e.preventDefault())},_onEscape:function(){this.opened&&(this._focusedIndex>-1?(this._focusedIndex=-1,this._revertInputValue()):this.cancel())},_openAsync:function(){this.async(this.open)},_toggle:function(){this.opened?this.close():this.open()},_clear:function(){this.value=""},cancel:function(){this._inputElementValue=this._getItemLabel(this.selectedItem),this.close()},_onOpened:function(){this.$.overlay.hidden=!this._hasItems(this.$.overlay._items),this.$.overlay.ensureItemsRendered(),this.$.overlay.notifyResize(),this.$.overlay.adjustScrollPosition()},_onClosed:function(){if(this._focusedIndex>-1)this.$.overlay._selectItem(this._focusedIndex),this._inputElementValue=this._getItemLabel(this.selectedItem);else if(""===this._inputElementValue)this._clear();else if(this.allowCustomValue){var e=this.fire("custom-value-set",this._inputElementValue,{cancelable:!0});e.defaultPrevented||(this.value=this._inputElementValue)}else this._inputElementValue=this._getItemLabel(this.selectedItem);this._clearSelectionRange(),this._filter=""},_inputValueChanged:function(e){Polymer.dom(e).path.indexOf(this.inputElement)!==-1&&(this._filter===this._inputElementValue?this._filterChanged(this._filter):this._filter=this._inputElementValue,this.opened||this.open())},_clearSelectionRange:function(){if(this._focusedInput()===this.inputElement&&this.inputElement.setSelectionRange){var e=this._inputElementValue?this._inputElementValue.length:0;this.inputElement.setSelectionRange(e,e)}},_focusedInput:function(){return Polymer.dom(this).querySelector("input:focus")||Polymer.dom(this.root).querySelector("input:focus")},_filterChanged:function(e){this.unlisten(this.$.overlay,"_selected-item-changed","_selectedItemChanged"),this._setItems(this._filterItems(this.items,e)),this._focusedIndex=this.$.overlay.indexOfLabel(e),this.listen(this.$.overlay,"_selected-item-changed","_selectedItemChanged"),this.async(function(){this.$.overlay.notifyResize()}.bind(this))},_revertInputValue:function(){""!==this._filter?this._inputElementValue=this._filter:this._inputElementValue=this._getItemLabel(this.selectedItem),this._clearSelectionRange()},_valueChanged:function(e){this.hasValue=!!e;var t=this._indexOfValue(e),i=t>-1&&this.items[t];this.$.overlay._items&&i&&this.$.overlay._items.indexOf(i)>-1?this.$.overlay._selectItem(i):(this._inputElementValue=this.allowCustomValue?e:"",this._setSelectedItem(null),this._focusedIndex=-1,this.$.overlay.$.selector.clearSelection()),this.fire("change",void 0,{bubbles:!0}),this.close()},_itemsChanged:function(e){e&&e.indexSplices&&this._setItems(e.indexSplices[0].object)},_filterItems:function(e,t){return e?e.filter(function(e){return t=t.toString().toLowerCase()||"",this._getItemLabel(e).toString().toLowerCase().indexOf(t)>-1}.bind(this)):e},_setItems:function(e){this.$.overlay.notifyPath("_items",void 0),this.$.overlay.set("_items",e);var t=this._indexOfValue(this.value,e);t>-1&&this.$.overlay._selectItem(t),this.$.overlay.hidden=!this._hasItems(e),this.$.overlay.notifyResize()},_hasItems:function(e){return e&&e.length},_indexOfValue:function(e,t){if(t=t||this.items,t&&e)for(var i=0;i<t.length;i++)if(this._getItemValue(t[i]).toString()===e.toString())return i;return-1},_selectedItemChanged:function(e,t){null!==t.value&&(this._setSelectedItem(t.value),this._inputElementValue=this._getItemLabel(this.selectedItem),this.value=this._getItemValue(this.selectedItem),this._focusedIndex=this.$.overlay._items.indexOf(t.value)),this.opened&&this.close()},_getValidity:function(){if(this.inputElement.validate)return this.inputElement.validate()},_preventDefault:function(e){e.preventDefault()},_stopPropagation:function(e){e.stopPropagation()}},vaadin.elements.combobox.ComboBoxBehavior=[Polymer.IronFormElementBehavior,vaadin.elements.combobox.DropdownBehavior,vaadin.elements.combobox.ComboBoxBehaviorImpl]</script><dom-module id="iron-list" assetpath="../../bower_components/iron-list/"><template><style>:host{display:block;position:relative}@media only screen and (-webkit-max-device-pixel-ratio:1){:host{will-change:transform}}#items{@apply(--iron-list-items-container);position:relative}:host(:not([grid])) #items>::content>*{width:100%}; #items>::content>*{box-sizing:border-box;margin:0;position:absolute;top:0;will-change:transform}</style><array-selector id="selector" items="{{items}}" selected="{{selectedItems}}" selected-item="{{selectedItem}}"></array-selector><div id="items"><content></content></div></template></dom-module><script>!function(){var t=navigator.userAgent.match(/iP(?:hone|ad;(?: U;)? CPU) OS (\d+)/),i=t&&t[1]>=8,e=3,s="-10000px",h=-100;Polymer({is:"iron-list",properties:{items:{type:Array},maxPhysicalCount:{type:Number,value:500},as:{type:String,value:"item"},indexAs:{type:String,value:"index"},selectedAs:{type:String,value:"selected"},grid:{type:Boolean,value:!1,reflectToAttribute:!0},selectionEnabled:{type:Boolean,value:!1},selectedItem:{type:Object,notify:!0},selectedItems:{type:Object,notify:!0},multiSelection:{type:Boolean,value:!1}},observers:["_itemsChanged(items.*)","_selectionEnabledChanged(selectionEnabled)","_multiSelectionChanged(multiSelection)","_setOverflow(scrollTarget)"],behaviors:[Polymer.Templatizer,Polymer.IronResizableBehavior,Polymer.IronA11yKeysBehavior,Polymer.IronScrollTargetBehavior],keyBindings:{up:"_didMoveUp",down:"_didMoveDown",enter:"_didEnter"},_ratio:.5,_scrollerPaddingTop:0,_scrollPosition:0,_physicalSize:0,_physicalAverage:0,_physicalAverageCount:0,_physicalTop:0,_virtualCount:0,_physicalIndexForKey:null,_estScrollHeight:0,_scrollHeight:0,_viewportHeight:0,_viewportWidth:0,_physicalItems:null,_physicalSizes:null,_firstVisibleIndexVal:null,_lastVisibleIndexVal:null,_collection:null,_maxPages:2,_focusedItem:null,_focusedIndex:-1,_offscreenFocusedItem:null,_focusBackfillItem:null,_itemsPerRow:1,_itemWidth:0,_rowHeight:0,_templateCost:0,get _physicalBottom(){return this._physicalTop+this._physicalSize},get _scrollBottom(){return this._scrollPosition+this._viewportHeight},get _virtualEnd(){return this._virtualStart+this._physicalCount-1},get _hiddenContentSize(){var t=this.grid?this._physicalRows*this._rowHeight:this._physicalSize;return t-this._viewportHeight},get _maxScrollTop(){return this._estScrollHeight-this._viewportHeight+this._scrollerPaddingTop},_minVirtualStart:0,get _maxVirtualStart(){return Math.max(0,this._virtualCount-this._physicalCount)},_virtualStartVal:0,set _virtualStart(t){this._virtualStartVal=Math.min(this._maxVirtualStart,Math.max(this._minVirtualStart,t))},get _virtualStart(){return this._virtualStartVal||0},_physicalStartVal:0,set _physicalStart(t){this._physicalStartVal=t%this._physicalCount,this._physicalStartVal<0&&(this._physicalStartVal=this._physicalCount+this._physicalStartVal),this._physicalEnd=(this._physicalStart+this._physicalCount-1)%this._physicalCount},get _physicalStart(){return this._physicalStartVal||0},_physicalCountVal:0,set _physicalCount(t){this._physicalCountVal=t,this._physicalEnd=(this._physicalStart+this._physicalCount-1)%this._physicalCount},get _physicalCount(){return this._physicalCountVal},_physicalEnd:0,get _optPhysicalSize(){return this.grid?this._estRowsInView*this._rowHeight*this._maxPages:0===this._viewportHeight?1/0:this._viewportHeight*this._maxPages},get _isVisible(){return Boolean(this.offsetWidth||this.offsetHeight)},get firstVisibleIndex(){if(null===this._firstVisibleIndexVal){var t=Math.floor(this._physicalTop+this._scrollerPaddingTop);this._firstVisibleIndexVal=this._iterateItems(function(i,e){return t+=this._getPhysicalSizeIncrement(i),t>this._scrollPosition?this.grid?e-e%this._itemsPerRow:e:this.grid&&this._virtualCount-1===e?e-e%this._itemsPerRow:void 0})||0}return this._firstVisibleIndexVal},get lastVisibleIndex(){if(null===this._lastVisibleIndexVal)if(this.grid){var t=this.firstVisibleIndex+this._estRowsInView*this._itemsPerRow-1;this._lastVisibleIndexVal=Math.min(this._virtualCount,t)}else{var i=this._physicalTop;this._iterateItems(function(t,e){return!(i<this._scrollBottom)||(this._lastVisibleIndexVal=e,void(i+=this._getPhysicalSizeIncrement(t)))})}return this._lastVisibleIndexVal},get _defaultScrollTarget(){return this},get _virtualRowCount(){return Math.ceil(this._virtualCount/this._itemsPerRow)},get _estRowsInView(){return Math.ceil(this._viewportHeight/this._rowHeight)},get _physicalRows(){return Math.ceil(this._physicalCount/this._itemsPerRow)},ready:function(){this.addEventListener("focus",this._didFocus.bind(this),!0)},attached:function(){0===this._physicalCount&&this._debounceTemplate(this._render),this.listen(this,"iron-resize","_resizeHandler")},detached:function(){this.unlisten(this,"iron-resize","_resizeHandler")},_setOverflow:function(t){this.style.webkitOverflowScrolling=t===this?"touch":"",this.style.overflow=t===this?"auto":""},updateViewportBoundaries:function(){var t=window.getComputedStyle(this);this._scrollerPaddingTop=this.scrollTarget===this?0:parseInt(t["padding-top"],10),this._isRTL=Boolean("rtl"===t.direction),this._viewportWidth=this.$.items.offsetWidth,this._viewportHeight=this._scrollTargetHeight,this.grid&&this._updateGridMetrics()},_scrollHandler:function(){var t=Math.max(0,Math.min(this._maxScrollTop,this._scrollTop)),i=t-this._scrollPosition,e=i>=0;if(this._scrollPosition=t,this._firstVisibleIndexVal=null,this._lastVisibleIndexVal=null,Math.abs(i)>this._physicalSize){var s=Math.round(i/this._physicalAverage)*this._itemsPerRow;this._physicalTop=this._physicalTop+i,this._virtualStart=this._virtualStart+s,this._physicalStart=this._physicalStart+s,this._update()}else{var h=this._getReusables(e);e?(this._physicalTop=h.physicalTop,this._virtualStart=this._virtualStart+h.indexes.length,this._physicalStart=this._physicalStart+h.indexes.length):(this._virtualStart=this._virtualStart-h.indexes.length,this._physicalStart=this._physicalStart-h.indexes.length),0===h.indexes.length?this._increasePoolIfNeeded():this._update(h.indexes,e?null:h.indexes)}},_getReusables:function(t){var i,e,s,h,l=[],o=this._hiddenContentSize*this._ratio,a=this._virtualStart,n=this._virtualEnd,r=this._physicalCount,c=this._physicalTop+this._scrollerPaddingTop,_=this._scrollTop,u=this._scrollBottom;for(t?(i=this._physicalStart,e=this._physicalEnd,s=_-c):(i=this._physicalEnd,e=this._physicalStart,s=this._physicalBottom-u);;){if(h=this._getPhysicalSizeIncrement(i),s-=h,l.length>=r||s<=o)break;if(t){if(n+l.length+1>=this._virtualCount)break;if(c+h>=_)break;l.push(i),c+=h,i=(i+1)%r}else{if(a-l.length<=0)break;if(c+this._physicalSize-h<=u)break;l.push(i),c-=h,i=0===i?r-1:i-1}}return{indexes:l,physicalTop:c-this._scrollerPaddingTop}},_update:function(t,i){if(!t||0!==t.length){if(this._manageFocus(),this._assignModels(t),this._updateMetrics(t),i)for(;i.length;){var e=i.pop();this._physicalTop-=this._getPhysicalSizeIncrement(e)}this._positionItems(),this._updateScrollerSize(),this._increasePoolIfNeeded()}},_createPool:function(t){var i=new Array(t);this._ensureTemplatized();for(var e=0;e<t;e++){var s=this.stamp(null);i[e]=s.root.querySelector("*"),Polymer.dom(this).appendChild(s.root)}return i},_increasePoolIfNeeded:function(){var t=this,i=this._physicalBottom>=this._scrollBottom&&this._physicalTop<=this._scrollPosition;if(this._physicalSize>=this._optPhysicalSize&&i)return!1;var e=Math.round(.5*this._physicalCount);return i?(this._yield(function(){t._increasePool(Math.min(e,Math.max(1,Math.round(50/t._templateCost))))}),!0):(this._debounceTemplate(this._increasePool.bind(this,e)),!0)},_yield:function(t){var i=window,e=i.requestIdleCallback?i.requestIdleCallback(t):i.setTimeout(t,16);Polymer.dom.addDebouncer({complete:function(){i.cancelIdleCallback?i.cancelIdleCallback(e):i.clearTimeout(e),t()}})},_increasePool:function(t){var i=Math.min(this._physicalCount+t,this._virtualCount-this._virtualStart,Math.max(this.maxPhysicalCount,e)),s=this._physicalCount,h=i-s,l=window.performance.now();h<=0||([].push.apply(this._physicalItems,this._createPool(h)),[].push.apply(this._physicalSizes,new Array(h)),this._physicalCount=s+h,this._physicalStart>this._physicalEnd&&this._isIndexRendered(this._focusedIndex)&&this._getPhysicalIndex(this._focusedIndex)<this._physicalEnd&&(this._physicalStart=this._physicalStart+h),this._update(),this._templateCost=(window.performance.now()-l)/h)},_render:function(){if(this.isAttached&&this._isVisible)if(0===this._physicalCount)this.updateViewportBoundaries(),this._increasePool(e);else{var t=this._getReusables(!0);this._physicalTop=t.physicalTop,this._virtualStart=this._virtualStart+t.indexes.length,this._physicalStart=this._physicalStart+t.indexes.length,this._update(t.indexes),this._update()}},_ensureTemplatized:function(){if(!this.ctor){var t={};t.__key__=!0,t[this.as]=!0,t[this.indexAs]=!0,t[this.selectedAs]=!0,t.tabIndex=!0,this._instanceProps=t,this._userTemplate=Polymer.dom(this).querySelector("template"),this._userTemplate?this.templatize(this._userTemplate):console.warn("iron-list requires a template to be provided in light-dom")}},_getStampedChildren:function(){return this._physicalItems},_forwardInstancePath:function(t,i,e){0===i.indexOf(this.as+".")&&this.notifyPath("items."+t.__key__+"."+i.slice(this.as.length+1),e)},_forwardParentProp:function(t,i){this._physicalItems&&this._physicalItems.forEach(function(e){e._templateInstance[t]=i},this)},_forwardParentPath:function(t,i){this._physicalItems&&this._physicalItems.forEach(function(e){e._templateInstance.notifyPath(t,i,!0)},this)},_forwardItemPath:function(t,i){if(this._physicalIndexForKey){var e=t.indexOf("."),s=t.substring(0,e<0?t.length:e),h=this._physicalIndexForKey[s],l=this._offscreenFocusedItem,o=l&&l._templateInstance.__key__===s?l:this._physicalItems[h];if(o&&o._templateInstance.__key__===s)if(e>=0)t=this.as+"."+t.substring(e+1),o._templateInstance.notifyPath(t,i,!0);else{var a=o._templateInstance[this.as];if(Array.isArray(this.selectedItems)){for(var n=0;n<this.selectedItems.length;n++)if(this.selectedItems[n]===a){this.set("selectedItems."+n,i);break}}else this.selectedItem===a&&this.set("selectedItem",i);o._templateInstance[this.as]=i}}},_itemsChanged:function(t){"items"===t.path?(this._virtualStart=0,this._physicalTop=0,this._virtualCount=this.items?this.items.length:0,this._collection=this.items?Polymer.Collection.get(this.items):null,this._physicalIndexForKey={},this._firstVisibleIndexVal=null,this._lastVisibleIndexVal=null,this._physicalCount=this._physicalCount||0,this._physicalItems=this._physicalItems||[],this._physicalSizes=this._physicalSizes||[],this._physicalStart=0,this._scrollTop>this._scrollerPaddingTop&&this._resetScrollPosition(0),this._removeFocusedItem(),this._debounceTemplate(this._render)):"items.splices"===t.path?(this._adjustVirtualIndex(t.value.indexSplices),this._virtualCount=this.items?this.items.length:0,this._debounceTemplate(this._render)):this._forwardItemPath(t.path.split(".").slice(1).join("."),t.value)},_adjustVirtualIndex:function(t){t.forEach(function(t){if(t.removed.forEach(this._removeItem,this),t.index<this._virtualStart){var i=Math.max(t.addedCount-t.removed.length,t.index-this._virtualStart);this._virtualStart=this._virtualStart+i,this._focusedIndex>=0&&(this._focusedIndex=this._focusedIndex+i)}},this)},_removeItem:function(t){this.$.selector.deselect(t),this._focusedItem&&this._focusedItem._templateInstance[this.as]===t&&this._removeFocusedItem()},_iterateItems:function(t,i){var e,s,h,l;if(2===arguments.length&&i){for(l=0;l<i.length;l++)if(e=i[l],s=this._computeVidx(e),null!=(h=t.call(this,e,s)))return h}else{for(e=this._physicalStart,s=this._virtualStart;e<this._physicalCount;e++,s++)if(null!=(h=t.call(this,e,s)))return h;for(e=0;e<this._physicalStart;e++,s++)if(null!=(h=t.call(this,e,s)))return h}},_computeVidx:function(t){return t>=this._physicalStart?this._virtualStart+(t-this._physicalStart):this._virtualStart+(this._physicalCount-this._physicalStart)+t},_assignModels:function(t){this._iterateItems(function(t,i){var e=this._physicalItems[t],s=e._templateInstance,h=this.items&&this.items[i];null!=h?(s[this.as]=h,s.__key__=this._collection.getKey(h),s[this.selectedAs]=this.$.selector.isSelected(h),s[this.indexAs]=i,s.tabIndex=this._focusedIndex===i?0:-1,this._physicalIndexForKey[s.__key__]=t,e.removeAttribute("hidden")):(s.__key__=null,e.setAttribute("hidden",""))},t)},_updateMetrics:function(t){Polymer.dom.flush();var i=0,e=0,s=this._physicalAverageCount,h=this._physicalAverage;this._iterateItems(function(t,s){e+=this._physicalSizes[t]||0,this._physicalSizes[t]=this._physicalItems[t].offsetHeight,i+=this._physicalSizes[t],this._physicalAverageCount+=this._physicalSizes[t]?1:0},t),this.grid?(this._updateGridMetrics(),this._physicalSize=Math.ceil(this._physicalCount/this._itemsPerRow)*this._rowHeight):this._physicalSize=this._physicalSize+i-e,this._physicalAverageCount!==s&&(this._physicalAverage=Math.round((h*s+i)/this._physicalAverageCount))},_updateGridMetrics:function(){this._itemWidth=this._physicalCount>0?this._physicalItems[0].getBoundingClientRect().width:200,this._rowHeight=this._physicalCount>0?this._physicalItems[0].offsetHeight:200,this._itemsPerRow=this._itemWidth?Math.floor(this._viewportWidth/this._itemWidth):this._itemsPerRow},_positionItems:function(){this._adjustScrollPosition();var t=this._physicalTop;if(this.grid){var i=this._itemsPerRow*this._itemWidth,e=(this._viewportWidth-i)/2;this._iterateItems(function(i,s){var h=s%this._itemsPerRow,l=Math.floor(h*this._itemWidth+e);this._isRTL&&(l*=-1),this.translate3d(l+"px",t+"px",0,this._physicalItems[i]),this._shouldRenderNextRow(s)&&(t+=this._rowHeight)})}else this._iterateItems(function(i,e){this.translate3d(0,t+"px",0,this._physicalItems[i]),t+=this._physicalSizes[i]})},_getPhysicalSizeIncrement:function(t){return this.grid?this._computeVidx(t)%this._itemsPerRow!==this._itemsPerRow-1?0:this._rowHeight:this._physicalSizes[t]},_shouldRenderNextRow:function(t){return t%this._itemsPerRow===this._itemsPerRow-1},_adjustScrollPosition:function(){var t=0===this._virtualStart?this._physicalTop:Math.min(this._scrollPosition+this._physicalTop,0);t&&(this._physicalTop=this._physicalTop-t,i||0===this._physicalTop||this._resetScrollPosition(this._scrollTop-t))},_resetScrollPosition:function(t){this.scrollTarget&&(this._scrollTop=t,this._scrollPosition=this._scrollTop)},_updateScrollerSize:function(t){this.grid?this._estScrollHeight=this._virtualRowCount*this._rowHeight:this._estScrollHeight=this._physicalBottom+Math.max(this._virtualCount-this._physicalCount-this._virtualStart,0)*this._physicalAverage,t=t||0===this._scrollHeight,t=t||this._scrollPosition>=this._estScrollHeight-this._physicalSize,t=t||this.grid&&this.$.items.style.height<this._estScrollHeight,(t||Math.abs(this._estScrollHeight-this._scrollHeight)>=this._optPhysicalSize)&&(this.$.items.style.height=this._estScrollHeight+"px",this._scrollHeight=this._estScrollHeight)},scrollToItem:function(t){return this.scrollToIndex(this.items.indexOf(t))},scrollToIndex:function(t){if(!("number"!=typeof t||t<0||t>this.items.length-1)&&(Polymer.dom.flush(),0!==this._physicalCount)){t=Math.min(Math.max(t,0),this._virtualCount-1),(!this._isIndexRendered(t)||t>=this._maxVirtualStart)&&(this._virtualStart=this.grid?t-2*this._itemsPerRow:t-1),this._manageFocus(),this._assignModels(),this._updateMetrics(),this._physicalTop=Math.floor(this._virtualStart/this._itemsPerRow)*this._physicalAverage;for(var i=this._physicalStart,e=this._virtualStart,s=0,h=this._hiddenContentSize;e<t&&s<=h;)s+=this._getPhysicalSizeIncrement(i),i=(i+1)%this._physicalCount,e++;this._updateScrollerSize(!0),this._positionItems(),this._resetScrollPosition(this._physicalTop+this._scrollerPaddingTop+s),this._increasePoolIfNeeded(),this._firstVisibleIndexVal=null,this._lastVisibleIndexVal=null}},_resetAverage:function(){this._physicalAverage=0,this._physicalAverageCount=0},_resizeHandler:function(){this._debounceTemplate(function(){var t=Math.abs(this._viewportHeight-this._scrollTargetHeight);this.updateViewportBoundaries(),("ontouchstart"in window||navigator.maxTouchPoints>0)&&t>0&&t<100||(this._isVisible?(this.toggleScrollListener(!0),this._resetAverage(),this._render()):this.toggleScrollListener(!1))}.bind(this))},_getModelFromItem:function(t){var i=this._collection.getKey(t),e=this._physicalIndexForKey[i];return null!=e?this._physicalItems[e]._templateInstance:null},_getNormalizedItem:function(t){if(void 0===this._collection.getKey(t)){if("number"==typeof t){if(t=this.items[t],!t)throw new RangeError("<item> not found");return t}throw new TypeError("<item> should be a valid item")}return t},selectItem:function(t){t=this._getNormalizedItem(t);var i=this._getModelFromItem(t);!this.multiSelection&&this.selectedItem&&this.deselectItem(this.selectedItem),i&&(i[this.selectedAs]=!0),this.$.selector.select(t),this.updateSizeForItem(t)},deselectItem:function(t){t=this._getNormalizedItem(t);var i=this._getModelFromItem(t);i&&(i[this.selectedAs]=!1),this.$.selector.deselect(t),this.updateSizeForItem(t)},toggleSelectionForItem:function(t){t=this._getNormalizedItem(t),this.$.selector.isSelected(t)?this.deselectItem(t):this.selectItem(t)},clearSelection:function(){function t(t){var i=this._getModelFromItem(t);i&&(i[this.selectedAs]=!1)}Array.isArray(this.selectedItems)?this.selectedItems.forEach(t,this):this.selectedItem&&t.call(this,this.selectedItem),this.$.selector.clearSelection()},_selectionEnabledChanged:function(t){var i=t?this.listen:this.unlisten;i.call(this,this,"tap","_selectionHandler")},_selectionHandler:function(t){var i=this.modelForElement(t.target);if(i){var e,s,l=Polymer.dom(t).path[0],o=Polymer.dom(this.domHost?this.domHost.root:document).activeElement,a=this._physicalItems[this._getPhysicalIndex(i[this.indexAs])];"input"!==l.localName&&"button"!==l.localName&&"select"!==l.localName&&(e=i.tabIndex,i.tabIndex=h,s=o?o.tabIndex:-1,i.tabIndex=e,o&&a!==o&&a.contains(o)&&s!==h||this.toggleSelectionForItem(i[this.as]))}},_multiSelectionChanged:function(t){this.clearSelection(),this.$.selector.multi=t},updateSizeForItem:function(t){t=this._getNormalizedItem(t);var i=this._collection.getKey(t),e=this._physicalIndexForKey[i];null!=e&&(this._updateMetrics([e]),this._positionItems())},_manageFocus:function(){var t=this._focusedIndex;t>=0&&t<this._virtualCount?this._isIndexRendered(t)?this._restoreFocusedItem():this._createFocusBackfillItem():this._virtualCount>0&&this._physicalCount>0&&(this._focusedIndex=this._virtualStart,this._focusedItem=this._physicalItems[this._physicalStart])},_isIndexRendered:function(t){return t>=this._virtualStart&&t<=this._virtualEnd},_isIndexVisible:function(t){return t>=this.firstVisibleIndex&&t<=this.lastVisibleIndex},_getPhysicalIndex:function(t){return this._physicalIndexForKey[this._collection.getKey(this._getNormalizedItem(t))]},_focusPhysicalItem:function(t){if(!(t<0||t>=this._virtualCount)){this._restoreFocusedItem(),this._isIndexRendered(t)||this.scrollToIndex(t);var i,e=this._physicalItems[this._getPhysicalIndex(t)],s=e._templateInstance;s.tabIndex=h,e.tabIndex===h&&(i=e),i||(i=Polymer.dom(e).querySelector('[tabindex="'+h+'"]')),s.tabIndex=0,this._focusedIndex=t,i&&i.focus()}},_removeFocusedItem:function(){this._offscreenFocusedItem&&Polymer.dom(this).removeChild(this._offscreenFocusedItem),this._offscreenFocusedItem=null,this._focusBackfillItem=null,this._focusedItem=null,this._focusedIndex=-1},_createFocusBackfillItem:function(){var t=this._focusedIndex,i=this._getPhysicalIndex(t);if(!(this._offscreenFocusedItem||null==i||t<0)){if(!this._focusBackfillItem){var e=this.stamp(null);this._focusBackfillItem=e.root.querySelector("*"),Polymer.dom(this).appendChild(e.root)}this._offscreenFocusedItem=this._physicalItems[i],this._offscreenFocusedItem._templateInstance.tabIndex=0,this._physicalItems[i]=this._focusBackfillItem,this.translate3d(0,s,0,this._offscreenFocusedItem)}},_restoreFocusedItem:function(){var t,i=this._focusedIndex;!this._offscreenFocusedItem||this._focusedIndex<0||(this._assignModels(),t=this._getPhysicalIndex(i),null!=t&&(this._focusBackfillItem=this._physicalItems[t],this._focusBackfillItem._templateInstance.tabIndex=-1,this._physicalItems[t]=this._offscreenFocusedItem,this._offscreenFocusedItem=null,this.translate3d(0,s,0,this._focusBackfillItem)))},_didFocus:function(t){var i=this.modelForElement(t.target),e=this._focusedItem?this._focusedItem._templateInstance:null,s=null!==this._offscreenFocusedItem,h=this._focusedIndex;i&&e&&(e===i?this._isIndexVisible(h)||this.scrollToIndex(h):(this._restoreFocusedItem(),e.tabIndex=-1,i.tabIndex=0,h=i[this.indexAs],this._focusedIndex=h,this._focusedItem=this._physicalItems[this._getPhysicalIndex(h)],s&&!this._offscreenFocusedItem&&this._update()))},_didMoveUp:function(){this._focusPhysicalItem(this._focusedIndex-1)},_didMoveDown:function(t){t.detail.keyboardEvent.preventDefault(),this._focusPhysicalItem(this._focusedIndex+1)},_didEnter:function(t){this._focusPhysicalItem(this._focusedIndex),this._selectionHandler(t.detail.keyboardEvent)}})}()</script><script>window.vaadin=window.vaadin||{},vaadin.elements=vaadin.elements||{},vaadin.elements.combobox=vaadin.elements.combobox||{},vaadin.elements.combobox.OverlayBehaviorImpl={properties:{positionTarget:{type:Object},verticalOffset:{type:Number,value:0},_alignedAbove:{type:Boolean,value:!1}},listeners:{"iron-resize":"_setPosition"},created:function(){this._boundSetPosition=this._setPosition.bind(this)},_unwrapIfNeeded:function(t){var e=Polymer.Settings.hasShadow&&!Polymer.Settings.nativeShadow;return e?window.unwrap(t):t},_processPendingMutationObserversFor:function(t){Polymer.Settings.useNativeCustomElements||CustomElements.takeRecords(t)},_moveTo:function(t){var e=this.parentNode;Polymer.dom(t).appendChild(this),e&&(this._processPendingMutationObserversFor(e),e.host&&Polymer.StyleTransformer.dom(this,e.host.is,this._scopeCssViaAttr,!0)),this._processPendingMutationObserversFor(this),t.host&&Polymer.StyleTransformer.dom(this,t.host.is,this._scopeCssViaAttr),t===document.body?(this.style.position=this._isPositionFixed(this.positionTarget)?"fixed":"absolute",window.addEventListener("scroll",this._boundSetPosition,!0),this._setPosition()):window.removeEventListener("scroll",this._boundSetPosition,!0)},_verticalOffset:function(t,e){return this._alignedAbove?-t.height:e.height+this.verticalOffset},_isPositionFixed:function(t){var e=t.offsetParent;return"fixed"===window.getComputedStyle(this._unwrapIfNeeded(t)).position||e&&this._isPositionFixed(e)},_maxHeight:function(t){var e=8,i=116,o=Math.min(window.innerHeight,document.body.scrollHeight-document.body.scrollTop);return this._alignedAbove?Math.max(t.top-e+Math.min(document.body.scrollTop,0),i)+"px":Math.max(o-t.bottom-e,i)+"px"},_setPosition:function(t){if(t&&t.target){var e=t.target===document?document.body:t.target,i=this._unwrapIfNeeded(this.parentElement);if(!e.contains(this)&&!e.contains(this.positionTarget)||i!==document.body)return}var o=this.positionTarget.getBoundingClientRect();this._alignedAbove=this._shouldAlignAbove(),this.style.maxHeight=this._maxHeight(o),this.$.selector.style.maxHeight=this._maxHeight(o);var s=this.getBoundingClientRect();this._translateX=o.left-s.left+(this._translateX||0),this._translateY=o.top-s.top+(this._translateY||0)+this._verticalOffset(s,o);var n=window.devicePixelRatio||1;this._translateX=Math.round(this._translateX*n)/n,this._translateY=Math.round(this._translateY*n)/n,this.translate3d(this._translateX+"px",this._translateY+"px","0"),this.style.width=this.positionTarget.clientWidth+"px",this.updateViewportBoundaries()},_shouldAlignAbove:function(){var t=(window.innerHeight-this.positionTarget.getBoundingClientRect().bottom-Math.min(document.body.scrollTop,0))/window.innerHeight;return t<.3}},vaadin.elements.combobox.OverlayBehavior=[Polymer.IronResizableBehavior,vaadin.elements.combobox.OverlayBehaviorImpl]</script><dom-module id="vaadin-combo-box-overlay" assetpath="../../bower_components/vaadin-combo-box/"><style>:host{position:absolute;@apply(--shadow-elevation-2dp);background:#fff;border-radius:0 0 2px 2px;top:0;left:0;z-index:200;overflow:hidden}#scroller{overflow:auto;max-height:var(--vaadin-combo-box-overlay-max-height,65vh);transform:translate3d(0,0,0);-webkit-overflow-scrolling:touch}#selector{--iron-list-items-container:{border-top:8px solid transparent;border-bottom:8px solid transparent};}#selector .item{cursor:pointer;padding:13px 16px;color:var(--primary-text-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#selector .item[focused],#selector:not([touch-device]) .item:hover{background:#eee}#selector .item[selected]{color:var(--primary-color)}</style><template><div id="scroller" scroller="[[_getScroller()]]" on-tap="_stopPropagation"><iron-list id="selector" touch-device$="[[touchDevice]]" role="listbox" data-selection$="[[_ariaActiveIndex]]" on-touchend="_preventDefault" selected-item="{{_selectedItem}}" items="[[_items]]" selection-enabled="" scroll-target="[[_getScroller()]]"><template><div class="item" id$="it[[index]]" selected$="[[selected]]" role$="[[_getAriaRole(index)]]" aria-selected$="[[_getAriaSelected(_focusedIndex,index)]]" focused$="[[_isItemFocused(_focusedIndex,index)]]">[[getItemLabel(item)]]</div></template></iron-list></div></template></dom-module><script>Polymer({is:"vaadin-combo-box-overlay",behaviors:[vaadin.elements.combobox.OverlayBehavior],properties:{touchDevice:{type:Boolean,reflectToAttribute:!0,value:function(){try{return document.createEvent("TouchEvent"),!0}catch(e){return!1}}},_selectedItem:{type:String,notify:!0},_items:{type:Object},_focusedIndex:{type:Number,notify:!0,value:-1,observer:"_focusedIndexChanged"},_focusedItem:{type:String,computed:"_getFocusedItem(_focusedIndex)"},_ariaActiveIndex:{type:Number,notify:!0,computed:"_getAriaActiveIndex(_focusedIndex)"},_itemLabelPath:{type:String,value:"label"},_itemValuePath:{type:String,value:"value"}},ready:function(){this._patchWheelOverScrolling(),void 0!==this.$.selector._scroller&&(this.$.selector._scroller=this._getScroller())},_getFocusedItem:function(e){if(e>=0)return this._items[e]},indexOfLabel:function(e){if(this._items&&e)for(var t=0;t<this._items.length;t++)if(this.getItemLabel(this._items[t]).toString().toLowerCase()===e.toString().toLowerCase())return t;return-1},getItemLabel:function(e){var t=this.get(this._itemLabelPath,e);return void 0!==t&&null!==t||(t=e?e.toString():""),t},_isItemFocused:function(e,t){return e==t},_getAriaActiveIndex:function(e){return e>=0&&"it"+e},_getAriaSelected:function(e,t){return this._isItemFocused(e,t).toString()},_getAriaRole:function(e){return void 0!==e&&"option"},_focusedIndexChanged:function(e){e>=0&&this._scrollIntoView(e)},_scrollIntoView:function(e){if(void 0!==this._visibleItemsCount()){var t=e;e>this._lastVisibleIndex()?(t=e-this._visibleItemsCount()+1,this.$.selector.scrollToIndex(e)):e>this.$.selector.firstVisibleIndex&&(t=this.$.selector.firstVisibleIndex),this.$.selector.scrollToIndex(Math.max(0,t))}},ensureItemsRendered:function(){this.$.selector.flushDebouncer("_debounceTemplate"),this.$.selector._render&&this.$.selector._render()},adjustScrollPosition:function(){this._items&&this._scrollIntoView(this._focusedIndex)},_getScroller:function(){return this.$.scroller},_patchWheelOverScrolling:function(){var e=this.$.selector;e.addEventListener("wheel",function(t){var i=e._scroller||e.scrollTarget,o=0===i.scrollTop,r=i.scrollHeight-i.scrollTop-i.clientHeight<=1;o&&t.deltaY<0?t.preventDefault():r&&t.deltaY>0&&t.preventDefault()})},updateViewportBoundaries:function(){this._cachedViewportTotalPadding=void 0,this.$.selector.updateViewportBoundaries()},get _viewportTotalPadding(){if(void 0===this._cachedViewportTotalPadding){var e=window.getComputedStyle(this._unwrapIfNeeded(this.$.selector.$.items));this._cachedViewportTotalPadding=[e.paddingTop,e.paddingBottom,e.borderTopWidth,e.borderBottomWidth].map(function(e){return parseInt(e,10)}).reduce(function(e,t){return e+t})}return this._cachedViewportTotalPadding},_visibleItemsCount:function(){var e=this.$.selector._physicalStart,t=this.$.selector._physicalSizes[e],i=this.$.selector._viewportHeight||this.$.selector._viewportSize;if(t&&i){var o=(i-this._viewportTotalPadding)/t;return Math.floor(o)}},_lastVisibleIndex:function(){if(this._visibleItemsCount())return this.$.selector.firstVisibleIndex+this._visibleItemsCount()-1},_selectItem:function(e){e="number"==typeof e?this._items[e]:e,this.$.selector.selectedItem!==e&&this.$.selector.selectItem(e)},_preventDefault:function(e){e.preventDefault()},_stopPropagation:function(e){e.stopPropagation()}})</script><dom-module id="vaadin-combo-box-shared-styles" assetpath="../../bower_components/vaadin-combo-box/"><template><style>.rotate-on-open,:host ::content .rotate-on-open{transition:all .2s!important}:host([opened]) .rotate-on-open,:host([opened]) ::content .rotate-on-open{-webkit-transform:rotate(180deg);transform:rotate(180deg)}:host ::content paper-icon-button.small,paper-icon-button.small{box-sizing:content-box!important;bottom:-6px!important;width:20px!important;height:20px!important;padding:4px 6px 8px!important}:host(:not([has-value])) .clear-button,:host(:not([has-value])) ::content .clear-button,:host(:not([opened])) .clear-button,:host(:not([opened])) ::content .clear-button{display:none}:host([disabled]) .toggle-button,:host([disabled]) ::content .toggle-button,:host([readonly]) .toggle-button,:host([readonly]) ::content .toggle-button{display:none}</style></template><script>Polymer({is:"vaadin-combo-box-shared-styles"})</script></dom-module><script>Polymer({is:"iron-iconset-svg",properties:{name:{type:String,observer:"_nameChanged"},size:{type:Number,value:24},rtlMirroring:{type:Boolean,value:!1}},attached:function(){this.style.display="none"},getIconNames:function(){return this._icons=this._createIconMap(),Object.keys(this._icons).map(function(e){return this.name+":"+e},this)},applyIcon:function(e,t){e=e.root||e,this.removeIcon(e);var n=this._cloneIcon(t,this.rtlMirroring&&this._targetIsRTL(e));if(n){var r=Polymer.dom(e);return r.insertBefore(n,r.childNodes[0]),e._svgIcon=n}return null},removeIcon:function(e){e=e.root||e,e._svgIcon&&(Polymer.dom(e).removeChild(e._svgIcon),e._svgIcon=null)},_targetIsRTL:function(e){return null==this.__targetIsRTL&&(e&&e.nodeType!==Node.ELEMENT_NODE&&(e=e.host),this.__targetIsRTL=e&&"rtl"===window.getComputedStyle(e).direction),this.__targetIsRTL},_nameChanged:function(){new Polymer.IronMeta({type:"iconset",key:this.name,value:this}),this.async(function(){this.fire("iron-iconset-added",this,{node:window})})},_createIconMap:function(){var e=Object.create(null);return Polymer.dom(this).querySelectorAll("[id]").forEach(function(t){e[t.id]=t}),e},_cloneIcon:function(e,t){return this._icons=this._icons||this._createIconMap(),this._prepareSvgClone(this._icons[e],this.size,t)},_prepareSvgClone:function(e,t,n){if(e){var r=e.cloneNode(!0),i=document.createElementNS("http://www.w3.org/2000/svg","svg"),o=r.getAttribute("viewBox")||"0 0 "+t+" "+t,s="pointer-events: none; display: block; width: 100%; height: 100%;";return n&&r.hasAttribute("mirror-in-rtl")&&(s+="-webkit-transform:scale(-1,1);transform:scale(-1,1);"),i.setAttribute("viewBox",o),i.setAttribute("preserveAspectRatio","xMidYMid meet"),i.style.cssText=s,i.appendChild(r).removeAttribute("id"),i}return null}})</script><iron-iconset-svg size="24" name="vaadin-combo-box"><svg><defs><g id="arrow-drop-down"><path d="M7 10l5 5 5-5z"></path></g><g id="clear"><path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"></path></g></defs></svg></iron-iconset-svg><dom-module id="vaadin-combo-box" assetpath="../../bower_components/vaadin-combo-box/"><style include="vaadin-combo-box-shared-styles">:host{display:block;padding:8px 0}:host>#overlay{display:none}paper-input-container{position:relative;padding:0}:host ::content paper-icon-button.clear-button,:host ::content paper-icon-button.toggle-button,paper-icon-button.clear-button,paper-icon-button.toggle-button{position:absolute;bottom:-4px;right:-4px;line-height:18px!important;width:32px;height:32px;padding:4px;text-align:center;color:rgba(0,0,0,.38);cursor:pointer;margin-top:-1px;--paper-icon-button-ink-color:rgba(0, 0, 0, .54)}paper-input-container ::content paper-icon-button.clear-button,paper-input-container paper-icon-button.clear-button{right:28px}:host([opened]) paper-input-container ::content paper-icon-button,:host([opened]) paper-input-container paper-icon-button,paper-input-container ::content paper-icon-button:hover,paper-input-container paper-icon-button:hover{color:rgba(0,0,0,.54)}:host([opened]) paper-input-container ::content paper-icon-button:hover,:host([opened]) paper-input-container paper-icon-button:hover{color:rgba(0,0,0,.86)}:host([opened]) paper-input-container{z-index:20}#input::-ms-clear{display:none}#input{box-sizing:border-box;padding-right:28px}:host([opened][has-value]) #input{padding-right:60px;margin-right:-32px}</style><template><paper-input-container id="inputContainer" disabled$="[[disabled]]" no-label-float="[[noLabelFloat]]" always-float-label="[[_computeAlwaysFloatLabel(alwaysFloatLabel,placeholder)]]" auto-validate$="[[autoValidate]]" invalid="[[invalid]]"><label on-down="_preventDefault" id="label" hidden$="[[!label]]" aria-hidden="true" on-tap="_openAsync">[[label]]</label><content select="[prefix]"></content><input is="iron-input" id="input" type="text" role="combobox" autocomplete="off" autocapitalize="none" bind-value="{{_inputElementValue}}" aria-labelledby="label" aria-activedescendant$="[[_ariaActiveIndex]]" aria-expanded$="[[_getAriaExpanded(opened)]]" aria-autocomplete="list" aria-owns="overlay" disabled$="[[disabled]]" invalid="{{invalid}}" prevent-invalid-input="[[preventInvalidInput]]" allowed-pattern="[[allowedPattern]]" pattern$="[[pattern]]" required$="[[required]]" autofocus$="[[autofocus]]" inputmode$="[[inputmode]]" name$="[[name]]" placeholder$="[[placeholder]]" readonly$="[[readonly]]" size$="[[size]]" on-input="_inputValueChanged" on-blur="_onBlur" on-change="_stopPropagation" key-event-target=""><content select="[suffix]"></content><content select=".clear-button"><paper-icon-button id="clearIcon" tabindex="-1" icon="vaadin-combo-box:clear" on-down="_preventDefault" class="clear-button small"></paper-icon-button></content><content select=".toggle-button"><paper-icon-button id="toggleIcon" tabindex="-1" icon="vaadin-combo-box:arrow-drop-down" aria-controls="overlay" on-down="_preventDefault" class="toggle-button rotate-on-open"></paper-icon-button></content><template is="dom-if" if="[[errorMessage]]"><paper-input-error>[[errorMessage]]</paper-input-error></template></paper-input-container><vaadin-combo-box-overlay id="overlay" _aria-active-index="{{_ariaActiveIndex}}" position-target="[[_getPositionTarget()]]" _focused-index="[[_focusedIndex]]" _item-label-path="[[itemLabelPath]]" on-down="_onOverlayDown" on-mousedown="_preventDefault" vertical-offset="2"></vaadin-combo-box-overlay></template></dom-module><script>Polymer({is:"vaadin-combo-box",behaviors:[Polymer.IronValidatableBehavior,vaadin.elements.combobox.ComboBoxBehavior],properties:{label:{type:String,reflectToAttribute:!0},noLabelFloat:{type:Boolean,value:!1},alwaysFloatLabel:{type:Boolean,value:!1},autoValidate:{type:Boolean,value:!1},disabled:{type:Boolean,value:!1},preventInvalidInput:{type:Boolean},allowedPattern:{type:String},pattern:{type:String},required:{type:Boolean,value:!1},errorMessage:{type:String},autofocus:{type:Boolean},inputmode:{type:String},name:{type:String},placeholder:{type:String,value:""},readonly:{type:Boolean,value:!1},size:{type:Number}},attached:function(){this._setInputElement(this.$.input),this._toggleElement=Polymer.dom(this).querySelector(".toggle-button")||this.$.toggleIcon,this._clearElement=Polymer.dom(this).querySelector(".clear-button")||this.$.clearIcon},_computeAlwaysFloatLabel:function(e,t){return t||e},_getPositionTarget:function(){return this.$.inputContainer},_getAriaExpanded:function(e){return e.toString()}})</script></div><dom-module id="ha-panel-dev-service"><template><style include="ha-style">:host{background-color:#fff;-ms-user-select:initial;-webkit-user-select:initial;-moz-user-select:initial}.content{padding:16px}.ha-form{margin-right:16px;max-width:500px}.description{margin-top:24px;white-space:pre-wrap}.header{@apply(--paper-font-title)}.attributes th{text-align:left}.attributes tr{vertical-align:top}.attributes tr:nth-child(even){background-color:#eee}.attributes td:nth-child(3){white-space:pre-wrap;word-break:break-word}pre{margin:0}</style><app-header-layout has-scrolling-region=""><app-header fixed=""><app-toolbar><ha-menu-button narrow="[[narrow]]" show-menu="[[showMenu]]"></ha-menu-button><div main-title="">Services</div></app-toolbar></app-header><app-localstorage-document key="panel-dev-service-state-domain" data="{{domain}}"></app-localstorage-document><app-localstorage-document key="panel-dev-service-state-service" data="{{service}}"></app-localstorage-document><app-localstorage-document key="panel-dev-service-state-servicedata" data="{{serviceData}}"></app-localstorage-document><div class="content"><p>Call a service from a component.</p><div class="ha-form"><vaadin-combo-box label="Domain" items="[[computeDomains(serviceDomains)]]" value="{{domain}}"></vaadin-combo-box><vaadin-combo-box label="Service" items="[[computeServices(serviceDomains, domain)]]" value="{{service}}"></vaadin-combo-box><paper-textarea label="Service Data (JSON, optional)" value="{{serviceData}}"></paper-textarea><paper-button on-tap="callService" raised="">Call Service</paper-button></div><template is="dom-if" if="[[!domain]]"><h1>Select a domain and service to see the description</h1></template><template is="dom-if" if="[[domain]]"><template is="dom-if" if="[[!service]]"><h1>Select a service to see the description</h1></template></template><template is="dom-if" if="[[domain]]"><template is="dom-if" if="[[service]]"><template is="dom-if" if="[[!_attributes.length]]"><h1>No description is available</h1></template><template is="dom-if" if="[[_attributes.length]]"><h1>Valid Parameters</h1><table class="attributes"><tbody><tr><th>Parameter</th><th>Description</th><th>Example</th></tr><template is="dom-repeat" items="[[_attributes]]" as="attribute"><tr><td><pre>[[attribute.key]]</pre></td><td>[[attribute.description]]</td><td>[[attribute.example]]</td></tr></template></tbody></table></template></template></template></div></app-header-layout></template></dom-module><script>Polymer({is:"ha-panel-dev-service",behaviors:[window.hassBehavior],properties:{hass:{type:Object},narrow:{type:Boolean,value:!1},showMenu:{type:Boolean,value:!1},domain:{type:String,value:"",observer:"domainChanged"},service:{type:String,value:"",observer:"serviceChanged"},serviceData:{type:String,value:""},_attributes:{type:Array,computed:"computeAttributesArray(hass, domain, service)"},serviceDomains:{type:Array,bindNuclear:function(e){return e.serviceGetters.entityMap}}},computeAttributesArray:function(e,t,r){return e.reactor.evaluate([e.serviceGetters.entityMap,function(e){return e.has(t)&&e.get(t).get("services").has(r)?e.get(t).get("services").get(r).get("fields").map(function(e,t){var r=e.toJS();return r.key=t,r}).toArray():[]}])},computeDomains:function(e){return e.valueSeq().map(function(e){return e.domain}).sort().toJS()},computeServices:function(e,t){return t?e.get(t).get("services").keySeq().toArray():""},domainChanged:function(){this.service="",this.serviceData=""},serviceChanged:function(){this.serviceData=""},callService:function(){var e;try{e=this.serviceData?JSON.parse(this.serviceData):{}}catch(e){return void alert("Error parsing JSON: "+e)}this.hass.serviceActions.callService(this.domain,this.service,e)}})</script></body></html> \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-dev-service.html.gz b/homeassistant/components/frontend/www_static/panels/ha-panel-dev-service.html.gz index e9007a00c9334d6e15c94e2b0ac8bd11bfbec312..0215ae8c97cde56efe80be7e63462b79952042fa 100644 GIT binary patch delta 11886 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 delta 11837 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 diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-dev-state.html b/homeassistant/components/frontend/www_static/panels/ha-panel-dev-state.html index 53c28a1109f..da96f77d3d4 100644 --- a/homeassistant/components/frontend/www_static/panels/ha-panel-dev-state.html +++ b/homeassistant/components/frontend/www_static/panels/ha-panel-dev-state.html @@ -1 +1 @@ -<html><head><meta charset="UTF-8"></head><body><div hidden="" by-vulcanize=""><dom-module id="iron-autogrow-textarea" assetpath="../../bower_components/iron-autogrow-textarea/"><template><style>:host{display:inline-block;position:relative;width:400px;border:1px solid;padding:2px;-moz-appearance:textarea;-webkit-appearance:textarea;overflow:hidden}.mirror-text{visibility:hidden;word-wrap:break-word}.fit{@apply(--layout-fit)}textarea{position:relative;outline:0;border:none;resize:none;background:inherit;color:inherit;width:100%;height:100%;font-size:inherit;font-family:inherit;line-height:inherit;text-align:inherit;@apply(--iron-autogrow-textarea)}::content textarea:invalid{box-shadow:none}textarea::-webkit-input-placeholder{@apply(--iron-autogrow-textarea-placeholder)}textarea:-moz-placeholder{@apply(--iron-autogrow-textarea-placeholder)}textarea::-moz-placeholder{@apply(--iron-autogrow-textarea-placeholder)}textarea:-ms-input-placeholder{@apply(--iron-autogrow-textarea-placeholder)}</style><div id="mirror" class="mirror-text" aria-hidden="true"> </div><div class="textarea-container fit"><textarea id="textarea" name$="[[name]]" autocomplete$="[[autocomplete]]" autofocus$="[[autofocus]]" inputmode$="[[inputmode]]" placeholder$="[[placeholder]]" readonly$="[[readonly]]" required$="[[required]]" disabled$="[[disabled]]" rows$="[[rows]]" minlength$="[[minlength]]" maxlength$="[[maxlength]]"></textarea></div></template></dom-module><script>Polymer({is:"iron-autogrow-textarea",behaviors:[Polymer.IronFormElementBehavior,Polymer.IronValidatableBehavior,Polymer.IronControlState],properties:{bindValue:{observer:"_bindValueChanged",type:String},rows:{type:Number,value:1,observer:"_updateCached"},maxRows:{type:Number,value:0,observer:"_updateCached"},autocomplete:{type:String,value:"off"},autofocus:{type:Boolean,value:!1},inputmode:{type:String},placeholder:{type:String},readonly:{type:String},required:{type:Boolean},minlength:{type:Number},maxlength:{type:Number}},listeners:{input:"_onInput"},observers:["_onValueChanged(value)"],get textarea(){return this.$.textarea},get selectionStart(){return this.$.textarea.selectionStart},get selectionEnd(){return this.$.textarea.selectionEnd},set selectionStart(e){this.$.textarea.selectionStart=e},set selectionEnd(e){this.$.textarea.selectionEnd=e},validate:function(){if(!this.required&&""==this.value)return this.invalid=!1,!0;var e;return this.hasValidator()?e=Polymer.IronValidatableBehavior.validate.call(this,this.value):(e=this.$.textarea.validity.valid,this.invalid=!e),this.fire("iron-input-validate"),e},_bindValueChanged:function(){var e=this.textarea;e&&(e.value!==this.bindValue&&(e.value=this.bindValue||0===this.bindValue?this.bindValue:""),this.value=this.bindValue,this.$.mirror.innerHTML=this._valueForMirror(),this.fire("bind-value-changed",{value:this.bindValue}))},_onInput:function(e){this.bindValue=e.path?e.path[0].value:e.target.value},_constrain:function(e){var t;for(e=e||[""],t=this.maxRows>0&&e.length>this.maxRows?e.slice(0,this.maxRows):e.slice(0);this.rows>0&&t.length<this.rows;)t.push("");return t.join("<br/>")+" "},_valueForMirror:function(){var e=this.textarea;if(e)return this.tokens=e&&e.value?e.value.replace(/&/gm,"&").replace(/"/gm,""").replace(/'/gm,"'").replace(/</gm,"<").replace(/>/gm,">").split("\n"):[""],this._constrain(this.tokens)},_updateCached:function(){this.$.mirror.innerHTML=this._constrain(this.tokens)},_onValueChanged:function(){this.bindValue=this.value}})</script><dom-module id="paper-textarea" assetpath="../../bower_components/paper-input/"><template><style>:host{display:block}:host([hidden]){display:none!important}label{pointer-events:none}</style><paper-input-container no-label-float$="[[noLabelFloat]]" always-float-label="[[_computeAlwaysFloatLabel(alwaysFloatLabel,placeholder)]]" auto-validate$="[[autoValidate]]" disabled$="[[disabled]]" invalid="[[invalid]]"><label hidden$="[[!label]]" aria-hidden="true">[[label]]</label><iron-autogrow-textarea id="input" class="paper-input-input" bind-value="{{value}}" invalid="{{invalid}}" disabled$="[[disabled]]" autocomplete$="[[autocomplete]]" autofocus$="[[autofocus]]" inputmode$="[[inputmode]]" name$="[[name]]" placeholder$="[[placeholder]]" readonly$="[[readonly]]" required$="[[required]]" minlength$="[[minlength]]" maxlength$="[[maxlength]]" autocapitalize$="[[autocapitalize]]" rows$="[[rows]]" max-rows$="[[maxRows]]" on-change="_onChange"></iron-autogrow-textarea><template is="dom-if" if="[[errorMessage]]"><paper-input-error>[[errorMessage]]</paper-input-error></template><template is="dom-if" if="[[charCounter]]"><paper-input-char-counter></paper-input-char-counter></template></paper-input-container></template></dom-module><script>Polymer({is:"paper-textarea",behaviors:[Polymer.PaperInputBehavior,Polymer.IronFormElementBehavior],properties:{_ariaLabelledBy:{observer:"_ariaLabelledByChanged",type:String},_ariaDescribedBy:{observer:"_ariaDescribedByChanged",type:String},rows:{type:Number,value:1},maxRows:{type:Number,value:0}},_ariaLabelledByChanged:function(e){this.$.input.textarea.setAttribute("aria-labelledby",e)},_ariaDescribedByChanged:function(e){this.$.input.textarea.setAttribute("aria-describedby",e)},get _focusableElement(){return this.$.input.textarea}})</script></div><dom-module id="ha-panel-dev-state"><template><style include="ha-style">:host{background-color:#fff;-ms-user-select:initial;-webkit-user-select:initial;-moz-user-select:initial}.content{padding:24px}.entities th{text-align:left}.entities tr{vertical-align:top}.entities tr:nth-child(even){background-color:#eee}.entities td:nth-child(3){white-space:pre-wrap;word-break:break-word}.entities a{color:var(--primary-color)}</style><app-header-layout has-scrolling-region=""><app-header fixed=""><app-toolbar><ha-menu-button narrow="[[narrow]]" show-menu="[[showMenu]]"></ha-menu-button><div main-title="">States</div></app-toolbar></app-header><div class="content"><div>Set the representation of a device within Home Assistant.<br>This will not communicate with the actual device.<paper-input label="Entity ID" autofocus="" required="" value="{{_entityId}}"></paper-input><paper-input label="State" required="" value="{{_state}}"></paper-input><paper-textarea label="State attributes (JSON, optional)" value="{{_stateAttributes}}"></paper-textarea><paper-button on-tap="handleSetState" raised="">Set State</paper-button></div><h1>Current entities</h1><table class="entities"><tbody><tr><th>Entity</th><th>State</th><th hidden$="[[narrow]]">Attributes<paper-checkbox checked="{{_showAttributes}}"></paper-checkbox></th></tr><template is="dom-repeat" items="[[_entities]]" as="entity"><tr><td><a href="#" on-tap="entitySelected">[[entity.entityId]]</a></td><td>[[entity.state]]</td><template is="dom-if" if="[[computeShowAttributes(narrow, _showAttributes)]]"><td>[[attributeString(entity)]]</td></template></tr></template></tbody></table></div></app-header-layout></template></dom-module><script>Polymer({is:"ha-panel-dev-state",behaviors:[window.hassBehavior],properties:{hass:{type:Object},narrow:{type:Boolean,value:!1},showMenu:{type:Boolean,value:!1},_entityId:{type:String,value:""},_state:{type:String,value:""},_stateAttributes:{type:String,value:""},_showAttributes:{type:Boolean,value:!0},_entities:{type:Array,bindNuclear:function(t){return[t.entityGetters.entityMap,function(t){return t.valueSeq().sortBy(function(t){return t.entityId}).toArray()}]}}},entitySelected:function(t){var e=t.model.entity;this._entityId=e.entityId,this._state=e.state,this._stateAttributes=JSON.stringify(e.attributes,null," "),t.preventDefault()},handleSetState:function(){var t;try{t=this._stateAttributes?JSON.parse(this._stateAttributes):{}}catch(t){return void alert("Error parsing JSON: "+t)}this.hass.entityActions.save({entityId:this._entityId,state:this._state,attributes:t})},computeShowAttributes:function(t,e){return!t&&e},attributeString:function(t){var e,i,r,n="";for(e=0,i=Object.keys(t.attributes);e<i.length;e++)r=i[e],n+=r+": "+t.attributes[r]+"\n";return n}})</script></body></html> \ No newline at end of file +<html><head><meta charset="UTF-8"></head><body><div hidden="" by-vulcanize=""><dom-module id="iron-autogrow-textarea" assetpath="../../bower_components/iron-autogrow-textarea/"><template><style>:host{display:inline-block;position:relative;width:400px;border:1px solid;padding:2px;-moz-appearance:textarea;-webkit-appearance:textarea;overflow:hidden}.mirror-text{visibility:hidden;word-wrap:break-word}.fit{@apply(--layout-fit)}textarea{position:relative;outline:0;border:none;resize:none;background:inherit;color:inherit;width:100%;height:100%;font-size:inherit;font-family:inherit;line-height:inherit;text-align:inherit;@apply(--iron-autogrow-textarea)}::content textarea:invalid{box-shadow:none}textarea::-webkit-input-placeholder{@apply(--iron-autogrow-textarea-placeholder)}textarea:-moz-placeholder{@apply(--iron-autogrow-textarea-placeholder)}textarea::-moz-placeholder{@apply(--iron-autogrow-textarea-placeholder)}textarea:-ms-input-placeholder{@apply(--iron-autogrow-textarea-placeholder)}</style><div id="mirror" class="mirror-text" aria-hidden="true"> </div><div class="textarea-container fit"><textarea id="textarea" name$="[[name]]" autocomplete$="[[autocomplete]]" autofocus$="[[autofocus]]" inputmode$="[[inputmode]]" placeholder$="[[placeholder]]" readonly$="[[readonly]]" required$="[[required]]" disabled$="[[disabled]]" rows$="[[rows]]" minlength$="[[minlength]]" maxlength$="[[maxlength]]"></textarea></div></template></dom-module><script>Polymer({is:"iron-autogrow-textarea",behaviors:[Polymer.IronFormElementBehavior,Polymer.IronValidatableBehavior,Polymer.IronControlState],properties:{bindValue:{observer:"_bindValueChanged",type:String},rows:{type:Number,value:1,observer:"_updateCached"},maxRows:{type:Number,value:0,observer:"_updateCached"},autocomplete:{type:String,value:"off"},autofocus:{type:Boolean,value:!1},inputmode:{type:String},placeholder:{type:String},readonly:{type:String},required:{type:Boolean},minlength:{type:Number},maxlength:{type:Number}},listeners:{input:"_onInput"},observers:["_onValueChanged(value)"],get textarea(){return this.$.textarea},get selectionStart(){return this.$.textarea.selectionStart},get selectionEnd(){return this.$.textarea.selectionEnd},set selectionStart(e){this.$.textarea.selectionStart=e},set selectionEnd(e){this.$.textarea.selectionEnd=e},attached:function(){var e=navigator.userAgent.match(/iP(?:[oa]d|hone)/);e&&(this.$.textarea.style.marginLeft="-3px")},validate:function(){if(!this.required&&""==this.value)return this.invalid=!1,!0;var e;return this.hasValidator()?e=Polymer.IronValidatableBehavior.validate.call(this,this.value):(e=this.$.textarea.validity.valid,this.invalid=!e),this.fire("iron-input-validate"),e},_bindValueChanged:function(){var e=this.textarea;e&&(e.value!==this.bindValue&&(e.value=this.bindValue||0===this.bindValue?this.bindValue:""),this.value=this.bindValue,this.$.mirror.innerHTML=this._valueForMirror(),this.fire("bind-value-changed",{value:this.bindValue}))},_onInput:function(e){this.bindValue=e.path?e.path[0].value:e.target.value},_constrain:function(e){var t;for(e=e||[""],t=this.maxRows>0&&e.length>this.maxRows?e.slice(0,this.maxRows):e.slice(0);this.rows>0&&t.length<this.rows;)t.push("");return t.join("<br/>")+" "},_valueForMirror:function(){var e=this.textarea;if(e)return this.tokens=e&&e.value?e.value.replace(/&/gm,"&").replace(/"/gm,""").replace(/'/gm,"'").replace(/</gm,"<").replace(/>/gm,">").split("\n"):[""],this._constrain(this.tokens)},_updateCached:function(){this.$.mirror.innerHTML=this._constrain(this.tokens)},_onValueChanged:function(){this.bindValue=this.value}})</script><dom-module id="paper-textarea" assetpath="../../bower_components/paper-input/"><template><style>:host{display:block}:host([hidden]){display:none!important}label{pointer-events:none}</style><paper-input-container no-label-float$="[[noLabelFloat]]" always-float-label="[[_computeAlwaysFloatLabel(alwaysFloatLabel,placeholder)]]" auto-validate$="[[autoValidate]]" disabled$="[[disabled]]" invalid="[[invalid]]"><label hidden$="[[!label]]" aria-hidden="true">[[label]]</label><iron-autogrow-textarea id="input" class="paper-input-input" bind-value="{{value}}" invalid="{{invalid}}" disabled$="[[disabled]]" autocomplete$="[[autocomplete]]" autofocus$="[[autofocus]]" inputmode$="[[inputmode]]" name$="[[name]]" placeholder$="[[placeholder]]" readonly$="[[readonly]]" required$="[[required]]" minlength$="[[minlength]]" maxlength$="[[maxlength]]" autocapitalize$="[[autocapitalize]]" rows$="[[rows]]" max-rows$="[[maxRows]]" on-change="_onChange"></iron-autogrow-textarea><template is="dom-if" if="[[errorMessage]]"><paper-input-error>[[errorMessage]]</paper-input-error></template><template is="dom-if" if="[[charCounter]]"><paper-input-char-counter></paper-input-char-counter></template></paper-input-container></template></dom-module><script>Polymer({is:"paper-textarea",behaviors:[Polymer.PaperInputBehavior,Polymer.IronFormElementBehavior],properties:{_ariaLabelledBy:{observer:"_ariaLabelledByChanged",type:String},_ariaDescribedBy:{observer:"_ariaDescribedByChanged",type:String},rows:{type:Number,value:1},maxRows:{type:Number,value:0}},_ariaLabelledByChanged:function(e){this.$.input.textarea.setAttribute("aria-labelledby",e)},_ariaDescribedByChanged:function(e){this.$.input.textarea.setAttribute("aria-describedby",e)},get _focusableElement(){return this.$.input.textarea}})</script></div><dom-module id="ha-panel-dev-state"><template><style include="ha-style">:host{background-color:#fff;-ms-user-select:initial;-webkit-user-select:initial;-moz-user-select:initial}.content{padding:16px}.entities th{text-align:left}.entities tr{vertical-align:top}.entities tr:nth-child(even){background-color:#eee}.entities td:nth-child(3){white-space:pre-wrap;word-break:break-word}.entities a{color:var(--primary-color)}</style><app-header-layout has-scrolling-region=""><app-header fixed=""><app-toolbar><ha-menu-button narrow="[[narrow]]" show-menu="[[showMenu]]"></ha-menu-button><div main-title="">States</div></app-toolbar></app-header><div class="content"><div><p>Set the representation of a device within Home Assistant.<br>This will not communicate with the actual device.</p><paper-input label="Entity ID" autofocus="" required="" value="{{_entityId}}"></paper-input><paper-input label="State" required="" value="{{_state}}"></paper-input><paper-textarea label="State attributes (JSON, optional)" value="{{_stateAttributes}}"></paper-textarea><paper-button on-tap="handleSetState" raised="">Set State</paper-button></div><h1>Current entities</h1><table class="entities"><tbody><tr><th>Entity</th><th>State</th><th hidden$="[[narrow]]">Attributes<paper-checkbox checked="{{_showAttributes}}"></paper-checkbox></th></tr><template is="dom-repeat" items="[[_entities]]" as="entity"><tr><td><a href="#" on-tap="entitySelected">[[entity.entityId]]</a></td><td>[[entity.state]]</td><template is="dom-if" if="[[computeShowAttributes(narrow, _showAttributes)]]"><td>[[attributeString(entity)]]</td></template></tr></template></tbody></table></div></app-header-layout></template></dom-module><script>Polymer({is:"ha-panel-dev-state",behaviors:[window.hassBehavior],properties:{hass:{type:Object},narrow:{type:Boolean,value:!1},showMenu:{type:Boolean,value:!1},_entityId:{type:String,value:""},_state:{type:String,value:""},_stateAttributes:{type:String,value:""},_showAttributes:{type:Boolean,value:!0},_entities:{type:Array,bindNuclear:function(t){return[t.entityGetters.entityMap,function(t){return t.valueSeq().sortBy(function(t){return t.entityId}).toArray()}]}}},entitySelected:function(t){var e=t.model.entity;this._entityId=e.entityId,this._state=e.state,this._stateAttributes=JSON.stringify(e.attributes,null," "),t.preventDefault()},handleSetState:function(){var t;try{t=this._stateAttributes?JSON.parse(this._stateAttributes):{}}catch(t){return void alert("Error parsing JSON: "+t)}this.hass.entityActions.save({entityId:this._entityId,state:this._state,attributes:t})},computeShowAttributes:function(t,e){return!t&&e},attributeString:function(t){var e,i,r,n="";for(e=0,i=Object.keys(t.attributes);e<i.length;e++)r=i[e],n+=r+": "+t.attributes[r]+"\n";return n}})</script></body></html> \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-dev-state.html.gz b/homeassistant/components/frontend/www_static/panels/ha-panel-dev-state.html.gz index 4c211bbe30dc4744a427eb99bc2804fa36efa92d..ee640b9c7cbe4c04892a5f5479e32d91c82a31c2 100644 GIT binary patch literal 2880 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 literal 2811 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 N{|CjA2mGoZ0059vdEx*7 diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-dev-template.html b/homeassistant/components/frontend/www_static/panels/ha-panel-dev-template.html index 56d67d09e27..e122c075f9d 100644 --- a/homeassistant/components/frontend/www_static/panels/ha-panel-dev-template.html +++ b/homeassistant/components/frontend/www_static/panels/ha-panel-dev-template.html @@ -1,2 +1,2 @@ -<html><head><meta charset="UTF-8"></head><body><div hidden="" by-vulcanize=""><script>Polymer.IronControlState={properties:{focused:{type:Boolean,value:!1,notify:!0,readOnly:!0,reflectToAttribute:!0},disabled:{type:Boolean,value:!1,notify:!0,observer:"_disabledChanged",reflectToAttribute:!0},_oldTabIndex:{type:Number},_boundFocusBlurHandler:{type:Function,value:function(){return this._focusBlurHandler.bind(this)}}},observers:["_changedControlState(focused, disabled)"],ready:function(){this.addEventListener("focus",this._boundFocusBlurHandler,!0),this.addEventListener("blur",this._boundFocusBlurHandler,!0)},_focusBlurHandler:function(e){if(e.target===this)this._setFocused("focus"===e.type);else if(!this.shadowRoot){var t=Polymer.dom(e).localTarget;this.isLightDescendant(t)||this.fire(e.type,{sourceEvent:e},{node:this,bubbles:e.bubbles,cancelable:e.cancelable})}},_disabledChanged:function(e,t){this.setAttribute("aria-disabled",e?"true":"false"),this.style.pointerEvents=e?"none":"",e?(this._oldTabIndex=this.tabIndex,this._setFocused(!1),this.tabIndex=-1,this.blur()):void 0!==this._oldTabIndex&&(this.tabIndex=this._oldTabIndex)},_changedControlState:function(){this._controlStateChanged&&this._controlStateChanged()}}</script><style>[hidden]{display:none!important}</style><style is="custom-style">:root{--layout:{display:-ms-flexbox;display:-webkit-flex;display:flex};--layout-inline:{display:-ms-inline-flexbox;display:-webkit-inline-flex;display:inline-flex};--layout-horizontal:{@apply(--layout);-ms-flex-direction:row;-webkit-flex-direction:row;flex-direction:row};--layout-horizontal-reverse:{@apply(--layout);-ms-flex-direction:row-reverse;-webkit-flex-direction:row-reverse;flex-direction:row-reverse};--layout-vertical:{@apply(--layout);-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column};--layout-vertical-reverse:{@apply(--layout);-ms-flex-direction:column-reverse;-webkit-flex-direction:column-reverse;flex-direction:column-reverse};--layout-wrap:{-ms-flex-wrap:wrap;-webkit-flex-wrap:wrap;flex-wrap:wrap};--layout-wrap-reverse:{-ms-flex-wrap:wrap-reverse;-webkit-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse};--layout-flex-auto:{-ms-flex:1 1 auto;-webkit-flex:1 1 auto;flex:1 1 auto};--layout-flex-none:{-ms-flex:none;-webkit-flex:none;flex:none};--layout-flex:{-ms-flex:1 1 0px;-webkit-flex:1;flex:1;-webkit-flex-basis:0px;flex-basis:0px};--layout-flex-2:{-ms-flex:2;-webkit-flex:2;flex:2};--layout-flex-3:{-ms-flex:3;-webkit-flex:3;flex:3};--layout-flex-4:{-ms-flex:4;-webkit-flex:4;flex:4};--layout-flex-5:{-ms-flex:5;-webkit-flex:5;flex:5};--layout-flex-6:{-ms-flex:6;-webkit-flex:6;flex:6};--layout-flex-7:{-ms-flex:7;-webkit-flex:7;flex:7};--layout-flex-8:{-ms-flex:8;-webkit-flex:8;flex:8};--layout-flex-9:{-ms-flex:9;-webkit-flex:9;flex:9};--layout-flex-10:{-ms-flex:10;-webkit-flex:10;flex:10};--layout-flex-11:{-ms-flex:11;-webkit-flex:11;flex:11};--layout-flex-12:{-ms-flex:12;-webkit-flex:12;flex:12};--layout-start:{-ms-flex-align:start;-webkit-align-items:flex-start;align-items:flex-start};--layout-center:{-ms-flex-align:center;-webkit-align-items:center;align-items:center};--layout-end:{-ms-flex-align:end;-webkit-align-items:flex-end;align-items:flex-end};--layout-baseline:{-ms-flex-align:baseline;-webkit-align-items:baseline;align-items:baseline};--layout-start-justified:{-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start};--layout-center-justified:{-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center};--layout-end-justified:{-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end};--layout-around-justified:{-ms-flex-pack:distribute;-webkit-justify-content:space-around;justify-content:space-around};--layout-justified:{-ms-flex-pack:justify;-webkit-justify-content:space-between;justify-content:space-between};--layout-center-center:{@apply(--layout-center);@apply(--layout-center-justified)};--layout-self-start:{-ms-align-self:flex-start;-webkit-align-self:flex-start;align-self:flex-start};--layout-self-center:{-ms-align-self:center;-webkit-align-self:center;align-self:center};--layout-self-end:{-ms-align-self:flex-end;-webkit-align-self:flex-end;align-self:flex-end};--layout-self-stretch:{-ms-align-self:stretch;-webkit-align-self:stretch;align-self:stretch};--layout-self-baseline:{-ms-align-self:baseline;-webkit-align-self:baseline;align-self:baseline};--layout-start-aligned:{-ms-flex-line-pack:start;-ms-align-content:flex-start;-webkit-align-content:flex-start;align-content:flex-start};--layout-end-aligned:{-ms-flex-line-pack:end;-ms-align-content:flex-end;-webkit-align-content:flex-end;align-content:flex-end};--layout-center-aligned:{-ms-flex-line-pack:center;-ms-align-content:center;-webkit-align-content:center;align-content:center};--layout-between-aligned:{-ms-flex-line-pack:justify;-ms-align-content:space-between;-webkit-align-content:space-between;align-content:space-between};--layout-around-aligned:{-ms-flex-line-pack:distribute;-ms-align-content:space-around;-webkit-align-content:space-around;align-content:space-around};--layout-block:{display:block};--layout-invisible:{visibility:hidden!important};--layout-relative:{position:relative};--layout-fit:{position:absolute;top:0;right:0;bottom:0;left:0};--layout-scroll:{-webkit-overflow-scrolling:touch;overflow:auto};--layout-fullbleed:{margin:0;height:100vh};--layout-fixed-top:{position:fixed;top:0;left:0;right:0};--layout-fixed-right:{position:fixed;top:0;right:0;bottom:0};--layout-fixed-bottom:{position:fixed;right:0;bottom:0;left:0};--layout-fixed-left:{position:fixed;top:0;bottom:0;left:0};}</style><script>!function(){var e={},t={},i=null;Polymer.IronMeta=Polymer({is:"iron-meta",properties:{type:{type:String,value:"default",observer:"_typeChanged"},key:{type:String,observer:"_keyChanged"},value:{type:Object,notify:!0,observer:"_valueChanged"},self:{type:Boolean,observer:"_selfChanged"},list:{type:Array,notify:!0}},hostAttributes:{hidden:!0},factoryImpl:function(e){if(e)for(var t in e)switch(t){case"type":case"key":case"value":this[t]=e[t]}},created:function(){this._metaDatas=e,this._metaArrays=t},_keyChanged:function(e,t){this._resetRegistration(t)},_valueChanged:function(e){this._resetRegistration(this.key)},_selfChanged:function(e){e&&(this.value=this)},_typeChanged:function(i){this._unregisterKey(this.key),e[i]||(e[i]={}),this._metaData=e[i],t[i]||(t[i]=[]),this.list=t[i],this._registerKeyValue(this.key,this.value)},byKey:function(e){return this._metaData&&this._metaData[e]},_resetRegistration:function(e){this._unregisterKey(e),this._registerKeyValue(this.key,this.value)},_unregisterKey:function(e){this._unregister(e,this._metaData,this.list)},_registerKeyValue:function(e,t){this._register(e,t,this._metaData,this.list)},_register:function(e,t,i,a){e&&i&&void 0!==t&&(i[e]=t,a.push(t))},_unregister:function(e,t,i){if(e&&t&&e in t){var a=t[e];delete t[e],this.arrayDelete(i,a)}}}),Polymer.IronMeta.getIronMeta=function(){return null===i&&(i=new Polymer.IronMeta),i},Polymer.IronMetaQuery=Polymer({is:"iron-meta-query",properties:{type:{type:String,value:"default",observer:"_typeChanged"},key:{type:String,observer:"_keyChanged"},value:{type:Object,notify:!0,readOnly:!0},list:{type:Array,notify:!0}},factoryImpl:function(e){if(e)for(var t in e)switch(t){case"type":case"key":this[t]=e[t]}},created:function(){this._metaDatas=e,this._metaArrays=t},_keyChanged:function(e){this._setValue(this._metaData&&this._metaData[e])},_typeChanged:function(i){this._metaData=e[i],this.list=t[i],this.key&&this._keyChanged(this.key)},byKey:function(e){return this._metaData&&this._metaData[e]}})}()</script><script>Polymer.IronValidatableBehaviorMeta=null,Polymer.IronValidatableBehavior={properties:{validator:{type:String},invalid:{notify:!0,reflectToAttribute:!0,type:Boolean,value:!1},_validatorMeta:{type:Object},validatorType:{type:String,value:"validator"},_validator:{type:Object,computed:"__computeValidator(validator)"}},observers:["_invalidChanged(invalid)"],registered:function(){Polymer.IronValidatableBehaviorMeta=new Polymer.IronMeta({type:"validator"})},_invalidChanged:function(){this.invalid?this.setAttribute("aria-invalid","true"):this.removeAttribute("aria-invalid")},hasValidator:function(){return null!=this._validator},validate:function(a){return this.invalid=!this._getValidity(a),!this.invalid},_getValidity:function(a){return!this.hasValidator()||this._validator.validate(a)},__computeValidator:function(){return Polymer.IronValidatableBehaviorMeta&&Polymer.IronValidatableBehaviorMeta.byKey(this.validator)}}</script><script>Polymer.IronFormElementBehavior={properties:{name:{type:String},value:{notify:!0,type:String},required:{type:Boolean,value:!1},_parentForm:{type:Object}},attached:function(){this.fire("iron-form-element-register")},detached:function(){this._parentForm&&this._parentForm.fire("iron-form-element-unregister",{target:this})}}</script><dom-module id="iron-autogrow-textarea" assetpath="../../bower_components/iron-autogrow-textarea/"><template><style>:host{display:inline-block;position:relative;width:400px;border:1px solid;padding:2px;-moz-appearance:textarea;-webkit-appearance:textarea;overflow:hidden}.mirror-text{visibility:hidden;word-wrap:break-word}.fit{@apply(--layout-fit)}textarea{position:relative;outline:0;border:none;resize:none;background:inherit;color:inherit;width:100%;height:100%;font-size:inherit;font-family:inherit;line-height:inherit;text-align:inherit;@apply(--iron-autogrow-textarea)}::content textarea:invalid{box-shadow:none}textarea::-webkit-input-placeholder{@apply(--iron-autogrow-textarea-placeholder)}textarea:-moz-placeholder{@apply(--iron-autogrow-textarea-placeholder)}textarea::-moz-placeholder{@apply(--iron-autogrow-textarea-placeholder)}textarea:-ms-input-placeholder{@apply(--iron-autogrow-textarea-placeholder)}</style><div id="mirror" class="mirror-text" aria-hidden="true"> </div><div class="textarea-container fit"><textarea id="textarea" name$="[[name]]" autocomplete$="[[autocomplete]]" autofocus$="[[autofocus]]" inputmode$="[[inputmode]]" placeholder$="[[placeholder]]" readonly$="[[readonly]]" required$="[[required]]" disabled$="[[disabled]]" rows$="[[rows]]" minlength$="[[minlength]]" maxlength$="[[maxlength]]"></textarea></div></template></dom-module><script>Polymer({is:"iron-autogrow-textarea",behaviors:[Polymer.IronFormElementBehavior,Polymer.IronValidatableBehavior,Polymer.IronControlState],properties:{bindValue:{observer:"_bindValueChanged",type:String},rows:{type:Number,value:1,observer:"_updateCached"},maxRows:{type:Number,value:0,observer:"_updateCached"},autocomplete:{type:String,value:"off"},autofocus:{type:Boolean,value:!1},inputmode:{type:String},placeholder:{type:String},readonly:{type:String},required:{type:Boolean},minlength:{type:Number},maxlength:{type:Number}},listeners:{input:"_onInput"},observers:["_onValueChanged(value)"],get textarea(){return this.$.textarea},get selectionStart(){return this.$.textarea.selectionStart},get selectionEnd(){return this.$.textarea.selectionEnd},set selectionStart(e){this.$.textarea.selectionStart=e},set selectionEnd(e){this.$.textarea.selectionEnd=e},validate:function(){if(!this.required&&""==this.value)return this.invalid=!1,!0;var e;return this.hasValidator()?e=Polymer.IronValidatableBehavior.validate.call(this,this.value):(e=this.$.textarea.validity.valid,this.invalid=!e),this.fire("iron-input-validate"),e},_bindValueChanged:function(){var e=this.textarea;e&&(e.value!==this.bindValue&&(e.value=this.bindValue||0===this.bindValue?this.bindValue:""),this.value=this.bindValue,this.$.mirror.innerHTML=this._valueForMirror(),this.fire("bind-value-changed",{value:this.bindValue}))},_onInput:function(e){this.bindValue=e.path?e.path[0].value:e.target.value},_constrain:function(e){var t;for(e=e||[""],t=this.maxRows>0&&e.length>this.maxRows?e.slice(0,this.maxRows):e.slice(0);this.rows>0&&t.length<this.rows;)t.push("");return t.join("<br/>")+" "},_valueForMirror:function(){var e=this.textarea;if(e)return this.tokens=e&&e.value?e.value.replace(/&/gm,"&").replace(/"/gm,""").replace(/'/gm,"'").replace(/</gm,"<").replace(/>/gm,">").split("\n"):[""],this._constrain(this.tokens)},_updateCached:function(){this.$.mirror.innerHTML=this._constrain(this.tokens)},_onValueChanged:function(){this.bindValue=this.value}})</script><script>!function(){"use strict";function e(e,t){var n="";if(e){var i=e.toLowerCase();" "===i||v.test(i)?n="space":f.test(i)?n="esc":1==i.length?t&&!u.test(i)||(n=i):n=c.test(i)?i.replace("arrow",""):"multiply"==i?"*":i}return n}function t(e){var t="";return e&&(e in o?t=o[e]:h.test(e)?(e=parseInt(e.replace("U+","0x"),16),t=String.fromCharCode(e).toLowerCase()):t=e.toLowerCase()),t}function n(e){var t="";return Number(e)&&(t=e>=65&&e<=90?String.fromCharCode(32+e):e>=112&&e<=123?"f"+(e-112):e>=48&&e<=57?String(e-48):e>=96&&e<=105?String(e-96):d[e]),t}function i(i,r){return i.key?e(i.key,r):i.detail&&i.detail.key?e(i.detail.key,r):t(i.keyIdentifier)||n(i.keyCode)||""}function r(e,t){var n=i(t,e.hasModifiers);return n===e.key&&(!e.hasModifiers||!!t.shiftKey==!!e.shiftKey&&!!t.ctrlKey==!!e.ctrlKey&&!!t.altKey==!!e.altKey&&!!t.metaKey==!!e.metaKey)}function s(e){return 1===e.length?{combo:e,key:e,event:"keydown"}:e.split("+").reduce(function(e,t){var n=t.split(":"),i=n[0],r=n[1];return i in y?(e[y[i]]=!0,e.hasModifiers=!0):(e.key=i,e.event=r||"keydown"),e},{combo:e.split(":").shift()})}function a(e){return e.trim().split(" ").map(function(e){return s(e)})}var o={"U+0008":"backspace","U+0009":"tab","U+001B":"esc","U+0020":"space","U+007F":"del"},d={8:"backspace",9:"tab",13:"enter",27:"esc",33:"pageup",34:"pagedown",35:"end",36:"home",32:"space",37:"left",38:"up",39:"right",40:"down",46:"del",106:"*"},y={shift:"shiftKey",ctrl:"ctrlKey",alt:"altKey",meta:"metaKey"},u=/[a-z0-9*]/,h=/U\+/,c=/^arrow/,v=/^space(bar)?/,f=/^escape$/;Polymer.IronA11yKeysBehavior={properties:{keyEventTarget:{type:Object,value:function(){return this}},stopKeyboardEventPropagation:{type:Boolean,value:!1},_boundKeyHandlers:{type:Array,value:function(){return[]}},_imperativeKeyBindings:{type:Object,value:function(){return{}}}},observers:["_resetKeyEventListeners(keyEventTarget, _boundKeyHandlers)"],keyBindings:{},registered:function(){this._prepKeyBindings()},attached:function(){this._listenKeyEventListeners()},detached:function(){this._unlistenKeyEventListeners()},addOwnKeyBinding:function(e,t){this._imperativeKeyBindings[e]=t,this._prepKeyBindings(),this._resetKeyEventListeners()},removeOwnKeyBindings:function(){this._imperativeKeyBindings={},this._prepKeyBindings(),this._resetKeyEventListeners()},keyboardEventMatchesKeys:function(e,t){for(var n=a(t),i=0;i<n.length;++i)if(r(n[i],e))return!0;return!1},_collectKeyBindings:function(){var e=this.behaviors.map(function(e){return e.keyBindings});return e.indexOf(this.keyBindings)===-1&&e.push(this.keyBindings),e},_prepKeyBindings:function(){this._keyBindings={},this._collectKeyBindings().forEach(function(e){for(var t in e)this._addKeyBinding(t,e[t])},this);for(var e in this._imperativeKeyBindings)this._addKeyBinding(e,this._imperativeKeyBindings[e]);for(var t in this._keyBindings)this._keyBindings[t].sort(function(e,t){var n=e[0].hasModifiers,i=t[0].hasModifiers;return n===i?0:n?-1:1})},_addKeyBinding:function(e,t){a(e).forEach(function(e){this._keyBindings[e.event]=this._keyBindings[e.event]||[],this._keyBindings[e.event].push([e,t])},this)},_resetKeyEventListeners:function(){this._unlistenKeyEventListeners(),this.isAttached&&this._listenKeyEventListeners()},_listenKeyEventListeners:function(){this.keyEventTarget&&Object.keys(this._keyBindings).forEach(function(e){var t=this._keyBindings[e],n=this._onKeyBindingEvent.bind(this,t);this._boundKeyHandlers.push([this.keyEventTarget,e,n]),this.keyEventTarget.addEventListener(e,n)},this)},_unlistenKeyEventListeners:function(){for(var e,t,n,i;this._boundKeyHandlers.length;)e=this._boundKeyHandlers.pop(),t=e[0],n=e[1],i=e[2],t.removeEventListener(n,i)},_onKeyBindingEvent:function(e,t){if(this.stopKeyboardEventPropagation&&t.stopPropagation(),!t.defaultPrevented)for(var n=0;n<e.length;n++){var i=e[n][0],s=e[n][1];if(r(i,t)&&(this._triggerKeyHandler(i,s,t),t.defaultPrevented))return}},_triggerKeyHandler:function(e,t,n){var i=Object.create(e);i.keyboardEvent=n;var r=new CustomEvent(e.event,{detail:i,cancelable:!0});this[t].call(this,r),r.defaultPrevented&&n.preventDefault()}}}()</script><script>Polymer.PaperInputHelper={},Polymer.PaperInputHelper.NextLabelID=1,Polymer.PaperInputHelper.NextAddonID=1,Polymer.PaperInputBehaviorImpl={properties:{label:{type:String},value:{notify:!0,type:String},disabled:{type:Boolean,value:!1},invalid:{type:Boolean,value:!1,notify:!0},preventInvalidInput:{type:Boolean},allowedPattern:{type:String},type:{type:String},list:{type:String},pattern:{type:String},required:{type:Boolean,value:!1},errorMessage:{type:String},charCounter:{type:Boolean,value:!1},noLabelFloat:{type:Boolean,value:!1},alwaysFloatLabel:{type:Boolean,value:!1},autoValidate:{type:Boolean,value:!1},validator:{type:String},autocomplete:{type:String,value:"off"},autofocus:{type:Boolean,observer:"_autofocusChanged"},inputmode:{type:String},minlength:{type:Number},maxlength:{type:Number},min:{type:String},max:{type:String},step:{type:String},name:{type:String},placeholder:{type:String,value:""},readonly:{type:Boolean,value:!1},size:{type:Number},autocapitalize:{type:String,value:"none"},autocorrect:{type:String,value:"off"},autosave:{type:String},results:{type:Number},accept:{type:String},multiple:{type:Boolean},_ariaDescribedBy:{type:String,value:""},_ariaLabelledBy:{type:String,value:""}},listeners:{"addon-attached":"_onAddonAttached"},keyBindings:{"shift+tab:keydown":"_onShiftTabDown"},hostAttributes:{tabindex:0},get inputElement(){return this.$.input},get _focusableElement(){return this.inputElement},registered:function(){this._typesThatHaveText=["date","datetime","datetime-local","month","time","week","file"]},attached:function(){this._updateAriaLabelledBy(),this.inputElement&&this._typesThatHaveText.indexOf(this.inputElement.type)!==-1&&(this.alwaysFloatLabel=!0)},_appendStringWithSpace:function(e,t){return e=e?e+" "+t:t},_onAddonAttached:function(e){var t=e.path?e.path[0]:e.target;if(t.id)this._ariaDescribedBy=this._appendStringWithSpace(this._ariaDescribedBy,t.id);else{var a="paper-input-add-on-"+Polymer.PaperInputHelper.NextAddonID++;t.id=a,this._ariaDescribedBy=this._appendStringWithSpace(this._ariaDescribedBy,a)}},validate:function(){return this.inputElement.validate()},_focusBlurHandler:function(e){Polymer.IronControlState._focusBlurHandler.call(this,e),this.focused&&!this._shiftTabPressed&&this._focusableElement.focus()},_onShiftTabDown:function(e){var t=this.getAttribute("tabindex");this._shiftTabPressed=!0,this.setAttribute("tabindex","-1"),this.async(function(){this.setAttribute("tabindex",t),this._shiftTabPressed=!1},1)},_handleAutoValidate:function(){this.autoValidate&&this.validate()},updateValueAndPreserveCaret:function(e){try{var t=this.inputElement.selectionStart;this.value=e,this.inputElement.selectionStart=t,this.inputElement.selectionEnd=t}catch(t){this.value=e}},_computeAlwaysFloatLabel:function(e,t){return t||e},_updateAriaLabelledBy:function(){var e=Polymer.dom(this.root).querySelector("label");if(!e)return void(this._ariaLabelledBy="");var t;e.id?t=e.id:(t="paper-input-label-"+Polymer.PaperInputHelper.NextLabelID++,e.id=t),this._ariaLabelledBy=t},_onChange:function(e){this.shadowRoot&&this.fire(e.type,{sourceEvent:e},{node:this,bubbles:e.bubbles,cancelable:e.cancelable})},_autofocusChanged:function(){if(this.autofocus&&this._focusableElement){var e=document.activeElement,t=e instanceof HTMLElement,a=t&&e!==document.body&&e!==document.documentElement;a||this._focusableElement.focus()}}},Polymer.PaperInputBehavior=[Polymer.IronControlState,Polymer.IronA11yKeysBehavior,Polymer.PaperInputBehaviorImpl]</script><script>Polymer.PaperInputAddonBehavior={hostAttributes:{"add-on":""},attached:function(){this.fire("addon-attached")},update:function(t){}}</script><dom-module id="paper-input-char-counter" assetpath="../../bower_components/paper-input/"><template><style>:host{display:inline-block;float:right;@apply(--paper-font-caption);@apply(--paper-input-char-counter)}:host([hidden]){display:none!important}:host-context([dir=rtl]){float:left}</style><span>[[_charCounterStr]]</span></template></dom-module><script>Polymer({is:"paper-input-char-counter",behaviors:[Polymer.PaperInputAddonBehavior],properties:{_charCounterStr:{type:String,value:"0"}},update:function(t){if(t.inputElement){t.value=t.value||"";var e=t.value.toString().length.toString();t.inputElement.hasAttribute("maxlength")&&(e+="/"+t.inputElement.getAttribute("maxlength")),this._charCounterStr=e}}})</script><dom-module id="paper-textarea" assetpath="../../bower_components/paper-input/"><template><style>:host{display:block}:host([hidden]){display:none!important}label{pointer-events:none}</style><paper-input-container no-label-float$="[[noLabelFloat]]" always-float-label="[[_computeAlwaysFloatLabel(alwaysFloatLabel,placeholder)]]" auto-validate$="[[autoValidate]]" disabled$="[[disabled]]" invalid="[[invalid]]"><label hidden$="[[!label]]" aria-hidden="true">[[label]]</label><iron-autogrow-textarea id="input" class="paper-input-input" bind-value="{{value}}" invalid="{{invalid}}" disabled$="[[disabled]]" autocomplete$="[[autocomplete]]" autofocus$="[[autofocus]]" inputmode$="[[inputmode]]" name$="[[name]]" placeholder$="[[placeholder]]" readonly$="[[readonly]]" required$="[[required]]" minlength$="[[minlength]]" maxlength$="[[maxlength]]" autocapitalize$="[[autocapitalize]]" rows$="[[rows]]" max-rows$="[[maxRows]]" on-change="_onChange"></iron-autogrow-textarea><template is="dom-if" if="[[errorMessage]]"><paper-input-error>[[errorMessage]]</paper-input-error></template><template is="dom-if" if="[[charCounter]]"><paper-input-char-counter></paper-input-char-counter></template></paper-input-container></template></dom-module><script>Polymer({is:"paper-textarea",behaviors:[Polymer.PaperInputBehavior,Polymer.IronFormElementBehavior],properties:{_ariaLabelledBy:{observer:"_ariaLabelledByChanged",type:String},_ariaDescribedBy:{observer:"_ariaDescribedByChanged",type:String},rows:{type:Number,value:1},maxRows:{type:Number,value:0}},_ariaLabelledByChanged:function(e){this.$.input.textarea.setAttribute("aria-labelledby",e)},_ariaDescribedByChanged:function(e){this.$.input.textarea.setAttribute("aria-describedby",e)},get _focusableElement(){return this.$.input.textarea}})</script></div><dom-module id="ha-panel-dev-template"><template><style is="custom-style" include="ha-style iron-flex iron-positioning"></style><style>:host{background-color:#fff;-ms-user-select:initial;-webkit-user-select:initial;-moz-user-select:initial}.content{padding:24px}.edit-pane{margin-right:16px}.edit-pane a{color:var(--dark-primary-color)}.horizontal .edit-pane{max-width:50%}.render-pane{position:relative;max-width:50%}.render-spinner{position:absolute;top:8px;right:8px}.rendered{@apply(--paper-font-code1) +<html><head><meta charset="UTF-8"></head><body><div hidden="" by-vulcanize=""><script>Polymer.IronControlState={properties:{focused:{type:Boolean,value:!1,notify:!0,readOnly:!0,reflectToAttribute:!0},disabled:{type:Boolean,value:!1,notify:!0,observer:"_disabledChanged",reflectToAttribute:!0},_oldTabIndex:{type:Number},_boundFocusBlurHandler:{type:Function,value:function(){return this._focusBlurHandler.bind(this)}}},observers:["_changedControlState(focused, disabled)"],ready:function(){this.addEventListener("focus",this._boundFocusBlurHandler,!0),this.addEventListener("blur",this._boundFocusBlurHandler,!0)},_focusBlurHandler:function(e){if(e.target===this)this._setFocused("focus"===e.type);else if(!this.shadowRoot){var t=Polymer.dom(e).localTarget;this.isLightDescendant(t)||this.fire(e.type,{sourceEvent:e},{node:this,bubbles:e.bubbles,cancelable:e.cancelable})}},_disabledChanged:function(e,t){this.setAttribute("aria-disabled",e?"true":"false"),this.style.pointerEvents=e?"none":"",e?(this._oldTabIndex=this.tabIndex,this._setFocused(!1),this.tabIndex=-1,this.blur()):void 0!==this._oldTabIndex&&(this.tabIndex=this._oldTabIndex)},_changedControlState:function(){this._controlStateChanged&&this._controlStateChanged()}}</script><style>[hidden]{display:none!important}</style><style is="custom-style">:root{--layout:{display:-ms-flexbox;display:-webkit-flex;display:flex};--layout-inline:{display:-ms-inline-flexbox;display:-webkit-inline-flex;display:inline-flex};--layout-horizontal:{@apply(--layout);-ms-flex-direction:row;-webkit-flex-direction:row;flex-direction:row};--layout-horizontal-reverse:{@apply(--layout);-ms-flex-direction:row-reverse;-webkit-flex-direction:row-reverse;flex-direction:row-reverse};--layout-vertical:{@apply(--layout);-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column};--layout-vertical-reverse:{@apply(--layout);-ms-flex-direction:column-reverse;-webkit-flex-direction:column-reverse;flex-direction:column-reverse};--layout-wrap:{-ms-flex-wrap:wrap;-webkit-flex-wrap:wrap;flex-wrap:wrap};--layout-wrap-reverse:{-ms-flex-wrap:wrap-reverse;-webkit-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse};--layout-flex-auto:{-ms-flex:1 1 auto;-webkit-flex:1 1 auto;flex:1 1 auto};--layout-flex-none:{-ms-flex:none;-webkit-flex:none;flex:none};--layout-flex:{-ms-flex:1 1 0px;-webkit-flex:1;flex:1;-webkit-flex-basis:0px;flex-basis:0px};--layout-flex-2:{-ms-flex:2;-webkit-flex:2;flex:2};--layout-flex-3:{-ms-flex:3;-webkit-flex:3;flex:3};--layout-flex-4:{-ms-flex:4;-webkit-flex:4;flex:4};--layout-flex-5:{-ms-flex:5;-webkit-flex:5;flex:5};--layout-flex-6:{-ms-flex:6;-webkit-flex:6;flex:6};--layout-flex-7:{-ms-flex:7;-webkit-flex:7;flex:7};--layout-flex-8:{-ms-flex:8;-webkit-flex:8;flex:8};--layout-flex-9:{-ms-flex:9;-webkit-flex:9;flex:9};--layout-flex-10:{-ms-flex:10;-webkit-flex:10;flex:10};--layout-flex-11:{-ms-flex:11;-webkit-flex:11;flex:11};--layout-flex-12:{-ms-flex:12;-webkit-flex:12;flex:12};--layout-start:{-ms-flex-align:start;-webkit-align-items:flex-start;align-items:flex-start};--layout-center:{-ms-flex-align:center;-webkit-align-items:center;align-items:center};--layout-end:{-ms-flex-align:end;-webkit-align-items:flex-end;align-items:flex-end};--layout-baseline:{-ms-flex-align:baseline;-webkit-align-items:baseline;align-items:baseline};--layout-start-justified:{-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start};--layout-center-justified:{-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center};--layout-end-justified:{-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end};--layout-around-justified:{-ms-flex-pack:distribute;-webkit-justify-content:space-around;justify-content:space-around};--layout-justified:{-ms-flex-pack:justify;-webkit-justify-content:space-between;justify-content:space-between};--layout-center-center:{@apply(--layout-center);@apply(--layout-center-justified)};--layout-self-start:{-ms-align-self:flex-start;-webkit-align-self:flex-start;align-self:flex-start};--layout-self-center:{-ms-align-self:center;-webkit-align-self:center;align-self:center};--layout-self-end:{-ms-align-self:flex-end;-webkit-align-self:flex-end;align-self:flex-end};--layout-self-stretch:{-ms-align-self:stretch;-webkit-align-self:stretch;align-self:stretch};--layout-self-baseline:{-ms-align-self:baseline;-webkit-align-self:baseline;align-self:baseline};--layout-start-aligned:{-ms-flex-line-pack:start;-ms-align-content:flex-start;-webkit-align-content:flex-start;align-content:flex-start};--layout-end-aligned:{-ms-flex-line-pack:end;-ms-align-content:flex-end;-webkit-align-content:flex-end;align-content:flex-end};--layout-center-aligned:{-ms-flex-line-pack:center;-ms-align-content:center;-webkit-align-content:center;align-content:center};--layout-between-aligned:{-ms-flex-line-pack:justify;-ms-align-content:space-between;-webkit-align-content:space-between;align-content:space-between};--layout-around-aligned:{-ms-flex-line-pack:distribute;-ms-align-content:space-around;-webkit-align-content:space-around;align-content:space-around};--layout-block:{display:block};--layout-invisible:{visibility:hidden!important};--layout-relative:{position:relative};--layout-fit:{position:absolute;top:0;right:0;bottom:0;left:0};--layout-scroll:{-webkit-overflow-scrolling:touch;overflow:auto};--layout-fullbleed:{margin:0;height:100vh};--layout-fixed-top:{position:fixed;top:0;left:0;right:0};--layout-fixed-right:{position:fixed;top:0;right:0;bottom:0};--layout-fixed-bottom:{position:fixed;right:0;bottom:0;left:0};--layout-fixed-left:{position:fixed;top:0;bottom:0;left:0};}</style><script>!function(){var e={},t={},i=null;Polymer.IronMeta=Polymer({is:"iron-meta",properties:{type:{type:String,value:"default",observer:"_typeChanged"},key:{type:String,observer:"_keyChanged"},value:{type:Object,notify:!0,observer:"_valueChanged"},self:{type:Boolean,observer:"_selfChanged"},list:{type:Array,notify:!0}},hostAttributes:{hidden:!0},factoryImpl:function(e){if(e)for(var t in e)switch(t){case"type":case"key":case"value":this[t]=e[t]}},created:function(){this._metaDatas=e,this._metaArrays=t},_keyChanged:function(e,t){this._resetRegistration(t)},_valueChanged:function(e){this._resetRegistration(this.key)},_selfChanged:function(e){e&&(this.value=this)},_typeChanged:function(i){this._unregisterKey(this.key),e[i]||(e[i]={}),this._metaData=e[i],t[i]||(t[i]=[]),this.list=t[i],this._registerKeyValue(this.key,this.value)},byKey:function(e){return this._metaData&&this._metaData[e]},_resetRegistration:function(e){this._unregisterKey(e),this._registerKeyValue(this.key,this.value)},_unregisterKey:function(e){this._unregister(e,this._metaData,this.list)},_registerKeyValue:function(e,t){this._register(e,t,this._metaData,this.list)},_register:function(e,t,i,a){e&&i&&void 0!==t&&(i[e]=t,a.push(t))},_unregister:function(e,t,i){if(e&&t&&e in t){var a=t[e];delete t[e],this.arrayDelete(i,a)}}}),Polymer.IronMeta.getIronMeta=function(){return null===i&&(i=new Polymer.IronMeta),i},Polymer.IronMetaQuery=Polymer({is:"iron-meta-query",properties:{type:{type:String,value:"default",observer:"_typeChanged"},key:{type:String,observer:"_keyChanged"},value:{type:Object,notify:!0,readOnly:!0},list:{type:Array,notify:!0}},factoryImpl:function(e){if(e)for(var t in e)switch(t){case"type":case"key":this[t]=e[t]}},created:function(){this._metaDatas=e,this._metaArrays=t},_keyChanged:function(e){this._setValue(this._metaData&&this._metaData[e])},_typeChanged:function(i){this._metaData=e[i],this.list=t[i],this.key&&this._keyChanged(this.key)},byKey:function(e){return this._metaData&&this._metaData[e]}})}()</script><script>Polymer.IronValidatableBehaviorMeta=null,Polymer.IronValidatableBehavior={properties:{validator:{type:String},invalid:{notify:!0,reflectToAttribute:!0,type:Boolean,value:!1},_validatorMeta:{type:Object},validatorType:{type:String,value:"validator"},_validator:{type:Object,computed:"__computeValidator(validator)"}},observers:["_invalidChanged(invalid)"],registered:function(){Polymer.IronValidatableBehaviorMeta=new Polymer.IronMeta({type:"validator"})},_invalidChanged:function(){this.invalid?this.setAttribute("aria-invalid","true"):this.removeAttribute("aria-invalid")},hasValidator:function(){return null!=this._validator},validate:function(a){return this.invalid=!this._getValidity(a),!this.invalid},_getValidity:function(a){return!this.hasValidator()||this._validator.validate(a)},__computeValidator:function(){return Polymer.IronValidatableBehaviorMeta&&Polymer.IronValidatableBehaviorMeta.byKey(this.validator)}}</script><script>Polymer.IronFormElementBehavior={properties:{name:{type:String},value:{notify:!0,type:String},required:{type:Boolean,value:!1},_parentForm:{type:Object}},attached:function(){this.fire("iron-form-element-register")},detached:function(){this._parentForm&&this._parentForm.fire("iron-form-element-unregister",{target:this})}}</script><dom-module id="iron-autogrow-textarea" assetpath="../../bower_components/iron-autogrow-textarea/"><template><style>:host{display:inline-block;position:relative;width:400px;border:1px solid;padding:2px;-moz-appearance:textarea;-webkit-appearance:textarea;overflow:hidden}.mirror-text{visibility:hidden;word-wrap:break-word}.fit{@apply(--layout-fit)}textarea{position:relative;outline:0;border:none;resize:none;background:inherit;color:inherit;width:100%;height:100%;font-size:inherit;font-family:inherit;line-height:inherit;text-align:inherit;@apply(--iron-autogrow-textarea)}::content textarea:invalid{box-shadow:none}textarea::-webkit-input-placeholder{@apply(--iron-autogrow-textarea-placeholder)}textarea:-moz-placeholder{@apply(--iron-autogrow-textarea-placeholder)}textarea::-moz-placeholder{@apply(--iron-autogrow-textarea-placeholder)}textarea:-ms-input-placeholder{@apply(--iron-autogrow-textarea-placeholder)}</style><div id="mirror" class="mirror-text" aria-hidden="true"> </div><div class="textarea-container fit"><textarea id="textarea" name$="[[name]]" autocomplete$="[[autocomplete]]" autofocus$="[[autofocus]]" inputmode$="[[inputmode]]" placeholder$="[[placeholder]]" readonly$="[[readonly]]" required$="[[required]]" disabled$="[[disabled]]" rows$="[[rows]]" minlength$="[[minlength]]" maxlength$="[[maxlength]]"></textarea></div></template></dom-module><script>Polymer({is:"iron-autogrow-textarea",behaviors:[Polymer.IronFormElementBehavior,Polymer.IronValidatableBehavior,Polymer.IronControlState],properties:{bindValue:{observer:"_bindValueChanged",type:String},rows:{type:Number,value:1,observer:"_updateCached"},maxRows:{type:Number,value:0,observer:"_updateCached"},autocomplete:{type:String,value:"off"},autofocus:{type:Boolean,value:!1},inputmode:{type:String},placeholder:{type:String},readonly:{type:String},required:{type:Boolean},minlength:{type:Number},maxlength:{type:Number}},listeners:{input:"_onInput"},observers:["_onValueChanged(value)"],get textarea(){return this.$.textarea},get selectionStart(){return this.$.textarea.selectionStart},get selectionEnd(){return this.$.textarea.selectionEnd},set selectionStart(e){this.$.textarea.selectionStart=e},set selectionEnd(e){this.$.textarea.selectionEnd=e},attached:function(){var e=navigator.userAgent.match(/iP(?:[oa]d|hone)/);e&&(this.$.textarea.style.marginLeft="-3px")},validate:function(){if(!this.required&&""==this.value)return this.invalid=!1,!0;var e;return this.hasValidator()?e=Polymer.IronValidatableBehavior.validate.call(this,this.value):(e=this.$.textarea.validity.valid,this.invalid=!e),this.fire("iron-input-validate"),e},_bindValueChanged:function(){var e=this.textarea;e&&(e.value!==this.bindValue&&(e.value=this.bindValue||0===this.bindValue?this.bindValue:""),this.value=this.bindValue,this.$.mirror.innerHTML=this._valueForMirror(),this.fire("bind-value-changed",{value:this.bindValue}))},_onInput:function(e){this.bindValue=e.path?e.path[0].value:e.target.value},_constrain:function(e){var t;for(e=e||[""],t=this.maxRows>0&&e.length>this.maxRows?e.slice(0,this.maxRows):e.slice(0);this.rows>0&&t.length<this.rows;)t.push("");return t.join("<br/>")+" "},_valueForMirror:function(){var e=this.textarea;if(e)return this.tokens=e&&e.value?e.value.replace(/&/gm,"&").replace(/"/gm,""").replace(/'/gm,"'").replace(/</gm,"<").replace(/>/gm,">").split("\n"):[""],this._constrain(this.tokens)},_updateCached:function(){this.$.mirror.innerHTML=this._constrain(this.tokens)},_onValueChanged:function(){this.bindValue=this.value}})</script><script>!function(){"use strict";function e(e,t){var n="";if(e){var i=e.toLowerCase();" "===i||v.test(i)?n="space":f.test(i)?n="esc":1==i.length?t&&!u.test(i)||(n=i):n=c.test(i)?i.replace("arrow",""):"multiply"==i?"*":i}return n}function t(e){var t="";return e&&(e in o?t=o[e]:h.test(e)?(e=parseInt(e.replace("U+","0x"),16),t=String.fromCharCode(e).toLowerCase()):t=e.toLowerCase()),t}function n(e){var t="";return Number(e)&&(t=e>=65&&e<=90?String.fromCharCode(32+e):e>=112&&e<=123?"f"+(e-112):e>=48&&e<=57?String(e-48):e>=96&&e<=105?String(e-96):d[e]),t}function i(i,r){return i.key?e(i.key,r):i.detail&&i.detail.key?e(i.detail.key,r):t(i.keyIdentifier)||n(i.keyCode)||""}function r(e,t){var n=i(t,e.hasModifiers);return n===e.key&&(!e.hasModifiers||!!t.shiftKey==!!e.shiftKey&&!!t.ctrlKey==!!e.ctrlKey&&!!t.altKey==!!e.altKey&&!!t.metaKey==!!e.metaKey)}function s(e){return 1===e.length?{combo:e,key:e,event:"keydown"}:e.split("+").reduce(function(e,t){var n=t.split(":"),i=n[0],r=n[1];return i in y?(e[y[i]]=!0,e.hasModifiers=!0):(e.key=i,e.event=r||"keydown"),e},{combo:e.split(":").shift()})}function a(e){return e.trim().split(" ").map(function(e){return s(e)})}var o={"U+0008":"backspace","U+0009":"tab","U+001B":"esc","U+0020":"space","U+007F":"del"},d={8:"backspace",9:"tab",13:"enter",27:"esc",33:"pageup",34:"pagedown",35:"end",36:"home",32:"space",37:"left",38:"up",39:"right",40:"down",46:"del",106:"*"},y={shift:"shiftKey",ctrl:"ctrlKey",alt:"altKey",meta:"metaKey"},u=/[a-z0-9*]/,h=/U\+/,c=/^arrow/,v=/^space(bar)?/,f=/^escape$/;Polymer.IronA11yKeysBehavior={properties:{keyEventTarget:{type:Object,value:function(){return this}},stopKeyboardEventPropagation:{type:Boolean,value:!1},_boundKeyHandlers:{type:Array,value:function(){return[]}},_imperativeKeyBindings:{type:Object,value:function(){return{}}}},observers:["_resetKeyEventListeners(keyEventTarget, _boundKeyHandlers)"],keyBindings:{},registered:function(){this._prepKeyBindings()},attached:function(){this._listenKeyEventListeners()},detached:function(){this._unlistenKeyEventListeners()},addOwnKeyBinding:function(e,t){this._imperativeKeyBindings[e]=t,this._prepKeyBindings(),this._resetKeyEventListeners()},removeOwnKeyBindings:function(){this._imperativeKeyBindings={},this._prepKeyBindings(),this._resetKeyEventListeners()},keyboardEventMatchesKeys:function(e,t){for(var n=a(t),i=0;i<n.length;++i)if(r(n[i],e))return!0;return!1},_collectKeyBindings:function(){var e=this.behaviors.map(function(e){return e.keyBindings});return e.indexOf(this.keyBindings)===-1&&e.push(this.keyBindings),e},_prepKeyBindings:function(){this._keyBindings={},this._collectKeyBindings().forEach(function(e){for(var t in e)this._addKeyBinding(t,e[t])},this);for(var e in this._imperativeKeyBindings)this._addKeyBinding(e,this._imperativeKeyBindings[e]);for(var t in this._keyBindings)this._keyBindings[t].sort(function(e,t){var n=e[0].hasModifiers,i=t[0].hasModifiers;return n===i?0:n?-1:1})},_addKeyBinding:function(e,t){a(e).forEach(function(e){this._keyBindings[e.event]=this._keyBindings[e.event]||[],this._keyBindings[e.event].push([e,t])},this)},_resetKeyEventListeners:function(){this._unlistenKeyEventListeners(),this.isAttached&&this._listenKeyEventListeners()},_listenKeyEventListeners:function(){this.keyEventTarget&&Object.keys(this._keyBindings).forEach(function(e){var t=this._keyBindings[e],n=this._onKeyBindingEvent.bind(this,t);this._boundKeyHandlers.push([this.keyEventTarget,e,n]),this.keyEventTarget.addEventListener(e,n)},this)},_unlistenKeyEventListeners:function(){for(var e,t,n,i;this._boundKeyHandlers.length;)e=this._boundKeyHandlers.pop(),t=e[0],n=e[1],i=e[2],t.removeEventListener(n,i)},_onKeyBindingEvent:function(e,t){if(this.stopKeyboardEventPropagation&&t.stopPropagation(),!t.defaultPrevented)for(var n=0;n<e.length;n++){var i=e[n][0],s=e[n][1];if(r(i,t)&&(this._triggerKeyHandler(i,s,t),t.defaultPrevented))return}},_triggerKeyHandler:function(e,t,n){var i=Object.create(e);i.keyboardEvent=n;var r=new CustomEvent(e.event,{detail:i,cancelable:!0});this[t].call(this,r),r.defaultPrevented&&n.preventDefault()}}}()</script><script>Polymer.PaperInputHelper={},Polymer.PaperInputHelper.NextLabelID=1,Polymer.PaperInputHelper.NextAddonID=1,Polymer.PaperInputBehaviorImpl={properties:{label:{type:String},value:{notify:!0,type:String},disabled:{type:Boolean,value:!1},invalid:{type:Boolean,value:!1,notify:!0},preventInvalidInput:{type:Boolean},allowedPattern:{type:String},type:{type:String},list:{type:String},pattern:{type:String},required:{type:Boolean,value:!1},errorMessage:{type:String},charCounter:{type:Boolean,value:!1},noLabelFloat:{type:Boolean,value:!1},alwaysFloatLabel:{type:Boolean,value:!1},autoValidate:{type:Boolean,value:!1},validator:{type:String},autocomplete:{type:String,value:"off"},autofocus:{type:Boolean,observer:"_autofocusChanged"},inputmode:{type:String},minlength:{type:Number},maxlength:{type:Number},min:{type:String},max:{type:String},step:{type:String},name:{type:String},placeholder:{type:String,value:""},readonly:{type:Boolean,value:!1},size:{type:Number},autocapitalize:{type:String,value:"none"},autocorrect:{type:String,value:"off"},autosave:{type:String},results:{type:Number},accept:{type:String},multiple:{type:Boolean},_ariaDescribedBy:{type:String,value:""},_ariaLabelledBy:{type:String,value:""}},listeners:{"addon-attached":"_onAddonAttached"},keyBindings:{"shift+tab:keydown":"_onShiftTabDown"},hostAttributes:{tabindex:0},get inputElement(){return this.$.input},get _focusableElement(){return this.inputElement},registered:function(){this._typesThatHaveText=["date","datetime","datetime-local","month","time","week","file"]},attached:function(){this._updateAriaLabelledBy(),this.inputElement&&this._typesThatHaveText.indexOf(this.inputElement.type)!==-1&&(this.alwaysFloatLabel=!0)},_appendStringWithSpace:function(e,t){return e=e?e+" "+t:t},_onAddonAttached:function(e){var t=e.path?e.path[0]:e.target;if(t.id)this._ariaDescribedBy=this._appendStringWithSpace(this._ariaDescribedBy,t.id);else{var a="paper-input-add-on-"+Polymer.PaperInputHelper.NextAddonID++;t.id=a,this._ariaDescribedBy=this._appendStringWithSpace(this._ariaDescribedBy,a)}},validate:function(){return this.inputElement.validate()},_focusBlurHandler:function(e){Polymer.IronControlState._focusBlurHandler.call(this,e),this.focused&&!this._shiftTabPressed&&this._focusableElement.focus()},_onShiftTabDown:function(e){var t=this.getAttribute("tabindex");this._shiftTabPressed=!0,this.setAttribute("tabindex","-1"),this.async(function(){this.setAttribute("tabindex",t),this._shiftTabPressed=!1},1)},_handleAutoValidate:function(){this.autoValidate&&this.validate()},updateValueAndPreserveCaret:function(e){try{var t=this.inputElement.selectionStart;this.value=e,this.inputElement.selectionStart=t,this.inputElement.selectionEnd=t}catch(t){this.value=e}},_computeAlwaysFloatLabel:function(e,t){return t||e},_updateAriaLabelledBy:function(){var e=Polymer.dom(this.root).querySelector("label");if(!e)return void(this._ariaLabelledBy="");var t;e.id?t=e.id:(t="paper-input-label-"+Polymer.PaperInputHelper.NextLabelID++,e.id=t),this._ariaLabelledBy=t},_onChange:function(e){this.shadowRoot&&this.fire(e.type,{sourceEvent:e},{node:this,bubbles:e.bubbles,cancelable:e.cancelable})},_autofocusChanged:function(){if(this.autofocus&&this._focusableElement){var e=document.activeElement,t=e instanceof HTMLElement,a=t&&e!==document.body&&e!==document.documentElement;a||this._focusableElement.focus()}}},Polymer.PaperInputBehavior=[Polymer.IronControlState,Polymer.IronA11yKeysBehavior,Polymer.PaperInputBehaviorImpl]</script><script>Polymer.PaperInputAddonBehavior={hostAttributes:{"add-on":""},attached:function(){this.fire("addon-attached")},update:function(t){}}</script><dom-module id="paper-input-char-counter" assetpath="../../bower_components/paper-input/"><template><style>:host{display:inline-block;float:right;@apply(--paper-font-caption);@apply(--paper-input-char-counter)}:host([hidden]){display:none!important}:host-context([dir=rtl]){float:left}</style><span>[[_charCounterStr]]</span></template></dom-module><script>Polymer({is:"paper-input-char-counter",behaviors:[Polymer.PaperInputAddonBehavior],properties:{_charCounterStr:{type:String,value:"0"}},update:function(t){if(t.inputElement){t.value=t.value||"";var e=t.value.toString().length.toString();t.inputElement.hasAttribute("maxlength")&&(e+="/"+t.inputElement.getAttribute("maxlength")),this._charCounterStr=e}}})</script><dom-module id="paper-textarea" assetpath="../../bower_components/paper-input/"><template><style>:host{display:block}:host([hidden]){display:none!important}label{pointer-events:none}</style><paper-input-container no-label-float$="[[noLabelFloat]]" always-float-label="[[_computeAlwaysFloatLabel(alwaysFloatLabel,placeholder)]]" auto-validate$="[[autoValidate]]" disabled$="[[disabled]]" invalid="[[invalid]]"><label hidden$="[[!label]]" aria-hidden="true">[[label]]</label><iron-autogrow-textarea id="input" class="paper-input-input" bind-value="{{value}}" invalid="{{invalid}}" disabled$="[[disabled]]" autocomplete$="[[autocomplete]]" autofocus$="[[autofocus]]" inputmode$="[[inputmode]]" name$="[[name]]" placeholder$="[[placeholder]]" readonly$="[[readonly]]" required$="[[required]]" minlength$="[[minlength]]" maxlength$="[[maxlength]]" autocapitalize$="[[autocapitalize]]" rows$="[[rows]]" max-rows$="[[maxRows]]" on-change="_onChange"></iron-autogrow-textarea><template is="dom-if" if="[[errorMessage]]"><paper-input-error>[[errorMessage]]</paper-input-error></template><template is="dom-if" if="[[charCounter]]"><paper-input-char-counter></paper-input-char-counter></template></paper-input-container></template></dom-module><script>Polymer({is:"paper-textarea",behaviors:[Polymer.PaperInputBehavior,Polymer.IronFormElementBehavior],properties:{_ariaLabelledBy:{observer:"_ariaLabelledByChanged",type:String},_ariaDescribedBy:{observer:"_ariaDescribedByChanged",type:String},rows:{type:Number,value:1},maxRows:{type:Number,value:0}},_ariaLabelledByChanged:function(e){this.$.input.textarea.setAttribute("aria-labelledby",e)},_ariaDescribedByChanged:function(e){this.$.input.textarea.setAttribute("aria-describedby",e)},get _focusableElement(){return this.$.input.textarea}})</script></div><dom-module id="ha-panel-dev-template"><template><style is="custom-style" include="ha-style iron-flex iron-positioning"></style><style>:host{background-color:#fff;-ms-user-select:initial;-webkit-user-select:initial;-moz-user-select:initial}.content{padding:16px}.edit-pane{margin-right:16px}.edit-pane a{color:var(--dark-primary-color)}.horizontal .edit-pane{max-width:50%}.render-pane{position:relative;max-width:50%}.render-spinner{position:absolute;top:8px;right:8px}.rendered{@apply(--paper-font-code1) clear: both;white-space:pre-wrap}.rendered.error{color:red}</style><app-header-layout has-scrolling-region=""><app-header fixed=""><app-toolbar><ha-menu-button narrow="[[narrow]]" show-menu="[[showMenu]]"></ha-menu-button><div main-title="">Templates</div></app-toolbar></app-header><div class$="[[computeFormClasses(narrow)]]"><div class="edit-pane"><p>Templates are rendered using the Jinja2 template engine with some Home Assistant specific extensions.</p><ul><li><a href="http://jinja.pocoo.org/docs/dev/templates/" target="_blank">Jinja2 template documentation</a></li><li><a href="https://home-assistant.io/topics/templating/" target="_blank">Home Assistant template extensions</a></li></ul><paper-textarea label="Template" value="{{template}}"></paper-textarea></div><div class="render-pane"><paper-spinner class="render-spinner" active="[[rendering]]"></paper-spinner><pre class$="[[computeRenderedClasses(error)]]">[[processed]]</pre></div></div></app-header-layout></template></dom-module><script>Polymer({is:"ha-panel-dev-template",behaviors:[window.hassBehavior],properties:{hass:{type:Object},narrow:{type:Boolean,value:!1},showMenu:{type:Boolean,value:!1},error:{type:Boolean,value:!1},rendering:{type:Boolean,value:!1},template:{type:String,value:'{%- if is_state("device_tracker.paulus", "home") and \n is_state("device_tracker.anne_therese", "home") -%}\n\n You are both home, you silly\n\n{%- else -%}\n\n Anne Therese is at {{ states("device_tracker.anne_therese") }} and Paulus is at {{ states("device_tracker.paulus") }}\n\n{%- endif %}\n\nFor loop example:\n\n{% for state in states.sensor -%}\n {%- if loop.first %}The {% elif loop.last %} and the {% else %}, the {% endif -%}\n {{ state.name | lower }} is {{state.state}} {{- state.attributes.unit_of_measurement}}\n{%- endfor -%}.',observer:"templateChanged"},processed:{type:String,value:""}},computeFormClasses:function(e){return e?"content fit":"content fit layout horizontal"},computeRenderedClasses:function(e){return e?"error rendered":"rendered"},templateChanged:function(){this.error&&(this.error=!1),this.debounce("render-template",this.renderTemplate.bind(this),500)},renderTemplate:function(){this.rendering=!0,this.hass.templateActions.render(this.template).then(function(e){this.processed=e,this.rendering=!1}.bind(this),function(e){this.processed=e.message,this.error=!0,this.rendering=!1}.bind(this))}})</script></body></html> \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-dev-template.html.gz b/homeassistant/components/frontend/www_static/panels/ha-panel-dev-template.html.gz index 6a2f68ab114ee7826ad79285cb7a78fb8173c8f3..fcfef9681b55ab6c060e4912e2b203e324ba8b66 100644 GIT binary patch literal 7366 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 literal 7309 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 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 7b4fa03057c..840f82cfd48 100644 --- a/homeassistant/components/frontend/www_static/panels/ha-panel-history.html +++ b/homeassistant/components/frontend/www_static/panels/ha-panel-history.html @@ -1,4 +1,4 @@ <html><head><meta charset="UTF-8"></head><body><div hidden="" by-vulcanize=""><script>!function(t,e){"use strict";var n;if("object"==typeof exports){try{n=require("moment")}catch(t){}module.exports=e(n)}else"function"==typeof define&&define.amd?define(function(t){var i="moment";try{n=t(i)}catch(t){}return e(n)}):t.Pikaday=e(t.moment)}(this,function(t){"use strict";var e="function"==typeof t,n=!!window.addEventListener,i=window.document,a=window.setTimeout,o=function(t,e,i,a){n?t.addEventListener(e,i,!!a):t.attachEvent("on"+e,i)},s=function(t,e,i,a){n?t.removeEventListener(e,i,!!a):t.detachEvent("on"+e,i)},r=function(t,e,n){var a;i.createEvent?(a=i.createEvent("HTMLEvents"),a.initEvent(e,!0,!1),a=D(a,n),t.dispatchEvent(a)):i.createEventObject&&(a=i.createEventObject(),a=D(a,n),t.fireEvent("on"+e,a))},h=function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")},l=function(t,e){return(" "+t.className+" ").indexOf(" "+e+" ")!==-1},d=function(t,e){l(t,e)||(t.className=""===t.className?e:t.className+" "+e)},u=function(t,e){t.className=h((" "+t.className+" ").replace(" "+e+" "," "))},c=function(t){return/Array/.test(Object.prototype.toString.call(t))},f=function(t){return/Date/.test(Object.prototype.toString.call(t))&&!isNaN(t.getTime())},g=function(t){var e=t.getDay();return 0===e||6===e},m=function(t){return t%4===0&&t%100!==0||t%400===0},p=function(t,e){return[31,m(t)?29:28,31,30,31,30,31,31,30,31,30,31][e]},y=function(t){f(t)&&t.setHours(0,0,0,0)},_=function(t,e){return t.getTime()===e.getTime()},D=function(t,e,n){var i,a;for(i in e)a=void 0!==t[i],a&&"object"==typeof e[i]&&null!==e[i]&&void 0===e[i].nodeName?f(e[i])?n&&(t[i]=new Date(e[i].getTime())):c(e[i])?n&&(t[i]=e[i].slice(0)):t[i]=D({},e[i],n):!n&&a||(t[i]=e[i]);return t},v=function(t){return t.month<0&&(t.year-=Math.ceil(Math.abs(t.month)/12),t.month+=12),t.month>11&&(t.year+=Math.floor(Math.abs(t.month)/12),t.month-=12),t},b={field:null,bound:void 0,position:"bottom left",reposition:!0,format:"YYYY-MM-DD",defaultDate:null,setDefaultDate:!1,firstDay:0,minDate:null,maxDate:null,yearRange:10,showWeekNumber:!1,minYear:0,maxYear:9999,minMonth:void 0,maxMonth:void 0,startRange:null,endRange:null,isRTL:!1,yearSuffix:"",showMonthAfterYear:!1,numberOfMonths:1,mainCalendar:"left",container:void 0,i18n:{previousMonth:"Previous Month",nextMonth:"Next Month",months:["January","February","March","April","May","June","July","August","September","October","November","December"],weekdays:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],weekdaysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},theme:null,onSelect:null,onOpen:null,onClose:null,onDraw:null},w=function(t,e,n){for(e+=t.firstDay;e>=7;)e-=7;return n?t.i18n.weekdaysShort[e]:t.i18n.weekdays[e]},M=function(t){if(t.isEmpty)return'<td class="is-empty"></td>';var e=[];return t.isDisabled&&e.push("is-disabled"),t.isToday&&e.push("is-today"),t.isSelected&&e.push("is-selected"),t.isInRange&&e.push("is-inrange"),t.isStartRange&&e.push("is-startrange"),t.isEndRange&&e.push("is-endrange"),'<td data-day="'+t.day+'" class="'+e.join(" ")+'"><button class="pika-button pika-day" type="button" data-pika-year="'+t.year+'" data-pika-month="'+t.month+'" data-pika-day="'+t.day+'">'+t.day+"</button></td>"},k=function(t,e,n){var i=new Date(n,0,1),a=Math.ceil(((new Date(n,e,t)-i)/864e5+i.getDay()+1)/7);return'<td class="pika-week">'+a+"</td>"},R=function(t,e){return"<tr>"+(e?t.reverse():t).join("")+"</tr>"},x=function(t){return"<tbody>"+t.join("")+"</tbody>"},N=function(t){var e,n=[];for(t.showWeekNumber&&n.push("<th></th>"),e=0;e<7;e++)n.push('<th scope="col"><abbr title="'+w(t,e)+'">'+w(t,e,!0)+"</abbr></th>");return"<thead>"+(t.isRTL?n.reverse():n).join("")+"</thead>"},C=function(t,e,n,i,a){var o,s,r,h,l,d=t._o,u=n===d.minYear,f=n===d.maxYear,g='<div class="pika-title">',m=!0,p=!0;for(r=[],o=0;o<12;o++)r.push('<option value="'+(n===a?o-e:12+o-e)+'"'+(o===i?" selected":"")+(u&&o<d.minMonth||f&&o>d.maxMonth?"disabled":"")+">"+d.i18n.months[o]+"</option>");for(h='<div class="pika-label">'+d.i18n.months[i]+'<select class="pika-select pika-select-month" tabindex="-1">'+r.join("")+"</select></div>",c(d.yearRange)?(o=d.yearRange[0],s=d.yearRange[1]+1):(o=n-d.yearRange,s=1+n+d.yearRange),r=[];o<s&&o<=d.maxYear;o++)o>=d.minYear&&r.push('<option value="'+o+'"'+(o===n?" selected":"")+">"+o+"</option>");return l='<div class="pika-label">'+n+d.yearSuffix+'<select class="pika-select pika-select-year" tabindex="-1">'+r.join("")+"</select></div>",g+=d.showMonthAfterYear?l+h:h+l,u&&(0===i||d.minMonth>=i)&&(m=!1),f&&(11===i||d.maxMonth<=i)&&(p=!1),0===e&&(g+='<button class="pika-prev'+(m?"":" is-disabled")+'" type="button">'+d.i18n.previousMonth+"</button>"),e===t._o.numberOfMonths-1&&(g+='<button class="pika-next'+(p?"":" is-disabled")+'" type="button">'+d.i18n.nextMonth+"</button>"),g+="</div>"},T=function(t,e){return'<table cellpadding="0" cellspacing="0" class="pika-table">'+N(t)+x(e)+"</table>"},E=function(s){var r=this,h=r.config(s);r._onMouseDown=function(t){if(r._v){t=t||window.event;var e=t.target||t.srcElement;if(e)if(l(e,"is-disabled")||(l(e,"pika-button")&&!l(e,"is-empty")?(r.setDate(new Date(e.getAttribute("data-pika-year"),e.getAttribute("data-pika-month"),e.getAttribute("data-pika-day"))),h.bound&&a(function(){r.hide(),h.field&&h.field.blur()},100)):l(e,"pika-prev")?r.prevMonth():l(e,"pika-next")&&r.nextMonth()),l(e,"pika-select"))r._c=!0;else{if(!t.preventDefault)return t.returnValue=!1,!1;t.preventDefault()}}},r._onChange=function(t){t=t||window.event;var e=t.target||t.srcElement;e&&(l(e,"pika-select-month")?r.gotoMonth(e.value):l(e,"pika-select-year")&&r.gotoYear(e.value))},r._onInputChange=function(n){var i;n.firedBy!==r&&(e?(i=t(h.field.value,h.format),i=i&&i.isValid()?i.toDate():null):i=new Date(Date.parse(h.field.value)),f(i)&&r.setDate(i),r._v||r.show())},r._onInputFocus=function(){r.show()},r._onInputClick=function(){r.show()},r._onInputBlur=function(){var t=i.activeElement;do if(l(t,"pika-single"))return;while(t=t.parentNode);r._c||(r._b=a(function(){r.hide()},50)),r._c=!1},r._onClick=function(t){t=t||window.event;var e=t.target||t.srcElement,i=e;if(e){!n&&l(e,"pika-select")&&(e.onchange||(e.setAttribute("onchange","return;"),o(e,"change",r._onChange)));do if(l(i,"pika-single")||i===h.trigger)return;while(i=i.parentNode);r._v&&e!==h.trigger&&i!==h.trigger&&r.hide()}},r.el=i.createElement("div"),r.el.className="pika-single"+(h.isRTL?" is-rtl":"")+(h.theme?" "+h.theme:""),o(r.el,"mousedown",r._onMouseDown,!0),o(r.el,"touchend",r._onMouseDown,!0),o(r.el,"change",r._onChange),h.field&&(h.container?h.container.appendChild(r.el):h.bound?i.body.appendChild(r.el):h.field.parentNode.insertBefore(r.el,h.field.nextSibling),o(h.field,"change",r._onInputChange),h.defaultDate||(e&&h.field.value?h.defaultDate=t(h.field.value,h.format).toDate():h.defaultDate=new Date(Date.parse(h.field.value)),h.setDefaultDate=!0));var d=h.defaultDate;f(d)?h.setDefaultDate?r.setDate(d,!0):r.gotoDate(d):r.gotoDate(new Date),h.bound?(this.hide(),r.el.className+=" is-bound",o(h.trigger,"click",r._onInputClick),o(h.trigger,"focus",r._onInputFocus),o(h.trigger,"blur",r._onInputBlur)):this.show()};return E.prototype={config:function(t){this._o||(this._o=D({},b,!0));var e=D(this._o,t,!0);e.isRTL=!!e.isRTL,e.field=e.field&&e.field.nodeName?e.field:null,e.theme="string"==typeof e.theme&&e.theme?e.theme:null,e.bound=!!(void 0!==e.bound?e.field&&e.bound:e.field),e.trigger=e.trigger&&e.trigger.nodeName?e.trigger:e.field,e.disableWeekends=!!e.disableWeekends,e.disableDayFn="function"==typeof e.disableDayFn?e.disableDayFn:null;var n=parseInt(e.numberOfMonths,10)||1;if(e.numberOfMonths=n>4?4:n,f(e.minDate)||(e.minDate=!1),f(e.maxDate)||(e.maxDate=!1),e.minDate&&e.maxDate&&e.maxDate<e.minDate&&(e.maxDate=e.minDate=!1),e.minDate&&this.setMinDate(e.minDate),e.maxDate&&this.setMaxDate(e.maxDate),c(e.yearRange)){var i=(new Date).getFullYear()-10;e.yearRange[0]=parseInt(e.yearRange[0],10)||i,e.yearRange[1]=parseInt(e.yearRange[1],10)||i}else e.yearRange=Math.abs(parseInt(e.yearRange,10))||b.yearRange,e.yearRange>100&&(e.yearRange=100);return e},toString:function(n){return f(this._d)?e?t(this._d).format(n||this._o.format):this._d.toDateString():""},getMoment:function(){return e?t(this._d):null},setMoment:function(n,i){e&&t.isMoment(n)&&this.setDate(n.toDate(),i)},getDate:function(){return f(this._d)?new Date(this._d.getTime()):null},setDate:function(t,e){if(!t)return this._d=null,this._o.field&&(this._o.field.value="",r(this._o.field,"change",{firedBy:this})),this.draw();if("string"==typeof t&&(t=new Date(Date.parse(t))),f(t)){var n=this._o.minDate,i=this._o.maxDate;f(n)&&t<n?t=n:f(i)&&t>i&&(t=i),this._d=new Date(t.getTime()),y(this._d),this.gotoDate(this._d),this._o.field&&(this._o.field.value=this.toString(),r(this._o.field,"change",{firedBy:this})),e||"function"!=typeof this._o.onSelect||this._o.onSelect.call(this,this.getDate())}},gotoDate:function(t){var e=!0;if(f(t)){if(this.calendars){var n=new Date(this.calendars[0].year,this.calendars[0].month,1),i=new Date(this.calendars[this.calendars.length-1].year,this.calendars[this.calendars.length-1].month,1),a=t.getTime();i.setMonth(i.getMonth()+1),i.setDate(i.getDate()-1),e=a<n.getTime()||i.getTime()<a}e&&(this.calendars=[{month:t.getMonth(),year:t.getFullYear()}],"right"===this._o.mainCalendar&&(this.calendars[0].month+=1-this._o.numberOfMonths)),this.adjustCalendars()}},adjustCalendars:function(){this.calendars[0]=v(this.calendars[0]);for(var t=1;t<this._o.numberOfMonths;t++)this.calendars[t]=v({month:this.calendars[0].month+t,year:this.calendars[0].year});this.draw()},gotoToday:function(){this.gotoDate(new Date)},gotoMonth:function(t){isNaN(t)||(this.calendars[0].month=parseInt(t,10),this.adjustCalendars())},nextMonth:function(){this.calendars[0].month++,this.adjustCalendars()},prevMonth:function(){this.calendars[0].month--,this.adjustCalendars()},gotoYear:function(t){isNaN(t)||(this.calendars[0].year=parseInt(t,10),this.adjustCalendars())},setMinDate:function(t){y(t),this._o.minDate=t,this._o.minYear=t.getFullYear(),this._o.minMonth=t.getMonth(),this.draw()},setMaxDate:function(t){y(t),this._o.maxDate=t,this._o.maxYear=t.getFullYear(),this._o.maxMonth=t.getMonth(),this.draw()},setStartRange:function(t){this._o.startRange=t},setEndRange:function(t){this._o.endRange=t},draw:function(t){if(this._v||t){var e=this._o,n=e.minYear,i=e.maxYear,o=e.minMonth,s=e.maxMonth,r="";this._y<=n&&(this._y=n,!isNaN(o)&&this._m<o&&(this._m=o)),this._y>=i&&(this._y=i,!isNaN(s)&&this._m>s&&(this._m=s));for(var h=0;h<e.numberOfMonths;h++)r+='<div class="pika-lendar">'+C(this,h,this.calendars[h].year,this.calendars[h].month,this.calendars[0].year)+this.render(this.calendars[h].year,this.calendars[h].month)+"</div>";if(this.el.innerHTML=r,e.bound&&"hidden"!==e.field.type&&a(function(){e.trigger.focus()},1),"function"==typeof this._o.onDraw){var l=this;a(function(){l._o.onDraw.call(l)},0)}}},adjustPosition:function(){var t,e,n,a,o,s,r,h,l,d;if(!this._o.container){if(this.el.style.position="absolute",t=this._o.trigger,e=t,n=this.el.offsetWidth,a=this.el.offsetHeight,o=window.innerWidth||i.documentElement.clientWidth,s=window.innerHeight||i.documentElement.clientHeight,r=window.pageYOffset||i.body.scrollTop||i.documentElement.scrollTop,"function"==typeof t.getBoundingClientRect)d=t.getBoundingClientRect(),h=d.left+window.pageXOffset,l=d.bottom+window.pageYOffset;else for(h=e.offsetLeft,l=e.offsetTop+e.offsetHeight;e=e.offsetParent;)h+=e.offsetLeft,l+=e.offsetTop;(this._o.reposition&&h+n>o||this._o.position.indexOf("right")>-1&&h-n+t.offsetWidth>0)&&(h=h-n+t.offsetWidth),(this._o.reposition&&l+a>s+r||this._o.position.indexOf("top")>-1&&l-a-t.offsetHeight>0)&&(l=l-a-t.offsetHeight),this.el.style.left=h+"px",this.el.style.top=l+"px"}},render:function(t,e){var n=this._o,i=new Date,a=p(t,e),o=new Date(t,e,1).getDay(),s=[],r=[];y(i),n.firstDay>0&&(o-=n.firstDay,o<0&&(o+=7));for(var h=a+o,l=h;l>7;)l-=7;h+=7-l;for(var d=0,u=0;d<h;d++){var c=new Date(t,e,1+(d-o)),m=!!f(this._d)&&_(c,this._d),D=_(c,i),v=d<o||d>=a+o,b=n.startRange&&_(n.startRange,c),w=n.endRange&&_(n.endRange,c),x=n.startRange&&n.endRange&&n.startRange<c&&c<n.endRange,N=n.minDate&&c<n.minDate||n.maxDate&&c>n.maxDate||n.disableWeekends&&g(c)||n.disableDayFn&&n.disableDayFn(c),C={day:1+(d-o),month:e,year:t,isSelected:m,isToday:D,isDisabled:N,isEmpty:v,isStartRange:b,isEndRange:w,isInRange:x};r.push(M(C)),7===++u&&(n.showWeekNumber&&r.unshift(k(d-o,e,t)),s.push(R(r,n.isRTL)),r=[],u=0)}return T(n,s)},isVisible:function(){return this._v},show:function(){this._v||(u(this.el,"is-hidden"),this._v=!0,this.draw(),this._o.bound&&(o(i,"click",this._onClick),this.adjustPosition()),"function"==typeof this._o.onOpen&&this._o.onOpen.call(this))},hide:function(){var t=this._v;t!==!1&&(this._o.bound&&s(i,"click",this._onClick),this.el.style.position="static",this.el.style.left="auto",this.el.style.top="auto",d(this.el,"is-hidden"),this._v=!1,void 0!==t&&"function"==typeof this._o.onClose&&this._o.onClose.call(this))},destroy:function(){this.hide(),s(this.el,"mousedown",this._onMouseDown,!0),s(this.el,"touchend",this._onMouseDown,!0),s(this.el,"change",this._onChange),this._o.field&&(s(this._o.field,"change",this._onInputChange),this._o.bound&&(s(this._o.trigger,"click",this._onInputClick),s(this._o.trigger,"focus",this._onInputFocus),s(this._o.trigger,"blur",this._onInputBlur))),this.el.parentNode&&this.el.parentNode.removeChild(this.el)}},E})</script><style>@media all{@charset "UTF-8";/*! * Pikaday * Copyright © 2014 David Bushell | BSD & MIT license | http://dbushell.com/ - */.pika-single{z-index:9999;display:block;position:relative;color:#333;background:#fff;border:1px solid #ccc;border-bottom-color:#bbb;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}.pika-single:after,.pika-single:before{content:" ";display:table}.pika-single:after{clear:both}.pika-single.is-hidden{display:none}.pika-single.is-bound{position:absolute;box-shadow:0 5px 15px -5px rgba(0,0,0,.5)}.pika-lendar{float:left;width:240px;margin:8px}.pika-title{position:relative;text-align:center}.pika-label{display:inline-block;position:relative;z-index:9999;overflow:hidden;margin:0;padding:5px 3px;font-size:14px;line-height:20px;font-weight:700;background-color:#fff}.pika-title select{cursor:pointer;position:absolute;z-index:9998;margin:0;left:0;top:5px;filter:alpha(opacity=0);opacity:0}.pika-next,.pika-prev{display:block;cursor:pointer;position:relative;outline:0;border:0;padding:0;width:20px;height:30px;text-indent:20px;white-space:nowrap;overflow:hidden;background-color:transparent;background-position:center center;background-repeat:no-repeat;background-size:75% 75%;opacity:.5}.pika-next:hover,.pika-prev:hover{opacity:1}.is-rtl .pika-next,.pika-prev{float:left;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAUklEQVR42u3VMQoAIBADQf8Pgj+OD9hG2CtONJB2ymQkKe0HbwAP0xucDiQWARITIDEBEnMgMQ8S8+AqBIl6kKgHiXqQqAeJepBo/z38J/U0uAHlaBkBl9I4GwAAAABJRU5ErkJggg==)}.is-rtl .pika-prev,.pika-next{float:right;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAU0lEQVR42u3VOwoAMAgE0dwfAnNjU26bYkBCFGwfiL9VVWoO+BJ4Gf3gtsEKKoFBNTCoCAYVwaAiGNQGMUHMkjGbgjk2mIONuXo0nC8XnCf1JXgArVIZAQh5TKYAAAAASUVORK5CYII=)}.pika-next.is-disabled,.pika-prev.is-disabled{cursor:default;opacity:.2}.pika-select{display:inline-block}.pika-table{width:100%;border-collapse:collapse;border-spacing:0;border:0}.pika-table td,.pika-table th{width:14.285714285714286%;padding:0}.pika-table th{color:#999;font-size:12px;line-height:25px;font-weight:700;text-align:center}.pika-button{cursor:pointer;display:block;box-sizing:border-box;-moz-box-sizing:border-box;outline:0;border:0;margin:0;width:100%;padding:5px;color:#666;font-size:12px;line-height:15px;text-align:right;background:#f5f5f5}.pika-week{font-size:11px;color:#999}.is-today .pika-button{color:#3af;font-weight:700}.is-selected .pika-button{color:#fff;font-weight:700;background:#3af;box-shadow:inset 0 1px 3px #178fe5;border-radius:3px}.is-inrange .pika-button{background:#D5E9F7}.is-startrange .pika-button{color:#fff;background:#6CB31D;box-shadow:none;border-radius:3px}.is-endrange .pika-button{color:#fff;background:#3af;box-shadow:none;border-radius:3px}.is-disabled .pika-button{pointer-events:none;cursor:default;color:#999;opacity:.3}.pika-button:hover{color:#fff;background:#ff8000;box-shadow:none;border-radius:3px}.pika-table abbr{border-bottom:none;cursor:help}}</style></div><dom-module id="ha-panel-history"><template><style include="iron-flex ha-style">.content{background-color:#fff}.content.wide{padding:8px}paper-input{max-width:200px}.narrow paper-input{margin-left:8px}</style><app-header-layout has-scrolling-region=""><app-header fixed=""><app-toolbar><ha-menu-button narrow="[[narrow]]" show-menu="[[showMenu]]"></ha-menu-button><div main-title="">History</div><paper-icon-button icon="mdi:refresh" on-tap="handleRefreshClick"></paper-icon-button></app-toolbar></app-header><div class$="[[computeContentClasses(narrow)]]"><paper-input label="Showing entries for" id="datePicker" value="[[selectedDateStr]]" on-focus="datepickerFocus"></paper-input><state-history-charts state-history="[[stateHistory]]" is-loading-data="[[isLoadingData]]"></state-history-charts></div></app-header-layout></template></dom-module><script>Polymer({is:"ha-panel-history",behaviors:[window.hassBehavior],properties:{hass:{type:Object},narrow:{type:Boolean},showMenu:{type:Boolean,value:!1},isDataLoaded:{type:Boolean,bindNuclear:function(t){return t.entityHistoryGetters.hasDataForCurrentDate},observer:"isDataLoadedChanged"},stateHistory:{type:Object,bindNuclear:function(t){return t.entityHistoryGetters.entityHistoryForCurrentDate}},isLoadingData:{type:Boolean,bindNuclear:function(t){return t.entityHistoryGetters.isLoadingEntityHistory}},selectedDate:{type:String,value:null,bindNuclear:function(t){return t.entityHistoryGetters.currentDate}},selectedDateStr:{type:String,value:null,bindNuclear:function(t){return[t.entityHistoryGetters.currentDate,function(t){var e=new Date(t);return window.hassUtil.formatDate(e)}]}}},isDataLoadedChanged:function(t){t||this.async(function(){this.hass.entityHistoryActions.fetchSelectedDate()}.bind(this),1)},handleRefreshClick:function(){this.hass.entityHistoryActions.fetchSelectedDate()},datepickerFocus:function(){this.datePicker.adjustPosition()},attached:function(){this.datePicker=new window.Pikaday({field:document.createElement("input"),trigger:this.$.datePicker.inputElement,onSelect:this.hass.entityHistoryActions.changeCurrentDate}),this.datePicker.setDate(this.selectedDate,!0)},detached:function(){this.datePicker.destroy()},computeContentClasses:function(t){return t?"flex content narrow":"flex content wide"}})</script></body></html> \ No newline at end of file + */.pika-single{z-index:9999;display:block;position:relative;color:#333;background:#fff;border:1px solid #ccc;border-bottom-color:#bbb;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}.pika-single:after,.pika-single:before{content:" ";display:table}.pika-single:after{clear:both}.pika-single.is-hidden{display:none}.pika-single.is-bound{position:absolute;box-shadow:0 5px 15px -5px rgba(0,0,0,.5)}.pika-lendar{float:left;width:240px;margin:8px}.pika-title{position:relative;text-align:center}.pika-label{display:inline-block;position:relative;z-index:9999;overflow:hidden;margin:0;padding:5px 3px;font-size:14px;line-height:20px;font-weight:700;background-color:#fff}.pika-title select{cursor:pointer;position:absolute;z-index:9998;margin:0;left:0;top:5px;filter:alpha(opacity=0);opacity:0}.pika-next,.pika-prev{display:block;cursor:pointer;position:relative;outline:0;border:0;padding:0;width:20px;height:30px;text-indent:20px;white-space:nowrap;overflow:hidden;background-color:transparent;background-position:center center;background-repeat:no-repeat;background-size:75% 75%;opacity:.5}.pika-next:hover,.pika-prev:hover{opacity:1}.is-rtl .pika-next,.pika-prev{float:left;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAUklEQVR42u3VMQoAIBADQf8Pgj+OD9hG2CtONJB2ymQkKe0HbwAP0xucDiQWARITIDEBEnMgMQ8S8+AqBIl6kKgHiXqQqAeJepBo/z38J/U0uAHlaBkBl9I4GwAAAABJRU5ErkJggg==)}.is-rtl .pika-prev,.pika-next{float:right;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAU0lEQVR42u3VOwoAMAgE0dwfAnNjU26bYkBCFGwfiL9VVWoO+BJ4Gf3gtsEKKoFBNTCoCAYVwaAiGNQGMUHMkjGbgjk2mIONuXo0nC8XnCf1JXgArVIZAQh5TKYAAAAASUVORK5CYII=)}.pika-next.is-disabled,.pika-prev.is-disabled{cursor:default;opacity:.2}.pika-select{display:inline-block}.pika-table{width:100%;border-collapse:collapse;border-spacing:0;border:0}.pika-table td,.pika-table th{width:14.285714285714286%;padding:0}.pika-table th{color:#999;font-size:12px;line-height:25px;font-weight:700;text-align:center}.pika-button{cursor:pointer;display:block;box-sizing:border-box;-moz-box-sizing:border-box;outline:0;border:0;margin:0;width:100%;padding:5px;color:#666;font-size:12px;line-height:15px;text-align:right;background:#f5f5f5}.pika-week{font-size:11px;color:#999}.is-today .pika-button{color:#3af;font-weight:700}.is-selected .pika-button{color:#fff;font-weight:700;background:#3af;box-shadow:inset 0 1px 3px #178fe5;border-radius:3px}.is-inrange .pika-button{background:#D5E9F7}.is-startrange .pika-button{color:#fff;background:#6CB31D;box-shadow:none;border-radius:3px}.is-endrange .pika-button{color:#fff;background:#3af;box-shadow:none;border-radius:3px}.is-disabled .pika-button{pointer-events:none;cursor:default;color:#999;opacity:.3}.pika-button:hover{color:#fff;background:#ff8000;box-shadow:none;border-radius:3px}.pika-table abbr{border-bottom:none;cursor:help}}</style></div><dom-module id="ha-panel-history"><template><style include="iron-flex ha-style">.content{padding:16px}paper-input{max-width:200px}</style><app-header-layout has-scrolling-region=""><app-header fixed=""><app-toolbar><ha-menu-button narrow="[[narrow]]" show-menu="[[showMenu]]"></ha-menu-button><div main-title="">History</div><paper-icon-button icon="mdi:refresh" on-tap="handleRefreshClick"></paper-icon-button></app-toolbar></app-header><div class="flex content"><paper-input label="Showing entries for" id="datePicker" value="[[selectedDateStr]]" on-focus="datepickerFocus"></paper-input><state-history-charts state-history="[[stateHistory]]" is-loading-data="[[isLoadingData]]"></state-history-charts></div></app-header-layout></template></dom-module><script>Polymer({is:"ha-panel-history",behaviors:[window.hassBehavior],properties:{hass:{type:Object},narrow:{type:Boolean},showMenu:{type:Boolean,value:!1},isDataLoaded:{type:Boolean,bindNuclear:function(t){return t.entityHistoryGetters.hasDataForCurrentDate},observer:"isDataLoadedChanged"},stateHistory:{type:Object,bindNuclear:function(t){return t.entityHistoryGetters.entityHistoryForCurrentDate}},isLoadingData:{type:Boolean,bindNuclear:function(t){return t.entityHistoryGetters.isLoadingEntityHistory}},selectedDate:{type:String,value:null,bindNuclear:function(t){return t.entityHistoryGetters.currentDate}},selectedDateStr:{type:String,value:null,bindNuclear:function(t){return[t.entityHistoryGetters.currentDate,function(t){var e=new Date(t);return window.hassUtil.formatDate(e)}]}}},isDataLoadedChanged:function(t){t||this.async(function(){this.hass.entityHistoryActions.fetchSelectedDate()}.bind(this),1)},handleRefreshClick:function(){this.hass.entityHistoryActions.fetchSelectedDate()},datepickerFocus:function(){this.datePicker.adjustPosition()},attached:function(){this.datePicker=new window.Pikaday({field:document.createElement("input"),trigger:this.$.datePicker.inputElement,onSelect:this.hass.entityHistoryActions.changeCurrentDate}),this.datePicker.setDate(this.selectedDate,!0)},detached:function(){this.datePicker.destroy()}})</script></body></html> \ 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 3025b732cdd8960f82e4704fa7280d37ae34fa26..8d03ffbcfe493df7f49adf55fa1ea8b45f653743 100644 GIT binary patch literal 6791 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 literal 6844 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 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 e8d615caba0..8a13ca837f7 100644 --- a/homeassistant/components/frontend/www_static/panels/ha-panel-logbook.html +++ b/homeassistant/components/frontend/www_static/panels/ha-panel-logbook.html @@ -1,4 +1,4 @@ <html><head><meta charset="UTF-8"></head><body><div hidden="" by-vulcanize=""><script>!function(t,e){"use strict";var n;if("object"==typeof exports){try{n=require("moment")}catch(t){}module.exports=e(n)}else"function"==typeof define&&define.amd?define(function(t){var i="moment";try{n=t(i)}catch(t){}return e(n)}):t.Pikaday=e(t.moment)}(this,function(t){"use strict";var e="function"==typeof t,n=!!window.addEventListener,i=window.document,a=window.setTimeout,o=function(t,e,i,a){n?t.addEventListener(e,i,!!a):t.attachEvent("on"+e,i)},s=function(t,e,i,a){n?t.removeEventListener(e,i,!!a):t.detachEvent("on"+e,i)},r=function(t,e,n){var a;i.createEvent?(a=i.createEvent("HTMLEvents"),a.initEvent(e,!0,!1),a=D(a,n),t.dispatchEvent(a)):i.createEventObject&&(a=i.createEventObject(),a=D(a,n),t.fireEvent("on"+e,a))},h=function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")},l=function(t,e){return(" "+t.className+" ").indexOf(" "+e+" ")!==-1},d=function(t,e){l(t,e)||(t.className=""===t.className?e:t.className+" "+e)},u=function(t,e){t.className=h((" "+t.className+" ").replace(" "+e+" "," "))},c=function(t){return/Array/.test(Object.prototype.toString.call(t))},f=function(t){return/Date/.test(Object.prototype.toString.call(t))&&!isNaN(t.getTime())},g=function(t){var e=t.getDay();return 0===e||6===e},m=function(t){return t%4===0&&t%100!==0||t%400===0},p=function(t,e){return[31,m(t)?29:28,31,30,31,30,31,31,30,31,30,31][e]},y=function(t){f(t)&&t.setHours(0,0,0,0)},_=function(t,e){return t.getTime()===e.getTime()},D=function(t,e,n){var i,a;for(i in e)a=void 0!==t[i],a&&"object"==typeof e[i]&&null!==e[i]&&void 0===e[i].nodeName?f(e[i])?n&&(t[i]=new Date(e[i].getTime())):c(e[i])?n&&(t[i]=e[i].slice(0)):t[i]=D({},e[i],n):!n&&a||(t[i]=e[i]);return t},v=function(t){return t.month<0&&(t.year-=Math.ceil(Math.abs(t.month)/12),t.month+=12),t.month>11&&(t.year+=Math.floor(Math.abs(t.month)/12),t.month-=12),t},b={field:null,bound:void 0,position:"bottom left",reposition:!0,format:"YYYY-MM-DD",defaultDate:null,setDefaultDate:!1,firstDay:0,minDate:null,maxDate:null,yearRange:10,showWeekNumber:!1,minYear:0,maxYear:9999,minMonth:void 0,maxMonth:void 0,startRange:null,endRange:null,isRTL:!1,yearSuffix:"",showMonthAfterYear:!1,numberOfMonths:1,mainCalendar:"left",container:void 0,i18n:{previousMonth:"Previous Month",nextMonth:"Next Month",months:["January","February","March","April","May","June","July","August","September","October","November","December"],weekdays:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],weekdaysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},theme:null,onSelect:null,onOpen:null,onClose:null,onDraw:null},w=function(t,e,n){for(e+=t.firstDay;e>=7;)e-=7;return n?t.i18n.weekdaysShort[e]:t.i18n.weekdays[e]},M=function(t){if(t.isEmpty)return'<td class="is-empty"></td>';var e=[];return t.isDisabled&&e.push("is-disabled"),t.isToday&&e.push("is-today"),t.isSelected&&e.push("is-selected"),t.isInRange&&e.push("is-inrange"),t.isStartRange&&e.push("is-startrange"),t.isEndRange&&e.push("is-endrange"),'<td data-day="'+t.day+'" class="'+e.join(" ")+'"><button class="pika-button pika-day" type="button" data-pika-year="'+t.year+'" data-pika-month="'+t.month+'" data-pika-day="'+t.day+'">'+t.day+"</button></td>"},k=function(t,e,n){var i=new Date(n,0,1),a=Math.ceil(((new Date(n,e,t)-i)/864e5+i.getDay()+1)/7);return'<td class="pika-week">'+a+"</td>"},R=function(t,e){return"<tr>"+(e?t.reverse():t).join("")+"</tr>"},x=function(t){return"<tbody>"+t.join("")+"</tbody>"},N=function(t){var e,n=[];for(t.showWeekNumber&&n.push("<th></th>"),e=0;e<7;e++)n.push('<th scope="col"><abbr title="'+w(t,e)+'">'+w(t,e,!0)+"</abbr></th>");return"<thead>"+(t.isRTL?n.reverse():n).join("")+"</thead>"},C=function(t,e,n,i,a){var o,s,r,h,l,d=t._o,u=n===d.minYear,f=n===d.maxYear,g='<div class="pika-title">',m=!0,p=!0;for(r=[],o=0;o<12;o++)r.push('<option value="'+(n===a?o-e:12+o-e)+'"'+(o===i?" selected":"")+(u&&o<d.minMonth||f&&o>d.maxMonth?"disabled":"")+">"+d.i18n.months[o]+"</option>");for(h='<div class="pika-label">'+d.i18n.months[i]+'<select class="pika-select pika-select-month" tabindex="-1">'+r.join("")+"</select></div>",c(d.yearRange)?(o=d.yearRange[0],s=d.yearRange[1]+1):(o=n-d.yearRange,s=1+n+d.yearRange),r=[];o<s&&o<=d.maxYear;o++)o>=d.minYear&&r.push('<option value="'+o+'"'+(o===n?" selected":"")+">"+o+"</option>");return l='<div class="pika-label">'+n+d.yearSuffix+'<select class="pika-select pika-select-year" tabindex="-1">'+r.join("")+"</select></div>",g+=d.showMonthAfterYear?l+h:h+l,u&&(0===i||d.minMonth>=i)&&(m=!1),f&&(11===i||d.maxMonth<=i)&&(p=!1),0===e&&(g+='<button class="pika-prev'+(m?"":" is-disabled")+'" type="button">'+d.i18n.previousMonth+"</button>"),e===t._o.numberOfMonths-1&&(g+='<button class="pika-next'+(p?"":" is-disabled")+'" type="button">'+d.i18n.nextMonth+"</button>"),g+="</div>"},T=function(t,e){return'<table cellpadding="0" cellspacing="0" class="pika-table">'+N(t)+x(e)+"</table>"},E=function(s){var r=this,h=r.config(s);r._onMouseDown=function(t){if(r._v){t=t||window.event;var e=t.target||t.srcElement;if(e)if(l(e,"is-disabled")||(l(e,"pika-button")&&!l(e,"is-empty")?(r.setDate(new Date(e.getAttribute("data-pika-year"),e.getAttribute("data-pika-month"),e.getAttribute("data-pika-day"))),h.bound&&a(function(){r.hide(),h.field&&h.field.blur()},100)):l(e,"pika-prev")?r.prevMonth():l(e,"pika-next")&&r.nextMonth()),l(e,"pika-select"))r._c=!0;else{if(!t.preventDefault)return t.returnValue=!1,!1;t.preventDefault()}}},r._onChange=function(t){t=t||window.event;var e=t.target||t.srcElement;e&&(l(e,"pika-select-month")?r.gotoMonth(e.value):l(e,"pika-select-year")&&r.gotoYear(e.value))},r._onInputChange=function(n){var i;n.firedBy!==r&&(e?(i=t(h.field.value,h.format),i=i&&i.isValid()?i.toDate():null):i=new Date(Date.parse(h.field.value)),f(i)&&r.setDate(i),r._v||r.show())},r._onInputFocus=function(){r.show()},r._onInputClick=function(){r.show()},r._onInputBlur=function(){var t=i.activeElement;do if(l(t,"pika-single"))return;while(t=t.parentNode);r._c||(r._b=a(function(){r.hide()},50)),r._c=!1},r._onClick=function(t){t=t||window.event;var e=t.target||t.srcElement,i=e;if(e){!n&&l(e,"pika-select")&&(e.onchange||(e.setAttribute("onchange","return;"),o(e,"change",r._onChange)));do if(l(i,"pika-single")||i===h.trigger)return;while(i=i.parentNode);r._v&&e!==h.trigger&&i!==h.trigger&&r.hide()}},r.el=i.createElement("div"),r.el.className="pika-single"+(h.isRTL?" is-rtl":"")+(h.theme?" "+h.theme:""),o(r.el,"mousedown",r._onMouseDown,!0),o(r.el,"touchend",r._onMouseDown,!0),o(r.el,"change",r._onChange),h.field&&(h.container?h.container.appendChild(r.el):h.bound?i.body.appendChild(r.el):h.field.parentNode.insertBefore(r.el,h.field.nextSibling),o(h.field,"change",r._onInputChange),h.defaultDate||(e&&h.field.value?h.defaultDate=t(h.field.value,h.format).toDate():h.defaultDate=new Date(Date.parse(h.field.value)),h.setDefaultDate=!0));var d=h.defaultDate;f(d)?h.setDefaultDate?r.setDate(d,!0):r.gotoDate(d):r.gotoDate(new Date),h.bound?(this.hide(),r.el.className+=" is-bound",o(h.trigger,"click",r._onInputClick),o(h.trigger,"focus",r._onInputFocus),o(h.trigger,"blur",r._onInputBlur)):this.show()};return E.prototype={config:function(t){this._o||(this._o=D({},b,!0));var e=D(this._o,t,!0);e.isRTL=!!e.isRTL,e.field=e.field&&e.field.nodeName?e.field:null,e.theme="string"==typeof e.theme&&e.theme?e.theme:null,e.bound=!!(void 0!==e.bound?e.field&&e.bound:e.field),e.trigger=e.trigger&&e.trigger.nodeName?e.trigger:e.field,e.disableWeekends=!!e.disableWeekends,e.disableDayFn="function"==typeof e.disableDayFn?e.disableDayFn:null;var n=parseInt(e.numberOfMonths,10)||1;if(e.numberOfMonths=n>4?4:n,f(e.minDate)||(e.minDate=!1),f(e.maxDate)||(e.maxDate=!1),e.minDate&&e.maxDate&&e.maxDate<e.minDate&&(e.maxDate=e.minDate=!1),e.minDate&&this.setMinDate(e.minDate),e.maxDate&&this.setMaxDate(e.maxDate),c(e.yearRange)){var i=(new Date).getFullYear()-10;e.yearRange[0]=parseInt(e.yearRange[0],10)||i,e.yearRange[1]=parseInt(e.yearRange[1],10)||i}else e.yearRange=Math.abs(parseInt(e.yearRange,10))||b.yearRange,e.yearRange>100&&(e.yearRange=100);return e},toString:function(n){return f(this._d)?e?t(this._d).format(n||this._o.format):this._d.toDateString():""},getMoment:function(){return e?t(this._d):null},setMoment:function(n,i){e&&t.isMoment(n)&&this.setDate(n.toDate(),i)},getDate:function(){return f(this._d)?new Date(this._d.getTime()):null},setDate:function(t,e){if(!t)return this._d=null,this._o.field&&(this._o.field.value="",r(this._o.field,"change",{firedBy:this})),this.draw();if("string"==typeof t&&(t=new Date(Date.parse(t))),f(t)){var n=this._o.minDate,i=this._o.maxDate;f(n)&&t<n?t=n:f(i)&&t>i&&(t=i),this._d=new Date(t.getTime()),y(this._d),this.gotoDate(this._d),this._o.field&&(this._o.field.value=this.toString(),r(this._o.field,"change",{firedBy:this})),e||"function"!=typeof this._o.onSelect||this._o.onSelect.call(this,this.getDate())}},gotoDate:function(t){var e=!0;if(f(t)){if(this.calendars){var n=new Date(this.calendars[0].year,this.calendars[0].month,1),i=new Date(this.calendars[this.calendars.length-1].year,this.calendars[this.calendars.length-1].month,1),a=t.getTime();i.setMonth(i.getMonth()+1),i.setDate(i.getDate()-1),e=a<n.getTime()||i.getTime()<a}e&&(this.calendars=[{month:t.getMonth(),year:t.getFullYear()}],"right"===this._o.mainCalendar&&(this.calendars[0].month+=1-this._o.numberOfMonths)),this.adjustCalendars()}},adjustCalendars:function(){this.calendars[0]=v(this.calendars[0]);for(var t=1;t<this._o.numberOfMonths;t++)this.calendars[t]=v({month:this.calendars[0].month+t,year:this.calendars[0].year});this.draw()},gotoToday:function(){this.gotoDate(new Date)},gotoMonth:function(t){isNaN(t)||(this.calendars[0].month=parseInt(t,10),this.adjustCalendars())},nextMonth:function(){this.calendars[0].month++,this.adjustCalendars()},prevMonth:function(){this.calendars[0].month--,this.adjustCalendars()},gotoYear:function(t){isNaN(t)||(this.calendars[0].year=parseInt(t,10),this.adjustCalendars())},setMinDate:function(t){y(t),this._o.minDate=t,this._o.minYear=t.getFullYear(),this._o.minMonth=t.getMonth(),this.draw()},setMaxDate:function(t){y(t),this._o.maxDate=t,this._o.maxYear=t.getFullYear(),this._o.maxMonth=t.getMonth(),this.draw()},setStartRange:function(t){this._o.startRange=t},setEndRange:function(t){this._o.endRange=t},draw:function(t){if(this._v||t){var e=this._o,n=e.minYear,i=e.maxYear,o=e.minMonth,s=e.maxMonth,r="";this._y<=n&&(this._y=n,!isNaN(o)&&this._m<o&&(this._m=o)),this._y>=i&&(this._y=i,!isNaN(s)&&this._m>s&&(this._m=s));for(var h=0;h<e.numberOfMonths;h++)r+='<div class="pika-lendar">'+C(this,h,this.calendars[h].year,this.calendars[h].month,this.calendars[0].year)+this.render(this.calendars[h].year,this.calendars[h].month)+"</div>";if(this.el.innerHTML=r,e.bound&&"hidden"!==e.field.type&&a(function(){e.trigger.focus()},1),"function"==typeof this._o.onDraw){var l=this;a(function(){l._o.onDraw.call(l)},0)}}},adjustPosition:function(){var t,e,n,a,o,s,r,h,l,d;if(!this._o.container){if(this.el.style.position="absolute",t=this._o.trigger,e=t,n=this.el.offsetWidth,a=this.el.offsetHeight,o=window.innerWidth||i.documentElement.clientWidth,s=window.innerHeight||i.documentElement.clientHeight,r=window.pageYOffset||i.body.scrollTop||i.documentElement.scrollTop,"function"==typeof t.getBoundingClientRect)d=t.getBoundingClientRect(),h=d.left+window.pageXOffset,l=d.bottom+window.pageYOffset;else for(h=e.offsetLeft,l=e.offsetTop+e.offsetHeight;e=e.offsetParent;)h+=e.offsetLeft,l+=e.offsetTop;(this._o.reposition&&h+n>o||this._o.position.indexOf("right")>-1&&h-n+t.offsetWidth>0)&&(h=h-n+t.offsetWidth),(this._o.reposition&&l+a>s+r||this._o.position.indexOf("top")>-1&&l-a-t.offsetHeight>0)&&(l=l-a-t.offsetHeight),this.el.style.left=h+"px",this.el.style.top=l+"px"}},render:function(t,e){var n=this._o,i=new Date,a=p(t,e),o=new Date(t,e,1).getDay(),s=[],r=[];y(i),n.firstDay>0&&(o-=n.firstDay,o<0&&(o+=7));for(var h=a+o,l=h;l>7;)l-=7;h+=7-l;for(var d=0,u=0;d<h;d++){var c=new Date(t,e,1+(d-o)),m=!!f(this._d)&&_(c,this._d),D=_(c,i),v=d<o||d>=a+o,b=n.startRange&&_(n.startRange,c),w=n.endRange&&_(n.endRange,c),x=n.startRange&&n.endRange&&n.startRange<c&&c<n.endRange,N=n.minDate&&c<n.minDate||n.maxDate&&c>n.maxDate||n.disableWeekends&&g(c)||n.disableDayFn&&n.disableDayFn(c),C={day:1+(d-o),month:e,year:t,isSelected:m,isToday:D,isDisabled:N,isEmpty:v,isStartRange:b,isEndRange:w,isInRange:x};r.push(M(C)),7===++u&&(n.showWeekNumber&&r.unshift(k(d-o,e,t)),s.push(R(r,n.isRTL)),r=[],u=0)}return T(n,s)},isVisible:function(){return this._v},show:function(){this._v||(u(this.el,"is-hidden"),this._v=!0,this.draw(),this._o.bound&&(o(i,"click",this._onClick),this.adjustPosition()),"function"==typeof this._o.onOpen&&this._o.onOpen.call(this))},hide:function(){var t=this._v;t!==!1&&(this._o.bound&&s(i,"click",this._onClick),this.el.style.position="static",this.el.style.left="auto",this.el.style.top="auto",d(this.el,"is-hidden"),this._v=!1,void 0!==t&&"function"==typeof this._o.onClose&&this._o.onClose.call(this))},destroy:function(){this.hide(),s(this.el,"mousedown",this._onMouseDown,!0),s(this.el,"touchend",this._onMouseDown,!0),s(this.el,"change",this._onChange),this._o.field&&(s(this._o.field,"change",this._onInputChange),this._o.bound&&(s(this._o.trigger,"click",this._onInputClick),s(this._o.trigger,"focus",this._onInputFocus),s(this._o.trigger,"blur",this._onInputBlur))),this.el.parentNode&&this.el.parentNode.removeChild(this.el)}},E})</script><style>@media all{@charset "UTF-8";/*! * Pikaday * Copyright © 2014 David Bushell | BSD & MIT license | http://dbushell.com/ - */.pika-single{z-index:9999;display:block;position:relative;color:#333;background:#fff;border:1px solid #ccc;border-bottom-color:#bbb;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}.pika-single:after,.pika-single:before{content:" ";display:table}.pika-single:after{clear:both}.pika-single.is-hidden{display:none}.pika-single.is-bound{position:absolute;box-shadow:0 5px 15px -5px rgba(0,0,0,.5)}.pika-lendar{float:left;width:240px;margin:8px}.pika-title{position:relative;text-align:center}.pika-label{display:inline-block;position:relative;z-index:9999;overflow:hidden;margin:0;padding:5px 3px;font-size:14px;line-height:20px;font-weight:700;background-color:#fff}.pika-title select{cursor:pointer;position:absolute;z-index:9998;margin:0;left:0;top:5px;filter:alpha(opacity=0);opacity:0}.pika-next,.pika-prev{display:block;cursor:pointer;position:relative;outline:0;border:0;padding:0;width:20px;height:30px;text-indent:20px;white-space:nowrap;overflow:hidden;background-color:transparent;background-position:center center;background-repeat:no-repeat;background-size:75% 75%;opacity:.5}.pika-next:hover,.pika-prev:hover{opacity:1}.is-rtl .pika-next,.pika-prev{float:left;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAUklEQVR42u3VMQoAIBADQf8Pgj+OD9hG2CtONJB2ymQkKe0HbwAP0xucDiQWARITIDEBEnMgMQ8S8+AqBIl6kKgHiXqQqAeJepBo/z38J/U0uAHlaBkBl9I4GwAAAABJRU5ErkJggg==)}.is-rtl .pika-prev,.pika-next{float:right;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAU0lEQVR42u3VOwoAMAgE0dwfAnNjU26bYkBCFGwfiL9VVWoO+BJ4Gf3gtsEKKoFBNTCoCAYVwaAiGNQGMUHMkjGbgjk2mIONuXo0nC8XnCf1JXgArVIZAQh5TKYAAAAASUVORK5CYII=)}.pika-next.is-disabled,.pika-prev.is-disabled{cursor:default;opacity:.2}.pika-select{display:inline-block}.pika-table{width:100%;border-collapse:collapse;border-spacing:0;border:0}.pika-table td,.pika-table th{width:14.285714285714286%;padding:0}.pika-table th{color:#999;font-size:12px;line-height:25px;font-weight:700;text-align:center}.pika-button{cursor:pointer;display:block;box-sizing:border-box;-moz-box-sizing:border-box;outline:0;border:0;margin:0;width:100%;padding:5px;color:#666;font-size:12px;line-height:15px;text-align:right;background:#f5f5f5}.pika-week{font-size:11px;color:#999}.is-today .pika-button{color:#3af;font-weight:700}.is-selected .pika-button{color:#fff;font-weight:700;background:#3af;box-shadow:inset 0 1px 3px #178fe5;border-radius:3px}.is-inrange .pika-button{background:#D5E9F7}.is-startrange .pika-button{color:#fff;background:#6CB31D;box-shadow:none;border-radius:3px}.is-endrange .pika-button{color:#fff;background:#3af;box-shadow:none;border-radius:3px}.is-disabled .pika-button{pointer-events:none;cursor:default;color:#999;opacity:.3}.pika-button:hover{color:#fff;background:#ff8000;box-shadow:none;border-radius:3px}.pika-table abbr{border-bottom:none;cursor:help}}</style><dom-module id="domain-icon" assetpath="../../src/components/"><template><iron-icon icon="[[computeIcon(domain, state)]]"></iron-icon></template></dom-module><script>Polymer({is:"domain-icon",properties:{domain:{type:String,value:""},state:{type:String,value:""}},computeIcon:function(n,i){return window.hassUtil.domainIcon(n,i)}})</script><dom-module id="ha-logbook" assetpath="./"><template><style is="custom-style" include="iron-flex"></style><style>:host{display:block;padding:16px}.entry{@apply(--paper-font-body1);display:block;line-height:2em}.time{width:55px;font-size:.8em;color:var(--secondary-text-color)}domain-icon{margin:0 8px 0 16px;color:var(--primary-text-color)}.message{color:var(--primary-text-color)}a{color:var(--primary-color)}</style><template is="dom-if" if="[[!entries.length]]">No logbook entries found.</template><template is="dom-repeat" items="[[entries]]"><div class="horizontal layout entry"><div class="time">[[formatTime(item.when)]]</div><domain-icon domain="[[item.domain]]" class="icon"></domain-icon><div class="message" flex=""><template is="dom-if" if="[[!item.entityId]]"><span class="name">[[item.name]]</span></template><template is="dom-if" if="[[item.entityId]]"><a href="#" on-tap="entityClicked" class="name">[[item.name]]</a></template><span></span> <span>[[item.message]]</span></div></div></template></template></dom-module><script>Polymer({is:"ha-logbook",properties:{hass:{type:Object},entries:{type:Array,value:[]}},formatTime:function(e){return window.hassUtil.formatTime(e)},entityClicked:function(e){e.preventDefault(),this.hass.moreInfoActions.selectEntity(e.model.item.entityId)}})</script></div><dom-module id="ha-panel-logbook"><template><style include="ha-style">.selected-date-container{padding:0 16px}paper-input{max-width:200px}[hidden]{display:none!important}</style><app-header-layout has-scrolling-region=""><app-header fixed=""><app-toolbar><ha-menu-button narrow="[[narrow]]" show-menu="[[showMenu]]"></ha-menu-button><div main-title="">Logbook</div><paper-icon-button icon="mdi:refresh" on-tap="handleRefresh"></paper-icon-button></app-toolbar></app-header><div><div class="selected-date-container"><paper-input label="Showing entries for" id="datePicker" value="[[selectedDateStr]]" on-focus="datepickerFocus"></paper-input><paper-spinner active="[[isLoading]]" hidden$="[[!isLoading]]" alt="Loading logbook entries"></paper-spinner></div><ha-logbook hass="[[hass]]" entries="[[entries]]" hidden$="[[isLoading]]"></ha-logbook></div></app-header-layout></template></dom-module><script>Polymer({is:"ha-panel-logbook",behaviors:[window.hassBehavior],properties:{hass:{type:Object},narrow:{type:Boolean,value:!1},showMenu:{type:Boolean,value:!1},selectedDate:{type:String,bindNuclear:function(e){return e.logbookGetters.currentDate}},selectedDateStr:{type:String,value:null,bindNuclear:function(e){return[e.logbookGetters.currentDate,function(e){var t=new Date(e);return window.hassUtil.formatDate(t)}]}},isLoading:{type:Boolean,bindNuclear:function(e){return e.logbookGetters.isLoadingEntries}},isStale:{type:Boolean,bindNuclear:function(e){return e.logbookGetters.isCurrentStale},observer:"isStaleChanged"},entries:{type:Array,bindNuclear:function(e){return[e.logbookGetters.currentEntries,function(e){return e.reverse().toArray()}]}},datePicker:{type:Object}},isStaleChanged:function(e){e&&this.async(function(){this.hass.logbookActions.fetchDate(this.selectedDate)}.bind(this),1)},handleRefresh:function(){this.hass.logbookActions.fetchDate(this.selectedDate)},datepickerFocus:function(){this.datePicker.adjustPosition()},attached:function(){this.datePicker=new window.Pikaday({field:document.createElement("input"),trigger:this.$.datePicker.inputElement,onSelect:this.hass.logbookActions.changeCurrentDate}),this.datePicker.setDate(this.selectedDate,!0)},detached:function(){this.datePicker.destroy()}})</script></body></html> \ No newline at end of file + */.pika-single{z-index:9999;display:block;position:relative;color:#333;background:#fff;border:1px solid #ccc;border-bottom-color:#bbb;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}.pika-single:after,.pika-single:before{content:" ";display:table}.pika-single:after{clear:both}.pika-single.is-hidden{display:none}.pika-single.is-bound{position:absolute;box-shadow:0 5px 15px -5px rgba(0,0,0,.5)}.pika-lendar{float:left;width:240px;margin:8px}.pika-title{position:relative;text-align:center}.pika-label{display:inline-block;position:relative;z-index:9999;overflow:hidden;margin:0;padding:5px 3px;font-size:14px;line-height:20px;font-weight:700;background-color:#fff}.pika-title select{cursor:pointer;position:absolute;z-index:9998;margin:0;left:0;top:5px;filter:alpha(opacity=0);opacity:0}.pika-next,.pika-prev{display:block;cursor:pointer;position:relative;outline:0;border:0;padding:0;width:20px;height:30px;text-indent:20px;white-space:nowrap;overflow:hidden;background-color:transparent;background-position:center center;background-repeat:no-repeat;background-size:75% 75%;opacity:.5}.pika-next:hover,.pika-prev:hover{opacity:1}.is-rtl .pika-next,.pika-prev{float:left;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAUklEQVR42u3VMQoAIBADQf8Pgj+OD9hG2CtONJB2ymQkKe0HbwAP0xucDiQWARITIDEBEnMgMQ8S8+AqBIl6kKgHiXqQqAeJepBo/z38J/U0uAHlaBkBl9I4GwAAAABJRU5ErkJggg==)}.is-rtl .pika-prev,.pika-next{float:right;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAU0lEQVR42u3VOwoAMAgE0dwfAnNjU26bYkBCFGwfiL9VVWoO+BJ4Gf3gtsEKKoFBNTCoCAYVwaAiGNQGMUHMkjGbgjk2mIONuXo0nC8XnCf1JXgArVIZAQh5TKYAAAAASUVORK5CYII=)}.pika-next.is-disabled,.pika-prev.is-disabled{cursor:default;opacity:.2}.pika-select{display:inline-block}.pika-table{width:100%;border-collapse:collapse;border-spacing:0;border:0}.pika-table td,.pika-table th{width:14.285714285714286%;padding:0}.pika-table th{color:#999;font-size:12px;line-height:25px;font-weight:700;text-align:center}.pika-button{cursor:pointer;display:block;box-sizing:border-box;-moz-box-sizing:border-box;outline:0;border:0;margin:0;width:100%;padding:5px;color:#666;font-size:12px;line-height:15px;text-align:right;background:#f5f5f5}.pika-week{font-size:11px;color:#999}.is-today .pika-button{color:#3af;font-weight:700}.is-selected .pika-button{color:#fff;font-weight:700;background:#3af;box-shadow:inset 0 1px 3px #178fe5;border-radius:3px}.is-inrange .pika-button{background:#D5E9F7}.is-startrange .pika-button{color:#fff;background:#6CB31D;box-shadow:none;border-radius:3px}.is-endrange .pika-button{color:#fff;background:#3af;box-shadow:none;border-radius:3px}.is-disabled .pika-button{pointer-events:none;cursor:default;color:#999;opacity:.3}.pika-button:hover{color:#fff;background:#ff8000;box-shadow:none;border-radius:3px}.pika-table abbr{border-bottom:none;cursor:help}}</style><dom-module id="domain-icon" assetpath="../../src/components/"><template><iron-icon icon="[[computeIcon(domain, state)]]"></iron-icon></template></dom-module><script>Polymer({is:"domain-icon",properties:{domain:{type:String,value:""},state:{type:String,value:""}},computeIcon:function(n,i){return window.hassUtil.domainIcon(n,i)}})</script><dom-module id="ha-logbook" assetpath="./"><template><style is="custom-style" include="iron-flex"></style><style>:host{display:block}.entry{@apply(--paper-font-body1);display:block;line-height:2em}.time{width:55px;font-size:.8em;color:var(--secondary-text-color)}domain-icon{margin:0 8px 0 16px;color:var(--primary-text-color)}.message{color:var(--primary-text-color)}a{color:var(--primary-color)}</style><template is="dom-if" if="[[!entries.length]]">No logbook entries found.</template><template is="dom-repeat" items="[[entries]]"><div class="horizontal layout entry"><div class="time">[[formatTime(item.when)]]</div><domain-icon domain="[[item.domain]]" class="icon"></domain-icon><div class="message" flex=""><template is="dom-if" if="[[!item.entityId]]"><span class="name">[[item.name]]</span></template><template is="dom-if" if="[[item.entityId]]"><a href="#" on-tap="entityClicked" class="name">[[item.name]]</a></template><span></span> <span>[[item.message]]</span></div></div></template></template></dom-module><script>Polymer({is:"ha-logbook",properties:{hass:{type:Object},entries:{type:Array,value:[]}},formatTime:function(e){return window.hassUtil.formatTime(e)},entityClicked:function(e){e.preventDefault(),this.hass.moreInfoActions.selectEntity(e.model.item.entityId)}})</script></div><dom-module id="ha-panel-logbook"><template><style include="ha-style">.content{padding:16px}paper-input{max-width:200px}[hidden]{display:none!important}</style><app-header-layout has-scrolling-region=""><app-header fixed=""><app-toolbar><ha-menu-button narrow="[[narrow]]" show-menu="[[showMenu]]"></ha-menu-button><div main-title="">Logbook</div><paper-icon-button icon="mdi:refresh" on-tap="handleRefresh"></paper-icon-button></app-toolbar></app-header><div class="flex content"><div class="selected-date-container"><paper-input label="Showing entries for" id="datePicker" value="[[selectedDateStr]]" on-focus="datepickerFocus"></paper-input><paper-spinner active="[[isLoading]]" hidden$="[[!isLoading]]" alt="Loading logbook entries"></paper-spinner></div><ha-logbook hass="[[hass]]" entries="[[entries]]" hidden$="[[isLoading]]"></ha-logbook></div></app-header-layout></template></dom-module><script>Polymer({is:"ha-panel-logbook",behaviors:[window.hassBehavior],properties:{hass:{type:Object},narrow:{type:Boolean,value:!1},showMenu:{type:Boolean,value:!1},selectedDate:{type:String,bindNuclear:function(e){return e.logbookGetters.currentDate}},selectedDateStr:{type:String,value:null,bindNuclear:function(e){return[e.logbookGetters.currentDate,function(e){var t=new Date(e);return window.hassUtil.formatDate(t)}]}},isLoading:{type:Boolean,bindNuclear:function(e){return e.logbookGetters.isLoadingEntries}},isStale:{type:Boolean,bindNuclear:function(e){return e.logbookGetters.isCurrentStale},observer:"isStaleChanged"},entries:{type:Array,bindNuclear:function(e){return[e.logbookGetters.currentEntries,function(e){return e.reverse().toArray()}]}},datePicker:{type:Object}},isStaleChanged:function(e){e&&this.async(function(){this.hass.logbookActions.fetchDate(this.selectedDate)}.bind(this),1)},handleRefresh:function(){this.hass.logbookActions.fetchDate(this.selectedDate)},datepickerFocus:function(){this.datePicker.adjustPosition()},attached:function(){this.datePicker=new window.Pikaday({field:document.createElement("input"),trigger:this.$.datePicker.inputElement,onSelect:this.hass.logbookActions.changeCurrentDate}),this.datePicker.setDate(this.selectedDate,!0)},detached:function(){this.datePicker.destroy()}})</script></body></html> \ 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 ebdf2fc7e724247381ca825a206fe8da955ae30b..ebe5f5edee4ad205871b147f08e1adb0e417b40b 100644 GIT binary patch delta 1066 zcmV+_1l9YRIhr{KABzYGq}6h<2Z9)Xdb+oAK|=Xr`LAF$OBPnAGYf!E9qs{eFS=(p zTxrculj+K3bgIJ4?rtqfcK66ss`hn|1MY%^_#S1x=x`6no9vY)r=@bT2CM_nt2{0J zoxm{5AuDL~cc-K%AXQj?4=~sWAsb6pDNb`1qlD-fm^(&A-9lc03d!Ss)XwvN%#boO zWTP=gn{;(mT|+6-P(TYU1!9(cxxQ<MQgN2kZ+Hlj7$5-%N_>z-9S8+r4lgdmogscb z0P(svF-gIK#Np9E<FX;1aa;~4iZFKhk|vsrurSr9Hlk#>X`q(zpCNgOX?zTz8@$?S z#AgVZM)`(G8VKq+6c&(T1Q<Sl$iWK#I{Ltfa{_I@m<Ct^3ueA4+WAHbiOdJb4r&8S zO8A!{N)lc&K_i#*S$=AM>L*;5<^gIR3%!YSN#X|?R*uvdS<8R+LHenSOYl>bGE{Dg z-0P$?)xkRpHEz}VleL#9#MTjFa;I5NPSbIAz`^kj8Ri)$92s5@%pyF0xYWf}cZa2- zHk=}Gmn0=)Huys2`2bcp!=WoTNR}!?Lr=02zK!C>7kHZ6j#{k3f^>BuR-Ko%y^t+B z#oxOLQdao~aFiW<SrRZwn}o@C#Hk#N1hzflyRD`UYK-YEiONcrWyvVWhXbH^O47M{ zw>J&)Ji9@y7EfrCxX;ahfv}ptj|R^oFxGnu6Xg~wUl=uqzYC^G*2?(<Z`6Py1WzLh z%lmOoinubFI7p*}yqDE5+FEa@t4(IRns3crpqDVDK<chbWuhHe@R3e=+-sJkqNohM zv*Vi|VD7+R&Clkh$VH&@Thvu3%e#QUDT!L%n?z1xSmdvt@E$XN-h=O!YO})u)#$~H zpXeImjS}u_ir=#U^$F1lh53i@ae70LFyEBrW^|~AlGv5nSEi5p#DfBUBR<)+9w+qS z_0fe|NK~aeT2tDe_DgjmbVei&u4$GR-i78&4rT4-_q>--Z&`T=3Pgfbx-Wd4MydJz z0Gf2`xf;IVc|I3^Tb>&{A93XrUJwRJdEr8~iyKOaXjR7x2sfpH;<rN{9OdGnQ5+p! zob^<%^_4e?H+yJtOlq&t!<RyDFzII*P~tfey2Vj{fRuy$pAjF4S#xA7CmR(cheeEM zO8nwjBr-P#v;QTF<t&_y6qc{QyDa0QSb~?82dV36$qGq-YCRUpBa)z4q@lHTRD}^y zlBfdWn6NOeuAb`325Br#Se$@4Jv<iF{jc|bM(;Fy-WtY=2Wv;1D@Xilna+T<UR;Z% z+RCFHOa9!By28?Y>5F??JVuo7ZE%eL&?(^%>h-wt2T<<ifH-|S(o9<2rmIk@%eHGg k!ZScTdi?GgOkH_AX*JRp@q>Na{0IL22g;H+%jZu301sFHkpKVy delta 1066 zcmV+_1l9YRIhr{KABzYGUAk_u2Z9)XM!Kh5SnnyS2Z$?QEdLeEX34_pbY=lCt;5{` zZcO*=hF`5YZ8BZCj80X|+1;&W%<dkUN<F_0a==}X5MQdy7ai^nd6T`;gtk;3*MLO< zx|pY>^Ai|mIiv`U{_d0%1>_CO?*RrIA!K98H^p|&Zxk0D1E<HRwOhz5&?k9+_K&K1 zo*7brhHNy(XrQjHw`(XxP6}wDr9jNGFIRr;geuN*`VCJ+5(6Xv5sDA8r~{z@%;Cj_ zxIo133LswhCMGGElQ>BlXk0eLGmgsvMG?j>-`GU^5$2}))JBvHHw{!d{+lEZF^!J_ zbc2gKjra^9?I>S2NdrMWhr$AXQj7q@2RT^bUq>GpaZaG^7t;W<V8P5cMLXYBA(8pu z*g<VzNeTZlL`lL+CTQexKFd$dY5j!%(%eDKeW7cS{z?2g!^)8wBWw9@KuD)`aS2YV zQijTBk$XLsraE|mp~kIRf3o&Qh1f?zOzt$x$!R*y4mdboD8r=Vgd@X$yMkGSr<l69 z>b|j5)P{!y?vkWr%m&A(+#tXT&p32d!qb6u1?iNhipw%h<-TPlydA}TG4MUN9krH) z_3G+EEJ`nHTP0g`ia&=Fq^$B7;5s|_E+t@+RtoIsh(kLV3#@&@H)Bm5)ELuS5|x!K z%aT!$4+k)ZDM{z*)!#IK$n)$5^;|rmmEtxy2f}Lpx*9x-xLNNljF#K5e4o@D{w~-k znJwoJ{80mn2tAD`tp3M2DdNhA;vkI@@?KWMXluQpt~QzNYQCJ7nisi8L}p19O2y!N zJihq>rU|^%oNR82tOPp0MMZ_OycGyck*MVjN@N-aNd6)U?=j<lJ@~$<HW3_9jb6<7 z*{&hpE#Z!)_&p0yc@Uk@jeiISr#A!%^G#W9hK6b=iCyV@W%sB$JR;yX;*(wLK|&v1 zA6;mGL{<8tHU0c)r&PB<XGG%Qnr3<7U1*-<P}W|4&vgk+mX(K~D<nvz@4^>rlt$kV zph>r$wc)#-=X0@t`MJUE5m!#(1!0h$7cS(zxV40cR&~69a8p7kensTLQ7#@D#nIu# zsZaHSUwNl^vwIc?ruGWmdnxn=lYW)~C7u(ZTO9QV$T!IU8S#;rHAl8`vQa^DSk8E+ z#4ip=B6D*j`(LtH&cfM9VfiAw%Q8NSC3snRkh-3htdOLC)&rqDED4H58d__IRu~Q? zi7Fb72@B)u5~{9jki+7H#aWos!vjLy)q4MD^iIR)tzoQquy)wFa>VbK=?qxw#kE+f ztvuwh<PYzt%Ph^;zqq%>14a1;2gmpioe~bAUX&|;3guo7h;z6j&7{@6x(cPbcDu$S kJPpJ{$nVY>)RhO7RwH*2Ki#*@f9mgl0O_`3`teTy0LWDYLjV8( diff --git a/homeassistant/components/frontend/www_static/service_worker.js b/homeassistant/components/frontend/www_static/service_worker.js index aebec9ec51c..48c21a590a9 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=[["/","805b532af8146f0f2c160ff5fcb0f623"],["/frontend/panels/dev-event-c2d5ec676be98d4474d19f94d0262c1e.html","6c55fc819751923ab00c62ae3fbb7222"],["/frontend/panels/dev-info-a9c07bf281fe9791fb15827ec1286825.html","931f9327e368db710fcdf5f7202f2588"],["/frontend/panels/dev-service-ac74f7ce66fd7136d25c914ea12f4351.html","7018929ba2aba240fc86e16d33201490"],["/frontend/panels/dev-state-65e5f791cc467561719bf591f1386054.html","78158786a6597ef86c3fd6f4985cde92"],["/frontend/panels/dev-template-7d744ab7f7c08b6d6ad42069989de400.html","8a6ee994b1cdb45b081299b8609915ed"],["/frontend/panels/map-3b0ca63286cbe80f27bd36dbc2434e89.html","d22eee1c33886ce901851ccd35cb43ed"],["/static/core-ad1ebcd0614c98a390d982087a7ca75c.js","e900a4b42404d2a5a1c0497e7c53c975"],["/static/frontend-d6132d3aaac78e1a91efe7bc130b6f45.html","dff6a208dcb092b248333c28e7f665db"],["/static/mdi-48fcee544a61b668451faf2b7295df70.html","08069e54df1fd92bbff70299605d8585"],["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","89313f9f2126ddea722150f8154aca03"]],cacheName="sw-precache-v2--"+(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()},createCacheKey=function(e,t,n,a){var c=new URL(e);return a&&c.toString().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))return e.add(new Request(n,{credentials:"same-origin"}))}))})}).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);var a="index.html";!t&&a&&(n=addDirectoryIndex(n,a),t=urlsToCacheKeys.has(n));var c="/";!t&&c&&"navigate"===e.request.mode&&isPathWhitelisted(["^((?!(static|api|local|service_worker.js|manifest.json)).)*$"],e.request.url)&&(n=new URL(c,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,t&&e.waitUntil(clients.matchAll({type:"window"}).then(function(e){var n,a;for(n=0;n<e.length;n++)if(a=e[n],a.url===t&&"focus"in a)return a.focus();if(clients.openWindow)return clients.openWindow(t)})))}),self.addEventListener("notificationclose",function(e){notificationEventCallback("closed",e)}); \ No newline at end of file +"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=[["/","e7ef237586d3fbf6ba0bdb577923ea38"],["/frontend/panels/dev-event-f19840b9a6a46f57cb064b384e1353f5.html","21cf247351b95fdd451c304e308a726c"],["/frontend/panels/dev-info-3765a371478cc66d677cf6dcc35267c6.html","dd614f2ee5e09a9dfd7f98822a55893d"],["/frontend/panels/dev-service-e32bcd3afdf485417a3e20b4fc760776.html","d7b70007dfb97e8ccbaa79bc2b41a51d"],["/frontend/panels/dev-state-8257d99a38358a150eafdb23fa6727e0.html","3cf24bb7e92c759b35a74cf641ed80cb"],["/frontend/panels/dev-template-cbb251acabd5e7431058ed507b70522b.html","edd6ef67f4ab763f9d3dd7d3aa6f4007"],["/frontend/panels/map-3b0ca63286cbe80f27bd36dbc2434e89.html","d22eee1c33886ce901851ccd35cb43ed"],["/static/core-22d39af274e1d824ca1302e10971f2d8.js","c6305fc1dee07b5bf94de95ffaccacc4"],["/static/frontend-5aef64bf1b94cc197ac45f87e26f57b5.html","9c16019b4341a5862ad905668ac2153b"],["/static/mdi-48fcee544a61b668451faf2b7295df70.html","08069e54df1fd92bbff70299605d8585"],["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","89313f9f2126ddea722150f8154aca03"]],cacheName="sw-precache-v2--"+(self.registration?self.registration.scope:""),ignoreUrlParametersMatching=[/^utm_/],addDirectoryIndex=function(e,t){var a=new URL(e);return"/"===a.pathname.slice(-1)&&(a.pathname+=t),a.toString()},createCacheKey=function(e,t,a,n){var c=new URL(e);return n&&c.toString().match(n)||(c.search+=(c.search?"&":"")+encodeURIComponent(t)+"="+encodeURIComponent(a)),c.toString()},isPathWhitelisted=function(e,t){if(0===e.length)return!0;var a=new URL(t).pathname;return e.some(function(e){return a.match(e)})},stripIgnoredUrlParameters=function(e,t){var a=new URL(e);return a.search=a.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("&"),a.toString()},hashParamName="_sw-precache",urlsToCacheKeys=new Map(precacheConfig.map(function(e){var t=e[0],a=e[1],n=new URL(t,self.location),c=createCacheKey(n,hashParamName,a,!1);return[n.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(a){if(!t.has(a))return e.add(new Request(a,{credentials:"same-origin"}))}))})}).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(a){return Promise.all(a.map(function(a){if(!t.has(a.url))return e.delete(a)}))})}).then(function(){return self.clients.claim()}))}),self.addEventListener("fetch",function(e){if("GET"===e.request.method){var t,a=stripIgnoredUrlParameters(e.request.url,ignoreUrlParametersMatching);t=urlsToCacheKeys.has(a);var n="index.html";!t&&n&&(a=addDirectoryIndex(a,n),t=urlsToCacheKeys.has(a));var c="/";!t&&c&&"navigate"===e.request.mode&&isPathWhitelisted(["^((?!(static|api|local|service_worker.js|manifest.json)).)*$"],e.request.url)&&(a=new URL(c,self.location).toString(),t=urlsToCacheKeys.has(a)),t&&e.respondWith(caches.open(cacheName).then(function(e){return e.match(urlsToCacheKeys.get(a)).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,t&&e.waitUntil(clients.matchAll({type:"window"}).then(function(e){var a,n;for(a=0;a<e.length;a++)if(n=e[a],n.url===t&&"focus"in n)return n.focus();if(clients.openWindow)return clients.openWindow(t)})))}),self.addEventListener("notificationclose",function(e){notificationEventCallback("closed",e)}); \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/service_worker.js.gz b/homeassistant/components/frontend/www_static/service_worker.js.gz index 4b2a6cf9dff98acb2c85aba5dbebaac778fa8ea2..8b501e1db0e7b1479276ffd73b11ec8e8320bafe 100644 GIT binary patch delta 2286 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 Iz?BpL0Ieoi00000 delta 2286 zcmV<K2od*_5|a`KABzYGUAk_O2PS_Dw5rKuvzaz+uE{a^!OePbJV;C^QY9ffZsPyF z52PeZmgMYCXKYIb!FPP`_#WV_S{SsZDWq{GdR0kN)YYH`^F}}8at`WaQ?@R6-y1Ni zrW!!-6>eJB3(OoUck{yDh6P_9f3RxGTkrPts})=i-h;sv+_tr)s!gE_$?bnX&##~| z&v;o1F2B0q8}GX=8hE>E=iAlqynFB51pOCZal`SyT{(eW^9`TfU&kfi+$`Z7Zv7*# z1YfSrj%f$FJBt*QU;zEyyy1t_>GX~G0@C#8^^d%uglcBy!{K_XtSgMfN}9UazAzl_ ziSsoWId`2gUl!xeyqjQd7G-}jmTMav|N8>WyjJJV+c)n&IQ|^Cf~GyU=>DVs?tXWk z)s;akM<38x=iK4TWw~~A{H3ic$A7v)Ax-h$ZtdLp6?g;9z&SIwo-b;3bN<iwZ(avB zbE+9y(Fg5{H-lvZ(q;~7(8X+eap8;|-(g`Ql8AE6NSx|WQ%TZL>qLJ`5$cpi&SxJt z>ZUVGjhDQFvK=e98i9@ZNK%!6OtVx#&Qu&{u_C$7V-?aAWkH7m>PcmSG8xIUgyb~h zA`E3pIYe5Bj8b}9Pf_W5#B&*DLQ_UG<XKL%APJ)xNJ3f4XtGh0M?~ilK8RALL`Fg_ z6*`mAkZPJRc3Mpf%~gLPVZ>z?>r6tLYL$^FRWy+~iGdTU<0v5;O<71-PIJL2$KMzg zu@p$EqKJkh&cg>Z8E#;dCV+P3M9MhLl9Xg57dk=DNW{`GiMM(fdYZA6r%9fHW~q#{ zN_CvGL@LN10M5W-Sz1+@%Ho)d4BZNuNL9*JOv5zKS*{=s!;OC`##4Yij|GuR#EA$Q zp?NOQoIEE9sN<@zt&AcON}fg-3n_qM7G**qbVAZNih<=D4T@3#ATo*=ZiO5%Ob`JT zB~rxEMuP>YkYial7!E~1NEN0emO0~59;%$tkYzlRJWFKorA4_YDde$;F%Ge!JmEx! zF~XI}B$AkNdvbp_4vbVvBB~<JG3E>i&k1PAgd|ZY5aDf7DXmkEIu+JLP6drw6h)FU z$aI<}O6*BrsA3c|Edde)JtZPdS)35fHN`~F6Q#2);32~(;69~^Rw!9$e29=^{1r=B zZ}!G&G`bx(wWv)!e%F1BeyvLt7^AI?5zVD!B8t;A(}aJ-JWpau(Kkgzm_|Pn^|F}F z&01C_5-k|hgbKitjUyd~K#7nM7Am3f&t$y<Rjd|kVH!vTG08$qa7ndHSek?cvJ6uM zQ1;J+y@T1R<jq<d$L!DYTqQzqjh!Ub96JFQOaY4{B6p<~wr`I$zp`IO*mb_)Z?LRp zC?_U)9!7tHAw*~p&w#QJJrp)23CWU^asvEgBNx*s5sGK16|7r;MI(R;ndYg~dk_^1 zK7$sCpi!3#goa;YS>8Z%DQ0VHcobu2Q$!LLCD=i*5Mzp_<WUGI;e1!xHI_rYSk@JG z-*!|M28q3>`Z8eH{vw@g3{t8TaBQq339+>&F_(WlM65si9S6MT3z$0X^=Ly1qboWZ zIcIJQr4AaH6-Xc*!#p`y30her5j&3O7qbd$6ep3lyg`WuDeM(T9z^PyUW|WVnZ@P! zv(J_K4GG!O=go^s!MEw%jA41%l2bLcH2Cq|OXRCbKXxEJA=_5LlAC#j(t{S65Zn>* zhC_e%Zux9#JRb*y`h7=vu6OIp2C(gQW75CiW>1@6`MlRC4>b<>a42^q;lyM~oqIoi zxH4#wY32NEy8ZgZ89Ek*GpJ;(;N!a&&o+T^jd$iuonucb&-3M;xkdXHefc!UP?m@? zsC)Pn+O>lUtj7|sH}+9D*$2*eTTCX~(XJk?7jSf>Tl>~c2fm#amM^+ss=a9bu}Gn` z9+Bzh%agwa9)H~2Ju;g|kFaw=iv#LK_}S}5*^|1y)J3&X)qh9R?&Z&%xAP8zzDzE6 z>csJJSZ+Vmo8)RcG+v>${qgF+01KU&S_AzGKM0n^UF7_($jZ7O^e{iB`zh@5eVZ_g zACV3E7ktNfUw*#zyh$ey>#m#2U)rRq5L2hXITpuJ$A90o41#N3n2(hyO1JZ%4Y0l| zciSjV9}EtUBlos$BQ$v1)Qh5p0M)xsn}**6NW%;F9-6@wFIRxan0pbdx+=ghBMi2J zw&6q{T?^wo_|M8_K;?f&=oETg@UlI3TC{(J<MOPi90aEOIXLO;_=B*uUyJ1@M5Ip! z`+|Q0PJerjxxz5*<Jm`gb7nf};N<_n{lsCfI*NAn5R~@pw*zN?rolab1SnY+mV@w< z7mJ@j)g6!aaY8Gczd!%rbgixF;}`Ttq&0|GDJMIVd-o2y@DLMu6EnRZg+7hC2Fj;c z7D!6{Og4FhCp&HlW_mzduH_E@l(1f!oFZ*?LVx6N=u|i}%xr?}`-qe<93FIi_rm$z zb)P(Pd!qk=C&?eSC6qtbN0ZCzy7>wXQvHtwuL^Bt*)t&)i}%;R;Eb>bNyn1g79;Pq znBA6f(j(v4BX9#PQkVKvnE9X2)1GDS%b!8VgNN^7PQW%BCuZK%*MsLxQ)32wn8Tn` zsecB&MJ)`>oSVTlZwK&giGjjLMLWR6Z_%;9=`&b%798nFcB-pOTZK*KK7LlON>%;) zu^Cvj;ZBFH@pS!5>kMqa>Mb}Q{PO1UKHA8R>nnima#s+iD`L57=SLdHq`yzV;2~SA zZz@__dj4*|I5L#Y>+9D$*CH-bVqr>4+kb~JAKuM$cPkENI}}%V3|n8p*jtzNEsg!K zS1)(BE#5=*zI#K1eZpRU9J+e?2FdB(v4((keDA(TmURp6!E%q<kwqJxHJnGE^;y2t zi`Q+fOWmi~K-b`0W1Fb2on!Z8-CX4J3FZpcTsW!zwi(tY)!CVcS<R92E988u5IdUz zs&sTMS1tCQ0pDai54ttio8TK8Gi<GW>QryG9X@gYTsRQF{ct=O2;AMp;nth{56BPG Ixs?<E0M=tq!~g&Q From b685e6e2b51168c9a8c3dfd4f6a4b53bc464b9d3 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen <paulus.schoutsen@mycase.com> Date: Mon, 9 Jan 2017 01:38:04 +0100 Subject: [PATCH 121/189] Update frontend --- homeassistant/components/frontend/version.py | 2 +- .../frontend/www_static/frontend.html | 2 +- .../frontend/www_static/frontend.html.gz | Bin 131138 -> 131597 bytes .../www_static/home-assistant-polymer | 2 +- .../frontend/www_static/service_worker.js | 2 +- .../frontend/www_static/service_worker.js.gz | Bin 2323 -> 2324 bytes 6 files changed, 4 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/frontend/version.py b/homeassistant/components/frontend/version.py index 3cae814daff..09f6803282b 100644 --- a/homeassistant/components/frontend/version.py +++ b/homeassistant/components/frontend/version.py @@ -2,7 +2,7 @@ FINGERPRINTS = { "core.js": "22d39af274e1d824ca1302e10971f2d8", - "frontend.html": "5aef64bf1b94cc197ac45f87e26f57b5", + "frontend.html": "61e57194179b27563a05282b58dd4f47", "mdi.html": "48fcee544a61b668451faf2b7295df70", "micromarkdown-js.html": "93b5ec4016f0bba585521cf4d18dec1a", "panels/ha-panel-dev-event.html": "f19840b9a6a46f57cb064b384e1353f5", diff --git a/homeassistant/components/frontend/www_static/frontend.html b/homeassistant/components/frontend/www_static/frontend.html index 6811287dabe..f375a93bec7 100644 --- a/homeassistant/components/frontend/www_static/frontend.html +++ b/homeassistant/components/frontend/www_static/frontend.html @@ -2,4 +2,4 @@ },_distributeDirtyRoots:function(){for(var e,t=this.shadyRoot._dirtyRoots,o=0,i=t.length;o<i&&(e=t[o]);o++)e._distributeContent();this.shadyRoot._dirtyRoots=[]},_finishDistribute:function(){if(this._useContent){if(this.shadyRoot._distributionClean=!0,h.hasInsertionPoint(this.shadyRoot))this._composeTree(),d(this.shadyRoot);else if(this.shadyRoot._hasDistributed){var e=this._composeNode(this);this._updateChildNodes(this,e)}else u.Composed.clearChildNodes(this),this.appendChild(this.shadyRoot);this.shadyRoot._hasDistributed||a(this),this.shadyRoot._hasDistributed=!0}},elementMatches:function(e,t){return t=t||this,h.matchesSelector.call(t,e)},_resetDistribution:function(){for(var e=u.Logical.getChildNodes(this),o=0;o<e.length;o++){var i=e[o];i._destinationInsertionPoints&&(i._destinationInsertionPoints=void 0),n(i)&&t(i)}for(var s=this.shadyRoot,r=s._insertionPoints,d=0;d<r.length;d++)r[d]._distributedNodes=[]},_collectPool:function(){for(var e=[],t=u.Logical.getChildNodes(this),o=0;o<t.length;o++){var i=t[o];n(i)?e.push.apply(e,i._distributedNodes):e.push(i)}return e},_distributePool:function(e,t){for(var i,n=e._insertionPoints,s=0,r=n.length;s<r&&(i=n[s]);s++)this._distributeInsertionPoint(i,t),o(i,this)},_distributeInsertionPoint:function(t,o){for(var i,n=!1,s=0,r=o.length;s<r;s++)i=o[s],i&&this._matchesContentSelect(i,t)&&(e(i,t),o[s]=void 0,n=!0);if(!n)for(var d=u.Logical.getChildNodes(t),a=0;a<d.length;a++)e(d[a],t)},_composeTree:function(){this._updateChildNodes(this,this._composeNode(this));for(var e,t,o=this.shadyRoot._insertionPoints,i=0,n=o.length;i<n&&(e=o[i]);i++)t=u.Logical.getParentNode(e),t._useContent||t===this||t===this.shadyRoot||this._updateChildNodes(t,this._composeNode(t))},_composeNode:function(e){for(var t=[],o=u.Logical.getChildNodes(e.shadyRoot||e),s=0;s<o.length;s++){var r=o[s];if(n(r))for(var d=r._distributedNodes,a=0;a<d.length;a++){var l=d[a];i(r,l)&&t.push(l)}else t.push(r)}return t},_updateChildNodes:function(e,t){for(var o,i=u.Composed.getChildNodes(e),n=Polymer.ArraySplice.calculateSplices(t,i),s=0,r=0;s<n.length&&(o=n[s]);s++){for(var d,a=0;a<o.removed.length&&(d=o.removed[a]);a++)u.Composed.getParentNode(d)===e&&u.Composed.removeChild(e,d),i.splice(o.index+r,1);r-=o.addedCount}for(var o,l,s=0;s<n.length&&(o=n[s]);s++)for(l=i[o.index],a=o.index,d;a<o.index+o.addedCount;a++)d=t[a],u.Composed.insertBefore(e,d,l),i.splice(a,0,d)},_matchesContentSelect:function(e,t){var o=t.getAttribute("select");if(!o)return!0;if(o=o.trim(),!o)return!0;if(!(e instanceof Element))return!1;var i=/^(:not\()?[*.#[a-zA-Z_|]/;return!!i.test(o)&&this.elementMatches(o,e)},_elementAdd:function(){},_elementRemove:function(){}});var c=window.CustomElements&&!CustomElements.useNative}(),Polymer.Settings.useShadow&&Polymer.Base._addFeature({_poolContent:function(){},_beginDistribute:function(){},distributeContent:function(){},_distributeContent:function(){},_finishDistribute:function(){},_createLocalRoot:function(){this.createShadowRoot(),this.shadowRoot.appendChild(this.root),this.root=this.shadowRoot}}),Polymer.Async={_currVal:0,_lastVal:0,_callbacks:[],_twiddleContent:0,_twiddle:document.createTextNode(""),run:function(e,t){return t>0?~setTimeout(e,t):(this._twiddle.textContent=this._twiddleContent++,this._callbacks.push(e),this._currVal++)},cancel:function(e){if(e<0)clearTimeout(~e);else{var t=e-this._lastVal;if(t>=0){if(!this._callbacks[t])throw"invalid async handle: "+e;this._callbacks[t]=null}}},_atEndOfMicrotask:function(){for(var e=this._callbacks.length,t=0;t<e;t++){var o=this._callbacks[t];if(o)try{o()}catch(e){throw t++,this._callbacks.splice(0,t),this._lastVal+=t,this._twiddle.textContent=this._twiddleContent++,e}}this._callbacks.splice(0,e),this._lastVal+=e}},new window.MutationObserver(function(){Polymer.Async._atEndOfMicrotask()}).observe(Polymer.Async._twiddle,{characterData:!0}),Polymer.Debounce=function(){function e(e,t,i){return e?e.stop():e=new o(this),e.go(t,i),e}var t=Polymer.Async,o=function(e){this.context=e;var t=this;this.boundComplete=function(){t.complete()}};return o.prototype={go:function(e,o){var i;this.finish=function(){t.cancel(i)},i=t.run(this.boundComplete,o),this.callback=e},stop:function(){this.finish&&(this.finish(),this.finish=null,this.callback=null)},complete:function(){if(this.finish){var e=this.callback;this.stop(),e.call(this.context)}}},e}(),Polymer.Base._addFeature({_setupDebouncers:function(){this._debouncers={}},debounce:function(e,t,o){return this._debouncers[e]=Polymer.Debounce.call(this,this._debouncers[e],t,o)},isDebouncerActive:function(e){var t=this._debouncers[e];return!(!t||!t.finish)},flushDebouncer:function(e){var t=this._debouncers[e];t&&t.complete()},cancelDebouncer:function(e){var t=this._debouncers[e];t&&t.stop()}}),Polymer.DomModule=document.createElement("dom-module"),Polymer.Base._addFeature({_registerFeatures:function(){this._prepIs(),this._prepBehaviors(),this._prepConstructor(),this._prepTemplate(),this._prepShady(),this._prepPropertyInfo()},_prepBehavior:function(e){this._addHostAttributes(e.hostAttributes)},_initFeatures:function(){this._registerHost(),this._template&&(this._poolContent(),this._beginHosting(),this._stampTemplate(),this._endHosting()),this._marshalHostAttributes(),this._setupDebouncers(),this._marshalBehaviors(),this._tryReady()},_marshalBehavior:function(e){}})</script><script>Polymer.nar=[],Polymer.Annotations={parseAnnotations:function(e){var t=[],n=e._content||e.content;return this._parseNodeAnnotations(n,t,e.hasAttribute("strip-whitespace")),t},_parseNodeAnnotations:function(e,t,n){return e.nodeType===Node.TEXT_NODE?this._parseTextNodeAnnotation(e,t):this._parseElementAnnotations(e,t,n)},_bindingRegex:function(){var e="(?:[a-zA-Z_$][\\w.:$\\-*]*)",t="(?:[-+]?[0-9]*\\.?[0-9]+(?:[eE][-+]?[0-9]+)?)",n="(?:'(?:[^'\\\\]|\\\\.)*')",r='(?:"(?:[^"\\\\]|\\\\.)*")',s="(?:"+n+"|"+r+")",i="(?:"+e+"|"+t+"|"+s+"\\s*)",o="(?:"+i+"(?:,\\s*"+i+")*)",a="(?:\\(\\s*(?:"+o+"?)\\)\\s*)",l="("+e+"\\s*"+a+"?)",c="(\\[\\[|{{)\\s*",h="(?:]]|}})",u="(?:(!)\\s*)?",f=c+u+l+h;return new RegExp(f,"g")}(),_parseBindings:function(e){for(var t,n=this._bindingRegex,r=[],s=0;null!==(t=n.exec(e));){t.index>s&&r.push({literal:e.slice(s,t.index)});var i,o,a,l=t[1][0],c=Boolean(t[2]),h=t[3].trim();"{"==l&&(a=h.indexOf("::"))>0&&(o=h.substring(a+2),h=h.substring(0,a),i=!0),r.push({compoundIndex:r.length,value:h,mode:l,negate:c,event:o,customEvent:i}),s=n.lastIndex}if(s&&s<e.length){var u=e.substring(s);u&&r.push({literal:u})}if(r.length)return r},_literalFromParts:function(e){for(var t="",n=0;n<e.length;n++){var r=e[n].literal;t+=r||""}return t},_parseTextNodeAnnotation:function(e,t){var n=this._parseBindings(e.textContent);if(n){e.textContent=this._literalFromParts(n)||" ";var r={bindings:[{kind:"text",name:"textContent",parts:n,isCompound:1!==n.length}]};return t.push(r),r}},_parseElementAnnotations:function(e,t,n){var r={bindings:[],events:[]};return"content"===e.localName&&(t._hasContent=!0),this._parseChildNodesAnnotations(e,r,t,n),e.attributes&&(this._parseNodeAttributeAnnotations(e,r,t),this.prepElement&&this.prepElement(e)),(r.bindings.length||r.events.length||r.id)&&t.push(r),r},_parseChildNodesAnnotations:function(e,t,n,r){if(e.firstChild)for(var s=e.firstChild,i=0;s;){var o=s.nextSibling;if("template"!==s.localName||s.hasAttribute("preserve-content")||this._parseTemplate(s,i,n,t),"slot"==s.localName&&(s=this._replaceSlotWithContent(s)),s.nodeType===Node.TEXT_NODE){for(var a=o;a&&a.nodeType===Node.TEXT_NODE;)s.textContent+=a.textContent,o=a.nextSibling,e.removeChild(a),a=o;r&&!s.textContent.trim()&&(e.removeChild(s),i--)}if(s.parentNode){var l=this._parseNodeAnnotations(s,n,r);l&&(l.parent=t,l.index=i)}s=o,i++}},_replaceSlotWithContent:function(e){for(var t=e.ownerDocument.createElement("content");e.firstChild;)t.appendChild(e.firstChild);for(var n=e.attributes,r=0;r<n.length;r++){var s=n[r];t.setAttribute(s.name,s.value)}var i=e.getAttribute("name");return i&&t.setAttribute("select","[slot='"+i+"']"),e.parentNode.replaceChild(t,e),t},_parseTemplate:function(e,t,n,r){var s=document.createDocumentFragment();s._notes=this.parseAnnotations(e),s.appendChild(e.content),n.push({bindings:Polymer.nar,events:Polymer.nar,templateContent:s,parent:r,index:t})},_parseNodeAttributeAnnotations:function(e,t){for(var n,r=Array.prototype.slice.call(e.attributes),s=r.length-1;n=r[s];s--){var i,o=n.name,a=n.value;"on-"===o.slice(0,3)?(e.removeAttribute(o),t.events.push({name:o.slice(3),value:a})):(i=this._parseNodeAttributeAnnotation(e,o,a))?t.bindings.push(i):"id"===o&&(t.id=a)}},_parseNodeAttributeAnnotation:function(e,t,n){var r=this._parseBindings(n);if(r){var s=t,i="property";"$"==t[t.length-1]&&(t=t.slice(0,-1),i="attribute");var o=this._literalFromParts(r);o&&"attribute"==i&&e.setAttribute(t,o),"input"===e.localName&&"value"===s&&e.setAttribute(s,""),e.removeAttribute(s);var a=Polymer.CaseMap.dashToCamelCase(t);return"property"===i&&(t=a),{kind:i,name:t,propertyName:a,parts:r,literal:o,isCompound:1!==r.length}}},findAnnotatedNode:function(e,t){var n=t.parent&&Polymer.Annotations.findAnnotatedNode(e,t.parent);if(!n)return e;for(var r=n.firstChild,s=0;r;r=r.nextSibling)if(t.index===s++)return r}},function(){function e(e,t){return e.replace(a,function(e,r,s,i){return r+"'"+n(s.replace(/["']/g,""),t)+"'"+i})}function t(t,r){for(var s in l)for(var i,o,a,c=l[s],u=0,f=c.length;u<f&&(i=c[u]);u++)"*"!==s&&t.localName!==s||(o=t.attributes[i],a=o&&o.value,a&&a.search(h)<0&&(o.value="style"===i?e(a,r):n(a,r)))}function n(e,t){if(e&&c.test(e))return e;var n=s(t);return n.href=e,n.href||e}function r(e,t){return i||(i=document.implementation.createHTMLDocument("temp"),o=i.createElement("base"),i.head.appendChild(o)),o.href=t,n(e,i)}function s(e){return e.body.__urlResolver||(e.body.__urlResolver=e.createElement("a"))}var i,o,a=/(url\()([^)]*)(\))/g,l={"*":["href","src","style","url"],form:["action"]},c=/(^\/)|(^#)|(^[\w-\d]*:)/,h=/\{\{|\[\[/;Polymer.ResolveUrl={resolveCss:e,resolveAttrs:t,resolveUrl:r}}(),Polymer.Path={root:function(e){var t=e.indexOf(".");return t===-1?e:e.slice(0,t)},isDeep:function(e){return e.indexOf(".")!==-1},isAncestor:function(e,t){return 0===e.indexOf(t+".")},isDescendant:function(e,t){return 0===t.indexOf(e+".")},translate:function(e,t,n){return t+n.slice(e.length)},matches:function(e,t,n){return e===n||this.isAncestor(e,n)||Boolean(t)&&this.isDescendant(e,n)}},Polymer.Base._addFeature({_prepAnnotations:function(){if(this._template){var e=this;Polymer.Annotations.prepElement=function(t){e._prepElement(t)},this._template._content&&this._template._content._notes?this._notes=this._template._content._notes:(this._notes=Polymer.Annotations.parseAnnotations(this._template),this._processAnnotations(this._notes)),Polymer.Annotations.prepElement=null}else this._notes=[]},_processAnnotations:function(e){for(var t=0;t<e.length;t++){for(var n=e[t],r=0;r<n.bindings.length;r++)for(var s=n.bindings[r],i=0;i<s.parts.length;i++){var o=s.parts[i];if(!o.literal){var a=this._parseMethod(o.value);a?o.signature=a:o.model=Polymer.Path.root(o.value)}}if(n.templateContent){this._processAnnotations(n.templateContent._notes);var l=n.templateContent._parentProps=this._discoverTemplateParentProps(n.templateContent._notes),c=[];for(var h in l){var u="_parent_"+h;c.push({index:n.index,kind:"property",name:u,propertyName:u,parts:[{mode:"{",model:h,value:h}]})}n.bindings=n.bindings.concat(c)}}},_discoverTemplateParentProps:function(e){for(var t,n={},r=0;r<e.length&&(t=e[r]);r++){for(var s,i=0,o=t.bindings;i<o.length&&(s=o[i]);i++)for(var a,l=0,c=s.parts;l<c.length&&(a=c[l]);l++)if(a.signature){for(var h=a.signature.args,u=0;u<h.length;u++){var f=h[u].model;f&&(n[f]=!0)}a.signature.dynamicFn&&(n[a.signature.method]=!0)}else a.model&&(n[a.model]=!0);if(t.templateContent){var p=t.templateContent._parentProps;Polymer.Base.mixin(n,p)}}return n},_prepElement:function(e){Polymer.ResolveUrl.resolveAttrs(e,this._template.ownerDocument)},_findAnnotatedNode:Polymer.Annotations.findAnnotatedNode,_marshalAnnotationReferences:function(){this._template&&(this._marshalIdNodes(),this._marshalAnnotatedNodes(),this._marshalAnnotatedListeners())},_configureAnnotationReferences:function(){for(var e=this._notes,t=this._nodes,n=0;n<e.length;n++){var r=e[n],s=t[n];this._configureTemplateContent(r,s),this._configureCompoundBindings(r,s)}},_configureTemplateContent:function(e,t){e.templateContent&&(t._content=e.templateContent)},_configureCompoundBindings:function(e,t){for(var n=e.bindings,r=0;r<n.length;r++){var s=n[r];if(s.isCompound){for(var i=t.__compoundStorage__||(t.__compoundStorage__={}),o=s.parts,a=new Array(o.length),l=0;l<o.length;l++)a[l]=o[l].literal;var c=s.name;i[c]=a,s.literal&&"property"==s.kind&&(t._configValue?t._configValue(c,s.literal):t[c]=s.literal)}}},_marshalIdNodes:function(){this.$={};for(var e,t=0,n=this._notes.length;t<n&&(e=this._notes[t]);t++)e.id&&(this.$[e.id]=this._findAnnotatedNode(this.root,e))},_marshalAnnotatedNodes:function(){if(this._notes&&this._notes.length){for(var e=new Array(this._notes.length),t=0;t<this._notes.length;t++)e[t]=this._findAnnotatedNode(this.root,this._notes[t]);this._nodes=e}},_marshalAnnotatedListeners:function(){for(var e,t=0,n=this._notes.length;t<n&&(e=this._notes[t]);t++)if(e.events&&e.events.length)for(var r,s=this._findAnnotatedNode(this.root,e),i=0,o=e.events;i<o.length&&(r=o[i]);i++)this.listen(s,r.name,r.value)}}),Polymer.Base._addFeature({listeners:{},_listenListeners:function(e){var t,n,r;for(r in e)r.indexOf(".")<0?(t=this,n=r):(n=r.split("."),t=this.$[n[0]],n=n[1]),this.listen(t,n,e[r])},listen:function(e,t,n){var r=this._recallEventHandler(this,t,e,n);r||(r=this._createEventHandler(e,t,n)),r._listening||(this._listen(e,t,r),r._listening=!0)},_boundListenerKey:function(e,t){return e+":"+t},_recordEventHandler:function(e,t,n,r,s){var i=e.__boundListeners;i||(i=e.__boundListeners=new WeakMap);var o=i.get(n);o||(o={},Polymer.Settings.isIE&&n==window||i.set(n,o));var a=this._boundListenerKey(t,r);o[a]=s},_recallEventHandler:function(e,t,n,r){var s=e.__boundListeners;if(s){var i=s.get(n);if(i){var o=this._boundListenerKey(t,r);return i[o]}}},_createEventHandler:function(e,t,n){var r=this,s=function(e){r[n]?r[n](e,e.detail):r._warn(r._logf("_createEventHandler","listener method `"+n+"` not defined"))};return s._listening=!1,this._recordEventHandler(r,t,e,n,s),s},unlisten:function(e,t,n){var r=this._recallEventHandler(this,t,e,n);r&&(this._unlisten(e,t,r),r._listening=!1)},_listen:function(e,t,n){e.addEventListener(t,n)},_unlisten:function(e,t,n){e.removeEventListener(t,n)}}),function(){"use strict";function e(e){for(var t,n=P?["click"]:m,r=0;r<n.length;r++)t=n[r],e?document.addEventListener(t,S,!0):document.removeEventListener(t,S,!0)}function t(t){E.mouse.mouseIgnoreJob||e(!0);var n=function(){e(),E.mouse.target=null,E.mouse.mouseIgnoreJob=null};E.mouse.target=Polymer.dom(t).rootTarget,E.mouse.mouseIgnoreJob=Polymer.Debounce(E.mouse.mouseIgnoreJob,n,d)}function n(e){var t=e.type;if(m.indexOf(t)===-1)return!1;if("mousemove"===t){var n=void 0===e.buttons?1:e.buttons;return e instanceof window.MouseEvent&&!v&&(n=y[e.which]||0),Boolean(1&n)}var r=void 0===e.button?0:e.button;return 0===r}function r(e){if("click"===e.type){if(0===e.detail)return!0;var t=C.findOriginalTarget(e),n=t.getBoundingClientRect(),r=e.pageX,s=e.pageY;return!(r>=n.left&&r<=n.right&&s>=n.top&&s<=n.bottom)}return!1}function s(e){for(var t,n=Polymer.dom(e).path,r="auto",s=0;s<n.length;s++)if(t=n[s],t[u]){r=t[u];break}return r}function i(e,t,n){e.movefn=t,e.upfn=n,document.addEventListener("mousemove",t),document.addEventListener("mouseup",n)}function o(e){document.removeEventListener("mousemove",e.movefn),document.removeEventListener("mouseup",e.upfn),e.movefn=null,e.upfn=null}var a=Polymer.DomApi.wrap,l="string"==typeof document.head.style.touchAction,c="__polymerGestures",h="__polymerGesturesHandled",u="__polymerGesturesTouchAction",f=25,p=5,_=2,d=2500,m=["mousedown","mousemove","mouseup","click"],y=[0,1,4,2],v=function(){try{return 1===new MouseEvent("test",{buttons:1}).buttons}catch(e){return!1}}(),g=!1;!function(){try{var e=Object.defineProperty({},"passive",{get:function(){g=!0}});window.addEventListener("test",null,e),window.removeEventListener("test",null,e)}catch(e){}}();var P=navigator.userAgent.match(/iP(?:[oa]d|hone)|Android/),S=function(e){var t=e.sourceCapabilities;if((!t||t.firesTouchEvents)&&(e[h]={skip:!0},"click"===e.type)){for(var n=Polymer.dom(e).path,r=0;r<n.length;r++)if(n[r]===E.mouse.target)return;e.preventDefault(),e.stopPropagation()}},E={mouse:{target:null,mouseIgnoreJob:null},touch:{x:0,y:0,id:-1,scrollDecided:!1}};document.addEventListener("touchend",t,!!g&&{passive:!0});var C={gestures:{},recognizers:[],deepTargetFind:function(e,t){for(var n=document.elementFromPoint(e,t),r=n;r&&r.shadowRoot;)r=r.shadowRoot.elementFromPoint(e,t),r&&(n=r);return n},findOriginalTarget:function(e){return e.path?e.path[0]:e.target},handleNative:function(e){var t,n=e.type,r=a(e.currentTarget),s=r[c];if(s){var i=s[n];if(i){if(!e[h]&&(e[h]={},"touch"===n.slice(0,5))){var o=e.changedTouches[0];if("touchstart"===n&&1===e.touches.length&&(E.touch.id=o.identifier),E.touch.id!==o.identifier)return;l||"touchstart"!==n&&"touchmove"!==n||C.handleTouchAction(e)}if(t=e[h],!t.skip){for(var u,f=C.recognizers,p=0;p<f.length;p++)u=f[p],i[u.name]&&!t[u.name]&&u.flow&&u.flow.start.indexOf(e.type)>-1&&u.reset&&u.reset();for(p=0,u;p<f.length;p++)u=f[p],i[u.name]&&!t[u.name]&&(t[u.name]=!0,u[n](e))}}}},handleTouchAction:function(e){var t=e.changedTouches[0],n=e.type;if("touchstart"===n)E.touch.x=t.clientX,E.touch.y=t.clientY,E.touch.scrollDecided=!1;else if("touchmove"===n){if(E.touch.scrollDecided)return;E.touch.scrollDecided=!0;var r=s(e),i=!1,o=Math.abs(E.touch.x-t.clientX),a=Math.abs(E.touch.y-t.clientY);e.cancelable&&("none"===r?i=!0:"pan-x"===r?i=a>o:"pan-y"===r&&(i=o>a)),i?e.preventDefault():C.prevent("track")}},add:function(e,t,n){e=a(e);var r=this.gestures[t],s=r.deps,i=r.name,o=e[c];o||(e[c]=o={});for(var l,h,u=0;u<s.length;u++)l=s[u],P&&m.indexOf(l)>-1&&"click"!==l||(h=o[l],h||(o[l]=h={_count:0}),0===h._count&&e.addEventListener(l,this.handleNative),h[i]=(h[i]||0)+1,h._count=(h._count||0)+1);e.addEventListener(t,n),r.touchAction&&this.setTouchAction(e,r.touchAction)},remove:function(e,t,n){e=a(e);var r=this.gestures[t],s=r.deps,i=r.name,o=e[c];if(o)for(var l,h,u=0;u<s.length;u++)l=s[u],h=o[l],h&&h[i]&&(h[i]=(h[i]||1)-1,h._count=(h._count||1)-1,0===h._count&&e.removeEventListener(l,this.handleNative));e.removeEventListener(t,n)},register:function(e){this.recognizers.push(e);for(var t=0;t<e.emits.length;t++)this.gestures[e.emits[t]]=e},findRecognizerByEvent:function(e){for(var t,n=0;n<this.recognizers.length;n++){t=this.recognizers[n];for(var r,s=0;s<t.emits.length;s++)if(r=t.emits[s],r===e)return t}return null},setTouchAction:function(e,t){l&&(e.style.touchAction=t),e[u]=t},fire:function(e,t,n){var r=Polymer.Base.fire(t,n,{node:e,bubbles:!0,cancelable:!0});if(r.defaultPrevented){var s=n.preventer||n.sourceEvent;s&&s.preventDefault&&s.preventDefault()}},prevent:function(e){var t=this.findRecognizerByEvent(e);t.info&&(t.info.prevent=!0)},resetMouseCanceller:function(){E.mouse.mouseIgnoreJob&&E.mouse.mouseIgnoreJob.complete()}};C.register({name:"downup",deps:["mousedown","touchstart","touchend"],flow:{start:["mousedown","touchstart"],end:["mouseup","touchend"]},emits:["down","up"],info:{movefn:null,upfn:null},reset:function(){o(this.info)},mousedown:function(e){if(n(e)){var t=C.findOriginalTarget(e),r=this,s=function(e){n(e)||(r.fire("up",t,e),o(r.info))},a=function(e){n(e)&&r.fire("up",t,e),o(r.info)};i(this.info,s,a),this.fire("down",t,e)}},touchstart:function(e){this.fire("down",C.findOriginalTarget(e),e.changedTouches[0],e)},touchend:function(e){this.fire("up",C.findOriginalTarget(e),e.changedTouches[0],e)},fire:function(e,t,n,r){C.fire(t,e,{x:n.clientX,y:n.clientY,sourceEvent:n,preventer:r,prevent:function(e){return C.prevent(e)}})}}),C.register({name:"track",touchAction:"none",deps:["mousedown","touchstart","touchmove","touchend"],flow:{start:["mousedown","touchstart"],end:["mouseup","touchend"]},emits:["track"],info:{x:0,y:0,state:"start",started:!1,moves:[],addMove:function(e){this.moves.length>_&&this.moves.shift(),this.moves.push(e)},movefn:null,upfn:null,prevent:!1},reset:function(){this.info.state="start",this.info.started=!1,this.info.moves=[],this.info.x=0,this.info.y=0,this.info.prevent=!1,o(this.info)},hasMovedEnough:function(e,t){if(this.info.prevent)return!1;if(this.info.started)return!0;var n=Math.abs(this.info.x-e),r=Math.abs(this.info.y-t);return n>=p||r>=p},mousedown:function(e){if(n(e)){var t=C.findOriginalTarget(e),r=this,s=function(e){var s=e.clientX,i=e.clientY;r.hasMovedEnough(s,i)&&(r.info.state=r.info.started?"mouseup"===e.type?"end":"track":"start","start"===r.info.state&&C.prevent("tap"),r.info.addMove({x:s,y:i}),n(e)||(r.info.state="end",o(r.info)),r.fire(t,e),r.info.started=!0)},a=function(e){r.info.started&&s(e),o(r.info)};i(this.info,s,a),this.info.x=e.clientX,this.info.y=e.clientY}},touchstart:function(e){var t=e.changedTouches[0];this.info.x=t.clientX,this.info.y=t.clientY},touchmove:function(e){var t=C.findOriginalTarget(e),n=e.changedTouches[0],r=n.clientX,s=n.clientY;this.hasMovedEnough(r,s)&&("start"===this.info.state&&C.prevent("tap"),this.info.addMove({x:r,y:s}),this.fire(t,n),this.info.state="track",this.info.started=!0)},touchend:function(e){var t=C.findOriginalTarget(e),n=e.changedTouches[0];this.info.started&&(this.info.state="end",this.info.addMove({x:n.clientX,y:n.clientY}),this.fire(t,n,e))},fire:function(e,t,n){var r,s=this.info.moves[this.info.moves.length-2],i=this.info.moves[this.info.moves.length-1],o=i.x-this.info.x,a=i.y-this.info.y,l=0;return s&&(r=i.x-s.x,l=i.y-s.y),C.fire(e,"track",{state:this.info.state,x:t.clientX,y:t.clientY,dx:o,dy:a,ddx:r,ddy:l,sourceEvent:t,preventer:n,hover:function(){return C.deepTargetFind(t.clientX,t.clientY)}})}}),C.register({name:"tap",deps:["mousedown","click","touchstart","touchend"],flow:{start:["mousedown","touchstart"],end:["click","touchend"]},emits:["tap"],info:{x:NaN,y:NaN,prevent:!1},reset:function(){this.info.x=NaN,this.info.y=NaN,this.info.prevent=!1},save:function(e){this.info.x=e.clientX,this.info.y=e.clientY},mousedown:function(e){n(e)&&this.save(e)},click:function(e){n(e)&&this.forward(e)},touchstart:function(e){this.save(e.changedTouches[0],e)},touchend:function(e){this.forward(e.changedTouches[0],e)},forward:function(e,t){var n=Math.abs(e.clientX-this.info.x),s=Math.abs(e.clientY-this.info.y),i=C.findOriginalTarget(e);(isNaN(n)||isNaN(s)||n<=f&&s<=f||r(e))&&(this.info.prevent||C.fire(i,"tap",{x:e.clientX,y:e.clientY,sourceEvent:e,preventer:t}))}});var b={x:"pan-x",y:"pan-y",none:"none",all:"auto"};Polymer.Base._addFeature({_setupGestures:function(){this.__polymerGestures=null},_listen:function(e,t,n){C.gestures[t]?C.add(e,t,n):e.addEventListener(t,n)},_unlisten:function(e,t,n){C.gestures[t]?C.remove(e,t,n):e.removeEventListener(t,n)},setScrollDirection:function(e,t){t=t||this,C.setTouchAction(t,b[e]||"auto")}}),Polymer.Gestures=C}(),function(){"use strict";if(Polymer.Base._addFeature({$$:function(e){return Polymer.dom(this.root).querySelector(e)},toggleClass:function(e,t,n){n=n||this,1==arguments.length&&(t=!n.classList.contains(e)),t?Polymer.dom(n).classList.add(e):Polymer.dom(n).classList.remove(e)},toggleAttribute:function(e,t,n){n=n||this,1==arguments.length&&(t=!n.hasAttribute(e)),t?Polymer.dom(n).setAttribute(e,""):Polymer.dom(n).removeAttribute(e)},classFollows:function(e,t,n){n&&Polymer.dom(n).classList.remove(e),t&&Polymer.dom(t).classList.add(e)},attributeFollows:function(e,t,n){n&&Polymer.dom(n).removeAttribute(e),t&&Polymer.dom(t).setAttribute(e,"")},getEffectiveChildNodes:function(){return Polymer.dom(this).getEffectiveChildNodes()},getEffectiveChildren:function(){var e=Polymer.dom(this).getEffectiveChildNodes();return e.filter(function(e){return e.nodeType===Node.ELEMENT_NODE})},getEffectiveTextContent:function(){for(var e,t=this.getEffectiveChildNodes(),n=[],r=0;e=t[r];r++)e.nodeType!==Node.COMMENT_NODE&&n.push(Polymer.dom(e).textContent);return n.join("")},queryEffectiveChildren:function(e){var t=Polymer.dom(this).queryDistributedElements(e);return t&&t[0]},queryAllEffectiveChildren:function(e){return Polymer.dom(this).queryDistributedElements(e)},getContentChildNodes:function(e){var t=Polymer.dom(this.root).querySelector(e||"content");return t?Polymer.dom(t).getDistributedNodes():[]},getContentChildren:function(e){return this.getContentChildNodes(e).filter(function(e){return e.nodeType===Node.ELEMENT_NODE})},fire:function(e,t,n){n=n||Polymer.nob;var r=n.node||this;t=null===t||void 0===t?{}:t;var s=void 0===n.bubbles||n.bubbles,i=Boolean(n.cancelable),o=n._useCache,a=this._getEvent(e,s,i,o);return a.detail=t,o&&(this.__eventCache[e]=null),r.dispatchEvent(a),o&&(this.__eventCache[e]=a),a},__eventCache:{},_getEvent:function(e,t,n,r){var s=r&&this.__eventCache[e];return s&&s.bubbles==t&&s.cancelable==n||(s=new Event(e,{bubbles:Boolean(t),cancelable:n})),s},async:function(e,t){var n=this;return Polymer.Async.run(function(){e.call(n)},t)},cancelAsync:function(e){Polymer.Async.cancel(e)},arrayDelete:function(e,t){var n;if(Array.isArray(e)){if(n=e.indexOf(t),n>=0)return e.splice(n,1)}else{var r=this._get(e);if(n=r.indexOf(t),n>=0)return this.splice(e,n,1)}},transform:function(e,t){t=t||this,t.style.webkitTransform=e,t.style.transform=e},translate3d:function(e,t,n,r){r=r||this,this.transform("translate3d("+e+","+t+","+n+")",r)},importHref:function(e,t,n,r){var s=document.createElement("link");s.rel="import",s.href=e;var i=Polymer.Base.importHref.imported=Polymer.Base.importHref.imported||{},o=i[s.href],a=o||s,l=this,c=function(e){return e.target.__firedLoad=!0,e.target.removeEventListener("load",c),e.target.removeEventListener("error",h),t.call(l,e)},h=function(e){return e.target.__firedError=!0,e.target.removeEventListener("load",c),e.target.removeEventListener("error",h),n.call(l,e)};return t&&a.addEventListener("load",c),n&&a.addEventListener("error",h),o?(o.__firedLoad&&o.dispatchEvent(new Event("load")),o.__firedError&&o.dispatchEvent(new Event("error"))):(i[s.href]=s,r=Boolean(r),r&&s.setAttribute("async",""),document.head.appendChild(s)),a},create:function(e,t){var n=document.createElement(e);if(t)for(var r in t)n[r]=t[r];return n},isLightDescendant:function(e){return this!==e&&this.contains(e)&&Polymer.dom(this).getOwnerRoot()===Polymer.dom(e).getOwnerRoot()},isLocalDescendant:function(e){return this.root===Polymer.dom(e).getOwnerRoot()}}),!Polymer.Settings.useNativeCustomElements){var e=Polymer.Base.importHref;Polymer.Base.importHref=function(t,n,r,s){CustomElements.ready=!1;var i=function(e){if(CustomElements.upgradeDocumentTree(document),CustomElements.ready=!0,n)return n.call(this,e)};return e.call(this,t,i,r,s)}}}(),Polymer.Bind={prepareModel:function(e){Polymer.Base.mixin(e,this._modelApi)},_modelApi:{_notifyChange:function(e,t,n){n=void 0===n?this[e]:n,t=t||Polymer.CaseMap.camelToDashCase(e)+"-changed",this.fire(t,{value:n},{bubbles:!1,cancelable:!1,_useCache:Polymer.Settings.eventDataCache||!Polymer.Settings.isIE})},_propertySetter:function(e,t,n,r){var s=this.__data__[e];return s===t||s!==s&&t!==t||(this.__data__[e]=t,"object"==typeof t&&this._clearPath(e),this._propertyChanged&&this._propertyChanged(e,t,s),n&&this._effectEffects(e,t,n,s,r)),s},__setProperty:function(e,t,n,r){r=r||this;var s=r._propertyEffects&&r._propertyEffects[e];s?r._propertySetter(e,t,s,n):r[e]!==t&&(r[e]=t)},_effectEffects:function(e,t,n,r,s){for(var i,o=0,a=n.length;o<a&&(i=n[o]);o++)i.fn.call(this,e,this[e],i.effect,r,s)},_clearPath:function(e){for(var t in this.__data__)Polymer.Path.isDescendant(e,t)&&(this.__data__[t]=void 0)}},ensurePropertyEffects:function(e,t){e._propertyEffects||(e._propertyEffects={});var n=e._propertyEffects[t];return n||(n=e._propertyEffects[t]=[]),n},addPropertyEffect:function(e,t,n,r){var s=this.ensurePropertyEffects(e,t),i={kind:n,effect:r,fn:Polymer.Bind["_"+n+"Effect"]};return s.push(i),i},createBindings:function(e){var t=e._propertyEffects;if(t)for(var n in t){var r=t[n];r.sort(this._sortPropertyEffects),this._createAccessors(e,n,r)}},_sortPropertyEffects:function(){var e={compute:0,annotation:1,annotatedComputation:2,reflect:3,notify:4,observer:5,complexObserver:6,function:7};return function(t,n){return e[t.kind]-e[n.kind]}}(),_createAccessors:function(e,t,n){var r={get:function(){return this.__data__[t]}},s=function(e){this._propertySetter(t,e,n)},i=e.getPropertyInfo&&e.getPropertyInfo(t);i&&i.readOnly?i.computed||(e["_set"+this.upper(t)]=s):r.set=s,Object.defineProperty(e,t,r)},upper:function(e){return e[0].toUpperCase()+e.substring(1)},_addAnnotatedListener:function(e,t,n,r,s,i){e._bindListeners||(e._bindListeners=[]);var o=this._notedListenerFactory(n,r,Polymer.Path.isDeep(r),i),a=s||Polymer.CaseMap.camelToDashCase(n)+"-changed";e._bindListeners.push({index:t,property:n,path:r,changedFn:o,event:a})},_isEventBogus:function(e,t){return e.path&&e.path[0]!==t},_notedListenerFactory:function(e,t,n,r){return function(s,i,o){if(o){var a=Polymer.Path.translate(e,t,o);this._notifyPath(a,i)}else i=s[e],r&&(i=!i),n?this.__data__[t]!=i&&this.set(t,i):this[t]=i}},prepareInstance:function(e){e.__data__=Object.create(null)},setupBindListeners:function(e){for(var t,n=e._bindListeners,r=0,s=n.length;r<s&&(t=n[r]);r++){var i=e._nodes[t.index];this._addNotifyListener(i,e,t.event,t.changedFn)}},_addNotifyListener:function(e,t,n,r){e.addEventListener(n,function(e){return t._notifyListener(r,e)})}},Polymer.Base.extend(Polymer.Bind,{_shouldAddListener:function(e){return e.name&&"attribute"!=e.kind&&"text"!=e.kind&&!e.isCompound&&"{"===e.parts[0].mode},_annotationEffect:function(e,t,n){e!=n.value&&(t=this._get(n.value),this.__data__[n.value]=t),this._applyEffectValue(n,t)},_reflectEffect:function(e,t,n){this.reflectPropertyToAttribute(e,n.attribute,t)},_notifyEffect:function(e,t,n,r,s){s||this._notifyChange(e,n.event,t)},_functionEffect:function(e,t,n,r,s){n.call(this,e,t,r,s)},_observerEffect:function(e,t,n,r){var s=this[n.method];s?s.call(this,t,r):this._warn(this._logf("_observerEffect","observer method `"+n.method+"` not defined"))},_complexObserverEffect:function(e,t,n){var r=this[n.method];if(r){var s=Polymer.Bind._marshalArgs(this.__data__,n,e,t);s&&r.apply(this,s)}else n.dynamicFn||this._warn(this._logf("_complexObserverEffect","observer method `"+n.method+"` not defined"))},_computeEffect:function(e,t,n){var r=this[n.method];if(r){var s=Polymer.Bind._marshalArgs(this.__data__,n,e,t);if(s){var i=r.apply(this,s);this.__setProperty(n.name,i)}}else n.dynamicFn||this._warn(this._logf("_computeEffect","compute method `"+n.method+"` not defined"))},_annotatedComputationEffect:function(e,t,n){var r=this._rootDataHost||this,s=r[n.method];if(s){var i=Polymer.Bind._marshalArgs(this.__data__,n,e,t);if(i){var o=s.apply(r,i);this._applyEffectValue(n,o)}}else n.dynamicFn||r._warn(r._logf("_annotatedComputationEffect","compute method `"+n.method+"` not defined"))},_marshalArgs:function(e,t,n,r){for(var s=[],i=t.args,o=i.length>1||t.dynamicFn,a=0,l=i.length;a<l;a++){var c,h=i[a],u=h.name;if(h.literal?c=h.value:n===u?c=r:(c=e[u],void 0===c&&h.structured&&(c=Polymer.Base._get(u,e))),o&&void 0===c)return;if(h.wildcard){var f=Polymer.Path.isAncestor(n,u);s[a]={path:f?n:u,value:f?r:c,base:c}}else s[a]=c}return s}}),Polymer.Base._addFeature({_addPropertyEffect:function(e,t,n){var r=Polymer.Bind.addPropertyEffect(this,e,t,n);r.pathFn=this["_"+r.kind+"PathEffect"]},_prepEffects:function(){Polymer.Bind.prepareModel(this),this._addAnnotationEffects(this._notes)},_prepBindings:function(){Polymer.Bind.createBindings(this)},_addPropertyEffects:function(e){if(e)for(var t in e){var n=e[t];if(n.observer&&this._addObserverEffect(t,n.observer),n.computed&&(n.readOnly=!0,this._addComputedEffect(t,n.computed)),n.notify&&this._addPropertyEffect(t,"notify",{event:Polymer.CaseMap.camelToDashCase(t)+"-changed"}),n.reflectToAttribute){var r=Polymer.CaseMap.camelToDashCase(t);"-"===r[0]?this._warn(this._logf("_addPropertyEffects","Property "+t+" cannot be reflected to attribute "+r+' because "-" is not a valid starting attribute name. Use a lowercase first letter for the property instead.')):this._addPropertyEffect(t,"reflect",{attribute:r})}n.readOnly&&Polymer.Bind.ensurePropertyEffects(this,t)}},_addComputedEffect:function(e,t){for(var n,r=this._parseMethod(t),s=r.dynamicFn,i=0;i<r.args.length&&(n=r.args[i]);i++)this._addPropertyEffect(n.model,"compute",{method:r.method,args:r.args,trigger:n,name:e,dynamicFn:s});s&&this._addPropertyEffect(r.method,"compute",{method:r.method,args:r.args,trigger:null,name:e,dynamicFn:s})},_addObserverEffect:function(e,t){this._addPropertyEffect(e,"observer",{method:t,property:e})},_addComplexObserverEffects:function(e){if(e)for(var t,n=0;n<e.length&&(t=e[n]);n++)this._addComplexObserverEffect(t)},_addComplexObserverEffect:function(e){var t=this._parseMethod(e);if(!t)throw new Error("Malformed observer expression '"+e+"'");for(var n,r=t.dynamicFn,s=0;s<t.args.length&&(n=t.args[s]);s++)this._addPropertyEffect(n.model,"complexObserver",{method:t.method,args:t.args,trigger:n,dynamicFn:r});r&&this._addPropertyEffect(t.method,"complexObserver",{method:t.method,args:t.args,trigger:null,dynamicFn:r})},_addAnnotationEffects:function(e){for(var t,n=0;n<e.length&&(t=e[n]);n++)for(var r,s=t.bindings,i=0;i<s.length&&(r=s[i]);i++)this._addAnnotationEffect(r,n)},_addAnnotationEffect:function(e,t){Polymer.Bind._shouldAddListener(e)&&Polymer.Bind._addAnnotatedListener(this,t,e.name,e.parts[0].value,e.parts[0].event,e.parts[0].negate);for(var n=0;n<e.parts.length;n++){var r=e.parts[n];r.signature?this._addAnnotatedComputationEffect(e,r,t):r.literal||("attribute"===e.kind&&"-"===e.name[0]?this._warn(this._logf("_addAnnotationEffect","Cannot set attribute "+e.name+' because "-" is not a valid attribute starting character')):this._addPropertyEffect(r.model,"annotation",{kind:e.kind,index:t,name:e.name,propertyName:e.propertyName,value:r.value,isCompound:e.isCompound,compoundIndex:r.compoundIndex,event:r.event,customEvent:r.customEvent,negate:r.negate}))}},_addAnnotatedComputationEffect:function(e,t,n){var r=t.signature;if(r.static)this.__addAnnotatedComputationEffect("__static__",n,e,t,null);else{for(var s,i=0;i<r.args.length&&(s=r.args[i]);i++)s.literal||this.__addAnnotatedComputationEffect(s.model,n,e,t,s);r.dynamicFn&&this.__addAnnotatedComputationEffect(r.method,n,e,t,null)}},__addAnnotatedComputationEffect:function(e,t,n,r,s){this._addPropertyEffect(e,"annotatedComputation",{index:t,isCompound:n.isCompound,compoundIndex:r.compoundIndex,kind:n.kind,name:n.name,negate:r.negate,method:r.signature.method,args:r.signature.args,trigger:s,dynamicFn:r.signature.dynamicFn})},_parseMethod:function(e){var t=e.match(/([^\s]+?)\(([\s\S]*)\)/);if(t){var n={method:t[1],static:!0};if(this.getPropertyInfo(n.method)!==Polymer.nob&&(n.static=!1,n.dynamicFn=!0),t[2].trim()){var r=t[2].replace(/\\,/g,",").split(",");return this._parseArgs(r,n)}return n.args=Polymer.nar,n}},_parseArgs:function(e,t){return t.args=e.map(function(e){var n=this._parseArg(e);return n.literal||(t.static=!1),n},this),t},_parseArg:function(e){var t=e.trim().replace(/,/g,",").replace(/\\(.)/g,"$1"),n={name:t},r=t[0];switch("-"===r&&(r=t[1]),r>="0"&&r<="9"&&(r="#"),r){case"'":case'"':n.value=t.slice(1,-1),n.literal=!0;break;case"#":n.value=Number(t),n.literal=!0}return n.literal||(n.model=Polymer.Path.root(t),n.structured=Polymer.Path.isDeep(t),n.structured&&(n.wildcard=".*"==t.slice(-2),n.wildcard&&(n.name=t.slice(0,-2)))),n},_marshalInstanceEffects:function(){Polymer.Bind.prepareInstance(this),this._bindListeners&&Polymer.Bind.setupBindListeners(this)},_applyEffectValue:function(e,t){var n=this._nodes[e.index],r=e.name;if(t=this._computeFinalAnnotationValue(n,r,t,e),"attribute"==e.kind)this.serializeValueToAttribute(t,r,n);else{var s=n._propertyInfo&&n._propertyInfo[r];if(s&&s.readOnly)return;this.__setProperty(r,t,!1,n)}},_computeFinalAnnotationValue:function(e,t,n,r){if(r.negate&&(n=!n),r.isCompound){var s=e.__compoundStorage__[t];s[r.compoundIndex]=n,n=s.join("")}return"attribute"!==r.kind&&("className"===t&&(n=this._scopeElementClass(e,n)),("textContent"===t||"input"==e.localName&&"value"==t)&&(n=void 0==n?"":n)),n},_executeStaticEffects:function(){this._propertyEffects&&this._propertyEffects.__static__&&this._effectEffects("__static__",null,this._propertyEffects.__static__)}}),function(){var e=Polymer.Settings.usePolyfillProto;Polymer.Base._addFeature({_setupConfigure:function(e){if(this._config={},this._handlers=[],this._aboveConfig=null,e)for(var t in e)void 0!==e[t]&&(this._config[t]=e[t])},_marshalAttributes:function(){this._takeAttributesToModel(this._config)},_attributeChangedImpl:function(e){var t=this._clientsReadied?this:this._config;this._setAttributeToProperty(t,e)},_configValue:function(e,t){var n=this._propertyInfo[e];n&&n.readOnly||(this._config[e]=t)},_beforeClientsReady:function(){this._configure()},_configure:function(){this._configureAnnotationReferences(),this._configureInstanceProperties(),this._aboveConfig=this.mixin({},this._config); for(var e={},t=0;t<this.behaviors.length;t++)this._configureProperties(this.behaviors[t].properties,e);this._configureProperties(this.properties,e),this.mixin(e,this._aboveConfig),this._config=e,this._clients&&this._clients.length&&this._distributeConfig(this._config)},_configureInstanceProperties:function(){for(var t in this._propertyEffects)!e&&this.hasOwnProperty(t)&&(this._configValue(t,this[t]),delete this[t])},_configureProperties:function(e,t){for(var n in e){var r=e[n];if(void 0!==r.value){var s=r.value;"function"==typeof s&&(s=s.call(this,this._config)),t[n]=s}}},_distributeConfig:function(e){var t=this._propertyEffects;if(t)for(var n in e){var r=t[n];if(r)for(var s,i=0,o=r.length;i<o&&(s=r[i]);i++)if("annotation"===s.kind){var a=this._nodes[s.effect.index],l=s.effect.propertyName,c="attribute"==s.effect.kind,h=a._propertyEffects&&a._propertyEffects[l];if(a._configValue&&(h||!c)){var u=n===s.effect.value?e[n]:this._get(s.effect.value,e);u=this._computeFinalAnnotationValue(a,l,u,s.effect),c&&(u=a.deserialize(this.serialize(u),a._propertyInfo[l].type)),a._configValue(l,u)}}}},_afterClientsReady:function(){this._executeStaticEffects(),this._applyConfig(this._config,this._aboveConfig),this._flushHandlers()},_applyConfig:function(e,t){for(var n in e)void 0===this[n]&&this.__setProperty(n,e[n],n in t)},_notifyListener:function(e,t){if(!Polymer.Bind._isEventBogus(t,t.target)){var n,r;if(t.detail&&(n=t.detail.value,r=t.detail.path),this._clientsReadied)return e.call(this,t.target,n,r);this._queueHandler([e,t.target,n,r])}},_queueHandler:function(e){this._handlers.push(e)},_flushHandlers:function(){for(var e,t=this._handlers,n=0,r=t.length;n<r&&(e=t[n]);n++)e[0].call(this,e[1],e[2],e[3]);this._handlers=[]}})}(),function(){"use strict";var e=Polymer.Path;Polymer.Base._addFeature({notifyPath:function(e,t,n){var r={},s=this._get(e,this,r);1===arguments.length&&(t=s),r.path&&this._notifyPath(r.path,t,n)},_notifyPath:function(e,t,n){var r=this._propertySetter(e,t);if(r!==t&&(r===r||t===t))return this._pathEffector(e,t),n||this._notifyPathUp(e,t),!0},_getPathParts:function(e){if(Array.isArray(e)){for(var t=[],n=0;n<e.length;n++)for(var r=e[n].toString().split("."),s=0;s<r.length;s++)t.push(r[s]);return t}return e.toString().split(".")},set:function(e,t,n){var r,s=n||this,i=this._getPathParts(e),o=i[i.length-1];if(i.length>1){for(var a=0;a<i.length-1;a++){var l=i[a];if(r&&"#"==l[0]?s=Polymer.Collection.get(r).getItem(l):(s=s[l],r&&parseInt(l,10)==l&&(i[a]=Polymer.Collection.get(r).getKey(s))),!s)return;r=Array.isArray(s)?s:null}if(r){var c,h,u=Polymer.Collection.get(r);"#"==o[0]?(h=o,c=u.getItem(h),o=r.indexOf(c),u.setItem(h,t)):parseInt(o,10)==o&&(c=s[o],h=u.getKey(c),i[a]=h,u.setItem(h,t))}s[o]=t,n||this._notifyPath(i.join("."),t)}else s[e]=t},get:function(e,t){return this._get(e,t)},_get:function(e,t,n){for(var r,s=t||this,i=this._getPathParts(e),o=0;o<i.length;o++){if(!s)return;var a=i[o];r&&"#"==a[0]?s=Polymer.Collection.get(r).getItem(a):(s=s[a],n&&r&&parseInt(a,10)==a&&(i[o]=Polymer.Collection.get(r).getKey(s))),r=Array.isArray(s)?s:null}return n&&(n.path=i.join(".")),s},_pathEffector:function(t,n){var r=e.root(t),s=this._propertyEffects&&this._propertyEffects[r];if(s)for(var i,o=0;o<s.length&&(i=s[o]);o++){var a=i.pathFn;a&&a.call(this,t,n,i.effect)}this._boundPaths&&this._notifyBoundPaths(t,n)},_annotationPathEffect:function(t,n,r){if(e.matches(r.value,!1,t))Polymer.Bind._annotationEffect.call(this,t,n,r);else if(!r.negate&&e.isDescendant(r.value,t)){var s=this._nodes[r.index];if(s&&s._notifyPath){var i=e.translate(r.value,r.name,t);s._notifyPath(i,n,!0)}}},_complexObserverPathEffect:function(t,n,r){e.matches(r.trigger.name,r.trigger.wildcard,t)&&Polymer.Bind._complexObserverEffect.call(this,t,n,r)},_computePathEffect:function(t,n,r){e.matches(r.trigger.name,r.trigger.wildcard,t)&&Polymer.Bind._computeEffect.call(this,t,n,r)},_annotatedComputationPathEffect:function(t,n,r){e.matches(r.trigger.name,r.trigger.wildcard,t)&&Polymer.Bind._annotatedComputationEffect.call(this,t,n,r)},linkPaths:function(e,t){this._boundPaths=this._boundPaths||{},t?this._boundPaths[e]=t:this.unlinkPaths(e)},unlinkPaths:function(e){this._boundPaths&&delete this._boundPaths[e]},_notifyBoundPaths:function(t,n){for(var r in this._boundPaths){var s=this._boundPaths[r];e.isDescendant(r,t)?this._notifyPath(e.translate(r,s,t),n):e.isDescendant(s,t)&&this._notifyPath(e.translate(s,r,t),n)}},_notifyPathUp:function(t,n){var r=e.root(t),s=Polymer.CaseMap.camelToDashCase(r),i=s+this._EVENT_CHANGED;this.fire(i,{path:t,value:n},{bubbles:!1,_useCache:Polymer.Settings.eventDataCache||!Polymer.Settings.isIE})},_EVENT_CHANGED:"-changed",notifySplices:function(e,t){var n={},r=this._get(e,this,n);this._notifySplices(r,n.path,t)},_notifySplices:function(e,t,n){var r={keySplices:Polymer.Collection.applySplices(e,n),indexSplices:n},s=t+".splices";this._notifyPath(s,r),this._notifyPath(t+".length",e.length),this.__data__[s]={keySplices:null,indexSplices:null}},_notifySplice:function(e,t,n,r,s){this._notifySplices(e,t,[{index:n,addedCount:r,removed:s,object:e,type:"splice"}])},push:function(e){var t={},n=this._get(e,this,t),r=Array.prototype.slice.call(arguments,1),s=n.length,i=n.push.apply(n,r);return r.length&&this._notifySplice(n,t.path,s,r.length,[]),i},pop:function(e){var t={},n=this._get(e,this,t),r=Boolean(n.length),s=Array.prototype.slice.call(arguments,1),i=n.pop.apply(n,s);return r&&this._notifySplice(n,t.path,n.length,0,[i]),i},splice:function(e,t){var n={},r=this._get(e,this,n);t=t<0?r.length-Math.floor(-t):Math.floor(t),t||(t=0);var s=Array.prototype.slice.call(arguments,1),i=r.splice.apply(r,s),o=Math.max(s.length-2,0);return(o||i.length)&&this._notifySplice(r,n.path,t,o,i),i},shift:function(e){var t={},n=this._get(e,this,t),r=Boolean(n.length),s=Array.prototype.slice.call(arguments,1),i=n.shift.apply(n,s);return r&&this._notifySplice(n,t.path,0,0,[i]),i},unshift:function(e){var t={},n=this._get(e,this,t),r=Array.prototype.slice.call(arguments,1),s=n.unshift.apply(n,r);return r.length&&this._notifySplice(n,t.path,0,r.length,[]),s},prepareModelNotifyPath:function(e){this.mixin(e,{fire:Polymer.Base.fire,_getEvent:Polymer.Base._getEvent,__eventCache:Polymer.Base.__eventCache,notifyPath:Polymer.Base.notifyPath,_get:Polymer.Base._get,_EVENT_CHANGED:Polymer.Base._EVENT_CHANGED,_notifyPath:Polymer.Base._notifyPath,_notifyPathUp:Polymer.Base._notifyPathUp,_pathEffector:Polymer.Base._pathEffector,_annotationPathEffect:Polymer.Base._annotationPathEffect,_complexObserverPathEffect:Polymer.Base._complexObserverPathEffect,_annotatedComputationPathEffect:Polymer.Base._annotatedComputationPathEffect,_computePathEffect:Polymer.Base._computePathEffect,_notifyBoundPaths:Polymer.Base._notifyBoundPaths,_getPathParts:Polymer.Base._getPathParts})}})}(),Polymer.Base._addFeature({resolveUrl:function(e){var t=Polymer.DomModule.import(this.is),n="";if(t){var r=t.getAttribute("assetpath")||"";n=Polymer.ResolveUrl.resolveUrl(r,t.ownerDocument.baseURI)}return Polymer.ResolveUrl.resolveUrl(e,n)}}),Polymer.CssParse=function(){return{parse:function(e){return e=this._clean(e),this._parseCss(this._lex(e),e)},_clean:function(e){return e.replace(this._rx.comments,"").replace(this._rx.port,"")},_lex:function(e){for(var t={start:0,end:e.length},n=t,r=0,s=e.length;r<s;r++)switch(e[r]){case this.OPEN_BRACE:n.rules||(n.rules=[]);var i=n,o=i.rules[i.rules.length-1];n={start:r+1,parent:i,previous:o},i.rules.push(n);break;case this.CLOSE_BRACE:n.end=r+1,n=n.parent||t}return t},_parseCss:function(e,t){var n=t.substring(e.start,e.end-1);if(e.parsedCssText=e.cssText=n.trim(),e.parent){var r=e.previous?e.previous.end:e.parent.start;n=t.substring(r,e.start-1),n=this._expandUnicodeEscapes(n),n=n.replace(this._rx.multipleSpaces," "),n=n.substring(n.lastIndexOf(";")+1);var s=e.parsedSelector=e.selector=n.trim();e.atRule=0===s.indexOf(this.AT_START),e.atRule?0===s.indexOf(this.MEDIA_START)?e.type=this.types.MEDIA_RULE:s.match(this._rx.keyframesRule)&&(e.type=this.types.KEYFRAMES_RULE,e.keyframesName=e.selector.split(this._rx.multipleSpaces).pop()):0===s.indexOf(this.VAR_START)?e.type=this.types.MIXIN_RULE:e.type=this.types.STYLE_RULE}var i=e.rules;if(i)for(var o,a=0,l=i.length;a<l&&(o=i[a]);a++)this._parseCss(o,t);return e},_expandUnicodeEscapes:function(e){return e.replace(/\\([0-9a-f]{1,6})\s/gi,function(){for(var e=arguments[1],t=6-e.length;t--;)e="0"+e;return"\\"+e})},stringify:function(e,t,n){n=n||"";var r="";if(e.cssText||e.rules){var s=e.rules;if(s&&!this._hasMixinRules(s))for(var i,o=0,a=s.length;o<a&&(i=s[o]);o++)r=this.stringify(i,t,r);else r=t?e.cssText:this.removeCustomProps(e.cssText),r=r.trim(),r&&(r=" "+r+"\n")}return r&&(e.selector&&(n+=e.selector+" "+this.OPEN_BRACE+"\n"),n+=r,e.selector&&(n+=this.CLOSE_BRACE+"\n\n")),n},_hasMixinRules:function(e){return 0===e[0].selector.indexOf(this.VAR_START)},removeCustomProps:function(e){return e=this.removeCustomPropAssignment(e),this.removeCustomPropApply(e)},removeCustomPropAssignment:function(e){return e.replace(this._rx.customProp,"").replace(this._rx.mixinProp,"")},removeCustomPropApply:function(e){return e.replace(this._rx.mixinApply,"").replace(this._rx.varApply,"")},types:{STYLE_RULE:1,KEYFRAMES_RULE:7,MEDIA_RULE:4,MIXIN_RULE:1e3},OPEN_BRACE:"{",CLOSE_BRACE:"}",_rx:{comments:/\/\*[^*]*\*+([^\/*][^*]*\*+)*\//gim,port:/@import[^;]*;/gim,customProp:/(?:^[^;\-\s}]+)?--[^;{}]*?:[^{};]*?(?:[;\n]|$)/gim,mixinProp:/(?:^[^;\-\s}]+)?--[^;{}]*?:[^{};]*?{[^}]*?}(?:[;\n]|$)?/gim,mixinApply:/@apply\s*\(?[^);]*\)?\s*(?:[;\n]|$)?/gim,varApply:/[^;:]*?:[^;]*?var\([^;]*\)(?:[;\n]|$)?/gim,keyframesRule:/^@[^\s]*keyframes/,multipleSpaces:/\s+/g},VAR_START:"--",MEDIA_START:"@media",AT_START:"@"}}(),Polymer.StyleUtil=function(){var e=Polymer.Settings;return{NATIVE_VARIABLES:Polymer.Settings.useNativeCSSProperties,MODULE_STYLES_SELECTOR:"style, link[rel=import][type~=css], template",INCLUDE_ATTR:"include",toCssText:function(e,t){return"string"==typeof e&&(e=this.parser.parse(e)),t&&this.forEachRule(e,t),this.parser.stringify(e,this.NATIVE_VARIABLES)},forRulesInStyles:function(e,t,n){if(e)for(var r,s=0,i=e.length;s<i&&(r=e[s]);s++)this.forEachRuleInStyle(r,t,n)},forActiveRulesInStyles:function(e,t,n){if(e)for(var r,s=0,i=e.length;s<i&&(r=e[s]);s++)this.forEachRuleInStyle(r,t,n,!0)},rulesForStyle:function(e){return!e.__cssRules&&e.textContent&&(e.__cssRules=this.parser.parse(e.textContent)),e.__cssRules},isKeyframesSelector:function(e){return e.parent&&e.parent.type===this.ruleTypes.KEYFRAMES_RULE},forEachRuleInStyle:function(e,t,n,r){var s,i,o=this.rulesForStyle(e);t&&(s=function(n){t(n,e)}),n&&(i=function(t){n(t,e)}),this.forEachRule(o,s,i,r)},forEachRule:function(e,t,n,r){if(e){var s=!1;if(r&&e.type===this.ruleTypes.MEDIA_RULE){var i=e.selector.match(this.rx.MEDIA_MATCH);i&&(window.matchMedia(i[1]).matches||(s=!0))}e.type===this.ruleTypes.STYLE_RULE?t(e):n&&e.type===this.ruleTypes.KEYFRAMES_RULE?n(e):e.type===this.ruleTypes.MIXIN_RULE&&(s=!0);var o=e.rules;if(o&&!s)for(var a,l=0,c=o.length;l<c&&(a=o[l]);l++)this.forEachRule(a,t,n,r)}},applyCss:function(e,t,n,r){var s=this.createScopeStyle(e,t);return this.applyStyle(s,n,r)},applyStyle:function(e,t,n){t=t||document.head;var r=n&&n.nextSibling||t.firstChild;return this.__lastHeadApplyNode=e,t.insertBefore(e,r)},createScopeStyle:function(e,t){var n=document.createElement("style");return t&&n.setAttribute("scope",t),n.textContent=e,n},__lastHeadApplyNode:null,applyStylePlaceHolder:function(e){var t=document.createComment(" Shady DOM styles for "+e+" "),n=this.__lastHeadApplyNode?this.__lastHeadApplyNode.nextSibling:null,r=document.head;return r.insertBefore(t,n||r.firstChild),this.__lastHeadApplyNode=t,t},cssFromModules:function(e,t){for(var n=e.trim().split(" "),r="",s=0;s<n.length;s++)r+=this.cssFromModule(n[s],t);return r},cssFromModule:function(e,t){var n=Polymer.DomModule.import(e);return n&&!n._cssText&&(n._cssText=this.cssFromElement(n)),!n&&t&&console.warn("Could not find style data in module named",e),n&&n._cssText||""},cssFromElement:function(e){for(var t,n="",r=e.content||e,s=Polymer.TreeApi.arrayCopy(r.querySelectorAll(this.MODULE_STYLES_SELECTOR)),i=0;i<s.length;i++)if(t=s[i],"template"===t.localName)t.hasAttribute("preserve-content")||(n+=this.cssFromElement(t));else if("style"===t.localName){var o=t.getAttribute(this.INCLUDE_ATTR);o&&(n+=this.cssFromModules(o,!0)),t=t.__appliedElement||t,t.parentNode.removeChild(t),n+=this.resolveCss(t.textContent,e.ownerDocument)}else t.import&&t.import.body&&(n+=this.resolveCss(t.import.body.textContent,t.import));return n},isTargetedBuild:function(t){return e.useNativeShadow?"shadow"===t:"shady"===t},cssBuildTypeForModule:function(e){var t=Polymer.DomModule.import(e);if(t)return this.getCssBuildType(t)},getCssBuildType:function(e){return e.getAttribute("css-build")},_findMatchingParen:function(e,t){for(var n=0,r=t,s=e.length;r<s;r++)switch(e[r]){case"(":n++;break;case")":if(0===--n)return r}return-1},processVariableAndFallback:function(e,t){var n=e.indexOf("var(");if(n===-1)return t(e,"","","");var r=this._findMatchingParen(e,n+3),s=e.substring(n+4,r),i=e.substring(0,n),o=this.processVariableAndFallback(e.substring(r+1),t),a=s.indexOf(",");if(a===-1)return t(i,s.trim(),"",o);var l=s.substring(0,a).trim(),c=s.substring(a+1).trim();return t(i,l,c,o)},rx:{VAR_ASSIGN:/(?:^|[;\s{]\s*)(--[\w-]*?)\s*:\s*(?:([^;{]*)|{([^}]*)})(?:(?=[;\s}])|$)/gi,MIXIN_MATCH:/(?:^|\W+)@apply\s*\(?([^);\n]*)\)?/gi,VAR_CONSUMED:/(--[\w-]+)\s*([:,;)]|$)/gi,ANIMATION_MATCH:/(animation\s*:)|(animation-name\s*:)/,MEDIA_MATCH:/@media[^(]*(\([^)]*\))/,IS_VAR:/^--/,BRACKETED:/\{[^}]*\}/g,HOST_PREFIX:"(?:^|[^.#[:])",HOST_SUFFIX:"($|[.:[\\s>+~])"},resolveCss:Polymer.ResolveUrl.resolveCss,parser:Polymer.CssParse,ruleTypes:Polymer.CssParse.types}}(),Polymer.StyleTransformer=function(){var e=Polymer.StyleUtil,t=Polymer.Settings,n={dom:function(e,t,n,r){this._transformDom(e,t||"",n,r)},_transformDom:function(e,t,n,r){e.setAttribute&&this.element(e,t,n,r);for(var s=Polymer.dom(e).childNodes,i=0;i<s.length;i++)this._transformDom(s[i],t,n,r)},element:function(e,t,n,s){if(n)s?e.removeAttribute(r):e.setAttribute(r,t);else if(t)if(e.classList)s?(e.classList.remove(r),e.classList.remove(t)):(e.classList.add(r),e.classList.add(t));else if(e.getAttribute){var i=e.getAttribute(g);s?i&&e.setAttribute(g,i.replace(r,"").replace(t,"")):e.setAttribute(g,(i?i+" ":"")+r+" "+t)}},elementStyles:function(n,r){var s,i=n._styles,o="",a=n.__cssBuild,l=t.useNativeShadow||"shady"===a;if(l){var h=this;s=function(e){e.selector=h._slottedToContent(e.selector),e.selector=e.selector.replace(c,":host > *"),r&&r(e)}}for(var u,f=0,p=i.length;f<p&&(u=i[f]);f++){var _=e.rulesForStyle(u);o+=l?e.toCssText(_,s):this.css(_,n.is,n.extends,r,n._scopeCssViaAttr)+"\n\n"}return o.trim()},css:function(t,n,r,s,i){var o=this._calcHostScope(n,r);n=this._calcElementScope(n,i);var a=this;return e.toCssText(t,function(e){e.isScoped||(a.rule(e,n,o),e.isScoped=!0),s&&s(e,n,o)})},_calcElementScope:function(e,t){return e?t?m+e+y:d+e:""},_calcHostScope:function(e,t){return t?"[is="+e+"]":e},rule:function(e,t,n){this._transformRule(e,this._transformComplexSelector,t,n)},_transformRule:function(e,t,n,r){e.selector=e.transformedSelector=this._transformRuleCss(e,t,n,r)},_transformRuleCss:function(t,n,r,s){var o=t.selector.split(i);if(!e.isKeyframesSelector(t))for(var a,l=0,c=o.length;l<c&&(a=o[l]);l++)o[l]=n.call(this,a,r,s);return o.join(i)},_transformComplexSelector:function(e,t,n){var r=!1,s=!1,a=this;return e=e.trim(),e=this._slottedToContent(e),e=e.replace(c,":host > *"),e=e.replace(P,l+" $1"),e=e.replace(o,function(e,i,o){if(r)o=o.replace(_," ");else{var l=a._transformCompoundSelector(o,i,t,n);r=r||l.stop,s=s||l.hostContext,i=l.combinator,o=l.value}return i+o}),s&&(e=e.replace(f,function(e,t,r,s){return t+r+" "+n+s+i+" "+t+n+r+s})),e},_transformCompoundSelector:function(e,t,n,r){var s=e.search(_),i=!1;e.indexOf(u)>=0?i=!0:e.indexOf(l)>=0?e=this._transformHostSelector(e,r):0!==s&&(e=n?this._transformSimpleSelector(e,n):e),e.indexOf(p)>=0&&(t="");var o;return s>=0&&(e=e.replace(_," "),o=!0),{value:e,combinator:t,stop:o,hostContext:i}},_transformSimpleSelector:function(e,t){var n=e.split(v);return n[0]+=t,n.join(v)},_transformHostSelector:function(e,t){var n=e.match(h),r=n&&n[2].trim()||"";if(r){if(r[0].match(a))return e.replace(h,function(e,n,r){return t+r});var s=r.split(a)[0];return s===t?r:S}return e.replace(l,t)},documentRule:function(e){e.selector=e.parsedSelector,this.normalizeRootSelector(e),t.useNativeShadow||this._transformRule(e,this._transformDocumentSelector)},normalizeRootSelector:function(e){e.selector=e.selector.replace(c,"html")},_transformDocumentSelector:function(e){return e.match(_)?this._transformComplexSelector(e,s):this._transformSimpleSelector(e.trim(),s)},_slottedToContent:function(e){return e.replace(E,p+"> $1")},SCOPE_NAME:"style-scope"},r=n.SCOPE_NAME,s=":not(["+r+"]):not(."+r+")",i=",",o=/(^|[\s>+~]+)((?:\[.+?\]|[^\s>+~=\[])+)/g,a=/[[.:#*]/,l=":host",c=":root",h=/(:host)(?:\(((?:\([^)(]*\)|[^)(]*)+?)\))/,u=":host-context",f=/(.*)(?::host-context)(?:\(((?:\([^)(]*\)|[^)(]*)+?)\))(.*)/,p="::content",_=/::content|::shadow|\/deep\//,d=".",m="["+r+"~=",y="]",v=":",g="class",P=new RegExp("^("+p+")"),S="should_not_match",E=/(?:::slotted)(?:\(((?:\([^)(]*\)|[^)(]*)+?)\))/g;return n}(),Polymer.StyleExtends=function(){var e=Polymer.StyleUtil;return{hasExtends:function(e){return Boolean(e.match(this.rx.EXTEND))},transform:function(t){var n=e.rulesForStyle(t),r=this;return e.forEachRule(n,function(e){if(r._mapRuleOntoParent(e),e.parent)for(var t;t=r.rx.EXTEND.exec(e.cssText);){var n=t[1],s=r._findExtendor(n,e);s&&r._extendRule(e,s)}e.cssText=e.cssText.replace(r.rx.EXTEND,"")}),e.toCssText(n,function(e){e.selector.match(r.rx.STRIP)&&(e.cssText="")},!0)},_mapRuleOntoParent:function(e){if(e.parent){for(var t,n=e.parent.map||(e.parent.map={}),r=e.selector.split(","),s=0;s<r.length;s++)t=r[s],n[t.trim()]=e;return n}},_findExtendor:function(e,t){return t.parent&&t.parent.map&&t.parent.map[e]||this._findExtendor(e,t.parent)},_extendRule:function(e,t){e.parent!==t.parent&&this._cloneAndAddRuleToParent(t,e.parent),e.extends=e.extends||[],e.extends.push(t),t.selector=t.selector.replace(this.rx.STRIP,""),t.selector=(t.selector&&t.selector+",\n")+e.selector,t.extends&&t.extends.forEach(function(t){this._extendRule(e,t)},this)},_cloneAndAddRuleToParent:function(e,t){e=Object.create(e),e.parent=t,e.extends&&(e.extends=e.extends.slice()),t.rules.push(e)},rx:{EXTEND:/@extends\(([^)]*)\)\s*?;/gim,STRIP:/%[^,]*$/}}}(),Polymer.ApplyShim=function(){"use strict";function e(e,t){e=e.trim(),m[e]={properties:t,dependants:{}}}function t(e){return e=e.trim(),m[e]}function n(e,t){var n=_.exec(t);return n&&(t=n[1]?y._getInitialValueForProperty(e):"apply-shim-inherit"),t}function r(e){for(var t,r,s,i,o=e.split(";"),a={},l=0;l<o.length;l++)s=o[l],s&&(i=s.split(":"),i.length>1&&(t=i[0].trim(),r=n(t,i.slice(1).join(":")),a[t]=r));return a}function s(e){var t=y.__currentElementProto,n=t&&t.is;for(var r in e.dependants)r!==n&&(e.dependants[r].__applyShimInvalid=!0)}function i(n,i,o,a){if(o&&c.processVariableAndFallback(o,function(e,n){n&&t(n)&&(a="@apply "+n+";")}),!a)return n;var h=l(a),u=n.slice(0,n.indexOf("--")),f=r(h),p=f,_=t(i),m=_&&_.properties;m?(p=Object.create(m),p=Polymer.Base.mixin(p,f)):e(i,p);var y,v,g=[],P=!1;for(y in p)v=f[y],void 0===v&&(v="initial"),!m||y in m||(P=!0),g.push(i+d+y+": "+v);return P&&s(_),_&&(_.properties=p),o&&(u=n+";"+u),u+g.join("; ")+";"}function o(e,t,n){return"var("+t+",var("+n+"))"}function a(n,r){n=n.replace(p,"");var s=[],i=t(n);if(i||(e(n,{}),i=t(n)),i){var o=y.__currentElementProto;o&&(i.dependants[o.is]=o);var a,l,c;for(a in i.properties)c=r&&r[a],l=[a,": var(",n,d,a],c&&l.push(",",c),l.push(")"),s.push(l.join(""))}return s.join("; ")}function l(e){for(var t;t=h.exec(e);){var n=t[0],s=t[1],i=t.index,o=i+n.indexOf("@apply"),l=i+n.length,c=e.slice(0,o),u=e.slice(l),f=r(c),p=a(s,f);e=[c,p,u].join(""),h.lastIndex=i+p.length}return e}var c=Polymer.StyleUtil,h=c.rx.MIXIN_MATCH,u=c.rx.VAR_ASSIGN,f=/var\(\s*(--[^,]*),\s*(--[^)]*)\)/g,p=/;\s*/m,_=/^\s*(initial)|(inherit)\s*$/,d="_-_",m={},y={_measureElement:null,_map:m,_separator:d,transform:function(e,t){this.__currentElementProto=t,c.forRulesInStyles(e,this._boundFindDefinitions),c.forRulesInStyles(e,this._boundFindApplications),t&&(t.__applyShimInvalid=!1),this.__currentElementProto=null},_findDefinitions:function(e){var t=e.parsedCssText;t=t.replace(f,o),t=t.replace(u,i),e.cssText=t,":root"===e.selector&&(e.selector=":host > *")},_findApplications:function(e){e.cssText=l(e.cssText)},transformRule:function(e){this._findDefinitions(e),this._findApplications(e)},_getInitialValueForProperty:function(e){return this._measureElement||(this._measureElement=document.createElement("meta"),this._measureElement.style.all="initial",document.head.appendChild(this._measureElement)),window.getComputedStyle(this._measureElement).getPropertyValue(e)}};return y._boundTransformRule=y.transformRule.bind(y),y._boundFindDefinitions=y._findDefinitions.bind(y),y._boundFindApplications=y._findApplications.bind(y),y}(),function(){var e=Polymer.Base._prepElement,t=Polymer.Settings.useNativeShadow,n=Polymer.StyleUtil,r=Polymer.StyleTransformer,s=Polymer.StyleExtends,i=Polymer.ApplyShim,o=Polymer.Settings;Polymer.Base._addFeature({_prepElement:function(t){this._encapsulateStyle&&"shady"!==this.__cssBuild&&r.element(t,this.is,this._scopeCssViaAttr),e.call(this,t)},_prepStyles:function(){void 0===this._encapsulateStyle&&(this._encapsulateStyle=!t),t||(this._scopeStyle=n.applyStylePlaceHolder(this.is)),this.__cssBuild=n.cssBuildTypeForModule(this.is)},_prepShimStyles:function(){if(this._template){var e=n.isTargetedBuild(this.__cssBuild);if(o.useNativeCSSProperties&&"shadow"===this.__cssBuild&&e)return;this._styles=this._styles||this._collectStyles(),o.useNativeCSSProperties&&!this.__cssBuild&&i.transform(this._styles,this);var s=o.useNativeCSSProperties&&e?this._styles.length&&this._styles[0].textContent.trim():r.elementStyles(this);this._prepStyleProperties(),!this._needsStyleProperties()&&s&&n.applyCss(s,this.is,t?this._template.content:null,this._scopeStyle)}else this._styles=[]},_collectStyles:function(){var e=[],t="",r=this.styleModules;if(r)for(var i,o=0,a=r.length;o<a&&(i=r[o]);o++)t+=n.cssFromModule(i);t+=n.cssFromModule(this.is);var l=this._template&&this._template.parentNode;if(!this._template||l&&l.id.toLowerCase()===this.is||(t+=n.cssFromElement(this._template)),t){var c=document.createElement("style");c.textContent=t,s.hasExtends(c.textContent)&&(t=s.transform(c)),e.push(c)}return e},_elementAdd:function(e){this._encapsulateStyle&&(e.__styleScoped?e.__styleScoped=!1:r.dom(e,this.is,this._scopeCssViaAttr))},_elementRemove:function(e){this._encapsulateStyle&&r.dom(e,this.is,this._scopeCssViaAttr,!0)},scopeSubtree:function(e,n){if(!t){var r=this,s=function(e){if(e.nodeType===Node.ELEMENT_NODE){var t=e.getAttribute("class");e.setAttribute("class",r._scopeElementClass(e,t));for(var n,s=e.querySelectorAll("*"),i=0;i<s.length&&(n=s[i]);i++)t=n.getAttribute("class"),n.setAttribute("class",r._scopeElementClass(n,t))}};if(s(e),n){var i=new MutationObserver(function(e){for(var t,n=0;n<e.length&&(t=e[n]);n++)if(t.addedNodes)for(var r=0;r<t.addedNodes.length;r++)s(t.addedNodes[r])});return i.observe(e,{childList:!0,subtree:!0}),i}}}})}(),Polymer.StyleProperties=function(){"use strict";function e(e,t){var n=parseInt(e/32),r=1<<e%32;t[n]=(t[n]||0)|r}var t=Polymer.DomApi.matchesSelector,n=Polymer.StyleUtil,r=Polymer.StyleTransformer,s=navigator.userAgent.match("Trident"),i=Polymer.Settings;return{decorateStyles:function(e,t){var s=this,i={},o=[],a=0,l=r._calcHostScope(t.is,t.extends);n.forRulesInStyles(e,function(e,r){s.decorateRule(e),e.index=a++,s.whenHostOrRootRule(t,e,r,function(r){if(e.parent.type===n.ruleTypes.MEDIA_RULE&&(t.__notStyleScopeCacheable=!0),r.isHost){var s=r.selector.split(" ").some(function(e){return 0===e.indexOf(l)&&e.length!==l.length});t.__notStyleScopeCacheable=t.__notStyleScopeCacheable||s}}),s.collectPropertiesInCssText(e.propertyInfo.cssText,i)},function(e){o.push(e)}),e._keyframes=o;var c=[];for(var h in i)c.push(h);return c},decorateRule:function(e){if(e.propertyInfo)return e.propertyInfo;var t={},n={},r=this.collectProperties(e,n);return r&&(t.properties=n,e.rules=null),t.cssText=this.collectCssText(e),e.propertyInfo=t,t},collectProperties:function(e,t){var n=e.propertyInfo;if(!n){for(var r,s,i,o=this.rx.VAR_ASSIGN,a=e.parsedCssText;r=o.exec(a);)s=(r[2]||r[3]).trim(),"inherit"!==s&&(t[r[1].trim()]=s),i=!0;return i}if(n.properties)return Polymer.Base.mixin(t,n.properties),!0},collectCssText:function(e){return this.collectConsumingCssText(e.parsedCssText)},collectConsumingCssText:function(e){return e.replace(this.rx.BRACKETED,"").replace(this.rx.VAR_ASSIGN,"")},collectPropertiesInCssText:function(e,t){for(var n;n=this.rx.VAR_CONSUMED.exec(e);){var r=n[1];":"!==n[2]&&(t[r]=!0)}},reify:function(e){for(var t,n=Object.getOwnPropertyNames(e),r=0;r<n.length;r++)t=n[r],e[t]=this.valueForProperty(e[t],e)},valueForProperty:function(e,t){if(e)if(e.indexOf(";")>=0)e=this.valueForProperties(e,t);else{var r=this,s=function(e,n,s,i){var o=r.valueForProperty(t[n],t);return o&&"initial"!==o?"apply-shim-inherit"===o&&(o="inherit"):o=r.valueForProperty(t[s]||s,t)||s,e+(o||"")+i};e=n.processVariableAndFallback(e,s)}return e&&e.trim()||""},valueForProperties:function(e,t){for(var n,r,s=e.split(";"),i=0;i<s.length;i++)if(n=s[i]){if(this.rx.MIXIN_MATCH.lastIndex=0,r=this.rx.MIXIN_MATCH.exec(n))n=this.valueForProperty(t[r[1]],t);else{var o=n.indexOf(":");if(o!==-1){var a=n.substring(o);a=a.trim(),a=this.valueForProperty(a,t)||a,n=n.substring(0,o)+a}}s[i]=n&&n.lastIndexOf(";")===n.length-1?n.slice(0,-1):n||""}return s.join(";")},applyProperties:function(e,t){var n="";e.propertyInfo||this.decorateRule(e),e.propertyInfo.cssText&&(n=this.valueForProperties(e.propertyInfo.cssText,t)),e.cssText=n},applyKeyframeTransforms:function(e,t){var n=e.cssText,r=e.cssText;if(null==e.hasAnimations&&(e.hasAnimations=this.rx.ANIMATION_MATCH.test(n)),e.hasAnimations){var s;if(null==e.keyframeNamesToTransform){e.keyframeNamesToTransform=[];for(var i in t)s=t[i],r=s(n),n!==r&&(n=r,e.keyframeNamesToTransform.push(i))}else{for(var o=0;o<e.keyframeNamesToTransform.length;++o)s=t[e.keyframeNamesToTransform[o]],n=s(n);r=n}}e.cssText=r},propertyDataFromStyles:function(r,s){var i={},o=this,a=[];return n.forActiveRulesInStyles(r,function(n){n.propertyInfo||o.decorateRule(n);var r=n.transformedSelector||n.parsedSelector;s&&n.propertyInfo.properties&&r&&t.call(s,r)&&(o.collectProperties(n,i),e(n.index,a))}),{properties:i,key:a}},_rootSelector:/:root|:host\s*>\s*\*/,_checkRoot:function(e,t){return Boolean(t.match(this._rootSelector))||"html"===e&&t.indexOf("html")>-1},whenHostOrRootRule:function(e,t,n,s){if(t.propertyInfo||self.decorateRule(t),t.propertyInfo.properties){var o=e.is?r._calcHostScope(e.is,e.extends):"html",a=t.parsedSelector,l=this._checkRoot(o,a),c=!l&&0===a.indexOf(":host"),h=e.__cssBuild||n.__cssBuild;if("shady"===h&&(l=a===o+" > *."+o||a.indexOf("html")>-1,c=!l&&0===a.indexOf(o)),l||c){var u=o;c&&(i.useNativeShadow&&!t.transformedSelector&&(t.transformedSelector=r._transformRuleCss(t,r._transformComplexSelector,e.is,o)),u=t.transformedSelector||t.parsedSelector),l&&"html"===o&&(u=t.transformedSelector||t.parsedSelector),s({selector:u,isHost:c,isRoot:l})}}},hostAndRootPropertiesForScope:function(e){var r={},s={},i=this;return n.forActiveRulesInStyles(e._styles,function(n,o){i.whenHostOrRootRule(e,n,o,function(o){var a=e._element||e;t.call(a,o.selector)&&(o.isHost?i.collectProperties(n,r):i.collectProperties(n,s))})}),{rootProps:s,hostProps:r}},transformStyles:function(e,t,n){var s=this,o=r._calcHostScope(e.is,e.extends),a=e.extends?"\\"+o.slice(0,-1)+"\\]":o,l=new RegExp(this.rx.HOST_PREFIX+a+this.rx.HOST_SUFFIX),c=this._elementKeyframeTransforms(e,n);return r.elementStyles(e,function(r){s.applyProperties(r,t),i.useNativeShadow||Polymer.StyleUtil.isKeyframesSelector(r)||!r.cssText||(s.applyKeyframeTransforms(r,c),s._scopeSelector(r,l,o,e._scopeCssViaAttr,n))})},_elementKeyframeTransforms:function(e,t){var n=e._styles._keyframes,r={};if(!i.useNativeShadow&&n)for(var s=0,o=n[s];s<n.length;o=n[++s])this._scopeKeyframes(o,t),r[o.keyframesName]=this._keyframesRuleTransformer(o);return r},_keyframesRuleTransformer:function(e){return function(t){return t.replace(e.keyframesNameRx,e.transformedKeyframesName)}},_scopeKeyframes:function(e,t){e.keyframesNameRx=new RegExp(e.keyframesName,"g"),e.transformedKeyframesName=e.keyframesName+"-"+t,e.transformedSelector=e.transformedSelector||e.selector,e.selector=e.transformedSelector.replace(e.keyframesName,e.transformedKeyframesName)},_scopeSelector:function(e,t,n,s,i){e.transformedSelector=e.transformedSelector||e.selector;for(var o,a=e.transformedSelector,l=s?"["+r.SCOPE_NAME+"~="+i+"]":"."+i,c=a.split(","),h=0,u=c.length;h<u&&(o=c[h]);h++)c[h]=o.match(t)?o.replace(n,l):l+" "+o;e.selector=c.join(",")},applyElementScopeSelector:function(e,t,n,s){var i=s?e.getAttribute(r.SCOPE_NAME):e.getAttribute("class")||"",o=n?i.replace(n,t):(i?i+" ":"")+this.XSCOPE_NAME+" "+t;i!==o&&(s?e.setAttribute(r.SCOPE_NAME,o):e.setAttribute("class",o))},applyElementStyle:function(e,t,r,o){var a=o?o.textContent||"":this.transformStyles(e,t,r),l=e._customStyle;return l&&!i.useNativeShadow&&l!==o&&(l._useCount--,l._useCount<=0&&l.parentNode&&l.parentNode.removeChild(l)),i.useNativeShadow?e._customStyle?(e._customStyle.textContent=a,o=e._customStyle):a&&(o=n.applyCss(a,r,e.root,e._scopeStyle)):o?o.parentNode||(s&&a.indexOf("@media")>-1&&(o.textContent=a),n.applyStyle(o,null,e._scopeStyle)):a&&(o=n.applyCss(a,r,null,e._scopeStyle)),o&&(o._useCount=o._useCount||0,e._customStyle!=o&&o._useCount++,e._customStyle=o),o},mixinCustomStyle:function(e,t){var n;for(var r in t)n=t[r],(n||0===n)&&(e[r]=n)},updateNativeStyleProperties:function(e,t){var n=e.__customStyleProperties;if(n)for(var r=0;r<n.length;r++)e.style.removeProperty(n[r]);var s=[];for(var i in t)null!==t[i]&&(e.style.setProperty(i,t[i]),s.push(i));e.__customStyleProperties=s},rx:n.rx,XSCOPE_NAME:"x-scope"}}(),function(){Polymer.StyleCache=function(){this.cache={}},Polymer.StyleCache.prototype={MAX:100,store:function(e,t,n,r){t.keyValues=n,t.styles=r;var s=this.cache[e]=this.cache[e]||[];s.push(t),s.length>this.MAX&&s.shift()},retrieve:function(e,t,n){var r=this.cache[e];if(r)for(var s,i=r.length-1;i>=0;i--)if(s=r[i],n===s.styles&&this._objectsEqual(t,s.keyValues))return s},clear:function(){this.cache={}},_objectsEqual:function(e,t){var n,r;for(var s in e)if(n=e[s],r=t[s],!("object"==typeof n&&n?this._objectsStrictlyEqual(n,r):n===r))return!1;return!Array.isArray(e)||e.length===t.length},_objectsStrictlyEqual:function(e,t){return this._objectsEqual(e,t)&&this._objectsEqual(t,e)}}}(),Polymer.StyleDefaults=function(){var e=Polymer.StyleProperties,t=Polymer.StyleCache,n=Polymer.Settings.useNativeCSSProperties,r={_styles:[],_properties:null,customStyle:{},_styleCache:new t,_element:Polymer.DomApi.wrap(document.documentElement),addStyle:function(e){this._styles.push(e),this._properties=null},get _styleProperties(){return this._properties||(e.decorateStyles(this._styles,this),this._styles._scopeStyleProperties=null,this._properties=e.hostAndRootPropertiesForScope(this).rootProps,e.mixinCustomStyle(this._properties,this.customStyle),e.reify(this._properties)),this._properties},hasStyleProperties:function(){return Boolean(this._properties)},_needsStyleProperties:function(){},_computeStyleProperties:function(){return this._styleProperties},updateStyles:function(t){this._properties=null,t&&Polymer.Base.mixin(this.customStyle,t),this._styleCache.clear();for(var r,s=0;s<this._styles.length;s++)r=this._styles[s],r=r.__importElement||r,r._apply(); n&&e.updateNativeStyleProperties(document.documentElement,this.customStyle)}};return r}(),function(){"use strict";var e=Polymer.Base.serializeValueToAttribute,t=Polymer.StyleProperties,n=Polymer.StyleTransformer,r=Polymer.StyleDefaults,s=Polymer.Settings.useNativeShadow,i=Polymer.Settings.useNativeCSSProperties;Polymer.Base._addFeature({_prepStyleProperties:function(){i||(this._ownStylePropertyNames=this._styles&&this._styles.length?t.decorateStyles(this._styles,this):null)},customStyle:null,getComputedStyleValue:function(e){return i||this._styleProperties||this._computeStyleProperties(),!i&&this._styleProperties&&this._styleProperties[e]||getComputedStyle(this).getPropertyValue(e)},_setupStyleProperties:function(){this.customStyle={},this._styleCache=null,this._styleProperties=null,this._scopeSelector=null,this._ownStyleProperties=null,this._customStyle=null},_needsStyleProperties:function(){return Boolean(!i&&this._ownStylePropertyNames&&this._ownStylePropertyNames.length)},_validateApplyShim:function(){if(this.__applyShimInvalid){Polymer.ApplyShim.transform(this._styles,this.__proto__);var e=n.elementStyles(this);if(s){var t=this._template.content.querySelector("style");t&&(t.textContent=e)}else{var r=this._scopeStyle&&this._scopeStyle.nextSibling;r&&(r.textContent=e)}}},_beforeAttached:function(){this._scopeSelector&&!this.__stylePropertiesInvalid||!this._needsStyleProperties()||(this.__stylePropertiesInvalid=!1,this._updateStyleProperties())},_findStyleHost:function(){for(var e,t=this;e=Polymer.dom(t).getOwnerRoot();){if(Polymer.isInstance(e.host))return e.host;t=e.host}return r},_updateStyleProperties:function(){var e,n=this._findStyleHost();n._styleProperties||n._computeStyleProperties(),n._styleCache||(n._styleCache=new Polymer.StyleCache);var r=t.propertyDataFromStyles(n._styles,this),i=!this.__notStyleScopeCacheable;i&&(r.key.customStyle=this.customStyle,e=n._styleCache.retrieve(this.is,r.key,this._styles));var a=Boolean(e);a?this._styleProperties=e._styleProperties:this._computeStyleProperties(r.properties),this._computeOwnStyleProperties(),a||(e=o.retrieve(this.is,this._ownStyleProperties,this._styles));var l=Boolean(e)&&!a,c=this._applyStyleProperties(e);a||(c=c&&s?c.cloneNode(!0):c,e={style:c,_scopeSelector:this._scopeSelector,_styleProperties:this._styleProperties},i&&(r.key.customStyle={},this.mixin(r.key.customStyle,this.customStyle),n._styleCache.store(this.is,e,r.key,this._styles)),l||o.store(this.is,Object.create(e),this._ownStyleProperties,this._styles))},_computeStyleProperties:function(e){var n=this._findStyleHost();n._styleProperties||n._computeStyleProperties();var r=Object.create(n._styleProperties),s=t.hostAndRootPropertiesForScope(this);this.mixin(r,s.hostProps),e=e||t.propertyDataFromStyles(n._styles,this).properties,this.mixin(r,e),this.mixin(r,s.rootProps),t.mixinCustomStyle(r,this.customStyle),t.reify(r),this._styleProperties=r},_computeOwnStyleProperties:function(){for(var e,t={},n=0;n<this._ownStylePropertyNames.length;n++)e=this._ownStylePropertyNames[n],t[e]=this._styleProperties[e];this._ownStyleProperties=t},_scopeCount:0,_applyStyleProperties:function(e){var n=this._scopeSelector;this._scopeSelector=e?e._scopeSelector:this.is+"-"+this.__proto__._scopeCount++;var r=t.applyElementStyle(this,this._styleProperties,this._scopeSelector,e&&e.style);return s||t.applyElementScopeSelector(this,this._scopeSelector,n,this._scopeCssViaAttr),r},serializeValueToAttribute:function(t,n,r){if(r=r||this,"class"===n&&!s){var i=r===this?this.domHost||this.dataHost:this;i&&(t=i._scopeElementClass(r,t))}r=this.shadyRoot&&this.shadyRoot._hasDistributed?Polymer.dom(r):r,e.call(this,t,n,r)},_scopeElementClass:function(e,t){return s||this._scopeCssViaAttr||(t=(t?t+" ":"")+a+" "+this.is+(e._scopeSelector?" "+l+" "+e._scopeSelector:"")),t},updateStyles:function(e){e&&this.mixin(this.customStyle,e),i?t.updateNativeStyleProperties(this,this.customStyle):(this.isAttached?this._needsStyleProperties()?this._updateStyleProperties():this._styleProperties=null:this.__stylePropertiesInvalid=!0,this._styleCache&&this._styleCache.clear(),this._updateRootStyles())},_updateRootStyles:function(e){e=e||this.root;for(var t,n=Polymer.dom(e)._query(function(e){return e.shadyRoot||e.shadowRoot}),r=0,s=n.length;r<s&&(t=n[r]);r++)t.updateStyles&&t.updateStyles()}}),Polymer.updateStyles=function(e){r.updateStyles(e),Polymer.Base._updateRootStyles(document)};var o=new Polymer.StyleCache;Polymer.customStyleCache=o;var a=n.SCOPE_NAME,l=t.XSCOPE_NAME}(),Polymer.Base._addFeature({_registerFeatures:function(){this._prepIs(),this._prepConstructor(),this._prepStyles()},_finishRegisterFeatures:function(){this._prepTemplate(),this._prepShimStyles(),this._prepAnnotations(),this._prepEffects(),this._prepBehaviors(),this._prepPropertyInfo(),this._prepBindings(),this._prepShady()},_prepBehavior:function(e){this._addPropertyEffects(e.properties),this._addComplexObserverEffects(e.observers),this._addHostAttributes(e.hostAttributes)},_initFeatures:function(){this._setupGestures(),this._setupConfigure(),this._setupStyleProperties(),this._setupDebouncers(),this._setupShady(),this._registerHost(),this._template&&(this._validateApplyShim(),this._poolContent(),this._beginHosting(),this._stampTemplate(),this._endHosting(),this._marshalAnnotationReferences()),this._marshalInstanceEffects(),this._marshalBehaviors(),this._marshalHostAttributes(),this._marshalAttributes(),this._tryReady()},_marshalBehavior:function(e){e.listeners&&this._listenListeners(e.listeners)}}),function(){var e,t=Polymer.StyleProperties,n=Polymer.StyleUtil,r=Polymer.CssParse,s=Polymer.StyleDefaults,i=Polymer.StyleTransformer,o=Polymer.ApplyShim,a=Polymer.Debounce,l=Polymer.Settings;Polymer({is:"custom-style",extends:"style",_template:null,properties:{include:String},ready:function(){this.__appliedElement=this.__appliedElement||this,this.__cssBuild=n.getCssBuildType(this),this.__appliedElement!==this&&(this.__appliedElement.__cssBuild=this.__cssBuild),this._tryApply()},attached:function(){this._tryApply()},_tryApply:function(){if(!this._appliesToDocument&&this.parentNode&&"dom-module"!==this.parentNode.localName){this._appliesToDocument=!0;var e=this.__appliedElement;if(l.useNativeCSSProperties||(this.__needsUpdateStyles=s.hasStyleProperties(),s.addStyle(e)),e.textContent||this.include)this._apply(!0);else{var t=this,n=new MutationObserver(function(){n.disconnect(),t._apply(!0)});n.observe(e,{childList:!0})}}},_updateStyles:function(){Polymer.updateStyles()},_apply:function(e){var t=this.__appliedElement;if(this.include&&(t.textContent=n.cssFromModules(this.include,!0)+t.textContent),t.textContent){var r=this.__cssBuild,s=n.isTargetedBuild(r);if(!l.useNativeCSSProperties||!s){var a=n.rulesForStyle(t);if(s||(n.forEachRule(a,function(e){i.documentRule(e)}),l.useNativeCSSProperties&&!r&&o.transform([t])),l.useNativeCSSProperties)t.textContent=n.toCssText(a);else{var c=this,h=function(){c._flushCustomProperties()};e?Polymer.RenderStatus.whenReady(h):h()}}}},_flushCustomProperties:function(){this.__needsUpdateStyles?(this.__needsUpdateStyles=!1,e=a(e,this._updateStyles)):this._applyCustomProperties()},_applyCustomProperties:function(){var e=this.__appliedElement;this._computeStyleProperties();var s=this._styleProperties,i=n.rulesForStyle(e);i&&(e.textContent=n.toCssText(i,function(e){var n=e.cssText=e.parsedCssText;e.propertyInfo&&e.propertyInfo.cssText&&(n=r.removeCustomPropAssignment(n),e.cssText=t.valueForProperties(n,s))}))}})}(),Polymer.Templatizer={properties:{__hideTemplateChildren__:{observer:"_showHideChildren"}},_instanceProps:Polymer.nob,_parentPropPrefix:"_parent_",templatize:function(e){if(this._templatized=e,e._content||(e._content=e.content),e._content._ctor)return this.ctor=e._content._ctor,void this._prepParentProperties(this.ctor.prototype,e);var t=Object.create(Polymer.Base);this._customPrepAnnotations(t,e),this._prepParentProperties(t,e),t._prepEffects(),this._customPrepEffects(t),t._prepBehaviors(),t._prepPropertyInfo(),t._prepBindings(),t._notifyPathUp=this._notifyPathUpImpl,t._scopeElementClass=this._scopeElementClassImpl,t.listen=this._listenImpl,t._showHideChildren=this._showHideChildrenImpl,t.__setPropertyOrig=this.__setProperty,t.__setProperty=this.__setPropertyImpl;var n=this._constructorImpl,r=function(e,t){n.call(this,e,t)};r.prototype=t,t.constructor=r,e._content._ctor=r,this.ctor=r},_getRootDataHost:function(){return this.dataHost&&this.dataHost._rootDataHost||this.dataHost},_showHideChildrenImpl:function(e){for(var t=this._children,n=0;n<t.length;n++){var r=t[n];Boolean(e)!=Boolean(r.__hideTemplateChildren__)&&(r.nodeType===Node.TEXT_NODE?e?(r.__polymerTextContent__=r.textContent,r.textContent=""):r.textContent=r.__polymerTextContent__:r.style&&(e?(r.__polymerDisplay__=r.style.display,r.style.display="none"):r.style.display=r.__polymerDisplay__)),r.__hideTemplateChildren__=e}},__setPropertyImpl:function(e,t,n,r){r&&r.__hideTemplateChildren__&&"textContent"==e&&(e="__polymerTextContent__"),this.__setPropertyOrig(e,t,n,r)},_debounceTemplate:function(e){Polymer.dom.addDebouncer(this.debounce("_debounceTemplate",e))},_flushTemplates:function(){Polymer.dom.flush()},_customPrepEffects:function(e){var t=e._parentProps;for(var n in t)e._addPropertyEffect(n,"function",this._createHostPropEffector(n));for(n in this._instanceProps)e._addPropertyEffect(n,"function",this._createInstancePropEffector(n))},_customPrepAnnotations:function(e,t){e._template=t;var n=t._content;if(!n._notes){var r=e._rootDataHost;r&&(Polymer.Annotations.prepElement=function(){r._prepElement()}),n._notes=Polymer.Annotations.parseAnnotations(t),Polymer.Annotations.prepElement=null,this._processAnnotations(n._notes)}e._notes=n._notes,e._parentProps=n._parentProps},_prepParentProperties:function(e,t){var n=this._parentProps=e._parentProps;if(this._forwardParentProp&&n){var r,s=e._parentPropProto;if(!s){for(r in this._instanceProps)delete n[r];s=e._parentPropProto=Object.create(null),t!=this&&(Polymer.Bind.prepareModel(s),Polymer.Base.prepareModelNotifyPath(s));for(r in n){var i=this._parentPropPrefix+r,o=[{kind:"function",effect:this._createForwardPropEffector(r),fn:Polymer.Bind._functionEffect},{kind:"notify",fn:Polymer.Bind._notifyEffect,effect:{event:Polymer.CaseMap.camelToDashCase(i)+"-changed"}}];Polymer.Bind._createAccessors(s,i,o)}}var a=this;t!=this&&(Polymer.Bind.prepareInstance(t),t._forwardParentProp=function(e,t){a._forwardParentProp(e,t)}),this._extendTemplate(t,s),t._pathEffector=function(e,t,n){return a._pathEffectorImpl(e,t,n)}}},_createForwardPropEffector:function(e){return function(t,n){this._forwardParentProp(e,n)}},_createHostPropEffector:function(e){var t=this._parentPropPrefix;return function(n,r){this.dataHost._templatized[t+e]=r}},_createInstancePropEffector:function(e){return function(t,n,r,s){s||this.dataHost._forwardInstanceProp(this,e,n)}},_extendTemplate:function(e,t){var n=Object.getOwnPropertyNames(t);t._propertySetter&&(e._propertySetter=t._propertySetter);for(var r,s=0;s<n.length&&(r=n[s]);s++){var i=e[r],o=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(e,r,o),void 0!==i&&e._propertySetter(r,i)}},_showHideChildren:function(e){},_forwardInstancePath:function(e,t,n){},_forwardInstanceProp:function(e,t,n){},_notifyPathUpImpl:function(e,t){var n=this.dataHost,r=Polymer.Path.root(e);n._forwardInstancePath.call(n,this,e,t),r in n._parentProps&&n._templatized._notifyPath(n._parentPropPrefix+e,t)},_pathEffectorImpl:function(e,t,n){if(this._forwardParentPath&&0===e.indexOf(this._parentPropPrefix)){var r=e.substring(this._parentPropPrefix.length),s=Polymer.Path.root(r);s in this._parentProps&&this._forwardParentPath(r,t)}Polymer.Base._pathEffector.call(this._templatized,e,t,n)},_constructorImpl:function(e,t){this._rootDataHost=t._getRootDataHost(),this._setupConfigure(e),this._registerHost(t),this._beginHosting(),this.root=this.instanceTemplate(this._template),this.root.__noContent=!this._notes._hasContent,this.root.__styleScoped=!0,this._endHosting(),this._marshalAnnotatedNodes(),this._marshalInstanceEffects(),this._marshalAnnotatedListeners();for(var n=[],r=this.root.firstChild;r;r=r.nextSibling)n.push(r),r._templateInstance=this;this._children=n,t.__hideTemplateChildren__&&this._showHideChildren(!0),this._tryReady()},_listenImpl:function(e,t,n){var r=this,s=this._rootDataHost,i=s._createEventHandler(e,t,n),o=function(e){e.model=r,i(e)};s._listen(e,t,o)},_scopeElementClassImpl:function(e,t){var n=this._rootDataHost;return n?n._scopeElementClass(e,t):t},stamp:function(e){if(e=e||{},this._parentProps){var t=this._templatized;for(var n in this._parentProps)void 0===e[n]&&(e[n]=t[this._parentPropPrefix+n])}return new this.ctor(e,this)},modelForElement:function(e){for(var t;e;)if(t=e._templateInstance){if(t.dataHost==this)return t;e=t.dataHost}else e=e.parentNode}},Polymer({is:"dom-template",extends:"template",_template:null,behaviors:[Polymer.Templatizer],ready:function(){this.templatize(this)}}),Polymer._collections=new WeakMap,Polymer.Collection=function(e){Polymer._collections.set(e,this),this.userArray=e,this.store=e.slice(),this.initMap()},Polymer.Collection.prototype={constructor:Polymer.Collection,initMap:function(){for(var e=this.omap=new WeakMap,t=this.pmap={},n=this.store,r=0;r<n.length;r++){var s=n[r];s&&"object"==typeof s?e.set(s,r):t[s]=r}},add:function(e){var t=this.store.push(e)-1;return e&&"object"==typeof e?this.omap.set(e,t):this.pmap[e]=t,"#"+t},removeKey:function(e){(e=this._parseKey(e))&&(this._removeFromMap(this.store[e]),delete this.store[e])},_removeFromMap:function(e){e&&"object"==typeof e?this.omap.delete(e):delete this.pmap[e]},remove:function(e){var t=this.getKey(e);return this.removeKey(t),t},getKey:function(e){var t;if(t=e&&"object"==typeof e?this.omap.get(e):this.pmap[e],void 0!=t)return"#"+t},getKeys:function(){return Object.keys(this.store).map(function(e){return"#"+e})},_parseKey:function(e){if(e&&"#"==e[0])return e.slice(1)},setItem:function(e,t){if(e=this._parseKey(e)){var n=this.store[e];n&&this._removeFromMap(n),t&&"object"==typeof t?this.omap.set(t,e):this.pmap[t]=e,this.store[e]=t}},getItem:function(e){if(e=this._parseKey(e))return this.store[e]},getItems:function(){var e=[],t=this.store;for(var n in t)e.push(t[n]);return e},_applySplices:function(e){for(var t,n,r={},s=0;s<e.length&&(n=e[s]);s++){n.addedKeys=[];for(var i=0;i<n.removed.length;i++)t=this.getKey(n.removed[i]),r[t]=r[t]?null:-1;for(i=0;i<n.addedCount;i++){var o=this.userArray[n.index+i];t=this.getKey(o),t=void 0===t?this.add(o):t,r[t]=r[t]?null:1,n.addedKeys.push(t)}}var a=[],l=[];for(t in r)r[t]<0&&(this.removeKey(t),a.push(t)),r[t]>0&&l.push(t);return[{removed:a,added:l}]}},Polymer.Collection.get=function(e){return Polymer._collections.get(e)||new Polymer.Collection(e)},Polymer.Collection.applySplices=function(e,t){var n=Polymer._collections.get(e);return n?n._applySplices(t):null},Polymer({is:"dom-repeat",extends:"template",_template:null,properties:{items:{type:Array},as:{type:String,value:"item"},indexAs:{type:String,value:"index"},sort:{type:Function,observer:"_sortChanged"},filter:{type:Function,observer:"_filterChanged"},observe:{type:String,observer:"_observeChanged"},delay:Number,renderedItemCount:{type:Number,notify:!0,readOnly:!0},initialCount:{type:Number,observer:"_initializeChunking"},targetFramerate:{type:Number,value:20},_targetFrameTime:{type:Number,computed:"_computeFrameTime(targetFramerate)"}},behaviors:[Polymer.Templatizer],observers:["_itemsChanged(items.*)"],created:function(){this._instances=[],this._pool=[],this._limit=1/0;var e=this;this._boundRenderChunk=function(){e._renderChunk()}},detached:function(){this.__isDetached=!0;for(var e=0;e<this._instances.length;e++)this._detachInstance(e)},attached:function(){if(this.__isDetached){this.__isDetached=!1;for(var e=Polymer.dom(Polymer.dom(this).parentNode),t=0;t<this._instances.length;t++)this._attachInstance(t,e)}},ready:function(){this._instanceProps={__key__:!0},this._instanceProps[this.as]=!0,this._instanceProps[this.indexAs]=!0,this.ctor||this.templatize(this)},_sortChanged:function(e){var t=this._getRootDataHost();this._sortFn=e&&("function"==typeof e?e:function(){return t[e].apply(t,arguments)}),this._needFullRefresh=!0,this.items&&this._debounceTemplate(this._render)},_filterChanged:function(e){var t=this._getRootDataHost();this._filterFn=e&&("function"==typeof e?e:function(){return t[e].apply(t,arguments)}),this._needFullRefresh=!0,this.items&&this._debounceTemplate(this._render)},_computeFrameTime:function(e){return Math.ceil(1e3/e)},_initializeChunking:function(){this.initialCount&&(this._limit=this.initialCount,this._chunkCount=this.initialCount,this._lastChunkTime=performance.now())},_tryRenderChunk:function(){this.items&&this._limit<this.items.length&&this.debounce("renderChunk",this._requestRenderChunk)},_requestRenderChunk:function(){requestAnimationFrame(this._boundRenderChunk)},_renderChunk:function(){var e=performance.now(),t=this._targetFrameTime/(e-this._lastChunkTime);this._chunkCount=Math.round(this._chunkCount*t)||1,this._limit+=this._chunkCount,this._lastChunkTime=e,this._debounceTemplate(this._render)},_observeChanged:function(){this._observePaths=this.observe&&this.observe.replace(".*",".").split(" ")},_itemsChanged:function(e){if("items"==e.path)Array.isArray(this.items)?this.collection=Polymer.Collection.get(this.items):this.items?this._error(this._logf("dom-repeat","expected array for `items`, found",this.items)):this.collection=null,this._keySplices=[],this._indexSplices=[],this._needFullRefresh=!0,this._initializeChunking(),this._debounceTemplate(this._render);else if("items.splices"==e.path)this._keySplices=this._keySplices.concat(e.value.keySplices),this._indexSplices=this._indexSplices.concat(e.value.indexSplices),this._debounceTemplate(this._render);else{var t=e.path.slice(6);this._forwardItemPath(t,e.value),this._checkObservedPaths(t)}},_checkObservedPaths:function(e){if(this._observePaths){e=e.substring(e.indexOf(".")+1);for(var t=this._observePaths,n=0;n<t.length;n++)if(0===e.indexOf(t[n]))return this._needFullRefresh=!0,void(this.delay?this.debounce("render",this._render,this.delay):this._debounceTemplate(this._render))}},render:function(){this._needFullRefresh=!0,this._debounceTemplate(this._render),this._flushTemplates()},_render:function(){this._needFullRefresh?(this._applyFullRefresh(),this._needFullRefresh=!1):this._keySplices.length&&(this._sortFn?this._applySplicesUserSort(this._keySplices):this._filterFn?this._applyFullRefresh():this._applySplicesArrayOrder(this._indexSplices)),this._keySplices=[],this._indexSplices=[];for(var e=this._keyToInstIdx={},t=this._instances.length-1;t>=0;t--){var n=this._instances[t];n.isPlaceholder&&t<this._limit?n=this._insertInstance(t,n.__key__):!n.isPlaceholder&&t>=this._limit&&(n=this._downgradeInstance(t,n.__key__)),e[n.__key__]=t,n.isPlaceholder||n.__setProperty(this.indexAs,t,!0)}this._pool.length=0,this._setRenderedItemCount(this._instances.length),this.fire("dom-change"),this._tryRenderChunk()},_applyFullRefresh:function(){var e,t=this.collection;if(this._sortFn)e=t?t.getKeys():[];else{e=[];var n=this.items;if(n)for(var r=0;r<n.length;r++)e.push(t.getKey(n[r]))}var s=this;for(this._filterFn&&(e=e.filter(function(e){return s._filterFn(t.getItem(e))})),this._sortFn&&e.sort(function(e,n){return s._sortFn(t.getItem(e),t.getItem(n))}),r=0;r<e.length;r++){var i=e[r],o=this._instances[r];o?(o.__key__=i,!o.isPlaceholder&&r<this._limit&&o.__setProperty(this.as,t.getItem(i),!0)):r<this._limit?this._insertInstance(r,i):this._insertPlaceholder(r,i)}for(var a=this._instances.length-1;a>=r;a--)this._detachAndRemoveInstance(a)},_numericSort:function(e,t){return e-t},_applySplicesUserSort:function(e){for(var t,n,r=this.collection,s={},i=0;i<e.length&&(n=e[i]);i++){for(var o=0;o<n.removed.length;o++)t=n.removed[o],s[t]=s[t]?null:-1;for(o=0;o<n.added.length;o++)t=n.added[o],s[t]=s[t]?null:1}var a=[],l=[];for(t in s)s[t]===-1&&a.push(this._keyToInstIdx[t]),1===s[t]&&l.push(t);if(a.length)for(a.sort(this._numericSort),i=a.length-1;i>=0;i--){var c=a[i];void 0!==c&&this._detachAndRemoveInstance(c)}var h=this;if(l.length){this._filterFn&&(l=l.filter(function(e){return h._filterFn(r.getItem(e))})),l.sort(function(e,t){return h._sortFn(r.getItem(e),r.getItem(t))});var u=0;for(i=0;i<l.length;i++)u=this._insertRowUserSort(u,l[i])}},_insertRowUserSort:function(e,t){for(var n=this.collection,r=n.getItem(t),s=this._instances.length-1,i=-1;e<=s;){var o=e+s>>1,a=this._instances[o].__key__,l=this._sortFn(n.getItem(a),r);if(l<0)e=o+1;else{if(!(l>0)){i=o;break}s=o-1}}return i<0&&(i=s+1),this._insertPlaceholder(i,t),i},_applySplicesArrayOrder:function(e){for(var t,n=0;n<e.length&&(t=e[n]);n++){for(var r=0;r<t.removed.length;r++)this._detachAndRemoveInstance(t.index);for(r=0;r<t.addedKeys.length;r++)this._insertPlaceholder(t.index+r,t.addedKeys[r])}},_detachInstance:function(e){var t=this._instances[e];if(!t.isPlaceholder){for(var n=0;n<t._children.length;n++){var r=t._children[n];Polymer.dom(t.root).appendChild(r)}return t}},_attachInstance:function(e,t){var n=this._instances[e];n.isPlaceholder||t.insertBefore(n.root,this)},_detachAndRemoveInstance:function(e){var t=this._detachInstance(e);t&&this._pool.push(t),this._instances.splice(e,1)},_insertPlaceholder:function(e,t){this._instances.splice(e,0,{isPlaceholder:!0,__key__:t})},_stampInstance:function(e,t){var n={__key__:t};return n[this.as]=this.collection.getItem(t),n[this.indexAs]=e,this.stamp(n)},_insertInstance:function(e,t){var n=this._pool.pop();n?(n.__setProperty(this.as,this.collection.getItem(t),!0),n.__setProperty("__key__",t,!0)):n=this._stampInstance(e,t);var r=this._instances[e+1],s=r&&!r.isPlaceholder?r._children[0]:this,i=Polymer.dom(this).parentNode;return Polymer.dom(i).insertBefore(n.root,s),this._instances[e]=n,n},_downgradeInstance:function(e,t){var n=this._detachInstance(e);return n&&this._pool.push(n),n={isPlaceholder:!0,__key__:t},this._instances[e]=n,n},_showHideChildren:function(e){for(var t=0;t<this._instances.length;t++)this._instances[t].isPlaceholder||this._instances[t]._showHideChildren(e)},_forwardInstanceProp:function(e,t,n){if(t==this.as){var r;r=this._sortFn||this._filterFn?this.items.indexOf(this.collection.getItem(e.__key__)):e[this.indexAs],this.set("items."+r,n)}},_forwardInstancePath:function(e,t,n){0===t.indexOf(this.as+".")&&this._notifyPath("items."+e.__key__+"."+t.slice(this.as.length+1),n)},_forwardParentProp:function(e,t){for(var n,r=this._instances,s=0;s<r.length&&(n=r[s]);s++)n.isPlaceholder||n.__setProperty(e,t,!0)},_forwardParentPath:function(e,t){for(var n,r=this._instances,s=0;s<r.length&&(n=r[s]);s++)n.isPlaceholder||n._notifyPath(e,t,!0)},_forwardItemPath:function(e,t){if(this._keyToInstIdx){var n=e.indexOf("."),r=e.substring(0,n<0?e.length:n),s=this._keyToInstIdx[r],i=this._instances[s];i&&!i.isPlaceholder&&(n>=0?(e=this.as+"."+e.substring(n+1),i._notifyPath(e,t,!0)):i.__setProperty(this.as,t,!0))}},itemForElement:function(e){var t=this.modelForElement(e);return t&&t[this.as]},keyForElement:function(e){var t=this.modelForElement(e);return t&&t.__key__},indexForElement:function(e){var t=this.modelForElement(e);return t&&t[this.indexAs]}}),Polymer({is:"array-selector",_template:null,properties:{items:{type:Array,observer:"clearSelection"},multi:{type:Boolean,value:!1,observer:"clearSelection"},selected:{type:Object,notify:!0},selectedItem:{type:Object,notify:!0},toggle:{type:Boolean,value:!1}},clearSelection:function(){if(Array.isArray(this.selected))for(var e=0;e<this.selected.length;e++)this.unlinkPaths("selected."+e);else this.unlinkPaths("selected"),this.unlinkPaths("selectedItem");this.multi?this.selected&&!this.selected.length||(this.selected=[],this._selectedColl=Polymer.Collection.get(this.selected)):(this.selected=null,this._selectedColl=null),this.selectedItem=null},isSelected:function(e){return this.multi?void 0!==this._selectedColl.getKey(e):this.selected==e},deselect:function(e){if(this.multi){if(this.isSelected(e)){var t=this._selectedColl.getKey(e);this.arrayDelete("selected",e),this.unlinkPaths("selected."+t)}}else this.selected=null,this.selectedItem=null,this.unlinkPaths("selected"),this.unlinkPaths("selectedItem")},select:function(e){var t=Polymer.Collection.get(this.items),n=t.getKey(e);if(this.multi)if(this.isSelected(e))this.toggle&&this.deselect(e);else{this.push("selected",e);var r=this._selectedColl.getKey(e);this.linkPaths("selected."+r,"items."+n)}else this.toggle&&e==this.selected?this.deselect():(this.selected=e,this.selectedItem=e,this.linkPaths("selected","items."+n),this.linkPaths("selectedItem","items."+n))}}),Polymer({is:"dom-if",extends:"template",_template:null,properties:{if:{type:Boolean,value:!1,observer:"_queueRender"},restamp:{type:Boolean,value:!1,observer:"_queueRender"}},behaviors:[Polymer.Templatizer],_queueRender:function(){this._debounceTemplate(this._render)},detached:function(){this.parentNode&&(this.parentNode.nodeType!=Node.DOCUMENT_FRAGMENT_NODE||Polymer.Settings.hasShadow&&this.parentNode instanceof ShadowRoot)||this._teardownInstance()},attached:function(){this.if&&this.ctor&&this.async(this._ensureInstance)},render:function(){this._flushTemplates()},_render:function(){this.if?(this.ctor||this.templatize(this),this._ensureInstance(),this._showHideChildren()):this.restamp&&this._teardownInstance(),!this.restamp&&this._instance&&this._showHideChildren(),this.if!=this._lastIf&&(this.fire("dom-change"),this._lastIf=this.if)},_ensureInstance:function(){var e=Polymer.dom(this).parentNode;if(e){var t=Polymer.dom(e);if(this._instance){var n=this._instance._children;if(n&&n.length){var r=Polymer.dom(this).previousSibling;if(r!==n[n.length-1])for(var s,i=0;i<n.length&&(s=n[i]);i++)t.insertBefore(s,this)}}else{this._instance=this.stamp();var o=this._instance.root;t.insertBefore(o,this)}}},_teardownInstance:function(){if(this._instance){var e=this._instance._children;if(e&&e.length)for(var t,n=Polymer.dom(Polymer.dom(e[0]).parentNode),r=0;r<e.length&&(t=e[r]);r++)n.removeChild(t);this._instance=null}},_showHideChildren:function(){var e=this.__hideTemplateChildren__||!this.if;this._instance&&this._instance._showHideChildren(e)},_forwardParentProp:function(e,t){this._instance&&this._instance.__setProperty(e,t,!0)},_forwardParentPath:function(e,t){this._instance&&this._instance._notifyPath(e,t,!0)}}),Polymer({is:"dom-bind",extends:"template",_template:null,created:function(){var e=this;Polymer.RenderStatus.whenReady(function(){"loading"==document.readyState?document.addEventListener("DOMContentLoaded",function(){e._markImportsReady()}):e._markImportsReady()})},_ensureReady:function(){this._readied||this._readySelf()},_markImportsReady:function(){this._importsReady=!0,this._ensureReady()},_registerFeatures:function(){this._prepConstructor()},_insertChildren:function(){var e=Polymer.dom(Polymer.dom(this).parentNode);e.insertBefore(this.root,this)},_removeChildren:function(){if(this._children)for(var e=0;e<this._children.length;e++)this.root.appendChild(this._children[e])},_initFeatures:function(){},_scopeElementClass:function(e,t){return this.dataHost?this.dataHost._scopeElementClass(e,t):t},_configureInstanceProperties:function(){},_prepConfigure:function(){var e={};for(var t in this._propertyEffects)e[t]=this[t];var n=this._setupConfigure;this._setupConfigure=function(){n.call(this,e)}},attached:function(){this._importsReady&&this.render()},detached:function(){this._removeChildren()},render:function(){this._ensureReady(),this._children||(this._template=this,this._prepAnnotations(),this._prepEffects(),this._prepBehaviors(),this._prepConfigure(),this._prepBindings(),this._prepPropertyInfo(),Polymer.Base._initFeatures.call(this),this._children=Polymer.TreeApi.arrayCopyChildNodes(this.root)),this._insertChildren(),this.fire("dom-change")}})</script><style>[hidden]{display:none!important}</style><style is="custom-style">:root{--layout:{display:-ms-flexbox;display:-webkit-flex;display:flex};--layout-inline:{display:-ms-inline-flexbox;display:-webkit-inline-flex;display:inline-flex};--layout-horizontal:{@apply(--layout);-ms-flex-direction:row;-webkit-flex-direction:row;flex-direction:row};--layout-horizontal-reverse:{@apply(--layout);-ms-flex-direction:row-reverse;-webkit-flex-direction:row-reverse;flex-direction:row-reverse};--layout-vertical:{@apply(--layout);-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column};--layout-vertical-reverse:{@apply(--layout);-ms-flex-direction:column-reverse;-webkit-flex-direction:column-reverse;flex-direction:column-reverse};--layout-wrap:{-ms-flex-wrap:wrap;-webkit-flex-wrap:wrap;flex-wrap:wrap};--layout-wrap-reverse:{-ms-flex-wrap:wrap-reverse;-webkit-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse};--layout-flex-auto:{-ms-flex:1 1 auto;-webkit-flex:1 1 auto;flex:1 1 auto};--layout-flex-none:{-ms-flex:none;-webkit-flex:none;flex:none};--layout-flex:{-ms-flex:1 1 0px;-webkit-flex:1;flex:1;-webkit-flex-basis:0px;flex-basis:0px};--layout-flex-2:{-ms-flex:2;-webkit-flex:2;flex:2};--layout-flex-3:{-ms-flex:3;-webkit-flex:3;flex:3};--layout-flex-4:{-ms-flex:4;-webkit-flex:4;flex:4};--layout-flex-5:{-ms-flex:5;-webkit-flex:5;flex:5};--layout-flex-6:{-ms-flex:6;-webkit-flex:6;flex:6};--layout-flex-7:{-ms-flex:7;-webkit-flex:7;flex:7};--layout-flex-8:{-ms-flex:8;-webkit-flex:8;flex:8};--layout-flex-9:{-ms-flex:9;-webkit-flex:9;flex:9};--layout-flex-10:{-ms-flex:10;-webkit-flex:10;flex:10};--layout-flex-11:{-ms-flex:11;-webkit-flex:11;flex:11};--layout-flex-12:{-ms-flex:12;-webkit-flex:12;flex:12};--layout-start:{-ms-flex-align:start;-webkit-align-items:flex-start;align-items:flex-start};--layout-center:{-ms-flex-align:center;-webkit-align-items:center;align-items:center};--layout-end:{-ms-flex-align:end;-webkit-align-items:flex-end;align-items:flex-end};--layout-baseline:{-ms-flex-align:baseline;-webkit-align-items:baseline;align-items:baseline};--layout-start-justified:{-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start};--layout-center-justified:{-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center};--layout-end-justified:{-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end};--layout-around-justified:{-ms-flex-pack:distribute;-webkit-justify-content:space-around;justify-content:space-around};--layout-justified:{-ms-flex-pack:justify;-webkit-justify-content:space-between;justify-content:space-between};--layout-center-center:{@apply(--layout-center);@apply(--layout-center-justified)};--layout-self-start:{-ms-align-self:flex-start;-webkit-align-self:flex-start;align-self:flex-start};--layout-self-center:{-ms-align-self:center;-webkit-align-self:center;align-self:center};--layout-self-end:{-ms-align-self:flex-end;-webkit-align-self:flex-end;align-self:flex-end};--layout-self-stretch:{-ms-align-self:stretch;-webkit-align-self:stretch;align-self:stretch};--layout-self-baseline:{-ms-align-self:baseline;-webkit-align-self:baseline;align-self:baseline};--layout-start-aligned:{-ms-flex-line-pack:start;-ms-align-content:flex-start;-webkit-align-content:flex-start;align-content:flex-start};--layout-end-aligned:{-ms-flex-line-pack:end;-ms-align-content:flex-end;-webkit-align-content:flex-end;align-content:flex-end};--layout-center-aligned:{-ms-flex-line-pack:center;-ms-align-content:center;-webkit-align-content:center;align-content:center};--layout-between-aligned:{-ms-flex-line-pack:justify;-ms-align-content:space-between;-webkit-align-content:space-between;align-content:space-between};--layout-around-aligned:{-ms-flex-line-pack:distribute;-ms-align-content:space-around;-webkit-align-content:space-around;align-content:space-around};--layout-block:{display:block};--layout-invisible:{visibility:hidden!important};--layout-relative:{position:relative};--layout-fit:{position:absolute;top:0;right:0;bottom:0;left:0};--layout-scroll:{-webkit-overflow-scrolling:touch;overflow:auto};--layout-fullbleed:{margin:0;height:100vh};--layout-fixed-top:{position:fixed;top:0;left:0;right:0};--layout-fixed-right:{position:fixed;top:0;right:0;bottom:0};--layout-fixed-bottom:{position:fixed;right:0;bottom:0;left:0};--layout-fixed-left:{position:fixed;top:0;bottom:0;left:0};}</style><script>Polymer.PaperSpinnerBehavior={listeners:{animationend:"__reset",webkitAnimationEnd:"__reset"},properties:{active:{type:Boolean,value:!1,reflectToAttribute:!0,observer:"__activeChanged"},alt:{type:String,value:"loading",observer:"__altChanged"},__coolingDown:{type:Boolean,value:!1}},__computeContainerClasses:function(e,t){return[e||t?"active":"",t?"cooldown":""].join(" ")},__activeChanged:function(e,t){this.__setAriaHidden(!e),this.__coolingDown=!e&&t},__altChanged:function(e){e===this.getPropertyInfo("alt").value?this.alt=this.getAttribute("aria-label")||e:(this.__setAriaHidden(""===e),this.setAttribute("aria-label",e))},__setAriaHidden:function(e){var t="aria-hidden";e?this.setAttribute(t,"true"):this.removeAttribute(t)},__reset:function(){this.active=!1,this.__coolingDown=!1}}</script><dom-module id="paper-spinner-styles" assetpath="../bower_components/paper-spinner/"><template><style>:host{display:inline-block;position:relative;width:28px;height:28px;--paper-spinner-container-rotation-duration:1568ms;--paper-spinner-expand-contract-duration:1333ms;--paper-spinner-full-cycle-duration:5332ms;--paper-spinner-cooldown-duration:400ms}#spinnerContainer{width:100%;height:100%;direction:ltr}#spinnerContainer.active{-webkit-animation:container-rotate var(--paper-spinner-container-rotation-duration) linear infinite;animation:container-rotate var(--paper-spinner-container-rotation-duration) linear infinite}@-webkit-keyframes container-rotate{to{-webkit-transform:rotate(360deg)}}@keyframes container-rotate{to{transform:rotate(360deg)}}.spinner-layer{position:absolute;width:100%;height:100%;opacity:0;white-space:nowrap;border-color:var(--paper-spinner-color,--google-blue-500)}.layer-1{border-color:var(--paper-spinner-layer-1-color,--google-blue-500)}.layer-2{border-color:var(--paper-spinner-layer-2-color,--google-red-500)}.layer-3{border-color:var(--paper-spinner-layer-3-color,--google-yellow-500)}.layer-4{border-color:var(--paper-spinner-layer-4-color,--google-green-500)}.active .spinner-layer{-webkit-animation-name:fill-unfill-rotate;-webkit-animation-duration:var(--paper-spinner-full-cycle-duration);-webkit-animation-timing-function:cubic-bezier(.4,0,.2,1);-webkit-animation-iteration-count:infinite;animation-name:fill-unfill-rotate;animation-duration:var(--paper-spinner-full-cycle-duration);animation-timing-function:cubic-bezier(.4,0,.2,1);animation-iteration-count:infinite;opacity:1}.active .spinner-layer.layer-1{-webkit-animation-name:fill-unfill-rotate,layer-1-fade-in-out;animation-name:fill-unfill-rotate,layer-1-fade-in-out}.active .spinner-layer.layer-2{-webkit-animation-name:fill-unfill-rotate,layer-2-fade-in-out;animation-name:fill-unfill-rotate,layer-2-fade-in-out}.active .spinner-layer.layer-3{-webkit-animation-name:fill-unfill-rotate,layer-3-fade-in-out;animation-name:fill-unfill-rotate,layer-3-fade-in-out}.active .spinner-layer.layer-4{-webkit-animation-name:fill-unfill-rotate,layer-4-fade-in-out;animation-name:fill-unfill-rotate,layer-4-fade-in-out}@-webkit-keyframes fill-unfill-rotate{12.5%{-webkit-transform:rotate(135deg)}25%{-webkit-transform:rotate(270deg)}37.5%{-webkit-transform:rotate(405deg)}50%{-webkit-transform:rotate(540deg)}62.5%{-webkit-transform:rotate(675deg)}75%{-webkit-transform:rotate(810deg)}87.5%{-webkit-transform:rotate(945deg)}to{-webkit-transform:rotate(1080deg)}}@keyframes fill-unfill-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}to{transform:rotate(1080deg)}}@-webkit-keyframes layer-1-fade-in-out{0%{opacity:1}25%{opacity:1}26%{opacity:0}89%{opacity:0}90%{opacity:1}to{opacity:1}}@keyframes layer-1-fade-in-out{0%{opacity:1}25%{opacity:1}26%{opacity:0}89%{opacity:0}90%{opacity:1}to{opacity:1}}@-webkit-keyframes layer-2-fade-in-out{0%{opacity:0}15%{opacity:0}25%{opacity:1}50%{opacity:1}51%{opacity:0}to{opacity:0}}@keyframes layer-2-fade-in-out{0%{opacity:0}15%{opacity:0}25%{opacity:1}50%{opacity:1}51%{opacity:0}to{opacity:0}}@-webkit-keyframes layer-3-fade-in-out{0%{opacity:0}40%{opacity:0}50%{opacity:1}75%{opacity:1}76%{opacity:0}to{opacity:0}}@keyframes layer-3-fade-in-out{0%{opacity:0}40%{opacity:0}50%{opacity:1}75%{opacity:1}76%{opacity:0}to{opacity:0}}@-webkit-keyframes layer-4-fade-in-out{0%{opacity:0}65%{opacity:0}75%{opacity:1}90%{opacity:1}to{opacity:0}}@keyframes layer-4-fade-in-out{0%{opacity:0}65%{opacity:0}75%{opacity:1}90%{opacity:1}to{opacity:0}}.circle-clipper{display:inline-block;position:relative;width:50%;height:100%;overflow:hidden;border-color:inherit}.spinner-layer::after{left:45%;width:10%;border-top-style:solid}.circle-clipper::after,.spinner-layer::after{content:'';box-sizing:border-box;position:absolute;top:0;border-width:var(--paper-spinner-stroke-width,3px);border-color:inherit;border-radius:50%}.circle-clipper::after{bottom:0;width:200%;border-style:solid;border-bottom-color:transparent!important}.circle-clipper.left::after{left:0;border-right-color:transparent!important;-webkit-transform:rotate(129deg);transform:rotate(129deg)}.circle-clipper.right::after{left:-100%;border-left-color:transparent!important;-webkit-transform:rotate(-129deg);transform:rotate(-129deg)}.active .circle-clipper::after,.active .gap-patch::after{-webkit-animation-duration:var(--paper-spinner-expand-contract-duration);-webkit-animation-timing-function:cubic-bezier(.4,0,.2,1);-webkit-animation-iteration-count:infinite;animation-duration:var(--paper-spinner-expand-contract-duration);animation-timing-function:cubic-bezier(.4,0,.2,1);animation-iteration-count:infinite}.active .circle-clipper.left::after{-webkit-animation-name:left-spin;animation-name:left-spin}.active .circle-clipper.right::after{-webkit-animation-name:right-spin;animation-name:right-spin}@-webkit-keyframes left-spin{0%{-webkit-transform:rotate(130deg)}50%{-webkit-transform:rotate(-5deg)}to{-webkit-transform:rotate(130deg)}}@keyframes left-spin{0%{transform:rotate(130deg)}50%{transform:rotate(-5deg)}to{transform:rotate(130deg)}}@-webkit-keyframes right-spin{0%{-webkit-transform:rotate(-130deg)}50%{-webkit-transform:rotate(5deg)}to{-webkit-transform:rotate(-130deg)}}@keyframes right-spin{0%{transform:rotate(-130deg)}50%{transform:rotate(5deg)}to{transform:rotate(-130deg)}}#spinnerContainer.cooldown{-webkit-animation:container-rotate var(--paper-spinner-container-rotation-duration) linear infinite,fade-out var(--paper-spinner-cooldown-duration) cubic-bezier(.4,0,.2,1);animation:container-rotate var(--paper-spinner-container-rotation-duration) linear infinite,fade-out var(--paper-spinner-cooldown-duration) cubic-bezier(.4,0,.2,1)}@-webkit-keyframes fade-out{0%{opacity:1}to{opacity:0}}@keyframes fade-out{0%{opacity:1}to{opacity:0}}</style></template></dom-module><dom-module id="paper-spinner" assetpath="../bower_components/paper-spinner/"><template strip-whitespace=""><style include="paper-spinner-styles"></style><div id="spinnerContainer" class-name="[[__computeContainerClasses(active, __coolingDown)]]"><div class="spinner-layer layer-1"><div class="circle-clipper left"></div><div class="circle-clipper right"></div></div><div class="spinner-layer layer-2"><div class="circle-clipper left"></div><div class="circle-clipper right"></div></div><div class="spinner-layer layer-3"><div class="circle-clipper left"></div><div class="circle-clipper right"></div></div><div class="spinner-layer layer-4"><div class="circle-clipper left"></div><div class="circle-clipper right"></div></div></div></template><script>Polymer({is:"paper-spinner",behaviors:[Polymer.PaperSpinnerBehavior]})</script></dom-module><style>@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-Thin.ttf) format("truetype");font-weight:100;font-style:normal}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-ThinItalic.ttf) format("truetype");font-weight:100;font-style:italic}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-Light.ttf) format("truetype");font-weight:300;font-style:normal}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-LightItalic.ttf) format("truetype");font-weight:300;font-style:italic}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-Italic.ttf) format("truetype");font-weight:400;font-style:italic}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-Medium.ttf) format("truetype");font-weight:500;font-style:normal}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-MediumItalic.ttf) format("truetype");font-weight:500;font-style:italic}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-BoldItalic.ttf) format("truetype");font-weight:700;font-style:italic}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-Black.ttf) format("truetype");font-weight:900;font-style:normal}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-BlackItalic.ttf) format("truetype");font-weight:900;font-style:italic}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-Thin.ttf) format("truetype");font-weight:100;font-style:normal}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-ThinItalic.ttf) format("truetype");font-weight:100;font-style:italic}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-Light.ttf) format("truetype");font-weight:300;font-style:normal}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-LightItalic.ttf) format("truetype");font-weight:300;font-style:italic}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-Italic.ttf) format("truetype");font-weight:400;font-style:italic}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-Medium.ttf) format("truetype");font-weight:500;font-style:normal}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-MediumItalic.ttf) format("truetype");font-weight:500;font-style:italic}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-BoldItalic.ttf) format("truetype");font-weight:700;font-style:italic}</style><style is="custom-style">:root{--paper-font-common-base:{font-family:Roboto,Noto,sans-serif;-webkit-font-smoothing:antialiased};--paper-font-common-code:{font-family:'Roboto Mono',Consolas,Menlo,monospace;-webkit-font-smoothing:antialiased};--paper-font-common-expensive-kerning:{text-rendering:optimizeLegibility};--paper-font-common-nowrap:{white-space:nowrap;overflow:hidden;text-overflow:ellipsis};--paper-font-display4:{@apply(--paper-font-common-base);@apply(--paper-font-common-nowrap);font-size:112px;font-weight:300;letter-spacing:-.044em;line-height:120px};--paper-font-display3:{@apply(--paper-font-common-base);@apply(--paper-font-common-nowrap);font-size:56px;font-weight:400;letter-spacing:-.026em;line-height:60px};--paper-font-display2:{@apply(--paper-font-common-base);font-size:45px;font-weight:400;letter-spacing:-.018em;line-height:48px};--paper-font-display1:{@apply(--paper-font-common-base);font-size:34px;font-weight:400;letter-spacing:-.01em;line-height:40px};--paper-font-headline:{@apply(--paper-font-common-base);font-size:24px;font-weight:400;letter-spacing:-.012em;line-height:32px};--paper-font-title:{@apply(--paper-font-common-base);@apply(--paper-font-common-nowrap);font-size:20px;font-weight:500;line-height:28px};--paper-font-subhead:{@apply(--paper-font-common-base);font-size:16px;font-weight:400;line-height:24px};--paper-font-body2:{@apply(--paper-font-common-base);font-size:14px;font-weight:500;line-height:24px};--paper-font-body1:{@apply(--paper-font-common-base);font-size:14px;font-weight:400;line-height:20px};--paper-font-caption:{@apply(--paper-font-common-base);@apply(--paper-font-common-nowrap);font-size:12px;font-weight:400;letter-spacing:0.011em;line-height:20px};--paper-font-menu:{@apply(--paper-font-common-base);@apply(--paper-font-common-nowrap);font-size:13px;font-weight:500;line-height:24px};--paper-font-button:{@apply(--paper-font-common-base);@apply(--paper-font-common-nowrap);font-size:14px;font-weight:500;letter-spacing:0.018em;line-height:24px;text-transform:uppercase};--paper-font-code2:{@apply(--paper-font-common-code);font-size:14px;font-weight:700;line-height:20px};--paper-font-code1:{@apply(--paper-font-common-code);font-size:14px;font-weight:500;line-height:20px};}</style><dom-module id="iron-flex" assetpath="../bower_components/iron-flex-layout/"><template><style>.layout.horizontal,.layout.vertical{display:-ms-flexbox;display:-webkit-flex;display:flex}.layout.inline{display:-ms-inline-flexbox;display:-webkit-inline-flex;display:inline-flex}.layout.horizontal{-ms-flex-direction:row;-webkit-flex-direction:row;flex-direction:row}.layout.vertical{-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column}.layout.wrap{-ms-flex-wrap:wrap;-webkit-flex-wrap:wrap;flex-wrap:wrap}.layout.center,.layout.center-center{-ms-flex-align:center;-webkit-align-items:center;align-items:center}.layout.center-center,.layout.center-justified{-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center}.flex{-ms-flex:1 1 0px;-webkit-flex:1;flex:1;-webkit-flex-basis:0px;flex-basis:0px}.flex-auto{-ms-flex:1 1 auto;-webkit-flex:1 1 auto;flex:1 1 auto}.flex-none{-ms-flex:none;-webkit-flex:none;flex:none}</style></template></dom-module><dom-module id="iron-flex-reverse" assetpath="../bower_components/iron-flex-layout/"><template><style>.layout.horizontal-reverse,.layout.vertical-reverse{display:-ms-flexbox;display:-webkit-flex;display:flex}.layout.horizontal-reverse{-ms-flex-direction:row-reverse;-webkit-flex-direction:row-reverse;flex-direction:row-reverse}.layout.vertical-reverse{-ms-flex-direction:column-reverse;-webkit-flex-direction:column-reverse;flex-direction:column-reverse}.layout.wrap-reverse{-ms-flex-wrap:wrap-reverse;-webkit-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse}</style></template></dom-module><dom-module id="iron-flex-alignment" assetpath="../bower_components/iron-flex-layout/"><template><style>.layout.start{-ms-flex-align:start;-webkit-align-items:flex-start;align-items:flex-start}.layout.center,.layout.center-center{-ms-flex-align:center;-webkit-align-items:center;align-items:center}.layout.end{-ms-flex-align:end;-webkit-align-items:flex-end;align-items:flex-end}.layout.baseline{-ms-flex-align:baseline;-webkit-align-items:baseline;align-items:baseline}.layout.start-justified{-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start}.layout.center-center,.layout.center-justified{-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center}.layout.end-justified{-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end}.layout.around-justified{-ms-flex-pack:distribute;-webkit-justify-content:space-around;justify-content:space-around}.layout.justified{-ms-flex-pack:justify;-webkit-justify-content:space-between;justify-content:space-between}.self-start{-ms-align-self:flex-start;-webkit-align-self:flex-start;align-self:flex-start}.self-center{-ms-align-self:center;-webkit-align-self:center;align-self:center}.self-end{-ms-align-self:flex-end;-webkit-align-self:flex-end;align-self:flex-end}.self-stretch{-ms-align-self:stretch;-webkit-align-self:stretch;align-self:stretch}.self-baseline{-ms-align-self:baseline;-webkit-align-self:baseline;align-self:baseline}; .layout.start-aligned{-ms-flex-line-pack:start;-ms-align-content:flex-start;-webkit-align-content:flex-start;align-content:flex-start}.layout.end-aligned{-ms-flex-line-pack:end;-ms-align-content:flex-end;-webkit-align-content:flex-end;align-content:flex-end}.layout.center-aligned{-ms-flex-line-pack:center;-ms-align-content:center;-webkit-align-content:center;align-content:center}.layout.between-aligned{-ms-flex-line-pack:justify;-ms-align-content:space-between;-webkit-align-content:space-between;align-content:space-between}.layout.around-aligned{-ms-flex-line-pack:distribute;-ms-align-content:space-around;-webkit-align-content:space-around;align-content:space-around}</style></template></dom-module><dom-module id="iron-flex-factors" assetpath="../bower_components/iron-flex-layout/"><template><style>.flex,.flex-1{-ms-flex:1 1 0px;-webkit-flex:1;flex:1;-webkit-flex-basis:0px;flex-basis:0px}.flex-2{-ms-flex:2;-webkit-flex:2;flex:2}.flex-3{-ms-flex:3;-webkit-flex:3;flex:3}.flex-4{-ms-flex:4;-webkit-flex:4;flex:4}.flex-5{-ms-flex:5;-webkit-flex:5;flex:5}.flex-6{-ms-flex:6;-webkit-flex:6;flex:6}.flex-7{-ms-flex:7;-webkit-flex:7;flex:7}.flex-8{-ms-flex:8;-webkit-flex:8;flex:8}.flex-9{-ms-flex:9;-webkit-flex:9;flex:9}.flex-10{-ms-flex:10;-webkit-flex:10;flex:10}.flex-11{-ms-flex:11;-webkit-flex:11;flex:11}.flex-12{-ms-flex:12;-webkit-flex:12;flex:12}</style></template></dom-module><dom-module id="iron-positioning" assetpath="../bower_components/iron-flex-layout/"><template><style>.block{display:block}[hidden]{display:none!important}.invisible{visibility:hidden!important}.relative{position:relative}.fit{position:absolute;top:0;right:0;bottom:0;left:0}body.fullbleed{margin:0;height:100vh}.scroll{-webkit-overflow-scrolling:touch;overflow:auto}.fixed-bottom,.fixed-left,.fixed-right,.fixed-top{position:fixed}.fixed-top{top:0;left:0;right:0}.fixed-right{top:0;right:0;bottom:0}.fixed-bottom{right:0;bottom:0;left:0}.fixed-left{top:0;bottom:0;left:0}</style></template></dom-module><script>!function(n){"use strict";function t(n,t){for(var e=[],r=0,u=n.length;r<u;r++)e.push(n[r].substr(0,t));return e}function e(n){return function(t,e,r){var u=r[n].indexOf(e.charAt(0).toUpperCase()+e.substr(1).toLowerCase());~u&&(t.month=u)}}function r(n,t){for(n=String(n),t=t||2;n.length<t;)n="0"+n;return n}var u={},o=/d{1,4}|M{1,4}|YY(?:YY)?|S{1,3}|Do|ZZ|([HhMsDm])\1?|[aA]|"[^"]*"|'[^']*'/g,a=/\d\d?/,i=/\d{3}/,s=/\d{4}/,m=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,d=function(){},f=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],c=["January","February","March","April","May","June","July","August","September","October","November","December"],h=t(c,3),l=t(f,3);u.i18n={dayNamesShort:l,dayNames:f,monthNamesShort:h,monthNames:c,amPm:["am","pm"],DoFn:function(n){return n+["th","st","nd","rd"][n%10>3?0:(n-n%10!==10)*n%10]}};var M={D:function(n){return n.getDate()},DD:function(n){return r(n.getDate())},Do:function(n,t){return t.DoFn(n.getDate())},d:function(n){return n.getDay()},dd:function(n){return r(n.getDay())},ddd:function(n,t){return t.dayNamesShort[n.getDay()]},dddd:function(n,t){return t.dayNames[n.getDay()]},M:function(n){return n.getMonth()+1},MM:function(n){return r(n.getMonth()+1)},MMM:function(n,t){return t.monthNamesShort[n.getMonth()]},MMMM:function(n,t){return t.monthNames[n.getMonth()]},YY:function(n){return String(n.getFullYear()).substr(2)},YYYY:function(n){return n.getFullYear()},h:function(n){return n.getHours()%12||12},hh:function(n){return r(n.getHours()%12||12)},H:function(n){return n.getHours()},HH:function(n){return r(n.getHours())},m:function(n){return n.getMinutes()},mm:function(n){return r(n.getMinutes())},s:function(n){return n.getSeconds()},ss:function(n){return r(n.getSeconds())},S:function(n){return Math.round(n.getMilliseconds()/100)},SS:function(n){return r(Math.round(n.getMilliseconds()/10),2)},SSS:function(n){return r(n.getMilliseconds(),3)},a:function(n,t){return n.getHours()<12?t.amPm[0]:t.amPm[1]},A:function(n,t){return n.getHours()<12?t.amPm[0].toUpperCase():t.amPm[1].toUpperCase()},ZZ:function(n){var t=n.getTimezoneOffset();return(t>0?"-":"+")+r(100*Math.floor(Math.abs(t)/60)+Math.abs(t)%60,4)}},g={D:[a,function(n,t){n.day=t}],Do:[new RegExp(a.source+m.source),function(n,t){n.day=parseInt(t,10)}],M:[a,function(n,t){n.month=t-1}],YY:[a,function(n,t){var e=new Date,r=+(""+e.getFullYear()).substr(0,2);n.year=""+(t>68?r-1:r)+t}],h:[a,function(n,t){n.hour=t}],m:[a,function(n,t){n.minute=t}],s:[a,function(n,t){n.second=t}],YYYY:[s,function(n,t){n.year=t}],S:[/\d/,function(n,t){n.millisecond=100*t}],SS:[/\d{2}/,function(n,t){n.millisecond=10*t}],SSS:[i,function(n,t){n.millisecond=t}],d:[a,d],ddd:[m,d],MMM:[m,e("monthNamesShort")],MMMM:[m,e("monthNames")],a:[m,function(n,t,e){var r=t.toLowerCase();r===e.amPm[0]?n.isPm=!1:r===e.amPm[1]&&(n.isPm=!0)}],ZZ:[/[\+\-]\d\d:?\d\d/,function(n,t){var e,r=(t+"").match(/([\+\-]|\d\d)/gi);r&&(e=+(60*r[1])+parseInt(r[2],10),n.timezoneOffset="+"===r[0]?e:-e)}]};g.dd=g.d,g.dddd=g.ddd,g.DD=g.D,g.mm=g.m,g.hh=g.H=g.HH=g.h,g.MM=g.M,g.ss=g.s,g.A=g.a,u.masks={default:"ddd MMM DD YYYY HH:mm:ss",shortDate:"M/D/YY",mediumDate:"MMM D, YYYY",longDate:"MMMM D, YYYY",fullDate:"dddd, MMMM D, YYYY",shortTime:"HH:mm",mediumTime:"HH:mm:ss",longTime:"HH:mm:ss.SSS"},u.format=function(n,t,e){var r=e||u.i18n;if("number"==typeof n&&(n=new Date(n)),"[object Date]"!==Object.prototype.toString.call(n)||isNaN(n.getTime()))throw new Error("Invalid Date in fecha.format");return t=u.masks[t]||t||u.masks.default,t.replace(o,function(t){return t in M?M[t](n,r):t.slice(1,t.length-1)})},u.parse=function(n,t,e){var r=e||u.i18n;if("string"!=typeof t)throw new Error("Invalid format in fecha.parse");if(t=u.masks[t]||t,n.length>1e3)return!1;var a=!0,i={};if(t.replace(o,function(t){if(g[t]){var e=g[t],u=n.search(e[0]);~u?n.replace(e[0],function(t){return e[1](i,t,r),n=n.substr(u+t.length),t}):a=!1}return g[t]?"":t.slice(1,t.length-1)}),!a)return!1;var s=new Date;i.isPm===!0&&null!=i.hour&&12!==+i.hour?i.hour=+i.hour+12:i.isPm===!1&&12===+i.hour&&(i.hour=0);var m;return null!=i.timezoneOffset?(i.minute=+(i.minute||0)-+i.timezoneOffset,m=new Date(Date.UTC(i.year||s.getFullYear(),i.month||0,i.day||1,i.hour||0,i.minute||0,i.second||0,i.millisecond||0))):m=new Date(i.year||s.getFullYear(),i.month||0,i.day||1,i.hour||0,i.minute||0,i.second||0,i.millisecond||0),m},"undefined"!=typeof module&&module.exports?module.exports=u:"function"==typeof define&&define.amd?define(function(){return u}):n.fecha=u}(this)</script><script>function toLocaleStringSupportsOptions(){try{(new Date).toLocaleString("i")}catch(e){return"RangeError"===e.name}return!1}function toLocaleDateStringSupportsOptions(){try{(new Date).toLocaleDateString("i")}catch(e){return"RangeError"===e.name}return!1}function toLocaleTimeStringSupportsOptions(){try{(new Date).toLocaleTimeString("i")}catch(e){return"RangeError"===e.name}return!1}window.hassUtil=window.hassUtil||{},window.hassUtil.DEFAULT_ICON="mdi:bookmark",window.hassUtil.OFF_STATES=["off","closed","unlocked"],window.hassUtil.DOMAINS_WITH_CARD=["climate","cover","configurator","input_select","input_slider","media_player","scene","script","weblink"],window.hassUtil.DOMAINS_WITH_MORE_INFO=["light","group","sun","climate","configurator","cover","script","media_player","camera","updater","alarm_control_panel","lock","automation"],window.hassUtil.DOMAINS_WITH_NO_HISTORY=["camera","configurator","scene"],window.hassUtil.HIDE_MORE_INFO=["input_select","scene","script","input_slider"],window.hassUtil.LANGUAGE=navigator.languages?navigator.languages[0]:navigator.language||navigator.userLanguage,window.hassUtil.attributeClassNames=function(e,t){return e?t.map(function(t){return t in e.attributes?"has-"+t:""}).join(" "):""},window.hassUtil.canToggle=function(e,t){return e.reactor.evaluate(e.serviceGetters.canToggleEntity(t))},window.hassUtil.dynamicContentUpdater=function(e,t,i){var n,a=Polymer.dom(e);a.lastChild&&a.lastChild.tagName===t?n=a.lastChild:(a.lastChild&&a.removeChild(a.lastChild),n=document.createElement(t)),Object.keys(i).forEach(function(e){n[e]=i[e]}),null===n.parentNode&&a.appendChild(n)},window.fecha.masks.haDateTime=window.fecha.masks.shortTime+" "+window.fecha.masks.mediumDate,toLocaleStringSupportsOptions()?window.hassUtil.formatDateTime=function(e){return e.toLocaleString(window.hassUtil.LANGUAGE,{year:"numeric",month:"long",day:"numeric",hour:"numeric",minute:"2-digit"})}:window.hassUtil.formatDateTime=function(e){return window.fecha.format(e,"haDateTime")},toLocaleDateStringSupportsOptions()?window.hassUtil.formatDate=function(e){return e.toLocaleDateString(window.hassUtil.LANGUAGE,{year:"numeric",month:"long",day:"numeric"})}:window.hassUtil.formatDate=function(e){return window.fecha.format(e,"mediumDate")},toLocaleTimeStringSupportsOptions()?window.hassUtil.formatTime=function(e){return e.toLocaleTimeString(window.hassUtil.LANGUAGE,{hour:"numeric",minute:"2-digit"})}:window.hassUtil.formatTime=function(e){return window.fecha.format(e,"shortTime")},window.hassUtil.relativeTime=function(e){var t,i=Math.abs(new Date-e)/1e3,n=new Date>e?"%s ago":"in %s",a=window.hassUtil.relativeTime.tests;for(t=0;t<a.length;t+=2){if(i<a[t])return i=Math.floor(i),n.replace("%s",1===i?"1 "+a[t+1]:i+" "+a[t+1]+"s");i/=a[t]}return i=Math.floor(i),n.replace("%s",1===i?"1 week":i+" weeks")},window.hassUtil.relativeTime.tests=[60,"second",60,"minute",24,"hour",7,"day"],window.hassUtil.stateCardType=function(e,t){return"unavailable"===t.state?"display":window.hassUtil.DOMAINS_WITH_CARD.indexOf(t.domain)!==-1?t.domain:window.hassUtil.canToggle(e,t.entityId)&&"hidden"!==t.attributes.control?"toggle":"display"},window.hassUtil.stateMoreInfoType=function(e){return window.hassUtil.DOMAINS_WITH_MORE_INFO.indexOf(e.domain)!==-1?e.domain:window.hassUtil.HIDE_MORE_INFO.indexOf(e.domain)!==-1?"hidden":"default"},window.hassUtil.domainIcon=function(e,t){switch(e){case"alarm_control_panel":return t&&"disarmed"===t?"mdi:bell-outline":"mdi:bell";case"automation":return"mdi:playlist-play";case"binary_sensor":return t&&"off"===t?"mdi:radiobox-blank":"mdi:checkbox-marked-circle";case"camera":return"mdi:video";case"climate":return"mdi:nest-thermostat";case"configurator":return"mdi:settings";case"conversation":return"mdi:text-to-speech";case"cover":return t&&"open"===t?"mdi:window-open":"mdi:window-closed";case"device_tracker":return"mdi:account";case"fan":return"mdi:fan";case"group":return"mdi:google-circles-communities";case"homeassistant":return"mdi:home";case"input_boolean":return"mdi:drawing";case"input_select":return"mdi:format-list-bulleted";case"input_slider":return"mdi:ray-vertex";case"light":return"mdi:lightbulb";case"lock":return t&&"unlocked"===t?"mdi:lock-open":"mdi:lock";case"media_player":return t&&"off"!==t&&"idle"!==t?"mdi:cast-connected":"mdi:cast";case"notify":return"mdi:comment-alert";case"proximity":return"mdi:apple-safari";case"remote":return"mdi:remote";case"scene":return"mdi:google-pages";case"script":return"mdi:file-document";case"sensor":return"mdi:eye";case"simple_alarm":return"mdi:bell";case"sun":return"mdi:white-balance-sunny";case"switch":return"mdi:flash";case"updater":return"mdi:cloud-upload";case"weblink":return"mdi:open-in-new";default:return console.warn("Unable to find icon for domain "+e+" ("+t+")"),window.hassUtil.DEFAULT_ICON}},window.hassUtil.binarySensorIcon=function(e){var t=e.state&&"off"===e.state;switch(e.attributes.sensor_class){case"connectivity":return t?"mdi:server-network-off":"mdi:server-network";case"light":return t?"mdi:brightness-5":"mdi:brightness-7";case"moisture":return t?"mdi:water-off":"mdi:water";case"motion":return t?"mdi:walk":"mdi:run";case"occupancy":return t?"mdi:home":"mdi:home-outline";case"opening":return t?"mdi:crop-square":"mdi:exit-to-app";case"sound":return t?"mdi:music-note-off":"mdi:music-note";case"vibration":return t?"mdi:crop-portrait":"mdi:vibrate";case"gas":case"power":case"safety":case"smoke":return t?"mdi:verified":"mdi:alert";default:return t?"mdi:radiobox-blank":"mdi:checkbox-marked-circle"}},window.hassUtil.stateIcon=function(e){var t;if(!e)return window.hassUtil.DEFAULT_ICON;if(e.attributes.icon)return e.attributes.icon;if(t=e.attributes.unit_of_measurement,t&&"sensor"===e.domain){if("°C"===t||"°F"===t)return"mdi:thermometer";if("Mice"===t)return"mdi:mouse-variant"}else if("binary_sensor"===e.domain)return window.hassUtil.binarySensorIcon(e);return window.hassUtil.domainIcon(e.domain,e.state)}</script><script>window.hassBehavior={attached:function(){var e=this.hass;if(!e)throw new Error("No hass property found on "+this.nodeName);this.nuclearUnwatchFns=Object.keys(this.properties).reduce(function(t,r){var n;if(!("bindNuclear"in this.properties[r]))return t;if(n=this.properties[r].bindNuclear(e),!n)throw new Error("Undefined getter specified for key "+r+" on "+this.nodeName);return this[r]=e.reactor.evaluate(n),t.concat(e.reactor.observe(n,function(e){this[r]=e}.bind(this)))}.bind(this),[])},detached:function(){for(;this.nuclearUnwatchFns.length;)this.nuclearUnwatchFns.shift()()}}</script><style is="custom-style">:root{--primary-text-color:var(--light-theme-text-color);--primary-background-color:var(--light-theme-background-color);--secondary-text-color:var(--light-theme-secondary-color);--disabled-text-color:var(--light-theme-disabled-color);--divider-color:var(--light-theme-divider-color);--error-color:var(--paper-deep-orange-a700);--primary-color:var(--paper-indigo-500);--light-primary-color:var(--paper-indigo-100);--dark-primary-color:var(--paper-indigo-700);--accent-color:var(--paper-pink-a200);--light-accent-color:var(--paper-pink-a100);--dark-accent-color:var(--paper-pink-a400);--light-theme-background-color:#ffffff;--light-theme-base-color:#000000;--light-theme-text-color:var(--paper-grey-900);--light-theme-secondary-color:#737373;--light-theme-disabled-color:#9b9b9b;--light-theme-divider-color:#dbdbdb;--dark-theme-background-color:var(--paper-grey-900);--dark-theme-base-color:#ffffff;--dark-theme-text-color:#ffffff;--dark-theme-secondary-color:#bcbcbc;--dark-theme-disabled-color:#646464;--dark-theme-divider-color:#3c3c3c;--text-primary-color:var(--dark-theme-text-color);--default-primary-color:var(--primary-color)}</style><script>!function(){var e={},t={},i=null;Polymer.IronMeta=Polymer({is:"iron-meta",properties:{type:{type:String,value:"default",observer:"_typeChanged"},key:{type:String,observer:"_keyChanged"},value:{type:Object,notify:!0,observer:"_valueChanged"},self:{type:Boolean,observer:"_selfChanged"},list:{type:Array,notify:!0}},hostAttributes:{hidden:!0},factoryImpl:function(e){if(e)for(var t in e)switch(t){case"type":case"key":case"value":this[t]=e[t]}},created:function(){this._metaDatas=e,this._metaArrays=t},_keyChanged:function(e,t){this._resetRegistration(t)},_valueChanged:function(e){this._resetRegistration(this.key)},_selfChanged:function(e){e&&(this.value=this)},_typeChanged:function(i){this._unregisterKey(this.key),e[i]||(e[i]={}),this._metaData=e[i],t[i]||(t[i]=[]),this.list=t[i],this._registerKeyValue(this.key,this.value)},byKey:function(e){return this._metaData&&this._metaData[e]},_resetRegistration:function(e){this._unregisterKey(e),this._registerKeyValue(this.key,this.value)},_unregisterKey:function(e){this._unregister(e,this._metaData,this.list)},_registerKeyValue:function(e,t){this._register(e,t,this._metaData,this.list)},_register:function(e,t,i,a){e&&i&&void 0!==t&&(i[e]=t,a.push(t))},_unregister:function(e,t,i){if(e&&t&&e in t){var a=t[e];delete t[e],this.arrayDelete(i,a)}}}),Polymer.IronMeta.getIronMeta=function(){return null===i&&(i=new Polymer.IronMeta),i},Polymer.IronMetaQuery=Polymer({is:"iron-meta-query",properties:{type:{type:String,value:"default",observer:"_typeChanged"},key:{type:String,observer:"_keyChanged"},value:{type:Object,notify:!0,readOnly:!0},list:{type:Array,notify:!0}},factoryImpl:function(e){if(e)for(var t in e)switch(t){case"type":case"key":this[t]=e[t]}},created:function(){this._metaDatas=e,this._metaArrays=t},_keyChanged:function(e){this._setValue(this._metaData&&this._metaData[e])},_typeChanged:function(i){this._metaData=e[i],this.list=t[i],this.key&&this._keyChanged(this.key)},byKey:function(e){return this._metaData&&this._metaData[e]}})}()</script><script>Polymer.IronValidatableBehaviorMeta=null,Polymer.IronValidatableBehavior={properties:{validator:{type:String},invalid:{notify:!0,reflectToAttribute:!0,type:Boolean,value:!1},_validatorMeta:{type:Object},validatorType:{type:String,value:"validator"},_validator:{type:Object,computed:"__computeValidator(validator)"}},observers:["_invalidChanged(invalid)"],registered:function(){Polymer.IronValidatableBehaviorMeta=new Polymer.IronMeta({type:"validator"})},_invalidChanged:function(){this.invalid?this.setAttribute("aria-invalid","true"):this.removeAttribute("aria-invalid")},hasValidator:function(){return null!=this._validator},validate:function(a){return this.invalid=!this._getValidity(a),!this.invalid},_getValidity:function(a){return!this.hasValidator()||this._validator.validate(a)},__computeValidator:function(){return Polymer.IronValidatableBehaviorMeta&&Polymer.IronValidatableBehaviorMeta.byKey(this.validator)}}</script><script>Polymer.IronFormElementBehavior={properties:{name:{type:String},value:{notify:!0,type:String},required:{type:Boolean,value:!1},_parentForm:{type:Object}},attached:function(){this.fire("iron-form-element-register")},detached:function(){this._parentForm&&this._parentForm.fire("iron-form-element-unregister",{target:this})}}</script><script>Polymer.IronCheckedElementBehaviorImpl={properties:{checked:{type:Boolean,value:!1,reflectToAttribute:!0,notify:!0,observer:"_checkedChanged"},toggles:{type:Boolean,value:!0,reflectToAttribute:!0},value:{type:String,value:"on",observer:"_valueChanged"}},observers:["_requiredChanged(required)"],created:function(){this._hasIronCheckedElementBehavior=!0},_getValidity:function(e){return this.disabled||!this.required||this.checked},_requiredChanged:function(){this.required?this.setAttribute("aria-required","true"):this.removeAttribute("aria-required")},_checkedChanged:function(){this.active=this.checked,this.fire("iron-change")},_valueChanged:function(){void 0!==this.value&&null!==this.value||(this.value="on")}},Polymer.IronCheckedElementBehavior=[Polymer.IronFormElementBehavior,Polymer.IronValidatableBehavior,Polymer.IronCheckedElementBehaviorImpl]</script><script>!function(){"use strict";function e(e,t){var n="";if(e){var i=e.toLowerCase();" "===i||v.test(i)?n="space":f.test(i)?n="esc":1==i.length?t&&!u.test(i)||(n=i):n=c.test(i)?i.replace("arrow",""):"multiply"==i?"*":i}return n}function t(e){var t="";return e&&(e in o?t=o[e]:h.test(e)?(e=parseInt(e.replace("U+","0x"),16),t=String.fromCharCode(e).toLowerCase()):t=e.toLowerCase()),t}function n(e){var t="";return Number(e)&&(t=e>=65&&e<=90?String.fromCharCode(32+e):e>=112&&e<=123?"f"+(e-112):e>=48&&e<=57?String(e-48):e>=96&&e<=105?String(e-96):d[e]),t}function i(i,r){return i.key?e(i.key,r):i.detail&&i.detail.key?e(i.detail.key,r):t(i.keyIdentifier)||n(i.keyCode)||""}function r(e,t){var n=i(t,e.hasModifiers);return n===e.key&&(!e.hasModifiers||!!t.shiftKey==!!e.shiftKey&&!!t.ctrlKey==!!e.ctrlKey&&!!t.altKey==!!e.altKey&&!!t.metaKey==!!e.metaKey)}function s(e){return 1===e.length?{combo:e,key:e,event:"keydown"}:e.split("+").reduce(function(e,t){var n=t.split(":"),i=n[0],r=n[1];return i in y?(e[y[i]]=!0,e.hasModifiers=!0):(e.key=i,e.event=r||"keydown"),e},{combo:e.split(":").shift()})}function a(e){return e.trim().split(" ").map(function(e){return s(e)})}var o={"U+0008":"backspace","U+0009":"tab","U+001B":"esc","U+0020":"space","U+007F":"del"},d={8:"backspace",9:"tab",13:"enter",27:"esc",33:"pageup",34:"pagedown",35:"end",36:"home",32:"space",37:"left",38:"up",39:"right",40:"down",46:"del",106:"*"},y={shift:"shiftKey",ctrl:"ctrlKey",alt:"altKey",meta:"metaKey"},u=/[a-z0-9*]/,h=/U\+/,c=/^arrow/,v=/^space(bar)?/,f=/^escape$/;Polymer.IronA11yKeysBehavior={properties:{keyEventTarget:{type:Object,value:function(){return this}},stopKeyboardEventPropagation:{type:Boolean,value:!1},_boundKeyHandlers:{type:Array,value:function(){return[]}},_imperativeKeyBindings:{type:Object,value:function(){return{}}}},observers:["_resetKeyEventListeners(keyEventTarget, _boundKeyHandlers)"],keyBindings:{},registered:function(){this._prepKeyBindings()},attached:function(){this._listenKeyEventListeners()},detached:function(){this._unlistenKeyEventListeners()},addOwnKeyBinding:function(e,t){this._imperativeKeyBindings[e]=t,this._prepKeyBindings(),this._resetKeyEventListeners()},removeOwnKeyBindings:function(){this._imperativeKeyBindings={},this._prepKeyBindings(),this._resetKeyEventListeners()},keyboardEventMatchesKeys:function(e,t){for(var n=a(t),i=0;i<n.length;++i)if(r(n[i],e))return!0;return!1},_collectKeyBindings:function(){var e=this.behaviors.map(function(e){return e.keyBindings});return e.indexOf(this.keyBindings)===-1&&e.push(this.keyBindings),e},_prepKeyBindings:function(){this._keyBindings={},this._collectKeyBindings().forEach(function(e){for(var t in e)this._addKeyBinding(t,e[t])},this);for(var e in this._imperativeKeyBindings)this._addKeyBinding(e,this._imperativeKeyBindings[e]);for(var t in this._keyBindings)this._keyBindings[t].sort(function(e,t){var n=e[0].hasModifiers,i=t[0].hasModifiers;return n===i?0:n?-1:1})},_addKeyBinding:function(e,t){a(e).forEach(function(e){this._keyBindings[e.event]=this._keyBindings[e.event]||[],this._keyBindings[e.event].push([e,t])},this)},_resetKeyEventListeners:function(){this._unlistenKeyEventListeners(),this.isAttached&&this._listenKeyEventListeners()},_listenKeyEventListeners:function(){this.keyEventTarget&&Object.keys(this._keyBindings).forEach(function(e){var t=this._keyBindings[e],n=this._onKeyBindingEvent.bind(this,t);this._boundKeyHandlers.push([this.keyEventTarget,e,n]),this.keyEventTarget.addEventListener(e,n)},this)},_unlistenKeyEventListeners:function(){for(var e,t,n,i;this._boundKeyHandlers.length;)e=this._boundKeyHandlers.pop(),t=e[0],n=e[1],i=e[2],t.removeEventListener(n,i)},_onKeyBindingEvent:function(e,t){if(this.stopKeyboardEventPropagation&&t.stopPropagation(),!t.defaultPrevented)for(var n=0;n<e.length;n++){var i=e[n][0],s=e[n][1];if(r(i,t)&&(this._triggerKeyHandler(i,s,t),t.defaultPrevented))return}},_triggerKeyHandler:function(e,t,n){var i=Object.create(e);i.keyboardEvent=n;var r=new CustomEvent(e.event,{detail:i,cancelable:!0});this[t].call(this,r),r.defaultPrevented&&n.preventDefault()}}}()</script><script>Polymer.IronControlState={properties:{focused:{type:Boolean,value:!1,notify:!0,readOnly:!0,reflectToAttribute:!0},disabled:{type:Boolean,value:!1,notify:!0,observer:"_disabledChanged",reflectToAttribute:!0},_oldTabIndex:{type:Number},_boundFocusBlurHandler:{type:Function,value:function(){return this._focusBlurHandler.bind(this)}}},observers:["_changedControlState(focused, disabled)"],ready:function(){this.addEventListener("focus",this._boundFocusBlurHandler,!0),this.addEventListener("blur",this._boundFocusBlurHandler,!0)},_focusBlurHandler:function(e){if(e.target===this)this._setFocused("focus"===e.type);else if(!this.shadowRoot){var t=Polymer.dom(e).localTarget;this.isLightDescendant(t)||this.fire(e.type,{sourceEvent:e},{node:this,bubbles:e.bubbles,cancelable:e.cancelable})}},_disabledChanged:function(e,t){this.setAttribute("aria-disabled",e?"true":"false"),this.style.pointerEvents=e?"none":"",e?(this._oldTabIndex=this.tabIndex,this._setFocused(!1),this.tabIndex=-1,this.blur()):void 0!==this._oldTabIndex&&(this.tabIndex=this._oldTabIndex)},_changedControlState:function(){this._controlStateChanged&&this._controlStateChanged()}}</script><script>Polymer.IronButtonStateImpl={properties:{pressed:{type:Boolean,readOnly:!0,value:!1,reflectToAttribute:!0,observer:"_pressedChanged"},toggles:{type:Boolean,value:!1,reflectToAttribute:!0},active:{type:Boolean,value:!1,notify:!0,reflectToAttribute:!0},pointerDown:{type:Boolean,readOnly:!0,value:!1},receivedFocusFromKeyboard:{type:Boolean,readOnly:!0},ariaActiveAttribute:{type:String,value:"aria-pressed",observer:"_ariaActiveAttributeChanged"}},listeners:{down:"_downHandler",up:"_upHandler",tap:"_tapHandler"},observers:["_detectKeyboardFocus(focused)","_activeChanged(active, ariaActiveAttribute)"],keyBindings:{"enter:keydown":"_asyncClick","space:keydown":"_spaceKeyDownHandler","space:keyup":"_spaceKeyUpHandler"},_mouseEventRe:/^mouse/,_tapHandler:function(){this.toggles?this._userActivate(!this.active):this.active=!1},_detectKeyboardFocus:function(e){this._setReceivedFocusFromKeyboard(!this.pointerDown&&e)},_userActivate:function(e){this.active!==e&&(this.active=e,this.fire("change"))},_downHandler:function(e){this._setPointerDown(!0),this._setPressed(!0),this._setReceivedFocusFromKeyboard(!1)},_upHandler:function(){this._setPointerDown(!1),this._setPressed(!1)},_spaceKeyDownHandler:function(e){var t=e.detail.keyboardEvent,i=Polymer.dom(t).localTarget;this.isLightDescendant(i)||(t.preventDefault(),t.stopImmediatePropagation(),this._setPressed(!0))},_spaceKeyUpHandler:function(e){var t=e.detail.keyboardEvent,i=Polymer.dom(t).localTarget;this.isLightDescendant(i)||(this.pressed&&this._asyncClick(),this._setPressed(!1))},_asyncClick:function(){this.async(function(){this.click()},1)},_pressedChanged:function(e){this._changedButtonState()},_ariaActiveAttributeChanged:function(e,t){t&&t!=e&&this.hasAttribute(t)&&this.removeAttribute(t)},_activeChanged:function(e,t){this.toggles?this.setAttribute(this.ariaActiveAttribute,e?"true":"false"):this.removeAttribute(this.ariaActiveAttribute),this._changedButtonState()},_controlStateChanged:function(){this.disabled?this._setPressed(!1):this._changedButtonState()},_changedButtonState:function(){this._buttonStateChanged&&this._buttonStateChanged()}},Polymer.IronButtonState=[Polymer.IronA11yKeysBehavior,Polymer.IronButtonStateImpl]</script><dom-module id="paper-ripple" assetpath="../bower_components/paper-ripple/"><template><style>:host{display:block;position:absolute;border-radius:inherit;overflow:hidden;top:0;left:0;right:0;bottom:0;pointer-events:none}:host([animating]){-webkit-transform:translate(0,0);transform:translate3d(0,0,0)}#background,#waves,.wave,.wave-container{pointer-events:none;position:absolute;top:0;left:0;width:100%;height:100%}#background,.wave{opacity:0}#waves,.wave{overflow:hidden}.wave,.wave-container{border-radius:50%}:host(.circle) #background,:host(.circle) #waves{border-radius:50%}:host(.circle) .wave-container{overflow:hidden}</style><div id="background"></div><div id="waves"></div></template></dom-module><script>!function(){function t(t){this.element=t,this.width=this.boundingRect.width,this.height=this.boundingRect.height,this.size=Math.max(this.width,this.height)}function i(t){this.element=t,this.color=window.getComputedStyle(t).color,this.wave=document.createElement("div"),this.waveContainer=document.createElement("div"),this.wave.style.backgroundColor=this.color,this.wave.classList.add("wave"),this.waveContainer.classList.add("wave-container"),Polymer.dom(this.waveContainer).appendChild(this.wave),this.resetInteractionState()}var e={distance:function(t,i,e,n){var s=t-e,o=i-n;return Math.sqrt(s*s+o*o)},now:window.performance&&window.performance.now?window.performance.now.bind(window.performance):Date.now};t.prototype={get boundingRect(){return this.element.getBoundingClientRect()},furthestCornerDistanceFrom:function(t,i){var n=e.distance(t,i,0,0),s=e.distance(t,i,this.width,0),o=e.distance(t,i,0,this.height),a=e.distance(t,i,this.width,this.height);return Math.max(n,s,o,a)}},i.MAX_RADIUS=300,i.prototype={get recenters(){return this.element.recenters},get center(){return this.element.center},get mouseDownElapsed(){var t;return this.mouseDownStart?(t=e.now()-this.mouseDownStart,this.mouseUpStart&&(t-=this.mouseUpElapsed),t):0},get mouseUpElapsed(){return this.mouseUpStart?e.now()-this.mouseUpStart:0},get mouseDownElapsedSeconds(){return this.mouseDownElapsed/1e3},get mouseUpElapsedSeconds(){return this.mouseUpElapsed/1e3},get mouseInteractionSeconds(){return this.mouseDownElapsedSeconds+this.mouseUpElapsedSeconds},get initialOpacity(){return this.element.initialOpacity},get opacityDecayVelocity(){return this.element.opacityDecayVelocity},get radius(){var t=this.containerMetrics.width*this.containerMetrics.width,e=this.containerMetrics.height*this.containerMetrics.height,n=1.1*Math.min(Math.sqrt(t+e),i.MAX_RADIUS)+5,s=1.1-.2*(n/i.MAX_RADIUS),o=this.mouseInteractionSeconds/s,a=n*(1-Math.pow(80,-o));return Math.abs(a)},get opacity(){return this.mouseUpStart?Math.max(0,this.initialOpacity-this.mouseUpElapsedSeconds*this.opacityDecayVelocity):this.initialOpacity},get outerOpacity(){var t=.3*this.mouseUpElapsedSeconds,i=this.opacity;return Math.max(0,Math.min(t,i))},get isOpacityFullyDecayed(){return this.opacity<.01&&this.radius>=Math.min(this.maxRadius,i.MAX_RADIUS)},get isRestingAtMaxRadius(){return this.opacity>=this.initialOpacity&&this.radius>=Math.min(this.maxRadius,i.MAX_RADIUS)},get isAnimationComplete(){return this.mouseUpStart?this.isOpacityFullyDecayed:this.isRestingAtMaxRadius},get translationFraction(){return Math.min(1,this.radius/this.containerMetrics.size*2/Math.sqrt(2))},get xNow(){return this.xEnd?this.xStart+this.translationFraction*(this.xEnd-this.xStart):this.xStart},get yNow(){return this.yEnd?this.yStart+this.translationFraction*(this.yEnd-this.yStart):this.yStart},get isMouseDown(){return this.mouseDownStart&&!this.mouseUpStart},resetInteractionState:function(){this.maxRadius=0,this.mouseDownStart=0,this.mouseUpStart=0,this.xStart=0,this.yStart=0,this.xEnd=0,this.yEnd=0,this.slideDistance=0,this.containerMetrics=new t(this.element)},draw:function(){var t,i,e;this.wave.style.opacity=this.opacity,t=this.radius/(this.containerMetrics.size/2),i=this.xNow-this.containerMetrics.width/2,e=this.yNow-this.containerMetrics.height/2,this.waveContainer.style.webkitTransform="translate("+i+"px, "+e+"px)",this.waveContainer.style.transform="translate3d("+i+"px, "+e+"px, 0)",this.wave.style.webkitTransform="scale("+t+","+t+")",this.wave.style.transform="scale3d("+t+","+t+",1)"},downAction:function(t){var i=this.containerMetrics.width/2,n=this.containerMetrics.height/2;this.resetInteractionState(),this.mouseDownStart=e.now(),this.center?(this.xStart=i,this.yStart=n,this.slideDistance=e.distance(this.xStart,this.yStart,this.xEnd,this.yEnd)):(this.xStart=t?t.detail.x-this.containerMetrics.boundingRect.left:this.containerMetrics.width/2,this.yStart=t?t.detail.y-this.containerMetrics.boundingRect.top:this.containerMetrics.height/2),this.recenters&&(this.xEnd=i,this.yEnd=n,this.slideDistance=e.distance(this.xStart,this.yStart,this.xEnd,this.yEnd)),this.maxRadius=this.containerMetrics.furthestCornerDistanceFrom(this.xStart,this.yStart),this.waveContainer.style.top=(this.containerMetrics.height-this.containerMetrics.size)/2+"px",this.waveContainer.style.left=(this.containerMetrics.width-this.containerMetrics.size)/2+"px",this.waveContainer.style.width=this.containerMetrics.size+"px",this.waveContainer.style.height=this.containerMetrics.size+"px"},upAction:function(t){this.isMouseDown&&(this.mouseUpStart=e.now())},remove:function(){Polymer.dom(this.waveContainer.parentNode).removeChild(this.waveContainer)}},Polymer({is:"paper-ripple",behaviors:[Polymer.IronA11yKeysBehavior],properties:{initialOpacity:{type:Number,value:.25},opacityDecayVelocity:{type:Number,value:.8},recenters:{type:Boolean,value:!1},center:{type:Boolean,value:!1},ripples:{type:Array,value:function(){return[]}},animating:{type:Boolean,readOnly:!0,reflectToAttribute:!0,value:!1},holdDown:{type:Boolean,value:!1,observer:"_holdDownChanged"},noink:{type:Boolean,value:!1},_animating:{type:Boolean},_boundAnimate:{type:Function,value:function(){return this.animate.bind(this)}}},get target(){return this.keyEventTarget},keyBindings:{"enter:keydown":"_onEnterKeydown","space:keydown":"_onSpaceKeydown","space:keyup":"_onSpaceKeyup"},attached:function(){11==this.parentNode.nodeType?this.keyEventTarget=Polymer.dom(this).getOwnerRoot().host:this.keyEventTarget=this.parentNode;var t=this.keyEventTarget;this.listen(t,"up","uiUpAction"),this.listen(t,"down","uiDownAction")},detached:function(){this.unlisten(this.keyEventTarget,"up","uiUpAction"),this.unlisten(this.keyEventTarget,"down","uiDownAction"),this.keyEventTarget=null},get shouldKeepAnimating(){for(var t=0;t<this.ripples.length;++t)if(!this.ripples[t].isAnimationComplete)return!0;return!1},simulatedRipple:function(){this.downAction(null),this.async(function(){this.upAction()},1)},uiDownAction:function(t){this.noink||this.downAction(t)},downAction:function(t){if(!(this.holdDown&&this.ripples.length>0)){var i=this.addRipple();i.downAction(t),this._animating||(this._animating=!0,this.animate())}},uiUpAction:function(t){this.noink||this.upAction(t)},upAction:function(t){this.holdDown||(this.ripples.forEach(function(i){i.upAction(t)}),this._animating=!0,this.animate())},onAnimationComplete:function(){this._animating=!1,this.$.background.style.backgroundColor=null,this.fire("transitionend")},addRipple:function(){var t=new i(this);return Polymer.dom(this.$.waves).appendChild(t.waveContainer),this.$.background.style.backgroundColor=t.color,this.ripples.push(t),this._setAnimating(!0),t},removeRipple:function(t){var i=this.ripples.indexOf(t);i<0||(this.ripples.splice(i,1),t.remove(),this.ripples.length||this._setAnimating(!1))},animate:function(){if(this._animating){var t,i;for(t=0;t<this.ripples.length;++t)i=this.ripples[t],i.draw(),this.$.background.style.opacity=i.outerOpacity,i.isOpacityFullyDecayed&&!i.isRestingAtMaxRadius&&this.removeRipple(i);this.shouldKeepAnimating||0!==this.ripples.length?window.requestAnimationFrame(this._boundAnimate):this.onAnimationComplete()}},_onEnterKeydown:function(){this.uiDownAction(),this.async(this.uiUpAction,1)},_onSpaceKeydown:function(){this.uiDownAction()},_onSpaceKeyup:function(){this.uiUpAction()},_holdDownChanged:function(t,i){void 0!==i&&(t?this.downAction():this.upAction())}})}()</script><script>Polymer.PaperRippleBehavior={properties:{noink:{type:Boolean,observer:"_noinkChanged"},_rippleContainer:{type:Object}},_buttonStateChanged:function(){this.focused&&this.ensureRipple()},_downHandler:function(e){Polymer.IronButtonStateImpl._downHandler.call(this,e),this.pressed&&this.ensureRipple(e)},ensureRipple:function(e){if(!this.hasRipple()){this._ripple=this._createRipple(),this._ripple.noink=this.noink;var i=this._rippleContainer||this.root;if(i&&Polymer.dom(i).appendChild(this._ripple),e){var n=Polymer.dom(this._rippleContainer||this),t=Polymer.dom(e).rootTarget;n.deepContains(t)&&this._ripple.uiDownAction(e)}}},getRipple:function(){return this.ensureRipple(),this._ripple},hasRipple:function(){return Boolean(this._ripple)},_createRipple:function(){return document.createElement("paper-ripple")},_noinkChanged:function(e){this.hasRipple()&&(this._ripple.noink=e)}}</script><script>Polymer.PaperInkyFocusBehaviorImpl={observers:["_focusedChanged(receivedFocusFromKeyboard)"],_focusedChanged:function(e){e&&this.ensureRipple(),this.hasRipple()&&(this._ripple.holdDown=e)},_createRipple:function(){var e=Polymer.PaperRippleBehavior._createRipple();return e.id="ink",e.setAttribute("center",""),e.classList.add("circle"),e}},Polymer.PaperInkyFocusBehavior=[Polymer.IronButtonState,Polymer.IronControlState,Polymer.PaperRippleBehavior,Polymer.PaperInkyFocusBehaviorImpl]</script><script>Polymer.PaperCheckedElementBehaviorImpl={_checkedChanged:function(){Polymer.IronCheckedElementBehaviorImpl._checkedChanged.call(this),this.hasRipple()&&(this.checked?this._ripple.setAttribute("checked",""):this._ripple.removeAttribute("checked"))},_buttonStateChanged:function(){Polymer.PaperRippleBehavior._buttonStateChanged.call(this),this.disabled||this.isAttached&&(this.checked=this.active)}},Polymer.PaperCheckedElementBehavior=[Polymer.PaperInkyFocusBehavior,Polymer.IronCheckedElementBehavior,Polymer.PaperCheckedElementBehaviorImpl]</script><dom-module id="paper-checkbox" assetpath="../bower_components/paper-checkbox/"><template strip-whitespace=""><style>:host{display:inline-block;white-space:nowrap;cursor:pointer;--calculated-paper-checkbox-size:var(--paper-checkbox-size, 18px);--calculated-paper-checkbox-ink-size:var(--paper-checkbox-ink-size, -1px);@apply(--paper-font-common-base);line-height:0;-webkit-tap-highlight-color:transparent}:host([hidden]){display:none!important}:host(:focus){outline:0}.hidden{display:none}#checkboxContainer{display:inline-block;position:relative;width:var(--calculated-paper-checkbox-size);height:var(--calculated-paper-checkbox-size);min-width:var(--calculated-paper-checkbox-size);margin:var(--paper-checkbox-margin,initial);vertical-align:var(--paper-checkbox-vertical-align,middle);background-color:var(--paper-checkbox-unchecked-background-color,transparent)}#ink{position:absolute;top:calc(0px - (var(--calculated-paper-checkbox-ink-size) - var(--calculated-paper-checkbox-size))/ 2);left:calc(0px - (var(--calculated-paper-checkbox-ink-size) - var(--calculated-paper-checkbox-size))/ 2);width:var(--calculated-paper-checkbox-ink-size);height:var(--calculated-paper-checkbox-ink-size);color:var(--paper-checkbox-unchecked-ink-color,var(--primary-text-color));opacity:.6;pointer-events:none}:host-context([dir=rtl]) #ink{right:calc(0px - (var(--calculated-paper-checkbox-ink-size) - var(--calculated-paper-checkbox-size))/ 2);left:auto}#ink[checked]{color:var(--paper-checkbox-checked-ink-color,var(--primary-color))}#checkbox{position:relative;box-sizing:border-box;height:100%;border:solid 2px;border-color:var(--paper-checkbox-unchecked-color,var(--primary-text-color));border-radius:2px;pointer-events:none;-webkit-transition:background-color 140ms,border-color 140ms;transition:background-color 140ms,border-color 140ms}#checkbox.checked #checkmark{-webkit-animation:checkmark-expand 140ms ease-out forwards;animation:checkmark-expand 140ms ease-out forwards}@-webkit-keyframes checkmark-expand{0%{-webkit-transform:scale(0,0) rotate(45deg)}100%{-webkit-transform:scale(1,1) rotate(45deg)}}@keyframes checkmark-expand{0%{transform:scale(0,0) rotate(45deg)}100%{transform:scale(1,1) rotate(45deg)}}#checkbox.checked{background-color:var(--paper-checkbox-checked-color,var(--primary-color));border-color:var(--paper-checkbox-checked-color,var(--primary-color))}#checkmark{position:absolute;width:36%;height:70%;border-style:solid;border-top:none;border-left:none;border-right-width:calc(2/15 * var(--calculated-paper-checkbox-size));border-bottom-width:calc(2/15 * var(--calculated-paper-checkbox-size));border-color:var(--paper-checkbox-checkmark-color,#fff);-webkit-transform-origin:97% 86%;transform-origin:97% 86%;box-sizing:content-box}:host-context([dir=rtl]) #checkmark{-webkit-transform-origin:50% 14%;transform-origin:50% 14%}#checkboxLabel{position:relative;display:inline-block;vertical-align:middle;padding-left:var(--paper-checkbox-label-spacing,8px);white-space:normal;line-height:normal;color:var(--paper-checkbox-label-color,var(--primary-text-color));@apply(--paper-checkbox-label)}:host([checked]) #checkboxLabel{color:var(--paper-checkbox-label-checked-color,var(--paper-checkbox-label-color,var(--primary-text-color)));@apply(--paper-checkbox-label-checked)}:host-context([dir=rtl]) #checkboxLabel{padding-right:var(--paper-checkbox-label-spacing,8px);padding-left:0}#checkboxLabel[hidden]{display:none}:host([disabled]) #checkbox{opacity:.5;border-color:var(--paper-checkbox-unchecked-color,var(--primary-text-color))}:host([disabled][checked]) #checkbox{background-color:var(--paper-checkbox-unchecked-color,var(--primary-text-color));opacity:.5}:host([disabled]) #checkboxLabel{opacity:.65}#checkbox.invalid:not(.checked){border-color:var(--paper-checkbox-error-color,var(--error-color))}</style><div id="checkboxContainer"><div id="checkbox" class$="[[_computeCheckboxClass(checked, invalid)]]"><div id="checkmark" class$="[[_computeCheckmarkClass(checked)]]"></div></div></div><div id="checkboxLabel"><content></content></div></template><script>Polymer({is:"paper-checkbox",behaviors:[Polymer.PaperCheckedElementBehavior],hostAttributes:{role:"checkbox","aria-checked":!1,tabindex:0},properties:{ariaActiveAttribute:{type:String,value:"aria-checked"}},attached:function(){var e=this.getComputedStyleValue("--calculated-paper-checkbox-ink-size").trim();if("-1px"===e){var t=parseFloat(this.getComputedStyleValue("--calculated-paper-checkbox-size").trim()),a=Math.floor(8/3*t);a%2!==t%2&&a++,this.customStyle["--paper-checkbox-ink-size"]=a+"px",this.updateStyles()}},_computeCheckboxClass:function(e,t){var a="";return e&&(a+="checked "),t&&(a+="invalid"),a},_computeCheckmarkClass:function(e){return e?"":"hidden"},_createRipple:function(){return this._rippleContainer=this.$.checkboxContainer,Polymer.PaperInkyFocusBehaviorImpl._createRipple.call(this)}})</script></dom-module><script>Polymer.PaperButtonBehaviorImpl={properties:{elevation:{type:Number,reflectToAttribute:!0,readOnly:!0}},observers:["_calculateElevation(focused, disabled, active, pressed, receivedFocusFromKeyboard)","_computeKeyboardClass(receivedFocusFromKeyboard)"],hostAttributes:{role:"button",tabindex:"0",animated:!0},_calculateElevation:function(){var e=1;this.disabled?e=0:this.active||this.pressed?e=4:this.receivedFocusFromKeyboard&&(e=3),this._setElevation(e)},_computeKeyboardClass:function(e){this.toggleClass("keyboard-focus",e)},_spaceKeyDownHandler:function(e){Polymer.IronButtonStateImpl._spaceKeyDownHandler.call(this,e),this.hasRipple()&&this.getRipple().ripples.length<1&&this._ripple.uiDownAction()},_spaceKeyUpHandler:function(e){Polymer.IronButtonStateImpl._spaceKeyUpHandler.call(this,e),this.hasRipple()&&this._ripple.uiUpAction()}},Polymer.PaperButtonBehavior=[Polymer.IronButtonState,Polymer.IronControlState,Polymer.PaperRippleBehavior,Polymer.PaperButtonBehaviorImpl]</script><style is="custom-style">:root{--shadow-transition:{transition:box-shadow .28s cubic-bezier(.4,0,.2,1)};--shadow-none:{box-shadow:none};--shadow-elevation-2dp:{box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2)};--shadow-elevation-3dp:{box-shadow:0 3px 4px 0 rgba(0,0,0,.14),0 1px 8px 0 rgba(0,0,0,.12),0 3px 3px -2px rgba(0,0,0,.4)};--shadow-elevation-4dp:{box-shadow:0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12),0 2px 4px -1px rgba(0,0,0,.4)};--shadow-elevation-6dp:{box-shadow:0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12),0 3px 5px -1px rgba(0,0,0,.4)};--shadow-elevation-8dp:{box-shadow:0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12),0 5px 5px -3px rgba(0,0,0,.4)};--shadow-elevation-12dp:{box-shadow:0 12px 16px 1px rgba(0,0,0,.14),0 4px 22px 3px rgba(0,0,0,.12),0 6px 7px -4px rgba(0,0,0,.4)};--shadow-elevation-16dp:{box-shadow:0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12),0 8px 10px -5px rgba(0,0,0,.4)};--shadow-elevation-24dp:{box-shadow:0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12),0 11px 15px -7px rgba(0,0,0,.4)};}</style><dom-module id="paper-material-shared-styles" assetpath="../bower_components/paper-material/"><template><style>:host{display:block;position:relative}:host([elevation="1"]){@apply(--shadow-elevation-2dp)}:host([elevation="2"]){@apply(--shadow-elevation-4dp)}:host([elevation="3"]){@apply(--shadow-elevation-6dp)}:host([elevation="4"]){@apply(--shadow-elevation-8dp)}:host([elevation="5"]){@apply(--shadow-elevation-16dp)}</style></template></dom-module><dom-module id="paper-button" assetpath="../bower_components/paper-button/"><template strip-whitespace=""><style include="paper-material-shared-styles">:host{@apply(--layout-inline);@apply(--layout-center-center);position:relative;box-sizing:border-box;min-width:5.14em;margin:0 .29em;background:0 0;-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:transparent;font:inherit;text-transform:uppercase;outline-width:0;border-radius:3px;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none;cursor:pointer;z-index:0;padding:.7em .57em;@apply(--paper-font-common-base);@apply(--paper-button)}:host([hidden]){display:none!important}:host([raised].keyboard-focus){font-weight:700;@apply(--paper-button-raised-keyboard-focus)}:host(:not([raised]).keyboard-focus){font-weight:700;@apply(--paper-button-flat-keyboard-focus)}:host([disabled]){background:#eaeaea;color:#a8a8a8;cursor:auto;pointer-events:none;@apply(--paper-button-disabled)}:host([animated]){@apply(--shadow-transition)}paper-ripple{color:var(--paper-button-ink-color)}</style><content></content></template><script>Polymer({is:"paper-button",behaviors:[Polymer.PaperButtonBehavior],properties:{raised:{type:Boolean,reflectToAttribute:!0,value:!1,observer:"_calculateElevation"}},_calculateElevation:function(){this.raised?Polymer.PaperButtonBehaviorImpl._calculateElevation.apply(this):this._setElevation(0)}})</script></dom-module><dom-module id="paper-input-container" assetpath="../bower_components/paper-input/"><template><style>:host{display:block;padding:8px 0;@apply(--paper-input-container)}:host([inline]){display:inline-block}:host([disabled]){pointer-events:none;opacity:.33;@apply(--paper-input-container-disabled)}:host([hidden]){display:none!important}.floated-label-placeholder{@apply(--paper-font-caption)}.underline{height:2px;position:relative}.focused-line{@apply(--layout-fit);border-bottom:2px solid var(--paper-input-container-focus-color,--primary-color);-webkit-transform-origin:center center;transform-origin:center center;-webkit-transform:scale3d(0,1,1);transform:scale3d(0,1,1);@apply(--paper-input-container-underline-focus)}.underline.is-highlighted .focused-line{-webkit-transform:none;transform:none;-webkit-transition:-webkit-transform .25s;transition:transform .25s;@apply(--paper-transition-easing)}.underline.is-invalid .focused-line{border-color:var(--paper-input-container-invalid-color,--error-color);-webkit-transform:none;transform:none;-webkit-transition:-webkit-transform .25s;transition:transform .25s;@apply(--paper-transition-easing)}.unfocused-line{@apply(--layout-fit);border-bottom:1px solid var(--paper-input-container-color,--secondary-text-color);@apply(--paper-input-container-underline)}:host([disabled]) .unfocused-line{border-bottom:1px dashed;border-color:var(--paper-input-container-color,--secondary-text-color);@apply(--paper-input-container-underline-disabled)}.label-and-input-container{@apply(--layout-flex-auto);@apply(--layout-relative);width:100%;max-width:100%}.input-content{@apply(--layout-horizontal);@apply(--layout-center);position:relative}.input-content ::content .paper-input-label,.input-content ::content label{position:absolute;top:0;right:0;left:0;width:100%;font:inherit;color:var(--paper-input-container-color,--secondary-text-color);-webkit-transition:-webkit-transform .25s,width .25s;transition:transform .25s,width .25s;-webkit-transform-origin:left top;transform-origin:left top;@apply(--paper-font-common-nowrap);@apply(--paper-font-subhead);@apply(--paper-input-container-label);@apply(--paper-transition-easing)}.input-content.label-is-floating ::content .paper-input-label,.input-content.label-is-floating ::content label{-webkit-transform:translateY(-75%) scale(.75);transform:translateY(-75%) scale(.75);width:133%;@apply(--paper-input-container-label-floating)}:host-context([dir=rtl]) .input-content.label-is-floating ::content .paper-input-label,:host-context([dir=rtl]) .input-content.label-is-floating ::content label{width:100%;-webkit-transform-origin:right top;transform-origin:right top}.input-content.label-is-highlighted ::content .paper-input-label,.input-content.label-is-highlighted ::content label{color:var(--paper-input-container-focus-color,--primary-color);@apply(--paper-input-container-label-focus)}.input-content.is-invalid ::content .paper-input-label,.input-content.is-invalid ::content label{color:var(--paper-input-container-invalid-color,--error-color)}.input-content.label-is-hidden ::content .paper-input-label,.input-content.label-is-hidden ::content label{visibility:hidden}.input-content ::content .paper-input-input,.input-content ::content input,.input-content ::content iron-autogrow-textarea,.input-content ::content textarea{position:relative;outline:0;box-shadow:none;padding:0;width:100%;max-width:100%;background:0 0;border:none;color:var(--paper-input-container-input-color,--primary-text-color);-webkit-appearance:none;text-align:inherit;vertical-align:bottom;@apply(--paper-font-subhead);@apply(--paper-input-container-input)}.input-content ::content input::-webkit-inner-spin-button,.input-content ::content input::-webkit-outer-spin-button{@apply(--paper-input-container-input-webkit-spinner)}::content [prefix]{@apply(--paper-font-subhead);@apply(--paper-input-prefix);@apply(--layout-flex-none)}::content [suffix]{@apply(--paper-font-subhead);@apply(--paper-input-suffix);@apply(--layout-flex-none)}.input-content ::content input{min-width:0}.input-content ::content textarea{resize:none}.add-on-content{position:relative}.add-on-content.is-invalid ::content *{color:var(--paper-input-container-invalid-color,--error-color)}.add-on-content.is-highlighted ::content *{color:var(--paper-input-container-focus-color,--primary-color)}</style><template is="dom-if" if="[[!noLabelFloat]]"><div class="floated-label-placeholder" aria-hidden="true"> </div></template><div class$="[[_computeInputContentClass(noLabelFloat,alwaysFloatLabel,focused,invalid,_inputHasContent)]]"><content select="[prefix]" id="prefix"></content><div class="label-and-input-container" id="labelAndInputContainer"><content select=":not([add-on]):not([prefix]):not([suffix])"></content></div><content select="[suffix]"></content></div><div class$="[[_computeUnderlineClass(focused,invalid)]]"><div class="unfocused-line"></div><div class="focused-line"></div></div><div class$="[[_computeAddOnContentClass(focused,invalid)]]"><content id="addOnContent" select="[add-on]"></content></div></template></dom-module><script>Polymer({is:"paper-input-container",properties:{noLabelFloat:{type:Boolean,value:!1},alwaysFloatLabel:{type:Boolean,value:!1},attrForValue:{type:String,value:"bind-value"},autoValidate:{type:Boolean,value:!1},invalid:{observer:"_invalidChanged",type:Boolean,value:!1},focused:{readOnly:!0,type:Boolean,value:!1,notify:!0},_addons:{type:Array},_inputHasContent:{type:Boolean,value:!1},_inputSelector:{type:String,value:"input,textarea,.paper-input-input"},_boundOnFocus:{type:Function,value:function(){return this._onFocus.bind(this)}},_boundOnBlur:{type:Function,value:function(){return this._onBlur.bind(this)}},_boundOnInput:{type:Function,value:function(){return this._onInput.bind(this)}},_boundValueChanged:{type:Function,value:function(){return this._onValueChanged.bind(this)}}},listeners:{"addon-attached":"_onAddonAttached","iron-input-validate":"_onIronInputValidate"},get _valueChangedEvent(){return this.attrForValue+"-changed"},get _propertyForValue(){return Polymer.CaseMap.dashToCamelCase(this.attrForValue)},get _inputElement(){return Polymer.dom(this).querySelector(this._inputSelector)},get _inputElementValue(){return this._inputElement[this._propertyForValue]||this._inputElement.value},ready:function(){this._addons||(this._addons=[]),this.addEventListener("focus",this._boundOnFocus,!0),this.addEventListener("blur",this._boundOnBlur,!0)},attached:function(){this.attrForValue?this._inputElement.addEventListener(this._valueChangedEvent,this._boundValueChanged):this.addEventListener("input",this._onInput),""!=this._inputElementValue?this._handleValueAndAutoValidate(this._inputElement):this._handleValue(this._inputElement)},_onAddonAttached:function(t){this._addons||(this._addons=[]);var n=t.target;this._addons.indexOf(n)===-1&&(this._addons.push(n),this.isAttached&&this._handleValue(this._inputElement))},_onFocus:function(){this._setFocused(!0)},_onBlur:function(){this._setFocused(!1),this._handleValueAndAutoValidate(this._inputElement)},_onInput:function(t){this._handleValueAndAutoValidate(t.target)},_onValueChanged:function(t){this._handleValueAndAutoValidate(t.target)},_handleValue:function(t){var n=this._inputElementValue;n||0===n||"number"===t.type&&!t.checkValidity()?this._inputHasContent=!0:this._inputHasContent=!1,this.updateAddons({inputElement:t,value:n,invalid:this.invalid})},_handleValueAndAutoValidate:function(t){if(this.autoValidate){var n;n=t.validate?t.validate(this._inputElementValue):t.checkValidity(),this.invalid=!n}this._handleValue(t)},_onIronInputValidate:function(t){this.invalid=this._inputElement.invalid},_invalidChanged:function(){this._addons&&this.updateAddons({invalid:this.invalid})},updateAddons:function(t){for(var n,e=0;n=this._addons[e];e++)n.update(t)},_computeInputContentClass:function(t,n,e,i,a){var u="input-content";if(t)a&&(u+=" label-is-hidden");else{var o=this.querySelector("label");n||a?(u+=" label-is-floating",this.$.labelAndInputContainer.style.position="static",i?u+=" is-invalid":e&&(u+=" label-is-highlighted")):o&&(this.$.labelAndInputContainer.style.position="relative")}return u},_computeUnderlineClass:function(t,n){var e="underline";return n?e+=" is-invalid":t&&(e+=" is-highlighted"),e},_computeAddOnContentClass:function(t,n){var e="add-on-content";return n?e+=" is-invalid":t&&(e+=" is-highlighted"),e}})</script><script>Polymer.PaperInputAddonBehavior={hostAttributes:{"add-on":""},attached:function(){this.fire("addon-attached")},update:function(t){}}</script><dom-module id="paper-input-error" assetpath="../bower_components/paper-input/"><template><style>:host{display:inline-block;visibility:hidden;color:var(--paper-input-container-invalid-color,--error-color);@apply(--paper-font-caption);@apply(--paper-input-error);position:absolute;left:0;right:0}:host([invalid]){visibility:visible};</style><content></content></template></dom-module><script>Polymer({is:"paper-input-error",behaviors:[Polymer.PaperInputAddonBehavior],properties:{invalid:{readOnly:!0,reflectToAttribute:!0,type:Boolean}},update:function(e){this._setInvalid(e.invalid)}})</script><dom-module id="iron-a11y-announcer" assetpath="../bower_components/iron-a11y-announcer/"><template><style>:host{display:inline-block;position:fixed;clip:rect(0,0,0,0)}</style><div aria-live$="[[mode]]">[[_text]]</div></template><script>!function(){"use strict";Polymer.IronA11yAnnouncer=Polymer({is:"iron-a11y-announcer",properties:{mode:{type:String,value:"polite"},_text:{type:String,value:""}},created:function(){Polymer.IronA11yAnnouncer.instance||(Polymer.IronA11yAnnouncer.instance=this),document.body.addEventListener("iron-announce",this._onIronAnnounce.bind(this))},announce:function(n){this._text="",this.async(function(){this._text=n},100)},_onIronAnnounce:function(n){n.detail&&n.detail.text&&this.announce(n.detail.text)}}),Polymer.IronA11yAnnouncer.instance=null,Polymer.IronA11yAnnouncer.requestAvailability=function(){Polymer.IronA11yAnnouncer.instance||(Polymer.IronA11yAnnouncer.instance=document.createElement("iron-a11y-announcer")),document.body.appendChild(Polymer.IronA11yAnnouncer.instance)}}()</script></dom-module><script>Polymer({is:"iron-input",extends:"input",behaviors:[Polymer.IronValidatableBehavior],properties:{bindValue:{observer:"_bindValueChanged",type:String},preventInvalidInput:{type:Boolean},allowedPattern:{type:String,observer:"_allowedPatternChanged"},_previousValidInput:{type:String,value:""},_patternAlreadyChecked:{type:Boolean,value:!1}},listeners:{input:"_onInput",keypress:"_onKeypress"},registered:function(){this._canDispatchEventOnDisabled()||(this._origDispatchEvent=this.dispatchEvent,this.dispatchEvent=this._dispatchEventFirefoxIE)},created:function(){Polymer.IronA11yAnnouncer.requestAvailability()},_canDispatchEventOnDisabled:function(){var e=document.createElement("input"),t=!1;e.disabled=!0,e.addEventListener("feature-check-dispatch-event",function(){t=!0});try{e.dispatchEvent(new Event("feature-check-dispatch-event"))}catch(e){}return t},_dispatchEventFirefoxIE:function(){var e=this.disabled;this.disabled=!1,this._origDispatchEvent.apply(this,arguments),this.disabled=e},get _patternRegExp(){var e;if(this.allowedPattern)e=new RegExp(this.allowedPattern);else switch(this.type){case"number":e=/[0-9.,e-]/}return e},ready:function(){this.bindValue=this.value},_bindValueChanged:function(){this.value!==this.bindValue&&(this.value=this.bindValue||0===this.bindValue||this.bindValue===!1?this.bindValue:""),this.fire("bind-value-changed",{value:this.bindValue})},_allowedPatternChanged:function(){this.preventInvalidInput=!!this.allowedPattern},_onInput:function(){if(this.preventInvalidInput&&!this._patternAlreadyChecked){var e=this._checkPatternValidity();e||(this._announceInvalidCharacter("Invalid string of characters not entered."),this.value=this._previousValidInput)}this.bindValue=this.value,this._previousValidInput=this.value,this._patternAlreadyChecked=!1},_isPrintable:function(e){var t=8==e.keyCode||9==e.keyCode||13==e.keyCode||27==e.keyCode,i=19==e.keyCode||20==e.keyCode||45==e.keyCode||46==e.keyCode||144==e.keyCode||145==e.keyCode||e.keyCode>32&&e.keyCode<41||e.keyCode>111&&e.keyCode<124;return!(t||0==e.charCode&&i)},_onKeypress:function(e){if(this.preventInvalidInput||"number"===this.type){var t=this._patternRegExp;if(t&&!(e.metaKey||e.ctrlKey||e.altKey)){this._patternAlreadyChecked=!0;var i=String.fromCharCode(e.charCode);this._isPrintable(e)&&!t.test(i)&&(e.preventDefault(),this._announceInvalidCharacter("Invalid character "+i+" not entered."))}}},_checkPatternValidity:function(){var e=this._patternRegExp;if(!e)return!0;for(var t=0;t<this.value.length;t++)if(!e.test(this.value[t]))return!1;return!0},validate:function(){var e=this.checkValidity();return e&&(this.required&&""===this.value?e=!1:this.hasValidator()&&(e=Polymer.IronValidatableBehavior.validate.call(this,this.value))),this.invalid=!e,this.fire("iron-input-validate"),e},_announceInvalidCharacter:function(e){this.fire("iron-announce",{text:e})}})</script><dom-module id="login-form" assetpath="layouts/"><template><style is="custom-style" include="iron-flex iron-positioning"></style><style>:host{white-space:nowrap}#passwordDecorator{display:block;margin-bottom:16px}paper-checkbox{margin-right:8px}paper-button{margin-left:72px}.interact{height:125px}#validatebox{margin-top:16px;text-align:center}.validatemessage{margin-top:10px}</style><div class="layout vertical center center-center fit"><img src="/static/icons/favicon-192x192.png" height="192"> <a href="#" id="hideKeyboardOnFocus"></a><div class="interact"><div id="loginform" hidden$="[[showLoading]]"><paper-input-container id="passwordDecorator" invalid="[[isInvalid]]"><label>Password</label><input is="iron-input" type="password" id="passwordInput"><paper-input-error invalid="[[isInvalid]]">[[errorMessage]]</paper-input-error></paper-input-container><div class="layout horizontal center"><paper-checkbox for="" id="rememberLogin">Remember</paper-checkbox><paper-button id="loginButton">Log In</paper-button></div></div><div id="validatebox" hidden$="[[!showLoading]]"><paper-spinner active="true"></paper-spinner><br><div class="validatemessage">Loading data</div></div></div></div></template></dom-module><script>Polymer({is:"login-form",behaviors:[window.hassBehavior],properties:{hass:{type:Object},errorMessage:{type:String,bindNuclear:function(e){return e.authGetters.attemptErrorMessage}},isInvalid:{type:Boolean,bindNuclear:function(e){return e.authGetters.isInvalidAttempt}},isValidating:{type:Boolean,observer:"isValidatingChanged",bindNuclear:function(e){return e.authGetters.isValidating}},loadingResources:{type:Boolean,value:!1},forceShowLoading:{type:Boolean,value:!1},showLoading:{type:Boolean,computed:"computeShowSpinner(forceShowLoading, isValidating)"}},listeners:{keydown:"passwordKeyDown","loginButton.tap":"validatePassword"},observers:["validatingChanged(isValidating, isInvalid)"],attached:function(){window.removeInitMsg()},computeShowSpinner:function(e,i){return e||i},validatingChanged:function(e,i){e||i||(this.$.passwordInput.value="")},isValidatingChanged:function(e){e||this.async(function(){this.$.passwordInput.focus()}.bind(this),10)},passwordKeyDown:function(e){13===e.keyCode?(this.validatePassword(),e.preventDefault()):this.isInvalid&&(this.isInvalid=!1)},validatePassword:function(){this.$.hideKeyboardOnFocus.focus(),window.validateAuth(this.$.passwordInput.value,this.$.rememberLogin.checked)}})</script><script>Polymer({is:"iron-media-query",properties:{queryMatches:{type:Boolean,value:!1,readOnly:!0,notify:!0},query:{type:String,observer:"queryChanged"},full:{type:Boolean,value:!1},_boundMQHandler:{value:function(){return this.queryHandler.bind(this)}},_mq:{value:null}},attached:function(){this.style.display="none",this.queryChanged()},detached:function(){this._remove()},_add:function(){this._mq&&this._mq.addListener(this._boundMQHandler)},_remove:function(){this._mq&&this._mq.removeListener(this._boundMQHandler),this._mq=null},queryChanged:function(){this._remove();var e=this.query;e&&(this.full||"("===e[0]||(e="("+e+")"),this._mq=window.matchMedia(e),this._add(),this.queryHandler(this._mq))},queryHandler:function(e){this._setQueryMatches(e.matches)}})</script><script>Polymer.IronSelection=function(e){this.selection=[],this.selectCallback=e},Polymer.IronSelection.prototype={get:function(){return this.multi?this.selection.slice():this.selection[0]},clear:function(e){this.selection.slice().forEach(function(t){(!e||e.indexOf(t)<0)&&this.setItemSelected(t,!1)},this)},isSelected:function(e){return this.selection.indexOf(e)>=0},setItemSelected:function(e,t){if(null!=e&&t!==this.isSelected(e)){if(t)this.selection.push(e);else{var i=this.selection.indexOf(e);i>=0&&this.selection.splice(i,1)}this.selectCallback&&this.selectCallback(e,t)}},select:function(e){this.multi?this.toggle(e):this.get()!==e&&(this.setItemSelected(this.get(),!1),this.setItemSelected(e,!0))},toggle:function(e){this.setItemSelected(e,!this.isSelected(e))}}</script><script>Polymer.IronSelectableBehavior={properties:{attrForSelected:{type:String,value:null},selected:{type:String,notify:!0},selectedItem:{type:Object,readOnly:!0,notify:!0},activateEvent:{type:String,value:"tap",observer:"_activateEventChanged"},selectable:String,selectedClass:{type:String,value:"iron-selected"},selectedAttribute:{type:String,value:null},fallbackSelection:{type:String,value:null},items:{type:Array,readOnly:!0,notify:!0,value:function(){return[]}},_excludedLocalNames:{type:Object,value:function(){return{template:1}}}},observers:["_updateAttrForSelected(attrForSelected)","_updateSelected(selected)","_checkFallback(fallbackSelection)"],created:function(){this._bindFilterItem=this._filterItem.bind(this),this._selection=new Polymer.IronSelection(this._applySelection.bind(this))},attached:function(){this._observer=this._observeItems(this),this._updateItems(),this._shouldUpdateSelection||this._updateSelected(),this._addListener(this.activateEvent)},detached:function(){this._observer&&Polymer.dom(this).unobserveNodes(this._observer),this._removeListener(this.activateEvent)},indexOf:function(e){return this.items.indexOf(e)},select:function(e){this.selected=e},selectPrevious:function(){var e=this.items.length,t=(Number(this._valueToIndex(this.selected))-1+e)%e;this.selected=this._indexToValue(t)},selectNext:function(){var e=(Number(this._valueToIndex(this.selected))+1)%this.items.length;this.selected=this._indexToValue(e)},selectIndex:function(e){this.select(this._indexToValue(e))},forceSynchronousItemUpdate:function(){this._updateItems()},get _shouldUpdateSelection(){return null!=this.selected},_checkFallback:function(){this._shouldUpdateSelection&&this._updateSelected()},_addListener:function(e){this.listen(this,e,"_activateHandler")},_removeListener:function(e){this.unlisten(this,e,"_activateHandler")},_activateEventChanged:function(e,t){this._removeListener(t),this._addListener(e)},_updateItems:function(){var e=Polymer.dom(this).queryDistributedElements(this.selectable||"*");e=Array.prototype.filter.call(e,this._bindFilterItem),this._setItems(e)},_updateAttrForSelected:function(){this._shouldUpdateSelection&&(this.selected=this._indexToValue(this.indexOf(this.selectedItem)))},_updateSelected:function(){this._selectSelected(this.selected)},_selectSelected:function(e){this._selection.select(this._valueToItem(this.selected)),this.fallbackSelection&&this.items.length&&void 0===this._selection.get()&&(this.selected=this.fallbackSelection)},_filterItem:function(e){return!this._excludedLocalNames[e.localName]},_valueToItem:function(e){return null==e?null:this.items[this._valueToIndex(e)]},_valueToIndex:function(e){if(!this.attrForSelected)return Number(e);for(var t,i=0;t=this.items[i];i++)if(this._valueForItem(t)==e)return i},_indexToValue:function(e){if(!this.attrForSelected)return e;var t=this.items[e];return t?this._valueForItem(t):void 0},_valueForItem:function(e){var t=e[Polymer.CaseMap.dashToCamelCase(this.attrForSelected)];return void 0!=t?t:e.getAttribute(this.attrForSelected)},_applySelection:function(e,t){this.selectedClass&&this.toggleClass(this.selectedClass,t,e),this.selectedAttribute&&this.toggleAttribute(this.selectedAttribute,t,e),this._selectionChange(),this.fire("iron-"+(t?"select":"deselect"),{item:e})},_selectionChange:function(){this._setSelectedItem(this._selection.get())},_observeItems:function(e){return Polymer.dom(e).observeNodes(function(e){this._updateItems(),this._shouldUpdateSelection&&this._updateSelected(),this.fire("iron-items-changed",e,{bubbles:!1,cancelable:!1})})},_activateHandler:function(e){for(var t=e.target,i=this.items;t&&t!=this;){var s=i.indexOf(t);if(s>=0){var n=this._indexToValue(s);return void this._itemActivate(n,t)}t=t.parentNode}},_itemActivate:function(e,t){this.fire("iron-activate",{selected:e,item:t},{cancelable:!0}).defaultPrevented||this.select(e)}}</script><script>Polymer.IronMultiSelectableBehaviorImpl={properties:{multi:{type:Boolean,value:!1,observer:"multiChanged"},selectedValues:{type:Array,notify:!0},selectedItems:{type:Array,readOnly:!0,notify:!0}},observers:["_updateSelected(selectedValues.splices)"],select:function(e){this.multi?this.selectedValues?this._toggleSelected(e):this.selectedValues=[e]:this.selected=e},multiChanged:function(e){this._selection.multi=e},get _shouldUpdateSelection(){return null!=this.selected||null!=this.selectedValues&&this.selectedValues.length},_updateAttrForSelected:function(){this.multi?this._shouldUpdateSelection&&(this.selectedValues=this.selectedItems.map(function(e){return this._indexToValue(this.indexOf(e))},this).filter(function(e){return null!=e},this)):Polymer.IronSelectableBehavior._updateAttrForSelected.apply(this)},_updateSelected:function(){this.multi?this._selectMulti(this.selectedValues):this._selectSelected(this.selected)},_selectMulti:function(e){if(e){var t=this._valuesToItems(e);this._selection.clear(t);for(var l=0;l<t.length;l++)this._selection.setItemSelected(t[l],!0);if(this.fallbackSelection&&this.items.length&&!this._selection.get().length){var s=this._valueToItem(this.fallbackSelection);s&&(this.selectedValues=[this.fallbackSelection])}}else this._selection.clear()},_selectionChange:function(){var e=this._selection.get();this.multi?this._setSelectedItems(e):(this._setSelectedItems([e]),this._setSelectedItem(e))},_toggleSelected:function(e){var t=this.selectedValues.indexOf(e),l=t<0;l?this.push("selectedValues",e):this.splice("selectedValues",t,1)},_valuesToItems:function(e){return null==e?null:e.map(function(e){return this._valueToItem(e)},this)}},Polymer.IronMultiSelectableBehavior=[Polymer.IronSelectableBehavior,Polymer.IronMultiSelectableBehaviorImpl]</script><script>Polymer({is:"iron-selector",behaviors:[Polymer.IronMultiSelectableBehavior]})</script><script>Polymer.IronResizableBehavior={properties:{_parentResizable:{type:Object,observer:"_parentResizableChanged"},_notifyingDescendant:{type:Boolean,value:!1}},listeners:{"iron-request-resize-notifications":"_onIronRequestResizeNotifications"},created:function(){this._interestedResizables=[],this._boundNotifyResize=this.notifyResize.bind(this)},attached:function(){this.fire("iron-request-resize-notifications",null,{node:this,bubbles:!0,cancelable:!0}),this._parentResizable||(window.addEventListener("resize",this._boundNotifyResize),this.notifyResize())},detached:function(){this._parentResizable?this._parentResizable.stopResizeNotificationsFor(this):window.removeEventListener("resize",this._boundNotifyResize),this._parentResizable=null},notifyResize:function(){this.isAttached&&(this._interestedResizables.forEach(function(e){this.resizerShouldNotify(e)&&this._notifyDescendant(e)},this),this._fireResize())},assignParentResizable:function(e){this._parentResizable=e},stopResizeNotificationsFor:function(e){var i=this._interestedResizables.indexOf(e);i>-1&&(this._interestedResizables.splice(i,1),this.unlisten(e,"iron-resize","_onDescendantIronResize"))},resizerShouldNotify:function(e){return!0},_onDescendantIronResize:function(e){return this._notifyingDescendant?void e.stopPropagation():void(Polymer.Settings.useShadow||this._fireResize())},_fireResize:function(){this.fire("iron-resize",null,{node:this,bubbles:!1})},_onIronRequestResizeNotifications:function(e){var i=e.path?e.path[0]:e.target;i!==this&&(this._interestedResizables.indexOf(i)===-1&&(this._interestedResizables.push(i),this.listen(i,"iron-resize","_onDescendantIronResize")),i.assignParentResizable(this),this._notifyDescendant(i),e.stopPropagation())},_parentResizableChanged:function(e){e&&window.removeEventListener("resize",this._boundNotifyResize)},_notifyDescendant:function(e){this.isAttached&&(this._notifyingDescendant=!0,e.notifyResize(),this._notifyingDescendant=!1)}}</script><dom-module id="paper-drawer-panel" assetpath="../bower_components/paper-drawer-panel/"><template><style>:host{display:block;position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden}iron-selector>#drawer{position:absolute;top:0;left:0;height:100%;background-color:#fff;-moz-box-sizing:border-box;box-sizing:border-box;@apply(--paper-drawer-panel-drawer-container)}.transition-drawer{transition:-webkit-transform ease-in-out .3s,width ease-in-out .3s,visibility .3s;transition:transform ease-in-out .3s,width ease-in-out .3s,visibility .3s}.left-drawer>#drawer{@apply(--paper-drawer-panel-left-drawer-container)}.right-drawer>#drawer{left:auto;right:0;@apply(--paper-drawer-panel-right-drawer-container)}iron-selector>#main{position:absolute;top:0;right:0;bottom:0;@apply(--paper-drawer-panel-main-container)}.transition>#main{transition:left ease-in-out .3s,padding ease-in-out .3s}.right-drawer>#main{left:0}.right-drawer.transition>#main{transition:right ease-in-out .3s,padding ease-in-out .3s}#main>::content>[main]{height:100%}#drawer>::content>[drawer]{height:100%}#scrim{position:absolute;top:0;right:0;bottom:0;left:0;visibility:hidden;opacity:0;transition:opacity ease-in-out .38s,visibility ease-in-out .38s;background-color:rgba(0,0,0,.3);@apply(--paper-drawer-panel-scrim)}.narrow-layout>#drawer{will-change:transform}.narrow-layout>#drawer.iron-selected{box-shadow:2px 2px 4px rgba(0,0,0,.15)}.right-drawer.narrow-layout>#drawer.iron-selected{box-shadow:-2px 2px 4px rgba(0,0,0,.15)}.narrow-layout>#drawer>::content>[drawer]{border:0}.left-drawer.narrow-layout>#drawer:not(.iron-selected){visibility:hidden;-webkit-transform:translateX(-100%);transform:translateX(-100%)}.right-drawer.narrow-layout>#drawer:not(.iron-selected){left:auto;visibility:hidden;-webkit-transform:translateX(100%);transform:translateX(100%)}.left-drawer.dragging>#drawer:not(.iron-selected),.left-drawer.peeking>#drawer:not(.iron-selected),.right-drawer.dragging>#drawer:not(.iron-selected),.right-drawer.peeking>#drawer:not(.iron-selected){visibility:visible}.narrow-layout>#main{padding:0}.right-drawer.narrow-layout>#main{left:0;right:0}.dragging>#main>#scrim,.narrow-layout>#main:not(.iron-selected)>#scrim{visibility:visible;opacity:var(--paper-drawer-panel-scrim-opacity,1)}.narrow-layout>#main>*{margin:0;min-height:100%;left:0;right:0;-moz-box-sizing:border-box;box-sizing:border-box}iron-selector:not(.narrow-layout) ::content [paper-drawer-toggle]{display:none}</style><iron-media-query id="mq" on-query-matches-changed="_onQueryMatchesChanged" query="[[_computeMediaQuery(forceNarrow, responsiveWidth)]]"></iron-media-query><iron-selector attr-for-selected="id" class$="[[_computeIronSelectorClass(narrow, _transition, dragging, rightDrawer, peeking)]]" activate-event="" selected="[[selected]]"><div id="main" style$="[[_computeMainStyle(narrow, rightDrawer, drawerWidth)]]"><content select="[main]"></content><div id="scrim" on-tap="closeDrawer"></div></div><div id="drawer" style$="[[_computeDrawerStyle(drawerWidth)]]"><content id="drawerContent" select="[drawer]"></content></div></iron-selector></template><script>!function(){"use strict";function e(e){var t=[];for(var i in e)e.hasOwnProperty(i)&&e[i]&&t.push(i);return t.join(" ")}var t=null;Polymer({is:"paper-drawer-panel",behaviors:[Polymer.IronResizableBehavior],properties:{defaultSelected:{type:String,value:"main"},disableEdgeSwipe:{type:Boolean,value:!1},disableSwipe:{type:Boolean,value:!1},dragging:{type:Boolean,value:!1,readOnly:!0,notify:!0},drawerWidth:{type:String,value:"256px"},edgeSwipeSensitivity:{type:Number,value:30},forceNarrow:{type:Boolean,value:!1},hasTransform:{type:Boolean,value:function(){return"transform"in this.style}},hasWillChange:{type:Boolean,value:function(){return"willChange"in this.style}},narrow:{reflectToAttribute:!0,type:Boolean,value:!1,readOnly:!0,notify:!0},peeking:{type:Boolean,value:!1,readOnly:!0,notify:!0},responsiveWidth:{type:String,value:"768px"},rightDrawer:{type:Boolean,value:!1},selected:{reflectToAttribute:!0,notify:!0,type:String,value:null},drawerToggleAttribute:{type:String,value:"paper-drawer-toggle"},drawerFocusSelector:{type:String,value:'a[href]:not([tabindex="-1"]),area[href]:not([tabindex="-1"]),input:not([disabled]):not([tabindex="-1"]),select:not([disabled]):not([tabindex="-1"]),textarea:not([disabled]):not([tabindex="-1"]),button:not([disabled]):not([tabindex="-1"]),iframe:not([tabindex="-1"]),[tabindex]:not([tabindex="-1"]),[contentEditable=true]:not([tabindex="-1"])'},_transition:{type:Boolean,value:!1}},listeners:{tap:"_onTap",track:"_onTrack",down:"_downHandler",up:"_upHandler",transitionend:"_onTransitionEnd"},observers:["_forceNarrowChanged(forceNarrow, defaultSelected)","_toggleFocusListener(selected)"],ready:function(){this._transition=!0,this._boundFocusListener=this._didFocus.bind(this)},togglePanel:function(){this._isMainSelected()?this.openDrawer():this.closeDrawer()},openDrawer:function(){requestAnimationFrame(function(){this.toggleClass("transition-drawer",!0,this.$.drawer),this.selected="drawer"}.bind(this))},closeDrawer:function(){requestAnimationFrame(function(){this.toggleClass("transition-drawer",!0,this.$.drawer),this.selected="main"}.bind(this))},_onTransitionEnd:function(e){var t=Polymer.dom(e).localTarget;if(t===this&&("left"!==e.propertyName&&"right"!==e.propertyName||this.notifyResize(),"transform"===e.propertyName&&(requestAnimationFrame(function(){this.toggleClass("transition-drawer",!1,this.$.drawer)}.bind(this)),"drawer"===this.selected))){var i=this._getAutoFocusedNode();i&&i.focus()}},_computeIronSelectorClass:function(t,i,r,n,a){return e({dragging:r,"narrow-layout":t,"right-drawer":n,"left-drawer":!n,transition:i,peeking:a})},_computeDrawerStyle:function(e){return"width:"+e+";"},_computeMainStyle:function(e,t,i){var r="";return r+="left:"+(e||t?"0":i)+";",t&&(r+="right:"+(e?"":i)+";"),r},_computeMediaQuery:function(e,t){return e?"":"(max-width: "+t+")"},_computeSwipeOverlayHidden:function(e,t){return!e||t},_onTrack:function(e){if(!t||this===t)switch(e.detail.state){case"start":this._trackStart(e);break;case"track":this._trackX(e);break;case"end":this._trackEnd(e)}},_responsiveChange:function(e){this._setNarrow(e),this.selected=this.narrow?this.defaultSelected:null,this.setScrollDirection(this._swipeAllowed()?"y":"all"),this.fire("paper-responsive-change",{narrow:this.narrow})},_onQueryMatchesChanged:function(e){this._responsiveChange(e.detail.value)},_forceNarrowChanged:function(){this._responsiveChange(this.forceNarrow||this.$.mq.queryMatches)},_swipeAllowed:function(){return this.narrow&&!this.disableSwipe},_isMainSelected:function(){return"main"===this.selected},_startEdgePeek:function(){this.width=this.$.drawer.offsetWidth,this._moveDrawer(this._translateXForDeltaX(this.rightDrawer?-this.edgeSwipeSensitivity:this.edgeSwipeSensitivity)),this._setPeeking(!0)},_stopEdgePeek:function(){this.peeking&&(this._setPeeking(!1),this._moveDrawer(null))},_downHandler:function(e){!this.dragging&&this._isMainSelected()&&this._isEdgeTouch(e)&&!t&&(this._startEdgePeek(),e.preventDefault(),t=this)},_upHandler:function(){this._stopEdgePeek(),t=null},_onTap:function(e){var t=Polymer.dom(e).localTarget,i=t&&this.drawerToggleAttribute&&t.hasAttribute(this.drawerToggleAttribute);i&&this.togglePanel()},_isEdgeTouch:function(e){var t=e.detail.x;return!this.disableEdgeSwipe&&this._swipeAllowed()&&(this.rightDrawer?t>=this.offsetWidth-this.edgeSwipeSensitivity:t<=this.edgeSwipeSensitivity)},_trackStart:function(e){this._swipeAllowed()&&(t=this,this._setDragging(!0),this._isMainSelected()&&this._setDragging(this.peeking||this._isEdgeTouch(e)),this.dragging&&(this.width=this.$.drawer.offsetWidth,this._transition=!1))},_translateXForDeltaX:function(e){var t=this._isMainSelected();return this.rightDrawer?Math.max(0,t?this.width+e:e):Math.min(0,t?e-this.width:e)},_trackX:function(e){if(this.dragging){var t=e.detail.dx;if(this.peeking){if(Math.abs(t)<=this.edgeSwipeSensitivity)return;this._setPeeking(!1)}this._moveDrawer(this._translateXForDeltaX(t))}},_trackEnd:function(e){if(this.dragging){var i=e.detail.dx>0;this._setDragging(!1),this._transition=!0,t=null,this._moveDrawer(null),this.rightDrawer?this[i?"closeDrawer":"openDrawer"]():this[i?"openDrawer":"closeDrawer"]()}},_transformForTranslateX:function(e){return null===e?"":this.hasWillChange?"translateX("+e+"px)":"translate3d("+e+"px, 0, 0)"},_moveDrawer:function(e){this.transform(this._transformForTranslateX(e),this.$.drawer)},_getDrawerContent:function(){return Polymer.dom(this.$.drawerContent).getDistributedNodes()[0]},_getAutoFocusedNode:function(){var e=this._getDrawerContent();return this.drawerFocusSelector?Polymer.dom(e).querySelector(this.drawerFocusSelector)||e:null},_toggleFocusListener:function(e){"drawer"===e?this.addEventListener("focus",this._boundFocusListener,!0):this.removeEventListener("focus",this._boundFocusListener,!0)},_didFocus:function(e){var t=this._getAutoFocusedNode();if(t){var i=Polymer.dom(e).path,r=(i[0],this._getDrawerContent()),n=i.indexOf(r)!==-1;n||(e.stopPropagation(),t.focus())}},_isDrawerClosed:function(e,t){return!e||"drawer"!==t}})}()</script></dom-module><dom-module id="iron-pages" assetpath="../bower_components/iron-pages/"><template><style>:host{display:block}:host>::content>:not(.iron-selected){display:none!important}</style><content></content></template><script>Polymer({is:"iron-pages",behaviors:[Polymer.IronResizableBehavior,Polymer.IronSelectableBehavior],properties:{activateEvent:{type:String,value:null}},observers:["_selectedPageChanged(selected)"],_selectedPageChanged:function(e,a){this.async(this.notifyResize)}})</script></dom-module><dom-module id="iron-icon" assetpath="../bower_components/iron-icon/"><template><style>:host{@apply(--layout-inline);@apply(--layout-center-center);position:relative;vertical-align:middle;fill:var(--iron-icon-fill-color,currentcolor);stroke:var(--iron-icon-stroke-color,none);width:var(--iron-icon-width,24px);height:var(--iron-icon-height,24px);@apply(--iron-icon)}</style></template><script>Polymer({is:"iron-icon",properties:{icon:{type:String},theme:{type:String},src:{type:String},_meta:{value:Polymer.Base.create("iron-meta",{type:"iconset"})}},observers:["_updateIcon(_meta, isAttached)","_updateIcon(theme, isAttached)","_srcChanged(src, isAttached)","_iconChanged(icon, isAttached)"],_DEFAULT_ICONSET:"icons",_iconChanged:function(t){var i=(t||"").split(":");this._iconName=i.pop(),this._iconsetName=i.pop()||this._DEFAULT_ICONSET,this._updateIcon()},_srcChanged:function(t){this._updateIcon()},_usesIconset:function(){return this.icon||!this.src},_updateIcon:function(){this._usesIconset()?(this._img&&this._img.parentNode&&Polymer.dom(this.root).removeChild(this._img),""===this._iconName?this._iconset&&this._iconset.removeIcon(this):this._iconsetName&&this._meta&&(this._iconset=this._meta.byKey(this._iconsetName),this._iconset?(this._iconset.applyIcon(this,this._iconName,this.theme),this.unlisten(window,"iron-iconset-added","_updateIcon")):this.listen(window,"iron-iconset-added","_updateIcon"))):(this._iconset&&this._iconset.removeIcon(this),this._img||(this._img=document.createElement("img"),this._img.style.width="100%",this._img.style.height="100%",this._img.draggable=!1),this._img.src=this.src,Polymer.dom(this.root).appendChild(this._img))}})</script></dom-module><dom-module id="paper-icon-button" assetpath="../bower_components/paper-icon-button/"><template strip-whitespace=""><style>:host{display:inline-block;position:relative;padding:8px;outline:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;z-index:0;line-height:1;width:40px;height:40px;-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:transparent;box-sizing:border-box!important;@apply(--paper-icon-button)}:host #ink{color:var(--paper-icon-button-ink-color,--primary-text-color);opacity:.6}:host([disabled]){color:var(--paper-icon-button-disabled-text,--disabled-text-color);pointer-events:none;cursor:auto;@apply(--paper-icon-button-disabled)}:host(:hover){@apply(--paper-icon-button-hover)}iron-icon{--iron-icon-width:100%;--iron-icon-height:100%}</style><iron-icon id="icon" src="[[src]]" icon="[[icon]]" alt$="[[alt]]"></iron-icon></template><script>Polymer({is:"paper-icon-button",hostAttributes:{role:"button",tabindex:"0"},behaviors:[Polymer.PaperInkyFocusBehavior],properties:{src:{type:String},icon:{type:String},alt:{type:String,observer:"_altChanged"}},_altChanged:function(t,e){var r=this.getAttribute("aria-label");r&&e!=r||this.setAttribute("aria-label",t)}})</script></dom-module><script>Polymer.IronMenuBehaviorImpl={properties:{focusedItem:{observer:"_focusedItemChanged",readOnly:!0,type:Object},attrForItemTitle:{type:String}},_SEARCH_RESET_TIMEOUT_MS:1e3,hostAttributes:{role:"menu",tabindex:"0"},observers:["_updateMultiselectable(multi)"],listeners:{focus:"_onFocus",keydown:"_onKeydown","iron-items-changed":"_onIronItemsChanged"},keyBindings:{up:"_onUpKey",down:"_onDownKey",esc:"_onEscKey","shift+tab:keydown":"_onShiftTabDown"},attached:function(){this._resetTabindices()},select:function(e){this._defaultFocusAsync&&(this.cancelAsync(this._defaultFocusAsync),this._defaultFocusAsync=null);var t=this._valueToItem(e);t&&t.hasAttribute("disabled")||(this._setFocusedItem(t),Polymer.IronMultiSelectableBehaviorImpl.select.apply(this,arguments))},_resetTabindices:function(){var e=this.multi?this.selectedItems&&this.selectedItems[0]:this.selectedItem;this.items.forEach(function(t){t.setAttribute("tabindex",t===e?"0":"-1")},this)},_updateMultiselectable:function(e){e?this.setAttribute("aria-multiselectable","true"):this.removeAttribute("aria-multiselectable")},_focusWithKeyboardEvent:function(e){this.cancelDebouncer("_clearSearchText");var t=this._searchText||"",s=e.key&&1==e.key.length?e.key:String.fromCharCode(e.keyCode);t+=s.toLocaleLowerCase();for(var i,o=t.length,n=0;i=this.items[n];n++)if(!i.hasAttribute("disabled")){var r=this.attrForItemTitle||"textContent",a=(i[r]||i.getAttribute(r)||"").trim();if(!(a.length<o)&&a.slice(0,o).toLocaleLowerCase()==t){this._setFocusedItem(i);break}}this._searchText=t,this.debounce("_clearSearchText",this._clearSearchText,this._SEARCH_RESET_TIMEOUT_MS)},_clearSearchText:function(){this._searchText=""},_focusPrevious:function(){for(var e=this.items.length,t=Number(this.indexOf(this.focusedItem)),s=1;s<e+1;s++){var i=this.items[(t-s+e)%e];if(!i.hasAttribute("disabled")){var o=Polymer.dom(i).getOwnerRoot()||document;if(this._setFocusedItem(i),Polymer.dom(o).activeElement==i)return}}},_focusNext:function(){for(var e=this.items.length,t=Number(this.indexOf(this.focusedItem)),s=1;s<e+1;s++){var i=this.items[(t+s)%e];if(!i.hasAttribute("disabled")){var o=Polymer.dom(i).getOwnerRoot()||document;if(this._setFocusedItem(i),Polymer.dom(o).activeElement==i)return}}},_applySelection:function(e,t){t?e.setAttribute("aria-selected","true"):e.removeAttribute("aria-selected"),Polymer.IronSelectableBehavior._applySelection.apply(this,arguments)},_focusedItemChanged:function(e,t){t&&t.setAttribute("tabindex","-1"),e&&(e.setAttribute("tabindex","0"),e.focus())},_onIronItemsChanged:function(e){e.detail.addedNodes.length&&this._resetTabindices()},_onShiftTabDown:function(e){var t=this.getAttribute("tabindex");Polymer.IronMenuBehaviorImpl._shiftTabPressed=!0,this._setFocusedItem(null),this.setAttribute("tabindex","-1"),this.async(function(){this.setAttribute("tabindex",t),Polymer.IronMenuBehaviorImpl._shiftTabPressed=!1},1)},_onFocus:function(e){if(!Polymer.IronMenuBehaviorImpl._shiftTabPressed){var t=Polymer.dom(e).rootTarget;(t===this||"undefined"==typeof t.tabIndex||this.isLightDescendant(t))&&(this._defaultFocusAsync=this.async(function(){var e=this.multi?this.selectedItems&&this.selectedItems[0]:this.selectedItem;this._setFocusedItem(null),e?this._setFocusedItem(e):this.items[0]&&this._focusNext()}))}},_onUpKey:function(e){this._focusPrevious(),e.detail.keyboardEvent.preventDefault()},_onDownKey:function(e){this._focusNext(),e.detail.keyboardEvent.preventDefault()},_onEscKey:function(e){this.focusedItem.blur()},_onKeydown:function(e){this.keyboardEventMatchesKeys(e,"up down esc")||this._focusWithKeyboardEvent(e),e.stopPropagation()},_activateHandler:function(e){Polymer.IronSelectableBehavior._activateHandler.call(this,e),e.stopPropagation()}},Polymer.IronMenuBehaviorImpl._shiftTabPressed=!1,Polymer.IronMenuBehavior=[Polymer.IronMultiSelectableBehavior,Polymer.IronA11yKeysBehavior,Polymer.IronMenuBehaviorImpl]</script><script>Polymer.IronMenubarBehaviorImpl={hostAttributes:{role:"menubar"},keyBindings:{left:"_onLeftKey",right:"_onRightKey"},_onUpKey:function(e){this.focusedItem.click(),e.detail.keyboardEvent.preventDefault()},_onDownKey:function(e){this.focusedItem.click(),e.detail.keyboardEvent.preventDefault()},get _isRTL(){return"rtl"===window.getComputedStyle(this).direction},_onLeftKey:function(e){this._isRTL?this._focusNext():this._focusPrevious(),e.detail.keyboardEvent.preventDefault()},_onRightKey:function(e){this._isRTL?this._focusPrevious():this._focusNext(),e.detail.keyboardEvent.preventDefault()},_onKeydown:function(e){this.keyboardEventMatchesKeys(e,"up down left right esc")||this._focusWithKeyboardEvent(e)}},Polymer.IronMenubarBehavior=[Polymer.IronMenuBehavior,Polymer.IronMenubarBehaviorImpl]</script><script>Polymer({is:"iron-iconset-svg",properties:{name:{type:String,observer:"_nameChanged"},size:{type:Number,value:24},rtlMirroring:{type:Boolean,value:!1}},attached:function(){this.style.display="none"},getIconNames:function(){return this._icons=this._createIconMap(),Object.keys(this._icons).map(function(e){return this.name+":"+e},this)},applyIcon:function(e,t){e=e.root||e,this.removeIcon(e);var n=this._cloneIcon(t,this.rtlMirroring&&this._targetIsRTL(e));if(n){var r=Polymer.dom(e);return r.insertBefore(n,r.childNodes[0]),e._svgIcon=n}return null},removeIcon:function(e){e=e.root||e,e._svgIcon&&(Polymer.dom(e).removeChild(e._svgIcon),e._svgIcon=null)},_targetIsRTL:function(e){return null==this.__targetIsRTL&&(e&&e.nodeType!==Node.ELEMENT_NODE&&(e=e.host),this.__targetIsRTL=e&&"rtl"===window.getComputedStyle(e).direction),this.__targetIsRTL},_nameChanged:function(){new Polymer.IronMeta({type:"iconset",key:this.name,value:this}),this.async(function(){this.fire("iron-iconset-added",this,{node:window})})},_createIconMap:function(){var e=Object.create(null);return Polymer.dom(this).querySelectorAll("[id]").forEach(function(t){e[t.id]=t}),e},_cloneIcon:function(e,t){return this._icons=this._icons||this._createIconMap(),this._prepareSvgClone(this._icons[e],this.size,t)},_prepareSvgClone:function(e,t,n){if(e){var r=e.cloneNode(!0),i=document.createElementNS("http://www.w3.org/2000/svg","svg"),o=r.getAttribute("viewBox")||"0 0 "+t+" "+t,s="pointer-events: none; display: block; width: 100%; height: 100%;";return n&&r.hasAttribute("mirror-in-rtl")&&(s+="-webkit-transform:scale(-1,1);transform:scale(-1,1);"),i.setAttribute("viewBox",o),i.setAttribute("preserveAspectRatio","xMidYMid meet"),i.style.cssText=s,i.appendChild(r).removeAttribute("id"),i}return null}})</script><iron-iconset-svg name="paper-tabs" size="24"><svg><defs><g id="chevron-left"><path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"></path></g><g id="chevron-right"><path d="M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"></path></g></defs></svg></iron-iconset-svg><dom-module id="paper-tab" assetpath="../bower_components/paper-tabs/"><template><style>:host{@apply(--layout-inline);@apply(--layout-center);@apply(--layout-center-justified);@apply(--layout-flex-auto);position:relative;padding:0 12px;overflow:hidden;cursor:pointer;vertical-align:middle;@apply(--paper-font-common-base);@apply(--paper-tab)}:host(:focus){outline:0}:host([link]){padding:0}.tab-content{height:100%;transform:translateZ(0);-webkit-transform:translateZ(0);transition:opacity .1s cubic-bezier(.4,0,1,1);@apply(--layout-horizontal);@apply(--layout-center-center);@apply(--layout-flex-auto);@apply(--paper-tab-content)}:host(:not(.iron-selected))>.tab-content{opacity:.8;@apply(--paper-tab-content-unselected)}:host(:focus) .tab-content{opacity:1;font-weight:700}paper-ripple{color:var(--paper-tab-ink,--paper-yellow-a100)}.tab-content>::content>a{@apply(--layout-flex-auto);height:100%}</style><div class="tab-content"><content></content></div></template><script>Polymer({is:"paper-tab",behaviors:[Polymer.IronControlState,Polymer.IronButtonState,Polymer.PaperRippleBehavior],properties:{link:{type:Boolean,value:!1,reflectToAttribute:!0}},hostAttributes:{role:"tab"},listeners:{down:"_updateNoink",tap:"_onTap"},attached:function(){this._updateNoink()},get _parentNoink(){var t=Polymer.dom(this).parentNode;return!!t&&!!t.noink},_updateNoink:function(){this.noink=!!this.noink||!!this._parentNoink},_onTap:function(t){if(this.link){var e=this.queryEffectiveChildren("a");if(!e)return;if(t.target===e)return;e.click()}}})</script></dom-module><dom-module id="paper-tabs" assetpath="../bower_components/paper-tabs/"><template><style>:host{@apply(--layout);@apply(--layout-center);height:48px;font-size:14px;font-weight:500;overflow:hidden;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:transparent;@apply(--paper-tabs)}:host-context([dir=rtl]){@apply(--layout-horizontal-reverse)}#tabsContainer{position:relative;height:100%;white-space:nowrap;overflow:hidden;@apply(--layout-flex-auto);@apply(--paper-tabs-container)}#tabsContent{height:100%;-moz-flex-basis:auto;-ms-flex-basis:auto;flex-basis:auto;@apply(--paper-tabs-content)}#tabsContent.scrollable{position:absolute;white-space:nowrap}#tabsContent.scrollable.fit-container,#tabsContent:not(.scrollable){@apply(--layout-horizontal)}#tabsContent.scrollable.fit-container{min-width:100%}#tabsContent.scrollable.fit-container>::content>*{-ms-flex:1 0 auto;-webkit-flex:1 0 auto;flex:1 0 auto}.hidden{display:none}.not-visible{opacity:0;cursor:default}paper-icon-button{width:48px;height:48px;padding:12px;margin:0 4px}#selectionBar{position:absolute;height:2px;bottom:0;left:0;right:0;background-color:var(--paper-tabs-selection-bar-color,--paper-yellow-a100);-webkit-transform:scale(0);transform:scale(0);-webkit-transform-origin:left center;transform-origin:left center;transition:-webkit-transform;transition:transform;@apply(--paper-tabs-selection-bar)}#selectionBar.align-bottom{top:0;bottom:auto}#selectionBar.expand{transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,1,1)}#selectionBar.contract{transition-duration:.18s;transition-timing-function:cubic-bezier(0,0,.2,1)}#tabsContent>::content>:not(#selectionBar){height:100%}</style><paper-icon-button icon="paper-tabs:chevron-left" class$="[[_computeScrollButtonClass(_leftHidden, scrollable, hideScrollButtons)]]" on-up="_onScrollButtonUp" on-down="_onLeftScrollButtonDown" tabindex="-1"></paper-icon-button><div id="tabsContainer" on-track="_scroll" on-down="_down"><div id="tabsContent" class$="[[_computeTabsContentClass(scrollable, fitContainer)]]"><div id="selectionBar" class$="[[_computeSelectionBarClass(noBar, alignBottom)]]" on-transitionend="_onBarTransitionEnd"></div><content select="*"></content></div></div><paper-icon-button icon="paper-tabs:chevron-right" class$="[[_computeScrollButtonClass(_rightHidden, scrollable, hideScrollButtons)]]" on-up="_onScrollButtonUp" on-down="_onRightScrollButtonDown" tabindex="-1"></paper-icon-button></template><script>Polymer({is:"paper-tabs",behaviors:[Polymer.IronResizableBehavior,Polymer.IronMenubarBehavior],properties:{noink:{type:Boolean,value:!1,observer:"_noinkChanged"},noBar:{type:Boolean,value:!1},noSlide:{type:Boolean,value:!1},scrollable:{type:Boolean,value:!1},fitContainer:{type:Boolean,value:!1},disableDrag:{type:Boolean,value:!1},hideScrollButtons:{type:Boolean,value:!1},alignBottom:{type:Boolean,value:!1},selectable:{type:String,value:"paper-tab"},autoselect:{type:Boolean,value:!1},autoselectDelay:{type:Number,value:0},_step:{type:Number,value:10},_holdDelay:{type:Number,value:1},_leftHidden:{type:Boolean,value:!1},_rightHidden:{type:Boolean,value:!1},_previousTab:{type:Object}},hostAttributes:{role:"tablist"},listeners:{"iron-resize":"_onTabSizingChanged","iron-items-changed":"_onTabSizingChanged","iron-select":"_onIronSelect","iron-deselect":"_onIronDeselect"},keyBindings:{"left:keyup right:keyup":"_onArrowKeyup"},created:function(){this._holdJob=null,this._pendingActivationItem=void 0,this._pendingActivationTimeout=void 0,this._bindDelayedActivationHandler=this._delayedActivationHandler.bind(this),this.addEventListener("blur",this._onBlurCapture.bind(this),!0)},ready:function(){this.setScrollDirection("y",this.$.tabsContainer)},detached:function(){this._cancelPendingActivation()},_noinkChanged:function(t){var e=Polymer.dom(this).querySelectorAll("paper-tab");e.forEach(t?this._setNoinkAttribute:this._removeNoinkAttribute)},_setNoinkAttribute:function(t){t.setAttribute("noink","")},_removeNoinkAttribute:function(t){t.removeAttribute("noink")},_computeScrollButtonClass:function(t,e,i){return!e||i?"hidden":t?"not-visible":""},_computeTabsContentClass:function(t,e){return t?"scrollable"+(e?" fit-container":""):" fit-container"},_computeSelectionBarClass:function(t,e){return t?"hidden":e?"align-bottom":""},_onTabSizingChanged:function(){this.debounce("_onTabSizingChanged",function(){this._scroll(),this._tabChanged(this.selectedItem)},10)},_onIronSelect:function(t){this._tabChanged(t.detail.item,this._previousTab),this._previousTab=t.detail.item,this.cancelDebouncer("tab-changed")},_onIronDeselect:function(t){this.debounce("tab-changed",function(){this._tabChanged(null,this._previousTab),this._previousTab=null},1)},_activateHandler:function(){this._cancelPendingActivation(),Polymer.IronMenuBehaviorImpl._activateHandler.apply(this,arguments)},_scheduleActivation:function(t,e){this._pendingActivationItem=t,this._pendingActivationTimeout=this.async(this._bindDelayedActivationHandler,e)},_delayedActivationHandler:function(){var t=this._pendingActivationItem;this._pendingActivationItem=void 0,this._pendingActivationTimeout=void 0,t.fire(this.activateEvent,null,{bubbles:!0,cancelable:!0})},_cancelPendingActivation:function(){void 0!==this._pendingActivationTimeout&&(this.cancelAsync(this._pendingActivationTimeout),this._pendingActivationItem=void 0,this._pendingActivationTimeout=void 0)},_onArrowKeyup:function(t){this.autoselect&&this._scheduleActivation(this.focusedItem,this.autoselectDelay)},_onBlurCapture:function(t){t.target===this._pendingActivationItem&&this._cancelPendingActivation()},get _tabContainerScrollSize(){return Math.max(0,this.$.tabsContainer.scrollWidth-this.$.tabsContainer.offsetWidth)},_scroll:function(t,e){if(this.scrollable){var i=e&&-e.ddx||0;this._affectScroll(i)}},_down:function(t){this.async(function(){this._defaultFocusAsync&&(this.cancelAsync(this._defaultFocusAsync),this._defaultFocusAsync=null)},1)},_affectScroll:function(t){this.$.tabsContainer.scrollLeft+=t;var e=this.$.tabsContainer.scrollLeft;this._leftHidden=0===e,this._rightHidden=e===this._tabContainerScrollSize},_onLeftScrollButtonDown:function(){this._scrollToLeft(),this._holdJob=setInterval(this._scrollToLeft.bind(this),this._holdDelay)},_onRightScrollButtonDown:function(){this._scrollToRight(),this._holdJob=setInterval(this._scrollToRight.bind(this),this._holdDelay)},_onScrollButtonUp:function(){clearInterval(this._holdJob),this._holdJob=null},_scrollToLeft:function(){this._affectScroll(-this._step)},_scrollToRight:function(){this._affectScroll(this._step)},_tabChanged:function(t,e){if(!t)return this.$.selectionBar.classList.remove("expand"),this.$.selectionBar.classList.remove("contract"),void this._positionBar(0,0);var i=this.$.tabsContent.getBoundingClientRect(),n=i.width,o=t.getBoundingClientRect(),s=o.left-i.left;if(this._pos={width:this._calcPercent(o.width,n),left:this._calcPercent(s,n)},this.noSlide||null==e)return this.$.selectionBar.classList.remove("expand"),this.$.selectionBar.classList.remove("contract"),void this._positionBar(this._pos.width,this._pos.left);var a=e.getBoundingClientRect(),l=this.items.indexOf(e),c=this.items.indexOf(t),r=5;this.$.selectionBar.classList.add("expand");var h=l<c,d=this._isRTL;d&&(h=!h),h?this._positionBar(this._calcPercent(o.left+o.width-a.left,n)-r,this._left):this._positionBar(this._calcPercent(a.left+a.width-o.left,n)-r,this._calcPercent(s,n)+r),this.scrollable&&this._scrollToSelectedIfNeeded(o.width,s)},_scrollToSelectedIfNeeded:function(t,e){var i=e-this.$.tabsContainer.scrollLeft;i<0?this.$.tabsContainer.scrollLeft+=i:(i+=t-this.$.tabsContainer.offsetWidth,i>0&&(this.$.tabsContainer.scrollLeft+=i))},_calcPercent:function(t,e){return 100*t/e},_positionBar:function(t,e){t=t||0,e=e||0,this._width=t,this._left=e,this.transform("translateX("+e+"%) scaleX("+t/100+")",this.$.selectionBar)},_onBarTransitionEnd:function(t){var e=this.$.selectionBar.classList;e.contains("expand")?(e.remove("expand"),e.add("contract"),this._positionBar(this._pos.width,this._pos.left)):e.contains("contract")&&e.remove("contract")}})</script></dom-module><dom-module id="app-header-layout" assetpath="../bower_components/app-layout/app-header-layout/"><template><style>:host{display:block;position:relative;z-index:0}:host>::content>app-header{@apply(--layout-fixed-top);z-index:1}:host([has-scrolling-region]){height:100%}:host([has-scrolling-region])>::content>app-header{position:absolute}:host([has-scrolling-region])>#contentContainer{@apply(--layout-fit);overflow-y:auto;-webkit-overflow-scrolling:touch}:host([fullbleed]){@apply(--layout-vertical);@apply(--layout-fit)}:host([fullbleed])>#contentContainer{@apply(--layout-vertical);@apply(--layout-flex)}#contentContainer{position:relative;z-index:0}</style><content id="header" select="app-header"></content><div id="contentContainer"><content></content></div></template><script>Polymer({is:"app-header-layout",behaviors:[Polymer.IronResizableBehavior],properties:{hasScrollingRegion:{type:Boolean,value:!1,reflectToAttribute:!0}},listeners:{"iron-resize":"_resizeHandler","app-header-reset-layout":"_resetLayoutHandler"},observers:["resetLayout(isAttached, hasScrollingRegion)"],get header(){return Polymer.dom(this.$.header).getDistributedNodes()[0]},resetLayout:function(){this._updateScroller(),this.debounce("_resetLayout",this._updateContentPosition)},_updateContentPosition:function(){var e=this.header;if(this.isAttached&&e){var t=e.offsetHeight;if(this.hasScrollingRegion)e.style.left="",e.style.right="";else{var i=this.getBoundingClientRect(),o=document.documentElement.clientWidth-i.right;e.style.left=i.left+"px",e.style.right=o+"px"}var n=this.$.contentContainer.style;e.fixed&&!e.willCondense()&&this.hasScrollingRegion?(n.marginTop=t+"px",n.paddingTop=""):(n.paddingTop=t+"px",n.marginTop="")}},_updateScroller:function(){if(this.isAttached){var e=this.header;e&&(e.scrollTarget=this.hasScrollingRegion?this.$.contentContainer:this.ownerDocument.documentElement)}},_resizeHandler:function(){this.resetLayout()},_resetLayoutHandler:function(e){this.resetLayout(),e.stopPropagation()}})</script></dom-module><script>Polymer.IronScrollTargetBehavior={properties:{scrollTarget:{type:Object,value:function(){return this._defaultScrollTarget}}},observers:["_scrollTargetChanged(scrollTarget, isAttached)"],_shouldHaveListener:!0,_scrollTargetChanged:function(t,l){this._oldScrollTarget&&(this._toggleScrollListener(!1,this._oldScrollTarget),this._oldScrollTarget=null),l&&("document"===t?this.scrollTarget=this._doc:"string"==typeof t?this.scrollTarget=this.domHost?this.domHost.$[t]:Polymer.dom(this.ownerDocument).querySelector("#"+t):this._isValidScrollTarget()&&(this._boundScrollHandler=this._boundScrollHandler||this._scrollHandler.bind(this),this._oldScrollTarget=t,this._toggleScrollListener(this._shouldHaveListener,t)))},_scrollHandler:function(){},get _defaultScrollTarget(){return this._doc},get _doc(){return this.ownerDocument.documentElement},get _scrollTop(){return this._isValidScrollTarget()?this.scrollTarget===this._doc?window.pageYOffset:this.scrollTarget.scrollTop:0},get _scrollLeft(){return this._isValidScrollTarget()?this.scrollTarget===this._doc?window.pageXOffset:this.scrollTarget.scrollLeft:0},set _scrollTop(t){this.scrollTarget===this._doc?window.scrollTo(window.pageXOffset,t):this._isValidScrollTarget()&&(this.scrollTarget.scrollTop=t)},set _scrollLeft(t){this.scrollTarget===this._doc?window.scrollTo(t,window.pageYOffset):this._isValidScrollTarget()&&(this.scrollTarget.scrollLeft=t)},scroll:function(t,l){this.scrollTarget===this._doc?window.scrollTo(t,l):this._isValidScrollTarget()&&(this.scrollTarget.scrollLeft=t,this.scrollTarget.scrollTop=l)},get _scrollTargetWidth(){return this._isValidScrollTarget()?this.scrollTarget===this._doc?window.innerWidth:this.scrollTarget.offsetWidth:0},get _scrollTargetHeight(){return this._isValidScrollTarget()?this.scrollTarget===this._doc?window.innerHeight:this.scrollTarget.offsetHeight:0},_isValidScrollTarget:function(){return this.scrollTarget instanceof HTMLElement},_toggleScrollListener:function(t,l){if(this._boundScrollHandler){var e=l===this._doc?window:l;t?e.addEventListener("scroll",this._boundScrollHandler):e.removeEventListener("scroll",this._boundScrollHandler)}},toggleScrollListener:function(t){this._shouldHaveListener=t,this._toggleScrollListener(t,this.scrollTarget)}}</script><script>Polymer.AppLayout=Polymer.AppLayout||{},Polymer.AppLayout._scrollEffects=Polymer.AppLayout._scrollEffects||{},Polymer.AppLayout.scrollTimingFunction=function(o,l,e,r){return o/=r,-e*o*(o-2)+l},Polymer.AppLayout.registerEffect=function(o,l){if(null!=Polymer.AppLayout._scrollEffects[o])throw new Error("effect `"+o+"` is already registered.");Polymer.AppLayout._scrollEffects[o]=l},Polymer.AppLayout.scroll=function(o){o=o||{};var l=document.documentElement,e=o.target||l,r="scrollBehavior"in e.style&&e.scroll,t="app-layout-silent-scroll",s=o.top||0,c=o.left||0,i=e===l?window.scrollTo:function(o,l){e.scrollLeft=o,e.scrollTop=l};if("smooth"===o.behavior)if(r)e.scroll(o);else{var n=Polymer.AppLayout.scrollTimingFunction,a=Date.now(),p=e===l?window.pageYOffset:e.scrollTop,u=e===l?window.pageXOffset:e.scrollLeft,y=s-p,f=c-u,m=300,L=function o(){var l=Date.now(),e=l-a;e<m?(i(n(e,u,f,m),n(e,p,y,m)),requestAnimationFrame(o)):i(c,s)}.bind(this);L()}else"silent"===o.behavior?(l.classList.add(t),clearInterval(Polymer.AppLayout._scrollTimer),Polymer.AppLayout._scrollTimer=setTimeout(function(){l.classList.remove(t),Polymer.AppLayout._scrollTimer=null},100),i(c,s)):i(c,s)}</script><script>Polymer.AppScrollEffectsBehavior=[Polymer.IronScrollTargetBehavior,{properties:{effects:{type:String},effectsConfig:{type:Object,value:function(){return{}}},disabled:{type:Boolean,reflectToAttribute:!0,value:!1},threshold:{type:Number,value:0},thresholdTriggered:{type:Boolean,notify:!0,readOnly:!0,reflectToAttribute:!0}},observers:["_effectsChanged(effects, effectsConfig, isAttached)"],_updateScrollState:function(){},isOnScreen:function(){return!1},isContentBelow:function(){return!1},_effectsRunFn:null,_effects:null,get _clampedScrollTop(){return Math.max(0,this._scrollTop)},detached:function(){this._tearDownEffects()},createEffect:function(t,e){var n=Polymer.AppLayout._scrollEffects[t];if(!n)throw new ReferenceError(this._getUndefinedMsg(t));var f=this._boundEffect(n,e||{});return f.setUp(),f},_effectsChanged:function(t,e,n){this._tearDownEffects(),""!==t&&n&&(t.split(" ").forEach(function(t){var n;""!==t&&((n=Polymer.AppLayout._scrollEffects[t])?this._effects.push(this._boundEffect(n,e[t])):console.warn(this._getUndefinedMsg(t)))},this),this._setUpEffect())},_layoutIfDirty:function(){return this.offsetWidth},_boundEffect:function(t,e){e=e||{};var n=parseFloat(e.startsAt||0),f=parseFloat(e.endsAt||1),s=f-n,r=function(){},o=0===n&&1===f?t.run:function(e,f){t.run.call(this,Math.max(0,(e-n)/s),f)};return{setUp:t.setUp?t.setUp.bind(this,e):r,run:t.run?o.bind(this):r,tearDown:t.tearDown?t.tearDown.bind(this):r}},_setUpEffect:function(){this.isAttached&&this._effects&&(this._effectsRunFn=[],this._effects.forEach(function(t){t.setUp()!==!1&&this._effectsRunFn.push(t.run)},this))},_tearDownEffects:function(){this._effects&&this._effects.forEach(function(t){t.tearDown()}),this._effectsRunFn=[],this._effects=[]},_runEffects:function(t,e){this._effectsRunFn&&this._effectsRunFn.forEach(function(n){n(t,e)})},_scrollHandler:function(){if(!this.disabled){var t=this._clampedScrollTop;this._updateScrollState(t),this.threshold>0&&this._setThresholdTriggered(t>=this.threshold)}},_getDOMRef:function(t){console.warn("_getDOMRef","`"+t+"` is undefined")},_getUndefinedMsg:function(t){return"Scroll effect `"+t+"` is undefined. Did you forget to import app-layout/app-scroll-effects/effects/"+t+".html ?"}}]</script><script>Polymer.AppLayout.registerEffect("waterfall",{run:function(){this.shadow=this.isOnScreen()&&this.isContentBelow()}})</script><dom-module id="app-header" assetpath="../bower_components/app-layout/app-header/"><template><style>:host{position:relative;display:block;transition-timing-function:linear;transition-property:-webkit-transform;transition-property:transform}:host::after{position:absolute;right:0;bottom:-5px;left:0;width:100%;height:5px;content:"";transition:opacity .4s;pointer-events:none;opacity:0;box-shadow:inset 0 5px 6px -3px rgba(0,0,0,.4);will-change:opacity;@apply(--app-header-shadow)}:host([shadow])::after{opacity:1}::content [condensed-title],::content [main-title]{-webkit-transform-origin:left top;transform-origin:left top;white-space:nowrap}::content [condensed-title]{opacity:0}#background{@apply(--layout-fit);overflow:hidden}#backgroundFrontLayer,#backgroundRearLayer{@apply(--layout-fit);height:100%;pointer-events:none;background-size:cover}#backgroundFrontLayer{@apply(--app-header-background-front-layer)}#backgroundRearLayer{opacity:0;@apply(--app-header-background-rear-layer)}#contentContainer{position:relative;width:100%;height:100%}:host([disabled]),:host([disabled]) #backgroundFrontLayer,:host([disabled]) #backgroundRearLayer,:host([disabled]) ::content>[sticky],:host([disabled]) ::content>app-toolbar:first-of-type,:host([disabled])::after,:host-context(.app-layout-silent-scroll),:host-context(.app-layout-silent-scroll) #backgroundFrontLayer,:host-context(.app-layout-silent-scroll) #backgroundRearLayer,:host-context(.app-layout-silent-scroll) ::content>[sticky],:host-context(.app-layout-silent-scroll) ::content>app-toolbar:first-of-type,:host-context(.app-layout-silent-scroll)::after{transition:none!important}</style><div id="contentContainer"><content id="content"></content></div></template><script>Polymer({is:"app-header",behaviors:[Polymer.AppScrollEffectsBehavior,Polymer.IronResizableBehavior],properties:{condenses:{type:Boolean,value:!1},fixed:{type:Boolean,value:!1},reveals:{type:Boolean,value:!1},shadow:{type:Boolean,reflectToAttribute:!0,value:!1}},observers:["resetLayout(isAttached, condenses, fixed)"],listeners:{"iron-resize":"_resizeHandler"},_height:0,_dHeight:0,_stickyElTop:0,_stickyEl:null,_top:0,_progress:0,_wasScrollingDown:!1,_initScrollTop:0,_initTimestamp:0,_lastTimestamp:0,_lastScrollTop:0,get _maxHeaderTop(){return this.fixed?this._dHeight:this._height+5},_getStickyEl:function(){for(var t,e=Polymer.dom(this.$.content).getDistributedNodes(),i=0;i<e.length;i++)if(e[i].nodeType===Node.ELEMENT_NODE){var s=e[i];if(s.hasAttribute("sticky")){t=s;break}t||(t=s)}return t},resetLayout:function(){this.debounce("_resetLayout",function(){if(0!==this.offsetWidth||0!==this.offsetHeight){var t=this._clampedScrollTop,e=0===this._height||0===t,i=this.disabled;this._height=this.offsetHeight,this._stickyEl=this._getStickyEl(),this.disabled=!0,e||this._updateScrollState(0,!0),this._mayMove()?this._dHeight=this._stickyEl?this._height-this._stickyEl.offsetHeight:0:this._dHeight=0,this._stickyElTop=this._stickyEl?this._stickyEl.offsetTop:0,this._setUpEffect(),e?this._updateScrollState(t,!0):(this._updateScrollState(this._lastScrollTop,!0),this._layoutIfDirty()),this.disabled=i,this.fire("app-header-reset-layout")}})},_updateScrollState:function(t,e){if(0!==this._height){var i=0,s=0,o=this._top,r=(this._lastScrollTop,this._maxHeaderTop),h=t-this._lastScrollTop,n=Math.abs(h),a=t>this._lastScrollTop,l=Date.now();if(this._mayMove()&&(s=this._clamp(this.reveals?o+h:t,0,r)),t>=this._dHeight&&(s=this.condenses&&!this.fixed?Math.max(this._dHeight,s):s,this.style.transitionDuration="0ms"),this.reveals&&!this.disabled&&n<100&&((l-this._initTimestamp>300||this._wasScrollingDown!==a)&&(this._initScrollTop=t,this._initTimestamp=l),t>=r))if(Math.abs(this._initScrollTop-t)>30||n>10){a&&t>=r?s=r:!a&&t>=this._dHeight&&(s=this.condenses&&!this.fixed?this._dHeight:0);var _=h/(l-this._lastTimestamp);this.style.transitionDuration=this._clamp((s-o)/_,0,300)+"ms"}else s=this._top;i=0===this._dHeight?t>0?1:0:s/this._dHeight,e||(this._lastScrollTop=t,this._top=s,this._wasScrollingDown=a,this._lastTimestamp=l),(e||i!==this._progress||o!==s||0===t)&&(this._progress=i,this._runEffects(i,s),this._transformHeader(s))}},_mayMove:function(){return this.condenses||!this.fixed},willCondense:function(){return this._dHeight>0&&this.condenses},isOnScreen:function(){return 0!==this._height&&this._top<this._height},isContentBelow:function(){return 0===this._top?this._clampedScrollTop>0:this._clampedScrollTop-this._maxHeaderTop>=0},_transformHeader:function(t){this.translate3d(0,-t+"px",0),this._stickyEl&&this.translate3d(0,this.condenses&&t>=this._stickyElTop?Math.min(t,this._dHeight)-this._stickyElTop+"px":0,0,this._stickyEl)},_resizeHandler:function(){this.resetLayout()},_clamp:function(t,e,i){return Math.min(i,Math.max(e,t))},_ensureBgContainers:function(){this._bgContainer||(this._bgContainer=document.createElement("div"),this._bgContainer.id="background",this._bgRear=document.createElement("div"),this._bgRear.id="backgroundRearLayer",this._bgContainer.appendChild(this._bgRear),this._bgFront=document.createElement("div"),this._bgFront.id="backgroundFrontLayer",this._bgContainer.appendChild(this._bgFront),Polymer.dom(this.root).insertBefore(this._bgContainer,this.$.contentContainer))},_getDOMRef:function(t){switch(t){case"backgroundFrontLayer":return this._ensureBgContainers(),this._bgFront;case"backgroundRearLayer":return this._ensureBgContainers(),this._bgRear;case"background":return this._ensureBgContainers(),this._bgContainer;case"mainTitle":return Polymer.dom(this).querySelector("[main-title]");case"condensedTitle":return Polymer.dom(this).querySelector("[condensed-title]")}return null},getScrollState:function(){return{progress:this._progress,top:this._top}}})</script></dom-module><dom-module id="app-toolbar" assetpath="../bower_components/app-layout/app-toolbar/"><template><style>:host{@apply(--layout-horizontal);@apply(--layout-center);position:relative;height:64px;padding:0 16px;pointer-events:none;font-size:var(--app-toolbar-font-size,20px)}::content>*{pointer-events:auto}::content>paper-icon-button{font-size:0}::content>[condensed-title],::content>[main-title]{pointer-events:none;@apply(--layout-flex)}::content>[bottom-item]{position:absolute;right:0;bottom:0;left:0}::content>[top-item]{position:absolute;top:0;right:0;left:0}::content>[spacer]{margin-left:64px}</style><content></content></template><script>Polymer({is:"app-toolbar"})</script></dom-module><dom-module id="ha-menu-button" assetpath="components/"><template><style>.invisible{visibility:hidden}</style><paper-icon-button icon="mdi:menu" class$="[[computeMenuButtonClass(narrow, showMenu)]]" on-tap="toggleMenu"></paper-icon-button></template></dom-module><script>Polymer({is:"ha-menu-button",properties:{narrow:{type:Boolean,value:!1},showMenu:{type:Boolean,value:!1}},computeMenuButtonClass:function(e,n){return!e&&n?"invisible":""},toggleMenu:function(){this.fire("open-menu")}})</script><dom-module id="ha-label-badge" assetpath="/"><template><style>.badge-container{display:inline-block;text-align:center;vertical-align:top;margin-bottom:16px}.label-badge{position:relative;display:block;margin:0 auto;width:2.5em;text-align:center;height:2.5em;line-height:2.5em;font-size:1.5em;border-radius:50%;border:.1em solid var(--ha-label-badge-color,--default-primary-color);color:#4c4c4c;white-space:nowrap;background-color:#fff;background-size:cover;transition:border .3s ease-in-out}.label-badge .value{font-size:90%;overflow:hidden;text-overflow:ellipsis}.label-badge .value.big{font-size:70%}.label-badge .label{position:absolute;bottom:-1em;left:0;right:0;line-height:1em;font-size:.5em}.label-badge .label span{max-width:80%;display:inline-block;background-color:var(--ha-label-badge-color,--default-primary-color);color:#fff;border-radius:1em;padding:4px 8px;font-weight:500;text-transform:uppercase;overflow:hidden;text-overflow:ellipsis;transition:background-color .3s ease-in-out}.badge-container .title{margin-top:1em;font-size:.9em;width:5em;font-weight:300;overflow:hidden;text-overflow:ellipsis;line-height:normal}iron-image{border-radius:50%}[hidden]{display:none!important}</style><div class="badge-container"><div class="label-badge" id="badge"><div class$="[[computeClasses(value)]]"><iron-icon icon="[[icon]]" hidden$="[[computeHideIcon(icon, value, image)]]"></iron-icon><span hidden$="[[computeHideValue(value, image)]]">[[value]]</span></div><div class="label" hidden$="[[!label]]"><span>[[label]]</span></div></div><div class="title">[[description]]</div></div></template></dom-module><script>Polymer({is:"ha-label-badge",properties:{value:{type:String,value:null},icon:{type:String,value:null},label:{type:String,value:null},description:{type:String},image:{type:String,value:null,observer:"imageChanged"}},computeClasses:function(e){return e&&e.length>4?"value big":"value"},computeHideIcon:function(e,n,l){return!e||n||l},computeHideValue:function(e,n){return!e||n},imageChanged:function(e){this.$.badge.style.backgroundImage=e?"url("+e+")":""}})</script><dom-module id="ha-demo-badge" assetpath="components/"><template><style>:host{--ha-label-badge-color:#dac90d}</style><ha-label-badge icon="mdi:emoticon" label="Demo" description=""></ha-label-badge></template></dom-module><script>Polymer({is:"ha-demo-badge"})</script><dom-module id="ha-state-label-badge" assetpath="components/entity/"><template><style>:host{cursor:pointer}ha-label-badge{--ha-label-badge-color:rgb(223, 76, 30)}.blue{--ha-label-badge-color:#039be5}.green{--ha-label-badge-color:#0DA035}.grey{--ha-label-badge-color:var(--paper-grey-500)}</style><ha-label-badge class$="[[computeClasses(state)]]" value="[[computeValue(state)]]" icon="[[computeIcon(state)]]" image="[[computeImage(state)]]" label="[[computeLabel(state)]]" description="[[computeDescription(state)]]"></ha-label-badge></template></dom-module><script>Polymer({is:"ha-state-label-badge",properties:{hass:{type:Object},state:{type:Object,observer:"stateChanged"}},listeners:{tap:"badgeTap"},badgeTap:function(e){e.stopPropagation(),this.async(function(){this.hass.moreInfoActions.selectEntity(this.state.entityId)},1)},computeClasses:function(e){switch(e.domain){case"binary_sensor":case"updater":return"blue";default:return""}},computeValue:function(e){switch(e.domain){case"binary_sensor":case"device_tracker":case"updater":case"sun":case"alarm_control_panel":return null;case"sensor":default:return"unknown"===e.state?"-":e.state}},computeIcon:function(e){if("unavailable"===e.state)return null;switch(e.domain){case"alarm_control_panel":return"pending"===e.state?"mdi:clock-fast":"armed_away"===e.state?"mdi:nature":"armed_home"===e.state?"mdi:home-variant":"triggered"===e.state?"mdi:alert-circle":window.hassUtil.domainIcon(e.domain,e.state);case"binary_sensor":case"device_tracker":case"updater":return window.hassUtil.stateIcon(e);case"sun":return"above_horizon"===e.state?window.hassUtil.domainIcon(e.domain):"mdi:brightness-3";default:return null}},computeImage:function(e){return e.attributes.entity_picture||null},computeLabel:function(e){if("unavailable"===e.state)return"unavai";switch(e.domain){case"device_tracker":return"not_home"===e.state?"Away":e.state;case"alarm_control_panel":return"pending"===e.state?"pend":"armed_away"===e.state||"armed_home"===e.state?"armed":"triggered"===e.state?"trig":"disarm";default:return e.attributes.unit_of_measurement||null}},computeDescription:function(e){return e.entityDisplay},stateChanged:function(){this.updateStyles()}})</script><dom-module id="ha-badges-card" assetpath="cards/"><template><template is="dom-repeat" items="[[states]]"><ha-state-label-badge hass="[[hass]]" state="[[item]]"></ha-state-label-badge></template></template></dom-module><script>Polymer({is:"ha-badges-card",properties:{hass:{type:Object},states:{type:Array}}})</script><dom-module id="paper-material" assetpath="../bower_components/paper-material/"><template><style include="paper-material-shared-styles"></style><style>:host([animated]){@apply(--shadow-transition)}</style><content></content></template></dom-module><script>Polymer({is:"paper-material",properties:{elevation:{type:Number,reflectToAttribute:!0,value:1},animated:{type:Boolean,reflectToAttribute:!0,value:!1}}})</script><dom-module id="ha-camera-card" assetpath="cards/"><template><style include="paper-material">:host{display:block;position:relative;font-size:0;border-radius:2px;cursor:pointer;min-height:48px;line-height:0}.camera-feed{width:100%;height:auto;border-radius:2px}.caption{@apply(--paper-font-common-nowrap);position:absolute;left:0;right:0;bottom:0;border-bottom-left-radius:2px;border-bottom-right-radius:2px;background-color:rgba(0,0,0,.3);padding:16px;font-size:16px;font-weight:500;line-height:16px;color:#fff}</style><img src="[[cameraFeedSrc]]" class="camera-feed" hidden$="[[!imageLoaded]]" on-load="imageLoadSuccess" on-error="imageLoadFail" alt="[[stateObj.entityDisplay]]"><div class="caption">[[stateObj.entityDisplay]]<template is="dom-if" if="[[!imageLoaded]]">(Error loading image)</template></div></template></dom-module><script>Polymer({is:"ha-camera-card",UPDATE_INTERVAL:1e4,properties:{hass:{type:Object},stateObj:{type:Object,observer:"updateCameraFeedSrc"},cameraFeedSrc:{type:String},imageLoaded:{type:Boolean,value:!0},elevation:{type:Number,value:1,reflectToAttribute:!0}},listeners:{tap:"cardTapped"},attached:function(){this.timer=setInterval(function(){this.updateCameraFeedSrc(this.stateObj)}.bind(this),this.UPDATE_INTERVAL)},detached:function(){clearInterval(this.timer)},cardTapped:function(){this.async(function(){this.hass.moreInfoActions.selectEntity(this.stateObj.entityId)}.bind(this),1)},updateCameraFeedSrc:function(e){const t=e.attributes,a=(new Date).getTime();this.cameraFeedSrc=t.entity_picture+"&time="+a},imageLoadSuccess:function(){this.imageLoaded=!0},imageLoadFail:function(){this.imageLoaded=!1}})</script><dom-module id="ha-card" assetpath="/"><template><style include="paper-material">:host{display:block;border-radius:2px;transition:all .3s ease-out;background-color:#fff}.header{@apply(--paper-font-headline);@apply(--paper-font-common-expensive-kerning);opacity:var(--dark-primary-opacity);padding:24px 16px 16px;text-transform:capitalize}</style><template is="dom-if" if="[[header]]"><div class="header">[[header]]</div></template><slot></slot></template></dom-module><script>Polymer({is:"ha-card",properties:{header:{type:String},elevation:{type:Number,value:1,reflectToAttribute:!0}}})</script><dom-module id="paper-toggle-button" assetpath="../bower_components/paper-toggle-button/"><template strip-whitespace=""><style>:host{display:inline-block;@apply(--layout-horizontal);@apply(--layout-center);@apply(--paper-font-common-base)}:host([disabled]){pointer-events:none}:host(:focus){outline:0}.toggle-bar{position:absolute;height:100%;width:100%;border-radius:8px;pointer-events:none;opacity:.4;transition:background-color linear .08s;background-color:var(--paper-toggle-button-unchecked-bar-color,#000);@apply(--paper-toggle-button-unchecked-bar)}.toggle-button{position:absolute;top:-3px;left:0;height:20px;width:20px;border-radius:50%;box-shadow:0 1px 5px 0 rgba(0,0,0,.6);transition:-webkit-transform linear .08s,background-color linear .08s;transition:transform linear .08s,background-color linear .08s;will-change:transform;background-color:var(--paper-toggle-button-unchecked-button-color,--paper-grey-50);@apply(--paper-toggle-button-unchecked-button)}.toggle-button.dragging{-webkit-transition:none;transition:none}:host([checked]:not([disabled])) .toggle-bar{opacity:.5;background-color:var(--paper-toggle-button-checked-bar-color,--primary-color);@apply(--paper-toggle-button-checked-bar)}:host([disabled]) .toggle-bar{background-color:#000;opacity:.12}:host([checked]) .toggle-button{-webkit-transform:translate(16px,0);transform:translate(16px,0)}:host([checked]:not([disabled])) .toggle-button{background-color:var(--paper-toggle-button-checked-button-color,--primary-color);@apply(--paper-toggle-button-checked-button)}:host([disabled]) .toggle-button{background-color:#bdbdbd;opacity:1}.toggle-ink{position:absolute;top:-14px;left:-14px;right:auto;bottom:auto;width:48px;height:48px;opacity:.5;pointer-events:none;color:var(--paper-toggle-button-unchecked-ink-color,--primary-text-color)}:host([checked]) .toggle-ink{color:var(--paper-toggle-button-checked-ink-color,--primary-color)}.toggle-container{display:inline-block;position:relative;width:36px;height:14px;margin:4px 1px}.toggle-label{position:relative;display:inline-block;vertical-align:middle;padding-left:var(--paper-toggle-button-label-spacing,8px);pointer-events:none;color:var(--paper-toggle-button-label-color,--primary-text-color)}:host([invalid]) .toggle-bar{background-color:var(--paper-toggle-button-invalid-bar-color,--error-color)}:host([invalid]) .toggle-button{background-color:var(--paper-toggle-button-invalid-button-color,--error-color)}:host([invalid]) .toggle-ink{color:var(--paper-toggle-button-invalid-ink-color,--error-color)}</style><div class="toggle-container"><div id="toggleBar" class="toggle-bar"></div><div id="toggleButton" class="toggle-button"></div></div><div class="toggle-label"><content></content></div></template><script>Polymer({is:"paper-toggle-button",behaviors:[Polymer.PaperCheckedElementBehavior],hostAttributes:{role:"button","aria-pressed":"false",tabindex:0},properties:{},listeners:{track:"_ontrack"},attached:function(){Polymer.RenderStatus.afterNextRender(this,function(){this.setScrollDirection("y")})},_ontrack:function(t){var e=t.detail;"start"===e.state?this._trackStart(e):"track"===e.state?this._trackMove(e):"end"===e.state&&this._trackEnd(e)},_trackStart:function(t){this._width=this.$.toggleBar.offsetWidth/2,this._trackChecked=this.checked,this.$.toggleButton.classList.add("dragging")},_trackMove:function(t){var e=t.dx;this._x=Math.min(this._width,Math.max(0,this._trackChecked?this._width+e:e)),this.translate3d(this._x+"px",0,0,this.$.toggleButton),this._userActivate(this._x>this._width/2)},_trackEnd:function(t){this.$.toggleButton.classList.remove("dragging"),this.transform("",this.$.toggleButton)},_createRipple:function(){this._rippleContainer=this.$.toggleButton;var t=Polymer.PaperRippleBehavior._createRipple();return t.id="ink",t.setAttribute("recenters",""),t.classList.add("circle","toggle-ink"),t}})</script></dom-module><dom-module id="ha-entity-toggle" assetpath="components/entity/"><template><style>:host{white-space:nowrap}paper-icon-button{color:var(--primary-text-color);transition:color .5s}paper-icon-button[state-active]{color:var(--default-primary-color)}paper-toggle-button{cursor:pointer;--paper-toggle-button-label-spacing:0;padding:13px 5px;margin:-4px -5px}</style><template is="dom-if" if="[[stateObj.attributes.assumed_state]]"><paper-icon-button icon="mdi:flash-off" on-tap="turnOff" state-active$="[[!isOn]]"></paper-icon-button><paper-icon-button icon="mdi:flash" on-tap="turnOn" state-active$="[[isOn]]"></paper-icon-button></template><template is="dom-if" if="[[!stateObj.attributes.assumed_state]]"><paper-toggle-button class="self-center" checked="[[toggleChecked]]" on-change="toggleChanged"></paper-toggle-button></template></template></dom-module><script>Polymer({is:"ha-entity-toggle",properties:{hass:{type:Object},stateObj:{type:Object},toggleChecked:{type:Boolean,value:!1},isOn:{type:Boolean,computed:"computeIsOn(stateObj)",observer:"isOnChanged"}},listeners:{tap:"onTap"},onTap:function(t){t.stopPropagation()},ready:function(){this.forceStateChange()},toggleChanged:function(t){var e=t.target.checked;e&&!this.isOn?this.callService(!0):!e&&this.isOn&&this.callService(!1)},isOnChanged:function(t){this.toggleChecked=t},forceStateChange:function(){this.toggleChecked===this.isOn&&(this.toggleChecked=!this.toggleChecked),this.toggleChecked=this.isOn},turnOn:function(){this.callService(!0)},turnOff:function(){this.callService(!1)},computeIsOn:function(t){return t&&window.hassUtil.OFF_STATES.indexOf(t.state)===-1},callService:function(t){var e,i,n;"lock"===this.stateObj.domain?(e="lock",i=t?"lock":"unlock"):"garage_door"===this.stateObj.domain?(e="garage_door",i=t?"open":"close"):(e="homeassistant",i=t?"turn_on":"turn_off"),n=this.stateObj,this.hass.serviceActions.callService(e,i,{entity_id:this.stateObj.entityId}).then(function(){setTimeout(function(){this.stateObj===n&&this.forceStateChange()}.bind(this),2e3)}.bind(this))}})</script><dom-module id="ha-state-icon" assetpath="/"><template><iron-icon icon="[[computeIcon(stateObj)]]"></iron-icon></template></dom-module><script>Polymer({is:"ha-state-icon",properties:{stateObj:{type:Object}},computeIcon:function(t){return window.hassUtil.stateIcon(t)}})</script><dom-module id="state-badge" assetpath="components/entity/"><template><style>:host{position:relative;display:inline-block;width:40px;color:#44739E;border-radius:50%;height:40px;text-align:center;background-size:cover;line-height:40px}ha-state-icon{transition:color .3s ease-in-out}ha-state-icon[data-domain=binary_sensor][data-state=on],ha-state-icon[data-domain=light][data-state=on],ha-state-icon[data-domain=sun][data-state=above_horizon],ha-state-icon[data-domain=switch][data-state=on]{color:#FDD835}ha-state-icon[data-state=unavailable]{color:var(--disabled-text-color)}</style><ha-state-icon id="icon" state-obj="[[stateObj]]" data-domain$="[[stateObj.domain]]" data-state$="[[stateObj.state]]"></ha-state-icon></template></dom-module><script>Polymer({is:"state-badge",properties:{stateObj:{type:Object,observer:"updateIconColor"}},updateIconColor:function(t){return t.attributes.entity_picture?(this.style.backgroundImage="url("+t.attributes.entity_picture+")",void(this.$.icon.style.display="none")):(this.style.backgroundImage="",this.$.icon.style.display="inline",void("light"===t.domain&&"on"===t.state&&t.attributes.rgb_color&&t.attributes.rgb_color.reduce(function(t,e){return t+e},0)<730?this.$.icon.style.color="rgb("+t.attributes.rgb_color.join(",")+")":this.$.icon.style.color=null))}})</script><script>Polymer({is:"ha-relative-time",properties:{datetime:{type:String,observer:"datetimeChanged"},datetimeObj:{type:Object,observer:"datetimeObjChanged"},parsedDateTime:{type:Object}},created:function(){this.updateRelative=this.updateRelative.bind(this)},attached:function(){this.updateInterval=setInterval(this.updateRelative,6e4)},detached:function(){clearInterval(this.updateInterval)},datetimeChanged:function(e){this.parsedDateTime=e?new Date(e):null,this.updateRelative()},datetimeObjChanged:function(e){this.parsedDateTime=e,this.updateRelative()},updateRelative:function(){var e=Polymer.dom(this);e.innerHTML=this.parsedDateTime?window.hassUtil.relativeTime(this.parsedDateTime):"never"}})</script><dom-module id="state-info" assetpath="components/entity/"><template><style>:host{@apply(--paper-font-body1);min-width:150px;white-space:nowrap}state-badge{float:left}.info{margin-left:56px}.name{@apply(--paper-font-common-nowrap);color:var(--primary-text-color);line-height:40px}.name[in-dialog]{line-height:20px}.time-ago{@apply(--paper-font-common-nowrap);color:var(--secondary-text-color)}</style><div><state-badge state-obj="[[stateObj]]"></state-badge><div class="info"><div class="name" in-dialog$="[[inDialog]]">[[stateObj.entityDisplay]]</div><template is="dom-if" if="[[inDialog]]"><div class="time-ago"><ha-relative-time datetime-obj="[[stateObj.lastChangedAsDate]]"></ha-relative-time></div></template></div></div></template></dom-module><script>Polymer({is:"state-info",properties:{detailed:{type:Boolean,value:!1},stateObj:{type:Object},inDialog:{type:Boolean}}})</script><dom-module id="state-card-climate" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>:host{@apply(--paper-font-body1);line-height:1.5}.state{margin-left:16px;text-align:right}.target{color:var(--primary-text-color)}.current{color:var(--secondary-text-color)}.operation-mode{font-weight:700;text-transform:capitalize}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><div class="state"><div class="target"><span class="operation-mode">[[stateObj.attributes.operation_mode]] </span><span>[[computeTargetTemperature(stateObj)]]</span></div><div class="current"><span>Currently: </span><span>[[stateObj.attributes.current_temperature]]</span> <span></span> <span>[[stateObj.attributes.unit_of_measurement]]</span></div></div></div></template></dom-module><script>Polymer({is:"state-card-climate",properties:{inDialog:{type:Boolean,value:!1},stateObj:{type:Object}},computeTargetTemperature:function(t){var e="";return t.attributes.target_temp_low&&t.attributes.target_temp_high?e=t.attributes.target_temp_low+" - "+t.attributes.target_temp_high+" "+t.attributes.unit_of_measurement:t.attributes.temperature&&(e=t.attributes.temperature+" "+t.attributes.unit_of_measurement),e}})</script><dom-module id="state-card-configurator" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>paper-button{color:var(--default-primary-color);font-weight:500;top:3px;height:37px;margin-right:-.57em}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><paper-button hidden$="[[inDialog]]">[[stateObj.state]]</paper-button></div><template is="dom-if" if="[[stateObj.attributes.description_image]]"><img hidden="" src="[[stateObj.attributes.description_image]]"></template></template></dom-module><script>Polymer({is:"state-card-configurator",properties:{inDialog:{type:Boolean,value:!1},stateObj:{type:Object}}})</script><dom-module id="state-card-cover" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>:host{line-height:1.5}.state{text-align:right;white-space:nowrap;width:127px}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><div class="state"><paper-icon-button icon="mdi:arrow-up" on-tap="onOpenTap" disabled="[[computeIsFullyOpen(stateObj)]]"></paper-icon-button><paper-icon-button icon="mdi:stop" on-tap="onStopTap"></paper-icon-button><paper-icon-button icon="mdi:arrow-down" on-tap="onCloseTap" disabled="[[computeIsFullyClosed(stateObj)]]"></paper-icon-button></div></div></template></dom-module><script>Polymer({is:"state-card-cover",properties:{hass:{type:Object},inDialog:{type:Boolean,value:!1},stateObj:{type:Object}},computeIsFullyOpen:function(t){return void 0!==t.attributes.current_position?100===t.attributes.current_position:"open"===t.state},computeIsFullyClosed:function(t){return void 0!==t.attributes.current_position?0===t.attributes.current_position:"closed"===t.state},onOpenTap:function(){this.hass.serviceActions.callService("cover","open_cover",{entity_id:this.stateObj.entityId})},onCloseTap:function(){this.hass.serviceActions.callService("cover","close_cover",{entity_id:this.stateObj.entityId})},onStopTap:function(){this.hass.serviceActions.callService("cover","stop_cover",{entity_id:this.stateObj.entityId})}})</script><dom-module id="state-card-display" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>.state{@apply(--paper-font-body1);color:var(--primary-text-color);margin-left:16px;text-align:right;line-height:40px}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><div class="state">[[stateObj.stateDisplay]]</div></div></template></dom-module><script>Polymer({is:"state-card-display",properties:{inDialog:{type:Boolean,value:!1},stateObj:{type:Object}}})</script><script>Polymer.PaperInputHelper={},Polymer.PaperInputHelper.NextLabelID=1,Polymer.PaperInputHelper.NextAddonID=1,Polymer.PaperInputBehaviorImpl={properties:{label:{type:String},value:{notify:!0,type:String},disabled:{type:Boolean,value:!1},invalid:{type:Boolean,value:!1,notify:!0},preventInvalidInput:{type:Boolean},allowedPattern:{type:String},type:{type:String},list:{type:String},pattern:{type:String},required:{type:Boolean,value:!1},errorMessage:{type:String},charCounter:{type:Boolean,value:!1},noLabelFloat:{type:Boolean,value:!1},alwaysFloatLabel:{type:Boolean,value:!1},autoValidate:{type:Boolean,value:!1},validator:{type:String},autocomplete:{type:String,value:"off"},autofocus:{type:Boolean,observer:"_autofocusChanged"},inputmode:{type:String},minlength:{type:Number},maxlength:{type:Number},min:{type:String},max:{type:String},step:{type:String},name:{type:String},placeholder:{type:String,value:""},readonly:{type:Boolean,value:!1},size:{type:Number},autocapitalize:{type:String,value:"none"},autocorrect:{type:String,value:"off"},autosave:{type:String},results:{type:Number},accept:{type:String},multiple:{type:Boolean},_ariaDescribedBy:{type:String,value:""},_ariaLabelledBy:{type:String,value:""}},listeners:{"addon-attached":"_onAddonAttached"},keyBindings:{"shift+tab:keydown":"_onShiftTabDown"},hostAttributes:{tabindex:0},get inputElement(){return this.$.input},get _focusableElement(){return this.inputElement},registered:function(){this._typesThatHaveText=["date","datetime","datetime-local","month","time","week","file"]},attached:function(){this._updateAriaLabelledBy(),this.inputElement&&this._typesThatHaveText.indexOf(this.inputElement.type)!==-1&&(this.alwaysFloatLabel=!0)},_appendStringWithSpace:function(e,t){return e=e?e+" "+t:t},_onAddonAttached:function(e){var t=e.path?e.path[0]:e.target;if(t.id)this._ariaDescribedBy=this._appendStringWithSpace(this._ariaDescribedBy,t.id);else{var a="paper-input-add-on-"+Polymer.PaperInputHelper.NextAddonID++;t.id=a,this._ariaDescribedBy=this._appendStringWithSpace(this._ariaDescribedBy,a)}},validate:function(){return this.inputElement.validate()},_focusBlurHandler:function(e){Polymer.IronControlState._focusBlurHandler.call(this,e),this.focused&&!this._shiftTabPressed&&this._focusableElement.focus()},_onShiftTabDown:function(e){var t=this.getAttribute("tabindex");this._shiftTabPressed=!0,this.setAttribute("tabindex","-1"),this.async(function(){this.setAttribute("tabindex",t),this._shiftTabPressed=!1},1)},_handleAutoValidate:function(){this.autoValidate&&this.validate()},updateValueAndPreserveCaret:function(e){try{var t=this.inputElement.selectionStart;this.value=e,this.inputElement.selectionStart=t,this.inputElement.selectionEnd=t}catch(t){this.value=e}},_computeAlwaysFloatLabel:function(e,t){return t||e},_updateAriaLabelledBy:function(){var e=Polymer.dom(this.root).querySelector("label");if(!e)return void(this._ariaLabelledBy="");var t;e.id?t=e.id:(t="paper-input-label-"+Polymer.PaperInputHelper.NextLabelID++,e.id=t),this._ariaLabelledBy=t},_onChange:function(e){this.shadowRoot&&this.fire(e.type,{sourceEvent:e},{node:this,bubbles:e.bubbles,cancelable:e.cancelable})},_autofocusChanged:function(){if(this.autofocus&&this._focusableElement){var e=document.activeElement,t=e instanceof HTMLElement,a=t&&e!==document.body&&e!==document.documentElement;a||this._focusableElement.focus()}}},Polymer.PaperInputBehavior=[Polymer.IronControlState,Polymer.IronA11yKeysBehavior,Polymer.PaperInputBehaviorImpl]</script><dom-module id="paper-input-char-counter" assetpath="../bower_components/paper-input/"><template><style>:host{display:inline-block;float:right;@apply(--paper-font-caption);@apply(--paper-input-char-counter)}:host([hidden]){display:none!important}:host-context([dir=rtl]){float:left}</style><span>[[_charCounterStr]]</span></template></dom-module><script>Polymer({is:"paper-input-char-counter",behaviors:[Polymer.PaperInputAddonBehavior],properties:{_charCounterStr:{type:String,value:"0"}},update:function(t){if(t.inputElement){t.value=t.value||"";var e=t.value.toString().length.toString();t.inputElement.hasAttribute("maxlength")&&(e+="/"+t.inputElement.getAttribute("maxlength")),this._charCounterStr=e}}})</script><dom-module id="paper-input" assetpath="../bower_components/paper-input/"><template><style>:host{display:block}:host([focused]){outline:0}:host([hidden]){display:none!important}input::-webkit-input-placeholder{color:var(--paper-input-container-color,--secondary-text-color)}input:-moz-placeholder{color:var(--paper-input-container-color,--secondary-text-color)}input::-moz-placeholder{color:var(--paper-input-container-color,--secondary-text-color)}input:-ms-input-placeholder{color:var(--paper-input-container-color,--secondary-text-color)}label{pointer-events:none}</style><paper-input-container no-label-float="[[noLabelFloat]]" always-float-label="[[_computeAlwaysFloatLabel(alwaysFloatLabel,placeholder)]]" auto-validate$="[[autoValidate]]" disabled$="[[disabled]]" invalid="[[invalid]]"><content select="[prefix]"></content><label hidden$="[[!label]]" aria-hidden="true" for="input">[[label]]</label><input is="iron-input" id="input" aria-labelledby$="[[_ariaLabelledBy]]" aria-describedby$="[[_ariaDescribedBy]]" disabled$="[[disabled]]" title$="[[title]]" bind-value="{{value}}" invalid="{{invalid}}" prevent-invalid-input="[[preventInvalidInput]]" allowed-pattern="[[allowedPattern]]" validator="[[validator]]" type$="[[type]]" pattern$="[[pattern]]" required$="[[required]]" autocomplete$="[[autocomplete]]" autofocus$="[[autofocus]]" inputmode$="[[inputmode]]" minlength$="[[minlength]]" maxlength$="[[maxlength]]" min$="[[min]]" max$="[[max]]" step$="[[step]]" name$="[[name]]" placeholder$="[[placeholder]]" readonly$="[[readonly]]" list$="[[list]]" size$="[[size]]" autocapitalize$="[[autocapitalize]]" autocorrect$="[[autocorrect]]" on-change="_onChange" tabindex$="[[tabindex]]" autosave$="[[autosave]]" results$="[[results]]" accept$="[[accept]]" multiple$="[[multiple]]"><content select="[suffix]"></content><template is="dom-if" if="[[errorMessage]]"><paper-input-error aria-live="assertive">[[errorMessage]]</paper-input-error></template><template is="dom-if" if="[[charCounter]]"><paper-input-char-counter></paper-input-char-counter></template></paper-input-container></template></dom-module><script>Polymer({is:"paper-input",behaviors:[Polymer.IronFormElementBehavior,Polymer.PaperInputBehavior]})</script><script>Polymer.IronFitBehavior={properties:{sizingTarget:{type:Object,value:function(){return this}},fitInto:{type:Object,value:window},noOverlap:{type:Boolean},positionTarget:{type:Element},horizontalAlign:{type:String},verticalAlign:{type:String},dynamicAlign:{type:Boolean},horizontalOffset:{type:Number,value:0,notify:!0},verticalOffset:{type:Number,value:0,notify:!0},autoFitOnAttach:{type:Boolean,value:!1},_fitInfo:{type:Object}},get _fitWidth(){var t;return t=this.fitInto===window?this.fitInto.innerWidth:this.fitInto.getBoundingClientRect().width},get _fitHeight(){var t;return t=this.fitInto===window?this.fitInto.innerHeight:this.fitInto.getBoundingClientRect().height},get _fitLeft(){var t;return t=this.fitInto===window?0:this.fitInto.getBoundingClientRect().left},get _fitTop(){var t;return t=this.fitInto===window?0:this.fitInto.getBoundingClientRect().top},get _defaultPositionTarget(){var t=Polymer.dom(this).parentNode;return t&&t.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&(t=t.host),t},get _localeHorizontalAlign(){if(this._isRTL){if("right"===this.horizontalAlign)return"left";if("left"===this.horizontalAlign)return"right"}return this.horizontalAlign},attached:function(){this._isRTL="rtl"==window.getComputedStyle(this).direction,this.positionTarget=this.positionTarget||this._defaultPositionTarget,this.autoFitOnAttach&&("none"===window.getComputedStyle(this).display?setTimeout(function(){this.fit()}.bind(this)):this.fit())},fit:function(){this.position(),this.constrain(),this.center()},_discoverInfo:function(){if(!this._fitInfo){var t=window.getComputedStyle(this),i=window.getComputedStyle(this.sizingTarget);this._fitInfo={inlineStyle:{top:this.style.top||"",left:this.style.left||"",position:this.style.position||""},sizerInlineStyle:{maxWidth:this.sizingTarget.style.maxWidth||"",maxHeight:this.sizingTarget.style.maxHeight||"",boxSizing:this.sizingTarget.style.boxSizing||""},positionedBy:{vertically:"auto"!==t.top?"top":"auto"!==t.bottom?"bottom":null,horizontally:"auto"!==t.left?"left":"auto"!==t.right?"right":null},sizedBy:{height:"none"!==i.maxHeight,width:"none"!==i.maxWidth,minWidth:parseInt(i.minWidth,10)||0,minHeight:parseInt(i.minHeight,10)||0},margin:{top:parseInt(t.marginTop,10)||0,right:parseInt(t.marginRight,10)||0,bottom:parseInt(t.marginBottom,10)||0,left:parseInt(t.marginLeft,10)||0}},this.verticalOffset&&(this._fitInfo.margin.top=this._fitInfo.margin.bottom=this.verticalOffset,this._fitInfo.inlineStyle.marginTop=this.style.marginTop||"",this._fitInfo.inlineStyle.marginBottom=this.style.marginBottom||"",this.style.marginTop=this.style.marginBottom=this.verticalOffset+"px"),this.horizontalOffset&&(this._fitInfo.margin.left=this._fitInfo.margin.right=this.horizontalOffset,this._fitInfo.inlineStyle.marginLeft=this.style.marginLeft||"",this._fitInfo.inlineStyle.marginRight=this.style.marginRight||"",this.style.marginLeft=this.style.marginRight=this.horizontalOffset+"px")}},resetFit:function(){var t=this._fitInfo||{};for(var i in t.sizerInlineStyle)this.sizingTarget.style[i]=t.sizerInlineStyle[i];for(var i in t.inlineStyle)this.style[i]=t.inlineStyle[i];this._fitInfo=null},refit:function(){var t=this.sizingTarget.scrollLeft,i=this.sizingTarget.scrollTop;this.resetFit(),this.fit(),this.sizingTarget.scrollLeft=t,this.sizingTarget.scrollTop=i},position:function(){if(this.horizontalAlign||this.verticalAlign){this._discoverInfo(),this.style.position="fixed",this.sizingTarget.style.boxSizing="border-box",this.style.left="0px",this.style.top="0px";var t=this.getBoundingClientRect(),i=this.__getNormalizedRect(this.positionTarget),e=this.__getNormalizedRect(this.fitInto),n=this._fitInfo.margin,o={width:t.width+n.left+n.right,height:t.height+n.top+n.bottom},h=this.__getPosition(this._localeHorizontalAlign,this.verticalAlign,o,i,e),s=h.left+n.left,l=h.top+n.top,r=Math.min(e.right-n.right,s+t.width),a=Math.min(e.bottom-n.bottom,l+t.height),g=this._fitInfo.sizedBy.minWidth,f=this._fitInfo.sizedBy.minHeight;s<n.left&&(s=n.left,r-s<g&&(s=r-g)),l<n.top&&(l=n.top,a-l<f&&(l=a-f)),this.sizingTarget.style.maxWidth=r-s+"px",this.sizingTarget.style.maxHeight=a-l+"px",this.style.left=s-t.left+"px",this.style.top=l-t.top+"px"}},constrain:function(){if(!this.horizontalAlign&&!this.verticalAlign){this._discoverInfo();var t=this._fitInfo;t.positionedBy.vertically||(this.style.position="fixed",this.style.top="0px"),t.positionedBy.horizontally||(this.style.position="fixed",this.style.left="0px"),this.sizingTarget.style.boxSizing="border-box";var i=this.getBoundingClientRect();t.sizedBy.height||this.__sizeDimension(i,t.positionedBy.vertically,"top","bottom","Height"),t.sizedBy.width||this.__sizeDimension(i,t.positionedBy.horizontally,"left","right","Width")}},_sizeDimension:function(t,i,e,n,o){this.__sizeDimension(t,i,e,n,o)},__sizeDimension:function(t,i,e,n,o){var h=this._fitInfo,s=this.__getNormalizedRect(this.fitInto),l="Width"===o?s.width:s.height,r=i===n,a=r?l-t[n]:t[e],g=h.margin[r?e:n],f="offset"+o,p=this[f]-this.sizingTarget[f];this.sizingTarget.style["max"+o]=l-g-a-p+"px"},center:function(){if(!this.horizontalAlign&&!this.verticalAlign){this._discoverInfo();var t=this._fitInfo.positionedBy;if(!t.vertically||!t.horizontally){this.style.position="fixed",t.vertically||(this.style.top="0px"),t.horizontally||(this.style.left="0px");var i=this.getBoundingClientRect(),e=this.__getNormalizedRect(this.fitInto);if(!t.vertically){var n=e.top-i.top+(e.height-i.height)/2;this.style.top=n+"px"}if(!t.horizontally){var o=e.left-i.left+(e.width-i.width)/2;this.style.left=o+"px"}}}},__getNormalizedRect:function(t){return t===document.documentElement||t===window?{top:0,left:0,width:window.innerWidth,height:window.innerHeight,right:window.innerWidth,bottom:window.innerHeight}:t.getBoundingClientRect()},__getCroppedArea:function(t,i,e){var n=Math.min(0,t.top)+Math.min(0,e.bottom-(t.top+i.height)),o=Math.min(0,t.left)+Math.min(0,e.right-(t.left+i.width));return Math.abs(n)*i.width+Math.abs(o)*i.height},__getPosition:function(t,i,e,n,o){var h=[{verticalAlign:"top",horizontalAlign:"left",top:n.top,left:n.left},{verticalAlign:"top",horizontalAlign:"right",top:n.top,left:n.right-e.width},{verticalAlign:"bottom",horizontalAlign:"left",top:n.bottom-e.height,left:n.left},{verticalAlign:"bottom",horizontalAlign:"right",top:n.bottom-e.height,left:n.right-e.width}];if(this.noOverlap){for(var s=0,l=h.length;s<l;s++){var r={};for(var a in h[s])r[a]=h[s][a];h.push(r)}h[0].top=h[1].top+=n.height,h[2].top=h[3].top-=n.height,h[4].left=h[6].left+=n.width,h[5].left=h[7].left-=n.width}i="auto"===i?null:i,t="auto"===t?null:t;for(var g,s=0;s<h.length;s++){var f=h[s];if(!this.dynamicAlign&&!this.noOverlap&&f.verticalAlign===i&&f.horizontalAlign===t){g=f;break}var p=!(i&&f.verticalAlign!==i||t&&f.horizontalAlign!==t);if(this.dynamicAlign||p){g=g||f,f.croppedArea=this.__getCroppedArea(f,e,o);var d=f.croppedArea-g.croppedArea;if((d<0||0===d&&p)&&(g=f),0===g.croppedArea&&p)break}}return g}}</script><dom-module id="iron-overlay-backdrop" assetpath="/"><template><style>:host{position:fixed;top:0;left:0;width:100%;height:100%;background-color:var(--iron-overlay-backdrop-background-color,#000);opacity:0;transition:opacity .2s;pointer-events:none;@apply(--iron-overlay-backdrop)}:host(.opened){opacity:var(--iron-overlay-backdrop-opacity,.6);pointer-events:auto;@apply(--iron-overlay-backdrop-opened)}</style><content></content></template></dom-module><script>!function(){"use strict";Polymer({is:"iron-overlay-backdrop",properties:{opened:{reflectToAttribute:!0,type:Boolean,value:!1,observer:"_openedChanged"}},listeners:{transitionend:"_onTransitionend"},created:function(){this.__openedRaf=null},attached:function(){this.opened&&this._openedChanged(this.opened)},prepare:function(){this.opened&&!this.parentNode&&Polymer.dom(document.body).appendChild(this)},open:function(){this.opened=!0},close:function(){this.opened=!1},complete:function(){this.opened||this.parentNode!==document.body||Polymer.dom(this.parentNode).removeChild(this)},_onTransitionend:function(e){e&&e.target===this&&this.complete()},_openedChanged:function(e){if(e)this.prepare();else{var t=window.getComputedStyle(this);"0s"!==t.transitionDuration&&0!=t.opacity||this.complete()}this.isAttached&&(this.__openedRaf&&(window.cancelAnimationFrame(this.__openedRaf),this.__openedRaf=null),this.scrollTop=this.scrollTop,this.__openedRaf=window.requestAnimationFrame(function(){this.__openedRaf=null,this.toggleClass("opened",this.opened)}.bind(this)))}})}()</script><script>Polymer.IronOverlayManagerClass=function(){this._overlays=[],this._minimumZ=101,this._backdropElement=null,Polymer.Gestures.add(document,"tap",this._onCaptureClick.bind(this)),document.addEventListener("focus",this._onCaptureFocus.bind(this),!0),document.addEventListener("keydown",this._onCaptureKeyDown.bind(this),!0)},Polymer.IronOverlayManagerClass.prototype={constructor:Polymer.IronOverlayManagerClass,get backdropElement(){return this._backdropElement||(this._backdropElement=document.createElement("iron-overlay-backdrop")),this._backdropElement},get deepActiveElement(){for(var e=document.activeElement||document.body;e.root&&Polymer.dom(e.root).activeElement;)e=Polymer.dom(e.root).activeElement;return e},_bringOverlayAtIndexToFront:function(e){var t=this._overlays[e];if(t){var r=this._overlays.length-1,a=this._overlays[r];if(a&&this._shouldBeBehindOverlay(t,a)&&r--,!(e>=r)){var n=Math.max(this.currentOverlayZ(),this._minimumZ);for(this._getZ(t)<=n&&this._applyOverlayZ(t,n);e<r;)this._overlays[e]=this._overlays[e+1],e++;this._overlays[r]=t}}},addOrRemoveOverlay:function(e){e.opened?this.addOverlay(e):this.removeOverlay(e)},addOverlay:function(e){var t=this._overlays.indexOf(e);if(t>=0)return this._bringOverlayAtIndexToFront(t),void this.trackBackdrop();var r=this._overlays.length,a=this._overlays[r-1],n=Math.max(this._getZ(a),this._minimumZ),o=this._getZ(e);if(a&&this._shouldBeBehindOverlay(e,a)){this._applyOverlayZ(a,n),r--;var i=this._overlays[r-1];n=Math.max(this._getZ(i),this._minimumZ)}o<=n&&this._applyOverlayZ(e,n),this._overlays.splice(r,0,e),this.trackBackdrop()},removeOverlay:function(e){var t=this._overlays.indexOf(e);t!==-1&&(this._overlays.splice(t,1),this.trackBackdrop())},currentOverlay:function(){var e=this._overlays.length-1;return this._overlays[e]},currentOverlayZ:function(){return this._getZ(this.currentOverlay())},ensureMinimumZ:function(e){this._minimumZ=Math.max(this._minimumZ,e)},focusOverlay:function(){var e=this.currentOverlay();e&&e._applyFocus()},trackBackdrop:function(){var e=this._overlayWithBackdrop();(e||this._backdropElement)&&(this.backdropElement.style.zIndex=this._getZ(e)-1,this.backdropElement.opened=!!e)},getBackdrops:function(){for(var e=[],t=0;t<this._overlays.length;t++)this._overlays[t].withBackdrop&&e.push(this._overlays[t]);return e},backdropZ:function(){return this._getZ(this._overlayWithBackdrop())-1},_overlayWithBackdrop:function(){for(var e=0;e<this._overlays.length;e++)if(this._overlays[e].withBackdrop)return this._overlays[e]},_getZ:function(e){var t=this._minimumZ;if(e){var r=Number(e.style.zIndex||window.getComputedStyle(e).zIndex);r===r&&(t=r)}return t},_setZ:function(e,t){e.style.zIndex=t},_applyOverlayZ:function(e,t){this._setZ(e,t+2)},_overlayInPath:function(e){e=e||[];for(var t=0;t<e.length;t++)if(e[t]._manager===this)return e[t]},_onCaptureClick:function(e){var t=this.currentOverlay();t&&this._overlayInPath(Polymer.dom(e).path)!==t&&t._onCaptureClick(e)},_onCaptureFocus:function(e){var t=this.currentOverlay();t&&t._onCaptureFocus(e)},_onCaptureKeyDown:function(e){var t=this.currentOverlay();t&&(Polymer.IronA11yKeysBehavior.keyboardEventMatchesKeys(e,"esc")?t._onCaptureEsc(e):Polymer.IronA11yKeysBehavior.keyboardEventMatchesKeys(e,"tab")&&t._onCaptureTab(e))},_shouldBeBehindOverlay:function(e,t){return!e.alwaysOnTop&&t.alwaysOnTop}},Polymer.IronOverlayManager=new Polymer.IronOverlayManagerClass</script><script>!function(){"use strict";var e=Element.prototype,t=e.matches||e.matchesSelector||e.mozMatchesSelector||e.msMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;Polymer.IronFocusablesHelper={getTabbableNodes:function(e){var t=[],r=this._collectTabbableNodes(e,t);return r?this._sortByTabIndex(t):t},isFocusable:function(e){return t.call(e,"input, select, textarea, button, object")?t.call(e,":not([disabled])"):t.call(e,"a[href], area[href], iframe, [tabindex], [contentEditable]")},isTabbable:function(e){return this.isFocusable(e)&&t.call(e,':not([tabindex="-1"])')&&this._isVisible(e)},_normalizedTabIndex:function(e){if(this.isFocusable(e)){var t=e.getAttribute("tabindex")||0;return Number(t)}return-1},_collectTabbableNodes:function(e,t){if(e.nodeType!==Node.ELEMENT_NODE||!this._isVisible(e))return!1;var r=e,a=this._normalizedTabIndex(r),i=a>0;a>=0&&t.push(r);var n;n="content"===r.localName?Polymer.dom(r).getDistributedNodes():Polymer.dom(r.root||r).children;for(var o=0;o<n.length;o++){var s=this._collectTabbableNodes(n[o],t);i=i||s}return i},_isVisible:function(e){var t=e.style;return"hidden"!==t.visibility&&"none"!==t.display&&(t=window.getComputedStyle(e),"hidden"!==t.visibility&&"none"!==t.display)},_sortByTabIndex:function(e){var t=e.length;if(t<2)return e;var r=Math.ceil(t/2),a=this._sortByTabIndex(e.slice(0,r)),i=this._sortByTabIndex(e.slice(r));return this._mergeSortByTabIndex(a,i)},_mergeSortByTabIndex:function(e,t){for(var r=[];e.length>0&&t.length>0;)this._hasLowerTabOrder(e[0],t[0])?r.push(t.shift()):r.push(e.shift());return r.concat(e,t)},_hasLowerTabOrder:function(e,t){var r=Math.max(e.tabIndex,0),a=Math.max(t.tabIndex,0);return 0===r||0===a?a>r:r>a}}}()</script><script>!function(){"use strict";Polymer.IronOverlayBehaviorImpl={properties:{opened:{observer:"_openedChanged",type:Boolean,value:!1,notify:!0},canceled:{observer:"_canceledChanged",readOnly:!0,type:Boolean,value:!1},withBackdrop:{observer:"_withBackdropChanged",type:Boolean},noAutoFocus:{type:Boolean,value:!1},noCancelOnEscKey:{type:Boolean,value:!1},noCancelOnOutsideClick:{type:Boolean,value:!1},closingReason:{type:Object},restoreFocusOnClose:{type:Boolean,value:!1},alwaysOnTop:{type:Boolean},_manager:{type:Object,value:Polymer.IronOverlayManager},_focusedChild:{type:Object}},listeners:{"iron-resize":"_onIronResize"},get backdropElement(){return this._manager.backdropElement},get _focusNode(){return this._focusedChild||Polymer.dom(this).querySelector("[autofocus]")||this},get _focusableNodes(){return Polymer.IronFocusablesHelper.getTabbableNodes(this)},ready:function(){this.__isAnimating=!1,this.__shouldRemoveTabIndex=!1,this.__firstFocusableNode=this.__lastFocusableNode=null,this.__raf=null,this.__restoreFocusNode=null,this._ensureSetup()},attached:function(){this.opened&&this._openedChanged(this.opened),this._observer=Polymer.dom(this).observeNodes(this._onNodesChange)},detached:function(){Polymer.dom(this).unobserveNodes(this._observer),this._observer=null,this.__raf&&(window.cancelAnimationFrame(this.__raf),this.__raf=null),this._manager.removeOverlay(this)},toggle:function(){this._setCanceled(!1),this.opened=!this.opened},open:function(){this._setCanceled(!1),this.opened=!0},close:function(){this._setCanceled(!1),this.opened=!1},cancel:function(e){var t=this.fire("iron-overlay-canceled",e,{cancelable:!0});t.defaultPrevented||(this._setCanceled(!0),this.opened=!1)},invalidateTabbables:function(){this.__firstFocusableNode=this.__lastFocusableNode=null},_ensureSetup:function(){this._overlaySetup||(this._overlaySetup=!0,this.style.outline="none",this.style.display="none")},_openedChanged:function(e){e?this.removeAttribute("aria-hidden"):this.setAttribute("aria-hidden","true"),this.isAttached&&(this.__isAnimating=!0,this.__onNextAnimationFrame(this.__openedChanged))},_canceledChanged:function(){this.closingReason=this.closingReason||{},this.closingReason.canceled=this.canceled},_withBackdropChanged:function(){this.withBackdrop&&!this.hasAttribute("tabindex")?(this.setAttribute("tabindex","-1"),this.__shouldRemoveTabIndex=!0):this.__shouldRemoveTabIndex&&(this.removeAttribute("tabindex"),this.__shouldRemoveTabIndex=!1),this.opened&&this.isAttached&&this._manager.trackBackdrop()},_prepareRenderOpened:function(){this.__restoreFocusNode=this._manager.deepActiveElement,this._preparePositioning(),this.refit(),this._finishPositioning(),this.noAutoFocus&&document.activeElement===this._focusNode&&(this._focusNode.blur(),this.__restoreFocusNode.focus())},_renderOpened:function(){this._finishRenderOpened()},_renderClosed:function(){this._finishRenderClosed()},_finishRenderOpened:function(){this.notifyResize(),this.__isAnimating=!1,this.fire("iron-overlay-opened")},_finishRenderClosed:function(){this.style.display="none",this.style.zIndex="",this.notifyResize(),this.__isAnimating=!1,this.fire("iron-overlay-closed",this.closingReason)},_preparePositioning:function(){this.style.transition=this.style.webkitTransition="none",this.style.transform=this.style.webkitTransform="none",this.style.display=""},_finishPositioning:function(){this.style.display="none",this.scrollTop=this.scrollTop,this.style.transition=this.style.webkitTransition="",this.style.transform=this.style.webkitTransform="",this.style.display="",this.scrollTop=this.scrollTop},_applyFocus:function(){if(this.opened)this.noAutoFocus||this._focusNode.focus();else{this._focusNode.blur(),this._focusedChild=null,this.restoreFocusOnClose&&this.__restoreFocusNode&&this.__restoreFocusNode.focus(),this.__restoreFocusNode=null;var e=this._manager.currentOverlay();e&&this!==e&&e._applyFocus()}},_onCaptureClick:function(e){this.noCancelOnOutsideClick||this.cancel(e)},_onCaptureFocus:function(e){if(this.withBackdrop){var t=Polymer.dom(e).path;t.indexOf(this)===-1?(e.stopPropagation(),this._applyFocus()):this._focusedChild=t[0]}},_onCaptureEsc:function(e){this.noCancelOnEscKey||this.cancel(e)},_onCaptureTab:function(e){if(this.withBackdrop){this.__ensureFirstLastFocusables();var t=e.shiftKey,i=t?this.__firstFocusableNode:this.__lastFocusableNode,s=t?this.__lastFocusableNode:this.__firstFocusableNode,o=!1;if(i===s)o=!0;else{var n=this._manager.deepActiveElement;o=n===i||n===this}o&&(e.preventDefault(),this._focusedChild=s,this._applyFocus())}},_onIronResize:function(){this.opened&&!this.__isAnimating&&this.__onNextAnimationFrame(this.refit)},_onNodesChange:function(){this.opened&&!this.__isAnimating&&(this.invalidateTabbables(),this.notifyResize())},__ensureFirstLastFocusables:function(){if(!this.__firstFocusableNode||!this.__lastFocusableNode){var e=this._focusableNodes;this.__firstFocusableNode=e[0],this.__lastFocusableNode=e[e.length-1]}},__openedChanged:function(){this.opened?(this._prepareRenderOpened(),this._manager.addOverlay(this),this._applyFocus(),this._renderOpened()):(this._manager.removeOverlay(this),this._applyFocus(),this._renderClosed())},__onNextAnimationFrame:function(e){this.__raf&&window.cancelAnimationFrame(this.__raf);var t=this;this.__raf=window.requestAnimationFrame(function(){t.__raf=null,e.call(t)})}},Polymer.IronOverlayBehavior=[Polymer.IronFitBehavior,Polymer.IronResizableBehavior,Polymer.IronOverlayBehaviorImpl]}()</script><script>Polymer.NeonAnimatableBehavior={properties:{animationConfig:{type:Object},entryAnimation:{observer:"_entryAnimationChanged",type:String},exitAnimation:{observer:"_exitAnimationChanged",type:String}},_entryAnimationChanged:function(){this.animationConfig=this.animationConfig||{},this.animationConfig.entry=[{name:this.entryAnimation,node:this}]},_exitAnimationChanged:function(){this.animationConfig=this.animationConfig||{},this.animationConfig.exit=[{name:this.exitAnimation,node:this}]},_copyProperties:function(i,n){for(var t in n)i[t]=n[t]},_cloneConfig:function(i){var n={isClone:!0};return this._copyProperties(n,i),n},_getAnimationConfigRecursive:function(i,n,t){if(this.animationConfig){if(this.animationConfig.value&&"function"==typeof this.animationConfig.value)return void this._warn(this._logf("playAnimation","Please put 'animationConfig' inside of your components 'properties' object instead of outside of it."));var o;if(o=i?this.animationConfig[i]:this.animationConfig,Array.isArray(o)||(o=[o]),o)for(var e,a=0;e=o[a];a++)if(e.animatable)e.animatable._getAnimationConfigRecursive(e.type||i,n,t);else if(e.id){var r=n[e.id];r?(r.isClone||(n[e.id]=this._cloneConfig(r),r=n[e.id]),this._copyProperties(r,e)):n[e.id]=e}else t.push(e)}},getAnimationConfig:function(i){var n={},t=[];this._getAnimationConfigRecursive(i,n,t);for(var o in n)t.push(n[o]);return t}}</script><script>Polymer.NeonAnimationRunnerBehaviorImpl={_configureAnimations:function(n){var i=[];if(n.length>0)for(var e,t=0;e=n[t];t++){var o=document.createElement(e.name);if(o.isNeonAnimation){var a=null;try{a=o.configure(e),"function"!=typeof a.cancel&&(a=document.timeline.play(a))}catch(n){a=null,console.warn("Couldnt play","(",e.name,").",n)}a&&i.push({neonAnimation:o,config:e,animation:a})}else console.warn(this.is+":",e.name,"not found!")}return i},_shouldComplete:function(n){for(var i=!0,e=0;e<n.length;e++)if("finished"!=n[e].animation.playState){i=!1;break}return i},_complete:function(n){for(var i=0;i<n.length;i++)n[i].neonAnimation.complete(n[i].config);for(var i=0;i<n.length;i++)n[i].animation.cancel()},playAnimation:function(n,i){var e=this.getAnimationConfig(n);if(e){this._active=this._active||{},this._active[n]&&(this._complete(this._active[n]),delete this._active[n]);var t=this._configureAnimations(e);if(0==t.length)return void this.fire("neon-animation-finish",i,{bubbles:!1});this._active[n]=t;for(var o=0;o<t.length;o++)t[o].animation.onfinish=function(){this._shouldComplete(t)&&(this._complete(t),delete this._active[n],this.fire("neon-animation-finish",i,{bubbles:!1}))}.bind(this)}},cancelAnimation:function(){for(var n in this._animations)this._animations[n].cancel();this._animations={}}},Polymer.NeonAnimationRunnerBehavior=[Polymer.NeonAnimatableBehavior,Polymer.NeonAnimationRunnerBehaviorImpl]</script><script>Polymer.NeonAnimationBehavior={properties:{animationTiming:{type:Object,value:function(){return{duration:500,easing:"cubic-bezier(0.4, 0, 0.2, 1)",fill:"both"}}}},isNeonAnimation:!0,timingFromConfig:function(i){if(i.timing)for(var n in i.timing)this.animationTiming[n]=i.timing[n];return this.animationTiming},setPrefixedProperty:function(i,n,r){for(var t,o={transform:["webkitTransform"],transformOrigin:["mozTransformOrigin","webkitTransformOrigin"]},e=o[n],m=0;t=e[m];m++)i.style[t]=r;i.style[n]=r},complete:function(){}}</script><script>!function(a,b){var c={},d={},e={},f=null;!function(t,e){function i(t){if("number"==typeof t)return t;var e={};for(var i in t)e[i]=t[i];return e}function n(){this._delay=0,this._endDelay=0,this._fill="none",this._iterationStart=0,this._iterations=1,this._duration=0,this._playbackRate=1,this._direction="normal",this._easing="linear",this._easingFunction=E}function r(){return t.isDeprecated("Invalid timing inputs","2016-03-02","TypeError exceptions will be thrown instead.",!0)}function o(e,i,r){var o=new n;return i&&(o.fill="both",o.duration="auto"),"number"!=typeof e||isNaN(e)?void 0!==e&&Object.getOwnPropertyNames(e).forEach(function(i){if("auto"!=e[i]){if(("number"==typeof o[i]||"duration"==i)&&("number"!=typeof e[i]||isNaN(e[i])))return;if("fill"==i&&w.indexOf(e[i])==-1)return;if("direction"==i&&T.indexOf(e[i])==-1)return;if("playbackRate"==i&&1!==e[i]&&t.isDeprecated("AnimationEffectTiming.playbackRate","2014-11-28","Use Animation.playbackRate instead."))return;o[i]=e[i]}}):o.duration=e,o}function a(t){return"number"==typeof t&&(t=isNaN(t)?{duration:0}:{duration:t}),t}function s(e,i){return e=t.numericTimingToObject(e),o(e,i)}function u(t,e,i,n){return t<0||t>1||i<0||i>1?E:function(r){function o(t,e,i){return 3*t*(1-i)*(1-i)*i+3*e*(1-i)*i*i+i*i*i}if(r<=0){var a=0;return t>0?a=e/t:!e&&i>0&&(a=n/i),a*r}if(r>=1){var s=0;return i<1?s=(n-1)/(i-1):1==i&&t<1&&(s=(e-1)/(t-1)),1+s*(r-1)}for(var u=0,c=1;u<c;){var f=(u+c)/2,l=o(t,i,f);if(Math.abs(r-l)<1e-5)return o(e,n,f);l<r?u=f:c=f}return o(e,n,f)}}function c(t,e){return function(i){if(i>=1)return 1;var n=1/t;return i+=e*n,i-i%n}}function f(t){R||(R=document.createElement("div").style),R.animationTimingFunction="",R.animationTimingFunction=t;var e=R.animationTimingFunction;if(""==e&&r())throw new TypeError(t+" is not a valid value for easing");return e}function l(t){if("linear"==t)return E;var e=O.exec(t);if(e)return u.apply(this,e.slice(1).map(Number));var i=k.exec(t);if(i)return c(Number(i[1]),{start:x,middle:A,end:P}[i[2]]);var n=j[t];return n?n:E}function h(t){return Math.abs(m(t)/t.playbackRate)}function m(t){return 0===t.duration||0===t.iterations?0:t.duration*t.iterations}function d(t,e,i){if(null==e)return S;var n=i.delay+t+i.endDelay;return e<Math.min(i.delay,n)?C:e>=Math.min(i.delay+t,n)?D:F}function p(t,e,i,n,r){switch(n){case C:return"backwards"==e||"both"==e?0:null;case F:return i-r;case D:return"forwards"==e||"both"==e?t:null;case S:return null}}function _(t,e,i,n,r){var o=r;return 0===t?e!==C&&(o+=i):o+=n/t,o}function g(t,e,i,n,r,o){var a=t===1/0?e%1:t%1;return 0!==a||i!==D||0===n||0===r&&0!==o||(a=1),a}function b(t,e,i,n){return t===D&&e===1/0?1/0:1===i?Math.floor(n)-1:Math.floor(n)}function v(t,e,i){var n=t;if("normal"!==t&&"reverse"!==t){var r=e;"alternate-reverse"===t&&(r+=1),n="normal",r!==1/0&&r%2!==0&&(n="reverse")}return"normal"===n?i:1-i}function y(t,e,i){var n=d(t,e,i),r=p(t,i.fill,e,n,i.delay);if(null===r)return null;var o=_(i.duration,n,i.iterations,r,i.iterationStart),a=g(o,i.iterationStart,n,i.iterations,r,i.duration),s=b(n,i.iterations,a,o),u=v(i.direction,s,a);return i._easingFunction(u)}var w="backwards|forwards|both|none".split("|"),T="reverse|alternate|alternate-reverse".split("|"),E=function(t){return t};n.prototype={_setMember:function(e,i){this["_"+e]=i,this._effect&&(this._effect._timingInput[e]=i,this._effect._timing=t.normalizeTimingInput(this._effect._timingInput),this._effect.activeDuration=t.calculateActiveDuration(this._effect._timing),this._effect._animation&&this._effect._animation._rebuildUnderlyingAnimation())},get playbackRate(){return this._playbackRate},set delay(t){this._setMember("delay",t)},get delay(){return this._delay},set endDelay(t){this._setMember("endDelay",t)},get endDelay(){return this._endDelay},set fill(t){this._setMember("fill",t)},get fill(){return this._fill},set iterationStart(t){if((isNaN(t)||t<0)&&r())throw new TypeError("iterationStart must be a non-negative number, received: "+timing.iterationStart);this._setMember("iterationStart",t)},get iterationStart(){return this._iterationStart},set duration(t){if("auto"!=t&&(isNaN(t)||t<0)&&r())throw new TypeError("duration must be non-negative or auto, received: "+t);this._setMember("duration",t)},get duration(){return this._duration},set direction(t){this._setMember("direction",t)},get direction(){return this._direction},set easing(t){this._easingFunction=l(f(t)),this._setMember("easing",t)},get easing(){return this._easing},set iterations(t){if((isNaN(t)||t<0)&&r())throw new TypeError("iterations must be non-negative, received: "+t);this._setMember("iterations",t)},get iterations(){return this._iterations}};var x=1,A=.5,P=0,j={ease:u(.25,.1,.25,1),"ease-in":u(.42,0,1,1),"ease-out":u(0,0,.58,1),"ease-in-out":u(.42,0,.58,1),"step-start":c(1,x),"step-middle":c(1,A),"step-end":c(1,P)},R=null,N="\\s*(-?\\d+\\.?\\d*|-?\\.\\d+)\\s*",O=new RegExp("cubic-bezier\\("+N+","+N+","+N+","+N+"\\)"),k=/steps\(\s*(\d+)\s*,\s*(start|middle|end)\s*\)/,S=0,C=1,D=2,F=3;t.cloneTimingInput=i,t.makeTiming=o,t.numericTimingToObject=a,t.normalizeTimingInput=s,t.calculateActiveDuration=h,t.calculateIterationProgress=y,t.calculatePhase=d,t.normalizeEasing=f,t.parseEasingFunction=l}(c,f),function(t,e){function i(t,e){return t in f?f[t][e]||e:e}function n(t){return"display"===t||0===t.lastIndexOf("animation",0)||0===t.lastIndexOf("transition",0)}function r(t,e,r){if(!n(t)){var o=s[t];if(o){u.style[t]=e;for(var a in o){var c=o[a],f=u.style[c];r[c]=i(c,f)}}else r[t]=i(t,e)}}function o(t){var e=[];for(var i in t)if(!(i in["easing","offset","composite"])){var n=t[i];Array.isArray(n)||(n=[n]);for(var r,o=n.length,a=0;a<o;a++)r={},"offset"in t?r.offset=t.offset:1==o?r.offset=1:r.offset=a/(o-1),"easing"in t&&(r.easing=t.easing),"composite"in t&&(r.composite=t.composite),r[i]=n[a],e.push(r)}return e.sort(function(t,e){return t.offset-e.offset}),e}function a(e){function i(){var t=n.length;null==n[t-1].offset&&(n[t-1].offset=1),t>1&&null==n[0].offset&&(n[0].offset=0);for(var e=0,i=n[0].offset,r=1;r<t;r++){var o=n[r].offset;if(null!=o){for(var a=1;a<r-e;a++)n[e+a].offset=i+(o-i)*a/(r-e);e=r,i=o}}}if(null==e)return[];window.Symbol&&Symbol.iterator&&Array.prototype.from&&e[Symbol.iterator]&&(e=Array.from(e)),Array.isArray(e)||(e=o(e));for(var n=e.map(function(e){var i={};for(var n in e){var o=e[n];if("offset"==n){if(null!=o){if(o=Number(o),!isFinite(o))throw new TypeError("Keyframe offsets must be numbers.");if(o<0||o>1)throw new TypeError("Keyframe offsets must be between 0 and 1.")}}else if("composite"==n){if("add"==o||"accumulate"==o)throw{type:DOMException.NOT_SUPPORTED_ERR,name:"NotSupportedError",message:"add compositing is not supported"};if("replace"!=o)throw new TypeError("Invalid composite mode "+o+".")}else o="easing"==n?t.normalizeEasing(o):""+o;r(n,o,i)}return void 0==i.offset&&(i.offset=null),void 0==i.easing&&(i.easing="linear"),i}),a=!0,s=-(1/0),u=0;u<n.length;u++){var c=n[u].offset;if(null!=c){if(c<s)throw new TypeError("Keyframes are not loosely sorted by offset. Sort or specify offsets.");s=c}else a=!1}return n=n.filter(function(t){return t.offset>=0&&t.offset<=1}),a||i(),n}var s={background:["backgroundImage","backgroundPosition","backgroundSize","backgroundRepeat","backgroundAttachment","backgroundOrigin","backgroundClip","backgroundColor"],border:["borderTopColor","borderTopStyle","borderTopWidth","borderRightColor","borderRightStyle","borderRightWidth","borderBottomColor","borderBottomStyle","borderBottomWidth","borderLeftColor","borderLeftStyle","borderLeftWidth"],borderBottom:["borderBottomWidth","borderBottomStyle","borderBottomColor"],borderColor:["borderTopColor","borderRightColor","borderBottomColor","borderLeftColor"],borderLeft:["borderLeftWidth","borderLeftStyle","borderLeftColor"],borderRadius:["borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius"],borderRight:["borderRightWidth","borderRightStyle","borderRightColor"],borderTop:["borderTopWidth","borderTopStyle","borderTopColor"],borderWidth:["borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth"],flex:["flexGrow","flexShrink","flexBasis"],font:["fontFamily","fontSize","fontStyle","fontVariant","fontWeight","lineHeight"],margin:["marginTop","marginRight","marginBottom","marginLeft"],outline:["outlineColor","outlineStyle","outlineWidth"],padding:["paddingTop","paddingRight","paddingBottom","paddingLeft"]},u=document.createElementNS("http://www.w3.org/1999/xhtml","div"),c={thin:"1px",medium:"3px",thick:"5px"},f={borderBottomWidth:c,borderLeftWidth:c,borderRightWidth:c,borderTopWidth:c,fontSize:{"xx-small":"60%","x-small":"75%",small:"89%",medium:"100%",large:"120%","x-large":"150%","xx-large":"200%"},fontWeight:{normal:"400",bold:"700"},outlineWidth:c,textShadow:{none:"0px 0px 0px transparent"},boxShadow:{none:"0px 0px 0px 0px transparent"}};t.convertToArrayForm=o,t.normalizeKeyframes=a}(c,f),function(t){var e={};t.isDeprecated=function(t,i,n,r){var o=r?"are":"is",a=new Date,s=new Date(i);return s.setMonth(s.getMonth()+3),!(a<s&&(t in e||console.warn("Web Animations: "+t+" "+o+" deprecated and will stop working on "+s.toDateString()+". "+n),e[t]=!0,1))},t.deprecated=function(e,i,n,r){var o=r?"are":"is";if(t.isDeprecated(e,i,n,r))throw new Error(e+" "+o+" no longer supported. "+n)}}(c),function(){if(document.documentElement.animate){var a=document.documentElement.animate([],0),b=!0;if(a&&(b=!1,"play|currentTime|pause|reverse|playbackRate|cancel|finish|startTime|playState".split("|").forEach(function(t){void 0===a[t]&&(b=!0)})),!b)return}!function(t,e,i){function n(t){for(var e={},i=0;i<t.length;i++)for(var n in t[i])if("offset"!=n&&"easing"!=n&&"composite"!=n){var r={offset:t[i].offset,easing:t[i].easing,value:t[i][n]};e[n]=e[n]||[],e[n].push(r)}for(var o in e){var a=e[o];if(0!=a[0].offset||1!=a[a.length-1].offset)throw{type:DOMException.NOT_SUPPORTED_ERR,name:"NotSupportedError",message:"Partial keyframes are not supported"}}return e}function r(i){var n=[];for(var r in i)for(var o=i[r],a=0;a<o.length-1;a++){var s=a,u=a+1,c=o[s].offset,f=o[u].offset,l=c,h=f;0==a&&(l=-(1/0),0==f&&(u=s)),a==o.length-2&&(h=1/0,1==c&&(s=u)),n.push({applyFrom:l,applyTo:h,startOffset:o[s].offset,endOffset:o[u].offset,easingFunction:t.parseEasingFunction(o[s].easing),property:r,interpolation:e.propertyInterpolation(r,o[s].value,o[u].value)})}return n.sort(function(t,e){return t.startOffset-e.startOffset}),n}e.convertEffectInput=function(i){var o=t.normalizeKeyframes(i),a=n(o),s=r(a);return function(t,i){if(null!=i)s.filter(function(t){return i>=t.applyFrom&&i<t.applyTo}).forEach(function(n){var r=i-n.startOffset,o=n.endOffset-n.startOffset,a=0==o?0:n.easingFunction(r/o);e.apply(t,n.property,n.interpolation(a))});else for(var n in a)"offset"!=n&&"easing"!=n&&"composite"!=n&&e.clear(t,n)}}}(c,d,f),function(t,e,i){function n(t){return t.replace(/-(.)/g,function(t,e){return e.toUpperCase()})}function r(t,e,i){s[i]=s[i]||[],s[i].push([t,e])}function o(t,e,i){for(var o=0;o<i.length;o++){var a=i[o];r(t,e,n(a))}}function a(i,r,o){var a=i;/-/.test(i)&&!t.isDeprecated("Hyphenated property names","2016-03-22","Use camelCase instead.",!0)&&(a=n(i)),"initial"!=r&&"initial"!=o||("initial"==r&&(r=u[a]),"initial"==o&&(o=u[a]));for(var c=r==o?[]:s[a],f=0;c&&f<c.length;f++){var l=c[f][0](r),h=c[f][0](o);if(void 0!==l&&void 0!==h){var m=c[f][1](l,h);if(m){var d=e.Interpolation.apply(null,m);return function(t){return 0==t?r:1==t?o:d(t)}}}}return e.Interpolation(!1,!0,function(t){return t?o:r})}var s={};e.addPropertiesHandler=o;var u={backgroundColor:"transparent",backgroundPosition:"0% 0%",borderBottomColor:"currentColor",borderBottomLeftRadius:"0px",borderBottomRightRadius:"0px",borderBottomWidth:"3px",borderLeftColor:"currentColor",borderLeftWidth:"3px",borderRightColor:"currentColor",borderRightWidth:"3px",borderSpacing:"2px",borderTopColor:"currentColor",borderTopLeftRadius:"0px",borderTopRightRadius:"0px",borderTopWidth:"3px",bottom:"auto",clip:"rect(0px, 0px, 0px, 0px)",color:"black",fontSize:"100%",fontWeight:"400",height:"auto",left:"auto",letterSpacing:"normal",lineHeight:"120%",marginBottom:"0px",marginLeft:"0px",marginRight:"0px",marginTop:"0px",maxHeight:"none",maxWidth:"none",minHeight:"0px",minWidth:"0px",opacity:"1.0",outlineColor:"invert",outlineOffset:"0px",outlineWidth:"3px",paddingBottom:"0px",paddingLeft:"0px",paddingRight:"0px",paddingTop:"0px",right:"auto",textIndent:"0px",textShadow:"0px 0px 0px transparent",top:"auto",transform:"",verticalAlign:"0px",visibility:"visible",width:"auto",wordSpacing:"normal",zIndex:"auto"};e.propertyInterpolation=a}(c,d,f),function(t,e,i){function n(e){var i=t.calculateActiveDuration(e),n=function(n){return t.calculateIterationProgress(i,n,e)};return n._totalDuration=e.delay+i+e.endDelay,n}e.KeyframeEffect=function(i,r,o,a){var s,u=n(t.normalizeTimingInput(o)),c=e.convertEffectInput(r),f=function(){c(i,s)};return f._update=function(t){return s=u(t),null!==s},f._clear=function(){c(i,null)},f._hasSameTarget=function(t){return i===t},f._target=i,f._totalDuration=u._totalDuration,f._id=a,f},e.NullEffect=function(t){var e=function(){t&&(t(),t=null)};return e._update=function(){return null},e._totalDuration=0,e._hasSameTarget=function(){return!1},e}}(c,d,f),function(t,e){t.apply=function(e,i,n){e.style[t.propertyName(i)]=n},t.clear=function(e,i){e.style[t.propertyName(i)]=""}}(d,f),function(t){window.Element.prototype.animate=function(e,i){var n="";return i&&i.id&&(n=i.id),t.timeline._play(t.KeyframeEffect(this,e,i,n))}}(d),function(t,e){function i(t,e,n){if("number"==typeof t&&"number"==typeof e)return t*(1-n)+e*n;if("boolean"==typeof t&&"boolean"==typeof e)return n<.5?t:e;if(t.length==e.length){for(var r=[],o=0;o<t.length;o++)r.push(i(t[o],e[o],n));return r}throw"Mismatched interpolation arguments "+t+":"+e}t.Interpolation=function(t,e,n){return function(r){return n(i(t,e,r))}}}(d,f),function(t,e,i){t.sequenceNumber=0;var n=function(t,e,i){this.target=t,this.currentTime=e,this.timelineTime=i,this.type="finish",this.bubbles=!1,this.cancelable=!1,this.currentTarget=t,this.defaultPrevented=!1,this.eventPhase=Event.AT_TARGET,this.timeStamp=Date.now()};e.Animation=function(e){this.id="",e&&e._id&&(this.id=e._id),this._sequenceNumber=t.sequenceNumber++,this._currentTime=0,this._startTime=null,this._paused=!1,this._playbackRate=1,this._inTimeline=!0,this._finishedFlag=!0,this.onfinish=null,this._finishHandlers=[],this._effect=e,this._inEffect=this._effect._update(0),this._idle=!0,this._currentTimePending=!1},e.Animation.prototype={_ensureAlive:function(){this.playbackRate<0&&0===this.currentTime?this._inEffect=this._effect._update(-1):this._inEffect=this._effect._update(this.currentTime),this._inTimeline||!this._inEffect&&this._finishedFlag||(this._inTimeline=!0,e.timeline._animations.push(this))},_tickCurrentTime:function(t,e){t!=this._currentTime&&(this._currentTime=t,this._isFinished&&!e&&(this._currentTime=this._playbackRate>0?this._totalDuration:0),this._ensureAlive())},get currentTime(){return this._idle||this._currentTimePending?null:this._currentTime},set currentTime(t){t=+t,isNaN(t)||(e.restart(),this._paused||null==this._startTime||(this._startTime=this._timeline.currentTime-t/this._playbackRate),this._currentTimePending=!1,this._currentTime!=t&&(this._idle&&(this._idle=!1,this._paused=!0),this._tickCurrentTime(t,!0),e.applyDirtiedAnimation(this)))},get startTime(){return this._startTime},set startTime(t){t=+t,isNaN(t)||this._paused||this._idle||(this._startTime=t,this._tickCurrentTime((this._timeline.currentTime-this._startTime)*this.playbackRate),e.applyDirtiedAnimation(this))},get playbackRate(){return this._playbackRate},set playbackRate(t){if(t!=this._playbackRate){var i=this.currentTime;this._playbackRate=t,this._startTime=null,"paused"!=this.playState&&"idle"!=this.playState&&(this._finishedFlag=!1,this._idle=!1,this._ensureAlive(),e.applyDirtiedAnimation(this)),null!=i&&(this.currentTime=i)}},get _isFinished(){return!this._idle&&(this._playbackRate>0&&this._currentTime>=this._totalDuration||this._playbackRate<0&&this._currentTime<=0)},get _totalDuration(){return this._effect._totalDuration},get playState(){return this._idle?"idle":null==this._startTime&&!this._paused&&0!=this.playbackRate||this._currentTimePending?"pending":this._paused?"paused":this._isFinished?"finished":"running"},_rewind:function(){if(this._playbackRate>=0)this._currentTime=0;else{if(!(this._totalDuration<1/0))throw new DOMException("Unable to rewind negative playback rate animation with infinite duration","InvalidStateError");this._currentTime=this._totalDuration}},play:function(){this._paused=!1,(this._isFinished||this._idle)&&(this._rewind(),this._startTime=null),this._finishedFlag=!1,this._idle=!1,this._ensureAlive(),e.applyDirtiedAnimation(this)},pause:function(){this._isFinished||this._paused||this._idle?this._idle&&(this._rewind(),this._idle=!1):this._currentTimePending=!0,this._startTime=null,this._paused=!0},finish:function(){this._idle||(this.currentTime=this._playbackRate>0?this._totalDuration:0,this._startTime=this._totalDuration-this.currentTime,this._currentTimePending=!1,e.applyDirtiedAnimation(this))},cancel:function(){this._inEffect&&(this._inEffect=!1,this._idle=!0,this._paused=!1,this._isFinished=!0,this._finishedFlag=!0,this._currentTime=0,this._startTime=null,this._effect._update(null),e.applyDirtiedAnimation(this))},reverse:function(){this.playbackRate*=-1,this.play()},addEventListener:function(t,e){"function"==typeof e&&"finish"==t&&this._finishHandlers.push(e)},removeEventListener:function(t,e){if("finish"==t){var i=this._finishHandlers.indexOf(e);i>=0&&this._finishHandlers.splice(i,1)}},_fireEvents:function(t){if(this._isFinished){if(!this._finishedFlag){var e=new n(this,this._currentTime,t),i=this._finishHandlers.concat(this.onfinish?[this.onfinish]:[]);setTimeout(function(){i.forEach(function(t){t.call(e.target,e)})},0),this._finishedFlag=!0}}else this._finishedFlag=!1},_tick:function(t,e){this._idle||this._paused||(null==this._startTime?e&&(this.startTime=t-this._currentTime/this.playbackRate):this._isFinished||this._tickCurrentTime((t-this._startTime)*this.playbackRate)),e&&(this._currentTimePending=!1,this._fireEvents(t))},get _needsTick(){return this.playState in{pending:1,running:1}||!this._finishedFlag},_targetAnimations:function(){var t=this._effect._target;return t._activeAnimations||(t._activeAnimations=[]),t._activeAnimations},_markTarget:function(){var t=this._targetAnimations();t.indexOf(this)===-1&&t.push(this)},_unmarkTarget:function(){var t=this._targetAnimations(),e=t.indexOf(this);e!==-1&&t.splice(e,1)}}}(c,d,f),function(t,e,i){function n(t){var e=c;c=[],t<_.currentTime&&(t=_.currentTime),_._animations.sort(r),_._animations=s(t,!0,_._animations)[0],e.forEach(function(e){e[1](t)}),a(),l=void 0}function r(t,e){return t._sequenceNumber-e._sequenceNumber}function o(){this._animations=[],this.currentTime=window.performance&&performance.now?performance.now():0}function a(){d.forEach(function(t){t()}),d.length=0}function s(t,i,n){p=!0,m=!1;var r=e.timeline;r.currentTime=t,h=!1;var o=[],a=[],s=[],u=[];return n.forEach(function(e){e._tick(t,i),e._inEffect?(a.push(e._effect),e._markTarget()):(o.push(e._effect),e._unmarkTarget()),e._needsTick&&(h=!0);var n=e._inEffect||e._needsTick;e._inTimeline=n,n?s.push(e):u.push(e)}),d.push.apply(d,o),d.push.apply(d,a),h&&requestAnimationFrame(function(){}),p=!1,[s,u]}var u=window.requestAnimationFrame,c=[],f=0;window.requestAnimationFrame=function(t){var e=f++;return 0==c.length&&u(n),c.push([e,t]),e},window.cancelAnimationFrame=function(t){c.forEach(function(e){e[0]==t&&(e[1]=function(){})})},o.prototype={_play:function(i){i._timing=t.normalizeTimingInput(i.timing);var n=new e.Animation(i);return n._idle=!1,n._timeline=this,this._animations.push(n),e.restart(),e.applyDirtiedAnimation(n),n}};var l=void 0,h=!1,m=!1;e.restart=function(){return h||(h=!0,requestAnimationFrame(function(){}),m=!0),m},e.applyDirtiedAnimation=function(t){if(!p){t._markTarget();var i=t._targetAnimations();i.sort(r);var n=s(e.timeline.currentTime,!1,i.slice())[1];n.forEach(function(t){var e=_._animations.indexOf(t);e!==-1&&_._animations.splice(e,1)}),a()}};var d=[],p=!1,_=new o;e.timeline=_}(c,d,f),function(t){function e(t,e){var i=t.exec(e);if(i)return i=t.ignoreCase?i[0].toLowerCase():i[0],[i,e.substr(i.length)]}function i(t,e){e=e.replace(/^\s*/,"");var i=t(e);if(i)return[i[0],i[1].replace(/^\s*/,"")]}function n(t,n,r){t=i.bind(null,t);for(var o=[];;){var a=t(r);if(!a)return[o,r];if(o.push(a[0]),r=a[1],a=e(n,r),!a||""==a[1])return[o,r];r=a[1]}}function r(t,e){for(var i=0,n=0;n<e.length&&(!/\s|,/.test(e[n])||0!=i);n++)if("("==e[n])i++;else if(")"==e[n]&&(i--,0==i&&n++,i<=0))break;var r=t(e.substr(0,n));return void 0==r?void 0:[r,e.substr(n)]}function o(t,e){for(var i=t,n=e;i&&n;)i>n?i%=n:n%=i;return i=t*e/(i+n)}function a(t){return function(e){var i=t(e);return i&&(i[0]=void 0),i}}function s(t,e){return function(i){var n=t(i);return n?n:[e,i]}}function u(e,i){for(var n=[],r=0;r<e.length;r++){var o=t.consumeTrimmed(e[r],i);if(!o||""==o[0])return;void 0!==o[0]&&n.push(o[0]),i=o[1]}if(""==i)return n}function c(t,e,i,n,r){for(var a=[],s=[],u=[],c=o(n.length,r.length),f=0;f<c;f++){var l=e(n[f%n.length],r[f%r.length]);if(!l)return;a.push(l[0]),s.push(l[1]),u.push(l[2])}return[a,s,function(e){var n=e.map(function(t,e){return u[e](t)}).join(i);return t?t(n):n}]}function f(t,e,i){for(var n=[],r=[],o=[],a=0,s=0;s<i.length;s++)if("function"==typeof i[s]){var u=i[s](t[a],e[a++]);n.push(u[0]),r.push(u[1]),o.push(u[2])}else!function(t){n.push(!1),r.push(!1),o.push(function(){return i[t]})}(s);return[n,r,function(t){for(var e="",i=0;i<t.length;i++)e+=o[i](t[i]);return e}]}t.consumeToken=e,t.consumeTrimmed=i,t.consumeRepeated=n,t.consumeParenthesised=r,t.ignore=a,t.optional=s,t.consumeList=u,t.mergeNestedRepeated=c.bind(null,null),t.mergeWrappedNestedRepeated=c,t.mergeList=f}(d),function(t){function e(e){function i(e){var i=t.consumeToken(/^inset/i,e);if(i)return n.inset=!0,i;var i=t.consumeLengthOrPercent(e);if(i)return n.lengths.push(i[0]),i;var i=t.consumeColor(e);return i?(n.color=i[0],i):void 0}var n={inset:!1,lengths:[],color:null},r=t.consumeRepeated(i,/^/,e);if(r&&r[0].length)return[n,r[1]]}function i(i){var n=t.consumeRepeated(e,/^,/,i);if(n&&""==n[1])return n[0]}function n(e,i){for(;e.lengths.length<Math.max(e.lengths.length,i.lengths.length);)e.lengths.push({px:0});for(;i.lengths.length<Math.max(e.lengths.length,i.lengths.length);)i.lengths.push({px:0});if(e.inset==i.inset&&!!e.color==!!i.color){for(var n,r=[],o=[[],0],a=[[],0],s=0;s<e.lengths.length;s++){var u=t.mergeDimensions(e.lengths[s],i.lengths[s],2==s);o[0].push(u[0]),a[0].push(u[1]),r.push(u[2])}if(e.color&&i.color){var c=t.mergeColors(e.color,i.color);o[1]=c[0],a[1]=c[1],n=c[2]}return[o,a,function(t){for(var i=e.inset?"inset ":" ",o=0;o<r.length;o++)i+=r[o](t[0][o])+" ";return n&&(i+=n(t[1])),i}]}}function r(e,i,n,r){function o(t){return{inset:t,color:[0,0,0,0],lengths:[{px:0},{px:0},{px:0},{px:0}]}}for(var a=[],s=[],u=0;u<n.length||u<r.length;u++){var c=n[u]||o(r[u].inset),f=r[u]||o(n[u].inset);a.push(c),s.push(f)}return t.mergeNestedRepeated(e,i,a,s)}var o=r.bind(null,n,", ");t.addPropertiesHandler(i,o,["box-shadow","text-shadow"])}(d),function(t,e){function i(t){return t.toFixed(3).replace(".000","")}function n(t,e,i){return Math.min(e,Math.max(t,i))}function r(t){if(/^\s*[-+]?(\d*\.)?\d+\s*$/.test(t))return Number(t)}function o(t,e){return[t,e,i]}function a(t,e){if(0!=t)return u(0,1/0)(t,e)}function s(t,e){return[t,e,function(t){return Math.round(n(1,1/0,t))}]}function u(t,e){return function(r,o){return[r,o,function(r){return i(n(t,e,r))}]}}function c(t,e){return[t,e,Math.round]}t.clamp=n,t.addPropertiesHandler(r,u(0,1/0),["border-image-width","line-height"]),t.addPropertiesHandler(r,u(0,1),["opacity","shape-image-threshold"]),t.addPropertiesHandler(r,a,["flex-grow","flex-shrink"]),t.addPropertiesHandler(r,s,["orphans","widows"]),t.addPropertiesHandler(r,c,["z-index"]),t.parseNumber=r,t.mergeNumbers=o,t.numberToString=i}(d,f),function(t,e){function i(t,e){if("visible"==t||"visible"==e)return[0,1,function(i){return i<=0?t:i>=1?e:"visible"}]}t.addPropertiesHandler(String,i,["visibility"])}(d),function(t,e){function i(t){t=t.trim(),o.fillStyle="#000",o.fillStyle=t;var e=o.fillStyle;if(o.fillStyle="#fff",o.fillStyle=t,e==o.fillStyle){o.fillRect(0,0,1,1);var i=o.getImageData(0,0,1,1).data;o.clearRect(0,0,1,1);var n=i[3]/255;return[i[0]*n,i[1]*n,i[2]*n,n]}}function n(e,i){return[e,i,function(e){function i(t){return Math.max(0,Math.min(255,t))}if(e[3])for(var n=0;n<3;n++)e[n]=Math.round(i(e[n]/e[3]));return e[3]=t.numberToString(t.clamp(0,1,e[3])),"rgba("+e.join(",")+")"}]}var r=document.createElementNS("http://www.w3.org/1999/xhtml","canvas");r.width=r.height=1;var o=r.getContext("2d");t.addPropertiesHandler(i,n,["background-color","border-bottom-color","border-left-color","border-right-color","border-top-color","color","outline-color","text-decoration-color"]),t.consumeColor=t.consumeParenthesised.bind(null,i),t.mergeColors=n}(d,f),function(a,b){function c(a,b){if(b=b.trim().toLowerCase(),"0"==b&&"px".search(a)>=0)return{px:0};if(/^[^(]*$|^calc/.test(b)){b=b.replace(/calc\(/g,"(");var c={};b=b.replace(a,function(t){return c[t]=null,"U"+t});for(var d="U("+a.source+")",e=b.replace(/[-+]?(\d*\.)?\d+/g,"N").replace(new RegExp("N"+d,"g"),"D").replace(/\s[+-]\s/g,"O").replace(/\s/g,""),f=[/N\*(D)/g,/(N|D)[*\/]N/g,/(N|D)O\1/g,/\((N|D)\)/g],g=0;g<f.length;)f[g].test(e)?(e=e.replace(f[g],"$1"),g=0):g++;if("D"==e){for(var h in c){var i=eval(b.replace(new RegExp("U"+h,"g"),"").replace(new RegExp(d,"g"),"*0"));if(!isFinite(i))return;c[h]=i}return c}}}function d(t,i){return e(t,i,!0)}function e(t,e,i){var n,r=[];for(n in t)r.push(n);for(n in e)r.indexOf(n)<0&&r.push(n);return t=r.map(function(e){return t[e]||0}),e=r.map(function(t){return e[t]||0}),[t,e,function(t){var e=t.map(function(e,n){return 1==t.length&&i&&(e=Math.max(e,0)),a.numberToString(e)+r[n]}).join(" + ");return t.length>1?"calc("+e+")":e}]}var f="px|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc",g=c.bind(null,new RegExp(f,"g")),h=c.bind(null,new RegExp(f+"|%","g")),i=c.bind(null,/deg|rad|grad|turn/g);a.parseLength=g,a.parseLengthOrPercent=h,a.consumeLengthOrPercent=a.consumeParenthesised.bind(null,h),a.parseAngle=i,a.mergeDimensions=e;var j=a.consumeParenthesised.bind(null,g),k=a.consumeRepeated.bind(void 0,j,/^/),l=a.consumeRepeated.bind(void 0,k,/^,/);a.consumeSizePairList=l;var m=function(t){var e=l(t);if(e&&""==e[1])return e[0]},n=a.mergeNestedRepeated.bind(void 0,d," "),o=a.mergeNestedRepeated.bind(void 0,n,",");a.mergeNonNegativeSizePair=n,a.addPropertiesHandler(m,o,["background-size"]),a.addPropertiesHandler(h,d,["border-bottom-width","border-image-width","border-left-width","border-right-width","border-top-width","flex-basis","font-size","height","line-height","max-height","max-width","outline-width","width"]),a.addPropertiesHandler(h,e,["border-bottom-left-radius","border-bottom-right-radius","border-top-left-radius","border-top-right-radius","bottom","left","letter-spacing","margin-bottom","margin-left","margin-right","margin-top","min-height","min-width","outline-offset","padding-bottom","padding-left","padding-right","padding-top","perspective","right","shape-margin","text-indent","top","vertical-align","word-spacing"])}(d,f),function(t,e){function i(e){return t.consumeLengthOrPercent(e)||t.consumeToken(/^auto/,e)}function n(e){var n=t.consumeList([t.ignore(t.consumeToken.bind(null,/^rect/)),t.ignore(t.consumeToken.bind(null,/^\(/)),t.consumeRepeated.bind(null,i,/^,/),t.ignore(t.consumeToken.bind(null,/^\)/))],e);if(n&&4==n[0].length)return n[0]}function r(e,i){return"auto"==e||"auto"==i?[!0,!1,function(n){var r=n?e:i;if("auto"==r)return"auto";var o=t.mergeDimensions(r,r);return o[2](o[0])}]:t.mergeDimensions(e,i)}function o(t){return"rect("+t+")"}var a=t.mergeWrappedNestedRepeated.bind(null,o,r,", ");t.parseBox=n,t.mergeBoxes=a,t.addPropertiesHandler(n,a,["clip"])}(d,f),function(t,e){function i(t){return function(e){var i=0;return t.map(function(t){return t===f?e[i++]:t})}}function n(t){return t}function r(e){if(e=e.toLowerCase().trim(),"none"==e)return[];for(var i,n=/\s*(\w+)\(([^)]*)\)/g,r=[],o=0;i=n.exec(e);){if(i.index!=o)return;o=i.index+i[0].length;var a=i[1],s=m[a];if(!s)return;var u=i[2].split(","),c=s[0];if(c.length<u.length)return;for(var f=[],d=0;d<c.length;d++){var p,_=u[d],g=c[d];if(p=_?{A:function(e){return"0"==e.trim()?h:t.parseAngle(e)},N:t.parseNumber,T:t.parseLengthOrPercent,L:t.parseLength}[g.toUpperCase()](_):{a:h,n:f[0],t:l}[g],void 0===p)return;f.push(p)}if(r.push({t:a,d:f}),n.lastIndex==e.length)return r}}function o(t){return t.toFixed(6).replace(".000000","")}function a(e,i){if(e.decompositionPair!==i){e.decompositionPair=i;var n=t.makeMatrixDecomposition(e)}if(i.decompositionPair!==e){i.decompositionPair=e;var r=t.makeMatrixDecomposition(i)}return null==n[0]||null==r[0]?[[!1],[!0],function(t){return t?i[0].d:e[0].d}]:(n[0].push(0),r[0].push(1),[n,r,function(e){var i=t.quat(n[0][3],r[0][3],e[5]),a=t.composeMatrix(e[0],e[1],e[2],i,e[4]),s=a.map(o).join(",");return s}])}function s(t){return t.replace(/[xy]/,"")}function u(t){return t.replace(/(x|y|z|3d)?$/,"3d")}function c(e,i){var n=t.makeMatrixDecomposition&&!0,r=!1;if(!e.length||!i.length){e.length||(r=!0,e=i,i=[]);for(var o=0;o<e.length;o++){var c=e[o].t,f=e[o].d,l="scale"==c.substr(0,5)?1:0;i.push({t:c,d:f.map(function(t){if("number"==typeof t)return l;var e={};for(var i in t)e[i]=l;return e})})}}var h=function(t,e){return"perspective"==t&&"perspective"==e||("matrix"==t||"matrix3d"==t)&&("matrix"==e||"matrix3d"==e)},d=[],p=[],_=[];if(e.length!=i.length){if(!n)return;var g=a(e,i);d=[g[0]],p=[g[1]],_=[["matrix",[g[2]]]]}else for(var o=0;o<e.length;o++){var c,b=e[o].t,v=i[o].t,y=e[o].d,w=i[o].d,T=m[b],E=m[v];if(h(b,v)){if(!n)return;var g=a([e[o]],[i[o]]);d.push(g[0]),p.push(g[1]),_.push(["matrix",[g[2]]])}else{if(b==v)c=b;else if(T[2]&&E[2]&&s(b)==s(v))c=s(b),y=T[2](y),w=E[2](w);else{if(!T[1]||!E[1]||u(b)!=u(v)){if(!n)return;var g=a(e,i);d=[g[0]],p=[g[1]],_=[["matrix",[g[2]]]];break}c=u(b),y=T[1](y),w=E[1](w)}for(var x=[],A=[],P=[],j=0;j<y.length;j++){var R="number"==typeof y[j]?t.mergeNumbers:t.mergeDimensions,g=R(y[j],w[j]);x[j]=g[0],A[j]=g[1],P.push(g[2])}d.push(x),p.push(A),_.push([c,P])}}if(r){var N=d;d=p,p=N}return[d,p,function(t){return t.map(function(t,e){var i=t.map(function(t,i){return _[e][1][i](t)}).join(",");return"matrix"==_[e][0]&&16==i.split(",").length&&(_[e][0]="matrix3d"),_[e][0]+"("+i+")"}).join(" ")}]}var f=null,l={px:0},h={deg:0},m={matrix:["NNNNNN",[f,f,0,0,f,f,0,0,0,0,1,0,f,f,0,1],n],matrix3d:["NNNNNNNNNNNNNNNN",n],rotate:["A"],rotatex:["A"],rotatey:["A"],rotatez:["A"],rotate3d:["NNNA"],perspective:["L"],scale:["Nn",i([f,f,1]),n],scalex:["N",i([f,1,1]),i([f,1])],scaley:["N",i([1,f,1]),i([1,f])],scalez:["N",i([1,1,f])],scale3d:["NNN",n],skew:["Aa",null,n],skewx:["A",null,i([f,h])],skewy:["A",null,i([h,f])],translate:["Tt",i([f,f,l]),n],translatex:["T",i([f,l,l]),i([f,l])],translatey:["T",i([l,f,l]),i([l,f])],translatez:["L",i([l,l,f])],translate3d:["TTL",n]};t.addPropertiesHandler(r,c,["transform"])}(d,f),function(t,e){function i(t,e){e.concat([t]).forEach(function(e){e in document.documentElement.style&&(n[t]=e)})}var n={};i("transform",["webkitTransform","msTransform"]),i("transformOrigin",["webkitTransformOrigin"]),i("perspective",["webkitPerspective"]),i("perspectiveOrigin",["webkitPerspectiveOrigin"]),t.propertyName=function(t){return n[t]||t}}(d,f)}(),!function(){if(void 0===document.createElement("div").animate([]).oncancel){var t;if(window.performance&&performance.now)var t=function(){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){}}(c,e,f),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<this.effect.children.length;e++)this.effect.children[e]._animation=t,this._childAnimations[e]._setExternalAnimation(t)},_constructChildAnimations:function(){if(this.effect&&this._isGroup){var t=this.effect._timing.delay;this._removeChildAnimations(),this.effect.children.forEach(function(i){var n=e.timeline._play(i);this._childAnimations.push(n),n.playbackRate=this.playbackRate,this._paused&&n.pause(),i._animation=this.effect._animation,this._arrangeChildren(n,t),this.effect instanceof window.SequenceEffect&&(t+=e.groupChildDuration(i))}.bind(this))}},_arrangeChildren:function(t,e){null===this.startTime?t.currentTime=this.currentTime-e/this.playbackRate:t.startTime!==this.startTime+e/this.playbackRate&&(t.startTime=this.startTime+e/this.playbackRate)},get timeline(){return this._timeline},get playState(){return this._animation?this._animation.playState:"idle"},get finished(){return window.Promise?(this._finishedPromise||(e.animationsWithPromises.indexOf(this)==-1&&e.animationsWithPromises.push(this),this._finishedPromise=new Promise(function(t,e){this._resolveFinishedPromise=function(){t(this)},this._rejectFinishedPromise=function(){e({type:DOMException.ABORT_ERR,name:"AbortError"})}}.bind(this)),"finished"==this.playState&&this._resolveFinishedPromise()),this._finishedPromise):(console.warn("Animation Promises require JavaScript Promise constructor"),null)},get ready(){return window.Promise?(this._readyPromise||(e.animationsWithPromises.indexOf(this)==-1&&e.animationsWithPromises.push(this),this._readyPromise=new Promise(function(t,e){this._resolveReadyPromise=function(){t(this)},this._rejectReadyPromise=function(){e({type:DOMException.ABORT_ERR,name:"AbortError"})}}.bind(this)),"pending"!==this.playState&&this._resolveReadyPromise()),this._readyPromise):(console.warn("Animation Promises require JavaScript Promise constructor"),null)},get onfinish(){return this._animation.onfinish},set onfinish(t){"function"==typeof t?this._animation.onfinish=function(e){e.target=this,t.call(this,e)}.bind(this):this._animation.onfinish=t},get oncancel(){return this._animation.oncancel},set oncancel(t){"function"==typeof t?this._animation.oncancel=function(e){e.target=this,t.call(this,e)}.bind(this):this._animation.oncancel=t},get currentTime(){this._updatePromises();var t=this._animation.currentTime;return this._updatePromises(),t},set currentTime(t){this._updatePromises(),this._animation.currentTime=isFinite(t)?t:Math.sign(t)*Number.MAX_VALUE,this._register(),this._forEachChild(function(e,i){e.currentTime=t-i}),this._updatePromises()},get startTime(){return this._animation.startTime},set startTime(t){this._updatePromises(),this._animation.startTime=isFinite(t)?t:Math.sign(t)*Number.MAX_VALUE,this._register(),this._forEachChild(function(e,i){e.startTime=t+i}),this._updatePromises()},get playbackRate(){return this._animation.playbackRate},set playbackRate(t){this._updatePromises();var e=this.currentTime;this._animation.playbackRate=t,this._forEachChild(function(e){e.playbackRate=t}),null!==e&&(this.currentTime=e),this._updatePromises()},play:function(){this._updatePromises(),this._paused=!1,this._animation.play(),this._timeline._animations.indexOf(this)==-1&&this._timeline._animations.push(this),this._register(),e.awaitStartTime(this),this._forEachChild(function(t){var e=t.currentTime;t.play(),t.currentTime=e}),this._updatePromises()},pause:function(){this._updatePromises(),this.currentTime&&(this._holdTime=this.currentTime),this._animation.pause(),this._register(),this._forEachChild(function(t){t.pause()}),this._paused=!0,this._updatePromises()},finish:function(){this._updatePromises(),this._animation.finish(),this._register(),this._updatePromises()},cancel:function(){this._updatePromises(),this._animation.cancel(),this._register(),this._removeChildAnimations(),this._updatePromises()},reverse:function(){this._updatePromises();var t=this.currentTime;this._animation.reverse(),this._forEachChild(function(t){t.reverse()}),null!==t&&(this.currentTime=t),this._updatePromises()},addEventListener:function(t,e){var i=e;"function"==typeof e&&(i=function(t){t.target=this,e.call(this,t)}.bind(this),e._wrapper=i),this._animation.addEventListener(t,i)},removeEventListener:function(t,e){this._animation.removeEventListener(t,e&&e._wrapper||e)},_removeChildAnimations:function(){for(;this._childAnimations.length;)this._childAnimations.pop().cancel()},_forEachChild:function(e){var i=0;if(this.effect.children&&this._childAnimations.length<this.effect.children.length&&this._constructChildAnimations(),this._childAnimations.forEach(function(t){e.call(this,t,i),this.effect instanceof window.SequenceEffect&&(i+=t.effect.activeDuration)}.bind(this)),"pending"!=this.playState){var n=this.effect._timing,r=this.currentTime;null!==r&&(r=t.calculateIterationProgress(t.calculateActiveDuration(n),r,n)),(null==r||isNaN(r))&&this._removeChildAnimations()}}},window.Animation=e.Animation}(c,e,f),function(t,e,i){function n(e){this._frames=t.normalizeKeyframes(e)}function r(){for(var t=!1;u.length;){var e=u.shift();e._updateChildren(),t=!0}return t}var o=function(t){if(t._animation=void 0,t instanceof window.SequenceEffect||t instanceof window.GroupEffect)for(var e=0;e<t.children.length;e++)o(t.children[e])};e.removeMulti=function(t){for(var e=[],i=0;i<t.length;i++){var n=t[i];n._parent?(e.indexOf(n._parent)==-1&&e.push(n._parent),n._parent.children.splice(n._parent.children.indexOf(n),1),n._parent=null,o(n)):n._animation&&n._animation.effect==n&&(n._animation.cancel(),n._animation.effect=new KeyframeEffect(null,[]),n._animation._callback&&(n._animation._callback._animation=null),n._animation._rebuildUnderlyingAnimation(),o(n))}for(i=0;i<e.length;i++)e[i]._rebuild()},e.KeyframeEffect=function(e,i,r,o){return this.target=e,this._parent=null,r=t.numericTimingToObject(r),this._timingInput=t.cloneTimingInput(r),this._timing=t.normalizeTimingInput(r),this.timing=t.makeTiming(r,!1,this),this.timing._effect=this,"function"==typeof i?(t.deprecated("Custom KeyframeEffect","2015-06-22","Use KeyframeEffect.onsample instead."),this._normalizedKeyframes=i):this._normalizedKeyframes=new n(i),this._keyframes=i,this.activeDuration=t.calculateActiveDuration(this._timing),this._id=o,this},e.KeyframeEffect.prototype={getFrames:function(){return"function"==typeof this._normalizedKeyframes?this._normalizedKeyframes:this._normalizedKeyframes._frames},set onsample(t){if("function"==typeof this.getFrames())throw new Error("Setting onsample on custom effect KeyframeEffect is not supported.");this._onsample=t,this._animation&&this._animation._rebuildUnderlyingAnimation()},get parent(){return this._parent},clone:function(){if("function"==typeof this.getFrames())throw new Error("Cloning custom effects is not supported.");var e=new KeyframeEffect(this.target,[],t.cloneTimingInput(this._timingInput),this._id);return e._normalizedKeyframes=this._normalizedKeyframes,e._keyframes=this._keyframes,e},remove:function(){e.removeMulti([this])}};var a=Element.prototype.animate;Element.prototype.animate=function(t,i){var n="";return i&&i.id&&(n=i.id),e.timeline._play(new e.KeyframeEffect(this,t,i,n))};var s=document.createElementNS("http://www.w3.org/1999/xhtml","div");e.newUnderlyingAnimationForKeyframeEffect=function(t){if(t){var e=t.target||s,i=t._keyframes;"function"==typeof i&&(i=[]);var n=t._timingInput;n.id=t._id}else var e=s,i=[],n=0;return a.apply(e,[i,n])},e.bindAnimationForKeyframeEffect=function(t){t.effect&&"function"==typeof t.effect._normalizedKeyframes&&e.bindAnimationForCustomEffect(t)};var u=[];e.awaitStartTime=function(t){null===t.startTime&&t._isGroup&&(0==u.length&&requestAnimationFrame(r),u.push(t))};var c=window.getComputedStyle;Object.defineProperty(window,"getComputedStyle",{configurable:!0,enumerable:!0,value:function(){e.timeline._updateAnimationsPromises();var t=c.apply(this,arguments);return r()&&(t=c.apply(this,arguments)),e.timeline._updateAnimationsPromises(),t}}),window.KeyframeEffect=e.KeyframeEffect,window.Element.prototype.getAnimations=function(){return document.timeline.getAnimations().filter(function(t){return null!==t.effect&&t.effect.target==this}.bind(this))}}(c,e,f),function(t,e,i){function n(t){t._registered||(t._registered=!0,a.push(t),s||(s=!0,requestAnimationFrame(r)))}function r(t){var e=a;a=[],e.sort(function(t,e){return t._sequenceNumber-e._sequenceNumber}),e=e.filter(function(t){t();var e=t._animation?t._animation.playState:"idle";return"running"!=e&&"pending"!=e&&(t._registered=!1),t._registered}),a.push.apply(a,e),a.length?(s=!0,requestAnimationFrame(r)):s=!1}var o=(document.createElementNS("http://www.w3.org/1999/xhtml","div"),0);e.bindAnimationForCustomEffect=function(e){var i,r=e.effect.target,a="function"==typeof e.effect.getFrames();i=a?e.effect.getFrames():e.effect._onsample;var s=e.effect.timing,u=null;s=t.normalizeTimingInput(s);var c=function(){var n=c._animation?c._animation.currentTime:null;null!==n&&(n=t.calculateIterationProgress(t.calculateActiveDuration(s),n,s),isNaN(n)&&(n=null)),n!==u&&(a?i(n,r,e.effect):i(n,e.effect,e.effect._animation)),u=n};c._animation=e,c._registered=!1,c._sequenceNumber=o++,e._callback=c,n(c)};var a=[],s=!1;e.Animation.prototype._register=function(){this._callback&&n(this._callback)}}(c,e,f),function(t,e,i){function n(t){return t._timing.delay+t.activeDuration+t._timing.endDelay}function r(e,i,n){this._id=n,this._parent=null,this.children=e||[],this._reparent(this.children),i=t.numericTimingToObject(i),this._timingInput=t.cloneTimingInput(i),this._timing=t.normalizeTimingInput(i,!0),this.timing=t.makeTiming(i,!0,this),this.timing._effect=this,"auto"===this._timing.duration&&(this._timing.duration=this.activeDuration)}window.SequenceEffect=function(){r.apply(this,arguments)},window.GroupEffect=function(){r.apply(this,arguments)},r.prototype={_isAncestor:function(t){for(var e=this;null!==e;){if(e==t)return!0;e=e._parent}return!1},_rebuild:function(){for(var t=this;t;)"auto"===t.timing.duration&&(t._timing.duration=t.activeDuration),t=t._parent;this._animation&&this._animation._rebuildUnderlyingAnimation()},_reparent:function(t){e.removeMulti(t);for(var i=0;i<t.length;i++)t[i]._parent=this},_putChild:function(t,e){for(var i=e?"Cannot append an ancestor or self":"Cannot prepend an ancestor or self",n=0;n<t.length;n++)if(this._isAncestor(t[n]))throw{type:DOMException.HIERARCHY_REQUEST_ERR,name:"HierarchyRequestError",message:i};for(var n=0;n<t.length;n++)e?this.children.push(t[n]):this.children.unshift(t[n]);this._reparent(t),this._rebuild()},append:function(){this._putChild(arguments,!0)},prepend:function(){this._putChild(arguments,!1)},get parent(){return this._parent},get firstChild(){return this.children.length?this.children[0]:null},get lastChild(){return this.children.length?this.children[this.children.length-1]:null},clone:function(){for(var e=t.cloneTimingInput(this._timingInput),i=[],n=0;n<this.children.length;n++)i.push(this.children[n].clone());return this instanceof GroupEffect?new GroupEffect(i,e):new SequenceEffect(i,e)},remove:function(){e.removeMulti([this])}},window.SequenceEffect.prototype=Object.create(r.prototype),Object.defineProperty(window.SequenceEffect.prototype,"activeDuration",{get:function(){var t=0;return this.children.forEach(function(e){t+=n(e)}),Math.max(t,0)}}),window.GroupEffect.prototype=Object.create(r.prototype),Object.defineProperty(window.GroupEffect.prototype,"activeDuration",{get:function(){var t=0;return this.children.forEach(function(e){t=Math.max(t,n(e))}),t}}),e.newUnderlyingAnimationForGroup=function(i){var n,r=null,o=function(e){var i=n._wrapper;if(i&&"pending"!=i.playState&&i.effect)return null==e?void i._removeChildAnimations():0==e&&i.playbackRate<0&&(r||(r=t.normalizeTimingInput(i.effect.timing)),e=t.calculateIterationProgress(t.calculateActiveDuration(r),-1,r),isNaN(e)||null==e)?(i._forEachChild(function(t){t.currentTime=-1}),void i._removeChildAnimations()):void 0},a=new KeyframeEffect(null,[],i._timing,i._id);return a.onsample=o,n=e.timeline._play(a)},e.bindAnimationForGroup=function(t){t._animation._wrapper=t,t._isGroup=!0,e.awaitStartTime(t),t._constructChildAnimations(),t._setExternalAnimation(t)},e.groupChildDuration=n}(c,e,f),b.true=a}({},function(){return this}())</script><script>Polymer({is:"opaque-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(e){var i=e.node;return this._effect=new KeyframeEffect(i,[{opacity:"1"},{opacity:"1"}],this.timingFromConfig(e)),i.style.opacity="0",this._effect},complete:function(e){e.node.style.opacity=""}})</script><script>!function(){"use strict";var e={pageX:0,pageY:0},t=null,l=[];Polymer.IronDropdownScrollManager={get currentLockingElement(){return this._lockingElements[this._lockingElements.length-1]},elementIsScrollLocked:function(e){var t=this.currentLockingElement;if(void 0===t)return!1;var l;return!!this._hasCachedLockedElement(e)||!this._hasCachedUnlockedElement(e)&&(l=!!t&&t!==e&&!this._composedTreeContains(t,e),l?this._lockedElementCache.push(e):this._unlockedElementCache.push(e),l)},pushScrollLock:function(e){this._lockingElements.indexOf(e)>=0||(0===this._lockingElements.length&&this._lockScrollInteractions(),this._lockingElements.push(e),this._lockedElementCache=[],this._unlockedElementCache=[])},removeScrollLock:function(e){var t=this._lockingElements.indexOf(e);t!==-1&&(this._lockingElements.splice(t,1),this._lockedElementCache=[],this._unlockedElementCache=[],0===this._lockingElements.length&&this._unlockScrollInteractions())},_lockingElements:[],_lockedElementCache:null,_unlockedElementCache:null,_hasCachedLockedElement:function(e){return this._lockedElementCache.indexOf(e)>-1},_hasCachedUnlockedElement:function(e){return this._unlockedElementCache.indexOf(e)>-1},_composedTreeContains:function(e,t){var l,n,o,r;if(e.contains(t))return!0;for(l=Polymer.dom(e).querySelectorAll("content"),o=0;o<l.length;++o)for(n=Polymer.dom(l[o]).getDistributedNodes(),r=0;r<n.length;++r)if(this._composedTreeContains(n[r],t))return!0;return!1},_scrollInteractionHandler:function(t){if(t.cancelable&&this._shouldPreventScrolling(t)&&t.preventDefault(),t.targetTouches){var l=t.targetTouches[0];e.pageX=l.pageX,e.pageY=l.pageY}},_lockScrollInteractions:function(){this._boundScrollHandler=this._boundScrollHandler||this._scrollInteractionHandler.bind(this),document.addEventListener("wheel",this._boundScrollHandler,!0),document.addEventListener("mousewheel",this._boundScrollHandler,!0),document.addEventListener("DOMMouseScroll",this._boundScrollHandler,!0),document.addEventListener("touchstart",this._boundScrollHandler,!0),document.addEventListener("touchmove",this._boundScrollHandler,!0)},_unlockScrollInteractions:function(){document.removeEventListener("wheel",this._boundScrollHandler,!0),document.removeEventListener("mousewheel",this._boundScrollHandler,!0),document.removeEventListener("DOMMouseScroll",this._boundScrollHandler,!0),document.removeEventListener("touchstart",this._boundScrollHandler,!0),document.removeEventListener("touchmove",this._boundScrollHandler,!0)},_shouldPreventScrolling:function(e){var n=Polymer.dom(e).rootTarget;if("touchmove"!==e.type&&t!==n&&(t=n,l=this._getScrollableNodes(Polymer.dom(e).path)),!l.length)return!0;if("touchstart"===e.type)return!1;var o=this._getScrollInfo(e);return!this._getScrollingNode(l,o.deltaX,o.deltaY)},_getScrollableNodes:function(e){for(var t=[],l=e.indexOf(this.currentLockingElement),n=0;n<=l;n++)if(e[n].nodeType===Node.ELEMENT_NODE){var o=e[n],r=o.style;"scroll"!==r.overflow&&"auto"!==r.overflow&&(r=window.getComputedStyle(o)),"scroll"!==r.overflow&&"auto"!==r.overflow||t.push(o)}return t},_getScrollingNode:function(e,t,l){if(t||l)for(var n=Math.abs(l)>=Math.abs(t),o=0;o<e.length;o++){var r=e[o],c=!1;if(c=n?l<0?r.scrollTop>0:r.scrollTop<r.scrollHeight-r.clientHeight:t<0?r.scrollLeft>0:r.scrollLeft<r.scrollWidth-r.clientWidth)return r}},_getScrollInfo:function(t){var l={deltaX:t.deltaX,deltaY:t.deltaY};if("deltaX"in t);else if("wheelDeltaX"in t)l.deltaX=-t.wheelDeltaX,l.deltaY=-t.wheelDeltaY;else if("axis"in t)l.deltaX=1===t.axis?t.detail:0,l.deltaY=2===t.axis?t.detail:0;else if(t.targetTouches){var n=t.targetTouches[0];l.deltaX=e.pageX-n.pageX,l.deltaY=e.pageY-n.pageY}return l}}}()</script><dom-module id="iron-dropdown" assetpath="../bower_components/iron-dropdown/"><template><style>:host{position:fixed}#contentWrapper ::content>*{overflow:auto}#contentWrapper.animating ::content>*{overflow:hidden}</style><div id="contentWrapper"><content id="content" select=".dropdown-content"></content></div></template><script>!function(){"use strict";Polymer({is:"iron-dropdown",behaviors:[Polymer.IronControlState,Polymer.IronA11yKeysBehavior,Polymer.IronOverlayBehavior,Polymer.NeonAnimationRunnerBehavior],properties:{horizontalAlign:{type:String,value:"left",reflectToAttribute:!0},verticalAlign:{type:String,value:"top",reflectToAttribute:!0},openAnimationConfig:{type:Object},closeAnimationConfig:{type:Object},focusTarget:{type:Object},noAnimations:{type:Boolean,value:!1},allowOutsideScroll:{type:Boolean,value:!1},_boundOnCaptureScroll:{type:Function,value:function(){return this._onCaptureScroll.bind(this)}}},listeners:{"neon-animation-finish":"_onNeonAnimationFinish"},observers:["_updateOverlayPosition(positionTarget, verticalAlign, horizontalAlign, verticalOffset, horizontalOffset)"],get containedElement(){return Polymer.dom(this.$.content).getDistributedNodes()[0]},get _focusTarget(){return this.focusTarget||this.containedElement},ready:function(){this._scrollTop=0,this._scrollLeft=0,this._refitOnScrollRAF=null},attached:function(){this.sizingTarget&&this.sizingTarget!==this||(this.sizingTarget=this.containedElement||this)},detached:function(){this.cancelAnimation(),document.removeEventListener("scroll",this._boundOnCaptureScroll),Polymer.IronDropdownScrollManager.removeScrollLock(this)},_openedChanged:function(){this.opened&&this.disabled?this.cancel():(this.cancelAnimation(),this._updateAnimationConfig(),this._saveScrollPosition(),this.opened?(document.addEventListener("scroll",this._boundOnCaptureScroll),!this.allowOutsideScroll&&Polymer.IronDropdownScrollManager.pushScrollLock(this)):(document.removeEventListener("scroll",this._boundOnCaptureScroll),Polymer.IronDropdownScrollManager.removeScrollLock(this)),Polymer.IronOverlayBehaviorImpl._openedChanged.apply(this,arguments))},_renderOpened:function(){!this.noAnimations&&this.animationConfig.open?(this.$.contentWrapper.classList.add("animating"),this.playAnimation("open")):Polymer.IronOverlayBehaviorImpl._renderOpened.apply(this,arguments)},_renderClosed:function(){!this.noAnimations&&this.animationConfig.close?(this.$.contentWrapper.classList.add("animating"),this.playAnimation("close")):Polymer.IronOverlayBehaviorImpl._renderClosed.apply(this,arguments)},_onNeonAnimationFinish:function(){this.$.contentWrapper.classList.remove("animating"),this.opened?this._finishRenderOpened():this._finishRenderClosed()},_onCaptureScroll:function(){this.allowOutsideScroll?(this._refitOnScrollRAF&&window.cancelAnimationFrame(this._refitOnScrollRAF),this._refitOnScrollRAF=window.requestAnimationFrame(this.refit.bind(this))):this._restoreScrollPosition()},_saveScrollPosition:function(){document.scrollingElement?(this._scrollTop=document.scrollingElement.scrollTop,this._scrollLeft=document.scrollingElement.scrollLeft):(this._scrollTop=Math.max(document.documentElement.scrollTop,document.body.scrollTop),this._scrollLeft=Math.max(document.documentElement.scrollLeft,document.body.scrollLeft))},_restoreScrollPosition:function(){document.scrollingElement?(document.scrollingElement.scrollTop=this._scrollTop,document.scrollingElement.scrollLeft=this._scrollLeft):(document.documentElement.scrollTop=this._scrollTop,document.documentElement.scrollLeft=this._scrollLeft,document.body.scrollTop=this._scrollTop,document.body.scrollLeft=this._scrollLeft)},_updateAnimationConfig:function(){for(var o=this.containedElement,t=[].concat(this.openAnimationConfig||[]).concat(this.closeAnimationConfig||[]),n=0;n<t.length;n++)t[n].node=o;this.animationConfig={open:this.openAnimationConfig,close:this.closeAnimationConfig}},_updateOverlayPosition:function(){this.isAttached&&this.notifyResize()},_applyFocus:function(){var o=this.focusTarget||this.containedElement;o&&this.opened&&!this.noAutoFocus?o.focus():Polymer.IronOverlayBehaviorImpl._applyFocus.apply(this,arguments)}})}()</script></dom-module><script>Polymer({is:"fade-in-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(i){var e=i.node;return this._effect=new KeyframeEffect(e,[{opacity:"0"},{opacity:"1"}],this.timingFromConfig(i)),this._effect}})</script><script>Polymer({is:"fade-out-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(e){var i=e.node;return this._effect=new KeyframeEffect(i,[{opacity:"1"},{opacity:"0"}],this.timingFromConfig(e)),this._effect}})</script><script>Polymer({is:"paper-menu-grow-height-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(e){var i=e.node,t=i.getBoundingClientRect(),n=t.height;return this._effect=new KeyframeEffect(i,[{height:n/2+"px"},{height:n+"px"}],this.timingFromConfig(e)),this._effect}}),Polymer({is:"paper-menu-grow-width-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(e){var i=e.node,t=i.getBoundingClientRect(),n=t.width;return this._effect=new KeyframeEffect(i,[{width:n/2+"px"},{width:n+"px"}],this.timingFromConfig(e)),this._effect}}),Polymer({is:"paper-menu-shrink-width-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(e){var i=e.node,t=i.getBoundingClientRect(),n=t.width;return this._effect=new KeyframeEffect(i,[{width:n+"px"},{width:n-n/20+"px"}],this.timingFromConfig(e)),this._effect}}),Polymer({is:"paper-menu-shrink-height-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(e){var i=e.node,t=i.getBoundingClientRect(),n=t.height;t.top;return this.setPrefixedProperty(i,"transformOrigin","0 0"),this._effect=new KeyframeEffect(i,[{height:n+"px",transform:"translateY(0)"},{height:n/2+"px",transform:"translateY(-20px)"}],this.timingFromConfig(e)),this._effect}})</script><dom-module id="paper-menu-button" assetpath="../bower_components/paper-menu-button/"><template><style>:host{display:inline-block;position:relative;padding:8px;outline:0;@apply(--paper-menu-button)}:host([disabled]){cursor:auto;color:var(--disabled-text-color);@apply(--paper-menu-button-disabled)}iron-dropdown{@apply(--paper-menu-button-dropdown)}.dropdown-content{@apply(--shadow-elevation-2dp);position:relative;border-radius:2px;background-color:var(--paper-menu-button-dropdown-background,--primary-background-color);@apply(--paper-menu-button-content)}:host([vertical-align=top]) .dropdown-content{margin-bottom:20px;margin-top:-10px;top:10px}:host([vertical-align=bottom]) .dropdown-content{bottom:10px;margin-bottom:-10px;margin-top:20px}#trigger{cursor:pointer}</style><div id="trigger" on-tap="toggle"><content select=".dropdown-trigger"></content></div><iron-dropdown id="dropdown" opened="{{opened}}" horizontal-align="[[horizontalAlign]]" vertical-align="[[verticalAlign]]" dynamic-align="[[dynamicAlign]]" horizontal-offset="[[horizontalOffset]]" vertical-offset="[[verticalOffset]]" no-overlap="[[noOverlap]]" open-animation-config="[[openAnimationConfig]]" close-animation-config="[[closeAnimationConfig]]" no-animations="[[noAnimations]]" focus-target="[[_dropdownContent]]" allow-outside-scroll="[[allowOutsideScroll]]" restore-focus-on-close="[[restoreFocusOnClose]]" on-iron-overlay-canceled="__onIronOverlayCanceled"><div class="dropdown-content"><content id="content" select=".dropdown-content"></content></div></iron-dropdown></template><script>!function(){"use strict";var e={ANIMATION_CUBIC_BEZIER:"cubic-bezier(.3,.95,.5,1)",MAX_ANIMATION_TIME_MS:400},n=Polymer({is:"paper-menu-button",behaviors:[Polymer.IronA11yKeysBehavior,Polymer.IronControlState],properties:{opened:{type:Boolean,value:!1,notify:!0,observer:"_openedChanged"},horizontalAlign:{type:String,value:"left",reflectToAttribute:!0},verticalAlign:{type:String,value:"top",reflectToAttribute:!0},dynamicAlign:{type:Boolean},horizontalOffset:{type:Number,value:0,notify:!0},verticalOffset:{type:Number,value:0,notify:!0},noOverlap:{type:Boolean},noAnimations:{type:Boolean,value:!1},ignoreSelect:{type:Boolean,value:!1},closeOnActivate:{type:Boolean,value:!1},openAnimationConfig:{type:Object,value:function(){return[{name:"fade-in-animation",timing:{delay:100,duration:200}},{name:"paper-menu-grow-width-animation",timing:{delay:100,duration:150,easing:e.ANIMATION_CUBIC_BEZIER}},{name:"paper-menu-grow-height-animation",timing:{delay:100,duration:275,easing:e.ANIMATION_CUBIC_BEZIER}}]}},closeAnimationConfig:{type:Object,value:function(){return[{name:"fade-out-animation",timing:{duration:150}},{name:"paper-menu-shrink-width-animation",timing:{delay:100,duration:50,easing:e.ANIMATION_CUBIC_BEZIER}},{name:"paper-menu-shrink-height-animation",timing:{duration:200,easing:"ease-in"}}]}},allowOutsideScroll:{type:Boolean,value:!1},restoreFocusOnClose:{type:Boolean,value:!0},_dropdownContent:{type:Object}},hostAttributes:{role:"group","aria-haspopup":"true"},listeners:{"iron-activate":"_onIronActivate","iron-select":"_onIronSelect"},get contentElement(){return Polymer.dom(this.$.content).getDistributedNodes()[0]},toggle:function(){this.opened?this.close():this.open()},open:function(){this.disabled||this.$.dropdown.open()},close:function(){this.$.dropdown.close()},_onIronSelect:function(e){this.ignoreSelect||this.close()},_onIronActivate:function(e){this.closeOnActivate&&this.close()},_openedChanged:function(e,n){e?(this._dropdownContent=this.contentElement,this.fire("paper-dropdown-open")):null!=n&&this.fire("paper-dropdown-close")},_disabledChanged:function(e){Polymer.IronControlState._disabledChanged.apply(this,arguments),e&&this.opened&&this.close()},__onIronOverlayCanceled:function(e){var n=e.detail,t=(Polymer.dom(n).rootTarget,this.$.trigger),o=Polymer.dom(n).path;o.indexOf(t)>-1&&e.preventDefault()}});Object.keys(e).forEach(function(t){n[t]=e[t]}),Polymer.PaperMenuButton=n}()</script></dom-module><iron-iconset-svg name="paper-dropdown-menu" size="24"><svg><defs><g id="arrow-drop-down"><path d="M7 10l5 5 5-5z"></path></g></defs></svg></iron-iconset-svg><dom-module id="paper-dropdown-menu-shared-styles" assetpath="../bower_components/paper-dropdown-menu/"><template><style>:host{display:inline-block;position:relative;text-align:left;-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:transparent;--paper-input-container-input:{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:100%;box-sizing:border-box;cursor:pointer};@apply(--paper-dropdown-menu)}:host([disabled]){@apply(--paper-dropdown-menu-disabled)}:host([noink]) paper-ripple{display:none}:host([no-label-float]) paper-ripple{top:8px}paper-ripple{top:12px;left:0;bottom:8px;right:0;@apply(--paper-dropdown-menu-ripple)}paper-menu-button{display:block;padding:0;@apply(--paper-dropdown-menu-button)}paper-input{@apply(--paper-dropdown-menu-input)}iron-icon{color:var(--disabled-text-color);@apply(--paper-dropdown-menu-icon)}</style></template></dom-module><dom-module id="paper-dropdown-menu" assetpath="../bower_components/paper-dropdown-menu/"><template><style include="paper-dropdown-menu-shared-styles"></style><span role="button"></span><paper-menu-button id="menuButton" vertical-align="[[verticalAlign]]" horizontal-align="[[horizontalAlign]]" dynamic-align="[[dynamicAlign]]" vertical-offset="[[_computeMenuVerticalOffset(noLabelFloat)]]" disabled="[[disabled]]" no-animations="[[noAnimations]]" on-iron-select="_onIronSelect" on-iron-deselect="_onIronDeselect" opened="{{opened}}" close-on-activate="" allow-outside-scroll="[[allowOutsideScroll]]"><div class="dropdown-trigger"><paper-ripple></paper-ripple><paper-input type="text" invalid="[[invalid]]" readonly="" disabled="[[disabled]]" value="[[selectedItemLabel]]" placeholder="[[placeholder]]" error-message="[[errorMessage]]" always-float-label="[[alwaysFloatLabel]]" no-label-float="[[noLabelFloat]]" label="[[label]]"><iron-icon icon="paper-dropdown-menu:arrow-drop-down" suffix=""></iron-icon></paper-input></div><content id="content" select=".dropdown-content"></content></paper-menu-button></template><script>!function(){"use strict";Polymer({is:"paper-dropdown-menu",behaviors:[Polymer.IronButtonState,Polymer.IronControlState,Polymer.IronFormElementBehavior,Polymer.IronValidatableBehavior],properties:{selectedItemLabel:{type:String,notify:!0,readOnly:!0},selectedItem:{type:Object,notify:!0,readOnly:!0},value:{type:String,notify:!0,readOnly:!0},label:{type:String},placeholder:{type:String},errorMessage:{type:String},opened:{type:Boolean,notify:!0,value:!1,observer:"_openedChanged"},allowOutsideScroll:{type:Boolean,value:!1},noLabelFloat:{type:Boolean,value:!1,reflectToAttribute:!0},alwaysFloatLabel:{type:Boolean,value:!1},noAnimations:{type:Boolean,value:!1},horizontalAlign:{type:String,value:"right"},verticalAlign:{type:String,value:"top"},dynamicAlign:{type:Boolean}},listeners:{tap:"_onTap"},keyBindings:{"up down":"open",esc:"close"},hostAttributes:{role:"combobox","aria-autocomplete":"none","aria-haspopup":"true"},observers:["_selectedItemChanged(selectedItem)"],attached:function(){var e=this.contentElement;e&&e.selectedItem&&this._setSelectedItem(e.selectedItem)},get contentElement(){return Polymer.dom(this.$.content).getDistributedNodes()[0]},open:function(){this.$.menuButton.open()},close:function(){this.$.menuButton.close()},_onIronSelect:function(e){this._setSelectedItem(e.detail.item)},_onIronDeselect:function(e){this._setSelectedItem(null)},_onTap:function(e){Polymer.Gestures.findOriginalTarget(e)===this&&this.open()},_selectedItemChanged:function(e){var t="";t=e?e.label||e.getAttribute("label")||e.textContent.trim():"",this._setValue(t),this._setSelectedItemLabel(t)},_computeMenuVerticalOffset:function(e){return e?-4:8},_getValidity:function(e){return this.disabled||!this.required||this.required&&!!this.value},_openedChanged:function(){var e=this.opened?"true":"false",t=this.contentElement;t&&t.setAttribute("aria-expanded",e)}})}()</script></dom-module><dom-module id="paper-menu-shared-styles" assetpath="../bower_components/paper-menu/"><template><style>.selectable-content>::content>.iron-selected{font-weight:700;@apply(--paper-menu-selected-item)}.selectable-content>::content>[disabled]{color:var(--paper-menu-disabled-color,--disabled-text-color)}.selectable-content>::content>:focus{position:relative;outline:0;@apply(--paper-menu-focused-item)}.selectable-content>::content>:focus:after{@apply(--layout-fit);background:currentColor;opacity:var(--dark-divider-opacity);content:'';pointer-events:none;@apply(--paper-menu-focused-item-after)}.selectable-content>::content>[colored]:focus:after{opacity:.26}</style></template></dom-module><dom-module id="paper-menu" assetpath="../bower_components/paper-menu/"><template><style include="paper-menu-shared-styles"></style><style>:host{display:block;padding:8px 0;background:var(--paper-menu-background-color,--primary-background-color);color:var(--paper-menu-color,--primary-text-color);@apply(--paper-menu)}</style><div class="selectable-content"><content></content></div></template><script>!function(){Polymer({is:"paper-menu",behaviors:[Polymer.IronMenuBehavior]})}()</script></dom-module><script>Polymer.PaperItemBehaviorImpl={hostAttributes:{role:"option",tabindex:"0"}},Polymer.PaperItemBehavior=[Polymer.IronButtonState,Polymer.IronControlState,Polymer.PaperItemBehaviorImpl]</script><dom-module id="paper-item-shared-styles" assetpath="../bower_components/paper-item/"><template><style>.paper-item,:host{display:block;position:relative;min-height:var(--paper-item-min-height,48px);padding:0 16px}.paper-item{@apply(--paper-font-subhead);border:none;outline:0;background:#fff;width:100%;text-align:left}.paper-item[hidden],:host([hidden]){display:none!important}.paper-item.iron-selected,:host(.iron-selected){font-weight:var(--paper-item-selected-weight,bold);@apply(--paper-item-selected)}.paper-item[disabled],:host([disabled]){color:var(--paper-item-disabled-color,--disabled-text-color);@apply(--paper-item-disabled)}.paper-item:focus,:host(:focus){position:relative;outline:0;@apply(--paper-item-focused)}.paper-item:focus:before,:host(:focus):before{@apply(--layout-fit);background:currentColor;content:'';opacity:var(--dark-divider-opacity);pointer-events:none;@apply(--paper-item-focused-before)}</style></template></dom-module><dom-module id="paper-item" assetpath="../bower_components/paper-item/"><template><style include="paper-item-shared-styles"></style><style>:host{@apply(--layout-horizontal);@apply(--layout-center);@apply(--paper-font-subhead);@apply(--paper-item)}</style><content></content></template><script>Polymer({is:"paper-item",behaviors:[Polymer.PaperItemBehavior]})</script></dom-module><dom-module id="state-card-input_select" assetpath="state-summary/"><template><style>:host{display:block}state-badge{float:left;margin-top:10px}paper-dropdown-menu{display:block;margin-left:53px}</style><state-badge state-obj="[[stateObj]]"></state-badge><paper-dropdown-menu on-tap="stopPropagation" selected-item-label="{{selectedOption}}" label="[[stateObj.entityDisplay]]"><paper-menu class="dropdown-content" selected="[[computeSelected(stateObj)]]"><template is="dom-repeat" items="[[stateObj.attributes.options]]"><paper-item>[[item]]</paper-item></template></paper-menu></paper-dropdown-menu></template></dom-module><script>Polymer({is:"state-card-input_select",properties:{hass:{type:Object},inDialog:{type:Boolean,value:!1},stateObj:{type:Object},selectedOption:{type:String,observer:"selectedOptionChanged"}},computeSelected:function(t){return t.attributes.options.indexOf(t.state)},selectedOptionChanged:function(t){""!==t&&t!==this.stateObj.state&&this.hass.serviceActions.callService("input_select","select_option",{option:t,entity_id:this.stateObj.entityId})},stopPropagation:function(t){t.stopPropagation()}})</script><script>Polymer.IronRangeBehavior={properties:{value:{type:Number,value:0,notify:!0,reflectToAttribute:!0},min:{type:Number,value:0,notify:!0},max:{type:Number,value:100,notify:!0},step:{type:Number,value:1,notify:!0},ratio:{type:Number,value:0,readOnly:!0,notify:!0}},observers:["_update(value, min, max, step)"],_calcRatio:function(t){return(this._clampValue(t)-this.min)/(this.max-this.min)},_clampValue:function(t){return Math.min(this.max,Math.max(this.min,this._calcStep(t)))},_calcStep:function(t){if(t=parseFloat(t),!this.step)return t;var e=Math.round((t-this.min)/this.step);return this.step<1?e/(1/this.step)+this.min:e*this.step+this.min},_validateValue:function(){var t=this._clampValue(this.value);return this.value=this.oldValue=isNaN(t)?this.oldValue:t,this.value!==t},_update:function(){this._validateValue(),this._setRatio(100*this._calcRatio(this.value))}}</script><dom-module id="paper-progress" assetpath="../bower_components/paper-progress/"><template><style>:host{display:block;width:200px;position:relative;overflow:hidden}:host([hidden]){display:none!important}#progressContainer{@apply(--paper-progress-container);position:relative}#progressContainer,.indeterminate::after{height:var(--paper-progress-height,4px)}#primaryProgress,#secondaryProgress,.indeterminate::after{@apply(--layout-fit)}#progressContainer,.indeterminate::after{background:var(--paper-progress-container-color,--google-grey-300)}:host(.transiting) #primaryProgress,:host(.transiting) #secondaryProgress{-webkit-transition-property:-webkit-transform;transition-property:transform;-webkit-transition-duration:var(--paper-progress-transition-duration,.08s);transition-duration:var(--paper-progress-transition-duration,.08s);-webkit-transition-timing-function:var(--paper-progress-transition-timing-function,ease);transition-timing-function:var(--paper-progress-transition-timing-function,ease);-webkit-transition-delay:var(--paper-progress-transition-delay,0s);transition-delay:var(--paper-progress-transition-delay,0s)}#primaryProgress,#secondaryProgress{@apply(--layout-fit);-webkit-transform-origin:left center;transform-origin:left center;-webkit-transform:scaleX(0);transform:scaleX(0);will-change:transform}#primaryProgress{background:var(--paper-progress-active-color,--google-green-500)}#secondaryProgress{background:var(--paper-progress-secondary-color,--google-green-100)}:host([disabled]) #primaryProgress{background:var(--paper-progress-disabled-active-color,--google-grey-500)}:host([disabled]) #secondaryProgress{background:var(--paper-progress-disabled-secondary-color,--google-grey-300)}:host(:not([disabled])) #primaryProgress.indeterminate{-webkit-transform-origin:right center;transform-origin:right center;-webkit-animation:indeterminate-bar var(--paper-progress-indeterminate-cycle-duration,2s) linear infinite;animation:indeterminate-bar var(--paper-progress-indeterminate-cycle-duration,2s) linear infinite}:host(:not([disabled])) #primaryProgress.indeterminate::after{content:"";-webkit-transform-origin:center center;transform-origin:center center;-webkit-animation:indeterminate-splitter var(--paper-progress-indeterminate-cycle-duration,2s) linear infinite;animation:indeterminate-splitter var(--paper-progress-indeterminate-cycle-duration,2s) linear infinite}@-webkit-keyframes indeterminate-bar{0%{-webkit-transform:scaleX(1) translateX(-100%)}50%{-webkit-transform:scaleX(1) translateX(0)}75%{-webkit-transform:scaleX(1) translateX(0);-webkit-animation-timing-function:cubic-bezier(.28,.62,.37,.91)}100%{-webkit-transform:scaleX(0) translateX(0)}}@-webkit-keyframes indeterminate-splitter{0%{-webkit-transform:scaleX(.75) translateX(-125%)}30%{-webkit-transform:scaleX(.75) translateX(-125%);-webkit-animation-timing-function:cubic-bezier(.42,0,.6,.8)}90%{-webkit-transform:scaleX(.75) translateX(125%)}100%{-webkit-transform:scaleX(.75) translateX(125%)}}@keyframes indeterminate-bar{0%{transform:scaleX(1) translateX(-100%)}50%{transform:scaleX(1) translateX(0)}75%{transform:scaleX(1) translateX(0);animation-timing-function:cubic-bezier(.28,.62,.37,.91)}100%{transform:scaleX(0) translateX(0)}}@keyframes indeterminate-splitter{0%{transform:scaleX(.75) translateX(-125%)}30%{transform:scaleX(.75) translateX(-125%);animation-timing-function:cubic-bezier(.42,0,.6,.8)}90%{transform:scaleX(.75) translateX(125%)}100%{transform:scaleX(.75) translateX(125%)}}</style><div id="progressContainer"><div id="secondaryProgress" hidden$="[[_hideSecondaryProgress(secondaryRatio)]]"></div><div id="primaryProgress"></div></div></template></dom-module><script>Polymer({is:"paper-progress",behaviors:[Polymer.IronRangeBehavior],properties:{secondaryProgress:{type:Number,value:0},secondaryRatio:{type:Number,value:0,readOnly:!0},indeterminate:{type:Boolean,value:!1,observer:"_toggleIndeterminate"},disabled:{type:Boolean,value:!1,reflectToAttribute:!0,observer:"_disabledChanged"}},observers:["_progressChanged(secondaryProgress, value, min, max)"],hostAttributes:{role:"progressbar"},_toggleIndeterminate:function(e){this.toggleClass("indeterminate",e,this.$.primaryProgress)},_transformProgress:function(e,r){var s="scaleX("+r/100+")";e.style.transform=e.style.webkitTransform=s},_mainRatioChanged:function(e){this._transformProgress(this.$.primaryProgress,e)},_progressChanged:function(e,r,s,t){e=this._clampValue(e),r=this._clampValue(r);var a=100*this._calcRatio(e),i=100*this._calcRatio(r);this._setSecondaryRatio(a),this._transformProgress(this.$.secondaryProgress,a),this._transformProgress(this.$.primaryProgress,i),this.secondaryProgress=e,this.setAttribute("aria-valuenow",r),this.setAttribute("aria-valuemin",s),this.setAttribute("aria-valuemax",t)},_disabledChanged:function(e){this.setAttribute("aria-disabled",e?"true":"false")},_hideSecondaryProgress:function(e){return 0===e}})</script><dom-module id="paper-slider" assetpath="../bower_components/paper-slider/"><template strip-whitespace=""><style>:host{@apply(--layout);@apply(--layout-justified);@apply(--layout-center);width:200px;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;--paper-progress-active-color:var(--paper-slider-active-color, --google-blue-700);--paper-progress-secondary-color:var(--paper-slider-secondary-color, --google-blue-300);--paper-progress-disabled-active-color:var(--paper-slider-disabled-active-color, --paper-grey-400);--paper-progress-disabled-secondary-color:var(--paper-slider-disabled-secondary-color, --paper-grey-400)}:host(:focus){outline:0}#sliderContainer{position:relative;width:100%;height:calc(30px + var(--paper-slider-height,2px));margin-left:calc(15px + var(--paper-slider-height,2px)/ 2);margin-right:calc(15px + var(--paper-slider-height,2px)/ 2)}#sliderContainer:focus{outline:0}#sliderContainer.editable{margin-top:12px;margin-bottom:12px}.bar-container{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.ring>.bar-container{left:calc(5px + var(--paper-slider-height,2px)/ 2);transition:left .18s ease}.ring.expand.dragging>.bar-container{transition:none}.ring.expand:not(.pin)>.bar-container{left:calc(8px + var(--paper-slider-height,2px)/ 2)}#sliderBar{padding:15px 0;width:100%;background-color:var(--paper-slider-bar-color,transparent);--paper-progress-container-color:var(--paper-slider-container-color, --paper-grey-400);--paper-progress-height:var(--paper-slider-height, 2px)}.slider-markers{position:absolute;top:calc(14px + var(--paper-slider-height,2px)/ 2);height:var(--paper-slider-height,2px);left:0;right:-1px;box-sizing:border-box;pointer-events:none;@apply(--layout-horizontal)}.slider-marker{@apply(--layout-flex)}.slider-marker::after,.slider-markers::after{content:"";display:block;margin-left:-1px;width:2px;height:2px;border-radius:50%;background-color:#000}#sliderKnob{position:absolute;left:0;top:0;margin-left:calc(-15px - var(--paper-slider-height,2px)/ 2);width:calc(30px + var(--paper-slider-height,2px));height:calc(30px + var(--paper-slider-height,2px))}.transiting>#sliderKnob{transition:left 80ms ease}#sliderKnob:focus{outline:0}#sliderKnob.dragging{transition:none}.snaps>#sliderKnob.dragging{transition:-webkit-transform 80ms ease;transition:transform 80ms ease}#sliderKnobInner{margin:10px;width:calc(100% - 20px);height:calc(100% - 20px);background-color:var(--paper-slider-knob-color,--google-blue-700);border:2px solid var(--paper-slider-knob-color,--google-blue-700);border-radius:50%;-moz-box-sizing:border-box;box-sizing:border-box;transition-property:-webkit-transform,background-color,border;transition-property:transform,background-color,border;transition-duration:.18s;transition-timing-function:ease}.expand:not(.pin)>#sliderKnob>#sliderKnobInner{-webkit-transform:scale(1.5);transform:scale(1.5)}.ring>#sliderKnob>#sliderKnobInner{background-color:var(--paper-slider-knob-start-color,transparent);border:2px solid var(--paper-slider-knob-start-border-color,--paper-grey-400)}#sliderKnobInner::before{background-color:var(--paper-slider-pin-color,--google-blue-700)}.pin>#sliderKnob>#sliderKnobInner::before{content:"";position:absolute;top:0;left:50%;margin-left:-13px;width:26px;height:26px;border-radius:50% 50% 50% 0;-webkit-transform:rotate(-45deg) scale(0) translate(0);transform:rotate(-45deg) scale(0) translate(0)}#sliderKnobInner::after,#sliderKnobInner::before{transition:-webkit-transform .18s ease,background-color .18s ease;transition:transform .18s ease,background-color .18s ease}.pin.ring>#sliderKnob>#sliderKnobInner::before{background-color:var(--paper-slider-pin-start-color,--paper-grey-400)}.pin.expand>#sliderKnob>#sliderKnobInner::before{-webkit-transform:rotate(-45deg) scale(1) translate(17px,-17px);transform:rotate(-45deg) scale(1) translate(17px,-17px)}.pin>#sliderKnob>#sliderKnobInner::after{content:attr(value);position:absolute;top:0;left:50%;margin-left:-16px;width:32px;height:26px;text-align:center;color:var(--paper-slider-font-color,#fff);font-size:10px;-webkit-transform:scale(0) translate(0);transform:scale(0) translate(0)}.pin.expand>#sliderKnob>#sliderKnobInner::after{-webkit-transform:scale(1) translate(0,-17px);transform:scale(1) translate(0,-17px)}.slider-input{width:50px;overflow:hidden;--paper-input-container-input:{text-align:center};@apply(--paper-slider-input)}#sliderContainer.disabled{pointer-events:none}.disabled>#sliderKnob>#sliderKnobInner{background-color:var(--paper-slider-disabled-knob-color,--paper-grey-400);border:2px solid var(--paper-slider-disabled-knob-color,--paper-grey-400);-webkit-transform:scale3d(.75,.75,1);transform:scale3d(.75,.75,1)}.disabled.ring>#sliderKnob>#sliderKnobInner{background-color:var(--paper-slider-knob-start-color,transparent);border:2px solid var(--paper-slider-knob-start-border-color,--paper-grey-400)}paper-ripple{color:var(--paper-slider-knob-color,--google-blue-700)}</style><div id="sliderContainer" class$="[[_getClassNames(disabled, pin, snaps, immediateValue, min, expand, dragging, transiting, editable)]]"><div class="bar-container"><paper-progress disabled$="[[disabled]]" id="sliderBar" aria-hidden="true" min="[[min]]" max="[[max]]" step="[[step]]" value="[[immediateValue]]" secondary-progress="[[secondaryProgress]]" on-down="_bardown" on-up="_resetKnob" on-track="_onTrack"></paper-progress></div><template is="dom-if" if="[[snaps]]"><div class="slider-markers"><template is="dom-repeat" items="[[markers]]"><div class="slider-marker"></div></template></div></template><div id="sliderKnob" on-down="_knobdown" on-up="_resetKnob" on-track="_onTrack" on-transitionend="_knobTransitionEnd"><div id="sliderKnobInner" value$="[[immediateValue]]"></div></div></div><template is="dom-if" if="[[editable]]"><paper-input id="input" type="number" step="[[step]]" min="[[min]]" max="[[max]]" class="slider-input" disabled$="[[disabled]]" value="[[immediateValue]]" on-change="_changeValue" on-keydown="_inputKeyDown" no-label-float=""></paper-input></template></template><script>Polymer({is:"paper-slider",behaviors:[Polymer.IronA11yKeysBehavior,Polymer.IronFormElementBehavior,Polymer.PaperInkyFocusBehavior,Polymer.IronRangeBehavior],properties:{snaps:{type:Boolean,value:!1,notify:!0},pin:{type:Boolean,value:!1,notify:!0},secondaryProgress:{type:Number,value:0,notify:!0,observer:"_secondaryProgressChanged"},editable:{type:Boolean,value:!1},immediateValue:{type:Number,value:0,readOnly:!0,notify:!0},maxMarkers:{type:Number,value:0,notify:!0},expand:{type:Boolean,value:!1,readOnly:!0},dragging:{type:Boolean,value:!1,readOnly:!0},transiting:{type:Boolean,value:!1,readOnly:!0},markers:{type:Array,readOnly:!0,value:[]}},observers:["_updateKnob(value, min, max, snaps, step)","_valueChanged(value)","_immediateValueChanged(immediateValue)","_updateMarkers(maxMarkers, min, max, snaps)"],hostAttributes:{role:"slider",tabindex:0},keyBindings:{"left down pagedown home":"_decrementKey","right up pageup end":"_incrementKey"},increment:function(){this.value=this._clampValue(this.value+this.step)},decrement:function(){this.value=this._clampValue(this.value-this.step)},_updateKnob:function(t,e,i,s,a){this.setAttribute("aria-valuemin",e),this.setAttribute("aria-valuemax",i),this.setAttribute("aria-valuenow",t),this._positionKnob(this._calcRatio(t))},_valueChanged:function(){this.fire("value-change")},_immediateValueChanged:function(){this.dragging?this.fire("immediate-value-change"):this.value=this.immediateValue},_secondaryProgressChanged:function(){this.secondaryProgress=this._clampValue(this.secondaryProgress)},_expandKnob:function(){this._setExpand(!0)},_resetKnob:function(){this.cancelDebouncer("expandKnob"),this._setExpand(!1)},_positionKnob:function(t){this._setImmediateValue(this._calcStep(this._calcKnobPosition(t))),this._setRatio(this._calcRatio(this.immediateValue)),this.$.sliderKnob.style.left=100*this.ratio+"%",this.dragging&&(this._knobstartx=this.ratio*this._w,this.translate3d(0,0,0,this.$.sliderKnob))},_calcKnobPosition:function(t){return(this.max-this.min)*t+this.min},_onTrack:function(t){switch(t.stopPropagation(),t.detail.state){case"start":this._trackStart(t);break;case"track":this._trackX(t);break;case"end":this._trackEnd()}},_trackStart:function(t){this._w=this.$.sliderBar.offsetWidth,this._x=this.ratio*this._w,this._startx=this._x,this._knobstartx=this._startx,this._minx=-this._startx,this._maxx=this._w-this._startx,this.$.sliderKnob.classList.add("dragging"),this._setDragging(!0)},_trackX:function(t){this.dragging||this._trackStart(t);var e=Math.min(this._maxx,Math.max(this._minx,t.detail.dx));this._x=this._startx+e;var i=this._calcStep(this._calcKnobPosition(this._x/this._w));this._setImmediateValue(i);var s=this._calcRatio(this.immediateValue)*this._w-this._knobstartx;this.translate3d(s+"px",0,0,this.$.sliderKnob)},_trackEnd:function(){var t=this.$.sliderKnob.style;this.$.sliderKnob.classList.remove("dragging"),this._setDragging(!1),this._resetKnob(),this.value=this.immediateValue,t.transform=t.webkitTransform="",this.fire("change")},_knobdown:function(t){this._expandKnob(),t.preventDefault(),this.focus()},_bardown:function(t){this._w=this.$.sliderBar.offsetWidth;var e=this.$.sliderBar.getBoundingClientRect(),i=(t.detail.x-e.left)/this._w,s=this.ratio;this._setTransiting(!0),this._positionKnob(i),this.debounce("expandKnob",this._expandKnob,60),s===this.ratio&&this._setTransiting(!1),this.async(function(){this.fire("change")}),t.preventDefault(),this.focus()},_knobTransitionEnd:function(t){t.target===this.$.sliderKnob&&this._setTransiting(!1)},_updateMarkers:function(t,e,i,s){s||this._setMarkers([]);var a=Math.round((i-e)/this.step);a>t&&(a=t),this._setMarkers(new Array(a))},_mergeClasses:function(t){return Object.keys(t).filter(function(e){return t[e]}).join(" ")},_getClassNames:function(){return this._mergeClasses({disabled:this.disabled,pin:this.pin,snaps:this.snaps,ring:this.immediateValue<=this.min,expand:this.expand,dragging:this.dragging,transiting:this.transiting,editable:this.editable})},_incrementKey:function(t){this.disabled||("end"===t.detail.key?this.value=this.max:this.increment(),this.fire("change"))},_decrementKey:function(t){this.disabled||("home"===t.detail.key?this.value=this.min:this.decrement(),this.fire("change"))},_changeValue:function(t){this.value=t.target.value,this.fire("change")},_inputKeyDown:function(t){t.stopPropagation()},_createRipple:function(){return this._rippleContainer=this.$.sliderKnob,Polymer.PaperInkyFocusBehaviorImpl._createRipple.call(this)},_focusedChanged:function(t){t&&this.ensureRipple(),this.hasRipple()&&(t?this._ripple.style.display="":this._ripple.style.display="none",this._ripple.holdDown=t)}})</script></dom-module><dom-module id="state-card-input_slider" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>paper-slider{margin-left:16px}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><paper-slider min="[[min]]" max="[[max]]" value="{{value}}" step="[[step]]" pin="" on-change="selectedValueChanged" on-tap="stopPropagation"></paper-slider></div></template></dom-module><script>Polymer({is:"state-card-input_slider",properties:{hass:{type:Object},inDialog:{type:Boolean,value:!1},stateObj:{type:Object,observer:"stateObjectChanged"},min:{type:Number},max:{type:Number},step:{type:Number},value:{type:Number}},stateObjectChanged:function(t){this.value=Number(t.state),this.min=Number(t.attributes.min),this.max=Number(t.attributes.max),this.step=Number(t.attributes.step)},selectedValueChanged:function(){this.value!==Number(this.stateObj.state)&&this.hass.serviceActions.callService("input_slider","select_value",{value:this.value,entity_id:this.stateObj.entityId})},stopPropagation:function(t){t.stopPropagation()}})</script><dom-module id="state-card-media_player" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>:host{line-height:1.5}.state{@apply(--paper-font-common-nowrap);@apply(--paper-font-body1);margin-left:16px;text-align:right}.main-text{@apply(--paper-font-common-nowrap);color:var(--primary-text-color);text-transform:capitalize}.main-text[take-height]{line-height:40px}.secondary-text{@apply(--paper-font-common-nowrap);color:var(--secondary-text-color)}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><div class="state"><div class="main-text" take-height$="[[!secondaryText]]">[[computePrimaryText(stateObj, isPlaying)]]</div><div class="secondary-text">[[secondaryText]]</div></div></div></template></dom-module><script>Polymer({PLAYING_STATES:["playing","paused"],is:"state-card-media_player",properties:{inDialog:{type:Boolean,value:!1},stateObj:{type:Object},isPlaying:{type:Boolean,computed:"computeIsPlaying(stateObj)"},secondaryText:{type:String,computed:"computeSecondaryText(stateObj)"}},computeIsPlaying:function(t){return this.PLAYING_STATES.indexOf(t.state)!==-1},computePrimaryText:function(t,e){return e?t.attributes.media_title:t.stateDisplay},computeSecondaryText:function(t){var e;return"music"===t.attributes.media_content_type?t.attributes.media_artist:"tvshow"===t.attributes.media_content_type?(e=t.attributes.media_series_title,t.attributes.media_season&&t.attributes.media_episode&&(e+=" S"+t.attributes.media_season+"E"+t.attributes.media_episode),e):t.attributes.app_name?t.attributes.app_name:""}})</script><dom-module id="state-card-scene" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>paper-button{color:var(--default-primary-color);font-weight:500;top:3px;height:37px;margin-right:-.57em}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><paper-button on-tap="activateScene">ACTIVATE</paper-button></div></template></dom-module><script>Polymer({is:"state-card-scene",properties:{hass:{type:Object},inDialog:{type:Boolean,value:!1},stateObj:{type:Object}},activateScene:function(t){t.stopPropagation(),this.hass.serviceActions.callTurnOn(this.stateObj.entityId)}})</script><dom-module id="state-card-script" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>paper-button{color:var(--default-primary-color);font-weight:500;top:3px;height:37px;margin-right:-.57em}ha-entity-toggle{margin-left:16px}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><template is="dom-if" if="[[stateObj.attributes.can_cancel]]"><ha-entity-toggle state-obj="[[stateObj]]" hass="[[hass]]"></ha-entity-toggle></template><template is="dom-if" if="[[!stateObj.attributes.can_cancel]]"><paper-button on-tap="fireScript">ACTIVATE</paper-button></template></div></template></dom-module><script>Polymer({is:"state-card-script",properties:{inDialog:{type:Boolean,value:!1},stateObj:{type:Object}},fireScript:function(t){t.stopPropagation(),this.hass.serviceActions.callTurnOn(this.stateObj.entityId)}})</script><dom-module id="state-card-toggle" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>ha-entity-toggle{margin-left:16px}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><ha-entity-toggle state-obj="[[stateObj]]" hass="[[hass]]"></ha-entity-toggle></div></template></dom-module><script>Polymer({is:"state-card-toggle",properties:{hass:{type:Object},inDialog:{type:Boolean,value:!1},stateObj:{type:Object}}})</script><dom-module id="state-card-weblink" assetpath="state-summary/"><template><style>:host{display:block}.name{@apply(--paper-font-common-nowrap);@apply(--paper-font-body1);color:var(--primary-color);text-transform:capitalize;line-height:40px;margin-left:16px}</style><state-badge state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-badge><a href$="[[stateObj.state]]" target="_blank" class="name" id="link">[[stateObj.entityDisplay]]</a></template></dom-module><script>Polymer({is:"state-card-weblink",properties:{inDialog:{type:Boolean,value:!1},stateObj:{type:Object}},listeners:{tap:"onTap"},onTap:function(t){t.stopPropagation(),t.target!==this.$.link&&window.open(this.stateObj.state,"_blank")}})</script><script>Polymer({is:"state-card-content",properties:{hass:{type:Object},inDialog:{type:Boolean,value:!1},stateObj:{type:Object}},observers:["inputChanged(hass, inDialog, stateObj)"],inputChanged:function(t,e,s){s&&window.hassUtil.dynamicContentUpdater(this,"STATE-CARD-"+window.hassUtil.stateCardType(this.hass,s).toUpperCase(),{hass:t,stateObj:s,inDialog:e})}})</script><dom-module id="ha-entities-card" assetpath="cards/"><template><style is="custom-style" include="iron-flex"></style><style>.states{padding-bottom:16px}.state{padding:4px 16px;cursor:pointer}.header{@apply(--paper-font-headline);line-height:40px;color:var(--primary-text-color);padding:20px 16px 12px}.header .name{@apply(--paper-font-common-nowrap)}ha-entity-toggle{margin-left:16px}.header-more-info{cursor:pointer}</style><ha-card><div class$="[[computeTitleClass(groupEntity)]]" on-tap="entityTapped"><div class="flex name">[[computeTitle(states, groupEntity)]]</div><template is="dom-if" if="[[showGroupToggle(groupEntity, states)]]"><ha-entity-toggle hass="[[hass]]" state-obj="[[groupEntity]]"></ha-entity-toggle></template></div><div class="states"><template is="dom-repeat" items="[[states]]"><div class="state" on-tap="entityTapped"><state-card-content hass="[[hass]]" class="state-card" state-obj="[[item]]"></state-card-content></div></template></div></ha-card></template></dom-module><script>Polymer({is:"ha-entities-card",properties:{hass:{type:Object},states:{type:Array},groupEntity:{type:Object}},computeTitle:function(t,e){return e?e.entityDisplay:t[0].domain.replace(/_/g," ")},computeTitleClass:function(t){var e="header horizontal layout center ";return t&&(e+="header-more-info"),e},entityTapped:function(t){var e;t.target.classList.contains("paper-toggle-button")||t.target.classList.contains("paper-icon-button")||!t.model&&!this.groupEntity||(t.stopPropagation(),e=t.model?t.model.item.entityId:this.groupEntity.entityId,this.async(function(){this.hass.moreInfoActions.selectEntity(e)}.bind(this),1))},showGroupToggle:function(t,e){var n;return!(!t||!e||"hidden"===t.attributes.control||"on"!==t.state&&"off"!==t.state)&&(n=e.reduce(function(t,e){return t+window.hassUtil.canToggle(this.hass,e.entityId)},0),n>1)}})</script><dom-module id="ha-introduction-card" assetpath="cards/"><template><style>:host{@apply(--paper-font-body1)}a{color:var(--dark-primary-color)}ul{margin:8px;padding-left:16px}li{margin-bottom:8px}.content{padding:0 16px 16px}.install{display:block;line-height:1.5em;margin-top:8px;margin-bottom:16px}</style><ha-card header="Welcome Home!"><div class="content"><template is="dom-if" if="[[hass.demo]]">To install Home Assistant, run:<br><code class="install">pip3 install homeassistant<br>hass --open-ui</code></template>Here are some resources to get started.<ul><template is="dom-if" if="[[hass.demo]]"><li><a href="https://home-assistant.io/getting-started/">Home Assistant website</a></li><li><a href="https://home-assistant.io/getting-started/">Installation instructions</a></li><li><a href="https://home-assistant.io/getting-started/troubleshooting/">Troubleshooting your installation</a></li></template><li><a href="https://home-assistant.io/getting-started/configuration/" target="_blank">Configuring Home Assistant</a></li><li><a href="https://home-assistant.io/components/" target="_blank">Available components</a></li><li><a href="https://home-assistant.io/getting-started/troubleshooting-configuration/" target="_blank">Troubleshooting your configuration</a></li><li><a href="https://home-assistant.io/help/" target="_blank">Ask community for help</a></li></ul><template is="dom-if" if="[[showHideInstruction]]">To remove this card, edit your config in <code>configuration.yaml</code> and disable the <code>introduction</code> component.</template></div></ha-card></template></dom-module><script>Polymer({is:"ha-introduction-card",properties:{hass:{type:Object},showHideInstruction:{type:Boolean,value:!0}}})</script><dom-module id="ha-media_player-card" assetpath="cards/"><template><style include="paper-material iron-flex iron-flex-alignment iron-positioning">:host{display:block;position:relative;font-size:0;border-radius:2px;overflow:hidden}.banner{position:relative;background-color:#fff;border-top-left-radius:2px;border-top-right-radius:2px}.banner:before{display:block;content:"";width:100%;padding-top:56%;transition:padding-top .8s}.banner.no-cover{background-position:center center;background-image:url(/static/images/card_media_player_bg.png);background-repeat:no-repeat;background-color:var(--primary-color)}.banner.content-type-music:before{padding-top:100%}.banner.no-cover:before{padding-top:88px}.banner>.cover{position:absolute;top:0;left:0;right:0;bottom:0;border-top-left-radius:2px;border-top-right-radius:2px;background-position:center center;background-size:cover;transition:opacity .8s;opacity:1}.banner.is-off>.cover{opacity:0}.banner>.caption{@apply(--paper-font-caption);position:absolute;left:0;right:0;bottom:0;background-color:rgba(0,0,0,var(--dark-secondary-opacity));padding:8px 16px;font-size:14px;font-weight:500;color:#fff;transition:background-color .5s}.banner.is-off>.caption{background-color:initial}.banner>.caption .title{@apply(--paper-font-common-nowrap);font-size:1.2em;margin:8px 0 4px}.progress{width:100%;--paper-progress-active-color:var(--accent-color);--paper-progress-container-color:#FFF}.controls{position:relative;@apply(--paper-font-body1);padding:8px;border-bottom-left-radius:2px;border-bottom-right-radius:2px;background-color:#fff}.controls paper-icon-button{width:44px;height:44px}paper-icon-button{opacity:var(--dark-primary-opacity)}paper-icon-button[disabled]{opacity:var(--dark-disabled-opacity)}paper-icon-button.primary{width:56px!important;height:56px!important;background-color:var(--primary-color);color:#fff;border-radius:50%;padding:8px;transition:background-color .5s}paper-icon-button.primary[disabled]{background-color:rgba(0,0,0,var(--dark-disabled-opacity))}[invisible]{visibility:hidden!important}</style><div class$="[[computeBannerClasses(playerObj)]]"><div class="cover" id="cover"></div><div class="caption">[[stateObj.entityDisplay]]<div class="title">[[playerObj.primaryText]]</div>[[playerObj.secondaryText]]<br></div></div><paper-progress max="[[stateObj.attributes.media_duration]]" value="[[playbackPosition]]" hidden$="[[computeHideProgress(playerObj)]]" class="progress"></paper-progress><div class="controls layout horizontal justified"><paper-icon-button icon="mdi:power" on-tap="handleTogglePower" invisible$="[[computeHidePowerButton(playerObj)]]" class="self-center secondary"></paper-icon-button><div><paper-icon-button icon="mdi:skip-previous" invisible$="[[!playerObj.supportsPreviousTrack]]" disabled="[[playerObj.isOff]]" on-tap="handlePrevious"></paper-icon-button><paper-icon-button class="primary" icon="[[computePlaybackControlIcon(playerObj)]]" invisible$="[[!computePlaybackControlIcon(playerObj)]]" disabled="[[playerObj.isOff]]" on-tap="handlePlaybackControl"></paper-icon-button><paper-icon-button icon="mdi:skip-next" invisible$="[[!playerObj.supportsNextTrack]]" disabled="[[playerObj.isOff]]" on-tap="handleNext"></paper-icon-button></div><paper-icon-button icon="mdi:dots-vertical" on-tap="handleOpenMoreInfo" class="self-center secondary"></paper-icon-button></div></template></dom-module><script>Polymer({is:"ha-media_player-card",properties:{hass:{type:Object},stateObj:{type:Object},playerObj:{type:Object,computed:"computePlayerObj(stateObj)",observer:"playerObjChanged"},playbackControlIcon:{type:String,computed:"computePlaybackControlIcon(playerObj)"},playbackPosition:{type:Number},elevation:{type:Number,value:1,reflectToAttribute:!0}},created:function(){this.updatePlaybackPosition=this.updatePlaybackPosition.bind(this)},playerObjChanged:function(t){var e=t.stateObj.attributes.entity_picture;e?this.$.cover.style.backgroundImage="url("+e+")":this.$.cover.style.backgroundImage="",t.isPlaying?(this._positionTracking||(this._positionTracking=setInterval(this.updatePlaybackPosition,1e3)),this.updatePlaybackPosition()):this._positionTracking&&(clearInterval(this._positionTracking),this._positionTracking=null,this.playbackPosition=0)},updatePlaybackPosition:function(){this.playbackPosition=this.playerObj.currentProgress},computeBannerClasses:function(t){var e="banner";return t.isOff||t.isIdle?e+=" is-off no-cover":t.stateObj.attributes.entity_picture?"music"===t.stateObj.attributes.media_content_type&&(e+=" content-type-music"):e+=" no-cover",e},computeHideProgress:function(t){return!t.showProgress},computeHidePowerButton:function(t){return t.isOff?!t.supportsTurnOn:!t.supportsTurnOff},computePlayerObj:function(t){return t.domainModel(this.hass)},computePlaybackControlIcon:function(t){return t.isPlaying?t.supportsPause?"mdi:pause":"mdi:stop":t.isPaused||t.isOff||t.isIdle?t.supportsPlay?"mdi:play":null:""},handleNext:function(t){t.stopPropagation(),this.playerObj.nextTrack()},handleOpenMoreInfo:function(t){t.stopPropagation(),this.async(function(){this.hass.moreInfoActions.selectEntity(this.stateObj.entityId)},1)},handlePlaybackControl:function(t){t.stopPropagation(),this.playerObj.mediaPlayPause()},handlePrevious:function(t){t.stopPropagation(),this.playerObj.previousTrack()},handleTogglePower:function(t){t.stopPropagation(),this.playerObj.togglePower()}})</script><dom-module id="ha-persistent_notification-card" assetpath="cards/"><template><style>:host{@apply(--paper-font-body1)}.content{padding:0 16px 16px}paper-button{margin:8px;font-weight:500}</style><ha-card header="[[computeTitle(stateObj)]]"><div id="pnContent" class="content"></div><paper-button on-tap="dismissTap">DISMISS</paper-button></ha-card></template></dom-module><script>Polymer({is:"ha-persistent_notification-card",properties:{hass:{type:Object},stateObj:{type:Object},scriptLoaded:{type:Boolean,value:!1}},observers:["computeContent(stateObj, scriptLoaded)"],computeTitle:function(t){return t.attributes.title||t.entityDisplay},loadScript:function(){var t=function(){this.scriptLoaded=!0}.bind(this),e=function(){console.error("Micromarkdown was not loaded.")};this.importHref("/static/micromarkdown-js.html",t,e)},computeContent:function(t,e){var i="",n="";e&&(i=this.$.pnContent,n=window.micromarkdown.parse(t.state),i.innerHTML=n)},ready:function(){this.loadScript()},dismissTap:function(t){t.preventDefault(),this.hass.entityActions.delete(this.stateObj)}})</script><script>Polymer({is:"ha-card-chooser",properties:{cardData:{type:Object,observer:"cardDataChanged"}},cardDataChanged:function(a){a&&window.hassUtil.dynamicContentUpdater(this,"HA-"+a.cardType.toUpperCase()+"-CARD",a)}})</script><dom-module id="ha-cards" assetpath="components/"><template><style is="custom-style" include="iron-flex iron-flex-factors"></style><style>:host{display:block;padding-top:8px;padding-right:8px}.badges{font-size:85%;text-align:center}.column{max-width:500px;overflow-x:hidden}.zone-card{margin-left:8px;margin-bottom:8px}@media (max-width:500px){:host{padding-right:0}.zone-card{margin-left:0}}@media (max-width:599px){.column{max-width:600px}}</style><div class="main"><template is="dom-if" if="[[cards.badges]]"><div class="badges"><template is="dom-if" if="[[cards.demo]]"><ha-demo-badge></ha-demo-badge></template><ha-badges-card states="[[cards.badges]]" hass="[[hass]]"></ha-badges-card></div></template><div class="horizontal layout center-justified"><template is="dom-repeat" items="[[cards.columns]]" as="column"><div class="column flex-1"><template is="dom-repeat" items="[[column]]" as="card"><div class="zone-card"><ha-card-chooser card-data="[[card]]" hass="[[hass]]"></ha-card-chooser></div></template></div></template></div></div></template></dom-module><script>!function(){"use strict";function t(t){return t in o?o[t]:30}function e(t){return"group"===t.domain?t.attributes.order:t.entityDisplay.toLowerCase()}var n={camera:4,media_player:3,persistent_notification:0},o={configurator:-20,persistent_notification:-15,group:-10,a:-1,updater:0,sun:1,device_tracker:2,alarm_control_panel:3,sensor:5,binary_sensor:6};Polymer({is:"ha-cards",properties:{hass:{type:Object},showIntroduction:{type:Boolean,value:!1},columns:{type:Number,value:2},states:{type:Object},panelVisible:{type:Boolean},viewVisible:{type:Boolean},cards:{type:Object}},observers:["updateCards(columns, states, showIntroduction, panelVisible, viewVisible)"],updateCards:function(t,e,n,o,r){o&&r&&this.debounce("updateCards",function(){this.panelVisible&&this.viewVisible&&(this.cards=this.computeCards(t,e,n))}.bind(this))},computeCards:function(o,r,s){function i(t){return t.filter(function(t){return!(t.entityId in h)})}function a(t){var e=0;for(p=e;p<y.length;p++){if(y[p]<5){e=p;break}y[p]<y[e]&&(e=p)}return y[e]+=t,e}function u(t,e,o){var r,s,i,u;0!==e.length&&(r=[],s=[],i=0,e.forEach(function(t){t.domain in n?(r.push(t),i+=n[t.domain]):(s.push(t),i++)}),i+=s.length>1,u=a(i),s.length>0&&f.columns[u].push({hass:d,cardType:"entities",states:s,groupEntity:o||!1}),r.forEach(function(t){f.columns[u].push({hass:d,cardType:t.domain,stateObj:t})}))}var c,p,d=this.hass,l=r.groupBy(function(t){return t.domain}),h={},f={demo:!1,badges:[],columns:[]},y=[];for(p=0;p<o;p++)f.columns.push([]),y.push(0);return s&&f.columns[a(5)].push({hass:d,cardType:"introduction",showHideInstruction:r.size>0&&!d.demo}),c=this.hass.util.expandGroup,l.keySeq().sortBy(function(e){return t(e)}).forEach(function(n){var o;return"a"===n?void(f.demo=!0):(o=t(n),void(o>=0&&o<10?f.badges.push.apply(f.badges,i(l.get(n)).sortBy(e).toArray()):"group"===n?l.get(n).sortBy(e).forEach(function(t){var e=c(t,r);e.forEach(function(t){h[t.entityId]=!0}),u(t.entityId,e.toArray(),t)}):u(n,i(l.get(n)).sortBy(e).toArray())))}),f.columns=f.columns.filter(function(t){return t.length>0}),f}})}()</script><dom-module id="partial-cards" assetpath="layouts/"><template><style include="iron-flex iron-positioning ha-style">:host{-ms-user-select:none;-webkit-user-select:none;-moz-user-select:none}app-header-layout{background-color:#E5E5E5}paper-tabs{margin-left:12px;--paper-tabs-selection-bar-color:#FFF;text-transform:uppercase}</style><app-header-layout has-scrolling-region="" id="layout"><app-header effects="waterfall" condenses="" fixed=""><app-toolbar><ha-menu-button narrow="[[narrow]]" show-menu="[[showMenu]]"></ha-menu-button><div main-title="">[[computeTitle(views, locationName)]]</div><paper-icon-button icon="mdi:microphone" hidden$="[[!canListen]]" on-tap="handleListenClick"></paper-icon-button></app-toolbar><div sticky="" hidden$="[[!views.length]]"><paper-tabs scrollable="" selected="[[currentView]]" attr-for-selected="data-entity" on-iron-select="handleViewSelected"><paper-tab data-entity="" on-tap="scrollToTop">[[locationName]]</paper-tab><template is="dom-repeat" items="[[views]]"><paper-tab data-entity$="[[item.entityId]]" on-tap="scrollToTop"><template is="dom-if" if="[[item.attributes.icon]]"><iron-icon icon="[[item.attributes.icon]]"></iron-icon></template><template is="dom-if" if="[[!item.attributes.icon]]">[[item.entityDisplay]]</template></paper-tab></template></paper-tabs></div></app-header><iron-pages attr-for-selected="data-view" selected="[[currentView]]" selected-attribute="view-visible"><ha-cards data-view="" show-introduction="[[computeShowIntroduction(currentView, introductionLoaded, states)]]" states="[[states]]" columns="[[_columns]]" hass="[[hass]]" panel-visible="[[panelVisible]]"></ha-cards><template is="dom-repeat" items="[[views]]"><ha-cards data-view$="[[item.entityId]]" show-introduction="[[computeShowIntroduction(currentView, introductionLoaded, states)]]" states="[[states]]" columns="[[_columns]]" hass="[[hass]]" panel-visible="[[panelVisible]]"></ha-cards></template></iron-pages></app-header-layout></template></dom-module><script>Polymer({is:"partial-cards",behaviors:[window.hassBehavior],properties:{hass:{type:Object},narrow:{type:Boolean,value:!1},showMenu:{type:Boolean,value:!1,observer:"handleWindowChange"},panelVisible:{type:Boolean,value:!1},_columns:{type:Number,value:1},canListen:{type:Boolean,bindNuclear:function(e){return[e.voiceGetters.isVoiceSupported,e.configGetters.isComponentLoaded("conversation"),function(e,t){return e&&t}]}},introductionLoaded:{type:Boolean,bindNuclear:function(e){return e.configGetters.isComponentLoaded("introduction")}},locationName:{type:String,bindNuclear:function(e){return e.configGetters.locationName}},currentView:{type:String,bindNuclear:function(e){return[e.viewGetters.currentView,function(e){return e||""}]}},views:{type:Array,bindNuclear:function(e){return[e.viewGetters.views,function(e){return e.valueSeq().sortBy(function(e){return e.attributes.order}).toArray()}]}},states:{type:Object,bindNuclear:function(e){return e.viewGetters.currentViewEntities}}},created:function(){this.handleWindowChange=this.handleWindowChange.bind(this),this.mqls=[300,600,900,1200].map(function(e){var t=window.matchMedia("(min-width: "+e+"px)");return t.addListener(this.handleWindowChange),t}.bind(this))},detached:function(){this.mqls.forEach(function(e){e.removeListener(this.handleWindowChange)})},handleWindowChange:function(){var e=this.mqls.reduce(function(e,t){return e+t.matches},0);this._columns=Math.max(1,e-(!this.narrow&&this.showMenu))},scrollToTop:function(){var e=0,t=this.$.layout.header.scrollTarget,n=function(e,t,n,i){return e/=i,-n*e*(e-2)+t},i=Math.random(),o=200,r=Date.now(),a=t.scrollTop,s=e-a;this._currentAnimationId=i,function c(){var u=Date.now(),l=u-r;l>o?t.scrollTop=e:this._currentAnimationId===i&&(t.scrollTop=n(l,a,s,o),requestAnimationFrame(c.bind(this)))}.call(this)},handleListenClick:function(){this.hass.voiceActions.listen()},handleViewSelected:function(e){var t=e.detail.item.getAttribute("data-entity")||null,n=this.currentView||null;t!==n&&this.async(function(){this.hass.viewActions.selectView(t)}.bind(this),0)},computeTitle:function(e,t){return e.length>0?"Home Assistant":t},computeShowIntroduction:function(e,t,n){return""===e&&(t||0===n.size)}})</script><style is="custom-style">html{font-size:14px;--dark-primary-color:#0288D1;--default-primary-color:#03A9F4;--primary-color:#03A9F4;--light-primary-color:#B3E5FC;--text-primary-color:#ffffff;--accent-color:#FF9800;--primary-background-color:#ffffff;--primary-text-color:#212121;--secondary-text-color:#727272;--disabled-text-color:#bdbdbd;--divider-color:#B6B6B6;--paper-toggle-button-checked-ink-color:#039be5;--paper-toggle-button-checked-button-color:#039be5;--paper-toggle-button-checked-bar-color:#039be5;--paper-slider-knob-color:var(--primary-color);--paper-slider-knob-start-color:var(--primary-color);--paper-slider-pin-color:var(--primary-color);--paper-slider-active-color:var(--primary-color);--paper-slider-secondary-color:var(--light-primary-color);--paper-slider-container-color:var(--divider-color);--google-red-500:#db4437;--google-blue-500:#4285f4;--google-green-500:#0f9d58;--google-yellow-500:#f4b400;--paper-grey-50:#fafafa;--paper-green-400:#66bb6a;--paper-blue-400:#42a5f5;--paper-orange-400:#ffa726;--dark-divider-opacity:0.12;--dark-disabled-opacity:0.38;--dark-secondary-opacity:0.54;--dark-primary-opacity:0.87;--light-divider-opacity:0.12;--light-disabled-opacity:0.3;--light-secondary-opacity:0.7;--light-primary-opacity:1.0}</style><dom-module id="ha-style" assetpath="resources/"><template><style>:host{@apply(--paper-font-body1)}app-header,app-toolbar{background-color:var(--primary-color);font-weight:400;color:#fff}app-toolbar ha-menu-button+[main-title]{margin-left:24px}h1{@apply(--paper-font-title)}</style></template></dom-module><dom-module id="partial-panel-resolver" assetpath="layouts/"><template><style include="iron-flex ha-style">[hidden]{display:none!important}.placeholder{height:100%}.layout{height:calc(100% - 64px)}</style><div hidden$="[[resolved]]" class="placeholder"><app-toolbar><ha-menu-button narrow="[[narrow]]" show-menu="[[showMenu]]"></ha-menu-button></app-toolbar><div class="layout horizontal center-center"><template is="dom-if" if="[[!errorLoading]]"><paper-spinner active=""></paper-spinner></template><template is="dom-if" if="[[errorLoading]]">Error loading panel :(</template></div></div><span id="panel" hidden$="[[!resolved]]"></span></template></dom-module><script>Polymer({is:"partial-panel-resolver",behaviors:[window.hassBehavior],properties:{hass:{type:Object,observer:"updateAttributes"},narrow:{type:Boolean,value:!1,observer:"updateAttributes"},showMenu:{type:Boolean,value:!1,observer:"updateAttributes"},resolved:{type:Boolean,value:!1},errorLoading:{type:Boolean,value:!1},panel:{type:Object,bindNuclear:function(e){return e.navigationGetters.activePanel},observer:"panelChanged"}},panelChanged:function(e){return e?(this.resolved=!1,this.errorLoading=!1,void this.importHref(e.get("url"),function(){window.hassUtil.dynamicContentUpdater(this.$.panel,"ha-panel-"+e.get("component_name"),{hass:this.hass,narrow:this.narrow,showMenu:this.showMenu,panel:e.toJS()}),this.resolved=!0}.bind(this),function(){this.errorLoading=!0}.bind(this),!0)):void(this.$.panel.lastChild&&this.$.panel.removeChild(this.$.panel.lastChild))},updateAttributes:function(){var e=Polymer.dom(this.$.panel).lastChild;e&&(e.hass=this.hass,e.narrow=this.narrow,e.showMenu=this.showMenu)}})</script><dom-module id="paper-toast" assetpath="../bower_components/paper-toast/"><template><style>:host{display:block;position:fixed;background-color:var(--paper-toast-background-color,#323232);color:var(--paper-toast-color,#f1f1f1);min-height:48px;min-width:288px;padding:16px 24px;box-sizing:border-box;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);border-radius:2px;margin:12px;font-size:14px;cursor:default;-webkit-transition:-webkit-transform .3s,opacity .3s;transition:transform .3s,opacity .3s;opacity:0;-webkit-transform:translateY(100px);transform:translateY(100px);@apply(--paper-font-common-base)}:host(.capsule){border-radius:24px}:host(.fit-bottom){width:100%;min-width:0;border-radius:0;margin:0}:host(.paper-toast-open){opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}</style><span id="label">{{text}}</span><content></content></template><script>!function(){var e=null;Polymer({is:"paper-toast",behaviors:[Polymer.IronOverlayBehavior],properties:{fitInto:{type:Object,value:window,observer:"_onFitIntoChanged"},horizontalAlign:{type:String,value:"left"},verticalAlign:{type:String,value:"bottom"},duration:{type:Number,value:3e3},text:{type:String,value:""},noCancelOnOutsideClick:{type:Boolean,value:!0},noAutoFocus:{type:Boolean,value:!0}},listeners:{transitionend:"__onTransitionEnd"},get visible(){return Polymer.Base._warn("`visible` is deprecated, use `opened` instead"),this.opened},get _canAutoClose(){return this.duration>0&&this.duration!==1/0},created:function(){this._autoClose=null,Polymer.IronA11yAnnouncer.requestAvailability()},show:function(e){"string"==typeof e&&(e={text:e});for(var t in e)0===t.indexOf("_")?Polymer.Base._warn('The property "'+t+'" is private and was not set.'):t in this?this[t]=e[t]:Polymer.Base._warn('The property "'+t+'" is not valid.');this.open()},hide:function(){this.close()},__onTransitionEnd:function(e){e&&e.target===this&&"opacity"===e.propertyName&&(this.opened?this._finishRenderOpened():this._finishRenderClosed())},_openedChanged:function(){null!==this._autoClose&&(this.cancelAsync(this._autoClose),this._autoClose=null),this.opened?(e&&e!==this&&e.close(),e=this,this.fire("iron-announce",{text:this.text}),this._canAutoClose&&(this._autoClose=this.async(this.close,this.duration))):e===this&&(e=null),Polymer.IronOverlayBehaviorImpl._openedChanged.apply(this,arguments)},_renderOpened:function(){this.classList.add("paper-toast-open")},_renderClosed:function(){this.classList.remove("paper-toast-open")},_onFitIntoChanged:function(e){this.positionTarget=e}})}()</script></dom-module><dom-module id="notification-manager" assetpath="managers/"><template><style>paper-toast{z-index:1}</style><paper-toast id="toast" text="{{text}}" no-cancel-on-outside-click="[[neg]]"></paper-toast><paper-toast id="connToast" duration="0" text="Connection lost. Reconnecting…" opened="[[!isStreaming]]"></paper-toast></template></dom-module><script>Polymer({is:"notification-manager",behaviors:[window.hassBehavior],properties:{hass:{type:Object},isStreaming:{type:Boolean,bindNuclear:function(t){return t.streamGetters.isStreamingEvents}},neg:{type:Boolean,value:!1},text:{type:String,bindNuclear:function(t){return t.notificationGetters.lastNotificationMessage},observer:"showNotification"},toastClass:{type:String,value:""}},created:function(){this.handleWindowChange=this.handleWindowChange.bind(this),this._mediaq=window.matchMedia("(max-width: 599px)"),this._mediaq.addListener(this.handleWindowChange)},attached:function(){this.handleWindowChange(this._mediaq)},detached:function(){this._mediaq.removeListener(this.handleWindowChange)},handleWindowChange:function(t){this.$.toast.classList.toggle("fit-bottom",t.matches),this.$.connToast.classList.toggle("fit-bottom",t.matches)},showNotification:function(t){t&&this.$.toast.show()}})</script><script>Polymer.PaperDialogBehaviorImpl={hostAttributes:{role:"dialog",tabindex:"-1"},properties:{modal:{type:Boolean,value:!1}},observers:["_modalChanged(modal, _readied)"],listeners:{tap:"_onDialogClick"},ready:function(){this.__prevNoCancelOnOutsideClick=this.noCancelOnOutsideClick,this.__prevNoCancelOnEscKey=this.noCancelOnEscKey,this.__prevWithBackdrop=this.withBackdrop},_modalChanged:function(i,e){e&&(i?(this.__prevNoCancelOnOutsideClick=this.noCancelOnOutsideClick,this.__prevNoCancelOnEscKey=this.noCancelOnEscKey,this.__prevWithBackdrop=this.withBackdrop,this.noCancelOnOutsideClick=!0,this.noCancelOnEscKey=!0,this.withBackdrop=!0):(this.noCancelOnOutsideClick=this.noCancelOnOutsideClick&&this.__prevNoCancelOnOutsideClick,this.noCancelOnEscKey=this.noCancelOnEscKey&&this.__prevNoCancelOnEscKey,this.withBackdrop=this.withBackdrop&&this.__prevWithBackdrop))},_updateClosingReasonConfirmed:function(i){this.closingReason=this.closingReason||{},this.closingReason.confirmed=i},_onDialogClick:function(i){for(var e=Polymer.dom(i).path,o=0;o<e.indexOf(this);o++){var t=e[o];if(t.hasAttribute&&(t.hasAttribute("dialog-dismiss")||t.hasAttribute("dialog-confirm"))){this._updateClosingReasonConfirmed(t.hasAttribute("dialog-confirm")),this.close(),i.stopPropagation();break}}}},Polymer.PaperDialogBehavior=[Polymer.IronOverlayBehavior,Polymer.PaperDialogBehaviorImpl]</script><dom-module id="paper-dialog-shared-styles" assetpath="../bower_components/paper-dialog-behavior/"><template><style>:host{display:block;margin:24px 40px;background:var(--paper-dialog-background-color,--primary-background-color);color:var(--paper-dialog-color,--primary-text-color);@apply(--paper-font-body1);@apply(--shadow-elevation-16dp);@apply(--paper-dialog)}:host>::content>*{margin-top:20px;padding:0 24px}:host>::content>.no-padding{padding:0}:host>::content>:first-child{margin-top:24px}:host>::content>:last-child{margin-bottom:24px}:host>::content h2{position:relative;margin:0;@apply(--paper-font-title);@apply(--paper-dialog-title)}:host>::content .buttons{position:relative;padding:8px 8px 8px 24px;margin:0;color:var(--paper-dialog-button-color,--primary-color);@apply(--layout-horizontal);@apply(--layout-end-justified)}</style></template></dom-module><dom-module id="paper-dialog" assetpath="../bower_components/paper-dialog/"><template><style include="paper-dialog-shared-styles"></style><content></content></template></dom-module><script>!function(){Polymer({is:"paper-dialog",behaviors:[Polymer.PaperDialogBehavior,Polymer.NeonAnimationRunnerBehavior],listeners:{"neon-animation-finish":"_onNeonAnimationFinish"},_renderOpened:function(){this.cancelAnimation(),this.playAnimation("entry")},_renderClosed:function(){this.cancelAnimation(),this.playAnimation("exit")},_onNeonAnimationFinish:function(){this.opened?this._finishRenderOpened():this._finishRenderClosed()}})}()</script><dom-module id="paper-dialog-scrollable" assetpath="../bower_components/paper-dialog-scrollable/"><template><style>:host{display:block;@apply(--layout-relative)}:host(.is-scrolled:not(:first-child))::before{content:'';position:absolute;top:0;left:0;right:0;height:1px;background:var(--divider-color)}:host(.can-scroll:not(.scrolled-to-bottom):not(:last-child))::after{content:'';position:absolute;bottom:0;left:0;right:0;height:1px;background:var(--divider-color)}.scrollable{padding:0 24px;@apply(--layout-scroll);@apply(--paper-dialog-scrollable)}.fit{@apply(--layout-fit)}</style><div id="scrollable" class="scrollable"><content></content></div></template></dom-module><script>Polymer({is:"paper-dialog-scrollable",properties:{dialogElement:{type:Object}},listeners:{"scrollable.scroll":"_scroll"},get scrollTarget(){return this.$.scrollable},ready:function(){this._ensureTarget()},attached:function(){this.classList.add("no-padding"),this._ensureTarget(),requestAnimationFrame(this._scroll.bind(this))},_scroll:function(){this.toggleClass("is-scrolled",this.scrollTarget.scrollTop>0),this.toggleClass("can-scroll",this.scrollTarget.offsetHeight<this.scrollTarget.scrollHeight),this.toggleClass("scrolled-to-bottom",this.scrollTarget.scrollTop+this.scrollTarget.offsetHeight>=this.scrollTarget.scrollHeight)},_ensureTarget:function(){this.dialogElement=this.dialogElement||Polymer.dom(this).parentNode,this.dialogElement&&this.dialogElement.behaviors&&this.dialogElement.behaviors.indexOf(Polymer.PaperDialogBehaviorImpl)>=0?(this.dialogElement.sizingTarget=this.scrollTarget,this.scrollTarget.classList.remove("fit")):this.dialogElement&&this.scrollTarget.classList.add("fit")}})</script><script>!function(){"use strict";Polymer.IronJsonpLibraryBehavior={properties:{libraryLoaded:{type:Boolean,value:!1,notify:!0,readOnly:!0},libraryErrorMessage:{type:String,value:null,notify:!0,readOnly:!0}},observers:["_libraryUrlChanged(libraryUrl)"],_libraryUrlChanged:function(r){this._isReady&&this.libraryUrl&&this._loadLibrary()},_libraryLoadCallback:function(r,i){r?(console.warn("Library load failed:",r.message),this._setLibraryErrorMessage(r.message)):(this._setLibraryErrorMessage(null),this._setLibraryLoaded(!0),this.notifyEvent&&this.fire(this.notifyEvent,i))},_loadLibrary:function(){r.require(this.libraryUrl,this._libraryLoadCallback.bind(this),this.callbackName)},ready:function(){this._isReady=!0,this.libraryUrl&&this._loadLibrary()}};var r={apiMap:{},require:function(r,t,e){var a=this.nameFromUrl(r);this.apiMap[a]||(this.apiMap[a]=new i(a,r,e)),this.apiMap[a].requestNotify(t)},nameFromUrl:function(r){return r.replace(/[\:\/\%\?\&\.\=\-\,]/g,"_")+"_api"}},i=function(r,i,t){if(this.notifiers=[],!t){if(!(i.indexOf(this.callbackMacro)>=0))return void(this.error=new Error("IronJsonpLibraryBehavior a %%callback%% parameter is required in libraryUrl"));t=r+"_loaded",i=i.replace(this.callbackMacro,t)}this.callbackName=t,window[this.callbackName]=this.success.bind(this),this.addScript(i)};i.prototype={callbackMacro:"%%callback%%",loaded:!1,addScript:function(r){var i=document.createElement("script");i.src=r,i.onerror=this.handleError.bind(this);var t=document.querySelector("script")||document.body;t.parentNode.insertBefore(i,t),this.script=i},removeScript:function(){this.script.parentNode&&this.script.parentNode.removeChild(this.script),this.script=null},handleError:function(r){this.error=new Error("Library failed to load"),this.notifyAll(),this.cleanup()},success:function(){this.loaded=!0,this.result=Array.prototype.slice.call(arguments),this.notifyAll(),this.cleanup()},cleanup:function(){delete window[this.callbackName]},notifyAll:function(){this.notifiers.forEach(function(r){r(this.error,this.result)}.bind(this)),this.notifiers=[]},requestNotify:function(r){this.loaded||this.error?r(this.error,this.result):this.notifiers.push(r)}}}()</script><script>Polymer({is:"iron-jsonp-library",behaviors:[Polymer.IronJsonpLibraryBehavior],properties:{libraryUrl:String,callbackName:String,notifyEvent:String}})</script><script>Polymer({is:"google-legacy-loader",behaviors:[Polymer.IronJsonpLibraryBehavior],properties:{libraryUrl:{type:String,value:"https://www.google.com/jsapi?callback=%%callback%%"},notifyEvent:{type:String,value:"api-load"}},get api(){return google}})</script><style>div.charts-tooltip{z-index:200!important}</style><script>Polymer({is:"state-history-chart-timeline",properties:{data:{type:Object,observer:"dataChanged"},isAttached:{type:Boolean,value:!1,observer:"dataChanged"}},created:function(){this.style.display="block"},attached:function(){this.isAttached=!0},dataChanged:function(){this.drawChart()},drawChart:function(){function t(t,e,n,i){var d=e.replace(/_/g," ");a.addRow([t,d,n,i])}var e,a,n,i,d,l=Polymer.dom(this),o=this.data;if(this.isAttached){for(;l.node.lastChild;)l.node.removeChild(l.node.lastChild);o&&0!==o.length&&(e=new window.google.visualization.Timeline(this),a=new window.google.visualization.DataTable,a.addColumn({type:"string",id:"Entity"}),a.addColumn({type:"string",id:"State"}),a.addColumn({type:"date",id:"Start"}),a.addColumn({type:"date",id:"End"}),n=new Date(o.reduce(function(t,e){return Math.min(t,e[0].lastChangedAsDate)},new Date)),i=new Date(n),i.setDate(i.getDate()+1),i>new Date&&(i=new Date),d=0,o.forEach(function(e){var a,n,l=null,o=null;0!==e.length&&(a=e[0].entityDisplay,e.forEach(function(e){null!==l&&e.state!==l?(n=e.lastChangedAsDate,t(a,l,o,n),l=e.state,o=n):null===l&&(l=e.state,o=e.lastChangedAsDate)}),t(a,l,o,i),d++)}),e.draw(a,{height:55+42*d,timeline:{showRowLabels:o.length>1},hAxis:{format:"H:mm"}}))}}})</script><script>!function(){"use strict";function t(t,e){var a,r=[];for(a=t;a<e;a++)r.push(a);return r}function e(t){var e=parseFloat(t);return!isNaN(e)&&isFinite(e)?e:null}Polymer({is:"state-history-chart-line",properties:{data:{type:Object,observer:"dataChanged"},unit:{type:String},isSingleDevice:{type:Boolean,value:!1},isAttached:{type:Boolean,value:!1,observer:"dataChanged"},chartEngine:{type:Object}},created:function(){this.style.display="block"},attached:function(){this.isAttached=!0},dataChanged:function(){this.drawChart()},drawChart:function(){var a,r,n,i,u,o=this.unit,s=this.data;this.isAttached&&(this.chartEngine||(this.chartEngine=new window.google.visualization.LineChart(this)),0!==s.length&&(a={legend:{position:"top"},interpolateNulls:!0,titlePosition:"none",vAxes:{0:{title:o}},hAxis:{format:"H:mm"},chartArea:{left:"60",width:"95%"},explorer:{actions:["dragToZoom","rightClickToReset","dragToPan"],keepInBounds:!0,axis:"horizontal",maxZoomIn:.1}},this.isSingleDevice&&(a.legend.position="none",a.vAxes[0].title=null,a.chartArea.left=40,a.chartArea.height="80%",a.chartArea.top=5,a.enableInteractivity=!1),r=new Date(Math.min.apply(null,s.map(function(t){return t[0].lastChangedAsDate}))),n=new Date(r),n.setDate(n.getDate()+1),n>new Date&&(n=new Date),i=s.map(function(t){function a(t,e){r&&e&&c.push([t[0]].concat(r.slice(1).map(function(t,a){return e[a]?t:null}))),c.push(t),r=t}var r,i,u,o,s=t[t.length-1],l=s.domain,d=s.entityDisplay,c=[],h=new window.google.visualization.DataTable;return h.addColumn({type:"datetime",id:"Time"}),"thermostat"===l?(i=t.reduce(function(t,e){return t||e.attributes.target_temp_high!==e.attributes.target_temp_low},!1),h.addColumn("number",d+" current temperature"),i?(h.addColumn("number",d+" target temperature high"),h.addColumn("number",d+" target temperature low"),o=[!1,!0,!0],u=function(t){var r=e(t.attributes.current_temperature),n=e(t.attributes.target_temp_high),i=e(t.attributes.target_temp_low);a([t.lastUpdatedAsDate,r,n,i],o)}):(h.addColumn("number",d+" target temperature"),o=[!1,!0],u=function(t){var r=e(t.attributes.current_temperature),n=e(t.attributes.temperature);a([t.lastUpdatedAsDate,r,n],o)}),t.forEach(u)):"climate"===l?(i=t.reduce(function(t,e){return t||e.attributes.target_temp_high!==e.attributes.target_temp_low},!1),h.addColumn("number",d+" current temperature"),i?(h.addColumn("number",d+" target temperature high"),h.addColumn("number",d+" target temperature low"),o=[!1,!0,!0],u=function(t){var r=e(t.attributes.current_temperature),n=e(t.attributes.target_temp_high),i=e(t.attributes.target_temp_low);a([t.lastUpdatedAsDate,r,n,i],o)}):(h.addColumn("number",d+" target temperature"),o=[!1,!0],u=function(t){var r=e(t.attributes.current_temperature),n=e(t.attributes.temperature);a([t.lastUpdatedAsDate,r,n],o)}),t.forEach(u)):(h.addColumn("number",d),o="sensor"!==l&&[!0],t.forEach(function(t){var r=e(t.state);a([t.lastChangedAsDate,r],o)})),a([n].concat(r.slice(1)),!1),h.addRows(c),h}),u=1===i.length?i[0]:i.slice(1).reduce(function(e,a){return window.google.visualization.data.join(e,a,"full",[[0,0]],t(1,e.getNumberOfColumns()),t(1,a.getNumberOfColumns()))},i[0]),this.chartEngine.draw(u,a)))}})}()</script><dom-module id="state-history-charts" assetpath="components/"><template><style>:host{display:block}.loading-container{text-align:center;padding:8px}.loading{height:0;overflow:hidden}</style><google-legacy-loader on-api-load="googleApiLoaded"></google-legacy-loader><div hidden$="[[!isLoading]]" class="loading-container"><paper-spinner active="" alt="Updating history data"></paper-spinner></div><div class$="[[computeContentClasses(isLoading)]]"><template is="dom-if" if="[[computeIsEmpty(stateHistory)]]">No state history found.</template><state-history-chart-timeline data="[[groupedStateHistory.timeline]]" is-single-device="[[isSingleDevice]]"></state-history-chart-timeline><template is="dom-repeat" items="[[groupedStateHistory.line]]"><state-history-chart-line unit="[[item.unit]]" data="[[item.data]]" is-single-device="[[isSingleDevice]]"></state-history-chart-line></template></div></template></dom-module><script>Polymer({is:"state-history-charts",properties:{stateHistory:{type:Object},isLoadingData:{type:Boolean,value:!1},apiLoaded:{type:Boolean,value:!1},isLoading:{type:Boolean,computed:"computeIsLoading(isLoadingData, apiLoaded)"},groupedStateHistory:{type:Object,computed:"computeGroupedStateHistory(isLoading, stateHistory)"},isSingleDevice:{type:Boolean,computed:"computeIsSingleDevice(stateHistory)"}},computeIsSingleDevice:function(t){return t&&1===t.size},computeGroupedStateHistory:function(t,e){var i,o={},n=[];return t||!e?{line:[],timeline:[]}:(e.forEach(function(t){var e,i;t&&0!==t.size&&(e=t.find(function(t){return"unit_of_measurement"in t.attributes}),i=!!e&&e.attributes.unit_of_measurement,i?i in o?o[i].push(t.toArray()):o[i]=[t.toArray()]:n.push(t.toArray()))}),n=n.length>0&&n,i=Object.keys(o).map(function(t){return{unit:t,data:o[t]}}),{line:i,timeline:n})},googleApiLoaded:function(){window.google.load("visualization","1",{packages:["timeline","corechart"],callback:function(){this.apiLoaded=!0}.bind(this)})},computeContentClasses:function(t){return t?"loading":""},computeIsLoading:function(t,e){return t||!e},computeIsEmpty:function(t){return t&&0===t.size}})</script><dom-module id="more-info-automation" assetpath="more-infos/"><template><style>paper-button{color:var(--default-primary-color);font-weight:500;top:3px;height:37px}</style><p>Last triggered:<ha-relative-time datetime="[[stateObj.attributes.last_triggered]]"></ha-relative-time></p><paper-button on-tap="handleTriggerTapped">TRIGGER</paper-button></template></dom-module><script>Polymer({is:"more-info-automation",properties:{hass:{type:Object},stateObj:{type:Object}},handleTriggerTapped:function(){this.hass.serviceActions.callService("automation","trigger",{entity_id:this.stateObj.entityId})}})</script><dom-module id="paper-range-slider" assetpath="../bower_components/paper-range-slider/"><template><style>:host{--paper-range-slider-width:200px;@apply(--layout);@apply(--layout-justified);@apply(--layout-center);--paper-range-slider-lower-color:var(--paper-grey-400);--paper-range-slider-active-color:var(--primary-color);--paper-range-slider-higher-color:var(--paper-grey-400);--paper-range-slider-knob-color:var(--primary-color);--paper-range-slider-pin-color:var(--primary-color);--paper-range-slider-pin-start-color:var(--paper-grey-400);--paper-range-slider-knob-start-color:transparent;--paper-range-slider-knob-start-border-color:var(--paper-grey-400)}#sliderOuterDiv_0{display:inline-block;width:var(--paper-range-slider-width)}#sliderOuterDiv_1{position:relative;height:calc(30px + var(--paper-single-range-slider-height,2px));margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sliderKnobMinMax{position:absolute;left:0;top:0;margin-left:calc(-15px - var(--paper-single-range-slider-height,2px)/ 2);width:calc(30px + var(--paper-single-range-slider-height,2px));height:calc(30px + var(--paper-single-range-slider-height,2px))}.divSpanWidth{position:absolute;width:100%;display:block;top:0}#sliderMax{--paper-single-range-slider-bar-color:transparent;--paper-single-range-slider-knob-color:var(--paper-range-slider-knob-color);--paper-single-range-slider-pin-color:var(--paper-range-slider-pin-color);--paper-single-range-slider-active-color:var(--paper-range-slider-active-color);--paper-single-range-slider-secondary-color:var(--paper-range-slider-higher-color);--paper-single-range-slider-pin-start-color:var(--paper-range-slider-pin-start-color);--paper-single-range-slider-knob-start-color:var(--paper-range-slider-knob-start-color);--paper-single-range-slider-knob-start-border-color:var(--paper-range-slider-knob-start-border-color)}#sliderMin{--paper-single-range-slider-active-color:var(--paper-range-slider-lower-color);--paper-single-range-slider-secondary-color:transparent;--paper-single-range-slider-knob-color:var(--paper-range-slider-knob-color);--paper-single-range-slider-pin-color:var(--paper-range-slider-pin-color);--paper-single-range-slider-pin-start-color:var(--paper-range-slider-pin-start-color);--paper-single-range-slider-knob-start-color:var(--paper-range-slider-knob-start-color);--paper-single-range-slider-knob-start-border-color:var(--paper-range-slider-knob-start-border-color)}</style><div id="sliderOuterDiv_0" style=""><div id="sliderOuterDiv_1"><div id="backDiv" class="divSpanWidth" on-down="_backDivDown" on-tap="_backDivTap" on-up="_backDivUp" on-track="_backDivOnTrack" on-transitionend="_backDivTransEnd"><div id="backDivInner_0" style="line-height:200%"><br></div></div><div id="sliderKnobMin" class="sliderKnobMinMax" on-down="_backDivDown" on-up="_backDivUp" on-track="_sliderKnobMinOnTrack"></div><div id="sliderKnobMax" class="sliderKnobMinMax" on-down="_backDivDown" on-up="_backDivUp" on-track="_sliderKnobMaxOnTrack"></div><div class="divSpanWidth" style="pointer-events:none"><paper-single-range-slider id="sliderMax" disabled$="[[disabled]]" on-down="_sliderMaxDown" on-up="_sliderMaxUp" step="[[step]]" min="[[min]]" max="[[max]]" value="[[valueMax]]" secondary-progress="[[max]]" style="width:100%"></paper-single-range-slider></div><div class="divSpanWidth" style="pointer-events:none"><paper-single-range-slider id="sliderMin" disabled$="[[disabled]]" on-down="_sliderMinDown" on-up="_sliderMinUp" noink="" step="[[step]]" min="[[min]]" max="[[max]]" value="[[valueMin]]" style="width:100%"></paper-single-range-slider></div><div id="backDivInner_1" style="line-height:100%"><br></div></div></div></template><script>Polymer({is:"paper-range-slider",behaviors:[Polymer.IronRangeBehavior],properties:{sliderWidth:{type:String,value:"",notify:!0,reflectToAttribute:!0},style:{type:String,value:"",notify:!0,reflectToAttribute:!0},min:{type:Number,value:0,notify:!0,reflectToAttribute:!0},max:{type:Number,value:100,notify:!0,reflectToAttribute:!0},valueMin:{type:Number,value:0,notify:!0,reflectToAttribute:!0},valueMax:{type:Number,value:100,notify:!0,reflectToAttribute:!0},step:{type:Number,value:1,notify:!0,reflectToAttribute:!0},valueDiffMin:{type:Number,value:0,notify:!0,reflectToAttribute:!0},valueDiffMax:{type:Number,value:0,notify:!0,reflectToAttribute:!0},alwaysShowPin:{type:Boolean,value:!1,notify:!0},pin:{type:Boolean,value:!1,notify:!0},snaps:{type:Boolean,value:!1,notify:!0},disabled:{type:Boolean,value:!1,notify:!0},singleSlider:{type:Boolean,value:!1,notify:!0},transDuration:{type:Number,value:250},tapValueExtend:{type:Boolean,value:!0,notify:!0},tapValueReduce:{type:Boolean,value:!1,notify:!0},tapValueMove:{type:Boolean,value:!1,notify:!0}},ready:function(){function i(i){return void 0!=i&&null!=i}i(this._nInitTries)||(this._nInitTries=0);var t=this.$$("#sliderMax").$$("#sliderContainer");if(i(t)&&(t=t.offsetWidth>0),i(t)&&(t=this.$$("#sliderMin").$$("#sliderContainer")),i(t)&&(t=t.offsetWidth>0),i(t))this._renderedReady();else{if(this._nInitTries<1e3){var e=this;setTimeout(function(){e.ready()},10)}else console.error("could not properly initialize the underlying paper-single-range-slider elements ...");this._nInitTries++}},_renderedReady:function(){this.init(),this._setPadding();var i=this;this.$$("#sliderMin").addEventListener("immediate-value-change",function(t){i._setValueMinMax(i._getValuesMinMax(this.immediateValue,null)),i.$.sliderMin._expandKnob(),i.$.sliderMax._expandKnob()}),this.$$("#sliderMax").addEventListener("immediate-value-change",function(t){i._setValueMinMax(i._getValuesMinMax(null,this.immediateValue))}),this.$$("#sliderMin").addEventListener("change",function(t){i._setValueMinMax(i._getValuesMinMax(this.immediateValue,null)),i.alwaysShowPin&&i.$.sliderMin._expandKnob()}),this.$$("#sliderMax").addEventListener("change",function(t){i._setValueMinMax(i._getValuesMinMax(null,this.immediateValue)),i.alwaysShowPin&&i.$.sliderMax._expandKnob()})},_setPadding:function(){var i=document.createElement("div");i.setAttribute("style","position:absolute; top:0px; opacity:0;"),i.innerHTML="invisibleText",document.body.insertBefore(i,document.body.children[0]);var t=i.offsetHeight/2;this.style.paddingTop=t+"px",this.style.paddingBottom=t+"px",i.parentNode.removeChild(i)},_setValueDiff:function(){this._valueDiffMax=Math.max(this.valueDiffMax,0),this._valueDiffMin=Math.max(this.valueDiffMin,0)},_getValuesMinMax:function(i,t){var e=null!=i&&i>=this.min&&i<=this.max,s=null!=t&&t>=this.min&&t<=this.max;if(!e&&!s)return[this.valueMin,this.valueMax];var n=e?i:this.valueMin,a=s?t:this.valueMax;n=Math.min(Math.max(n,this.min),this.max),a=Math.min(Math.max(a,this.min),this.max);var l=a-n;return e?l<this._valueDiffMin?(a=Math.min(this.max,n+this._valueDiffMin),l=a-n,l<this._valueDiffMin&&(n=a-this._valueDiffMin)):l>this._valueDiffMax&&this._valueDiffMax>0&&(a=n+this._valueDiffMax):l<this._valueDiffMin?(n=Math.max(this.min,a-this._valueDiffMin),l=a-n,l<this._valueDiffMin&&(a=n+this._valueDiffMin)):l>this._valueDiffMax&&this._valueDiffMax>0&&(n=a-this._valueDiffMax),[n,a]},_setValueMin:function(i){i=Math.max(i,this.min),this.$$("#sliderMin").value=i,this.valueMin=i},_setValueMax:function(i){i=Math.min(i,this.max),this.$$("#sliderMax").value=i,this.valueMax=i},_setValueMinMax:function(i){this._setValueMin(i[0]),this._setValueMax(i[1]),this._updateSliderKnobMinMax(),this.updateValues()},_setValues:function(i,t){null!=i&&(i<this.min||i>this.max)&&(i=null),null!=t&&(t<this.min||t>this.max)&&(t=null),null!=i&&null!=t&&(i=Math.min(i,t)),this._setValueMinMax(this._getValuesMinMax(i,t))},_updateSliderKnobMinMax:function(){var i=this.$$("#sliderMax").$$("#sliderContainer").offsetWidth,t=i*(this.valueMin-this.min)/(this.max-this.min)+.5*this.$$("#sliderKnobMin").offsetWidth,e=i*(this.valueMax-this.min)/(this.max-this.min)+.5*this.$$("#sliderKnobMax").offsetWidth;this.$$("#sliderKnobMin").style.left=t+"px",this.$$("#sliderKnobMax").style.left=e+"px"},_backDivOnTrack:function(i){switch(i.stopPropagation(),i.detail.state){case"start":this._backDivTrackStart(i);break;case"track":this._backDivTrackDuring(i);break;case"end":this._backDivTrackEnd()}},_backDivTrackStart:function(i){},_backDivTrackDuring:function(i){this._x1_Min=this._x0_Min+i.detail.dx;var t=this._calcStep(this._getRatioPos(this.$$("#sliderMin"),this._x1_Min/this._xWidth));this._x1_Max=this._x0_Max+i.detail.dx;var e=this._calcStep(this._getRatioPos(this.$$("#sliderMax"),this._x1_Max/this._xWidth));t>=this.min&&e<=this.max&&this._setValuesWithCurrentDiff(t,e,!1)},_setValuesWithCurrentDiff:function(i,t,e){var s=this._valueDiffMin,n=this._valueDiffMax;this._valueDiffMin=this.valueMax-this.valueMin,this._valueDiffMax=this.valueMax-this.valueMin,e?this.setValues(i,t):this._setValues(i,t),this._valueDiffMin=s,this._valueDiffMax=n},_backDivTrackEnd:function(){},_sliderKnobMinOnTrack:function(i){this._x1_Min=this._x0_Min+i.detail.dx;var t=this._calcStep(this._getRatioPos(this.$$("#sliderMin"),this._x1_Min/this._xWidth));this._setValues(t,null)},_sliderKnobMaxOnTrack:function(i){this._x1_Max=this._x0_Max+i.detail.dx;var t=this._calcStep(this._getRatioPos(this.$$("#sliderMax"),this._x1_Max/this._xWidth));this._setValues(null,t)},_sliderMinDown:function(){this.$$("#sliderMax")._expandKnob()},_sliderMaxDown:function(i){this.singleSlider?this._setValues(null,this._getEventValue(i)):this.$$("#sliderMin")._expandKnob()},_sliderMinUp:function(){this.alwaysShowPin?this.$$("#sliderMin")._expandKnob():this.$$("#sliderMax")._resetKnob()},_sliderMaxUp:function(){this.alwaysShowPin?this.$$("#sliderMax")._expandKnob():(this.$$("#sliderMin")._resetKnob(),this.singleSlider&&this.$$("#sliderMax")._resetKnob())},_getEventValue:function(i){var t=this.$$("#sliderMax").$$("#sliderContainer").offsetWidth,e=this.$$("#sliderMax").$$("#sliderContainer").getBoundingClientRect(),s=(i.detail.x-e.left)/t,n=this.min+s*(this.max-this.min);return n},_backDivTap:function(i){this._setValueNow=function(i,t){this.tapValueMove?this._setValuesWithCurrentDiff(i,t,!0):this.setValues(i,t)};var t=this._getEventValue(i);if(t>this.valueMin&&t<this.valueMax){if(this.tapValueReduce){var e=t<this.valueMin+(this.valueMax-this.valueMin)/2;e?this._setValueNow(t,null):this._setValueNow(null,t)}}else(this.tapValueExtend||this.tapValueMove)&&(t<this.valueMin&&this._setValueNow(t,null),t>this.valueMax&&this._setValueNow(null,t))},_backDivDown:function(i){this._sliderMinDown(),this._sliderMaxDown(),this._xWidth=this.$$("#sliderMin").$$("#sliderBar").offsetWidth,this._x0_Min=this.$$("#sliderMin").ratio*this._xWidth,this._x0_Max=this.$$("#sliderMax").ratio*this._xWidth},_backDivUp:function(){this._sliderMinUp(),this._sliderMaxUp()},_backDivTransEnd:function(i){},_getRatioPos:function(i,t){return Math.max(i.min,Math.min(i.max,(i.max-i.min)*t+i.min))},init:function(){this.setSingleSlider(this.singleSlider),this.setDisabled(this.disabled),this.alwaysShowPin&&(this.pin=!0),this.$$("#sliderMin").pin=this.pin,this.$$("#sliderMax").pin=this.pin,this.$$("#sliderMin").snaps=this.snaps,this.$$("#sliderMax").snaps=this.snaps,""!=this.sliderWidth&&(this.customStyle["--paper-range-slider-width"]=this.sliderWidth,this.updateStyles()),this.$$("#sliderMin").$$("#sliderBar").$$("#progressContainer").style.background="transparent",this._prevUpdateValues=[this.min,this.max],this._setValueDiff(),this._setValueMinMax(this._getValuesMinMax(this.valueMin,this.valueMax)),this.alwaysShowPin&&(this.$$("#sliderMin")._expandKnob(),this.$$("#sliderMax")._expandKnob())},setValues:function(i,t){this.$$("#sliderMin")._setTransiting(!0),this.$$("#sliderMax")._setTransiting(!0),this._setValues(i,t);var e=this;setTimeout(function(){e.$.sliderMin._setTransiting(!1),e.$.sliderMax._setTransiting(!1)},e.transDuration)},updateValues:function(){this._prevUpdateValues[0]==this.valueMin&&this._prevUpdateValues[1]==this.valueMax||(this._prevUpdateValues=[this.valueMin,this.valueMax],this.async(function(){this.fire("updateValues")}))},setMin:function(i){this.max<i&&(this.max=i),this.min=i,this._prevUpdateValues=[this.min,this.max],this.valueMin<this.min?this._setValues(this.min,null):this._updateSliderKnobMinMax()},setMax:function(i){this.min>i&&(this.min=i),this.max=i,this._prevUpdateValues=[this.min,this.max],this.valueMax>this.max?this._setValues(null,this.max):this._updateSliderKnobMinMax()},setStep:function(i){this.step=i},setValueDiffMin:function(i){this._valueDiffMin=i},setValueDiffMax:function(i){this._valueDiffMax=i},setTapValueExtend:function(i){this.tapValueExtend=i},setTapValueReduce:function(i){this.tapValueReduce=i},setTapValueMove:function(i){this.tapValueMove=i},setDisabled:function(i){this.disabled=i;var t=i?"none":"auto";this.$$("#sliderMax").$$("#sliderKnobInner").style.pointerEvents=t,this.$$("#sliderMin").$$("#sliderKnobInner").style.pointerEvents=t,this.$$("#sliderOuterDiv_1").style.pointerEvents=t,this.$$("#sliderKnobMin").style.pointerEvents=t,this.$$("#sliderKnobMax").style.pointerEvents=t},setSingleSlider:function(i){this.singleSlider=i,i?(this.$$("#backDiv").style.display="none",this.$$("#sliderMax").style.pointerEvents="auto",this.$$("#sliderMax").style.display="",this.$$("#sliderMin").style.display="none",this.$$("#sliderKnobMin").style.pointerEvents="none",this.$$("#sliderKnobMax").style.pointerEvents="none"):(this.$$("#backDiv").style.display="block",this.$$("#sliderMax").style.pointerEvents="none",this.$$("#sliderMax").style.display="",this.$$("#sliderMin").style.display="",this.$$("#sliderKnobMin").style.pointerEvents="auto",this.$$("#sliderKnobMax").style.pointerEvents="auto"),this.$$("#sliderMax").$$("#sliderContainer").style.pointerEvents=this.singleSlider?"auto":"none",this.$$("#sliderMin").$$("#sliderContainer").style.pointerEvents="none"}})</script></dom-module><dom-module id="paper-single-range-slider" assetpath="../bower_components/paper-range-slider/"><template strip-whitespace=""><style>:host{@apply(--layout);@apply(--layout-justified);@apply(--layout-center);width:200px;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;--paper-progress-active-color:var(--paper-single-range-slider-active-color, --google-blue-700);--paper-progress-secondary-color:var(--paper-single-range-slider-secondary-color, --google-blue-300);--paper-progress-disabled-active-color:var(--paper-single-range-slider-disabled-active-color, --paper-grey-400);--paper-progress-disabled-secondary-color:var(--paper-single-range-slider-disabled-secondary-color, --paper-grey-400)}:host(:focus){outline:0}#sliderContainer{position:relative;width:100%;height:calc(30px + var(--paper-single-range-slider-height,2px));margin-left:calc(15px + var(--paper-single-range-slider-height,2px)/ 2);margin-right:calc(15px + var(--paper-single-range-slider-height,2px)/ 2)}#sliderContainer:focus{outline:0}#sliderContainer.editable{margin-top:12px;margin-bottom:12px}.bar-container{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.ring>.bar-container{left:calc(5px + var(--paper-single-range-slider-height,2px)/ 2);transition:left .18s ease}.ring.expand.dragging>.bar-container{transition:none}.ring.expand:not(.pin)>.bar-container{left:calc(8px + var(--paper-single-range-slider-height,2px)/ 2)}#sliderBar{padding:15px 0;width:100%;background-color:var(--paper-single-range-slider-bar-color,transparent);--paper-progress-container-color:var(--paper-single-range-slider-container-color, --paper-grey-400);--paper-progress-height:var(--paper-single-range-slider-height, 2px)}.slider-markers{position:absolute;top:calc(14px + var(--paper-single-range-slider-height,2px)/ 2);height:var(--paper-single-range-slider-height,2px);left:0;right:-1px;box-sizing:border-box;pointer-events:none;@apply(--layout-horizontal)}.slider-marker{@apply(--layout-flex)}.slider-marker::after,.slider-markers::after{content:"";display:block;margin-left:-1px;width:2px;height:2px;border-radius:50%;background-color:#000}#sliderKnob{position:absolute;left:0;top:0;margin-left:calc(-15px - var(--paper-single-range-slider-height,2px)/ 2);width:calc(30px + var(--paper-single-range-slider-height,2px));height:calc(30px + var(--paper-single-range-slider-height,2px))}.transiting>#sliderKnob{transition:left 80ms ease}#sliderKnob:focus{outline:0}#sliderKnob.dragging{transition:none}.snaps>#sliderKnob.dragging{transition:-webkit-transform 80ms ease;transition:transform 80ms ease}#sliderKnobInner{margin:10px;width:calc(100% - 20px);height:calc(100% - 20px);background-color:var(--paper-single-range-slider-knob-color,--google-blue-700);border:2px solid var(--paper-single-range-slider-knob-color,--google-blue-700);border-radius:50%;-moz-box-sizing:border-box;box-sizing:border-box;transition-property:-webkit-transform,background-color,border;transition-property:transform,background-color,border;transition-duration:.18s;transition-timing-function:ease}.expand:not(.pin)>#sliderKnob>#sliderKnobInner{-webkit-transform:scale(1.5);transform:scale(1.5)}.ring>#sliderKnob>#sliderKnobInner{background-color:var(--paper-single-range-slider-knob-start-color,transparent);border:2px solid var(--paper-single-range-slider-knob-start-border-color,--paper-grey-400)}#sliderKnobInner::before{background-color:var(--paper-single-range-slider-pin-color,--google-blue-700)}.pin>#sliderKnob>#sliderKnobInner::before{content:"";position:absolute;top:0;left:50%;margin-left:-13px;width:26px;height:26px;border-radius:50% 50% 50% 0;-webkit-transform:rotate(-45deg) scale(0) translate(0);transform:rotate(-45deg) scale(0) translate(0)}#sliderKnobInner::after,#sliderKnobInner::before{transition:-webkit-transform .18s ease,background-color .18s ease;transition:transform .18s ease,background-color .18s ease}.pin.ring>#sliderKnob>#sliderKnobInner::before{background-color:var(--paper-single-range-slider-pin-start-color,--paper-grey-400)}.pin.expand>#sliderKnob>#sliderKnobInner::before{-webkit-transform:rotate(-45deg) scale(1) translate(17px,-17px);transform:rotate(-45deg) scale(1) translate(17px,-17px)}.pin>#sliderKnob>#sliderKnobInner::after{content:attr(value);position:absolute;top:0;left:50%;margin-left:-16px;width:32px;height:26px;text-align:center;color:var(--paper-single-range-slider-font-color,#fff);font-size:10px;-webkit-transform:scale(0) translate(0);transform:scale(0) translate(0)}.pin.expand>#sliderKnob>#sliderKnobInner::after{-webkit-transform:scale(1) translate(0,-17px);transform:scale(1) translate(0,-17px)}.slider-input{width:50px;overflow:hidden;--paper-input-container-input:{text-align:center};@apply(--paper-single-range-slider-input)}#sliderContainer.disabled{pointer-events:none}.disabled>#sliderKnob>#sliderKnobInner{background-color:var(--paper-single-range-slider-disabled-knob-color,--paper-grey-400);border:2px solid var(--paper-single-range-slider-disabled-knob-color,--paper-grey-400);-webkit-transform:scale3d(.75,.75,1);transform:scale3d(.75,.75,1)}.disabled.ring>#sliderKnob>#sliderKnobInner{background-color:var(--paper-single-range-slider-knob-start-color,transparent);border:2px solid var(--paper-single-range-slider-knob-start-border-color,--paper-grey-400)}paper-ripple{color:var(--paper-single-range-slider-knob-color,--google-blue-700)}</style><div id="sliderContainer" class$="[[_getClassNames(disabled, pin, snaps, immediateValue, min, expand, dragging, transiting, editable)]]"><div class="bar-container"><paper-progress disabled$="[[disabled]]" id="sliderBar" aria-hidden="true" min="[[min]]" max="[[max]]" step="[[step]]" value="[[immediateValue]]" secondary-progress="[[secondaryProgress]]" on-down="_bardown" on-up="_resetKnob" on-track="_onTrack"></paper-progress></div><template is="dom-if" if="[[snaps]]"><div class="slider-markers"><template is="dom-repeat" items="[[markers]]"><div class="slider-marker"></div></template></div></template><div id="sliderKnob" on-down="_knobdown" on-up="_resetKnob" on-track="_onTrack" on-transitionend="_knobTransitionEnd"><div id="sliderKnobInner" value$="[[immediateValue]]"></div></div></div><template is="dom-if" if="[[editable]]"><paper-input id="input" type="number" step="[[step]]" min="[[min]]" max="[[max]]" class="slider-input" disabled$="[[disabled]]" value="[[immediateValue]]" on-change="_changeValue" on-keydown="_inputKeyDown" no-label-float=""></paper-input></template></template><script>Polymer({is:"paper-single-range-slider",behaviors:[Polymer.IronA11yKeysBehavior,Polymer.IronFormElementBehavior,Polymer.PaperInkyFocusBehavior,Polymer.IronRangeBehavior],properties:{snaps:{type:Boolean,value:!1,notify:!0},pin:{type:Boolean,value:!1,notify:!0},secondaryProgress:{type:Number,value:0,notify:!0,observer:"_secondaryProgressChanged"},editable:{type:Boolean,value:!1},immediateValue:{type:Number,value:0,readOnly:!0,notify:!0},maxMarkers:{type:Number,value:0,notify:!0},expand:{type:Boolean,value:!1,readOnly:!0},dragging:{type:Boolean,value:!1,readOnly:!0},transiting:{type:Boolean,value:!1,readOnly:!0},markers:{type:Array,readOnly:!0,value:[]}},observers:["_updateKnob(value, min, max, snaps, step)","_valueChanged(value)","_immediateValueChanged(immediateValue)","_updateMarkers(maxMarkers, min, max, snaps)"],hostAttributes:{role:"slider",tabindex:0},keyBindings:{"left down pagedown home":"_decrementKey","right up pageup end":"_incrementKey"},increment:function(){this.value=this._clampValue(this.value+this.step)},decrement:function(){this.value=this._clampValue(this.value-this.step)},_updateKnob:function(t,e,i,s,a){this.setAttribute("aria-valuemin",e),this.setAttribute("aria-valuemax",i),this.setAttribute("aria-valuenow",t),this._positionKnob(this._calcRatio(t))},_valueChanged:function(){this.fire("value-change")},_immediateValueChanged:function(){this.dragging?this.fire("immediate-value-change"):this.value=this.immediateValue},_secondaryProgressChanged:function(){this.secondaryProgress=this._clampValue(this.secondaryProgress)},_expandKnob:function(){this._setExpand(!0)},_resetKnob:function(){this.cancelDebouncer("expandKnob"),this._setExpand(!1)},_positionKnob:function(t){this._setImmediateValue(this._calcStep(this._calcKnobPosition(t))),this._setRatio(this._calcRatio(this.immediateValue)),this.$.sliderKnob.style.left=100*this.ratio+"%",this.dragging&&(this._knobstartx=this.ratio*this._w,this.translate3d(0,0,0,this.$.sliderKnob))},_calcKnobPosition:function(t){return(this.max-this.min)*t+this.min},_onTrack:function(t){switch(t.stopPropagation(),t.detail.state){case"start":this._trackStart(t);break;case"track":this._trackX(t);break;case"end":this._trackEnd()}},_trackStart:function(t){this._w=this.$.sliderBar.offsetWidth,this._x=this.ratio*this._w,this._startx=this._x,this._knobstartx=this._startx,this._minx=-this._startx,this._maxx=this._w-this._startx,this.$.sliderKnob.classList.add("dragging"),this._setDragging(!0)},_trackX:function(t){this.dragging||this._trackStart(t);var e=Math.min(this._maxx,Math.max(this._minx,t.detail.dx));this._x=this._startx+e;var i=this._calcStep(this._calcKnobPosition(this._x/this._w));this._setImmediateValue(i);var s=this._calcRatio(this.immediateValue)*this._w-this._knobstartx;this.translate3d(s+"px",0,0,this.$.sliderKnob)},_trackEnd:function(){var t=this.$.sliderKnob.style;this.$.sliderKnob.classList.remove("dragging"),this._setDragging(!1),this._resetKnob(),this.value=this.immediateValue,t.transform=t.webkitTransform="",this.fire("change")},_knobdown:function(t){this._expandKnob(),t.preventDefault(),this.focus()},_bardown:function(t){this._w=this.$.sliderBar.offsetWidth;var e=this.$.sliderBar.getBoundingClientRect(),i=(t.detail.x-e.left)/this._w,s=this.ratio;this._setTransiting(!0),this._positionKnob(i),this.debounce("expandKnob",this._expandKnob,60),s===this.ratio&&this._setTransiting(!1),this.async(function(){this.fire("change")}),t.preventDefault(),this.focus()},_knobTransitionEnd:function(t){t.target===this.$.sliderKnob&&this._setTransiting(!1)},_updateMarkers:function(t,e,i,s){s||this._setMarkers([]);var a=Math.round((i-e)/this.step);a>t&&(a=t),this._setMarkers(new Array(a))},_mergeClasses:function(t){return Object.keys(t).filter(function(e){return t[e]}).join(" ")},_getClassNames:function(){return this._mergeClasses({disabled:this.disabled,pin:this.pin,snaps:this.snaps,ring:this.immediateValue<=this.min,expand:this.expand,dragging:this.dragging,transiting:this.transiting,editable:this.editable})},_incrementKey:function(t){this.disabled||("end"===t.detail.key?this.value=this.max:this.increment(),this.fire("change"))},_decrementKey:function(t){this.disabled||("home"===t.detail.key?this.value=this.min:this.decrement(),this.fire("change"))},_changeValue:function(t){this.value=t.target.value,this.fire("change")},_inputKeyDown:function(t){t.stopPropagation()},_createRipple:function(){return this._rippleContainer=this.$.sliderKnob,Polymer.PaperInkyFocusBehaviorImpl._createRipple.call(this)},_focusedChanged:function(t){t&&this.ensureRipple(),this.hasRipple()&&(t?this._ripple.style.display="":this._ripple.style.display="none",this._ripple.holdDown=t)}})</script></dom-module><dom-module id="more-info-climate" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex"></style><style>:host{color:var(--primary-text-color);--paper-input-container-input:{text-transform:capitalize};}.container-aux_heat,.container-away_mode,.container-fan_list,.container-humidity,.container-operation_list,.container-swing_list,.container-temperature{display:none}.has-aux_heat .container-aux_heat,.has-away_mode .container-away_mode,.has-fan_list .container-fan_list,.has-humidity .container-humidity,.has-operation_list .container-operation_list,.has-swing_list .container-swing_list,.has-temperature .container-temperature{display:block}.container-fan_list iron-icon,.container-operation_list iron-icon,.container-swing_list iron-icon{margin:22px 16px 0 0}paper-dropdown-menu{width:100%}paper-slider{width:100%}.auto paper-slider{--paper-slider-active-color:var(--paper-orange-400);--paper-slider-secondary-color:var(--paper-blue-400)}.heat paper-slider{--paper-slider-active-color:var(--paper-orange-400);--paper-slider-secondary-color:var(--paper-green-400)}.cool paper-slider{--paper-slider-active-color:var(--paper-green-400);--paper-slider-secondary-color:var(--paper-blue-400)}.humidity{--paper-slider-active-color:var(--paper-blue-400);--paper-slider-secondary-color:var(--paper-blue-400)}paper-range-slider{--paper-range-slider-lower-color:var(--paper-orange-400);--paper-range-slider-active-color:var(--paper-green-400);--paper-range-slider-higher-color:var(--paper-blue-400);--paper-range-slider-knob-color:var(--primary-color);--paper-range-slider-pin-color:var(--primary-color);--paper-range-slider-width:100%}.single-row{padding:8px 0}.capitalize{text-transform:capitalize}</style><div class$="[[computeClassNames(stateObj)]]"><div class="container-temperature"><div class$="single-row, [[stateObj.attributes.operation_mode]]"><div hidden$="[[computeTargetTempHidden(stateObj)]]">Target Temperature</div><paper-slider min="[[stateObj.attributes.min_temp]]" max="[[stateObj.attributes.max_temp]]" secondary-progress="[[stateObj.attributes.max_temp]]" pin="" step="0.5" value="[[stateObj.attributes.temperature]]" hidden$="[[computeHideTempSlider(stateObj)]]" on-change="targetTemperatureSliderChanged"></paper-slider><paper-range-slider min="[[stateObj.attributes.min_temp]]" max="[[stateObj.attributes.max_temp]]" pin="" step="0.5" value-min="[[stateObj.attributes.target_temp_low]]" value-max="[[stateObj.attributes.target_temp_high]]" value-diff-min="2" hidden$="[[computeHideTempRangeSlider(stateObj)]]" on-change="targetTemperatureRangeSliderChanged"></paper-range-slider></div></div><div class="container-humidity"><div class="single-row"><div>Target Humidity</div><paper-slider class="humidity" min="[[stateObj.attributes.min_humidity]]" max="[[stateObj.attributes.max_humidity]]" secondary-progress="[[stateObj.attributes.max_humidity]]" step="1" pin="" value="[[stateObj.attributes.humidity]]" on-change="targetHumiditySliderChanged"></paper-slider></div></div><div class="container-operation_list"><div class="controls"><paper-dropdown-menu label-float="" label="Operation"><paper-menu class="dropdown-content" selected="{{operationIndex}}"><template is="dom-repeat" items="[[stateObj.attributes.operation_list]]"><paper-item class="capitalize">[[item]]</paper-item></template></paper-menu></paper-dropdown-menu></div></div><div class="container-fan_list"><paper-dropdown-menu label-float="" label="Fan Mode"><paper-menu class="dropdown-content" selected="{{fanIndex}}"><template is="dom-repeat" items="[[stateObj.attributes.fan_list]]"><paper-item>[[item]]</paper-item></template></paper-menu></paper-dropdown-menu></div><div class="container-swing_list"><paper-dropdown-menu label-float="" label="Swing Mode"><paper-menu class="dropdown-content" selected="{{swingIndex}}"><template is="dom-repeat" items="[[stateObj.attributes.swing_list]]"><paper-item>[[item]]</paper-item></template></paper-menu></paper-dropdown-menu></div><div class="container-away_mode"><div class="center horizontal layout single-row"><div class="flex">Away Mode</div><paper-toggle-button checked="[[awayToggleChecked]]" on-change="awayToggleChanged"></paper-toggle-button></div></div><div class="container-aux_heat"><div class="center horizontal layout single-row"><div class="flex">Aux Heat</div><paper-toggle-button checked="[[auxToggleChecked]]" on-change="auxToggleChanged"></paper-toggle-button></div></div></div></template></dom-module><script>Polymer({is:"more-info-climate",properties:{hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"},operationIndex:{type:Number,value:-1,observer:"handleOperationmodeChanged"},fanIndex:{type:Number,value:-1,observer:"handleFanmodeChanged"},swingIndex:{type:Number,value:-1,observer:"handleSwingmodeChanged"},awayToggleChecked:{type:Boolean},auxToggleChecked:{type:Boolean}},stateObjChanged:function(e){this.targetTemperatureSliderValue=e.attributes.temperature,this.awayToggleChecked="on"===e.attributes.away_mode,this.auxheatToggleChecked="on"===e.attributes.aux_heat,e.attributes.fan_list?this.fanIndex=e.attributes.fan_list.indexOf(e.attributes.fan_mode):this.fanIndex=-1,e.attributes.operation_list?this.operationIndex=e.attributes.operation_list.indexOf(e.attributes.operation_mode):this.operationIndex=-1,e.attributes.swing_list?this.swingIndex=e.attributes.swing_list.indexOf(e.attributes.swing_mode):this.swingIndex=-1,this.async(function(){this.fire("iron-resize")}.bind(this),500)},computeTargetTempHidden:function(e){return!e.attributes.temperature&&!e.attributes.target_temp_low&&!e.attributes.target_temp_high},computeHideTempRangeSlider:function(e){return!e.attributes.target_temp_low&&!e.attributes.target_temp_high},computeHideTempSlider:function(e){return!e.attributes.temperature},computeClassNames:function(e){return"more-info-climate "+window.hassUtil.attributeClassNames(e,["away_mode","aux_heat","temperature","humidity","operation_list","fan_list","swing_list"])},targetTemperatureSliderChanged:function(e){var t=e.target.value;t!==this.stateObj.attributes.temperature&&this.callServiceHelper("set_temperature",{temperature:t})},targetTemperatureRangeSliderChanged:function(e){var t=e.currentTarget.valueMin,a=e.currentTarget.valueMax;t===this.stateObj.attributes.target_temp_low&&a===this.stateObj.attributes.target_temp_high||this.callServiceHelper("set_temperature",{target_temp_low:t,target_temp_high:a})},targetHumiditySliderChanged:function(e){var t=e.target.value;t!==this.stateObj.attributes.humidity&&this.callServiceHelper("set_humidity",{humidity:t})},awayToggleChanged:function(e){var t="on"===this.stateObj.attributes.away_mode,a=e.target.checked;t!==a&&this.callServiceHelper("set_away_mode",{away_mode:a})},auxToggleChanged:function(e){var t="on"===this.stateObj.attributes.aux_heat,a=e.target.checked;t!==a&&this.callServiceHelper("set_aux_heat",{aux_heat:a})},handleFanmodeChanged:function(e){var t;""!==e&&e!==-1&&(t=this.stateObj.attributes.fan_list[e],t!==this.stateObj.attributes.fan_mode&&this.callServiceHelper("set_fan_mode",{fan_mode:t}))},handleOperationmodeChanged:function(e){var t;""!==e&&e!==-1&&(t=this.stateObj.attributes.operation_list[e],t!==this.stateObj.attributes.operation_mode&&this.callServiceHelper("set_operation_mode",{operation_mode:t}))},handleSwingmodeChanged:function(e){var t;""!==e&&e!==-1&&(t=this.stateObj.attributes.swing_list[e],t!==this.stateObj.attributes.swing_mode&&this.callServiceHelper("set_swing_mode",{swing_mode:t}))},callServiceHelper:function(e,t){t.entity_id=this.stateObj.entityId,this.hass.serviceActions.callService("climate",e,t).then(function(){this.stateObjChanged(this.stateObj)}.bind(this))}})</script><dom-module id="more-info-cover" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex"></style><style>.current_position,.current_tilt_position{max-height:0;overflow:hidden}.has-current_position .current_position,.has-current_tilt_position .current_tilt_position{max-height:90px}</style><div class$="[[computeClassNames(stateObj)]]"><div class="current_position"><div>Position</div><paper-slider min="0" max="100" value="{{coverPositionSliderValue}}" step="1" pin="" on-change="coverPositionSliderChanged"></paper-slider></div><div class="current_tilt_position"><div>Tilt position</div><paper-icon-button icon="mdi:arrow-top-right" on-tap="onOpenTiltTap" title="Open tilt" disabled="[[computeIsFullyOpenTilt(stateObj)]]"></paper-icon-button><paper-icon-button icon="mdi:stop" on-tap="onStopTiltTap" title="Stop tilt"></paper-icon-button><paper-icon-button icon="mdi:arrow-bottom-left" on-tap="onCloseTiltTap" title="Close tilt" disabled="[[computeIsFullyClosedTilt(stateObj)]]"></paper-icon-button><paper-slider min="0" max="100" value="{{coverTiltPositionSliderValue}}" step="1" pin="" on-change="coverTiltPositionSliderChanged"></paper-slider></div></div></template></dom-module><script>Polymer({is:"more-info-cover",properties:{hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"},coverPositionSliderValue:{type:Number},coverTiltPositionSliderValue:{type:Number}},stateObjChanged:function(t){this.coverPositionSliderValue=t.attributes.current_position,this.coverTiltPositionSliderValue=t.attributes.current_tilt_position},computeClassNames:function(t){return window.hassUtil.attributeClassNames(t,["current_position","current_tilt_position"])},coverPositionSliderChanged:function(t){this.hass.serviceActions.callService("cover","set_cover_position",{entity_id:this.stateObj.entityId,position:t.target.value})},coverTiltPositionSliderChanged:function(t){this.hass.serviceActions.callService("cover","set_cover_tilt_position",{entity_id:this.stateObj.entityId,tilt_position:t.target.value})},computeIsFullyOpenTilt:function(t){return 100===t.attributes.current_tilt_position},computeIsFullyClosedTilt:function(t){return 0===t.attributes.current_tilt_position},onOpenTiltTap:function(){this.hass.serviceActions.callService("cover","open_cover_tilt",{entity_id:this.stateObj.entityId})},onCloseTiltTap:function(){this.hass.serviceActions.callService("cover","close_cover_tilt",{entity_id:this.stateObj.entityId})},onStopTiltTap:function(){this.hass.serviceActions.callService("cover","stop_cover",{entity_id:this.stateObj.entityId})}})</script><dom-module id="more-info-default" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>.data-entry .value{max-width:200px}</style><div class="layout vertical"><template is="dom-repeat" items="[[computeDisplayAttributes(stateObj)]]" as="attribute"><div class="data-entry layout justified horizontal"><div class="key">[[formatAttribute(attribute)]]</div><div class="value">[[getAttributeValue(stateObj, attribute)]]</div></div></template></div></template></dom-module><script>!function(){"use strict";var e=["entity_picture","friendly_name","icon","unit_of_measurement","emulated_hue","emulated_hue_name","haaska_hidden","haaska_name","homebridge_hidden","homebridge_name"];Polymer({is:"more-info-default",properties:{stateObj:{type:Object}},computeDisplayAttributes:function(t){return t?Object.keys(t.attributes).filter(function(t){return e.indexOf(t)===-1}):[]},formatAttribute:function(e){return e.replace(/_/g," ")},getAttributeValue:function(e,t){var r=e.attributes[t];return Array.isArray(r)?r.join(", "):r}})}()</script><dom-module id="more-info-group" assetpath="more-infos/"><template><style>.child-card{margin-bottom:8px}.child-card:last-child{margin-bottom:0}</style><div id="groupedControlDetails"></div><template is="dom-repeat" items="[[states]]" as="state"><div class="child-card"><state-card-content state-obj="[[state]]" hass="[[hass]]"></state-card-content></div></template></template></dom-module><script>Polymer({is:"more-info-group",behaviors:[window.hassBehavior],properties:{hass:{type:Object},stateObj:{type:Object},states:{type:Array,bindNuclear:function(t){return[t.moreInfoGetters.currentEntity,t.entityGetters.entityMap,function(t,e){return t?t.attributes.entity_id.map(e.get.bind(e)):[]}]}}},observers:["statesChanged(stateObj, states)"],statesChanged:function(t,e){var s,i,a,n,r=!1;if(e&&e.length>0)for(s=e[0],r=s.set("entityId",t.entityId).set("attributes",Object.assign({},s.attributes)),i=0;i<e.length;i++)a=e[i],a&&a.domain&&r.domain!==a.domain&&(r=!1);r?window.hassUtil.dynamicContentUpdater(this.$.groupedControlDetails,"MORE-INFO-"+window.hassUtil.stateMoreInfoType(r).toUpperCase(),{stateObj:r,hass:this.hass}):(n=Polymer.dom(this.$.groupedControlDetails),n.lastChild&&n.removeChild(n.lastChild))}})</script><dom-module id="more-info-sun" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><template is="dom-repeat" items="[[computeOrder(risingDate, settingDate)]]"><div class="data-entry layout justified horizontal"><div class="key"><span>[[itemCaption(item)]]</span><ha-relative-time datetime-obj="[[itemDate(item)]]"></ha-relative-time></div><div class="value">[[itemValue(item)]]</div></div></template><div class="data-entry layout justified horizontal"><div class="key">Elevation</div><div class="value">[[stateObj.attributes.elevation]]</div></div></template></dom-module><script>Polymer({is:"more-info-sun",properties:{stateObj:{type:Object},risingDate:{type:Object,computed:"computeRising(stateObj)"},settingDate:{type:Object,computed:"computeSetting(stateObj)"}},computeRising:function(t){return new Date(t.attributes.next_rising)},computeSetting:function(t){return new Date(t.attributes.next_setting)},computeOrder:function(t,e){return t>e?["set","ris"]:["ris","set"]},itemCaption:function(t){return"ris"===t?"Rising ":"Setting "},itemDate:function(t){return"ris"===t?this.risingDate:this.settingDate},itemValue:function(t){return window.hassUtil.formatTime(this.itemDate(t))}})</script><dom-module id="more-info-configurator" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex"></style><style>p{margin:8px 0}p>img{max-width:100%}p.center{text-align:center}p.error{color:#C62828}p.submit{text-align:center;height:41px}paper-spinner{width:14px;height:14px;margin-right:20px}</style><div class="layout vertical"><template is="dom-if" if="[[isConfigurable]]"><p hidden$="[[!stateObj.attributes.description]]">[[stateObj.attributes.description]] <a hidden$="[[!stateObj.attributes.link_url]]" href="[[stateObj.attributes.link_url]]" target="_blank">[[stateObj.attributes.link_name]]</a></p><p class="error" hidden$="[[!stateObj.attributes.errors]]">[[stateObj.attributes.errors]]</p><p class="center" hidden$="[[!stateObj.attributes.description_image]]"><img src="[[stateObj.attributes.description_image]]"></p><template is="dom-repeat" items="[[stateObj.attributes.fields]]"><paper-input-container id="paper-input-fields-{{item.id}}"><label>[[item.name]]</label><input is="iron-input" type="[[item.type]]" id="[[item.id]]" on-change="fieldChanged"></paper-input-container></template><p class="submit"><paper-button raised="" disabled="[[isConfiguring]]" on-tap="submitClicked"><paper-spinner active="[[isConfiguring]]" hidden="[[!isConfiguring]]" alt="Configuring"></paper-spinner>[[submitCaption]]</paper-button></p></template></div></template></dom-module><script>Polymer({is:"more-info-configurator",behaviors:[window.hassBehavior],properties:{stateObj:{type:Object},action:{type:String,value:"display"},isStreaming:{type:Boolean,bindNuclear:function(i){return i.streamGetters.isStreamingEvents}},isConfigurable:{type:Boolean,computed:"computeIsConfigurable(stateObj)"},isConfiguring:{type:Boolean,value:!1},submitCaption:{type:String,computed:"computeSubmitCaption(stateObj)"},fieldInput:{type:Object,value:{}}},computeIsConfigurable:function(i){return"configure"===i.state},computeSubmitCaption:function(i){return i.attributes.submit_caption||"Set configuration"},fieldChanged:function(i){var t=i.target;this.fieldInput[t.id]=t.value},submitClicked:function(){var i={configure_id:this.stateObj.attributes.configure_id,fields:this.fieldInput};this.isConfiguring=!0,this.hass.serviceActions.callService("configurator","configure",i).then(function(){this.isConfiguring=!1,this.isStreaming||this.hass.syncActions.fetchAll()}.bind(this),function(){this.isConfiguring=!1}.bind(this))}})</script><dom-module id="more-info-script" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><div class="layout vertical"><div class="data-entry layout justified horizontal"><div class="key">Last Action</div><div class="value">[[stateObj.attributes.last_action]]</div></div></div></template></dom-module><script>Polymer({is:"more-info-script",properties:{stateObj:{type:Object}}})</script><dom-module id="ha-labeled-slider" assetpath="components/"><template><style>:host{display:block;padding-bottom:16px}.title{margin-bottom:16px;opacity:var(--dark-primary-opacity)}iron-icon{float:left;margin-top:4px;opacity:var(--dark-secondary-opacity)}.slider-container{margin-left:24px}</style><div class="title">[[caption]]</div><iron-icon icon="[[icon]]"></iron-icon><div class="slider-container"><paper-slider min="[[min]]" max="[[max]]" value="{{value}}"></paper-slider></div></template></dom-module><script>Polymer({is:"ha-labeled-slider",properties:{caption:{type:String},icon:{type:String},min:{type:Number},max:{type:Number},value:{type:Number,notify:!0}}})</script><dom-module id="ha-color-picker" assetpath="components/"><template><style>canvas{cursor:crosshair}</style><canvas width="[[width]]" height="[[height]]"></canvas></template></dom-module><script>Polymer({is:"ha-color-picker",properties:{color:{type:Object},width:{type:Number},height:{type:Number}},listeners:{mousedown:"onMouseDown",mouseup:"onMouseUp",touchstart:"onTouchStart",touchend:"onTouchEnd"},onMouseDown:function(t){this.onMouseMove(t),this.addEventListener("mousemove",this.onMouseMove)},onMouseUp:function(){this.removeEventListener("mousemove",this.onMouseMove)},onTouchStart:function(t){this.onTouchMove(t),this.addEventListener("touchmove",this.onTouchMove)},onTouchEnd:function(){this.removeEventListener("touchmove",this.onTouchMove)},onTouchMove:function(t){this.mouseMoveIsThrottled&&(this.mouseMoveIsThrottled=!1,this.processColorSelect(t.touches[0]),this.async(function(){this.mouseMoveIsThrottled=!0}.bind(this),100))},onMouseMove:function(t){this.mouseMoveIsThrottled&&(this.mouseMoveIsThrottled=!1,this.processColorSelect(t),this.async(function(){this.mouseMoveIsThrottled=!0}.bind(this),100))},processColorSelect:function(t){var o=this.canvas.getBoundingClientRect();t.clientX<o.left||t.clientX>=o.left+o.width||t.clientY<o.top||t.clientY>=o.top+o.height||this.onColorSelect(t.clientX-o.left,t.clientY-o.top)},onColorSelect:function(t,o){var e=this.context.getImageData(t,o,1,1).data;this.setColor({r:e[0],g:e[1],b:e[2]})},setColor:function(t){this.color=t,this.fire("colorselected",{rgb:this.color})},ready:function(){this.setColor=this.setColor.bind(this),this.mouseMoveIsThrottled=!0,this.canvas=this.children[0],this.context=this.canvas.getContext("2d"),this.drawGradient()},drawGradient:function(){var t,o,e,i,s;this.width&&this.height||(t=getComputedStyle(this)),o=this.width||parseInt(t.width,10),e=this.height||parseInt(t.height,10),i=this.context.createLinearGradient(0,0,o,0),i.addColorStop(0,"rgb(255,0,0)"),i.addColorStop(.16,"rgb(255,0,255)"),i.addColorStop(.32,"rgb(0,0,255)"),i.addColorStop(.48,"rgb(0,255,255)"),i.addColorStop(.64,"rgb(0,255,0)"),i.addColorStop(.8,"rgb(255,255,0)"),i.addColorStop(1,"rgb(255,0,0)"),this.context.fillStyle=i,this.context.fillRect(0,0,o,e),s=this.context.createLinearGradient(0,0,0,e),s.addColorStop(0,"rgba(255,255,255,1)"),s.addColorStop(.5,"rgba(255,255,255,0)"),s.addColorStop(.5,"rgba(0,0,0,0)"),s.addColorStop(1,"rgba(0,0,0,1)"),this.context.fillStyle=s,this.context.fillRect(0,0,o,e)}})</script><dom-module id="more-info-light" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex"></style><style>.effect_list{padding-bottom:16px}.brightness,.color_temp,.effect_list,.white_value{max-height:0;overflow:hidden;transition:max-height .5s ease-in}ha-color-picker{display:block;width:250px;max-height:0;overflow:hidden;transition:max-height .2s ease-in}.has-brightness .brightness,.has-color_temp .color_temp,.has-effect_list .effect_list,.has-white_value .white_value{max-height:84px}.has-rgb_color ha-color-picker{max-height:200px}</style><div class$="[[computeClassNames(stateObj)]]"><div class="effect_list"><paper-dropdown-menu label-float="" label="Effect"><paper-menu class="dropdown-content" selected="{{effectIndex}}"><template is="dom-repeat" items="[[stateObj.attributes.effect_list]]"><paper-item>[[item]]</paper-item></template></paper-menu></paper-dropdown-menu></div><div class="brightness"><ha-labeled-slider caption="Brightness" icon="mdi:brightness-5" max="255" value="{{brightnessSliderValue}}" on-change="brightnessSliderChanged"></ha-labeled-slider></div><div class="color_temp"><ha-labeled-slider caption="Color Temperature" icon="mdi:thermometer" min="154" max="500" value="{{ctSliderValue}}" on-change="ctSliderChanged"></ha-labeled-slider></div><div class="white_value"><ha-labeled-slider caption="White Value" icon="mdi:file-word-box" max="255" value="{{wvSliderValue}}" on-change="wvSliderChanged"></ha-labeled-slider></div><ha-color-picker on-colorselected="colorPicked" height="200" width="250"></ha-color-picker></div></template></dom-module><script>Polymer({is:"more-info-light",properties:{hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"},effectIndex:{type:Number,value:-1,observer:"effectChanged"},brightnessSliderValue:{type:Number,value:0},ctSliderValue:{type:Number,value:0},wvSliderValue:{type:Number,value:0}},stateObjChanged:function(t){t&&"on"===t.state?(this.brightnessSliderValue=t.attributes.brightness,this.ctSliderValue=t.attributes.color_temp,this.wvSliderValue=t.attributes.white_value,t.attributes.effect_list?this.effectIndex=t.attributes.effect_list.indexOf(t.attributes.effect):this.effectIndex=-1):this.brightnessSliderValue=0,this.async(function(){this.fire("iron-resize")}.bind(this),500)},computeClassNames:function(t){var e=window.hassUtil.attributeClassNames(t,["rgb_color","color_temp","white_value","effect_list"]),i=1;return t&&t.attributes.supported_features&i&&(e+=" has-brightness"),e},effectChanged:function(t){var e;""!==t&&t!==-1&&(e=this.stateObj.attributes.effect_list[t],e!==this.stateObj.attributes.effect&&this.hass.serviceActions.callService("light","turn_on",{entity_id:this.stateObj.entityId,effect:e}))},brightnessSliderChanged:function(t){var e=parseInt(t.target.value,10);isNaN(e)||(0===e?this.hass.serviceActions.callTurnOff(this.stateObj.entityId):this.hass.serviceActions.callService("light","turn_on",{entity_id:this.stateObj.entityId,brightness:e}))},ctSliderChanged:function(t){var e=parseInt(t.target.value,10);isNaN(e)||this.hass.serviceActions.callService("light","turn_on",{entity_id:this.stateObj.entityId,color_temp:e})},wvSliderChanged:function(t){var e=parseInt(t.target.value,10);isNaN(e)||this.hass.serviceActions.callService("light","turn_on",{entity_id:this.stateObj.entityId,white_value:e})},serviceChangeColor:function(t,e,i){t.serviceActions.callService("light","turn_on",{entity_id:e,rgb_color:[i.r,i.g,i.b]})},colorPicked:function(t){return this.skipColorPicked?void(this.colorChanged=!0):(this.color=t.detail.rgb,this.serviceChangeColor(this.hass,this.stateObj.entityId,this.color),this.colorChanged=!1,this.skipColorPicked=!0,void(this.colorDebounce=setTimeout(function(){this.colorChanged&&this.serviceChangeColor(this.hass,this.stateObj.entityId,this.color),this.skipColorPicked=!1}.bind(this),500)))}})</script><dom-module id="more-info-media_player" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>.media-state{text-transform:capitalize}paper-icon-button[highlight]{color:var(--accent-color)}.volume{margin-bottom:8px;max-height:0;overflow:hidden;transition:max-height .5s ease-in}.has-volume_level .volume{max-height:40px}iron-icon.source-input{padding:7px;margin-top:15px}paper-dropdown-menu.source-input{margin-left:10px}[hidden]{display:none!important}</style><div class$="[[computeClassNames(stateObj)]]"><div class="layout horizontal"><div class="flex"><paper-icon-button icon="mdi:power" highlight$="[[isOff]]" on-tap="handleTogglePower" hidden$="[[computeHidePowerButton(isOff, supportsTurnOn, supportsTurnOff)]]"></paper-icon-button></div><div><template is="dom-if" if="[[computeShowPlaybackControls(isOff, hasMediaControl)]]"><paper-icon-button icon="mdi:skip-previous" on-tap="handlePrevious" hidden$="[[!supportsPreviousTrack]]"></paper-icon-button><paper-icon-button icon="[[computePlaybackControlIcon(stateObj)]]" on-tap="handlePlaybackControl" hidden$="[[!computePlaybackControlIcon(stateObj)]]" highlight=""></paper-icon-button><paper-icon-button icon="mdi:skip-next" on-tap="handleNext" hidden$="[[!supportsNextTrack]]"></paper-icon-button></template></div></div><div class="volume_buttons center horizontal layout" hidden$="[[computeHideVolumeButtons(isOff, supportsVolumeButtons)]]"><paper-icon-button on-tap="handleVolumeTap" icon="mdi:volume-off"></paper-icon-button><paper-icon-button id="volumeDown" disabled$="[[isMuted]]" on-mousedown="handleVolumeDown" on-touchstart="handleVolumeDown" icon="mdi:volume-medium"></paper-icon-button><paper-icon-button id="volumeUp" disabled$="[[isMuted]]" on-mousedown="handleVolumeUp" on-touchstart="handleVolumeUp" icon="mdi:volume-high"></paper-icon-button></div><div class="volume center horizontal layout" hidden$="[[!supportsVolumeSet]]"><paper-icon-button on-tap="handleVolumeTap" hidden$="[[supportsVolumeButtons]]" icon="[[computeMuteVolumeIcon(isMuted)]]"></paper-icon-button><paper-slider disabled$="[[isMuted]]" min="0" max="100" value="[[volumeSliderValue]]" on-change="volumeSliderChanged" class="flex"></paper-slider></div><div class="controls layout horizontal justified" hidden$="[[computeHideSelectSource(isOff, supportsSelectSource)]]"><iron-icon class="source-input" icon="mdi:login-variant"></iron-icon><paper-dropdown-menu class="source-input" label-float="" label="Source"><paper-menu class="dropdown-content" selected="{{sourceIndex}}"><template is="dom-repeat" items="[[stateObj.attributes.source_list]]"><paper-item>[[item]]</paper-item></template></paper-menu></paper-dropdown-menu></div><div hidden$="[[computeHideTTS(ttsLoaded, supportsPlayMedia)]]" class="layout horizontal end"><paper-input label="Text to speak" class="flex" value="{{ttsMessage}}"></paper-input><paper-icon-button icon="mdi:send" on-tap="sendTTS"></paper-icon-button></div></div></template></dom-module><script>Polymer({is:"more-info-media_player",behaviors:[window.hassBehavior],properties:{ttsLoaded:{type:Boolean,bindNuclear:function(e){return e.configGetters.isComponentLoaded("tts")}},hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"},isOff:{type:Boolean,value:!1},isPlaying:{type:Boolean,value:!1},isMuted:{type:Boolean,value:!1},source:{type:String,value:""},sourceIndex:{type:Number,value:0,observer:"handleSourceChanged"},volumeSliderValue:{type:Number,value:0},ttsMessage:{type:String,value:""},supportsPause:{type:Boolean,value:!1},supportsVolumeSet:{type:Boolean,value:!1},supportsVolumeMute:{type:Boolean,value:!1},supportsPreviousTrack:{type:Boolean,value:!1},supportsNextTrack:{type:Boolean,value:!1},supportsTurnOn:{type:Boolean,value:!1},supportsTurnOff:{type:Boolean,value:!1},supportsPlayMedia:{type:Boolean,value:!1},supportsVolumeButtons:{type:Boolean,value:!1},supportsSelectSource:{type:Boolean,value:!1},supportsPlay:{type:Boolean,value:!1},hasMediaControl:{type:Boolean,value:!1}},HAS_MEDIA_STATES:["playing","paused","unknown"],stateObjChanged:function(e){e&&(this.isOff="off"===e.state,this.isPlaying="playing"===e.state,this.hasMediaControl=this.HAS_MEDIA_STATES.indexOf(e.state)!==-1,this.volumeSliderValue=100*e.attributes.volume_level,this.isMuted=e.attributes.is_volume_muted,this.source=e.attributes.source,this.supportsPause=0!==(1&e.attributes.supported_media_commands),this.supportsVolumeSet=0!==(4&e.attributes.supported_media_commands),this.supportsVolumeMute=0!==(8&e.attributes.supported_media_commands),this.supportsPreviousTrack=0!==(16&e.attributes.supported_media_commands),this.supportsNextTrack=0!==(32&e.attributes.supported_media_commands),this.supportsTurnOn=0!==(128&e.attributes.supported_media_commands),this.supportsTurnOff=0!==(256&e.attributes.supported_media_commands),this.supportsPlayMedia=0!==(512&e.attributes.supported_media_commands),this.supportsVolumeButtons=0!==(1024&e.attributes.supported_media_commands),this.supportsSelectSource=0!==(2048&e.attributes.supported_media_commands),this.supportsPlay=0!==(16384&e.attributes.supported_media_commands),void 0!==e.attributes.source_list&&(this.sourceIndex=e.attributes.source_list.indexOf(this.source))),this.async(function(){this.fire("iron-resize")}.bind(this),500)},computeClassNames:function(e){return window.hassUtil.attributeClassNames(e,["volume_level"])},computeIsOff:function(e){return"off"===e.state},computeMuteVolumeIcon:function(e){return e?"mdi:volume-off":"mdi:volume-high"},computeHideVolumeButtons:function(e,t){return!t||e},computeShowPlaybackControls:function(e,t){return!e&&t},computePlaybackControlIcon:function(){return this.isPlaying?this.supportsPause?"mdi:pause":"mdi:stop":this.supportsPlay?"mdi:play":null},computeHidePowerButton:function(e,t,s){return e?!t:!s},computeHideSelectSource:function(e,t){return e||!t},computeSelectedSource:function(e){return e.attributes.source_list.indexOf(e.attributes.source)},computeHideTTS:function(e,t){return!e||!t},handleTogglePower:function(){this.callService(this.isOff?"turn_on":"turn_off")},handlePrevious:function(){this.callService("media_previous_track")},handlePlaybackControl:function(){this.callService("media_play_pause")},handleNext:function(){this.callService("media_next_track")},handleSourceChanged:function(e){var t;!this.stateObj||void 0===this.stateObj.attributes.source_list||e<0||e>=this.stateObj.attributes.source_list.length||(t=this.stateObj.attributes.source_list[e],t!==this.stateObj.attributes.source&&this.callService("select_source",{source:t}))},handleVolumeTap:function(){this.supportsVolumeMute&&this.callService("volume_mute",{is_volume_muted:!this.isMuted})},handleVolumeUp:function(){var e=this.$.volumeUp;this.handleVolumeWorker("volume_up",e,!0)},handleVolumeDown:function(){var e=this.$.volumeDown;this.handleVolumeWorker("volume_down",e,!0)},handleVolumeWorker:function(e,t,s){(s||void 0!==t&&t.pointerDown)&&(this.callService(e),this.async(function(){this.handleVolumeWorker(e,t,!1)}.bind(this),500))},volumeSliderChanged:function(e){var t=parseFloat(e.target.value),s=t>0?t/100:0;this.callService("volume_set",{volume_level:s})},sendTTS:function(){var e,t,s=this.hass.reactor.evaluate(this.hass.serviceGetters.entityMap).get("tts").get("services").keySeq().toArray();for(t=0;t<s.length;t++)if(s[t].indexOf("_say")!==-1){e=s[t];break}e&&(this.hass.serviceActions.callService("tts",e,{entity_id:this.stateObj.entityId,message:this.ttsMessage}),this.ttsMessage="",document.activeElement.blur())},callService:function(e,t){var s=t||{};s.entity_id=this.stateObj.entityId,this.hass.serviceActions.callService("media_player",e,s)}})</script><dom-module id="more-info-camera" assetpath="more-infos/"><template><style>:host{max-width:640px}.camera-image{width:100%}</style><img class="camera-image" src="[[computeCameraImageUrl(hass, stateObj)]]" on-load="imageLoaded" alt="[[stateObj.entityDisplay]]"></template></dom-module><script>Polymer({is:"more-info-camera",properties:{hass:{type:Object},stateObj:{type:Object}},imageLoaded:function(){this.fire("iron-resize")},computeCameraImageUrl:function(e,t){return e.demo?"/demo/webcam.jpg":t?"/api/camera_proxy_stream/"+t.entityId+"?token="+t.attributes.access_token:"data:image/gif;base64,R0lGODlhAQABAAAAACw="}})</script><dom-module id="more-info-updater" assetpath="more-infos/"><template><style>.link{color:#03A9F4}</style><div><a class="link" href="https://home-assistant.io/getting-started/updating/" target="_blank">Update Instructions</a></div></template></dom-module><script>Polymer({is:"more-info-updater",properties:{stateObj:{type:Object}},computeReleaseNotes:function(t){return t.attributes.release_notes||"https://home-assistant.io/getting-started/updating/"}})</script><dom-module id="more-info-alarm_control_panel" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex"></style><div class="layout horizontal"><paper-input label="code" value="{{enteredCode}}" pattern="[[codeFormat]]" type="password" hidden$="[[!codeInputVisible]]" disabled="[[!codeInputEnabled]]"></paper-input></div><div class="layout horizontal"><paper-button on-tap="handleDisarmTap" hidden$="[[!disarmButtonVisible]]" disabled="[[!codeValid]]">Disarm</paper-button><paper-button on-tap="handleHomeTap" hidden$="[[!armHomeButtonVisible]]" disabled="[[!codeValid]]">Arm Home</paper-button><paper-button on-tap="handleAwayTap" hidden$="[[!armAwayButtonVisible]]" disabled="[[!codeValid]]">Arm Away</paper-button></div></template></dom-module><script>Polymer({is:"more-info-alarm_control_panel",properties:{hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"},enteredCode:{type:String,value:""},disarmButtonVisible:{type:Boolean,value:!1},armHomeButtonVisible:{type:Boolean,value:!1},armAwayButtonVisible:{type:Boolean,value:!1},codeInputVisible:{type:Boolean,value:!1},codeInputEnabled:{type:Boolean,value:!1},codeFormat:{type:String,value:""},codeValid:{type:Boolean,computed:"validateCode(enteredCode, codeFormat)"}},validateCode:function(e,t){var a=new RegExp(t);return null===t||a.test(e)},stateObjChanged:function(e){e&&(this.codeFormat=e.attributes.code_format,this.codeInputVisible=null!==this.codeFormat,this.codeInputEnabled="armed_home"===e.state||"armed_away"===e.state||"disarmed"===e.state||"pending"===e.state||"triggered"===e.state,this.disarmButtonVisible="armed_home"===e.state||"armed_away"===e.state||"pending"===e.state||"triggered"===e.state,this.armHomeButtonVisible="disarmed"===e.state,this.armAwayButtonVisible="disarmed"===e.state),this.async(function(){this.fire("iron-resize")}.bind(this),500)},handleDisarmTap:function(){this.callService("alarm_disarm",{code:this.enteredCode})},handleHomeTap:function(){this.callService("alarm_arm_home",{code:this.enteredCode})},handleAwayTap:function(){this.callService("alarm_arm_away",{code:this.enteredCode})},callService:function(e,t){var a=t||{};a.entity_id=this.stateObj.entityId,this.hass.serviceActions.callService("alarm_control_panel",e,a).then(function(){this.enteredCode=""}.bind(this))}})</script><dom-module id="more-info-lock" assetpath="more-infos/"><template><style>paper-input{display:inline-block}</style><div hidden$="[[!stateObj.attributes.code_format]]"><paper-input label="code" value="{{enteredCode}}" pattern="[[stateObj.attributes.code_format]]" type="password"></paper-input><paper-button on-tap="handleUnlockTap" hidden$="[[!isLocked]]">Unlock</paper-button><paper-button on-tap="handleLockTap" hidden$="[[isLocked]]">Lock</paper-button></div></template></dom-module><script>Polymer({is:"more-info-lock",properties:{hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"},enteredCode:{type:String,value:""}},handleUnlockTap:function(){this.callService("unlock",{code:this.enteredCode})},handleLockTap:function(){this.callService("lock",{code:this.enteredCode})},stateObjChanged:function(e){e&&(this.isLocked="locked"===e.state),this.async(function(){this.fire("iron-resize")}.bind(this),500)},callService:function(e,t){var i=t||{};i.entity_id=this.stateObj.entityId,this.hass.serviceActions.callService("lock",e,i)}})</script><script>Polymer({is:"more-info-content",properties:{hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"}},created:function(){this.style.display="block"},stateObjChanged:function(t){t&&window.hassUtil.dynamicContentUpdater(this,"MORE-INFO-"+window.hassUtil.stateMoreInfoType(t).toUpperCase(),{hass:this.hass,stateObj:t})}})</script><dom-module id="more-info-dialog" assetpath="dialogs/"><template><style>paper-dialog{font-size:14px;width:365px}paper-dialog[data-domain=camera]{width:auto}state-history-charts{position:relative;z-index:1;max-width:365px}state-card-content{margin-bottom:24px;font-size:14px}@media all and (max-width:450px),all and (max-height:500px){paper-dialog{margin:0;width:100%;max-height:calc(100% - 64px);position:fixed!important;bottom:0;left:0;right:0;overflow:scroll}}</style><paper-dialog id="dialog" with-backdrop="" opened="{{dialogOpen}}" data-domain$="[[stateObj.domain]]"><h2><state-card-content state-obj="[[stateObj]]" hass="[[hass]]" in-dialog=""></state-card-content></h2><template is="dom-if" if="[[showHistoryComponent]]"><state-history-charts state-history="[[stateHistory]]" is-loading-data="[[isLoadingHistoryData]]"></state-history-charts></template><paper-dialog-scrollable id="scrollable"><more-info-content state-obj="[[stateObj]]" hass="[[hass]]"></more-info-content></paper-dialog-scrollable></paper-dialog></template></dom-module><script>Polymer({is:"more-info-dialog",behaviors:[window.hassBehavior],properties:{hass:{type:Object},stateObj:{type:Object,bindNuclear:function(t){return t.moreInfoGetters.currentEntity},observer:"stateObjChanged"},stateHistory:{type:Object,bindNuclear:function(t){return[t.moreInfoGetters.currentEntityHistory,function(t){return!!t&&[t]}]}},isLoadingHistoryData:{type:Boolean,computed:"computeIsLoadingHistoryData(delayedDialogOpen, isLoadingEntityHistoryData)"},isLoadingEntityHistoryData:{type:Boolean,bindNuclear:function(t){return t.entityHistoryGetters.isLoadingEntityHistory}},hasHistoryComponent:{type:Boolean,bindNuclear:function(t){return t.configGetters.isComponentLoaded("history")},observer:"fetchHistoryData"},shouldFetchHistory:{type:Boolean,bindNuclear:function(t){return t.moreInfoGetters.isCurrentEntityHistoryStale},observer:"fetchHistoryData"},showHistoryComponent:{type:Boolean,value:!1,computed:"computeShowHistoryComponent(hasHistoryComponent, stateObj)"},dialogOpen:{type:Boolean,value:!1,observer:"dialogOpenChanged"},delayedDialogOpen:{type:Boolean,value:!1}},ready:function(){this.$.scrollable.dialogElement=this.$.dialog},computeIsLoadingHistoryData:function(t,e){return!t||e},computeShowHistoryComponent:function(t,e){return this.hasHistoryComponent&&e&&window.hassUtil.DOMAINS_WITH_NO_HISTORY.indexOf(e.domain)===-1},fetchHistoryData:function(){this.stateObj&&this.hasHistoryComponent&&this.shouldFetchHistory&&this.hass.entityHistoryActions.fetchRecent(this.stateObj.entityId)},stateObjChanged:function(t){return t?void this.async(function(){this.fetchHistoryData(),this.dialogOpen=!0}.bind(this),10):void(this.dialogOpen=!1)},dialogOpenChanged:function(t){t?this.async(function(){this.delayedDialogOpen=!0}.bind(this),10):!t&&this.stateObj&&(this.async(function(){this.hass.moreInfoActions.deselectEntity()}.bind(this),10),this.delayedDialogOpen=!1)}})</script><dom-module id="ha-voice-command-dialog" assetpath="dialogs/"><template><style>iron-icon{margin-right:8px}.content{width:300px;min-height:80px;font-size:18px}.icon{float:left}.text{margin-left:48px;margin-right:24px}.interimTranscript{color:#a9a9a9}@media all and (max-width:450px){paper-dialog{margin:0;width:100%;max-height:calc(100% - 64px);position:fixed!important;bottom:0;left:0;right:0;overflow:scroll}}</style><paper-dialog id="dialog" with-backdrop="" opened="{{dialogOpen}}"><div class="content"><div class="icon"><iron-icon icon="mdi:text-to-speech" hidden$="[[isTransmitting]]"></iron-icon><paper-spinner active$="[[isTransmitting]]" hidden$="[[!isTransmitting]]"></paper-spinner></div><div class="text"><span>{{finalTranscript}}</span> <span class="interimTranscript">[[interimTranscript]]</span> …</div></div></paper-dialog></template></dom-module><script>Polymer({is:"ha-voice-command-dialog",behaviors:[window.hassBehavior],properties:{hass:{type:Object},dialogOpen:{type:Boolean,value:!1,observer:"dialogOpenChanged"},finalTranscript:{type:String,bindNuclear:function(e){return e.voiceGetters.finalTranscript}},interimTranscript:{type:String,bindNuclear:function(e){return e.voiceGetters.extraInterimTranscript}},isTransmitting:{type:Boolean,bindNuclear:function(e){return e.voiceGetters.isTransmitting}},isListening:{type:Boolean,bindNuclear:function(e){return e.voiceGetters.isListening}},showListenInterface:{type:Boolean,computed:"computeShowListenInterface(isListening, isTransmitting)",observer:"showListenInterfaceChanged"}},computeShowListenInterface:function(e,n){return e||n},dialogOpenChanged:function(e){!e&&this.isListening&&this.hass.voiceActions.stop()},showListenInterfaceChanged:function(e){!e&&this.dialogOpen?this.dialogOpen=!1:e&&(this.dialogOpen=!0)}})</script><dom-module id="paper-icon-item" assetpath="../bower_components/paper-item/"><template><style include="paper-item-shared-styles"></style><style>:host{@apply(--layout-horizontal);@apply(--layout-center);@apply(--paper-font-subhead);@apply(--paper-item);@apply(--paper-icon-item)}.content-icon{@apply(--layout-horizontal);@apply(--layout-center);width:var(--paper-item-icon-width,56px);@apply(--paper-item-icon)}</style><div id="contentIcon" class="content-icon"><content select="[item-icon]"></content></div><content></content></template><script>Polymer({is:"paper-icon-item",behaviors:[Polymer.PaperItemBehavior]})</script></dom-module><dom-module id="ha-sidebar" assetpath="components/"><template><style include="iron-flex iron-flex-alignment iron-positioning">:host{--sidebar-text:{opacity:var(--dark-primary-opacity);font-weight:500;font-size:14px};display:block;overflow:auto;-ms-user-select:none;-webkit-user-select:none;-moz-user-select:none}app-toolbar{font-weight:400;opacity:var(--dark-primary-opacity);border-bottom:1px solid #e0e0e0}paper-menu{padding-bottom:0}paper-icon-item{--paper-icon-item:{cursor:pointer};--paper-item-icon:{color:#000;opacity:var(--dark-secondary-opacity)};--paper-item-selected:{color:var(--default-primary-color);background-color:#e8e8e8;opacity:1};}paper-icon-item.iron-selected{--paper-item-icon:{color:var(--default-primary-color);opacity:1};}paper-icon-item .item-text{@apply(--sidebar-text)}paper-icon-item.iron-selected .item-text{opacity:1}paper-icon-item.logout{margin-top:16px}.divider{height:1px;background-color:#000;margin:4px 0;opacity:var(--dark-divider-opacity)}.setting{@apply(--sidebar-text)}.subheader{@apply(--sidebar-text);padding:16px}.dev-tools{padding:0 8px;opacity:var(--dark-secondary-opacity)}</style><app-toolbar><div main-title="">Home Assistant</div><paper-icon-button icon="mdi:chevron-left" hidden$="[[narrow]]" on-tap="toggleMenu"></paper-icon-button></app-toolbar><paper-menu attr-for-selected="data-panel" selected="[[selected]]" on-iron-select="menuSelect"><paper-icon-item on-tap="menuClicked" data-panel="states"><iron-icon item-icon="" icon="mdi:apps"></iron-icon><span class="item-text">States</span></paper-icon-item><template is="dom-repeat" items="[[computePanels(panels)]]"><paper-icon-item on-tap="menuClicked" data-panel$="[[item.url_path]]"><iron-icon item-icon="" icon="[[item.icon]]"></iron-icon><span class="item-text">[[item.title]]</span></paper-icon-item></template><paper-icon-item on-tap="menuClicked" data-panel="logout" class="logout"><iron-icon item-icon="" icon="mdi:exit-to-app"></iron-icon><span class="item-text">Log Out</span></paper-icon-item></paper-menu><div><template is="dom-if" if="[[supportPush]]"><div class="divider"></div><paper-item class="horizontal layout justified"><div class="setting">Push Notifications</div><paper-toggle-button on-change="handlePushChange" checked="{{pushToggleChecked}}"></paper-toggle-button></paper-item></template><div class="divider"></div><div class="subheader">Developer Tools</div><div class="dev-tools layout horizontal justified"><paper-icon-button icon="mdi:remote" data-panel="dev-service" alt="Services" title="Services" on-tap="menuClicked"></paper-icon-button><paper-icon-button icon="mdi:code-tags" data-panel="dev-state" alt="States" title="States" on-tap="menuClicked"></paper-icon-button><paper-icon-button icon="mdi:radio-tower" data-panel="dev-event" alt="Events" title="Events" on-tap="menuClicked"></paper-icon-button><paper-icon-button icon="mdi:file-xml" data-panel="dev-template" alt="Templates" title="Templates" on-tap="menuClicked"></paper-icon-button><paper-icon-button icon="mdi:information-outline" data-panel="dev-info" alt="Info" title="Info" on-tap="menuClicked"></paper-icon-button></div></div></template></dom-module><script>Polymer({is:"ha-sidebar",behaviors:[window.hassBehavior],properties:{hass:{type:Object},menuShown:{type:Boolean},menuSelected:{type:String},narrow:{type:Boolean},selected:{type:String,bindNuclear:function(t){return t.navigationGetters.activePanelName}},panels:{type:Array,bindNuclear:function(t){return[t.navigationGetters.panels,function(t){return t.toJS()}]}},supportPush:{type:Boolean,value:!1,bindNuclear:function(t){return t.pushNotificationGetters.isSupported}},pushToggleChecked:{type:Boolean,bindNuclear:function(t){return t.pushNotificationGetters.isActive}}},created:function(){this._boundUpdateStyles=this.updateStyles.bind(this)},computePanels:function(t){var e={map:1,logbook:2,history:3},n=[];return Object.keys(t).forEach(function(e){t[e].title&&n.push(t[e])}),n.sort(function(t,n){var i=t.component_name in e,o=n.component_name in e;return i&&o?e[t.component_name]-e[n.component_name]:i?-1:o?1:t.title>n.title?1:t.title<n.title?-1:0}),n},menuSelect:function(){this.debounce("updateStyles",this._boundUpdateStyles,1)},menuClicked:function(t){for(var e=t.target,n=5,i=e.getAttribute("data-panel");n&&!i;)e=e.parentElement,i=e.getAttribute("data-panel"),n--;n&&this.selectPanel(i)},toggleMenu:function(){this.fire("close-menu")},selectPanel:function(t){if(t!==this.selected){if("logout"===t)return void this.handleLogOut();this.hass.navigationActions.navigate.apply(null,t.split("/")),this.debounce("updateStyles",this._boundUpdateStyles,1)}},handlePushChange:function(t){t.target.checked?this.hass.pushNotificationActions.subscribePushNotifications().then(function(t){this.pushToggleChecked=t}.bind(this)):this.hass.pushNotificationActions.unsubscribePushNotifications().then(function(t){this.pushToggleChecked=!t}.bind(this))},handleLogOut:function(){this.hass.authActions.logOut()}})</script><dom-module id="home-assistant-main" assetpath="layouts/"><template><notification-manager hass="[[hass]]"></notification-manager><more-info-dialog hass="[[hass]]"></more-info-dialog><ha-voice-command-dialog hass="[[hass]]"></ha-voice-command-dialog><iron-media-query query="(max-width: 870px)" query-matches="{{narrow}}"></iron-media-query><paper-drawer-panel id="drawer" force-narrow="[[computeForceNarrow(narrow, showSidebar)]]" responsive-width="0" disable-swipe="[[isSelectedMap]]" disable-edge-swipe="[[isSelectedMap]]"><ha-sidebar drawer="" narrow="[[narrow]]" hass="[[hass]]"></ha-sidebar><iron-pages main="" attr-for-selected="id" fallback-selection="panel-resolver" selected="[[activePanel]]" selected-attribute="panel-visible"><partial-cards id="states" narrow="[[narrow]]" hass="[[hass]]" show-menu="[[showSidebar]]"></partial-cards><partial-panel-resolver id="panel-resolver" narrow="[[narrow]]" hass="[[hass]]" show-menu="[[showSidebar]]"></partial-panel-resolver></iron-pages></paper-drawer-panel></template></dom-module><script>Polymer({is:"home-assistant-main",behaviors:[window.hassBehavior],properties:{hass:{type:Object},narrow:{type:Boolean,value:!0},activePanel:{type:String,bindNuclear:function(e){return e.navigationGetters.activePanelName},observer:"activePanelChanged"},showSidebar:{type:Boolean,value:!1,bindNuclear:function(e){return e.navigationGetters.showSidebar}}},listeners:{"open-menu":"openMenu","close-menu":"closeMenu"},openMenu:function(){this.narrow?this.$.drawer.openDrawer():this.hass.navigationActions.showSidebar(!0)},closeMenu:function(){this.$.drawer.closeDrawer(),this.showSidebar&&this.hass.navigationActions.showSidebar(!1)},activePanelChanged:function(){this.narrow&&this.$.drawer.closeDrawer()},attached:function(){window.removeInitMsg(),this.hass.startUrlSync()},computeForceNarrow:function(e,n){return e||!n},detached:function(){this.hass.stopUrlSync()}})</script></div><dom-module id="home-assistant"><template><template is="dom-if" if="[[loaded]]"><home-assistant-main hass="[[hass]]"></home-assistant-main></template><template is="dom-if" if="[[!loaded]]"><login-form hass="[[hass]]" force-show-loading="[[computeForceShowLoading(dataLoaded, iconsLoaded)]]"></login-form></template></template></dom-module><script>Polymer({is:"home-assistant",hostAttributes:{icons:null},behaviors:[window.hassBehavior],properties:{hass:{type:Object,value:window.hass},icons:{type:String},dataLoaded:{type:Boolean,bindNuclear:function(o){return o.syncGetters.isDataLoaded}},iconsLoaded:{type:Boolean,value:!1},loaded:{type:Boolean,computed:"computeLoaded(dataLoaded, iconsLoaded)"}},computeLoaded:function(o,t){return o&&t},computeForceShowLoading:function(o,t){return o&&!t},loadIcons:function(){var o=function(){this.iconsLoaded=!0}.bind(this);this.importHref("/static/mdi-"+this.icons+".html",o,function(){this.importHref("/static/mdi.html",o,o)})},ready:function(){this.loadIcons()}})</script></body></html> \ No newline at end of file +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){}}(c,e,f),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<this.effect.children.length;e++)this.effect.children[e]._animation=t,this._childAnimations[e]._setExternalAnimation(t)},_constructChildAnimations:function(){if(this.effect&&this._isGroup){var t=this.effect._timing.delay;this._removeChildAnimations(),this.effect.children.forEach(function(i){var n=e.timeline._play(i);this._childAnimations.push(n),n.playbackRate=this.playbackRate,this._paused&&n.pause(),i._animation=this.effect._animation,this._arrangeChildren(n,t),this.effect instanceof window.SequenceEffect&&(t+=e.groupChildDuration(i))}.bind(this))}},_arrangeChildren:function(t,e){null===this.startTime?t.currentTime=this.currentTime-e/this.playbackRate:t.startTime!==this.startTime+e/this.playbackRate&&(t.startTime=this.startTime+e/this.playbackRate)},get timeline(){return this._timeline},get playState(){return this._animation?this._animation.playState:"idle"},get finished(){return window.Promise?(this._finishedPromise||(e.animationsWithPromises.indexOf(this)==-1&&e.animationsWithPromises.push(this),this._finishedPromise=new Promise(function(t,e){this._resolveFinishedPromise=function(){t(this)},this._rejectFinishedPromise=function(){e({type:DOMException.ABORT_ERR,name:"AbortError"})}}.bind(this)),"finished"==this.playState&&this._resolveFinishedPromise()),this._finishedPromise):(console.warn("Animation Promises require JavaScript Promise constructor"),null)},get ready(){return window.Promise?(this._readyPromise||(e.animationsWithPromises.indexOf(this)==-1&&e.animationsWithPromises.push(this),this._readyPromise=new Promise(function(t,e){this._resolveReadyPromise=function(){t(this)},this._rejectReadyPromise=function(){e({type:DOMException.ABORT_ERR,name:"AbortError"})}}.bind(this)),"pending"!==this.playState&&this._resolveReadyPromise()),this._readyPromise):(console.warn("Animation Promises require JavaScript Promise constructor"),null)},get onfinish(){return this._animation.onfinish},set onfinish(t){"function"==typeof t?this._animation.onfinish=function(e){e.target=this,t.call(this,e)}.bind(this):this._animation.onfinish=t},get oncancel(){return this._animation.oncancel},set oncancel(t){"function"==typeof t?this._animation.oncancel=function(e){e.target=this,t.call(this,e)}.bind(this):this._animation.oncancel=t},get currentTime(){this._updatePromises();var t=this._animation.currentTime;return this._updatePromises(),t},set currentTime(t){this._updatePromises(),this._animation.currentTime=isFinite(t)?t:Math.sign(t)*Number.MAX_VALUE,this._register(),this._forEachChild(function(e,i){e.currentTime=t-i}),this._updatePromises()},get startTime(){return this._animation.startTime},set startTime(t){this._updatePromises(),this._animation.startTime=isFinite(t)?t:Math.sign(t)*Number.MAX_VALUE,this._register(),this._forEachChild(function(e,i){e.startTime=t+i}),this._updatePromises()},get playbackRate(){return this._animation.playbackRate},set playbackRate(t){this._updatePromises();var e=this.currentTime;this._animation.playbackRate=t,this._forEachChild(function(e){e.playbackRate=t}),null!==e&&(this.currentTime=e),this._updatePromises()},play:function(){this._updatePromises(),this._paused=!1,this._animation.play(),this._timeline._animations.indexOf(this)==-1&&this._timeline._animations.push(this),this._register(),e.awaitStartTime(this),this._forEachChild(function(t){var e=t.currentTime;t.play(),t.currentTime=e}),this._updatePromises()},pause:function(){this._updatePromises(),this.currentTime&&(this._holdTime=this.currentTime),this._animation.pause(),this._register(),this._forEachChild(function(t){t.pause()}),this._paused=!0,this._updatePromises()},finish:function(){this._updatePromises(),this._animation.finish(),this._register(),this._updatePromises()},cancel:function(){this._updatePromises(),this._animation.cancel(),this._register(),this._removeChildAnimations(),this._updatePromises()},reverse:function(){this._updatePromises();var t=this.currentTime;this._animation.reverse(),this._forEachChild(function(t){t.reverse()}),null!==t&&(this.currentTime=t),this._updatePromises()},addEventListener:function(t,e){var i=e;"function"==typeof e&&(i=function(t){t.target=this,e.call(this,t)}.bind(this),e._wrapper=i),this._animation.addEventListener(t,i)},removeEventListener:function(t,e){this._animation.removeEventListener(t,e&&e._wrapper||e)},_removeChildAnimations:function(){for(;this._childAnimations.length;)this._childAnimations.pop().cancel()},_forEachChild:function(e){var i=0;if(this.effect.children&&this._childAnimations.length<this.effect.children.length&&this._constructChildAnimations(),this._childAnimations.forEach(function(t){e.call(this,t,i),this.effect instanceof window.SequenceEffect&&(i+=t.effect.activeDuration)}.bind(this)),"pending"!=this.playState){var n=this.effect._timing,r=this.currentTime;null!==r&&(r=t.calculateIterationProgress(t.calculateActiveDuration(n),r,n)),(null==r||isNaN(r))&&this._removeChildAnimations()}}},window.Animation=e.Animation}(c,e,f),function(t,e,i){function n(e){this._frames=t.normalizeKeyframes(e)}function r(){for(var t=!1;u.length;){var e=u.shift();e._updateChildren(),t=!0}return t}var o=function(t){if(t._animation=void 0,t instanceof window.SequenceEffect||t instanceof window.GroupEffect)for(var e=0;e<t.children.length;e++)o(t.children[e])};e.removeMulti=function(t){for(var e=[],i=0;i<t.length;i++){var n=t[i];n._parent?(e.indexOf(n._parent)==-1&&e.push(n._parent),n._parent.children.splice(n._parent.children.indexOf(n),1),n._parent=null,o(n)):n._animation&&n._animation.effect==n&&(n._animation.cancel(),n._animation.effect=new KeyframeEffect(null,[]),n._animation._callback&&(n._animation._callback._animation=null),n._animation._rebuildUnderlyingAnimation(),o(n))}for(i=0;i<e.length;i++)e[i]._rebuild()},e.KeyframeEffect=function(e,i,r,o){return this.target=e,this._parent=null,r=t.numericTimingToObject(r),this._timingInput=t.cloneTimingInput(r),this._timing=t.normalizeTimingInput(r),this.timing=t.makeTiming(r,!1,this),this.timing._effect=this,"function"==typeof i?(t.deprecated("Custom KeyframeEffect","2015-06-22","Use KeyframeEffect.onsample instead."),this._normalizedKeyframes=i):this._normalizedKeyframes=new n(i),this._keyframes=i,this.activeDuration=t.calculateActiveDuration(this._timing),this._id=o,this},e.KeyframeEffect.prototype={getFrames:function(){return"function"==typeof this._normalizedKeyframes?this._normalizedKeyframes:this._normalizedKeyframes._frames},set onsample(t){if("function"==typeof this.getFrames())throw new Error("Setting onsample on custom effect KeyframeEffect is not supported.");this._onsample=t,this._animation&&this._animation._rebuildUnderlyingAnimation()},get parent(){return this._parent},clone:function(){if("function"==typeof this.getFrames())throw new Error("Cloning custom effects is not supported.");var e=new KeyframeEffect(this.target,[],t.cloneTimingInput(this._timingInput),this._id);return e._normalizedKeyframes=this._normalizedKeyframes,e._keyframes=this._keyframes,e},remove:function(){e.removeMulti([this])}};var a=Element.prototype.animate;Element.prototype.animate=function(t,i){var n="";return i&&i.id&&(n=i.id),e.timeline._play(new e.KeyframeEffect(this,t,i,n))};var s=document.createElementNS("http://www.w3.org/1999/xhtml","div");e.newUnderlyingAnimationForKeyframeEffect=function(t){if(t){var e=t.target||s,i=t._keyframes;"function"==typeof i&&(i=[]);var n=t._timingInput;n.id=t._id}else var e=s,i=[],n=0;return a.apply(e,[i,n])},e.bindAnimationForKeyframeEffect=function(t){t.effect&&"function"==typeof t.effect._normalizedKeyframes&&e.bindAnimationForCustomEffect(t)};var u=[];e.awaitStartTime=function(t){null===t.startTime&&t._isGroup&&(0==u.length&&requestAnimationFrame(r),u.push(t))};var c=window.getComputedStyle;Object.defineProperty(window,"getComputedStyle",{configurable:!0,enumerable:!0,value:function(){e.timeline._updateAnimationsPromises();var t=c.apply(this,arguments);return r()&&(t=c.apply(this,arguments)),e.timeline._updateAnimationsPromises(),t}}),window.KeyframeEffect=e.KeyframeEffect,window.Element.prototype.getAnimations=function(){return document.timeline.getAnimations().filter(function(t){return null!==t.effect&&t.effect.target==this}.bind(this))}}(c,e,f),function(t,e,i){function n(t){t._registered||(t._registered=!0,a.push(t),s||(s=!0,requestAnimationFrame(r)))}function r(t){var e=a;a=[],e.sort(function(t,e){return t._sequenceNumber-e._sequenceNumber}),e=e.filter(function(t){t();var e=t._animation?t._animation.playState:"idle";return"running"!=e&&"pending"!=e&&(t._registered=!1),t._registered}),a.push.apply(a,e),a.length?(s=!0,requestAnimationFrame(r)):s=!1}var o=(document.createElementNS("http://www.w3.org/1999/xhtml","div"),0);e.bindAnimationForCustomEffect=function(e){var i,r=e.effect.target,a="function"==typeof e.effect.getFrames();i=a?e.effect.getFrames():e.effect._onsample;var s=e.effect.timing,u=null;s=t.normalizeTimingInput(s);var c=function(){var n=c._animation?c._animation.currentTime:null;null!==n&&(n=t.calculateIterationProgress(t.calculateActiveDuration(s),n,s),isNaN(n)&&(n=null)),n!==u&&(a?i(n,r,e.effect):i(n,e.effect,e.effect._animation)),u=n};c._animation=e,c._registered=!1,c._sequenceNumber=o++,e._callback=c,n(c)};var a=[],s=!1;e.Animation.prototype._register=function(){this._callback&&n(this._callback)}}(c,e,f),function(t,e,i){function n(t){return t._timing.delay+t.activeDuration+t._timing.endDelay}function r(e,i,n){this._id=n,this._parent=null,this.children=e||[],this._reparent(this.children),i=t.numericTimingToObject(i),this._timingInput=t.cloneTimingInput(i),this._timing=t.normalizeTimingInput(i,!0),this.timing=t.makeTiming(i,!0,this),this.timing._effect=this,"auto"===this._timing.duration&&(this._timing.duration=this.activeDuration)}window.SequenceEffect=function(){r.apply(this,arguments)},window.GroupEffect=function(){r.apply(this,arguments)},r.prototype={_isAncestor:function(t){for(var e=this;null!==e;){if(e==t)return!0;e=e._parent}return!1},_rebuild:function(){for(var t=this;t;)"auto"===t.timing.duration&&(t._timing.duration=t.activeDuration),t=t._parent;this._animation&&this._animation._rebuildUnderlyingAnimation()},_reparent:function(t){e.removeMulti(t);for(var i=0;i<t.length;i++)t[i]._parent=this},_putChild:function(t,e){for(var i=e?"Cannot append an ancestor or self":"Cannot prepend an ancestor or self",n=0;n<t.length;n++)if(this._isAncestor(t[n]))throw{type:DOMException.HIERARCHY_REQUEST_ERR,name:"HierarchyRequestError",message:i};for(var n=0;n<t.length;n++)e?this.children.push(t[n]):this.children.unshift(t[n]);this._reparent(t),this._rebuild()},append:function(){this._putChild(arguments,!0)},prepend:function(){this._putChild(arguments,!1)},get parent(){return this._parent},get firstChild(){return this.children.length?this.children[0]:null},get lastChild(){return this.children.length?this.children[this.children.length-1]:null},clone:function(){for(var e=t.cloneTimingInput(this._timingInput),i=[],n=0;n<this.children.length;n++)i.push(this.children[n].clone());return this instanceof GroupEffect?new GroupEffect(i,e):new SequenceEffect(i,e)},remove:function(){e.removeMulti([this])}},window.SequenceEffect.prototype=Object.create(r.prototype),Object.defineProperty(window.SequenceEffect.prototype,"activeDuration",{get:function(){var t=0;return this.children.forEach(function(e){t+=n(e)}),Math.max(t,0)}}),window.GroupEffect.prototype=Object.create(r.prototype),Object.defineProperty(window.GroupEffect.prototype,"activeDuration",{get:function(){var t=0;return this.children.forEach(function(e){t=Math.max(t,n(e))}),t}}),e.newUnderlyingAnimationForGroup=function(i){var n,r=null,o=function(e){var i=n._wrapper;if(i&&"pending"!=i.playState&&i.effect)return null==e?void i._removeChildAnimations():0==e&&i.playbackRate<0&&(r||(r=t.normalizeTimingInput(i.effect.timing)),e=t.calculateIterationProgress(t.calculateActiveDuration(r),-1,r),isNaN(e)||null==e)?(i._forEachChild(function(t){t.currentTime=-1}),void i._removeChildAnimations()):void 0},a=new KeyframeEffect(null,[],i._timing,i._id);return a.onsample=o,n=e.timeline._play(a)},e.bindAnimationForGroup=function(t){t._animation._wrapper=t,t._isGroup=!0,e.awaitStartTime(t),t._constructChildAnimations(),t._setExternalAnimation(t)},e.groupChildDuration=n}(c,e,f),b.true=a}({},function(){return this}())</script><script>Polymer({is:"opaque-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(e){var i=e.node;return this._effect=new KeyframeEffect(i,[{opacity:"1"},{opacity:"1"}],this.timingFromConfig(e)),i.style.opacity="0",this._effect},complete:function(e){e.node.style.opacity=""}})</script><script>!function(){"use strict";var e={pageX:0,pageY:0},t=null,l=[];Polymer.IronDropdownScrollManager={get currentLockingElement(){return this._lockingElements[this._lockingElements.length-1]},elementIsScrollLocked:function(e){var t=this.currentLockingElement;if(void 0===t)return!1;var l;return!!this._hasCachedLockedElement(e)||!this._hasCachedUnlockedElement(e)&&(l=!!t&&t!==e&&!this._composedTreeContains(t,e),l?this._lockedElementCache.push(e):this._unlockedElementCache.push(e),l)},pushScrollLock:function(e){this._lockingElements.indexOf(e)>=0||(0===this._lockingElements.length&&this._lockScrollInteractions(),this._lockingElements.push(e),this._lockedElementCache=[],this._unlockedElementCache=[])},removeScrollLock:function(e){var t=this._lockingElements.indexOf(e);t!==-1&&(this._lockingElements.splice(t,1),this._lockedElementCache=[],this._unlockedElementCache=[],0===this._lockingElements.length&&this._unlockScrollInteractions())},_lockingElements:[],_lockedElementCache:null,_unlockedElementCache:null,_hasCachedLockedElement:function(e){return this._lockedElementCache.indexOf(e)>-1},_hasCachedUnlockedElement:function(e){return this._unlockedElementCache.indexOf(e)>-1},_composedTreeContains:function(e,t){var l,n,o,r;if(e.contains(t))return!0;for(l=Polymer.dom(e).querySelectorAll("content"),o=0;o<l.length;++o)for(n=Polymer.dom(l[o]).getDistributedNodes(),r=0;r<n.length;++r)if(this._composedTreeContains(n[r],t))return!0;return!1},_scrollInteractionHandler:function(t){if(t.cancelable&&this._shouldPreventScrolling(t)&&t.preventDefault(),t.targetTouches){var l=t.targetTouches[0];e.pageX=l.pageX,e.pageY=l.pageY}},_lockScrollInteractions:function(){this._boundScrollHandler=this._boundScrollHandler||this._scrollInteractionHandler.bind(this),document.addEventListener("wheel",this._boundScrollHandler,!0),document.addEventListener("mousewheel",this._boundScrollHandler,!0),document.addEventListener("DOMMouseScroll",this._boundScrollHandler,!0),document.addEventListener("touchstart",this._boundScrollHandler,!0),document.addEventListener("touchmove",this._boundScrollHandler,!0)},_unlockScrollInteractions:function(){document.removeEventListener("wheel",this._boundScrollHandler,!0),document.removeEventListener("mousewheel",this._boundScrollHandler,!0),document.removeEventListener("DOMMouseScroll",this._boundScrollHandler,!0),document.removeEventListener("touchstart",this._boundScrollHandler,!0),document.removeEventListener("touchmove",this._boundScrollHandler,!0)},_shouldPreventScrolling:function(e){var n=Polymer.dom(e).rootTarget;if("touchmove"!==e.type&&t!==n&&(t=n,l=this._getScrollableNodes(Polymer.dom(e).path)),!l.length)return!0;if("touchstart"===e.type)return!1;var o=this._getScrollInfo(e);return!this._getScrollingNode(l,o.deltaX,o.deltaY)},_getScrollableNodes:function(e){for(var t=[],l=e.indexOf(this.currentLockingElement),n=0;n<=l;n++)if(e[n].nodeType===Node.ELEMENT_NODE){var o=e[n],r=o.style;"scroll"!==r.overflow&&"auto"!==r.overflow&&(r=window.getComputedStyle(o)),"scroll"!==r.overflow&&"auto"!==r.overflow||t.push(o)}return t},_getScrollingNode:function(e,t,l){if(t||l)for(var n=Math.abs(l)>=Math.abs(t),o=0;o<e.length;o++){var r=e[o],c=!1;if(c=n?l<0?r.scrollTop>0:r.scrollTop<r.scrollHeight-r.clientHeight:t<0?r.scrollLeft>0:r.scrollLeft<r.scrollWidth-r.clientWidth)return r}},_getScrollInfo:function(t){var l={deltaX:t.deltaX,deltaY:t.deltaY};if("deltaX"in t);else if("wheelDeltaX"in t)l.deltaX=-t.wheelDeltaX,l.deltaY=-t.wheelDeltaY;else if("axis"in t)l.deltaX=1===t.axis?t.detail:0,l.deltaY=2===t.axis?t.detail:0;else if(t.targetTouches){var n=t.targetTouches[0];l.deltaX=e.pageX-n.pageX,l.deltaY=e.pageY-n.pageY}return l}}}()</script><dom-module id="iron-dropdown" assetpath="../bower_components/iron-dropdown/"><template><style>:host{position:fixed}#contentWrapper ::content>*{overflow:auto}#contentWrapper.animating ::content>*{overflow:hidden}</style><div id="contentWrapper"><content id="content" select=".dropdown-content"></content></div></template><script>!function(){"use strict";Polymer({is:"iron-dropdown",behaviors:[Polymer.IronControlState,Polymer.IronA11yKeysBehavior,Polymer.IronOverlayBehavior,Polymer.NeonAnimationRunnerBehavior],properties:{horizontalAlign:{type:String,value:"left",reflectToAttribute:!0},verticalAlign:{type:String,value:"top",reflectToAttribute:!0},openAnimationConfig:{type:Object},closeAnimationConfig:{type:Object},focusTarget:{type:Object},noAnimations:{type:Boolean,value:!1},allowOutsideScroll:{type:Boolean,value:!1},_boundOnCaptureScroll:{type:Function,value:function(){return this._onCaptureScroll.bind(this)}}},listeners:{"neon-animation-finish":"_onNeonAnimationFinish"},observers:["_updateOverlayPosition(positionTarget, verticalAlign, horizontalAlign, verticalOffset, horizontalOffset)"],get containedElement(){return Polymer.dom(this.$.content).getDistributedNodes()[0]},get _focusTarget(){return this.focusTarget||this.containedElement},ready:function(){this._scrollTop=0,this._scrollLeft=0,this._refitOnScrollRAF=null},attached:function(){this.sizingTarget&&this.sizingTarget!==this||(this.sizingTarget=this.containedElement||this)},detached:function(){this.cancelAnimation(),document.removeEventListener("scroll",this._boundOnCaptureScroll),Polymer.IronDropdownScrollManager.removeScrollLock(this)},_openedChanged:function(){this.opened&&this.disabled?this.cancel():(this.cancelAnimation(),this._updateAnimationConfig(),this._saveScrollPosition(),this.opened?(document.addEventListener("scroll",this._boundOnCaptureScroll),!this.allowOutsideScroll&&Polymer.IronDropdownScrollManager.pushScrollLock(this)):(document.removeEventListener("scroll",this._boundOnCaptureScroll),Polymer.IronDropdownScrollManager.removeScrollLock(this)),Polymer.IronOverlayBehaviorImpl._openedChanged.apply(this,arguments))},_renderOpened:function(){!this.noAnimations&&this.animationConfig.open?(this.$.contentWrapper.classList.add("animating"),this.playAnimation("open")):Polymer.IronOverlayBehaviorImpl._renderOpened.apply(this,arguments)},_renderClosed:function(){!this.noAnimations&&this.animationConfig.close?(this.$.contentWrapper.classList.add("animating"),this.playAnimation("close")):Polymer.IronOverlayBehaviorImpl._renderClosed.apply(this,arguments)},_onNeonAnimationFinish:function(){this.$.contentWrapper.classList.remove("animating"),this.opened?this._finishRenderOpened():this._finishRenderClosed()},_onCaptureScroll:function(){this.allowOutsideScroll?(this._refitOnScrollRAF&&window.cancelAnimationFrame(this._refitOnScrollRAF),this._refitOnScrollRAF=window.requestAnimationFrame(this.refit.bind(this))):this._restoreScrollPosition()},_saveScrollPosition:function(){document.scrollingElement?(this._scrollTop=document.scrollingElement.scrollTop,this._scrollLeft=document.scrollingElement.scrollLeft):(this._scrollTop=Math.max(document.documentElement.scrollTop,document.body.scrollTop),this._scrollLeft=Math.max(document.documentElement.scrollLeft,document.body.scrollLeft))},_restoreScrollPosition:function(){document.scrollingElement?(document.scrollingElement.scrollTop=this._scrollTop,document.scrollingElement.scrollLeft=this._scrollLeft):(document.documentElement.scrollTop=this._scrollTop,document.documentElement.scrollLeft=this._scrollLeft,document.body.scrollTop=this._scrollTop,document.body.scrollLeft=this._scrollLeft)},_updateAnimationConfig:function(){for(var o=this.containedElement,t=[].concat(this.openAnimationConfig||[]).concat(this.closeAnimationConfig||[]),n=0;n<t.length;n++)t[n].node=o;this.animationConfig={open:this.openAnimationConfig,close:this.closeAnimationConfig}},_updateOverlayPosition:function(){this.isAttached&&this.notifyResize()},_applyFocus:function(){var o=this.focusTarget||this.containedElement;o&&this.opened&&!this.noAutoFocus?o.focus():Polymer.IronOverlayBehaviorImpl._applyFocus.apply(this,arguments)}})}()</script></dom-module><script>Polymer({is:"fade-in-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(i){var e=i.node;return this._effect=new KeyframeEffect(e,[{opacity:"0"},{opacity:"1"}],this.timingFromConfig(i)),this._effect}})</script><script>Polymer({is:"fade-out-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(e){var i=e.node;return this._effect=new KeyframeEffect(i,[{opacity:"1"},{opacity:"0"}],this.timingFromConfig(e)),this._effect}})</script><script>Polymer({is:"paper-menu-grow-height-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(e){var i=e.node,t=i.getBoundingClientRect(),n=t.height;return this._effect=new KeyframeEffect(i,[{height:n/2+"px"},{height:n+"px"}],this.timingFromConfig(e)),this._effect}}),Polymer({is:"paper-menu-grow-width-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(e){var i=e.node,t=i.getBoundingClientRect(),n=t.width;return this._effect=new KeyframeEffect(i,[{width:n/2+"px"},{width:n+"px"}],this.timingFromConfig(e)),this._effect}}),Polymer({is:"paper-menu-shrink-width-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(e){var i=e.node,t=i.getBoundingClientRect(),n=t.width;return this._effect=new KeyframeEffect(i,[{width:n+"px"},{width:n-n/20+"px"}],this.timingFromConfig(e)),this._effect}}),Polymer({is:"paper-menu-shrink-height-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(e){var i=e.node,t=i.getBoundingClientRect(),n=t.height;t.top;return this.setPrefixedProperty(i,"transformOrigin","0 0"),this._effect=new KeyframeEffect(i,[{height:n+"px",transform:"translateY(0)"},{height:n/2+"px",transform:"translateY(-20px)"}],this.timingFromConfig(e)),this._effect}})</script><dom-module id="paper-menu-button" assetpath="../bower_components/paper-menu-button/"><template><style>:host{display:inline-block;position:relative;padding:8px;outline:0;@apply(--paper-menu-button)}:host([disabled]){cursor:auto;color:var(--disabled-text-color);@apply(--paper-menu-button-disabled)}iron-dropdown{@apply(--paper-menu-button-dropdown)}.dropdown-content{@apply(--shadow-elevation-2dp);position:relative;border-radius:2px;background-color:var(--paper-menu-button-dropdown-background,--primary-background-color);@apply(--paper-menu-button-content)}:host([vertical-align=top]) .dropdown-content{margin-bottom:20px;margin-top:-10px;top:10px}:host([vertical-align=bottom]) .dropdown-content{bottom:10px;margin-bottom:-10px;margin-top:20px}#trigger{cursor:pointer}</style><div id="trigger" on-tap="toggle"><content select=".dropdown-trigger"></content></div><iron-dropdown id="dropdown" opened="{{opened}}" horizontal-align="[[horizontalAlign]]" vertical-align="[[verticalAlign]]" dynamic-align="[[dynamicAlign]]" horizontal-offset="[[horizontalOffset]]" vertical-offset="[[verticalOffset]]" no-overlap="[[noOverlap]]" open-animation-config="[[openAnimationConfig]]" close-animation-config="[[closeAnimationConfig]]" no-animations="[[noAnimations]]" focus-target="[[_dropdownContent]]" allow-outside-scroll="[[allowOutsideScroll]]" restore-focus-on-close="[[restoreFocusOnClose]]" on-iron-overlay-canceled="__onIronOverlayCanceled"><div class="dropdown-content"><content id="content" select=".dropdown-content"></content></div></iron-dropdown></template><script>!function(){"use strict";var e={ANIMATION_CUBIC_BEZIER:"cubic-bezier(.3,.95,.5,1)",MAX_ANIMATION_TIME_MS:400},n=Polymer({is:"paper-menu-button",behaviors:[Polymer.IronA11yKeysBehavior,Polymer.IronControlState],properties:{opened:{type:Boolean,value:!1,notify:!0,observer:"_openedChanged"},horizontalAlign:{type:String,value:"left",reflectToAttribute:!0},verticalAlign:{type:String,value:"top",reflectToAttribute:!0},dynamicAlign:{type:Boolean},horizontalOffset:{type:Number,value:0,notify:!0},verticalOffset:{type:Number,value:0,notify:!0},noOverlap:{type:Boolean},noAnimations:{type:Boolean,value:!1},ignoreSelect:{type:Boolean,value:!1},closeOnActivate:{type:Boolean,value:!1},openAnimationConfig:{type:Object,value:function(){return[{name:"fade-in-animation",timing:{delay:100,duration:200}},{name:"paper-menu-grow-width-animation",timing:{delay:100,duration:150,easing:e.ANIMATION_CUBIC_BEZIER}},{name:"paper-menu-grow-height-animation",timing:{delay:100,duration:275,easing:e.ANIMATION_CUBIC_BEZIER}}]}},closeAnimationConfig:{type:Object,value:function(){return[{name:"fade-out-animation",timing:{duration:150}},{name:"paper-menu-shrink-width-animation",timing:{delay:100,duration:50,easing:e.ANIMATION_CUBIC_BEZIER}},{name:"paper-menu-shrink-height-animation",timing:{duration:200,easing:"ease-in"}}]}},allowOutsideScroll:{type:Boolean,value:!1},restoreFocusOnClose:{type:Boolean,value:!0},_dropdownContent:{type:Object}},hostAttributes:{role:"group","aria-haspopup":"true"},listeners:{"iron-activate":"_onIronActivate","iron-select":"_onIronSelect"},get contentElement(){return Polymer.dom(this.$.content).getDistributedNodes()[0]},toggle:function(){this.opened?this.close():this.open()},open:function(){this.disabled||this.$.dropdown.open()},close:function(){this.$.dropdown.close()},_onIronSelect:function(e){this.ignoreSelect||this.close()},_onIronActivate:function(e){this.closeOnActivate&&this.close()},_openedChanged:function(e,n){e?(this._dropdownContent=this.contentElement,this.fire("paper-dropdown-open")):null!=n&&this.fire("paper-dropdown-close")},_disabledChanged:function(e){Polymer.IronControlState._disabledChanged.apply(this,arguments),e&&this.opened&&this.close()},__onIronOverlayCanceled:function(e){var n=e.detail,t=(Polymer.dom(n).rootTarget,this.$.trigger),o=Polymer.dom(n).path;o.indexOf(t)>-1&&e.preventDefault()}});Object.keys(e).forEach(function(t){n[t]=e[t]}),Polymer.PaperMenuButton=n}()</script></dom-module><iron-iconset-svg name="paper-dropdown-menu" size="24"><svg><defs><g id="arrow-drop-down"><path d="M7 10l5 5 5-5z"></path></g></defs></svg></iron-iconset-svg><dom-module id="paper-dropdown-menu-shared-styles" assetpath="../bower_components/paper-dropdown-menu/"><template><style>:host{display:inline-block;position:relative;text-align:left;-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:transparent;--paper-input-container-input:{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:100%;box-sizing:border-box;cursor:pointer};@apply(--paper-dropdown-menu)}:host([disabled]){@apply(--paper-dropdown-menu-disabled)}:host([noink]) paper-ripple{display:none}:host([no-label-float]) paper-ripple{top:8px}paper-ripple{top:12px;left:0;bottom:8px;right:0;@apply(--paper-dropdown-menu-ripple)}paper-menu-button{display:block;padding:0;@apply(--paper-dropdown-menu-button)}paper-input{@apply(--paper-dropdown-menu-input)}iron-icon{color:var(--disabled-text-color);@apply(--paper-dropdown-menu-icon)}</style></template></dom-module><dom-module id="paper-dropdown-menu" assetpath="../bower_components/paper-dropdown-menu/"><template><style include="paper-dropdown-menu-shared-styles"></style><span role="button"></span><paper-menu-button id="menuButton" vertical-align="[[verticalAlign]]" horizontal-align="[[horizontalAlign]]" dynamic-align="[[dynamicAlign]]" vertical-offset="[[_computeMenuVerticalOffset(noLabelFloat)]]" disabled="[[disabled]]" no-animations="[[noAnimations]]" on-iron-select="_onIronSelect" on-iron-deselect="_onIronDeselect" opened="{{opened}}" close-on-activate="" allow-outside-scroll="[[allowOutsideScroll]]"><div class="dropdown-trigger"><paper-ripple></paper-ripple><paper-input type="text" invalid="[[invalid]]" readonly="" disabled="[[disabled]]" value="[[selectedItemLabel]]" placeholder="[[placeholder]]" error-message="[[errorMessage]]" always-float-label="[[alwaysFloatLabel]]" no-label-float="[[noLabelFloat]]" label="[[label]]"><iron-icon icon="paper-dropdown-menu:arrow-drop-down" suffix=""></iron-icon></paper-input></div><content id="content" select=".dropdown-content"></content></paper-menu-button></template><script>!function(){"use strict";Polymer({is:"paper-dropdown-menu",behaviors:[Polymer.IronButtonState,Polymer.IronControlState,Polymer.IronFormElementBehavior,Polymer.IronValidatableBehavior],properties:{selectedItemLabel:{type:String,notify:!0,readOnly:!0},selectedItem:{type:Object,notify:!0,readOnly:!0},value:{type:String,notify:!0,readOnly:!0},label:{type:String},placeholder:{type:String},errorMessage:{type:String},opened:{type:Boolean,notify:!0,value:!1,observer:"_openedChanged"},allowOutsideScroll:{type:Boolean,value:!1},noLabelFloat:{type:Boolean,value:!1,reflectToAttribute:!0},alwaysFloatLabel:{type:Boolean,value:!1},noAnimations:{type:Boolean,value:!1},horizontalAlign:{type:String,value:"right"},verticalAlign:{type:String,value:"top"},dynamicAlign:{type:Boolean}},listeners:{tap:"_onTap"},keyBindings:{"up down":"open",esc:"close"},hostAttributes:{role:"combobox","aria-autocomplete":"none","aria-haspopup":"true"},observers:["_selectedItemChanged(selectedItem)"],attached:function(){var e=this.contentElement;e&&e.selectedItem&&this._setSelectedItem(e.selectedItem)},get contentElement(){return Polymer.dom(this.$.content).getDistributedNodes()[0]},open:function(){this.$.menuButton.open()},close:function(){this.$.menuButton.close()},_onIronSelect:function(e){this._setSelectedItem(e.detail.item)},_onIronDeselect:function(e){this._setSelectedItem(null)},_onTap:function(e){Polymer.Gestures.findOriginalTarget(e)===this&&this.open()},_selectedItemChanged:function(e){var t="";t=e?e.label||e.getAttribute("label")||e.textContent.trim():"",this._setValue(t),this._setSelectedItemLabel(t)},_computeMenuVerticalOffset:function(e){return e?-4:8},_getValidity:function(e){return this.disabled||!this.required||this.required&&!!this.value},_openedChanged:function(){var e=this.opened?"true":"false",t=this.contentElement;t&&t.setAttribute("aria-expanded",e)}})}()</script></dom-module><dom-module id="paper-menu-shared-styles" assetpath="../bower_components/paper-menu/"><template><style>.selectable-content>::content>.iron-selected{font-weight:700;@apply(--paper-menu-selected-item)}.selectable-content>::content>[disabled]{color:var(--paper-menu-disabled-color,--disabled-text-color)}.selectable-content>::content>:focus{position:relative;outline:0;@apply(--paper-menu-focused-item)}.selectable-content>::content>:focus:after{@apply(--layout-fit);background:currentColor;opacity:var(--dark-divider-opacity);content:'';pointer-events:none;@apply(--paper-menu-focused-item-after)}.selectable-content>::content>[colored]:focus:after{opacity:.26}</style></template></dom-module><dom-module id="paper-menu" assetpath="../bower_components/paper-menu/"><template><style include="paper-menu-shared-styles"></style><style>:host{display:block;padding:8px 0;background:var(--paper-menu-background-color,--primary-background-color);color:var(--paper-menu-color,--primary-text-color);@apply(--paper-menu)}</style><div class="selectable-content"><content></content></div></template><script>!function(){Polymer({is:"paper-menu",behaviors:[Polymer.IronMenuBehavior]})}()</script></dom-module><script>Polymer.PaperItemBehaviorImpl={hostAttributes:{role:"option",tabindex:"0"}},Polymer.PaperItemBehavior=[Polymer.IronButtonState,Polymer.IronControlState,Polymer.PaperItemBehaviorImpl]</script><dom-module id="paper-item-shared-styles" assetpath="../bower_components/paper-item/"><template><style>.paper-item,:host{display:block;position:relative;min-height:var(--paper-item-min-height,48px);padding:0 16px}.paper-item{@apply(--paper-font-subhead);border:none;outline:0;background:#fff;width:100%;text-align:left}.paper-item[hidden],:host([hidden]){display:none!important}.paper-item.iron-selected,:host(.iron-selected){font-weight:var(--paper-item-selected-weight,bold);@apply(--paper-item-selected)}.paper-item[disabled],:host([disabled]){color:var(--paper-item-disabled-color,--disabled-text-color);@apply(--paper-item-disabled)}.paper-item:focus,:host(:focus){position:relative;outline:0;@apply(--paper-item-focused)}.paper-item:focus:before,:host(:focus):before{@apply(--layout-fit);background:currentColor;content:'';opacity:var(--dark-divider-opacity);pointer-events:none;@apply(--paper-item-focused-before)}</style></template></dom-module><dom-module id="paper-item" assetpath="../bower_components/paper-item/"><template><style include="paper-item-shared-styles"></style><style>:host{@apply(--layout-horizontal);@apply(--layout-center);@apply(--paper-font-subhead);@apply(--paper-item)}</style><content></content></template><script>Polymer({is:"paper-item",behaviors:[Polymer.PaperItemBehavior]})</script></dom-module><dom-module id="state-card-input_select" assetpath="state-summary/"><template><style>:host{display:block}state-badge{float:left;margin-top:10px}paper-dropdown-menu{display:block;margin-left:53px}</style><state-badge state-obj="[[stateObj]]"></state-badge><paper-dropdown-menu on-tap="stopPropagation" selected-item-label="{{selectedOption}}" label="[[stateObj.entityDisplay]]"><paper-menu class="dropdown-content" selected="[[computeSelected(stateObj)]]"><template is="dom-repeat" items="[[stateObj.attributes.options]]"><paper-item>[[item]]</paper-item></template></paper-menu></paper-dropdown-menu></template></dom-module><script>Polymer({is:"state-card-input_select",properties:{hass:{type:Object},inDialog:{type:Boolean,value:!1},stateObj:{type:Object},selectedOption:{type:String,observer:"selectedOptionChanged"}},computeSelected:function(t){return t.attributes.options.indexOf(t.state)},selectedOptionChanged:function(t){""!==t&&t!==this.stateObj.state&&this.hass.serviceActions.callService("input_select","select_option",{option:t,entity_id:this.stateObj.entityId})},stopPropagation:function(t){t.stopPropagation()}})</script><script>Polymer.IronRangeBehavior={properties:{value:{type:Number,value:0,notify:!0,reflectToAttribute:!0},min:{type:Number,value:0,notify:!0},max:{type:Number,value:100,notify:!0},step:{type:Number,value:1,notify:!0},ratio:{type:Number,value:0,readOnly:!0,notify:!0}},observers:["_update(value, min, max, step)"],_calcRatio:function(t){return(this._clampValue(t)-this.min)/(this.max-this.min)},_clampValue:function(t){return Math.min(this.max,Math.max(this.min,this._calcStep(t)))},_calcStep:function(t){if(t=parseFloat(t),!this.step)return t;var e=Math.round((t-this.min)/this.step);return this.step<1?e/(1/this.step)+this.min:e*this.step+this.min},_validateValue:function(){var t=this._clampValue(this.value);return this.value=this.oldValue=isNaN(t)?this.oldValue:t,this.value!==t},_update:function(){this._validateValue(),this._setRatio(100*this._calcRatio(this.value))}}</script><dom-module id="paper-progress" assetpath="../bower_components/paper-progress/"><template><style>:host{display:block;width:200px;position:relative;overflow:hidden}:host([hidden]){display:none!important}#progressContainer{@apply(--paper-progress-container);position:relative}#progressContainer,.indeterminate::after{height:var(--paper-progress-height,4px)}#primaryProgress,#secondaryProgress,.indeterminate::after{@apply(--layout-fit)}#progressContainer,.indeterminate::after{background:var(--paper-progress-container-color,--google-grey-300)}:host(.transiting) #primaryProgress,:host(.transiting) #secondaryProgress{-webkit-transition-property:-webkit-transform;transition-property:transform;-webkit-transition-duration:var(--paper-progress-transition-duration,.08s);transition-duration:var(--paper-progress-transition-duration,.08s);-webkit-transition-timing-function:var(--paper-progress-transition-timing-function,ease);transition-timing-function:var(--paper-progress-transition-timing-function,ease);-webkit-transition-delay:var(--paper-progress-transition-delay,0s);transition-delay:var(--paper-progress-transition-delay,0s)}#primaryProgress,#secondaryProgress{@apply(--layout-fit);-webkit-transform-origin:left center;transform-origin:left center;-webkit-transform:scaleX(0);transform:scaleX(0);will-change:transform}#primaryProgress{background:var(--paper-progress-active-color,--google-green-500)}#secondaryProgress{background:var(--paper-progress-secondary-color,--google-green-100)}:host([disabled]) #primaryProgress{background:var(--paper-progress-disabled-active-color,--google-grey-500)}:host([disabled]) #secondaryProgress{background:var(--paper-progress-disabled-secondary-color,--google-grey-300)}:host(:not([disabled])) #primaryProgress.indeterminate{-webkit-transform-origin:right center;transform-origin:right center;-webkit-animation:indeterminate-bar var(--paper-progress-indeterminate-cycle-duration,2s) linear infinite;animation:indeterminate-bar var(--paper-progress-indeterminate-cycle-duration,2s) linear infinite}:host(:not([disabled])) #primaryProgress.indeterminate::after{content:"";-webkit-transform-origin:center center;transform-origin:center center;-webkit-animation:indeterminate-splitter var(--paper-progress-indeterminate-cycle-duration,2s) linear infinite;animation:indeterminate-splitter var(--paper-progress-indeterminate-cycle-duration,2s) linear infinite}@-webkit-keyframes indeterminate-bar{0%{-webkit-transform:scaleX(1) translateX(-100%)}50%{-webkit-transform:scaleX(1) translateX(0)}75%{-webkit-transform:scaleX(1) translateX(0);-webkit-animation-timing-function:cubic-bezier(.28,.62,.37,.91)}100%{-webkit-transform:scaleX(0) translateX(0)}}@-webkit-keyframes indeterminate-splitter{0%{-webkit-transform:scaleX(.75) translateX(-125%)}30%{-webkit-transform:scaleX(.75) translateX(-125%);-webkit-animation-timing-function:cubic-bezier(.42,0,.6,.8)}90%{-webkit-transform:scaleX(.75) translateX(125%)}100%{-webkit-transform:scaleX(.75) translateX(125%)}}@keyframes indeterminate-bar{0%{transform:scaleX(1) translateX(-100%)}50%{transform:scaleX(1) translateX(0)}75%{transform:scaleX(1) translateX(0);animation-timing-function:cubic-bezier(.28,.62,.37,.91)}100%{transform:scaleX(0) translateX(0)}}@keyframes indeterminate-splitter{0%{transform:scaleX(.75) translateX(-125%)}30%{transform:scaleX(.75) translateX(-125%);animation-timing-function:cubic-bezier(.42,0,.6,.8)}90%{transform:scaleX(.75) translateX(125%)}100%{transform:scaleX(.75) translateX(125%)}}</style><div id="progressContainer"><div id="secondaryProgress" hidden$="[[_hideSecondaryProgress(secondaryRatio)]]"></div><div id="primaryProgress"></div></div></template></dom-module><script>Polymer({is:"paper-progress",behaviors:[Polymer.IronRangeBehavior],properties:{secondaryProgress:{type:Number,value:0},secondaryRatio:{type:Number,value:0,readOnly:!0},indeterminate:{type:Boolean,value:!1,observer:"_toggleIndeterminate"},disabled:{type:Boolean,value:!1,reflectToAttribute:!0,observer:"_disabledChanged"}},observers:["_progressChanged(secondaryProgress, value, min, max)"],hostAttributes:{role:"progressbar"},_toggleIndeterminate:function(e){this.toggleClass("indeterminate",e,this.$.primaryProgress)},_transformProgress:function(e,r){var s="scaleX("+r/100+")";e.style.transform=e.style.webkitTransform=s},_mainRatioChanged:function(e){this._transformProgress(this.$.primaryProgress,e)},_progressChanged:function(e,r,s,t){e=this._clampValue(e),r=this._clampValue(r);var a=100*this._calcRatio(e),i=100*this._calcRatio(r);this._setSecondaryRatio(a),this._transformProgress(this.$.secondaryProgress,a),this._transformProgress(this.$.primaryProgress,i),this.secondaryProgress=e,this.setAttribute("aria-valuenow",r),this.setAttribute("aria-valuemin",s),this.setAttribute("aria-valuemax",t)},_disabledChanged:function(e){this.setAttribute("aria-disabled",e?"true":"false")},_hideSecondaryProgress:function(e){return 0===e}})</script><dom-module id="paper-slider" assetpath="../bower_components/paper-slider/"><template strip-whitespace=""><style>:host{@apply(--layout);@apply(--layout-justified);@apply(--layout-center);width:200px;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;--paper-progress-active-color:var(--paper-slider-active-color, --google-blue-700);--paper-progress-secondary-color:var(--paper-slider-secondary-color, --google-blue-300);--paper-progress-disabled-active-color:var(--paper-slider-disabled-active-color, --paper-grey-400);--paper-progress-disabled-secondary-color:var(--paper-slider-disabled-secondary-color, --paper-grey-400)}:host(:focus){outline:0}#sliderContainer{position:relative;width:100%;height:calc(30px + var(--paper-slider-height,2px));margin-left:calc(15px + var(--paper-slider-height,2px)/ 2);margin-right:calc(15px + var(--paper-slider-height,2px)/ 2)}#sliderContainer:focus{outline:0}#sliderContainer.editable{margin-top:12px;margin-bottom:12px}.bar-container{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.ring>.bar-container{left:calc(5px + var(--paper-slider-height,2px)/ 2);transition:left .18s ease}.ring.expand.dragging>.bar-container{transition:none}.ring.expand:not(.pin)>.bar-container{left:calc(8px + var(--paper-slider-height,2px)/ 2)}#sliderBar{padding:15px 0;width:100%;background-color:var(--paper-slider-bar-color,transparent);--paper-progress-container-color:var(--paper-slider-container-color, --paper-grey-400);--paper-progress-height:var(--paper-slider-height, 2px)}.slider-markers{position:absolute;top:calc(14px + var(--paper-slider-height,2px)/ 2);height:var(--paper-slider-height,2px);left:0;right:-1px;box-sizing:border-box;pointer-events:none;@apply(--layout-horizontal)}.slider-marker{@apply(--layout-flex)}.slider-marker::after,.slider-markers::after{content:"";display:block;margin-left:-1px;width:2px;height:2px;border-radius:50%;background-color:#000}#sliderKnob{position:absolute;left:0;top:0;margin-left:calc(-15px - var(--paper-slider-height,2px)/ 2);width:calc(30px + var(--paper-slider-height,2px));height:calc(30px + var(--paper-slider-height,2px))}.transiting>#sliderKnob{transition:left 80ms ease}#sliderKnob:focus{outline:0}#sliderKnob.dragging{transition:none}.snaps>#sliderKnob.dragging{transition:-webkit-transform 80ms ease;transition:transform 80ms ease}#sliderKnobInner{margin:10px;width:calc(100% - 20px);height:calc(100% - 20px);background-color:var(--paper-slider-knob-color,--google-blue-700);border:2px solid var(--paper-slider-knob-color,--google-blue-700);border-radius:50%;-moz-box-sizing:border-box;box-sizing:border-box;transition-property:-webkit-transform,background-color,border;transition-property:transform,background-color,border;transition-duration:.18s;transition-timing-function:ease}.expand:not(.pin)>#sliderKnob>#sliderKnobInner{-webkit-transform:scale(1.5);transform:scale(1.5)}.ring>#sliderKnob>#sliderKnobInner{background-color:var(--paper-slider-knob-start-color,transparent);border:2px solid var(--paper-slider-knob-start-border-color,--paper-grey-400)}#sliderKnobInner::before{background-color:var(--paper-slider-pin-color,--google-blue-700)}.pin>#sliderKnob>#sliderKnobInner::before{content:"";position:absolute;top:0;left:50%;margin-left:-13px;width:26px;height:26px;border-radius:50% 50% 50% 0;-webkit-transform:rotate(-45deg) scale(0) translate(0);transform:rotate(-45deg) scale(0) translate(0)}#sliderKnobInner::after,#sliderKnobInner::before{transition:-webkit-transform .18s ease,background-color .18s ease;transition:transform .18s ease,background-color .18s ease}.pin.ring>#sliderKnob>#sliderKnobInner::before{background-color:var(--paper-slider-pin-start-color,--paper-grey-400)}.pin.expand>#sliderKnob>#sliderKnobInner::before{-webkit-transform:rotate(-45deg) scale(1) translate(17px,-17px);transform:rotate(-45deg) scale(1) translate(17px,-17px)}.pin>#sliderKnob>#sliderKnobInner::after{content:attr(value);position:absolute;top:0;left:50%;margin-left:-16px;width:32px;height:26px;text-align:center;color:var(--paper-slider-font-color,#fff);font-size:10px;-webkit-transform:scale(0) translate(0);transform:scale(0) translate(0)}.pin.expand>#sliderKnob>#sliderKnobInner::after{-webkit-transform:scale(1) translate(0,-17px);transform:scale(1) translate(0,-17px)}.slider-input{width:50px;overflow:hidden;--paper-input-container-input:{text-align:center};@apply(--paper-slider-input)}#sliderContainer.disabled{pointer-events:none}.disabled>#sliderKnob>#sliderKnobInner{background-color:var(--paper-slider-disabled-knob-color,--paper-grey-400);border:2px solid var(--paper-slider-disabled-knob-color,--paper-grey-400);-webkit-transform:scale3d(.75,.75,1);transform:scale3d(.75,.75,1)}.disabled.ring>#sliderKnob>#sliderKnobInner{background-color:var(--paper-slider-knob-start-color,transparent);border:2px solid var(--paper-slider-knob-start-border-color,--paper-grey-400)}paper-ripple{color:var(--paper-slider-knob-color,--google-blue-700)}</style><div id="sliderContainer" class$="[[_getClassNames(disabled, pin, snaps, immediateValue, min, expand, dragging, transiting, editable)]]"><div class="bar-container"><paper-progress disabled$="[[disabled]]" id="sliderBar" aria-hidden="true" min="[[min]]" max="[[max]]" step="[[step]]" value="[[immediateValue]]" secondary-progress="[[secondaryProgress]]" on-down="_bardown" on-up="_resetKnob" on-track="_onTrack"></paper-progress></div><template is="dom-if" if="[[snaps]]"><div class="slider-markers"><template is="dom-repeat" items="[[markers]]"><div class="slider-marker"></div></template></div></template><div id="sliderKnob" on-down="_knobdown" on-up="_resetKnob" on-track="_onTrack" on-transitionend="_knobTransitionEnd"><div id="sliderKnobInner" value$="[[immediateValue]]"></div></div></div><template is="dom-if" if="[[editable]]"><paper-input id="input" type="number" step="[[step]]" min="[[min]]" max="[[max]]" class="slider-input" disabled$="[[disabled]]" value="[[immediateValue]]" on-change="_changeValue" on-keydown="_inputKeyDown" no-label-float=""></paper-input></template></template><script>Polymer({is:"paper-slider",behaviors:[Polymer.IronA11yKeysBehavior,Polymer.IronFormElementBehavior,Polymer.PaperInkyFocusBehavior,Polymer.IronRangeBehavior],properties:{snaps:{type:Boolean,value:!1,notify:!0},pin:{type:Boolean,value:!1,notify:!0},secondaryProgress:{type:Number,value:0,notify:!0,observer:"_secondaryProgressChanged"},editable:{type:Boolean,value:!1},immediateValue:{type:Number,value:0,readOnly:!0,notify:!0},maxMarkers:{type:Number,value:0,notify:!0},expand:{type:Boolean,value:!1,readOnly:!0},dragging:{type:Boolean,value:!1,readOnly:!0},transiting:{type:Boolean,value:!1,readOnly:!0},markers:{type:Array,readOnly:!0,value:[]}},observers:["_updateKnob(value, min, max, snaps, step)","_valueChanged(value)","_immediateValueChanged(immediateValue)","_updateMarkers(maxMarkers, min, max, snaps)"],hostAttributes:{role:"slider",tabindex:0},keyBindings:{"left down pagedown home":"_decrementKey","right up pageup end":"_incrementKey"},increment:function(){this.value=this._clampValue(this.value+this.step)},decrement:function(){this.value=this._clampValue(this.value-this.step)},_updateKnob:function(t,e,i,s,a){this.setAttribute("aria-valuemin",e),this.setAttribute("aria-valuemax",i),this.setAttribute("aria-valuenow",t),this._positionKnob(this._calcRatio(t))},_valueChanged:function(){this.fire("value-change")},_immediateValueChanged:function(){this.dragging?this.fire("immediate-value-change"):this.value=this.immediateValue},_secondaryProgressChanged:function(){this.secondaryProgress=this._clampValue(this.secondaryProgress)},_expandKnob:function(){this._setExpand(!0)},_resetKnob:function(){this.cancelDebouncer("expandKnob"),this._setExpand(!1)},_positionKnob:function(t){this._setImmediateValue(this._calcStep(this._calcKnobPosition(t))),this._setRatio(this._calcRatio(this.immediateValue)),this.$.sliderKnob.style.left=100*this.ratio+"%",this.dragging&&(this._knobstartx=this.ratio*this._w,this.translate3d(0,0,0,this.$.sliderKnob))},_calcKnobPosition:function(t){return(this.max-this.min)*t+this.min},_onTrack:function(t){switch(t.stopPropagation(),t.detail.state){case"start":this._trackStart(t);break;case"track":this._trackX(t);break;case"end":this._trackEnd()}},_trackStart:function(t){this._w=this.$.sliderBar.offsetWidth,this._x=this.ratio*this._w,this._startx=this._x,this._knobstartx=this._startx,this._minx=-this._startx,this._maxx=this._w-this._startx,this.$.sliderKnob.classList.add("dragging"),this._setDragging(!0)},_trackX:function(t){this.dragging||this._trackStart(t);var e=Math.min(this._maxx,Math.max(this._minx,t.detail.dx));this._x=this._startx+e;var i=this._calcStep(this._calcKnobPosition(this._x/this._w));this._setImmediateValue(i);var s=this._calcRatio(this.immediateValue)*this._w-this._knobstartx;this.translate3d(s+"px",0,0,this.$.sliderKnob)},_trackEnd:function(){var t=this.$.sliderKnob.style;this.$.sliderKnob.classList.remove("dragging"),this._setDragging(!1),this._resetKnob(),this.value=this.immediateValue,t.transform=t.webkitTransform="",this.fire("change")},_knobdown:function(t){this._expandKnob(),t.preventDefault(),this.focus()},_bardown:function(t){this._w=this.$.sliderBar.offsetWidth;var e=this.$.sliderBar.getBoundingClientRect(),i=(t.detail.x-e.left)/this._w,s=this.ratio;this._setTransiting(!0),this._positionKnob(i),this.debounce("expandKnob",this._expandKnob,60),s===this.ratio&&this._setTransiting(!1),this.async(function(){this.fire("change")}),t.preventDefault(),this.focus()},_knobTransitionEnd:function(t){t.target===this.$.sliderKnob&&this._setTransiting(!1)},_updateMarkers:function(t,e,i,s){s||this._setMarkers([]);var a=Math.round((i-e)/this.step);a>t&&(a=t),this._setMarkers(new Array(a))},_mergeClasses:function(t){return Object.keys(t).filter(function(e){return t[e]}).join(" ")},_getClassNames:function(){return this._mergeClasses({disabled:this.disabled,pin:this.pin,snaps:this.snaps,ring:this.immediateValue<=this.min,expand:this.expand,dragging:this.dragging,transiting:this.transiting,editable:this.editable})},_incrementKey:function(t){this.disabled||("end"===t.detail.key?this.value=this.max:this.increment(),this.fire("change"))},_decrementKey:function(t){this.disabled||("home"===t.detail.key?this.value=this.min:this.decrement(),this.fire("change"))},_changeValue:function(t){this.value=t.target.value,this.fire("change")},_inputKeyDown:function(t){t.stopPropagation()},_createRipple:function(){return this._rippleContainer=this.$.sliderKnob,Polymer.PaperInkyFocusBehaviorImpl._createRipple.call(this)},_focusedChanged:function(t){t&&this.ensureRipple(),this.hasRipple()&&(t?this._ripple.style.display="":this._ripple.style.display="none",this._ripple.holdDown=t)}})</script></dom-module><dom-module id="state-card-input_slider" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>paper-slider{margin-left:16px}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><paper-slider min="[[min]]" max="[[max]]" value="{{value}}" step="[[step]]" pin="" on-change="selectedValueChanged" on-tap="stopPropagation"></paper-slider></div></template></dom-module><script>Polymer({is:"state-card-input_slider",properties:{hass:{type:Object},inDialog:{type:Boolean,value:!1},stateObj:{type:Object,observer:"stateObjectChanged"},min:{type:Number},max:{type:Number},step:{type:Number},value:{type:Number}},stateObjectChanged:function(t){this.value=Number(t.state),this.min=Number(t.attributes.min),this.max=Number(t.attributes.max),this.step=Number(t.attributes.step)},selectedValueChanged:function(){this.value!==Number(this.stateObj.state)&&this.hass.serviceActions.callService("input_slider","select_value",{value:this.value,entity_id:this.stateObj.entityId})},stopPropagation:function(t){t.stopPropagation()}})</script><dom-module id="state-card-media_player" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>:host{line-height:1.5}.state{@apply(--paper-font-common-nowrap);@apply(--paper-font-body1);margin-left:16px;text-align:right}.main-text{@apply(--paper-font-common-nowrap);color:var(--primary-text-color);text-transform:capitalize}.main-text[take-height]{line-height:40px}.secondary-text{@apply(--paper-font-common-nowrap);color:var(--secondary-text-color)}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><div class="state"><div class="main-text" take-height$="[[!secondaryText]]">[[computePrimaryText(stateObj, isPlaying)]]</div><div class="secondary-text">[[secondaryText]]</div></div></div></template></dom-module><script>Polymer({PLAYING_STATES:["playing","paused"],is:"state-card-media_player",properties:{inDialog:{type:Boolean,value:!1},stateObj:{type:Object},isPlaying:{type:Boolean,computed:"computeIsPlaying(stateObj)"},secondaryText:{type:String,computed:"computeSecondaryText(stateObj)"}},computeIsPlaying:function(t){return this.PLAYING_STATES.indexOf(t.state)!==-1},computePrimaryText:function(t,e){return e?t.attributes.media_title:t.stateDisplay},computeSecondaryText:function(t){var e;return"music"===t.attributes.media_content_type?t.attributes.media_artist:"tvshow"===t.attributes.media_content_type?(e=t.attributes.media_series_title,t.attributes.media_season&&t.attributes.media_episode&&(e+=" S"+t.attributes.media_season+"E"+t.attributes.media_episode),e):t.attributes.app_name?t.attributes.app_name:""}})</script><dom-module id="state-card-scene" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>paper-button{color:var(--default-primary-color);font-weight:500;top:3px;height:37px;margin-right:-.57em}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><paper-button on-tap="activateScene">ACTIVATE</paper-button></div></template></dom-module><script>Polymer({is:"state-card-scene",properties:{hass:{type:Object},inDialog:{type:Boolean,value:!1},stateObj:{type:Object}},activateScene:function(t){t.stopPropagation(),this.hass.serviceActions.callTurnOn(this.stateObj.entityId)}})</script><dom-module id="state-card-script" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>paper-button{color:var(--default-primary-color);font-weight:500;top:3px;height:37px;margin-right:-.57em}ha-entity-toggle{margin-left:16px}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><template is="dom-if" if="[[stateObj.attributes.can_cancel]]"><ha-entity-toggle state-obj="[[stateObj]]" hass="[[hass]]"></ha-entity-toggle></template><template is="dom-if" if="[[!stateObj.attributes.can_cancel]]"><paper-button on-tap="fireScript">ACTIVATE</paper-button></template></div></template></dom-module><script>Polymer({is:"state-card-script",properties:{inDialog:{type:Boolean,value:!1},stateObj:{type:Object}},fireScript:function(t){t.stopPropagation(),this.hass.serviceActions.callTurnOn(this.stateObj.entityId)}})</script><dom-module id="state-card-toggle" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>ha-entity-toggle{margin-left:16px}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><ha-entity-toggle state-obj="[[stateObj]]" hass="[[hass]]"></ha-entity-toggle></div></template></dom-module><script>Polymer({is:"state-card-toggle",properties:{hass:{type:Object},inDialog:{type:Boolean,value:!1},stateObj:{type:Object}}})</script><dom-module id="state-card-weblink" assetpath="state-summary/"><template><style>:host{display:block}.name{@apply(--paper-font-common-nowrap);@apply(--paper-font-body1);color:var(--primary-color);text-transform:capitalize;line-height:40px;margin-left:16px}</style><state-badge state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-badge><a href$="[[stateObj.state]]" target="_blank" class="name" id="link">[[stateObj.entityDisplay]]</a></template></dom-module><script>Polymer({is:"state-card-weblink",properties:{inDialog:{type:Boolean,value:!1},stateObj:{type:Object}},listeners:{tap:"onTap"},onTap:function(t){t.stopPropagation(),t.target!==this.$.link&&window.open(this.stateObj.state,"_blank")}})</script><script>Polymer({is:"state-card-content",properties:{hass:{type:Object},inDialog:{type:Boolean,value:!1},stateObj:{type:Object}},observers:["inputChanged(hass, inDialog, stateObj)"],inputChanged:function(t,e,s){s&&window.hassUtil.dynamicContentUpdater(this,"STATE-CARD-"+window.hassUtil.stateCardType(this.hass,s).toUpperCase(),{hass:t,stateObj:s,inDialog:e})}})</script><dom-module id="ha-entities-card" assetpath="cards/"><template><style is="custom-style" include="iron-flex"></style><style>.states{padding-bottom:16px}.state{padding:4px 16px;cursor:pointer}.header{@apply(--paper-font-headline);line-height:40px;color:var(--primary-text-color);padding:20px 16px 12px}.header .name{@apply(--paper-font-common-nowrap)}ha-entity-toggle{margin-left:16px}.header-more-info{cursor:pointer}</style><ha-card><div class$="[[computeTitleClass(groupEntity)]]" on-tap="entityTapped"><div class="flex name">[[computeTitle(states, groupEntity)]]</div><template is="dom-if" if="[[showGroupToggle(groupEntity, states)]]"><ha-entity-toggle hass="[[hass]]" state-obj="[[groupEntity]]"></ha-entity-toggle></template></div><div class="states"><template is="dom-repeat" items="[[states]]"><div class="state" on-tap="entityTapped"><state-card-content hass="[[hass]]" class="state-card" state-obj="[[item]]"></state-card-content></div></template></div></ha-card></template></dom-module><script>Polymer({is:"ha-entities-card",properties:{hass:{type:Object},states:{type:Array},groupEntity:{type:Object}},computeTitle:function(t,e){return e?e.entityDisplay:t[0].domain.replace(/_/g," ")},computeTitleClass:function(t){var e="header horizontal layout center ";return t&&(e+="header-more-info"),e},entityTapped:function(t){var e;t.target.classList.contains("paper-toggle-button")||t.target.classList.contains("paper-icon-button")||!t.model&&!this.groupEntity||(t.stopPropagation(),e=t.model?t.model.item.entityId:this.groupEntity.entityId,this.async(function(){this.hass.moreInfoActions.selectEntity(e)}.bind(this),1))},showGroupToggle:function(t,e){var n;return!(!t||!e||"hidden"===t.attributes.control||"on"!==t.state&&"off"!==t.state)&&(n=e.reduce(function(t,e){return t+window.hassUtil.canToggle(this.hass,e.entityId)},0),n>1)}})</script><dom-module id="ha-introduction-card" assetpath="cards/"><template><style>:host{@apply(--paper-font-body1)}a{color:var(--dark-primary-color)}ul{margin:8px;padding-left:16px}li{margin-bottom:8px}.content{padding:0 16px 16px}.install{display:block;line-height:1.5em;margin-top:8px;margin-bottom:16px}</style><ha-card header="Welcome Home!"><div class="content"><template is="dom-if" if="[[hass.demo]]">To install Home Assistant, run:<br><code class="install">pip3 install homeassistant<br>hass --open-ui</code></template>Here are some resources to get started.<ul><template is="dom-if" if="[[hass.demo]]"><li><a href="https://home-assistant.io/getting-started/">Home Assistant website</a></li><li><a href="https://home-assistant.io/getting-started/">Installation instructions</a></li><li><a href="https://home-assistant.io/getting-started/troubleshooting/">Troubleshooting your installation</a></li></template><li><a href="https://home-assistant.io/getting-started/configuration/" target="_blank">Configuring Home Assistant</a></li><li><a href="https://home-assistant.io/components/" target="_blank">Available components</a></li><li><a href="https://home-assistant.io/getting-started/troubleshooting-configuration/" target="_blank">Troubleshooting your configuration</a></li><li><a href="https://home-assistant.io/help/" target="_blank">Ask community for help</a></li></ul><template is="dom-if" if="[[showHideInstruction]]">To remove this card, edit your config in <code>configuration.yaml</code> and disable the <code>introduction</code> component.</template></div></ha-card></template></dom-module><script>Polymer({is:"ha-introduction-card",properties:{hass:{type:Object},showHideInstruction:{type:Boolean,value:!0}}})</script><dom-module id="ha-media_player-card" assetpath="cards/"><template><style include="paper-material iron-flex iron-flex-alignment iron-positioning">:host{display:block;position:relative;font-size:0;border-radius:2px;overflow:hidden}.banner{position:relative;background-color:#fff;border-top-left-radius:2px;border-top-right-radius:2px}.banner:before{display:block;content:"";width:100%;padding-top:56%;transition:padding-top .8s}.banner.no-cover{background-position:center center;background-image:url(/static/images/card_media_player_bg.png);background-repeat:no-repeat;background-color:var(--primary-color)}.banner.content-type-music:before{padding-top:100%}.banner.no-cover:before{padding-top:88px}.banner>.cover{position:absolute;top:0;left:0;right:0;bottom:0;border-top-left-radius:2px;border-top-right-radius:2px;background-position:center center;background-size:cover;transition:opacity .8s;opacity:1}.banner.is-off>.cover{opacity:0}.banner>.caption{@apply(--paper-font-caption);position:absolute;left:0;right:0;bottom:0;background-color:rgba(0,0,0,var(--dark-secondary-opacity));padding:8px 16px;font-size:14px;font-weight:500;color:#fff;transition:background-color .5s}.banner.is-off>.caption{background-color:initial}.banner>.caption .title{@apply(--paper-font-common-nowrap);font-size:1.2em;margin:8px 0 4px}.progress{width:100%;--paper-progress-active-color:var(--accent-color);--paper-progress-container-color:#FFF}.controls{position:relative;@apply(--paper-font-body1);padding:8px;border-bottom-left-radius:2px;border-bottom-right-radius:2px;background-color:#fff}.controls paper-icon-button{width:44px;height:44px}paper-icon-button{opacity:var(--dark-primary-opacity)}paper-icon-button[disabled]{opacity:var(--dark-disabled-opacity)}paper-icon-button.primary{width:56px!important;height:56px!important;background-color:var(--primary-color);color:#fff;border-radius:50%;padding:8px;transition:background-color .5s}paper-icon-button.primary[disabled]{background-color:rgba(0,0,0,var(--dark-disabled-opacity))}[invisible]{visibility:hidden!important}</style><div class$="[[computeBannerClasses(playerObj)]]"><div class="cover" id="cover"></div><div class="caption">[[stateObj.entityDisplay]]<div class="title">[[playerObj.primaryText]]</div>[[playerObj.secondaryText]]<br></div></div><paper-progress max="[[stateObj.attributes.media_duration]]" value="[[playbackPosition]]" hidden$="[[computeHideProgress(playerObj)]]" class="progress"></paper-progress><div class="controls layout horizontal justified"><paper-icon-button icon="mdi:power" on-tap="handleTogglePower" invisible$="[[computeHidePowerButton(playerObj)]]" class="self-center secondary"></paper-icon-button><div><paper-icon-button icon="mdi:skip-previous" invisible$="[[!playerObj.supportsPreviousTrack]]" disabled="[[playerObj.isOff]]" on-tap="handlePrevious"></paper-icon-button><paper-icon-button class="primary" icon="[[computePlaybackControlIcon(playerObj)]]" invisible$="[[!computePlaybackControlIcon(playerObj)]]" disabled="[[playerObj.isOff]]" on-tap="handlePlaybackControl"></paper-icon-button><paper-icon-button icon="mdi:skip-next" invisible$="[[!playerObj.supportsNextTrack]]" disabled="[[playerObj.isOff]]" on-tap="handleNext"></paper-icon-button></div><paper-icon-button icon="mdi:dots-vertical" on-tap="handleOpenMoreInfo" class="self-center secondary"></paper-icon-button></div></template></dom-module><script>Polymer({is:"ha-media_player-card",properties:{hass:{type:Object},stateObj:{type:Object},playerObj:{type:Object,computed:"computePlayerObj(stateObj)",observer:"playerObjChanged"},playbackControlIcon:{type:String,computed:"computePlaybackControlIcon(playerObj)"},playbackPosition:{type:Number},elevation:{type:Number,value:1,reflectToAttribute:!0}},created:function(){this.updatePlaybackPosition=this.updatePlaybackPosition.bind(this)},playerObjChanged:function(t){var e=t.stateObj.attributes.entity_picture;e?this.$.cover.style.backgroundImage="url("+e+")":this.$.cover.style.backgroundImage="",t.isPlaying?(this._positionTracking||(this._positionTracking=setInterval(this.updatePlaybackPosition,1e3)),this.updatePlaybackPosition()):this._positionTracking&&(clearInterval(this._positionTracking),this._positionTracking=null,this.playbackPosition=0)},updatePlaybackPosition:function(){this.playbackPosition=this.playerObj.currentProgress},computeBannerClasses:function(t){var e="banner";return t.isOff||t.isIdle?e+=" is-off no-cover":t.stateObj.attributes.entity_picture?"music"===t.stateObj.attributes.media_content_type&&(e+=" content-type-music"):e+=" no-cover",e},computeHideProgress:function(t){return!t.showProgress},computeHidePowerButton:function(t){return t.isOff?!t.supportsTurnOn:!t.supportsTurnOff},computePlayerObj:function(t){return t.domainModel(this.hass)},computePlaybackControlIcon:function(t){return t.isPlaying?t.supportsPause?"mdi:pause":"mdi:stop":t.isPaused||t.isOff||t.isIdle?t.supportsPlay?"mdi:play":null:""},handleNext:function(t){t.stopPropagation(),this.playerObj.nextTrack()},handleOpenMoreInfo:function(t){t.stopPropagation(),this.async(function(){this.hass.moreInfoActions.selectEntity(this.stateObj.entityId)},1)},handlePlaybackControl:function(t){t.stopPropagation(),this.playerObj.mediaPlayPause()},handlePrevious:function(t){t.stopPropagation(),this.playerObj.previousTrack()},handleTogglePower:function(t){t.stopPropagation(),this.playerObj.togglePower()}})</script><script>!function(){"use strict";Polymer.IronJsonpLibraryBehavior={properties:{libraryLoaded:{type:Boolean,value:!1,notify:!0,readOnly:!0},libraryErrorMessage:{type:String,value:null,notify:!0,readOnly:!0}},observers:["_libraryUrlChanged(libraryUrl)"],_libraryUrlChanged:function(r){this._isReady&&this.libraryUrl&&this._loadLibrary()},_libraryLoadCallback:function(r,i){r?(console.warn("Library load failed:",r.message),this._setLibraryErrorMessage(r.message)):(this._setLibraryErrorMessage(null),this._setLibraryLoaded(!0),this.notifyEvent&&this.fire(this.notifyEvent,i))},_loadLibrary:function(){r.require(this.libraryUrl,this._libraryLoadCallback.bind(this),this.callbackName)},ready:function(){this._isReady=!0,this.libraryUrl&&this._loadLibrary()}};var r={apiMap:{},require:function(r,t,e){var a=this.nameFromUrl(r);this.apiMap[a]||(this.apiMap[a]=new i(a,r,e)),this.apiMap[a].requestNotify(t)},nameFromUrl:function(r){return r.replace(/[\:\/\%\?\&\.\=\-\,]/g,"_")+"_api"}},i=function(r,i,t){if(this.notifiers=[],!t){if(!(i.indexOf(this.callbackMacro)>=0))return void(this.error=new Error("IronJsonpLibraryBehavior a %%callback%% parameter is required in libraryUrl"));t=r+"_loaded",i=i.replace(this.callbackMacro,t)}this.callbackName=t,window[this.callbackName]=this.success.bind(this),this.addScript(i)};i.prototype={callbackMacro:"%%callback%%",loaded:!1,addScript:function(r){var i=document.createElement("script");i.src=r,i.onerror=this.handleError.bind(this);var t=document.querySelector("script")||document.body;t.parentNode.insertBefore(i,t),this.script=i},removeScript:function(){this.script.parentNode&&this.script.parentNode.removeChild(this.script),this.script=null},handleError:function(r){this.error=new Error("Library failed to load"),this.notifyAll(),this.cleanup()},success:function(){this.loaded=!0,this.result=Array.prototype.slice.call(arguments),this.notifyAll(),this.cleanup()},cleanup:function(){delete window[this.callbackName]},notifyAll:function(){this.notifiers.forEach(function(r){r(this.error,this.result)}.bind(this)),this.notifiers=[]},requestNotify:function(r){this.loaded||this.error?r(this.error,this.result):this.notifiers.push(r)}}}()</script><script>Polymer({is:"iron-jsonp-library",behaviors:[Polymer.IronJsonpLibraryBehavior],properties:{libraryUrl:String,callbackName:String,notifyEvent:String}})</script><script>Polymer({is:"google-legacy-loader",behaviors:[Polymer.IronJsonpLibraryBehavior],properties:{libraryUrl:{type:String,value:"https://www.google.com/jsapi?callback=%%callback%%"},notifyEvent:{type:String,value:"api-load"}},get api(){return google}})</script><dom-module id="ha-weather-card" assetpath="cards/"><template><style>.content{padding:0 16px 16px}.attribution{color:grey}</style><google-legacy-loader on-api-load="googleApiLoaded"></google-legacy-loader><ha-card header="[[computeTitle(stateObj)]]"><div class="content"><template is="dom-repeat" items="[[computeCurrentWeather(stateObj)]]"><div>[[item.key]]: [[item.value]]</div></template><div id="chart_area"></div><div class="attribution">[[computeAttribution(stateObj)]]</div></div></ha-card></template></dom-module><script>Polymer({is:"ha-weather-card",properties:{hass:{type:Object},stateObj:{type:Object,observer:"checkRequirements"}},computeTitle:function(t){return t.attributes.friendly_name},computeAttribution:function(t){return t.attributes.attribution},computeCurrentWeather:function(t){return Object.keys(t.attributes).filter(function(t){return["attribution","forecast","friendly_name"].indexOf(t)===-1}).map(function(e){return{key:e,value:t.attributes[e]}})},getDataArray:function(){var t,e=[],i=this.stateObj.attributes.forecast;if(!this.stateObj.attributes.forecast)return[];for(e.push([new Date,this.stateObj.attributes.temperature]),t=0;t<i.length;t++)e.push([new Date(i[t].datetime),i[t].temperature]);return e},checkRequirements:function(){this.stateObj&&window.google&&(this.chartEngine||(this.chartEngine=new window.google.visualization.LineChart(document.getElementById("chart_area"))),this.drawChart())},drawChart:function(){var t=new window.google.visualization.DataTable,e={legend:{position:"top"},interpolateNulls:!0,titlePosition:"none",chartArea:{left:25,top:5,height:"100%",width:"90%",bottom:25},curveType:"function"};t.addColumn("datetime","Time"),t.addColumn("number","Temperature"),t.addRows(this.getDataArray()),this.chartEngine.draw(t,e)},googleApiLoaded:function(){window.google.load("visualization","1",{packages:["corechart"],callback:function(){this.checkRequirements()}.bind(this)})}})</script><dom-module id="ha-persistent_notification-card" assetpath="cards/"><template><style>:host{@apply(--paper-font-body1)}.content{padding:0 16px 16px}paper-button{margin:8px;font-weight:500}</style><ha-card header="[[computeTitle(stateObj)]]"><div id="pnContent" class="content"></div><paper-button on-tap="dismissTap">DISMISS</paper-button></ha-card></template></dom-module><script>Polymer({is:"ha-persistent_notification-card",properties:{hass:{type:Object},stateObj:{type:Object},scriptLoaded:{type:Boolean,value:!1}},observers:["computeContent(stateObj, scriptLoaded)"],computeTitle:function(t){return t.attributes.title||t.entityDisplay},loadScript:function(){var t=function(){this.scriptLoaded=!0}.bind(this),e=function(){console.error("Micromarkdown was not loaded.")};this.importHref("/static/micromarkdown-js.html",t,e)},computeContent:function(t,e){var i="",n="";e&&(i=this.$.pnContent,n=window.micromarkdown.parse(t.state),i.innerHTML=n)},ready:function(){this.loadScript()},dismissTap:function(t){t.preventDefault(),this.hass.entityActions.delete(this.stateObj)}})</script><script>Polymer({is:"ha-card-chooser",properties:{cardData:{type:Object,observer:"cardDataChanged"}},cardDataChanged:function(a){a&&window.hassUtil.dynamicContentUpdater(this,"HA-"+a.cardType.toUpperCase()+"-CARD",a)}})</script><dom-module id="ha-cards" assetpath="components/"><template><style is="custom-style" include="iron-flex iron-flex-factors"></style><style>:host{display:block;padding-top:8px;padding-right:8px}.badges{font-size:85%;text-align:center}.column{max-width:500px;overflow-x:hidden}.zone-card{margin-left:8px;margin-bottom:8px}@media (max-width:500px){:host{padding-right:0}.zone-card{margin-left:0}}@media (max-width:599px){.column{max-width:600px}}</style><div class="main"><template is="dom-if" if="[[cards.badges]]"><div class="badges"><template is="dom-if" if="[[cards.demo]]"><ha-demo-badge></ha-demo-badge></template><ha-badges-card states="[[cards.badges]]" hass="[[hass]]"></ha-badges-card></div></template><div class="horizontal layout center-justified"><template is="dom-repeat" items="[[cards.columns]]" as="column"><div class="column flex-1"><template is="dom-repeat" items="[[column]]" as="card"><div class="zone-card"><ha-card-chooser card-data="[[card]]" hass="[[hass]]"></ha-card-chooser></div></template></div></template></div></div></template></dom-module><script>!function(){"use strict";function t(t){return t in r?r[t]:30}function e(t){return"group"===t.domain?t.attributes.order:t.entityDisplay.toLowerCase()}var n={camera:4,media_player:3,persistent_notification:0,weather:4},r={configurator:-20,persistent_notification:-15,group:-10,a:-1,updater:0,sun:1,device_tracker:2,alarm_control_panel:3,sensor:5,binary_sensor:6};Polymer({is:"ha-cards",properties:{hass:{type:Object},showIntroduction:{type:Boolean,value:!1},columns:{type:Number,value:2},states:{type:Object},panelVisible:{type:Boolean},viewVisible:{type:Boolean},cards:{type:Object}},observers:["updateCards(columns, states, showIntroduction, panelVisible, viewVisible)"],updateCards:function(t,e,n,r,o){r&&o&&this.debounce("updateCards",function(){this.panelVisible&&this.viewVisible&&(this.cards=this.computeCards(t,e,n))}.bind(this))},computeCards:function(r,o,s){function i(t){return t.filter(function(t){return!(t.entityId in h)})}function a(t){var e=0;for(p=e;p<y.length;p++){if(y[p]<5){e=p;break}y[p]<y[e]&&(e=p)}return y[e]+=t,e}function u(t,e,r){var o,s,i,u;0!==e.length&&(o=[],s=[],i=0,e.forEach(function(t){t.domain in n?(o.push(t),i+=n[t.domain]):(s.push(t),i++)}),i+=s.length>1,u=a(i),s.length>0&&f.columns[u].push({hass:d,cardType:"entities",states:s,groupEntity:r||!1}),o.forEach(function(t){f.columns[u].push({hass:d,cardType:t.domain,stateObj:t})}))}var c,p,d=this.hass,l=o.groupBy(function(t){return t.domain}),h={},f={demo:!1,badges:[],columns:[]},y=[];for(p=0;p<r;p++)f.columns.push([]),y.push(0);return s&&f.columns[a(5)].push({hass:d,cardType:"introduction",showHideInstruction:o.size>0&&!d.demo}),c=this.hass.util.expandGroup,l.keySeq().sortBy(function(e){return t(e)}).forEach(function(n){var r;return"a"===n?void(f.demo=!0):(r=t(n),void(r>=0&&r<10?f.badges.push.apply(f.badges,i(l.get(n)).sortBy(e).toArray()):"group"===n?l.get(n).sortBy(e).forEach(function(t){var e=c(t,o);e.forEach(function(t){h[t.entityId]=!0}),u(t.entityId,e.toArray(),t)}):u(n,i(l.get(n)).sortBy(e).toArray())))}),f.columns=f.columns.filter(function(t){return t.length>0}),f}})}()</script><dom-module id="partial-cards" assetpath="layouts/"><template><style include="iron-flex iron-positioning ha-style">:host{-ms-user-select:none;-webkit-user-select:none;-moz-user-select:none}app-header-layout{background-color:#E5E5E5}paper-tabs{margin-left:12px;--paper-tabs-selection-bar-color:#FFF;text-transform:uppercase}</style><app-header-layout has-scrolling-region="" id="layout"><app-header effects="waterfall" condenses="" fixed=""><app-toolbar><ha-menu-button narrow="[[narrow]]" show-menu="[[showMenu]]"></ha-menu-button><div main-title="">[[computeTitle(views, locationName)]]</div><paper-icon-button icon="mdi:microphone" hidden$="[[!canListen]]" on-tap="handleListenClick"></paper-icon-button></app-toolbar><div sticky="" hidden$="[[!views.length]]"><paper-tabs scrollable="" selected="[[currentView]]" attr-for-selected="data-entity" on-iron-select="handleViewSelected"><paper-tab data-entity="" on-tap="scrollToTop">[[locationName]]</paper-tab><template is="dom-repeat" items="[[views]]"><paper-tab data-entity$="[[item.entityId]]" on-tap="scrollToTop"><template is="dom-if" if="[[item.attributes.icon]]"><iron-icon icon="[[item.attributes.icon]]"></iron-icon></template><template is="dom-if" if="[[!item.attributes.icon]]">[[item.entityDisplay]]</template></paper-tab></template></paper-tabs></div></app-header><iron-pages attr-for-selected="data-view" selected="[[currentView]]" selected-attribute="view-visible"><ha-cards data-view="" show-introduction="[[computeShowIntroduction(currentView, introductionLoaded, states)]]" states="[[states]]" columns="[[_columns]]" hass="[[hass]]" panel-visible="[[panelVisible]]"></ha-cards><template is="dom-repeat" items="[[views]]"><ha-cards data-view$="[[item.entityId]]" show-introduction="[[computeShowIntroduction(currentView, introductionLoaded, states)]]" states="[[states]]" columns="[[_columns]]" hass="[[hass]]" panel-visible="[[panelVisible]]"></ha-cards></template></iron-pages></app-header-layout></template></dom-module><script>Polymer({is:"partial-cards",behaviors:[window.hassBehavior],properties:{hass:{type:Object},narrow:{type:Boolean,value:!1},showMenu:{type:Boolean,value:!1,observer:"handleWindowChange"},panelVisible:{type:Boolean,value:!1},_columns:{type:Number,value:1},canListen:{type:Boolean,bindNuclear:function(e){return[e.voiceGetters.isVoiceSupported,e.configGetters.isComponentLoaded("conversation"),function(e,t){return e&&t}]}},introductionLoaded:{type:Boolean,bindNuclear:function(e){return e.configGetters.isComponentLoaded("introduction")}},locationName:{type:String,bindNuclear:function(e){return e.configGetters.locationName}},currentView:{type:String,bindNuclear:function(e){return[e.viewGetters.currentView,function(e){return e||""}]}},views:{type:Array,bindNuclear:function(e){return[e.viewGetters.views,function(e){return e.valueSeq().sortBy(function(e){return e.attributes.order}).toArray()}]}},states:{type:Object,bindNuclear:function(e){return e.viewGetters.currentViewEntities}}},created:function(){this.handleWindowChange=this.handleWindowChange.bind(this),this.mqls=[300,600,900,1200].map(function(e){var t=window.matchMedia("(min-width: "+e+"px)");return t.addListener(this.handleWindowChange),t}.bind(this))},detached:function(){this.mqls.forEach(function(e){e.removeListener(this.handleWindowChange)})},handleWindowChange:function(){var e=this.mqls.reduce(function(e,t){return e+t.matches},0);this._columns=Math.max(1,e-(!this.narrow&&this.showMenu))},scrollToTop:function(){var e=0,t=this.$.layout.header.scrollTarget,n=function(e,t,n,i){return e/=i,-n*e*(e-2)+t},i=Math.random(),o=200,r=Date.now(),a=t.scrollTop,s=e-a;this._currentAnimationId=i,function c(){var u=Date.now(),l=u-r;l>o?t.scrollTop=e:this._currentAnimationId===i&&(t.scrollTop=n(l,a,s,o),requestAnimationFrame(c.bind(this)))}.call(this)},handleListenClick:function(){this.hass.voiceActions.listen()},handleViewSelected:function(e){var t=e.detail.item.getAttribute("data-entity")||null,n=this.currentView||null;t!==n&&this.async(function(){this.hass.viewActions.selectView(t)}.bind(this),0)},computeTitle:function(e,t){return e.length>0?"Home Assistant":t},computeShowIntroduction:function(e,t,n){return""===e&&(t||0===n.size)}})</script><style is="custom-style">html{font-size:14px;--dark-primary-color:#0288D1;--default-primary-color:#03A9F4;--primary-color:#03A9F4;--light-primary-color:#B3E5FC;--text-primary-color:#ffffff;--accent-color:#FF9800;--primary-background-color:#ffffff;--primary-text-color:#212121;--secondary-text-color:#727272;--disabled-text-color:#bdbdbd;--divider-color:#B6B6B6;--paper-toggle-button-checked-ink-color:#039be5;--paper-toggle-button-checked-button-color:#039be5;--paper-toggle-button-checked-bar-color:#039be5;--paper-slider-knob-color:var(--primary-color);--paper-slider-knob-start-color:var(--primary-color);--paper-slider-pin-color:var(--primary-color);--paper-slider-active-color:var(--primary-color);--paper-slider-secondary-color:var(--light-primary-color);--paper-slider-container-color:var(--divider-color);--google-red-500:#db4437;--google-blue-500:#4285f4;--google-green-500:#0f9d58;--google-yellow-500:#f4b400;--paper-grey-50:#fafafa;--paper-green-400:#66bb6a;--paper-blue-400:#42a5f5;--paper-orange-400:#ffa726;--dark-divider-opacity:0.12;--dark-disabled-opacity:0.38;--dark-secondary-opacity:0.54;--dark-primary-opacity:0.87;--light-divider-opacity:0.12;--light-disabled-opacity:0.3;--light-secondary-opacity:0.7;--light-primary-opacity:1.0}</style><dom-module id="ha-style" assetpath="resources/"><template><style>:host{@apply(--paper-font-body1)}app-header,app-toolbar{background-color:var(--primary-color);font-weight:400;color:#fff}app-toolbar ha-menu-button+[main-title]{margin-left:24px}h1{@apply(--paper-font-title)}</style></template></dom-module><dom-module id="partial-panel-resolver" assetpath="layouts/"><template><style include="iron-flex ha-style">[hidden]{display:none!important}.placeholder{height:100%}.layout{height:calc(100% - 64px)}</style><div hidden$="[[resolved]]" class="placeholder"><app-toolbar><ha-menu-button narrow="[[narrow]]" show-menu="[[showMenu]]"></ha-menu-button></app-toolbar><div class="layout horizontal center-center"><template is="dom-if" if="[[!errorLoading]]"><paper-spinner active=""></paper-spinner></template><template is="dom-if" if="[[errorLoading]]">Error loading panel :(</template></div></div><span id="panel" hidden$="[[!resolved]]"></span></template></dom-module><script>Polymer({is:"partial-panel-resolver",behaviors:[window.hassBehavior],properties:{hass:{type:Object,observer:"updateAttributes"},narrow:{type:Boolean,value:!1,observer:"updateAttributes"},showMenu:{type:Boolean,value:!1,observer:"updateAttributes"},resolved:{type:Boolean,value:!1},errorLoading:{type:Boolean,value:!1},panel:{type:Object,bindNuclear:function(e){return e.navigationGetters.activePanel},observer:"panelChanged"}},panelChanged:function(e){return e?(this.resolved=!1,this.errorLoading=!1,void this.importHref(e.get("url"),function(){window.hassUtil.dynamicContentUpdater(this.$.panel,"ha-panel-"+e.get("component_name"),{hass:this.hass,narrow:this.narrow,showMenu:this.showMenu,panel:e.toJS()}),this.resolved=!0}.bind(this),function(){this.errorLoading=!0}.bind(this),!0)):void(this.$.panel.lastChild&&this.$.panel.removeChild(this.$.panel.lastChild))},updateAttributes:function(){var e=Polymer.dom(this.$.panel).lastChild;e&&(e.hass=this.hass,e.narrow=this.narrow,e.showMenu=this.showMenu)}})</script><dom-module id="paper-toast" assetpath="../bower_components/paper-toast/"><template><style>:host{display:block;position:fixed;background-color:var(--paper-toast-background-color,#323232);color:var(--paper-toast-color,#f1f1f1);min-height:48px;min-width:288px;padding:16px 24px;box-sizing:border-box;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);border-radius:2px;margin:12px;font-size:14px;cursor:default;-webkit-transition:-webkit-transform .3s,opacity .3s;transition:transform .3s,opacity .3s;opacity:0;-webkit-transform:translateY(100px);transform:translateY(100px);@apply(--paper-font-common-base)}:host(.capsule){border-radius:24px}:host(.fit-bottom){width:100%;min-width:0;border-radius:0;margin:0}:host(.paper-toast-open){opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}</style><span id="label">{{text}}</span><content></content></template><script>!function(){var e=null;Polymer({is:"paper-toast",behaviors:[Polymer.IronOverlayBehavior],properties:{fitInto:{type:Object,value:window,observer:"_onFitIntoChanged"},horizontalAlign:{type:String,value:"left"},verticalAlign:{type:String,value:"bottom"},duration:{type:Number,value:3e3},text:{type:String,value:""},noCancelOnOutsideClick:{type:Boolean,value:!0},noAutoFocus:{type:Boolean,value:!0}},listeners:{transitionend:"__onTransitionEnd"},get visible(){return Polymer.Base._warn("`visible` is deprecated, use `opened` instead"),this.opened},get _canAutoClose(){return this.duration>0&&this.duration!==1/0},created:function(){this._autoClose=null,Polymer.IronA11yAnnouncer.requestAvailability()},show:function(e){"string"==typeof e&&(e={text:e});for(var t in e)0===t.indexOf("_")?Polymer.Base._warn('The property "'+t+'" is private and was not set.'):t in this?this[t]=e[t]:Polymer.Base._warn('The property "'+t+'" is not valid.');this.open()},hide:function(){this.close()},__onTransitionEnd:function(e){e&&e.target===this&&"opacity"===e.propertyName&&(this.opened?this._finishRenderOpened():this._finishRenderClosed())},_openedChanged:function(){null!==this._autoClose&&(this.cancelAsync(this._autoClose),this._autoClose=null),this.opened?(e&&e!==this&&e.close(),e=this,this.fire("iron-announce",{text:this.text}),this._canAutoClose&&(this._autoClose=this.async(this.close,this.duration))):e===this&&(e=null),Polymer.IronOverlayBehaviorImpl._openedChanged.apply(this,arguments)},_renderOpened:function(){this.classList.add("paper-toast-open")},_renderClosed:function(){this.classList.remove("paper-toast-open")},_onFitIntoChanged:function(e){this.positionTarget=e}})}()</script></dom-module><dom-module id="notification-manager" assetpath="managers/"><template><style>paper-toast{z-index:1}</style><paper-toast id="toast" text="{{text}}" no-cancel-on-outside-click="[[neg]]"></paper-toast><paper-toast id="connToast" duration="0" text="Connection lost. Reconnecting…" opened="[[!isStreaming]]"></paper-toast></template></dom-module><script>Polymer({is:"notification-manager",behaviors:[window.hassBehavior],properties:{hass:{type:Object},isStreaming:{type:Boolean,bindNuclear:function(t){return t.streamGetters.isStreamingEvents}},neg:{type:Boolean,value:!1},text:{type:String,bindNuclear:function(t){return t.notificationGetters.lastNotificationMessage},observer:"showNotification"},toastClass:{type:String,value:""}},created:function(){this.handleWindowChange=this.handleWindowChange.bind(this),this._mediaq=window.matchMedia("(max-width: 599px)"),this._mediaq.addListener(this.handleWindowChange)},attached:function(){this.handleWindowChange(this._mediaq)},detached:function(){this._mediaq.removeListener(this.handleWindowChange)},handleWindowChange:function(t){this.$.toast.classList.toggle("fit-bottom",t.matches),this.$.connToast.classList.toggle("fit-bottom",t.matches)},showNotification:function(t){t&&this.$.toast.show()}})</script><script>Polymer.PaperDialogBehaviorImpl={hostAttributes:{role:"dialog",tabindex:"-1"},properties:{modal:{type:Boolean,value:!1}},observers:["_modalChanged(modal, _readied)"],listeners:{tap:"_onDialogClick"},ready:function(){this.__prevNoCancelOnOutsideClick=this.noCancelOnOutsideClick,this.__prevNoCancelOnEscKey=this.noCancelOnEscKey,this.__prevWithBackdrop=this.withBackdrop},_modalChanged:function(i,e){e&&(i?(this.__prevNoCancelOnOutsideClick=this.noCancelOnOutsideClick,this.__prevNoCancelOnEscKey=this.noCancelOnEscKey,this.__prevWithBackdrop=this.withBackdrop,this.noCancelOnOutsideClick=!0,this.noCancelOnEscKey=!0,this.withBackdrop=!0):(this.noCancelOnOutsideClick=this.noCancelOnOutsideClick&&this.__prevNoCancelOnOutsideClick,this.noCancelOnEscKey=this.noCancelOnEscKey&&this.__prevNoCancelOnEscKey,this.withBackdrop=this.withBackdrop&&this.__prevWithBackdrop))},_updateClosingReasonConfirmed:function(i){this.closingReason=this.closingReason||{},this.closingReason.confirmed=i},_onDialogClick:function(i){for(var e=Polymer.dom(i).path,o=0;o<e.indexOf(this);o++){var t=e[o];if(t.hasAttribute&&(t.hasAttribute("dialog-dismiss")||t.hasAttribute("dialog-confirm"))){this._updateClosingReasonConfirmed(t.hasAttribute("dialog-confirm")),this.close(),i.stopPropagation();break}}}},Polymer.PaperDialogBehavior=[Polymer.IronOverlayBehavior,Polymer.PaperDialogBehaviorImpl]</script><dom-module id="paper-dialog-shared-styles" assetpath="../bower_components/paper-dialog-behavior/"><template><style>:host{display:block;margin:24px 40px;background:var(--paper-dialog-background-color,--primary-background-color);color:var(--paper-dialog-color,--primary-text-color);@apply(--paper-font-body1);@apply(--shadow-elevation-16dp);@apply(--paper-dialog)}:host>::content>*{margin-top:20px;padding:0 24px}:host>::content>.no-padding{padding:0}:host>::content>:first-child{margin-top:24px}:host>::content>:last-child{margin-bottom:24px}:host>::content h2{position:relative;margin:0;@apply(--paper-font-title);@apply(--paper-dialog-title)}:host>::content .buttons{position:relative;padding:8px 8px 8px 24px;margin:0;color:var(--paper-dialog-button-color,--primary-color);@apply(--layout-horizontal);@apply(--layout-end-justified)}</style></template></dom-module><dom-module id="paper-dialog" assetpath="../bower_components/paper-dialog/"><template><style include="paper-dialog-shared-styles"></style><content></content></template></dom-module><script>!function(){Polymer({is:"paper-dialog",behaviors:[Polymer.PaperDialogBehavior,Polymer.NeonAnimationRunnerBehavior],listeners:{"neon-animation-finish":"_onNeonAnimationFinish"},_renderOpened:function(){this.cancelAnimation(),this.playAnimation("entry")},_renderClosed:function(){this.cancelAnimation(),this.playAnimation("exit")},_onNeonAnimationFinish:function(){this.opened?this._finishRenderOpened():this._finishRenderClosed()}})}()</script><dom-module id="paper-dialog-scrollable" assetpath="../bower_components/paper-dialog-scrollable/"><template><style>:host{display:block;@apply(--layout-relative)}:host(.is-scrolled:not(:first-child))::before{content:'';position:absolute;top:0;left:0;right:0;height:1px;background:var(--divider-color)}:host(.can-scroll:not(.scrolled-to-bottom):not(:last-child))::after{content:'';position:absolute;bottom:0;left:0;right:0;height:1px;background:var(--divider-color)}.scrollable{padding:0 24px;@apply(--layout-scroll);@apply(--paper-dialog-scrollable)}.fit{@apply(--layout-fit)}</style><div id="scrollable" class="scrollable"><content></content></div></template></dom-module><script>Polymer({is:"paper-dialog-scrollable",properties:{dialogElement:{type:Object}},listeners:{"scrollable.scroll":"_scroll"},get scrollTarget(){return this.$.scrollable},ready:function(){this._ensureTarget()},attached:function(){this.classList.add("no-padding"),this._ensureTarget(),requestAnimationFrame(this._scroll.bind(this))},_scroll:function(){this.toggleClass("is-scrolled",this.scrollTarget.scrollTop>0),this.toggleClass("can-scroll",this.scrollTarget.offsetHeight<this.scrollTarget.scrollHeight),this.toggleClass("scrolled-to-bottom",this.scrollTarget.scrollTop+this.scrollTarget.offsetHeight>=this.scrollTarget.scrollHeight)},_ensureTarget:function(){this.dialogElement=this.dialogElement||Polymer.dom(this).parentNode,this.dialogElement&&this.dialogElement.behaviors&&this.dialogElement.behaviors.indexOf(Polymer.PaperDialogBehaviorImpl)>=0?(this.dialogElement.sizingTarget=this.scrollTarget,this.scrollTarget.classList.remove("fit")):this.dialogElement&&this.scrollTarget.classList.add("fit")}})</script><style>div.charts-tooltip{z-index:200!important}</style><script>Polymer({is:"state-history-chart-timeline",properties:{data:{type:Object,observer:"dataChanged"},isAttached:{type:Boolean,value:!1,observer:"dataChanged"}},created:function(){this.style.display="block"},attached:function(){this.isAttached=!0},dataChanged:function(){this.drawChart()},drawChart:function(){function t(t,e,n,i){var d=e.replace(/_/g," ");a.addRow([t,d,n,i])}var e,a,n,i,d,l=Polymer.dom(this),o=this.data;if(this.isAttached){for(;l.node.lastChild;)l.node.removeChild(l.node.lastChild);o&&0!==o.length&&(e=new window.google.visualization.Timeline(this),a=new window.google.visualization.DataTable,a.addColumn({type:"string",id:"Entity"}),a.addColumn({type:"string",id:"State"}),a.addColumn({type:"date",id:"Start"}),a.addColumn({type:"date",id:"End"}),n=new Date(o.reduce(function(t,e){return Math.min(t,e[0].lastChangedAsDate)},new Date)),i=new Date(n),i.setDate(i.getDate()+1),i>new Date&&(i=new Date),d=0,o.forEach(function(e){var a,n,l=null,o=null;0!==e.length&&(a=e[0].entityDisplay,e.forEach(function(e){null!==l&&e.state!==l?(n=e.lastChangedAsDate,t(a,l,o,n),l=e.state,o=n):null===l&&(l=e.state,o=e.lastChangedAsDate)}),t(a,l,o,i),d++)}),e.draw(a,{height:55+42*d,timeline:{showRowLabels:o.length>1},hAxis:{format:"H:mm"}}))}}})</script><script>!function(){"use strict";function t(t,e){var a,r=[];for(a=t;a<e;a++)r.push(a);return r}function e(t){var e=parseFloat(t);return!isNaN(e)&&isFinite(e)?e:null}Polymer({is:"state-history-chart-line",properties:{data:{type:Object,observer:"dataChanged"},unit:{type:String},isSingleDevice:{type:Boolean,value:!1},isAttached:{type:Boolean,value:!1,observer:"dataChanged"},chartEngine:{type:Object}},created:function(){this.style.display="block"},attached:function(){this.isAttached=!0},dataChanged:function(){this.drawChart()},drawChart:function(){var a,r,n,i,u,o=this.unit,s=this.data;this.isAttached&&(this.chartEngine||(this.chartEngine=new window.google.visualization.LineChart(this)),0!==s.length&&(a={legend:{position:"top"},interpolateNulls:!0,titlePosition:"none",vAxes:{0:{title:o}},hAxis:{format:"H:mm"},chartArea:{left:"60",width:"95%"},explorer:{actions:["dragToZoom","rightClickToReset","dragToPan"],keepInBounds:!0,axis:"horizontal",maxZoomIn:.1}},this.isSingleDevice&&(a.legend.position="none",a.vAxes[0].title=null,a.chartArea.left=40,a.chartArea.height="80%",a.chartArea.top=5,a.enableInteractivity=!1),r=new Date(Math.min.apply(null,s.map(function(t){return t[0].lastChangedAsDate}))),n=new Date(r),n.setDate(n.getDate()+1),n>new Date&&(n=new Date),i=s.map(function(t){function a(t,e){r&&e&&c.push([t[0]].concat(r.slice(1).map(function(t,a){return e[a]?t:null}))),c.push(t),r=t}var r,i,u,o,s=t[t.length-1],l=s.domain,d=s.entityDisplay,c=[],h=new window.google.visualization.DataTable;return h.addColumn({type:"datetime",id:"Time"}),"thermostat"===l?(i=t.reduce(function(t,e){return t||e.attributes.target_temp_high!==e.attributes.target_temp_low},!1),h.addColumn("number",d+" current temperature"),i?(h.addColumn("number",d+" target temperature high"),h.addColumn("number",d+" target temperature low"),o=[!1,!0,!0],u=function(t){var r=e(t.attributes.current_temperature),n=e(t.attributes.target_temp_high),i=e(t.attributes.target_temp_low);a([t.lastUpdatedAsDate,r,n,i],o)}):(h.addColumn("number",d+" target temperature"),o=[!1,!0],u=function(t){var r=e(t.attributes.current_temperature),n=e(t.attributes.temperature);a([t.lastUpdatedAsDate,r,n],o)}),t.forEach(u)):"climate"===l?(i=t.reduce(function(t,e){return t||e.attributes.target_temp_high!==e.attributes.target_temp_low},!1),h.addColumn("number",d+" current temperature"),i?(h.addColumn("number",d+" target temperature high"),h.addColumn("number",d+" target temperature low"),o=[!1,!0,!0],u=function(t){var r=e(t.attributes.current_temperature),n=e(t.attributes.target_temp_high),i=e(t.attributes.target_temp_low);a([t.lastUpdatedAsDate,r,n,i],o)}):(h.addColumn("number",d+" target temperature"),o=[!1,!0],u=function(t){var r=e(t.attributes.current_temperature),n=e(t.attributes.temperature);a([t.lastUpdatedAsDate,r,n],o)}),t.forEach(u)):(h.addColumn("number",d),o="sensor"!==l&&[!0],t.forEach(function(t){var r=e(t.state);a([t.lastChangedAsDate,r],o)})),a([n].concat(r.slice(1)),!1),h.addRows(c),h}),u=1===i.length?i[0]:i.slice(1).reduce(function(e,a){return window.google.visualization.data.join(e,a,"full",[[0,0]],t(1,e.getNumberOfColumns()),t(1,a.getNumberOfColumns()))},i[0]),this.chartEngine.draw(u,a)))}})}()</script><dom-module id="state-history-charts" assetpath="components/"><template><style>:host{display:block}.loading-container{text-align:center;padding:8px}.loading{height:0;overflow:hidden}</style><google-legacy-loader on-api-load="googleApiLoaded"></google-legacy-loader><div hidden$="[[!isLoading]]" class="loading-container"><paper-spinner active="" alt="Updating history data"></paper-spinner></div><div class$="[[computeContentClasses(isLoading)]]"><template is="dom-if" if="[[computeIsEmpty(stateHistory)]]">No state history found.</template><state-history-chart-timeline data="[[groupedStateHistory.timeline]]" is-single-device="[[isSingleDevice]]"></state-history-chart-timeline><template is="dom-repeat" items="[[groupedStateHistory.line]]"><state-history-chart-line unit="[[item.unit]]" data="[[item.data]]" is-single-device="[[isSingleDevice]]"></state-history-chart-line></template></div></template></dom-module><script>Polymer({is:"state-history-charts",properties:{stateHistory:{type:Object},isLoadingData:{type:Boolean,value:!1},apiLoaded:{type:Boolean,value:!1},isLoading:{type:Boolean,computed:"computeIsLoading(isLoadingData, apiLoaded)"},groupedStateHistory:{type:Object,computed:"computeGroupedStateHistory(isLoading, stateHistory)"},isSingleDevice:{type:Boolean,computed:"computeIsSingleDevice(stateHistory)"}},computeIsSingleDevice:function(t){return t&&1===t.size},computeGroupedStateHistory:function(t,e){var i,o={},n=[];return t||!e?{line:[],timeline:[]}:(e.forEach(function(t){var e,i;t&&0!==t.size&&(e=t.find(function(t){return"unit_of_measurement"in t.attributes}),i=!!e&&e.attributes.unit_of_measurement,i?i in o?o[i].push(t.toArray()):o[i]=[t.toArray()]:n.push(t.toArray()))}),n=n.length>0&&n,i=Object.keys(o).map(function(t){return{unit:t,data:o[t]}}),{line:i,timeline:n})},googleApiLoaded:function(){window.google.load("visualization","1",{packages:["timeline","corechart"],callback:function(){this.apiLoaded=!0}.bind(this)})},computeContentClasses:function(t){return t?"loading":""},computeIsLoading:function(t,e){return t||!e},computeIsEmpty:function(t){return t&&0===t.size}})</script><dom-module id="more-info-automation" assetpath="more-infos/"><template><style>paper-button{color:var(--default-primary-color);font-weight:500;top:3px;height:37px}</style><p>Last triggered:<ha-relative-time datetime="[[stateObj.attributes.last_triggered]]"></ha-relative-time></p><paper-button on-tap="handleTriggerTapped">TRIGGER</paper-button></template></dom-module><script>Polymer({is:"more-info-automation",properties:{hass:{type:Object},stateObj:{type:Object}},handleTriggerTapped:function(){this.hass.serviceActions.callService("automation","trigger",{entity_id:this.stateObj.entityId})}})</script><dom-module id="paper-range-slider" assetpath="../bower_components/paper-range-slider/"><template><style>:host{--paper-range-slider-width:200px;@apply(--layout);@apply(--layout-justified);@apply(--layout-center);--paper-range-slider-lower-color:var(--paper-grey-400);--paper-range-slider-active-color:var(--primary-color);--paper-range-slider-higher-color:var(--paper-grey-400);--paper-range-slider-knob-color:var(--primary-color);--paper-range-slider-pin-color:var(--primary-color);--paper-range-slider-pin-start-color:var(--paper-grey-400);--paper-range-slider-knob-start-color:transparent;--paper-range-slider-knob-start-border-color:var(--paper-grey-400)}#sliderOuterDiv_0{display:inline-block;width:var(--paper-range-slider-width)}#sliderOuterDiv_1{position:relative;height:calc(30px + var(--paper-single-range-slider-height,2px));margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sliderKnobMinMax{position:absolute;left:0;top:0;margin-left:calc(-15px - var(--paper-single-range-slider-height,2px)/ 2);width:calc(30px + var(--paper-single-range-slider-height,2px));height:calc(30px + var(--paper-single-range-slider-height,2px))}.divSpanWidth{position:absolute;width:100%;display:block;top:0}#sliderMax{--paper-single-range-slider-bar-color:transparent;--paper-single-range-slider-knob-color:var(--paper-range-slider-knob-color);--paper-single-range-slider-pin-color:var(--paper-range-slider-pin-color);--paper-single-range-slider-active-color:var(--paper-range-slider-active-color);--paper-single-range-slider-secondary-color:var(--paper-range-slider-higher-color);--paper-single-range-slider-pin-start-color:var(--paper-range-slider-pin-start-color);--paper-single-range-slider-knob-start-color:var(--paper-range-slider-knob-start-color);--paper-single-range-slider-knob-start-border-color:var(--paper-range-slider-knob-start-border-color)}#sliderMin{--paper-single-range-slider-active-color:var(--paper-range-slider-lower-color);--paper-single-range-slider-secondary-color:transparent;--paper-single-range-slider-knob-color:var(--paper-range-slider-knob-color);--paper-single-range-slider-pin-color:var(--paper-range-slider-pin-color);--paper-single-range-slider-pin-start-color:var(--paper-range-slider-pin-start-color);--paper-single-range-slider-knob-start-color:var(--paper-range-slider-knob-start-color);--paper-single-range-slider-knob-start-border-color:var(--paper-range-slider-knob-start-border-color)}</style><div id="sliderOuterDiv_0" style=""><div id="sliderOuterDiv_1"><div id="backDiv" class="divSpanWidth" on-down="_backDivDown" on-tap="_backDivTap" on-up="_backDivUp" on-track="_backDivOnTrack" on-transitionend="_backDivTransEnd"><div id="backDivInner_0" style="line-height:200%"><br></div></div><div id="sliderKnobMin" class="sliderKnobMinMax" on-down="_backDivDown" on-up="_backDivUp" on-track="_sliderKnobMinOnTrack"></div><div id="sliderKnobMax" class="sliderKnobMinMax" on-down="_backDivDown" on-up="_backDivUp" on-track="_sliderKnobMaxOnTrack"></div><div class="divSpanWidth" style="pointer-events:none"><paper-single-range-slider id="sliderMax" disabled$="[[disabled]]" on-down="_sliderMaxDown" on-up="_sliderMaxUp" step="[[step]]" min="[[min]]" max="[[max]]" value="[[valueMax]]" secondary-progress="[[max]]" style="width:100%"></paper-single-range-slider></div><div class="divSpanWidth" style="pointer-events:none"><paper-single-range-slider id="sliderMin" disabled$="[[disabled]]" on-down="_sliderMinDown" on-up="_sliderMinUp" noink="" step="[[step]]" min="[[min]]" max="[[max]]" value="[[valueMin]]" style="width:100%"></paper-single-range-slider></div><div id="backDivInner_1" style="line-height:100%"><br></div></div></div></template><script>Polymer({is:"paper-range-slider",behaviors:[Polymer.IronRangeBehavior],properties:{sliderWidth:{type:String,value:"",notify:!0,reflectToAttribute:!0},style:{type:String,value:"",notify:!0,reflectToAttribute:!0},min:{type:Number,value:0,notify:!0,reflectToAttribute:!0},max:{type:Number,value:100,notify:!0,reflectToAttribute:!0},valueMin:{type:Number,value:0,notify:!0,reflectToAttribute:!0},valueMax:{type:Number,value:100,notify:!0,reflectToAttribute:!0},step:{type:Number,value:1,notify:!0,reflectToAttribute:!0},valueDiffMin:{type:Number,value:0,notify:!0,reflectToAttribute:!0},valueDiffMax:{type:Number,value:0,notify:!0,reflectToAttribute:!0},alwaysShowPin:{type:Boolean,value:!1,notify:!0},pin:{type:Boolean,value:!1,notify:!0},snaps:{type:Boolean,value:!1,notify:!0},disabled:{type:Boolean,value:!1,notify:!0},singleSlider:{type:Boolean,value:!1,notify:!0},transDuration:{type:Number,value:250},tapValueExtend:{type:Boolean,value:!0,notify:!0},tapValueReduce:{type:Boolean,value:!1,notify:!0},tapValueMove:{type:Boolean,value:!1,notify:!0}},ready:function(){function i(i){return void 0!=i&&null!=i}i(this._nInitTries)||(this._nInitTries=0);var t=this.$$("#sliderMax").$$("#sliderContainer");if(i(t)&&(t=t.offsetWidth>0),i(t)&&(t=this.$$("#sliderMin").$$("#sliderContainer")),i(t)&&(t=t.offsetWidth>0),i(t))this._renderedReady();else{if(this._nInitTries<1e3){var e=this;setTimeout(function(){e.ready()},10)}else console.error("could not properly initialize the underlying paper-single-range-slider elements ...");this._nInitTries++}},_renderedReady:function(){this.init(),this._setPadding();var i=this;this.$$("#sliderMin").addEventListener("immediate-value-change",function(t){i._setValueMinMax(i._getValuesMinMax(this.immediateValue,null)),i.$.sliderMin._expandKnob(),i.$.sliderMax._expandKnob()}),this.$$("#sliderMax").addEventListener("immediate-value-change",function(t){i._setValueMinMax(i._getValuesMinMax(null,this.immediateValue))}),this.$$("#sliderMin").addEventListener("change",function(t){i._setValueMinMax(i._getValuesMinMax(this.immediateValue,null)),i.alwaysShowPin&&i.$.sliderMin._expandKnob()}),this.$$("#sliderMax").addEventListener("change",function(t){i._setValueMinMax(i._getValuesMinMax(null,this.immediateValue)),i.alwaysShowPin&&i.$.sliderMax._expandKnob()})},_setPadding:function(){var i=document.createElement("div");i.setAttribute("style","position:absolute; top:0px; opacity:0;"),i.innerHTML="invisibleText",document.body.insertBefore(i,document.body.children[0]);var t=i.offsetHeight/2;this.style.paddingTop=t+"px",this.style.paddingBottom=t+"px",i.parentNode.removeChild(i)},_setValueDiff:function(){this._valueDiffMax=Math.max(this.valueDiffMax,0),this._valueDiffMin=Math.max(this.valueDiffMin,0)},_getValuesMinMax:function(i,t){var e=null!=i&&i>=this.min&&i<=this.max,s=null!=t&&t>=this.min&&t<=this.max;if(!e&&!s)return[this.valueMin,this.valueMax];var n=e?i:this.valueMin,a=s?t:this.valueMax;n=Math.min(Math.max(n,this.min),this.max),a=Math.min(Math.max(a,this.min),this.max);var l=a-n;return e?l<this._valueDiffMin?(a=Math.min(this.max,n+this._valueDiffMin),l=a-n,l<this._valueDiffMin&&(n=a-this._valueDiffMin)):l>this._valueDiffMax&&this._valueDiffMax>0&&(a=n+this._valueDiffMax):l<this._valueDiffMin?(n=Math.max(this.min,a-this._valueDiffMin),l=a-n,l<this._valueDiffMin&&(a=n+this._valueDiffMin)):l>this._valueDiffMax&&this._valueDiffMax>0&&(n=a-this._valueDiffMax),[n,a]},_setValueMin:function(i){i=Math.max(i,this.min),this.$$("#sliderMin").value=i,this.valueMin=i},_setValueMax:function(i){i=Math.min(i,this.max),this.$$("#sliderMax").value=i,this.valueMax=i},_setValueMinMax:function(i){this._setValueMin(i[0]),this._setValueMax(i[1]),this._updateSliderKnobMinMax(),this.updateValues()},_setValues:function(i,t){null!=i&&(i<this.min||i>this.max)&&(i=null),null!=t&&(t<this.min||t>this.max)&&(t=null),null!=i&&null!=t&&(i=Math.min(i,t)),this._setValueMinMax(this._getValuesMinMax(i,t))},_updateSliderKnobMinMax:function(){var i=this.$$("#sliderMax").$$("#sliderContainer").offsetWidth,t=i*(this.valueMin-this.min)/(this.max-this.min)+.5*this.$$("#sliderKnobMin").offsetWidth,e=i*(this.valueMax-this.min)/(this.max-this.min)+.5*this.$$("#sliderKnobMax").offsetWidth;this.$$("#sliderKnobMin").style.left=t+"px",this.$$("#sliderKnobMax").style.left=e+"px"},_backDivOnTrack:function(i){switch(i.stopPropagation(),i.detail.state){case"start":this._backDivTrackStart(i);break;case"track":this._backDivTrackDuring(i);break;case"end":this._backDivTrackEnd()}},_backDivTrackStart:function(i){},_backDivTrackDuring:function(i){this._x1_Min=this._x0_Min+i.detail.dx;var t=this._calcStep(this._getRatioPos(this.$$("#sliderMin"),this._x1_Min/this._xWidth));this._x1_Max=this._x0_Max+i.detail.dx;var e=this._calcStep(this._getRatioPos(this.$$("#sliderMax"),this._x1_Max/this._xWidth));t>=this.min&&e<=this.max&&this._setValuesWithCurrentDiff(t,e,!1)},_setValuesWithCurrentDiff:function(i,t,e){var s=this._valueDiffMin,n=this._valueDiffMax;this._valueDiffMin=this.valueMax-this.valueMin,this._valueDiffMax=this.valueMax-this.valueMin,e?this.setValues(i,t):this._setValues(i,t),this._valueDiffMin=s,this._valueDiffMax=n},_backDivTrackEnd:function(){},_sliderKnobMinOnTrack:function(i){this._x1_Min=this._x0_Min+i.detail.dx;var t=this._calcStep(this._getRatioPos(this.$$("#sliderMin"),this._x1_Min/this._xWidth));this._setValues(t,null)},_sliderKnobMaxOnTrack:function(i){this._x1_Max=this._x0_Max+i.detail.dx;var t=this._calcStep(this._getRatioPos(this.$$("#sliderMax"),this._x1_Max/this._xWidth));this._setValues(null,t)},_sliderMinDown:function(){this.$$("#sliderMax")._expandKnob()},_sliderMaxDown:function(i){this.singleSlider?this._setValues(null,this._getEventValue(i)):this.$$("#sliderMin")._expandKnob()},_sliderMinUp:function(){this.alwaysShowPin?this.$$("#sliderMin")._expandKnob():this.$$("#sliderMax")._resetKnob()},_sliderMaxUp:function(){this.alwaysShowPin?this.$$("#sliderMax")._expandKnob():(this.$$("#sliderMin")._resetKnob(),this.singleSlider&&this.$$("#sliderMax")._resetKnob())},_getEventValue:function(i){var t=this.$$("#sliderMax").$$("#sliderContainer").offsetWidth,e=this.$$("#sliderMax").$$("#sliderContainer").getBoundingClientRect(),s=(i.detail.x-e.left)/t,n=this.min+s*(this.max-this.min);return n},_backDivTap:function(i){this._setValueNow=function(i,t){this.tapValueMove?this._setValuesWithCurrentDiff(i,t,!0):this.setValues(i,t)};var t=this._getEventValue(i);if(t>this.valueMin&&t<this.valueMax){if(this.tapValueReduce){var e=t<this.valueMin+(this.valueMax-this.valueMin)/2;e?this._setValueNow(t,null):this._setValueNow(null,t)}}else(this.tapValueExtend||this.tapValueMove)&&(t<this.valueMin&&this._setValueNow(t,null),t>this.valueMax&&this._setValueNow(null,t))},_backDivDown:function(i){this._sliderMinDown(),this._sliderMaxDown(),this._xWidth=this.$$("#sliderMin").$$("#sliderBar").offsetWidth,this._x0_Min=this.$$("#sliderMin").ratio*this._xWidth,this._x0_Max=this.$$("#sliderMax").ratio*this._xWidth},_backDivUp:function(){this._sliderMinUp(),this._sliderMaxUp()},_backDivTransEnd:function(i){},_getRatioPos:function(i,t){return Math.max(i.min,Math.min(i.max,(i.max-i.min)*t+i.min))},init:function(){this.setSingleSlider(this.singleSlider),this.setDisabled(this.disabled),this.alwaysShowPin&&(this.pin=!0),this.$$("#sliderMin").pin=this.pin,this.$$("#sliderMax").pin=this.pin,this.$$("#sliderMin").snaps=this.snaps,this.$$("#sliderMax").snaps=this.snaps,""!=this.sliderWidth&&(this.customStyle["--paper-range-slider-width"]=this.sliderWidth,this.updateStyles()),this.$$("#sliderMin").$$("#sliderBar").$$("#progressContainer").style.background="transparent",this._prevUpdateValues=[this.min,this.max],this._setValueDiff(),this._setValueMinMax(this._getValuesMinMax(this.valueMin,this.valueMax)),this.alwaysShowPin&&(this.$$("#sliderMin")._expandKnob(),this.$$("#sliderMax")._expandKnob())},setValues:function(i,t){this.$$("#sliderMin")._setTransiting(!0),this.$$("#sliderMax")._setTransiting(!0),this._setValues(i,t);var e=this;setTimeout(function(){e.$.sliderMin._setTransiting(!1),e.$.sliderMax._setTransiting(!1)},e.transDuration)},updateValues:function(){this._prevUpdateValues[0]==this.valueMin&&this._prevUpdateValues[1]==this.valueMax||(this._prevUpdateValues=[this.valueMin,this.valueMax],this.async(function(){this.fire("updateValues")}))},setMin:function(i){this.max<i&&(this.max=i),this.min=i,this._prevUpdateValues=[this.min,this.max],this.valueMin<this.min?this._setValues(this.min,null):this._updateSliderKnobMinMax()},setMax:function(i){this.min>i&&(this.min=i),this.max=i,this._prevUpdateValues=[this.min,this.max],this.valueMax>this.max?this._setValues(null,this.max):this._updateSliderKnobMinMax()},setStep:function(i){this.step=i},setValueDiffMin:function(i){this._valueDiffMin=i},setValueDiffMax:function(i){this._valueDiffMax=i},setTapValueExtend:function(i){this.tapValueExtend=i},setTapValueReduce:function(i){this.tapValueReduce=i},setTapValueMove:function(i){this.tapValueMove=i},setDisabled:function(i){this.disabled=i;var t=i?"none":"auto";this.$$("#sliderMax").$$("#sliderKnobInner").style.pointerEvents=t,this.$$("#sliderMin").$$("#sliderKnobInner").style.pointerEvents=t,this.$$("#sliderOuterDiv_1").style.pointerEvents=t,this.$$("#sliderKnobMin").style.pointerEvents=t,this.$$("#sliderKnobMax").style.pointerEvents=t},setSingleSlider:function(i){this.singleSlider=i,i?(this.$$("#backDiv").style.display="none",this.$$("#sliderMax").style.pointerEvents="auto",this.$$("#sliderMax").style.display="",this.$$("#sliderMin").style.display="none",this.$$("#sliderKnobMin").style.pointerEvents="none",this.$$("#sliderKnobMax").style.pointerEvents="none"):(this.$$("#backDiv").style.display="block",this.$$("#sliderMax").style.pointerEvents="none",this.$$("#sliderMax").style.display="",this.$$("#sliderMin").style.display="",this.$$("#sliderKnobMin").style.pointerEvents="auto",this.$$("#sliderKnobMax").style.pointerEvents="auto"),this.$$("#sliderMax").$$("#sliderContainer").style.pointerEvents=this.singleSlider?"auto":"none",this.$$("#sliderMin").$$("#sliderContainer").style.pointerEvents="none"}})</script></dom-module><dom-module id="paper-single-range-slider" assetpath="../bower_components/paper-range-slider/"><template strip-whitespace=""><style>:host{@apply(--layout);@apply(--layout-justified);@apply(--layout-center);width:200px;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;--paper-progress-active-color:var(--paper-single-range-slider-active-color, --google-blue-700);--paper-progress-secondary-color:var(--paper-single-range-slider-secondary-color, --google-blue-300);--paper-progress-disabled-active-color:var(--paper-single-range-slider-disabled-active-color, --paper-grey-400);--paper-progress-disabled-secondary-color:var(--paper-single-range-slider-disabled-secondary-color, --paper-grey-400)}:host(:focus){outline:0}#sliderContainer{position:relative;width:100%;height:calc(30px + var(--paper-single-range-slider-height,2px));margin-left:calc(15px + var(--paper-single-range-slider-height,2px)/ 2);margin-right:calc(15px + var(--paper-single-range-slider-height,2px)/ 2)}#sliderContainer:focus{outline:0}#sliderContainer.editable{margin-top:12px;margin-bottom:12px}.bar-container{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.ring>.bar-container{left:calc(5px + var(--paper-single-range-slider-height,2px)/ 2);transition:left .18s ease}.ring.expand.dragging>.bar-container{transition:none}.ring.expand:not(.pin)>.bar-container{left:calc(8px + var(--paper-single-range-slider-height,2px)/ 2)}#sliderBar{padding:15px 0;width:100%;background-color:var(--paper-single-range-slider-bar-color,transparent);--paper-progress-container-color:var(--paper-single-range-slider-container-color, --paper-grey-400);--paper-progress-height:var(--paper-single-range-slider-height, 2px)}.slider-markers{position:absolute;top:calc(14px + var(--paper-single-range-slider-height,2px)/ 2);height:var(--paper-single-range-slider-height,2px);left:0;right:-1px;box-sizing:border-box;pointer-events:none;@apply(--layout-horizontal)}.slider-marker{@apply(--layout-flex)}.slider-marker::after,.slider-markers::after{content:"";display:block;margin-left:-1px;width:2px;height:2px;border-radius:50%;background-color:#000}#sliderKnob{position:absolute;left:0;top:0;margin-left:calc(-15px - var(--paper-single-range-slider-height,2px)/ 2);width:calc(30px + var(--paper-single-range-slider-height,2px));height:calc(30px + var(--paper-single-range-slider-height,2px))}.transiting>#sliderKnob{transition:left 80ms ease}#sliderKnob:focus{outline:0}#sliderKnob.dragging{transition:none}.snaps>#sliderKnob.dragging{transition:-webkit-transform 80ms ease;transition:transform 80ms ease}#sliderKnobInner{margin:10px;width:calc(100% - 20px);height:calc(100% - 20px);background-color:var(--paper-single-range-slider-knob-color,--google-blue-700);border:2px solid var(--paper-single-range-slider-knob-color,--google-blue-700);border-radius:50%;-moz-box-sizing:border-box;box-sizing:border-box;transition-property:-webkit-transform,background-color,border;transition-property:transform,background-color,border;transition-duration:.18s;transition-timing-function:ease}.expand:not(.pin)>#sliderKnob>#sliderKnobInner{-webkit-transform:scale(1.5);transform:scale(1.5)}.ring>#sliderKnob>#sliderKnobInner{background-color:var(--paper-single-range-slider-knob-start-color,transparent);border:2px solid var(--paper-single-range-slider-knob-start-border-color,--paper-grey-400)}#sliderKnobInner::before{background-color:var(--paper-single-range-slider-pin-color,--google-blue-700)}.pin>#sliderKnob>#sliderKnobInner::before{content:"";position:absolute;top:0;left:50%;margin-left:-13px;width:26px;height:26px;border-radius:50% 50% 50% 0;-webkit-transform:rotate(-45deg) scale(0) translate(0);transform:rotate(-45deg) scale(0) translate(0)}#sliderKnobInner::after,#sliderKnobInner::before{transition:-webkit-transform .18s ease,background-color .18s ease;transition:transform .18s ease,background-color .18s ease}.pin.ring>#sliderKnob>#sliderKnobInner::before{background-color:var(--paper-single-range-slider-pin-start-color,--paper-grey-400)}.pin.expand>#sliderKnob>#sliderKnobInner::before{-webkit-transform:rotate(-45deg) scale(1) translate(17px,-17px);transform:rotate(-45deg) scale(1) translate(17px,-17px)}.pin>#sliderKnob>#sliderKnobInner::after{content:attr(value);position:absolute;top:0;left:50%;margin-left:-16px;width:32px;height:26px;text-align:center;color:var(--paper-single-range-slider-font-color,#fff);font-size:10px;-webkit-transform:scale(0) translate(0);transform:scale(0) translate(0)}.pin.expand>#sliderKnob>#sliderKnobInner::after{-webkit-transform:scale(1) translate(0,-17px);transform:scale(1) translate(0,-17px)}.slider-input{width:50px;overflow:hidden;--paper-input-container-input:{text-align:center};@apply(--paper-single-range-slider-input)}#sliderContainer.disabled{pointer-events:none}.disabled>#sliderKnob>#sliderKnobInner{background-color:var(--paper-single-range-slider-disabled-knob-color,--paper-grey-400);border:2px solid var(--paper-single-range-slider-disabled-knob-color,--paper-grey-400);-webkit-transform:scale3d(.75,.75,1);transform:scale3d(.75,.75,1)}.disabled.ring>#sliderKnob>#sliderKnobInner{background-color:var(--paper-single-range-slider-knob-start-color,transparent);border:2px solid var(--paper-single-range-slider-knob-start-border-color,--paper-grey-400)}paper-ripple{color:var(--paper-single-range-slider-knob-color,--google-blue-700)}</style><div id="sliderContainer" class$="[[_getClassNames(disabled, pin, snaps, immediateValue, min, expand, dragging, transiting, editable)]]"><div class="bar-container"><paper-progress disabled$="[[disabled]]" id="sliderBar" aria-hidden="true" min="[[min]]" max="[[max]]" step="[[step]]" value="[[immediateValue]]" secondary-progress="[[secondaryProgress]]" on-down="_bardown" on-up="_resetKnob" on-track="_onTrack"></paper-progress></div><template is="dom-if" if="[[snaps]]"><div class="slider-markers"><template is="dom-repeat" items="[[markers]]"><div class="slider-marker"></div></template></div></template><div id="sliderKnob" on-down="_knobdown" on-up="_resetKnob" on-track="_onTrack" on-transitionend="_knobTransitionEnd"><div id="sliderKnobInner" value$="[[immediateValue]]"></div></div></div><template is="dom-if" if="[[editable]]"><paper-input id="input" type="number" step="[[step]]" min="[[min]]" max="[[max]]" class="slider-input" disabled$="[[disabled]]" value="[[immediateValue]]" on-change="_changeValue" on-keydown="_inputKeyDown" no-label-float=""></paper-input></template></template><script>Polymer({is:"paper-single-range-slider",behaviors:[Polymer.IronA11yKeysBehavior,Polymer.IronFormElementBehavior,Polymer.PaperInkyFocusBehavior,Polymer.IronRangeBehavior],properties:{snaps:{type:Boolean,value:!1,notify:!0},pin:{type:Boolean,value:!1,notify:!0},secondaryProgress:{type:Number,value:0,notify:!0,observer:"_secondaryProgressChanged"},editable:{type:Boolean,value:!1},immediateValue:{type:Number,value:0,readOnly:!0,notify:!0},maxMarkers:{type:Number,value:0,notify:!0},expand:{type:Boolean,value:!1,readOnly:!0},dragging:{type:Boolean,value:!1,readOnly:!0},transiting:{type:Boolean,value:!1,readOnly:!0},markers:{type:Array,readOnly:!0,value:[]}},observers:["_updateKnob(value, min, max, snaps, step)","_valueChanged(value)","_immediateValueChanged(immediateValue)","_updateMarkers(maxMarkers, min, max, snaps)"],hostAttributes:{role:"slider",tabindex:0},keyBindings:{"left down pagedown home":"_decrementKey","right up pageup end":"_incrementKey"},increment:function(){this.value=this._clampValue(this.value+this.step)},decrement:function(){this.value=this._clampValue(this.value-this.step)},_updateKnob:function(t,e,i,s,a){this.setAttribute("aria-valuemin",e),this.setAttribute("aria-valuemax",i),this.setAttribute("aria-valuenow",t),this._positionKnob(this._calcRatio(t))},_valueChanged:function(){this.fire("value-change")},_immediateValueChanged:function(){this.dragging?this.fire("immediate-value-change"):this.value=this.immediateValue},_secondaryProgressChanged:function(){this.secondaryProgress=this._clampValue(this.secondaryProgress)},_expandKnob:function(){this._setExpand(!0)},_resetKnob:function(){this.cancelDebouncer("expandKnob"),this._setExpand(!1)},_positionKnob:function(t){this._setImmediateValue(this._calcStep(this._calcKnobPosition(t))),this._setRatio(this._calcRatio(this.immediateValue)),this.$.sliderKnob.style.left=100*this.ratio+"%",this.dragging&&(this._knobstartx=this.ratio*this._w,this.translate3d(0,0,0,this.$.sliderKnob))},_calcKnobPosition:function(t){return(this.max-this.min)*t+this.min},_onTrack:function(t){switch(t.stopPropagation(),t.detail.state){case"start":this._trackStart(t);break;case"track":this._trackX(t);break;case"end":this._trackEnd()}},_trackStart:function(t){this._w=this.$.sliderBar.offsetWidth,this._x=this.ratio*this._w,this._startx=this._x,this._knobstartx=this._startx,this._minx=-this._startx,this._maxx=this._w-this._startx,this.$.sliderKnob.classList.add("dragging"),this._setDragging(!0)},_trackX:function(t){this.dragging||this._trackStart(t);var e=Math.min(this._maxx,Math.max(this._minx,t.detail.dx));this._x=this._startx+e;var i=this._calcStep(this._calcKnobPosition(this._x/this._w));this._setImmediateValue(i);var s=this._calcRatio(this.immediateValue)*this._w-this._knobstartx;this.translate3d(s+"px",0,0,this.$.sliderKnob)},_trackEnd:function(){var t=this.$.sliderKnob.style;this.$.sliderKnob.classList.remove("dragging"),this._setDragging(!1),this._resetKnob(),this.value=this.immediateValue,t.transform=t.webkitTransform="",this.fire("change")},_knobdown:function(t){this._expandKnob(),t.preventDefault(),this.focus()},_bardown:function(t){this._w=this.$.sliderBar.offsetWidth;var e=this.$.sliderBar.getBoundingClientRect(),i=(t.detail.x-e.left)/this._w,s=this.ratio;this._setTransiting(!0),this._positionKnob(i),this.debounce("expandKnob",this._expandKnob,60),s===this.ratio&&this._setTransiting(!1),this.async(function(){this.fire("change")}),t.preventDefault(),this.focus()},_knobTransitionEnd:function(t){t.target===this.$.sliderKnob&&this._setTransiting(!1)},_updateMarkers:function(t,e,i,s){s||this._setMarkers([]);var a=Math.round((i-e)/this.step);a>t&&(a=t),this._setMarkers(new Array(a))},_mergeClasses:function(t){return Object.keys(t).filter(function(e){return t[e]}).join(" ")},_getClassNames:function(){return this._mergeClasses({disabled:this.disabled,pin:this.pin,snaps:this.snaps,ring:this.immediateValue<=this.min,expand:this.expand,dragging:this.dragging,transiting:this.transiting,editable:this.editable})},_incrementKey:function(t){this.disabled||("end"===t.detail.key?this.value=this.max:this.increment(),this.fire("change"))},_decrementKey:function(t){this.disabled||("home"===t.detail.key?this.value=this.min:this.decrement(),this.fire("change"))},_changeValue:function(t){this.value=t.target.value,this.fire("change")},_inputKeyDown:function(t){t.stopPropagation()},_createRipple:function(){return this._rippleContainer=this.$.sliderKnob,Polymer.PaperInkyFocusBehaviorImpl._createRipple.call(this)},_focusedChanged:function(t){t&&this.ensureRipple(),this.hasRipple()&&(t?this._ripple.style.display="":this._ripple.style.display="none",this._ripple.holdDown=t)}})</script></dom-module><dom-module id="more-info-climate" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex"></style><style>:host{color:var(--primary-text-color);--paper-input-container-input:{text-transform:capitalize};}.container-aux_heat,.container-away_mode,.container-fan_list,.container-humidity,.container-operation_list,.container-swing_list,.container-temperature{display:none}.has-aux_heat .container-aux_heat,.has-away_mode .container-away_mode,.has-fan_list .container-fan_list,.has-humidity .container-humidity,.has-operation_list .container-operation_list,.has-swing_list .container-swing_list,.has-temperature .container-temperature{display:block}.container-fan_list iron-icon,.container-operation_list iron-icon,.container-swing_list iron-icon{margin:22px 16px 0 0}paper-dropdown-menu{width:100%}paper-slider{width:100%}.auto paper-slider{--paper-slider-active-color:var(--paper-orange-400);--paper-slider-secondary-color:var(--paper-blue-400)}.heat paper-slider{--paper-slider-active-color:var(--paper-orange-400);--paper-slider-secondary-color:var(--paper-green-400)}.cool paper-slider{--paper-slider-active-color:var(--paper-green-400);--paper-slider-secondary-color:var(--paper-blue-400)}.humidity{--paper-slider-active-color:var(--paper-blue-400);--paper-slider-secondary-color:var(--paper-blue-400)}paper-range-slider{--paper-range-slider-lower-color:var(--paper-orange-400);--paper-range-slider-active-color:var(--paper-green-400);--paper-range-slider-higher-color:var(--paper-blue-400);--paper-range-slider-knob-color:var(--primary-color);--paper-range-slider-pin-color:var(--primary-color);--paper-range-slider-width:100%}.single-row{padding:8px 0}.capitalize{text-transform:capitalize}</style><div class$="[[computeClassNames(stateObj)]]"><div class="container-temperature"><div class$="single-row, [[stateObj.attributes.operation_mode]]"><div hidden$="[[computeTargetTempHidden(stateObj)]]">Target Temperature</div><paper-slider min="[[stateObj.attributes.min_temp]]" max="[[stateObj.attributes.max_temp]]" secondary-progress="[[stateObj.attributes.max_temp]]" pin="" step="0.5" value="[[stateObj.attributes.temperature]]" hidden$="[[computeHideTempSlider(stateObj)]]" on-change="targetTemperatureSliderChanged"></paper-slider><paper-range-slider min="[[stateObj.attributes.min_temp]]" max="[[stateObj.attributes.max_temp]]" pin="" step="0.5" value-min="[[stateObj.attributes.target_temp_low]]" value-max="[[stateObj.attributes.target_temp_high]]" value-diff-min="2" hidden$="[[computeHideTempRangeSlider(stateObj)]]" on-change="targetTemperatureRangeSliderChanged"></paper-range-slider></div></div><div class="container-humidity"><div class="single-row"><div>Target Humidity</div><paper-slider class="humidity" min="[[stateObj.attributes.min_humidity]]" max="[[stateObj.attributes.max_humidity]]" secondary-progress="[[stateObj.attributes.max_humidity]]" step="1" pin="" value="[[stateObj.attributes.humidity]]" on-change="targetHumiditySliderChanged"></paper-slider></div></div><div class="container-operation_list"><div class="controls"><paper-dropdown-menu label-float="" label="Operation"><paper-menu class="dropdown-content" selected="{{operationIndex}}"><template is="dom-repeat" items="[[stateObj.attributes.operation_list]]"><paper-item class="capitalize">[[item]]</paper-item></template></paper-menu></paper-dropdown-menu></div></div><div class="container-fan_list"><paper-dropdown-menu label-float="" label="Fan Mode"><paper-menu class="dropdown-content" selected="{{fanIndex}}"><template is="dom-repeat" items="[[stateObj.attributes.fan_list]]"><paper-item>[[item]]</paper-item></template></paper-menu></paper-dropdown-menu></div><div class="container-swing_list"><paper-dropdown-menu label-float="" label="Swing Mode"><paper-menu class="dropdown-content" selected="{{swingIndex}}"><template is="dom-repeat" items="[[stateObj.attributes.swing_list]]"><paper-item>[[item]]</paper-item></template></paper-menu></paper-dropdown-menu></div><div class="container-away_mode"><div class="center horizontal layout single-row"><div class="flex">Away Mode</div><paper-toggle-button checked="[[awayToggleChecked]]" on-change="awayToggleChanged"></paper-toggle-button></div></div><div class="container-aux_heat"><div class="center horizontal layout single-row"><div class="flex">Aux Heat</div><paper-toggle-button checked="[[auxToggleChecked]]" on-change="auxToggleChanged"></paper-toggle-button></div></div></div></template></dom-module><script>Polymer({is:"more-info-climate",properties:{hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"},operationIndex:{type:Number,value:-1,observer:"handleOperationmodeChanged"},fanIndex:{type:Number,value:-1,observer:"handleFanmodeChanged"},swingIndex:{type:Number,value:-1,observer:"handleSwingmodeChanged"},awayToggleChecked:{type:Boolean},auxToggleChecked:{type:Boolean}},stateObjChanged:function(e){this.targetTemperatureSliderValue=e.attributes.temperature,this.awayToggleChecked="on"===e.attributes.away_mode,this.auxheatToggleChecked="on"===e.attributes.aux_heat,e.attributes.fan_list?this.fanIndex=e.attributes.fan_list.indexOf(e.attributes.fan_mode):this.fanIndex=-1,e.attributes.operation_list?this.operationIndex=e.attributes.operation_list.indexOf(e.attributes.operation_mode):this.operationIndex=-1,e.attributes.swing_list?this.swingIndex=e.attributes.swing_list.indexOf(e.attributes.swing_mode):this.swingIndex=-1,this.async(function(){this.fire("iron-resize")}.bind(this),500)},computeTargetTempHidden:function(e){return!e.attributes.temperature&&!e.attributes.target_temp_low&&!e.attributes.target_temp_high},computeHideTempRangeSlider:function(e){return!e.attributes.target_temp_low&&!e.attributes.target_temp_high},computeHideTempSlider:function(e){return!e.attributes.temperature},computeClassNames:function(e){return"more-info-climate "+window.hassUtil.attributeClassNames(e,["away_mode","aux_heat","temperature","humidity","operation_list","fan_list","swing_list"])},targetTemperatureSliderChanged:function(e){var t=e.target.value;t!==this.stateObj.attributes.temperature&&this.callServiceHelper("set_temperature",{temperature:t})},targetTemperatureRangeSliderChanged:function(e){var t=e.currentTarget.valueMin,a=e.currentTarget.valueMax;t===this.stateObj.attributes.target_temp_low&&a===this.stateObj.attributes.target_temp_high||this.callServiceHelper("set_temperature",{target_temp_low:t,target_temp_high:a})},targetHumiditySliderChanged:function(e){var t=e.target.value;t!==this.stateObj.attributes.humidity&&this.callServiceHelper("set_humidity",{humidity:t})},awayToggleChanged:function(e){var t="on"===this.stateObj.attributes.away_mode,a=e.target.checked;t!==a&&this.callServiceHelper("set_away_mode",{away_mode:a})},auxToggleChanged:function(e){var t="on"===this.stateObj.attributes.aux_heat,a=e.target.checked;t!==a&&this.callServiceHelper("set_aux_heat",{aux_heat:a})},handleFanmodeChanged:function(e){var t;""!==e&&e!==-1&&(t=this.stateObj.attributes.fan_list[e],t!==this.stateObj.attributes.fan_mode&&this.callServiceHelper("set_fan_mode",{fan_mode:t}))},handleOperationmodeChanged:function(e){var t;""!==e&&e!==-1&&(t=this.stateObj.attributes.operation_list[e],t!==this.stateObj.attributes.operation_mode&&this.callServiceHelper("set_operation_mode",{operation_mode:t}))},handleSwingmodeChanged:function(e){var t;""!==e&&e!==-1&&(t=this.stateObj.attributes.swing_list[e],t!==this.stateObj.attributes.swing_mode&&this.callServiceHelper("set_swing_mode",{swing_mode:t}))},callServiceHelper:function(e,t){t.entity_id=this.stateObj.entityId,this.hass.serviceActions.callService("climate",e,t).then(function(){this.stateObjChanged(this.stateObj)}.bind(this))}})</script><dom-module id="more-info-cover" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex"></style><style>.current_position,.current_tilt_position{max-height:0;overflow:hidden}.has-current_position .current_position,.has-current_tilt_position .current_tilt_position{max-height:90px}</style><div class$="[[computeClassNames(stateObj)]]"><div class="current_position"><div>Position</div><paper-slider min="0" max="100" value="{{coverPositionSliderValue}}" step="1" pin="" on-change="coverPositionSliderChanged"></paper-slider></div><div class="current_tilt_position"><div>Tilt position</div><paper-icon-button icon="mdi:arrow-top-right" on-tap="onOpenTiltTap" title="Open tilt" disabled="[[computeIsFullyOpenTilt(stateObj)]]"></paper-icon-button><paper-icon-button icon="mdi:stop" on-tap="onStopTiltTap" title="Stop tilt"></paper-icon-button><paper-icon-button icon="mdi:arrow-bottom-left" on-tap="onCloseTiltTap" title="Close tilt" disabled="[[computeIsFullyClosedTilt(stateObj)]]"></paper-icon-button><paper-slider min="0" max="100" value="{{coverTiltPositionSliderValue}}" step="1" pin="" on-change="coverTiltPositionSliderChanged"></paper-slider></div></div></template></dom-module><script>Polymer({is:"more-info-cover",properties:{hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"},coverPositionSliderValue:{type:Number},coverTiltPositionSliderValue:{type:Number}},stateObjChanged:function(t){this.coverPositionSliderValue=t.attributes.current_position,this.coverTiltPositionSliderValue=t.attributes.current_tilt_position},computeClassNames:function(t){return window.hassUtil.attributeClassNames(t,["current_position","current_tilt_position"])},coverPositionSliderChanged:function(t){this.hass.serviceActions.callService("cover","set_cover_position",{entity_id:this.stateObj.entityId,position:t.target.value})},coverTiltPositionSliderChanged:function(t){this.hass.serviceActions.callService("cover","set_cover_tilt_position",{entity_id:this.stateObj.entityId,tilt_position:t.target.value})},computeIsFullyOpenTilt:function(t){return 100===t.attributes.current_tilt_position},computeIsFullyClosedTilt:function(t){return 0===t.attributes.current_tilt_position},onOpenTiltTap:function(){this.hass.serviceActions.callService("cover","open_cover_tilt",{entity_id:this.stateObj.entityId})},onCloseTiltTap:function(){this.hass.serviceActions.callService("cover","close_cover_tilt",{entity_id:this.stateObj.entityId})},onStopTiltTap:function(){this.hass.serviceActions.callService("cover","stop_cover",{entity_id:this.stateObj.entityId})}})</script><dom-module id="more-info-default" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>.data-entry .value{max-width:200px}</style><div class="layout vertical"><template is="dom-repeat" items="[[computeDisplayAttributes(stateObj)]]" as="attribute"><div class="data-entry layout justified horizontal"><div class="key">[[formatAttribute(attribute)]]</div><div class="value">[[getAttributeValue(stateObj, attribute)]]</div></div></template></div></template></dom-module><script>!function(){"use strict";var e=["entity_picture","friendly_name","icon","unit_of_measurement","emulated_hue","emulated_hue_name","haaska_hidden","haaska_name","homebridge_hidden","homebridge_name"];Polymer({is:"more-info-default",properties:{stateObj:{type:Object}},computeDisplayAttributes:function(t){return t?Object.keys(t.attributes).filter(function(t){return e.indexOf(t)===-1}):[]},formatAttribute:function(e){return e.replace(/_/g," ")},getAttributeValue:function(e,t){var r=e.attributes[t];return Array.isArray(r)?r.join(", "):r}})}()</script><dom-module id="more-info-group" assetpath="more-infos/"><template><style>.child-card{margin-bottom:8px}.child-card:last-child{margin-bottom:0}</style><div id="groupedControlDetails"></div><template is="dom-repeat" items="[[states]]" as="state"><div class="child-card"><state-card-content state-obj="[[state]]" hass="[[hass]]"></state-card-content></div></template></template></dom-module><script>Polymer({is:"more-info-group",behaviors:[window.hassBehavior],properties:{hass:{type:Object},stateObj:{type:Object},states:{type:Array,bindNuclear:function(t){return[t.moreInfoGetters.currentEntity,t.entityGetters.entityMap,function(t,e){return t?t.attributes.entity_id.map(e.get.bind(e)):[]}]}}},observers:["statesChanged(stateObj, states)"],statesChanged:function(t,e){var s,i,a,n,r=!1;if(e&&e.length>0)for(s=e[0],r=s.set("entityId",t.entityId).set("attributes",Object.assign({},s.attributes)),i=0;i<e.length;i++)a=e[i],a&&a.domain&&r.domain!==a.domain&&(r=!1);r?window.hassUtil.dynamicContentUpdater(this.$.groupedControlDetails,"MORE-INFO-"+window.hassUtil.stateMoreInfoType(r).toUpperCase(),{stateObj:r,hass:this.hass}):(n=Polymer.dom(this.$.groupedControlDetails),n.lastChild&&n.removeChild(n.lastChild))}})</script><dom-module id="more-info-sun" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><template is="dom-repeat" items="[[computeOrder(risingDate, settingDate)]]"><div class="data-entry layout justified horizontal"><div class="key"><span>[[itemCaption(item)]]</span><ha-relative-time datetime-obj="[[itemDate(item)]]"></ha-relative-time></div><div class="value">[[itemValue(item)]]</div></div></template><div class="data-entry layout justified horizontal"><div class="key">Elevation</div><div class="value">[[stateObj.attributes.elevation]]</div></div></template></dom-module><script>Polymer({is:"more-info-sun",properties:{stateObj:{type:Object},risingDate:{type:Object,computed:"computeRising(stateObj)"},settingDate:{type:Object,computed:"computeSetting(stateObj)"}},computeRising:function(t){return new Date(t.attributes.next_rising)},computeSetting:function(t){return new Date(t.attributes.next_setting)},computeOrder:function(t,e){return t>e?["set","ris"]:["ris","set"]},itemCaption:function(t){return"ris"===t?"Rising ":"Setting "},itemDate:function(t){return"ris"===t?this.risingDate:this.settingDate},itemValue:function(t){return window.hassUtil.formatTime(this.itemDate(t))}})</script><dom-module id="more-info-configurator" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex"></style><style>p{margin:8px 0}p>img{max-width:100%}p.center{text-align:center}p.error{color:#C62828}p.submit{text-align:center;height:41px}paper-spinner{width:14px;height:14px;margin-right:20px}</style><div class="layout vertical"><template is="dom-if" if="[[isConfigurable]]"><p hidden$="[[!stateObj.attributes.description]]">[[stateObj.attributes.description]] <a hidden$="[[!stateObj.attributes.link_url]]" href="[[stateObj.attributes.link_url]]" target="_blank">[[stateObj.attributes.link_name]]</a></p><p class="error" hidden$="[[!stateObj.attributes.errors]]">[[stateObj.attributes.errors]]</p><p class="center" hidden$="[[!stateObj.attributes.description_image]]"><img src="[[stateObj.attributes.description_image]]"></p><template is="dom-repeat" items="[[stateObj.attributes.fields]]"><paper-input-container id="paper-input-fields-{{item.id}}"><label>[[item.name]]</label><input is="iron-input" type="[[item.type]]" id="[[item.id]]" on-change="fieldChanged"></paper-input-container></template><p class="submit"><paper-button raised="" disabled="[[isConfiguring]]" on-tap="submitClicked"><paper-spinner active="[[isConfiguring]]" hidden="[[!isConfiguring]]" alt="Configuring"></paper-spinner>[[submitCaption]]</paper-button></p></template></div></template></dom-module><script>Polymer({is:"more-info-configurator",behaviors:[window.hassBehavior],properties:{stateObj:{type:Object},action:{type:String,value:"display"},isStreaming:{type:Boolean,bindNuclear:function(i){return i.streamGetters.isStreamingEvents}},isConfigurable:{type:Boolean,computed:"computeIsConfigurable(stateObj)"},isConfiguring:{type:Boolean,value:!1},submitCaption:{type:String,computed:"computeSubmitCaption(stateObj)"},fieldInput:{type:Object,value:{}}},computeIsConfigurable:function(i){return"configure"===i.state},computeSubmitCaption:function(i){return i.attributes.submit_caption||"Set configuration"},fieldChanged:function(i){var t=i.target;this.fieldInput[t.id]=t.value},submitClicked:function(){var i={configure_id:this.stateObj.attributes.configure_id,fields:this.fieldInput};this.isConfiguring=!0,this.hass.serviceActions.callService("configurator","configure",i).then(function(){this.isConfiguring=!1,this.isStreaming||this.hass.syncActions.fetchAll()}.bind(this),function(){this.isConfiguring=!1}.bind(this))}})</script><dom-module id="more-info-script" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><div class="layout vertical"><div class="data-entry layout justified horizontal"><div class="key">Last Action</div><div class="value">[[stateObj.attributes.last_action]]</div></div></div></template></dom-module><script>Polymer({is:"more-info-script",properties:{stateObj:{type:Object}}})</script><dom-module id="ha-labeled-slider" assetpath="components/"><template><style>:host{display:block;padding-bottom:16px}.title{margin-bottom:16px;opacity:var(--dark-primary-opacity)}iron-icon{float:left;margin-top:4px;opacity:var(--dark-secondary-opacity)}.slider-container{margin-left:24px}</style><div class="title">[[caption]]</div><iron-icon icon="[[icon]]"></iron-icon><div class="slider-container"><paper-slider min="[[min]]" max="[[max]]" value="{{value}}"></paper-slider></div></template></dom-module><script>Polymer({is:"ha-labeled-slider",properties:{caption:{type:String},icon:{type:String},min:{type:Number},max:{type:Number},value:{type:Number,notify:!0}}})</script><dom-module id="ha-color-picker" assetpath="components/"><template><style>canvas{cursor:crosshair}</style><canvas width="[[width]]" height="[[height]]"></canvas></template></dom-module><script>Polymer({is:"ha-color-picker",properties:{color:{type:Object},width:{type:Number},height:{type:Number}},listeners:{mousedown:"onMouseDown",mouseup:"onMouseUp",touchstart:"onTouchStart",touchend:"onTouchEnd"},onMouseDown:function(t){this.onMouseMove(t),this.addEventListener("mousemove",this.onMouseMove)},onMouseUp:function(){this.removeEventListener("mousemove",this.onMouseMove)},onTouchStart:function(t){this.onTouchMove(t),this.addEventListener("touchmove",this.onTouchMove)},onTouchEnd:function(){this.removeEventListener("touchmove",this.onTouchMove)},onTouchMove:function(t){this.mouseMoveIsThrottled&&(this.mouseMoveIsThrottled=!1,this.processColorSelect(t.touches[0]),this.async(function(){this.mouseMoveIsThrottled=!0}.bind(this),100))},onMouseMove:function(t){this.mouseMoveIsThrottled&&(this.mouseMoveIsThrottled=!1,this.processColorSelect(t),this.async(function(){this.mouseMoveIsThrottled=!0}.bind(this),100))},processColorSelect:function(t){var o=this.canvas.getBoundingClientRect();t.clientX<o.left||t.clientX>=o.left+o.width||t.clientY<o.top||t.clientY>=o.top+o.height||this.onColorSelect(t.clientX-o.left,t.clientY-o.top)},onColorSelect:function(t,o){var e=this.context.getImageData(t,o,1,1).data;this.setColor({r:e[0],g:e[1],b:e[2]})},setColor:function(t){this.color=t,this.fire("colorselected",{rgb:this.color})},ready:function(){this.setColor=this.setColor.bind(this),this.mouseMoveIsThrottled=!0,this.canvas=this.children[0],this.context=this.canvas.getContext("2d"),this.drawGradient()},drawGradient:function(){var t,o,e,i,s;this.width&&this.height||(t=getComputedStyle(this)),o=this.width||parseInt(t.width,10),e=this.height||parseInt(t.height,10),i=this.context.createLinearGradient(0,0,o,0),i.addColorStop(0,"rgb(255,0,0)"),i.addColorStop(.16,"rgb(255,0,255)"),i.addColorStop(.32,"rgb(0,0,255)"),i.addColorStop(.48,"rgb(0,255,255)"),i.addColorStop(.64,"rgb(0,255,0)"),i.addColorStop(.8,"rgb(255,255,0)"),i.addColorStop(1,"rgb(255,0,0)"),this.context.fillStyle=i,this.context.fillRect(0,0,o,e),s=this.context.createLinearGradient(0,0,0,e),s.addColorStop(0,"rgba(255,255,255,1)"),s.addColorStop(.5,"rgba(255,255,255,0)"),s.addColorStop(.5,"rgba(0,0,0,0)"),s.addColorStop(1,"rgba(0,0,0,1)"),this.context.fillStyle=s,this.context.fillRect(0,0,o,e)}})</script><dom-module id="more-info-light" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex"></style><style>.effect_list{padding-bottom:16px}.brightness,.color_temp,.effect_list,.white_value{max-height:0;overflow:hidden;transition:max-height .5s ease-in}ha-color-picker{display:block;width:250px;max-height:0;overflow:hidden;transition:max-height .2s ease-in}.has-brightness .brightness,.has-color_temp .color_temp,.has-effect_list .effect_list,.has-white_value .white_value{max-height:84px}.has-rgb_color ha-color-picker{max-height:200px}</style><div class$="[[computeClassNames(stateObj)]]"><div class="effect_list"><paper-dropdown-menu label-float="" label="Effect"><paper-menu class="dropdown-content" selected="{{effectIndex}}"><template is="dom-repeat" items="[[stateObj.attributes.effect_list]]"><paper-item>[[item]]</paper-item></template></paper-menu></paper-dropdown-menu></div><div class="brightness"><ha-labeled-slider caption="Brightness" icon="mdi:brightness-5" max="255" value="{{brightnessSliderValue}}" on-change="brightnessSliderChanged"></ha-labeled-slider></div><div class="color_temp"><ha-labeled-slider caption="Color Temperature" icon="mdi:thermometer" min="154" max="500" value="{{ctSliderValue}}" on-change="ctSliderChanged"></ha-labeled-slider></div><div class="white_value"><ha-labeled-slider caption="White Value" icon="mdi:file-word-box" max="255" value="{{wvSliderValue}}" on-change="wvSliderChanged"></ha-labeled-slider></div><ha-color-picker on-colorselected="colorPicked" height="200" width="250"></ha-color-picker></div></template></dom-module><script>Polymer({is:"more-info-light",properties:{hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"},effectIndex:{type:Number,value:-1,observer:"effectChanged"},brightnessSliderValue:{type:Number,value:0},ctSliderValue:{type:Number,value:0},wvSliderValue:{type:Number,value:0}},stateObjChanged:function(t){t&&"on"===t.state?(this.brightnessSliderValue=t.attributes.brightness,this.ctSliderValue=t.attributes.color_temp,this.wvSliderValue=t.attributes.white_value,t.attributes.effect_list?this.effectIndex=t.attributes.effect_list.indexOf(t.attributes.effect):this.effectIndex=-1):this.brightnessSliderValue=0,this.async(function(){this.fire("iron-resize")}.bind(this),500)},computeClassNames:function(t){var e=window.hassUtil.attributeClassNames(t,["rgb_color","color_temp","white_value","effect_list"]),i=1;return t&&t.attributes.supported_features&i&&(e+=" has-brightness"),e},effectChanged:function(t){var e;""!==t&&t!==-1&&(e=this.stateObj.attributes.effect_list[t],e!==this.stateObj.attributes.effect&&this.hass.serviceActions.callService("light","turn_on",{entity_id:this.stateObj.entityId,effect:e}))},brightnessSliderChanged:function(t){var e=parseInt(t.target.value,10);isNaN(e)||(0===e?this.hass.serviceActions.callTurnOff(this.stateObj.entityId):this.hass.serviceActions.callService("light","turn_on",{entity_id:this.stateObj.entityId,brightness:e}))},ctSliderChanged:function(t){var e=parseInt(t.target.value,10);isNaN(e)||this.hass.serviceActions.callService("light","turn_on",{entity_id:this.stateObj.entityId,color_temp:e})},wvSliderChanged:function(t){var e=parseInt(t.target.value,10);isNaN(e)||this.hass.serviceActions.callService("light","turn_on",{entity_id:this.stateObj.entityId,white_value:e})},serviceChangeColor:function(t,e,i){t.serviceActions.callService("light","turn_on",{entity_id:e,rgb_color:[i.r,i.g,i.b]})},colorPicked:function(t){return this.skipColorPicked?void(this.colorChanged=!0):(this.color=t.detail.rgb,this.serviceChangeColor(this.hass,this.stateObj.entityId,this.color),this.colorChanged=!1,this.skipColorPicked=!0,void(this.colorDebounce=setTimeout(function(){this.colorChanged&&this.serviceChangeColor(this.hass,this.stateObj.entityId,this.color),this.skipColorPicked=!1}.bind(this),500)))}})</script><dom-module id="more-info-media_player" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>.media-state{text-transform:capitalize}paper-icon-button[highlight]{color:var(--accent-color)}.volume{margin-bottom:8px;max-height:0;overflow:hidden;transition:max-height .5s ease-in}.has-volume_level .volume{max-height:40px}iron-icon.source-input{padding:7px;margin-top:15px}paper-dropdown-menu.source-input{margin-left:10px}[hidden]{display:none!important}</style><div class$="[[computeClassNames(stateObj)]]"><div class="layout horizontal"><div class="flex"><paper-icon-button icon="mdi:power" highlight$="[[isOff]]" on-tap="handleTogglePower" hidden$="[[computeHidePowerButton(isOff, supportsTurnOn, supportsTurnOff)]]"></paper-icon-button></div><div><template is="dom-if" if="[[computeShowPlaybackControls(isOff, hasMediaControl)]]"><paper-icon-button icon="mdi:skip-previous" on-tap="handlePrevious" hidden$="[[!supportsPreviousTrack]]"></paper-icon-button><paper-icon-button icon="[[computePlaybackControlIcon(stateObj)]]" on-tap="handlePlaybackControl" hidden$="[[!computePlaybackControlIcon(stateObj)]]" highlight=""></paper-icon-button><paper-icon-button icon="mdi:skip-next" on-tap="handleNext" hidden$="[[!supportsNextTrack]]"></paper-icon-button></template></div></div><div class="volume_buttons center horizontal layout" hidden$="[[computeHideVolumeButtons(isOff, supportsVolumeButtons)]]"><paper-icon-button on-tap="handleVolumeTap" icon="mdi:volume-off"></paper-icon-button><paper-icon-button id="volumeDown" disabled$="[[isMuted]]" on-mousedown="handleVolumeDown" on-touchstart="handleVolumeDown" icon="mdi:volume-medium"></paper-icon-button><paper-icon-button id="volumeUp" disabled$="[[isMuted]]" on-mousedown="handleVolumeUp" on-touchstart="handleVolumeUp" icon="mdi:volume-high"></paper-icon-button></div><div class="volume center horizontal layout" hidden$="[[!supportsVolumeSet]]"><paper-icon-button on-tap="handleVolumeTap" hidden$="[[supportsVolumeButtons]]" icon="[[computeMuteVolumeIcon(isMuted)]]"></paper-icon-button><paper-slider disabled$="[[isMuted]]" min="0" max="100" value="[[volumeSliderValue]]" on-change="volumeSliderChanged" class="flex"></paper-slider></div><div class="controls layout horizontal justified" hidden$="[[computeHideSelectSource(isOff, supportsSelectSource)]]"><iron-icon class="source-input" icon="mdi:login-variant"></iron-icon><paper-dropdown-menu class="source-input" label-float="" label="Source"><paper-menu class="dropdown-content" selected="{{sourceIndex}}"><template is="dom-repeat" items="[[stateObj.attributes.source_list]]"><paper-item>[[item]]</paper-item></template></paper-menu></paper-dropdown-menu></div><div hidden$="[[computeHideTTS(ttsLoaded, supportsPlayMedia)]]" class="layout horizontal end"><paper-input label="Text to speak" class="flex" value="{{ttsMessage}}"></paper-input><paper-icon-button icon="mdi:send" on-tap="sendTTS"></paper-icon-button></div></div></template></dom-module><script>Polymer({is:"more-info-media_player",behaviors:[window.hassBehavior],properties:{ttsLoaded:{type:Boolean,bindNuclear:function(e){return e.configGetters.isComponentLoaded("tts")}},hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"},isOff:{type:Boolean,value:!1},isPlaying:{type:Boolean,value:!1},isMuted:{type:Boolean,value:!1},source:{type:String,value:""},sourceIndex:{type:Number,value:0,observer:"handleSourceChanged"},volumeSliderValue:{type:Number,value:0},ttsMessage:{type:String,value:""},supportsPause:{type:Boolean,value:!1},supportsVolumeSet:{type:Boolean,value:!1},supportsVolumeMute:{type:Boolean,value:!1},supportsPreviousTrack:{type:Boolean,value:!1},supportsNextTrack:{type:Boolean,value:!1},supportsTurnOn:{type:Boolean,value:!1},supportsTurnOff:{type:Boolean,value:!1},supportsPlayMedia:{type:Boolean,value:!1},supportsVolumeButtons:{type:Boolean,value:!1},supportsSelectSource:{type:Boolean,value:!1},supportsPlay:{type:Boolean,value:!1},hasMediaControl:{type:Boolean,value:!1}},HAS_MEDIA_STATES:["playing","paused","unknown"],stateObjChanged:function(e){e&&(this.isOff="off"===e.state,this.isPlaying="playing"===e.state,this.hasMediaControl=this.HAS_MEDIA_STATES.indexOf(e.state)!==-1,this.volumeSliderValue=100*e.attributes.volume_level,this.isMuted=e.attributes.is_volume_muted,this.source=e.attributes.source,this.supportsPause=0!==(1&e.attributes.supported_media_commands),this.supportsVolumeSet=0!==(4&e.attributes.supported_media_commands),this.supportsVolumeMute=0!==(8&e.attributes.supported_media_commands),this.supportsPreviousTrack=0!==(16&e.attributes.supported_media_commands),this.supportsNextTrack=0!==(32&e.attributes.supported_media_commands),this.supportsTurnOn=0!==(128&e.attributes.supported_media_commands),this.supportsTurnOff=0!==(256&e.attributes.supported_media_commands),this.supportsPlayMedia=0!==(512&e.attributes.supported_media_commands),this.supportsVolumeButtons=0!==(1024&e.attributes.supported_media_commands),this.supportsSelectSource=0!==(2048&e.attributes.supported_media_commands),this.supportsPlay=0!==(16384&e.attributes.supported_media_commands),void 0!==e.attributes.source_list&&(this.sourceIndex=e.attributes.source_list.indexOf(this.source))),this.async(function(){this.fire("iron-resize")}.bind(this),500)},computeClassNames:function(e){return window.hassUtil.attributeClassNames(e,["volume_level"])},computeIsOff:function(e){return"off"===e.state},computeMuteVolumeIcon:function(e){return e?"mdi:volume-off":"mdi:volume-high"},computeHideVolumeButtons:function(e,t){return!t||e},computeShowPlaybackControls:function(e,t){return!e&&t},computePlaybackControlIcon:function(){return this.isPlaying?this.supportsPause?"mdi:pause":"mdi:stop":this.supportsPlay?"mdi:play":null},computeHidePowerButton:function(e,t,s){return e?!t:!s},computeHideSelectSource:function(e,t){return e||!t},computeSelectedSource:function(e){return e.attributes.source_list.indexOf(e.attributes.source)},computeHideTTS:function(e,t){return!e||!t},handleTogglePower:function(){this.callService(this.isOff?"turn_on":"turn_off")},handlePrevious:function(){this.callService("media_previous_track")},handlePlaybackControl:function(){this.callService("media_play_pause")},handleNext:function(){this.callService("media_next_track")},handleSourceChanged:function(e){var t;!this.stateObj||void 0===this.stateObj.attributes.source_list||e<0||e>=this.stateObj.attributes.source_list.length||(t=this.stateObj.attributes.source_list[e],t!==this.stateObj.attributes.source&&this.callService("select_source",{source:t}))},handleVolumeTap:function(){this.supportsVolumeMute&&this.callService("volume_mute",{is_volume_muted:!this.isMuted})},handleVolumeUp:function(){var e=this.$.volumeUp;this.handleVolumeWorker("volume_up",e,!0)},handleVolumeDown:function(){var e=this.$.volumeDown;this.handleVolumeWorker("volume_down",e,!0)},handleVolumeWorker:function(e,t,s){(s||void 0!==t&&t.pointerDown)&&(this.callService(e),this.async(function(){this.handleVolumeWorker(e,t,!1)}.bind(this),500))},volumeSliderChanged:function(e){var t=parseFloat(e.target.value),s=t>0?t/100:0;this.callService("volume_set",{volume_level:s})},sendTTS:function(){var e,t,s=this.hass.reactor.evaluate(this.hass.serviceGetters.entityMap).get("tts").get("services").keySeq().toArray();for(t=0;t<s.length;t++)if(s[t].indexOf("_say")!==-1){e=s[t];break}e&&(this.hass.serviceActions.callService("tts",e,{entity_id:this.stateObj.entityId,message:this.ttsMessage}),this.ttsMessage="",document.activeElement.blur())},callService:function(e,t){var s=t||{};s.entity_id=this.stateObj.entityId,this.hass.serviceActions.callService("media_player",e,s)}})</script><dom-module id="more-info-camera" assetpath="more-infos/"><template><style>:host{max-width:640px}.camera-image{width:100%}</style><img class="camera-image" src="[[computeCameraImageUrl(hass, stateObj, isVisible)]]" on-load="imageLoaded" alt="[[stateObj.entityDisplay]]"></template></dom-module><script>Polymer({is:"more-info-camera",properties:{hass:{type:Object},stateObj:{type:Object},isVisible:{type:Boolean,value:!0}},imageLoaded:function(){this.fire("iron-resize")},computeCameraImageUrl:function(e,a,t){return e.demo?"/demo/webcam.jpg":a&&t?"/api/camera_proxy_stream/"+a.entityId+"?token="+a.attributes.access_token:"data:image/gif;base64,R0lGODlhAQABAAAAACw="}})</script><dom-module id="more-info-updater" assetpath="more-infos/"><template><style>.link{color:#03A9F4}</style><div><a class="link" href="https://home-assistant.io/getting-started/updating/" target="_blank">Update Instructions</a></div></template></dom-module><script>Polymer({is:"more-info-updater",properties:{stateObj:{type:Object}},computeReleaseNotes:function(t){return t.attributes.release_notes||"https://home-assistant.io/getting-started/updating/"}})</script><dom-module id="more-info-alarm_control_panel" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex"></style><div class="layout horizontal"><paper-input label="code" value="{{enteredCode}}" pattern="[[codeFormat]]" type="password" hidden$="[[!codeInputVisible]]" disabled="[[!codeInputEnabled]]"></paper-input></div><div class="layout horizontal"><paper-button on-tap="handleDisarmTap" hidden$="[[!disarmButtonVisible]]" disabled="[[!codeValid]]">Disarm</paper-button><paper-button on-tap="handleHomeTap" hidden$="[[!armHomeButtonVisible]]" disabled="[[!codeValid]]">Arm Home</paper-button><paper-button on-tap="handleAwayTap" hidden$="[[!armAwayButtonVisible]]" disabled="[[!codeValid]]">Arm Away</paper-button></div></template></dom-module><script>Polymer({is:"more-info-alarm_control_panel",properties:{hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"},enteredCode:{type:String,value:""},disarmButtonVisible:{type:Boolean,value:!1},armHomeButtonVisible:{type:Boolean,value:!1},armAwayButtonVisible:{type:Boolean,value:!1},codeInputVisible:{type:Boolean,value:!1},codeInputEnabled:{type:Boolean,value:!1},codeFormat:{type:String,value:""},codeValid:{type:Boolean,computed:"validateCode(enteredCode, codeFormat)"}},validateCode:function(e,t){var a=new RegExp(t);return null===t||a.test(e)},stateObjChanged:function(e){e&&(this.codeFormat=e.attributes.code_format,this.codeInputVisible=null!==this.codeFormat,this.codeInputEnabled="armed_home"===e.state||"armed_away"===e.state||"disarmed"===e.state||"pending"===e.state||"triggered"===e.state,this.disarmButtonVisible="armed_home"===e.state||"armed_away"===e.state||"pending"===e.state||"triggered"===e.state,this.armHomeButtonVisible="disarmed"===e.state,this.armAwayButtonVisible="disarmed"===e.state),this.async(function(){this.fire("iron-resize")}.bind(this),500)},handleDisarmTap:function(){this.callService("alarm_disarm",{code:this.enteredCode})},handleHomeTap:function(){this.callService("alarm_arm_home",{code:this.enteredCode})},handleAwayTap:function(){this.callService("alarm_arm_away",{code:this.enteredCode})},callService:function(e,t){var a=t||{};a.entity_id=this.stateObj.entityId,this.hass.serviceActions.callService("alarm_control_panel",e,a).then(function(){this.enteredCode=""}.bind(this))}})</script><dom-module id="more-info-lock" assetpath="more-infos/"><template><style>paper-input{display:inline-block}</style><div hidden$="[[!stateObj.attributes.code_format]]"><paper-input label="code" value="{{enteredCode}}" pattern="[[stateObj.attributes.code_format]]" type="password"></paper-input><paper-button on-tap="handleUnlockTap" hidden$="[[!isLocked]]">Unlock</paper-button><paper-button on-tap="handleLockTap" hidden$="[[isLocked]]">Lock</paper-button></div></template></dom-module><script>Polymer({is:"more-info-lock",properties:{hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"},enteredCode:{type:String,value:""}},handleUnlockTap:function(){this.callService("unlock",{code:this.enteredCode})},handleLockTap:function(){this.callService("lock",{code:this.enteredCode})},stateObjChanged:function(e){e&&(this.isLocked="locked"===e.state),this.async(function(){this.fire("iron-resize")}.bind(this),500)},callService:function(e,t){var i=t||{};i.entity_id=this.stateObj.entityId,this.hass.serviceActions.callService("lock",e,i)}})</script><script>Polymer({is:"more-info-content",properties:{hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"}},created:function(){this.style.display="block"},stateObjChanged:function(t){var s;t?window.hassUtil.dynamicContentUpdater(this,"MORE-INFO-"+window.hassUtil.stateMoreInfoType(t).toUpperCase(),{hass:this.hass,stateObj:t,isVisible:!0}):(s=Polymer.dom(this),s.lastChild&&(s.lastChild.isVisible=!1))}})</script><dom-module id="more-info-dialog" assetpath="dialogs/"><template><style>paper-dialog{font-size:14px;width:365px}paper-dialog[data-domain=camera]{width:auto}state-history-charts{position:relative;z-index:1;max-width:365px}state-card-content{margin-bottom:24px;font-size:14px}@media all and (max-width:450px),all and (max-height:500px){paper-dialog{margin:0;width:100%;max-height:calc(100% - 64px);position:fixed!important;bottom:0;left:0;right:0;overflow:scroll}}</style><paper-dialog id="dialog" with-backdrop="" opened="{{dialogOpen}}" data-domain$="[[stateObj.domain]]"><h2><state-card-content state-obj="[[stateObj]]" hass="[[hass]]" in-dialog=""></state-card-content></h2><template is="dom-if" if="[[showHistoryComponent]]"><state-history-charts state-history="[[stateHistory]]" is-loading-data="[[isLoadingHistoryData]]"></state-history-charts></template><paper-dialog-scrollable id="scrollable"><more-info-content state-obj="[[stateObj]]" hass="[[hass]]"></more-info-content></paper-dialog-scrollable></paper-dialog></template></dom-module><script>Polymer({is:"more-info-dialog",behaviors:[window.hassBehavior],properties:{hass:{type:Object},stateObj:{type:Object,bindNuclear:function(t){return t.moreInfoGetters.currentEntity},observer:"stateObjChanged"},stateHistory:{type:Object,bindNuclear:function(t){return[t.moreInfoGetters.currentEntityHistory,function(t){return!!t&&[t]}]}},isLoadingHistoryData:{type:Boolean,computed:"computeIsLoadingHistoryData(delayedDialogOpen, isLoadingEntityHistoryData)"},isLoadingEntityHistoryData:{type:Boolean,bindNuclear:function(t){return t.entityHistoryGetters.isLoadingEntityHistory}},hasHistoryComponent:{type:Boolean,bindNuclear:function(t){return t.configGetters.isComponentLoaded("history")},observer:"fetchHistoryData"},shouldFetchHistory:{type:Boolean,bindNuclear:function(t){return t.moreInfoGetters.isCurrentEntityHistoryStale},observer:"fetchHistoryData"},showHistoryComponent:{type:Boolean,value:!1,computed:"computeShowHistoryComponent(hasHistoryComponent, stateObj)"},dialogOpen:{type:Boolean,value:!1,observer:"dialogOpenChanged"},delayedDialogOpen:{type:Boolean,value:!1}},ready:function(){this.$.scrollable.dialogElement=this.$.dialog},computeIsLoadingHistoryData:function(t,e){return!t||e},computeShowHistoryComponent:function(t,e){return this.hasHistoryComponent&&e&&window.hassUtil.DOMAINS_WITH_NO_HISTORY.indexOf(e.domain)===-1},fetchHistoryData:function(){this.stateObj&&this.hasHistoryComponent&&this.shouldFetchHistory&&this.hass.entityHistoryActions.fetchRecent(this.stateObj.entityId)},stateObjChanged:function(t){return t?void this.async(function(){this.fetchHistoryData(),this.dialogOpen=!0}.bind(this),10):void(this.dialogOpen=!1)},dialogOpenChanged:function(t){t?this.async(function(){this.delayedDialogOpen=!0}.bind(this),10):!t&&this.stateObj&&(this.async(function(){this.hass.moreInfoActions.deselectEntity()}.bind(this),10),this.delayedDialogOpen=!1)}})</script><dom-module id="ha-voice-command-dialog" assetpath="dialogs/"><template><style>iron-icon{margin-right:8px}.content{width:300px;min-height:80px;font-size:18px}.icon{float:left}.text{margin-left:48px;margin-right:24px}.interimTranscript{color:#a9a9a9}@media all and (max-width:450px){paper-dialog{margin:0;width:100%;max-height:calc(100% - 64px);position:fixed!important;bottom:0;left:0;right:0;overflow:scroll}}</style><paper-dialog id="dialog" with-backdrop="" opened="{{dialogOpen}}"><div class="content"><div class="icon"><iron-icon icon="mdi:text-to-speech" hidden$="[[isTransmitting]]"></iron-icon><paper-spinner active$="[[isTransmitting]]" hidden$="[[!isTransmitting]]"></paper-spinner></div><div class="text"><span>{{finalTranscript}}</span> <span class="interimTranscript">[[interimTranscript]]</span> …</div></div></paper-dialog></template></dom-module><script>Polymer({is:"ha-voice-command-dialog",behaviors:[window.hassBehavior],properties:{hass:{type:Object},dialogOpen:{type:Boolean,value:!1,observer:"dialogOpenChanged"},finalTranscript:{type:String,bindNuclear:function(e){return e.voiceGetters.finalTranscript}},interimTranscript:{type:String,bindNuclear:function(e){return e.voiceGetters.extraInterimTranscript}},isTransmitting:{type:Boolean,bindNuclear:function(e){return e.voiceGetters.isTransmitting}},isListening:{type:Boolean,bindNuclear:function(e){return e.voiceGetters.isListening}},showListenInterface:{type:Boolean,computed:"computeShowListenInterface(isListening, isTransmitting)",observer:"showListenInterfaceChanged"}},computeShowListenInterface:function(e,n){return e||n},dialogOpenChanged:function(e){!e&&this.isListening&&this.hass.voiceActions.stop()},showListenInterfaceChanged:function(e){!e&&this.dialogOpen?this.dialogOpen=!1:e&&(this.dialogOpen=!0)}})</script><dom-module id="paper-icon-item" assetpath="../bower_components/paper-item/"><template><style include="paper-item-shared-styles"></style><style>:host{@apply(--layout-horizontal);@apply(--layout-center);@apply(--paper-font-subhead);@apply(--paper-item);@apply(--paper-icon-item)}.content-icon{@apply(--layout-horizontal);@apply(--layout-center);width:var(--paper-item-icon-width,56px);@apply(--paper-item-icon)}</style><div id="contentIcon" class="content-icon"><content select="[item-icon]"></content></div><content></content></template><script>Polymer({is:"paper-icon-item",behaviors:[Polymer.PaperItemBehavior]})</script></dom-module><dom-module id="ha-sidebar" assetpath="components/"><template><style include="iron-flex iron-flex-alignment iron-positioning">:host{--sidebar-text:{opacity:var(--dark-primary-opacity);font-weight:500;font-size:14px};display:block;overflow:auto;-ms-user-select:none;-webkit-user-select:none;-moz-user-select:none}app-toolbar{font-weight:400;opacity:var(--dark-primary-opacity);border-bottom:1px solid #e0e0e0}paper-menu{padding-bottom:0}paper-icon-item{--paper-icon-item:{cursor:pointer};--paper-item-icon:{color:#000;opacity:var(--dark-secondary-opacity)};--paper-item-selected:{color:var(--default-primary-color);background-color:#e8e8e8;opacity:1};}paper-icon-item.iron-selected{--paper-item-icon:{color:var(--default-primary-color);opacity:1};}paper-icon-item .item-text{@apply(--sidebar-text)}paper-icon-item.iron-selected .item-text{opacity:1}paper-icon-item.logout{margin-top:16px}.divider{height:1px;background-color:#000;margin:4px 0;opacity:var(--dark-divider-opacity)}.setting{@apply(--sidebar-text)}.subheader{@apply(--sidebar-text);padding:16px}.dev-tools{padding:0 8px;opacity:var(--dark-secondary-opacity)}</style><app-toolbar><div main-title="">Home Assistant</div><paper-icon-button icon="mdi:chevron-left" hidden$="[[narrow]]" on-tap="toggleMenu"></paper-icon-button></app-toolbar><paper-menu attr-for-selected="data-panel" selected="[[selected]]" on-iron-select="menuSelect"><paper-icon-item on-tap="menuClicked" data-panel="states"><iron-icon item-icon="" icon="mdi:apps"></iron-icon><span class="item-text">States</span></paper-icon-item><template is="dom-repeat" items="[[computePanels(panels)]]"><paper-icon-item on-tap="menuClicked" data-panel$="[[item.url_path]]"><iron-icon item-icon="" icon="[[item.icon]]"></iron-icon><span class="item-text">[[item.title]]</span></paper-icon-item></template><paper-icon-item on-tap="menuClicked" data-panel="logout" class="logout"><iron-icon item-icon="" icon="mdi:exit-to-app"></iron-icon><span class="item-text">Log Out</span></paper-icon-item></paper-menu><div><template is="dom-if" if="[[supportPush]]"><div class="divider"></div><paper-item class="horizontal layout justified"><div class="setting">Push Notifications</div><paper-toggle-button on-change="handlePushChange" checked="{{pushToggleChecked}}"></paper-toggle-button></paper-item></template><div class="divider"></div><div class="subheader">Developer Tools</div><div class="dev-tools layout horizontal justified"><paper-icon-button icon="mdi:remote" data-panel="dev-service" alt="Services" title="Services" on-tap="menuClicked"></paper-icon-button><paper-icon-button icon="mdi:code-tags" data-panel="dev-state" alt="States" title="States" on-tap="menuClicked"></paper-icon-button><paper-icon-button icon="mdi:radio-tower" data-panel="dev-event" alt="Events" title="Events" on-tap="menuClicked"></paper-icon-button><paper-icon-button icon="mdi:file-xml" data-panel="dev-template" alt="Templates" title="Templates" on-tap="menuClicked"></paper-icon-button><paper-icon-button icon="mdi:information-outline" data-panel="dev-info" alt="Info" title="Info" on-tap="menuClicked"></paper-icon-button></div></div></template></dom-module><script>Polymer({is:"ha-sidebar",behaviors:[window.hassBehavior],properties:{hass:{type:Object},menuShown:{type:Boolean},menuSelected:{type:String},narrow:{type:Boolean},selected:{type:String,bindNuclear:function(t){return t.navigationGetters.activePanelName}},panels:{type:Array,bindNuclear:function(t){return[t.navigationGetters.panels,function(t){return t.toJS()}]}},supportPush:{type:Boolean,value:!1,bindNuclear:function(t){return t.pushNotificationGetters.isSupported}},pushToggleChecked:{type:Boolean,bindNuclear:function(t){return t.pushNotificationGetters.isActive}}},created:function(){this._boundUpdateStyles=this.updateStyles.bind(this)},computePanels:function(t){var e={map:1,logbook:2,history:3},n=[];return Object.keys(t).forEach(function(e){t[e].title&&n.push(t[e])}),n.sort(function(t,n){var i=t.component_name in e,o=n.component_name in e;return i&&o?e[t.component_name]-e[n.component_name]:i?-1:o?1:t.title>n.title?1:t.title<n.title?-1:0}),n},menuSelect:function(){this.debounce("updateStyles",this._boundUpdateStyles,1)},menuClicked:function(t){for(var e=t.target,n=5,i=e.getAttribute("data-panel");n&&!i;)e=e.parentElement,i=e.getAttribute("data-panel"),n--;n&&this.selectPanel(i)},toggleMenu:function(){this.fire("close-menu")},selectPanel:function(t){if(t!==this.selected){if("logout"===t)return void this.handleLogOut();this.hass.navigationActions.navigate.apply(null,t.split("/")),this.debounce("updateStyles",this._boundUpdateStyles,1)}},handlePushChange:function(t){t.target.checked?this.hass.pushNotificationActions.subscribePushNotifications().then(function(t){this.pushToggleChecked=t}.bind(this)):this.hass.pushNotificationActions.unsubscribePushNotifications().then(function(t){this.pushToggleChecked=!t}.bind(this))},handleLogOut:function(){this.hass.authActions.logOut()}})</script><dom-module id="home-assistant-main" assetpath="layouts/"><template><notification-manager hass="[[hass]]"></notification-manager><more-info-dialog hass="[[hass]]"></more-info-dialog><ha-voice-command-dialog hass="[[hass]]"></ha-voice-command-dialog><iron-media-query query="(max-width: 870px)" query-matches="{{narrow}}"></iron-media-query><paper-drawer-panel id="drawer" force-narrow="[[computeForceNarrow(narrow, showSidebar)]]" responsive-width="0" disable-swipe="[[isSelectedMap]]" disable-edge-swipe="[[isSelectedMap]]"><ha-sidebar drawer="" narrow="[[narrow]]" hass="[[hass]]"></ha-sidebar><iron-pages main="" attr-for-selected="id" fallback-selection="panel-resolver" selected="[[activePanel]]" selected-attribute="panel-visible"><partial-cards id="states" narrow="[[narrow]]" hass="[[hass]]" show-menu="[[showSidebar]]"></partial-cards><partial-panel-resolver id="panel-resolver" narrow="[[narrow]]" hass="[[hass]]" show-menu="[[showSidebar]]"></partial-panel-resolver></iron-pages></paper-drawer-panel></template></dom-module><script>Polymer({is:"home-assistant-main",behaviors:[window.hassBehavior],properties:{hass:{type:Object},narrow:{type:Boolean,value:!0},activePanel:{type:String,bindNuclear:function(e){return e.navigationGetters.activePanelName},observer:"activePanelChanged"},showSidebar:{type:Boolean,value:!1,bindNuclear:function(e){return e.navigationGetters.showSidebar}}},listeners:{"open-menu":"openMenu","close-menu":"closeMenu"},openMenu:function(){this.narrow?this.$.drawer.openDrawer():this.hass.navigationActions.showSidebar(!0)},closeMenu:function(){this.$.drawer.closeDrawer(),this.showSidebar&&this.hass.navigationActions.showSidebar(!1)},activePanelChanged:function(){this.narrow&&this.$.drawer.closeDrawer()},attached:function(){window.removeInitMsg(),this.hass.startUrlSync()},computeForceNarrow:function(e,n){return e||!n},detached:function(){this.hass.stopUrlSync()}})</script></div><dom-module id="home-assistant"><template><template is="dom-if" if="[[loaded]]"><home-assistant-main hass="[[hass]]"></home-assistant-main></template><template is="dom-if" if="[[!loaded]]"><login-form hass="[[hass]]" force-show-loading="[[computeForceShowLoading(dataLoaded, iconsLoaded)]]"></login-form></template></template></dom-module><script>Polymer({is:"home-assistant",hostAttributes:{icons:null},behaviors:[window.hassBehavior],properties:{hass:{type:Object,value:window.hass},icons:{type:String},dataLoaded:{type:Boolean,bindNuclear:function(o){return o.syncGetters.isDataLoaded}},iconsLoaded:{type:Boolean,value:!1},loaded:{type:Boolean,computed:"computeLoaded(dataLoaded, iconsLoaded)"}},computeLoaded:function(o,t){return o&&t},computeForceShowLoading:function(o,t){return o&&!t},loadIcons:function(){var o=function(){this.iconsLoaded=!0}.bind(this);this.importHref("/static/mdi-"+this.icons+".html",o,function(){this.importHref("/static/mdi.html",o,o)})},ready:function(){this.loadIcons()}})</script></body></html> \ 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 ca8c799c522e8783885db768038366dd810d5255..a8fa716d1ea9f89ab4ceec7177870918a4925c6a 100644 GIT binary patch delta 48580 zcmV(jK=!}FfC!C*2nHXE2nbl)fd;h(0Y625VG<u80x8OlGa1mZ*0G%(pN${aR%UiC zt<eu6Aqg=BZ~@S^BJsPQdh{C&l5&zWyLV?}5&iD!?&_-QdcZxHz`x}|Yhw5d-GcNm zm8Gchad<F3%D+BL+OL%rC*Ir{;92<dj8{`EYE4cd(h81s21p^!bo*yrtPK^O-Mg26 zi$35##Di&ZL<@4hsNm?8(eN;_zIBTq<&F@qdvuZo!NnF{0Y2Q-4QtX%`CC2-vIT~u z!Pw%mKuYDqdLKt^&~5b|4GwU_*Z1KkB6!G^wWL%;7DqrF6$#uPdX(4pDCIVe>l8Ot zL1YxU^%A>}4l-}>w2q9`W+7;LirZ9w92Kgi4-2fE@kzuiYNcO<RVUq7Q?`n3P|rfA zKn9y4UZo$gcjY7>k`>-7TtYTnMdaJ*Q>stKt=!|cxVvwO2q&v!!1lL5G#)G1-l{da z?XH$t<$3CJVYi-?ruPTbYJ8a^Ml==r3+5Q6!D+Cc1FI+LaU!#nY=J*Vr%Y*oQ&5y? zr?kvQI!0Q|9P0}GO+|JyEU%C*R#LK0nyt|P&=V`i+o02ymMX}%<W2^@AfBy?#r$V{ zM_gP(BZ_XM_e9jcHW9q5<89^<4?Lhv9Gcdn40yQCa}r>-k#uK4Djjxvl*kQ94DM}9 zX6oitai>L@&W++}^EOCyzG{qrin;3S1$n*4XxG+J5|?}^31FZ^AC04aY9g?!53W{C zi~Lvy1V%Y5bJPa;m=BoBjt6koa`>Jn7|WSSf9Hr#I+L*r=xI3vcP41(iq%y6&0@Ro zbnHA|*@l{_HBSuD1dTcq^-M}Ja(V~J!MU4Aq>Cv?bmiZaifz-)stRs@yD~#;P(pXQ zRfmsXgh=A5D8|O#Wr|VnTyDqRx0LE^xaP|@TjK@)cChOPJo~8W-9ycKO&8YZ^e}#s zjvmHufNS|By}|dwWEGC?Ka59*G5&!I7eSH_i!#8RZ|}$B_)sTTs}|G8kUDz!y;)pl zaTS?~f!T&c@CL~&Jd8ho%QPl_Iq`{1L<eY;@&@MimY-i<rNR66z;z9e-oKykzkff% zzu(;A=Ll0G%njn#Bo%p^Up)W33@riX`}bk6|7ssNarfW%?<2UgKBNcOdGkKRZm7lP zn;3u7xNmu+w=g!$cpn|a?*MvF0hG_u`|*$IgGoE07eeET!3zn07=#ZZEv@1nmKuYl zdoL-}Vd}eY(n~Y%g<Rz~b#;MZxzlSi`^_b+PdYcddCrorb9DTSVKbgPXJsAEfa8q& zWrha(NssgAN9Vw<z(ss}n<thSPzx%Az9kWNlIcL*pcg_i6J+`+o1%7fOK8<lEMiLL zkc_KY%?bOIR5yBmwV(&Y=w_vbt-0+lw332Td~uG?Q(1Bb{1^O_76gqoKhxFN07GDH z%I8#A=&2i;0bkknLi{~d$VR%7jstp!hdJfJiE@QRGFAJjyu_#SGNtDuWtSOOX{r76 zj3?QniXP0-C93KIhj3Jn_zOM6aeT8wbcd~y4-@q>I|!?Pp*Yq!)`H?yh4n~?OIz_H zGRLk8sU#$p<ZmFaQL0rUcyr~7RkDI3G-eI$y{5#hJg8wVeypQ7H^pG~wv=k0>cNl+ z_j1|}4^Ko3$TFDU$YHdP5AWTRWye-Y^_7k_;Bz?sg;^BX2jIpYwUb)EYM0YmW=kGo zFRk>e18`)2uweBtrzI<=`F^JQD)wOwis&0y3n&mx@)S6Nv|6v%9d;YGn^63EcYSqM zE$-dpzk)2OfCuEAr0DO_d0kxrqc?R5;)`aUa$zijhUkvMMvl8MPb<t)&?w16!!mS@ zp$hZKfSz}9<u@DOZ;*fydlcZVBnbp0(k&4}6X0}z_KN1mqJ)9MhyP;zkNlb(6AZXT z<9ek=no+=t1SpWK9v|MZk+Z!0l;^-{53+JTI2;8M8{i!DDUj0$viUq9zB|Zfv(*)$ zVNBp|`C0DS>zB{vGr;K8>*LdRKfihN`t9-aXQ$8KzKuzJDtJ}3?^a6;_MFdYkU@OK zK{6A6>|`MOrbh>si8Zo(uqF`KIfXn8_GI_&tmWH<n#TYmwgUZ8?FTqhnrM|ue1J@K z=PH49Ndl-bsY8n1p-wkHEnuiAb*SV|VH~JSa0gVvd76phVvW4>-WZtSVR(2jM(%e! zS!vyXl{|SfIC-n?$(zy2%pNtHm%c$~7X-(DMO8KV;(E{!Fb8MXVpog?Xf%(6a<j~5 z#kowUE!LznhF6AWf>K-n2npB~jN;~Fj>S-g_XhrWlpf-QZ*Kvq#pRkM);HS!Z!!(^ z$BQf24;cSJrAXrpEAbs#7@G-i^JSj3RuWrJp}f~hRu7yy>FJ_a+6m~9I5>$p`~?nw zkbWFjOU{XP0(o386F5SHOrX$9b|p%(t5K3&k;7ZrH95_$%4v38j6G!6#1y+8rf@Ae zO>Rj|*4J?V0BnfSS3lT1K=DmiPeZngDXLjLgUz$Fn|Pbei&bNe4a;z<xr{VMCz%J? zpJTM7x+C}4)Bbht+YR=p(YSxwx5s>cyU?!A;qay#H>q!>yWo{u=6sQVh6eG^zXJ+_ zGWhe|WnGjX#K#YS_Ye^0=%^El!k-_rt73tgX80k_F#Qz6$KQWL16Mk;`1SW(gla+T zDPqB#$gq4EgG9uKgAzupGxha@3?rk%qd|3H!3*`pFS+l;ryP#>lyhFfErl9?CDTCs z;(o=4>{xuNp2atJy#`e8f0KIkE(|W)c9|R;eERfh^y$H<sxJ->|MHi=9DKfPuNKe} zJzB-H6omq15*%W*qpKXY+f@=g5TTD|ACll91!6e|9P2J+GK-z1R4IB7s3f^hAVIEI zaua<1JZ#{)Tm(t*-S}%5mj3>K^F#Qik0kj1FJJ4?p?mlsUZAIG__!~s(Kl2(e8>qp z<vx~Q$9e-KH+)Ga!MEcvhPYhJp*#4wj?G1ak)o@pcb6Fukyr;78H2J6<bT9;vCC|z zih+)Li*|~yku|PLj3aPd5e<oPu9+K_6ok5Z)2zdHN~Y=t8#3SFQ!5UChxyKO6hPkq z4>(6aG2k`-3@QNKAb*C1l9H2s^Gkr(Wk{NV{4?5r03>IaJ!(+uOoZ$0t*r$5_xx;N zD8ZtzW<Ow(X)srVBx;cqJkYpo@TsalAfX1lO0bV!t8p}JEdYH6BS<ZQzd;5Q2%SR| z_@ZZk?v(TXDU+`uTVp|gmNp0<CVFx;<gx;Cr@Y8(O+E5x*03VRdJqlO7mP+c>E`ma zYFoK*dV+p>&d@B3-NJ@vXgf>V7`MXK5JT<WF0)mW-^!;5Q^<YGntQjbG<Zw$8m=OB zSIyUnuKEgYFhPH&833NgFpk#1`s|$v7He%OPvJX-E#J^=A+X(ltg_mgDyz0WBI=(Q ztj`|$p_Q~Xe`tncFD+G&6T!D*eaUqSZ9Pij-$Kg|Q-H-<Pe`2%|3P1nG5%2Ox1}wv z7A>Dv#F>rv03M3Jy}doe?@U{5iHzTsp?L#~S7eL9hYl@n@HFf0!+x!G<_+OXO$vpP z)^sg^A(vtj?Fl!3)1JyQxM;Hd!x#lYjRNvHd?|h+UZk`5GCiNbhRG;qpWsH|8(pNV zQuNH80jno_xDTn9_-Gj)rs<3nN>)&$6dK}eMF!k<vWV&Tag|)gw2ws~dUGr}km53R z<!l2fy-U0@y^xxblAEPeiL7G^)3K};tQLgUm7Mj$Ob_dSnCjE+im7ilQduiTuiPlc zF(x$3&961GH@UncSfz@^pRPefmHO@s^z95-9)$!=T8H`p)Vv=I*+LOD8+fteF?6Dq z<la3z$YNF29_*nGXE7|zNs(Mmt(B7pI}k;0<D?upFSPYR6-{!fY!a7hE#RlMOk|}X z%vmhtl100Jq7^jPo-Kg4ChzFz_iPr=U72qe)u{y)Qibqf7>=TYi`cvF7)9;pB~0OI z)?f^Zj>Hz)Z%{JWkkTJuDEz@EV+#2vmIkC8kfpj_bUY4baL@sVaR&@4Q({<{3KhlV zV0bWU^QH|^8*$Io_517f@-i>!Dwk_9Ks;uucHX~#FI4<ykg>p-+De?Pga++L=%TYg z3<nEP!-D89)X-3$>_50pSJUjor~{h@^+h;YOW$T`joWE@k~A#69!~(voIjdLz?@6K z0P32ap8!%v6Q)b`!2$D>3h3hAJ@xyND_(Kg!;^3kUsCBS&X}k9$ifq1@6xl)mFFm$ zDoE{rQH?_A_NYqcXn(rasNHTf1eyToA)n|3>elN>ibvLXc;<6$i1k;XzZQ9&Rufj# zyK$ryNnjGIaaVo<)a};;B(ysWH>$`Jfg;!-KTDf%=-(br*ptf?IddisH}3CIGbLsv z%?<l&8H|fr?HvY>LG}OpI!*G${)Q}3fHfa~TO8nK*?p4?g&(uy*`in`0lw^pP$eE% z|3r|_gE<5215C5xu>`wha6ioTh*(>qaf-#Iez&bLWvODMd1lFVnOw1$hvtl}1QuMF zDJX-G-=Af(tn4ns`KoUjMp#x5afijH48Ro}j$m3Q4-RxcU7jjckO-ol$?7q{EpA(X z6f-z(JH?!nX5mFbZ2}j$NPMX)WpRV8>}4n^M4)UynP3D#>_i%*2DMMtB>2ewVFMB9 zQZxZ9*1WT%?7&A9K_ua&ahUtub_c4rjecFA997m#8o~6`-1A~fCMiHpDTU9`X<N0~ zLOuBALK(8y&y_MIQBIN)V$#W=n(&@~i!(vn0%Z%c@hd}B5ei6rG#FkK=ceJ;44Q59 zD9=Zyt0lUr@F{%(os0HgOm?NsIzC4`TA(=G2I(1qvM;md9ZZEo=K9)1M<Oj16%n`! z`fWjK<s@K<Vh+Up`8v)=ub?v*R7%QVnz$kBkB%Mql|oH9?@n2bjveRa?tn0V7-`?s zlo$3xsOTrc&|w2zs}BFK;s;DywV}~Y11OD?v_#Q?18v&M8|nnWT!nL2{vsY1JC4~U z7w@#sY*-K&#wo?9n3JL={=kU9%Ho#v)nHrNdsygM(;QI%G2g6+5SKj$Oz5}SNmDw? zWM)uC`}sGlael_`U+vnRL{+_id^CD^)FwGgTbR&FmA_}(b8_slu@nxFVf^R;8+mS= ztMY=pCayYoSv2hKem=0se_)F*NTAZN+$jn6^L1+zO{s;$%C50Mt+#Dh2=xi#1H2dz zI5>1GQqFRIl!YnrN_PrUoEqNc!WW()$w_k&$VTh{N)xJ^q#7DX>ralCrc?nMe~g|S zpB_JX`|r<>^|;=(+0`;d(Hx-5Pr$Xng`q@!X~%U7#taQ&c7IhUCz1t{#;3(x>zi57 zbHTa4FC7UOu#!e?N~mSJWF?W9o|xbAtw7@n0<`vHDb2lqTx8n2r84q0df*g6LK`ve zSZh_TB=jNBsjbt>NHUZjO92!Me`65FG~eVDJes_!8i2Och1tUqPy!#j?v%`lKN{b= zH<n%zjXsWc87dn7>{8BcJn8^j`}7wLNrhh%_R4Fjy-2x%9km&<j@Lt8g@7>n@Klc= zajuKKv;$>rnr&<_>8p~JD;jc|xz|&)v&kNh1yrreE>R0^teH|>Hd^dxe=4Ge-EH6Q z5HXV7Tvo?4TSe{9bia+YLMDdF%Ntg(wa(7%Ei2MEhfI6kRmV=uQ?85A->^OCLMGa@ z$-8;1zN?{NeHaH^9C!s_XA{8MW1bKnJu8p_o@?!K8TyjeK~2qF1(m^&)#bWywLxhv zVi$frBMvtK)@~#ErgPZ0f6etvwB@bR!qd;5XY(s2z`+F*4>E53Xgpxh1)_QNUV(BU z)Qjz=hdu;;82dJhb@;ZxNl@s8?7%$sg>Y6gFmQyXSv`B!#t;(k8BIP;Jy=8SCI^>y zYNOSs7?9OKM_XGOVwi>Wh9H3YFwhahKJj7(<+6`gjsxzxyK(~#77LdABS_3<j^sv2 zTx5KtU9%)Xy(-a{(^df_e=d>s8no4b$1qT41G3{mjaJR-;u@gGN+4d(NqKLeZ3d*$ z8Lb4r14(7~?zLmDB71u2`Wn_0QRqU_#828w3C}^@3ikPo;y>iH!QgS2-O+ak+eNKM zo&)DhLJTZQ`mdm!$jUJ=*)$%{NDU<aWh6q}bHSRWhHm>CFV$@~e}U_+U(H1kXrV*; zIZHk6A-namZK1Gtr|cbalQ-kG35vJzjnwfssf<8LY&XZAwL(5Sgrvt`9eJ^17L9}U zc~}MI=S+k|-PDD4KouyPP#NRMY1IsV%es=jQX*z*5g(GfSM)GM{Tq(T3=e+B`k5|L z%@vfgA#%CFqKVFef5xqj%;bzm#51zEtfQ&*d6G;|q6v^6*i^M@O<$dbS7kxQNfV5A zOz*Jq*pIWuLRHy|&jd5!au6MoTq2{;dovy>d}N&IVFyeHT^cUw!+u>_aTk&>ioNVh zhy2#t0&PVEMN#JYygA0elQw0bC<eI5Zp0m)9LC~CP7c?Kf8R5Ki;$(&@%hTLBakX; zg~}^$7SdgoZUE74Hx*cOl&W>oDV9<Ffkh*IeY;~sA6Om-*($D_xW!Ia<(IS_qgja6 z`Xt|z?Te$E)6w1WJ(|zvY%(MH#G})Z!}F%6HmiPWan+=;P&=t<L#&jY7@<Goyn7fi zC<#7{qW|1De}f4wQhq&kUb>A(07n)y%-t08&0G1TGgrGSRue+nWnSa+30`*h?in8_ z$U1Vq!zdY>@8Z$T+>dMU-9Da6A?Mii8Pl>Hnu5Jtr8-=pl3`40n?#5&WvL41k>Niy zqZMlIsJ9O<m>DOKItL2W<xPDQW-^+bI7pPOcPBY@f3AFG%sm`Nl%#L~Y3%?*J&_hJ zszZz!s>@AsOM+9z<&nAola;y(5rX(zJdn@PeBVjQqWJROy{+Dxp{XSzvS|~qPS*Uc zy~*=)Oh*IN0ydTMJ%;S>8!juPI>EhrtFVmXnNZSztM3F&vf>S{tF5+YJ!fcq!Y&{1 zG^N&bfAMOoEODSs|D$%#HhX{NS57P^Ugn0d(a;DjHE~~R(L`$8`>s?DRW=O~Qy-;P zqM{QU;Yu7qr-2WSYQgiYbO~r5_hP)u-nb$O(bc+d9H~PF?Jdb6xOosJ@`2NLITR9U z3P?7gA+a<`BA8hrT;)U&Eb656YhTh{v(d7;e<1Yj;NWfJrXaK{06WL6PN(CPmbjYe z!KJ63E5*1@az@i~?&QWNx83+)dT{|8EJrP$qXP9K+lm5IvVv2BN%6EmCqb*TrmaJ% zo)n#|UGv#I&9xTQKi@as9K=DOfbaA@rIyiskf+XxWpB%x!EIWwzf9&V4ClazX(!5~ ze+;f9Zi7sARK+!0%<}F=B~bK^l0nyiuYn(d*5keG_7=S~VX9S;3$8o2pW)CoE&&&n zDiS%I`Mrbp&2237u*gH|?d=#<^(Lk8Q5&M?9n2^IDJjFdNTj00*l>s{n8m$&P$e!< zP85;5T5%<zH({|PWAmv^D*x8P2VOF*fA!*(CS)sjA^_+#pJ0!ZsCZl+6<?=iQhuEl z6TMx&$q&L}-}I7Wcy1eX4JK*X4Yz){>H=Ay37mcR`aOUN3t|(c9hC_n>cU)>RcPtb zl^m{mJgIerc*B&HboiUqReoF-S68S~j;gc;@0^OaLWLVe_^?w7WS9s5;;lp_f6$B- zcZhKFrOsCAcsGk3ADuR-fGWDm!*pEBLq^x!`J<Vs^M;;<&%c&sVV3YEE1d8Q7INHz zl336{8~K4QyH@h!{)yChon~<pyGz)yg*BIHHO-k)9Q{%i=B3jfwXoTea(!YsWQ%=k zL=VbDJE1M)c+zMU$VPf}?y&8}f3!K_0j^T~9kyhOJ<ay_0S01yR(#au2Tr?^A2@A1 zcY7x86!kC?TdjYJI^BB=-S@*~9yW5`Q*>@+A!DUT9|S%{`g}h{_lP0s&}$EGCu_Yy zs}DK)N_2NDxnmGXZ1xCgrA~W8+DMmqQ=oXKjwPZe?+g`*KeGjUWZ()Yf6qu)=;Hyy zD8B;CmCsefGXwPsVIr6NdkvRzK6i`DY-;q}(Ri@#C|mo%R7Nu94_8A`HhFsh7m<B~ zp&l_>-U2aEOq{Ae5u9JwZ}NIZ?$_O_yb$786nvQ7Mo1yeL}EuF`uK*#ly9&o5&V%1 z)PUo`Fvp_x1P?c9wXrr$f1P&LEiB@Le;$ab)j%@iJ#6{O#*GF0*Sd2xYV5R^LwoUo zz-Oo_jW*8uW*eZPzj?)~W2u5-H{$OjBNnxt6BkZGG>LK>q&LgY2}T2@mW$uia^Y{8 zLm$u%KxLeg?6LRua<M|`-d@2!4XmS34qEFF%f>$#_qc;093&8pf7sN|fB-8S_G>On z0}9f^#*h0LAZmg)go%qX<NMIWO^A+YGBjFLF%rXOjcCy`ZN^5Hie;e*UO?##w`0b? zfV3&$&;66NqGd8KVk%MrzoUTu41y#W1VY27HZ^>T{j{D|h^odX7=Qsyt<;5#H~T&+ z<l(IFVz((Kefe4Le?^49Zay)sI3-hb#52YPQ3r@uJNEs-emobdX-I#2yV5gpjOuT1 ztFT7n4;lkrx3x$ub*j8YXX*+)S4JXUbV>8gP_Iy!vzgd44&nhm4S5y20TWa)TIhZr zHl$~Y!Cmvut^9&rvRQk~5X-dHkLWBsd=M!LI~a{og%~Jof1AKIJ=Q93m3geg%|pIz z>Oia(5$x09{>f4Je*Vq-QFMgvjGAx05|nQ%eE<)H<BK-xke_0I(il!Gs!~YP@l8_s zEd^Q^-}Bg6jh}X;raYRKG#S!`56kcnn~70UdgA!~_2`wMb%kgfHBdbYXGK^lg|m}B zx3)AeJqo(xe;25kg}1hMGt{x1a4fC1hXuMu7=98a*~kYDFNHyLw51(vMJQcERoGF> zTr}5S0<(TuE#?~=$znG39$si$Z`hb*?7gX8gZ<Xa%M4w71u*pLQ?s$c3@ZFO<e0fs zj?BM=rdh2>6!wE69Z{X38a~^eriDl8uj}p!DNCtze@z~oj4$Pk23>`j+=z0qoQ{v$ z1YHv!<yv=}C^zq{cw~SVrh!)a-sL=_ha;$a6(S*uJ_5-uJq`XuN7+o0u855^=6lUr z=jZ26tvFB3D$xypyd{GL;VMl~MHQM9lXH$|S(~Zc(Hy=e6|3iV>y<z$JvceI|M20& z;Qi5Me>2<`^yfbQDb15pn(n)i*RvQCFUC{YY8)#Z27S^g$Ey{_pbb}vV}C&GI9Ze$ z*r6bf{ea4AnjF4Tcb|pg1mod~xqKYd7iU=*?B~o9!G?#MGQy3)eES#M{m-)UW7eP_ z=n<WMxK;Szr&9i0<LW%EO1v<_;QoBmEmOv(f4`OC%yPLgWCIpA6>Ux2G_sd)6WeO3 zl4iD31(i;>+B~0C;&q(U>9m`acj{+oj0?3;ya-cAY3Uw*3M66RWcr33ah9HmlVuCN z;$RFI;0(y-<>z43z@DC6hFOH_CxT)j(qlq5;Pjv2$v0o!{u3=B#I<)8MK{>Cl51h! zfBW#@0%I%jk-(4^6SGX_yRv2!9*%UYeh&8AwU&9!)8J>=WZ9^xR>0ig4ufNCbm`v8 z*!inKQv#-E!B@flJPs}}rouC$$ie$&x<5R5-(cO>b_ON|NG?qeUcLV&e1-;-2jQ#R zXVLVV_Xj7h)aUE>hxq$_NMG-v+(~=^e~0hl(YYkaqVws+i4c`VN1-W2#GE+z3Inr4 zr6{@B-zVkvXM~{@5sL~rgPCL<^N-mgJoC;Jpm-@}>W77d!#87$3WuT;<)^Dq0S#u; z%M-X_<RY!twi9t9>HxhbSz#}7%Ud(CBDAP%NiWst%Sb1}O{C<<WrRv(x{z{oe_eO{ zmB}pfU^qrEb8aEM&(J{w7wQmCBF>c4yrF)7sAD<-*Fp~0G-DT!(RSR$nt8Neqb<LX z8U=&>fp%{%8+&|s6yUi*REpa>$ps2MPvKbJ=2y4*=iAxkZ4JLZe!Bg5dHWF%KKzqG z^40Ct)h&E2+uP+VfW2eMFZ6Psf75c4?PyPd{ooe8l2EC_Ds?c=FK+8>etUuc;Mfl? zh*dyZg+&kPMQnX5QABzP8Gb26nr%aPmyvAsNqMnAYlF<?OVgaN%rDy;yFh25nJYlx z0^&{Q7Zgt5JMiXWA4uka5D=x%it$ZW)FcC9@8VaUSGk1@PQYS{+z?aXe<Ru&7}?Cn zWLcfVxrIFhZ0q)-$bbbnOfHDwY+2<`ju+_h%ztfOF>|J`O^jKLcUDjNOBmPGxl=z` z&XgQ--n?j?G`?t^M7(Ha5>ex4<ZX$aCh_Rv;L>!SG*n-3Q0x!cki4noH~-x<%e*s7 znn7)Q$C7zG6E_p5;;n@lf1N7As}feAKWO+mY}iav`FR?i*?ymfqPX~~Egw<X4}QQe z4Hfusp`zTJ3e!>DiA)f^$j{pL2qpRf7^1U1+;{LL%P>#I1ClgSK?bP!MHQtL=`cex zQd}MYlbSm56B{`nQ*onLPI`OWk-ws;>4C*{8&3q55ILMmS#xN&e_|rff1*9~0eY|A zp)Al&QPdT8n?xWZpWRxEptTbrZ7uKJ`&Rf!wF48{BGTGqN7(F^gJ_7K#nE(cj4#Ap zPZ}lghs8wsHrGKH_<JHBq+HQr9oOnotbjw}*QWJJ;*mmH;foB>8e5%{Ngc2t;(>I7 z;NE~!71v5qMVHMFf7NG_R8VdBK<`$4EPP3_0yKQzVMlIyKGczr`e+vn@^OBYPmBHi z6N~}1Ui<xfSZhh-KN6Z2-7nc}Hea_K(kgK&+(rlFQ~T3?1VruhpV7%TMApX2GO|Ed zDdMqRL<S`K4c(Q>kXWfm+b{Ian@C?DhbYFp!dSsbfHvw4e^NYl-9M2Ipki_a*FY0k zQYy4OTG?A!4gMTQIEN9=wJ(jil!q?k({weRBXvH5KiJ?hJw3X4l60v`;*W9xuA@uo zpNGg1Qj>j^STdXVSbjUGCjQCJSWho(2P-GxX_VY#$z@z7=P2K9lf@dD0_Edssb<Mk z@sgN*K_cI@e@Pb4lXLXRqy26hcCE@j)q8vlA?kOI5Vb2u%|aPH2rb){8{4Wxnqm(h zhHpF>X)%!~6n(1$>0B3|pP8i)ptOm6jp9!BG@45#f!;>7KU?i3TH24{^V89Ex(E9Z zu-b{=PYG?@d6Lr~z)I{{nxH;L@7VGKrH<CCsPV-2e_yMtrFzo`CsYOh=F^8rYbbBq zV)$WB3X6C+aySBj@$>1o_^6E}AE1UR(gGLd3~zm6ONo8%ex{$VPY&#*T=`3epKq^k zf4zM$kB+{A8V}}XotbGZ-V678_fYEz^`r1;=jw%GPpQ@1=)|z*Ajd_FA*drK#BJX3 z6Eq`Ve`h0f@I^o7K(hx8&<cpmW?Eb1VRUqu0G?83WQJ#?gJ3tt&|GYep}Ej+*{JSD zSI=eY(;=`ZAr7i!r=V#D&}axsA*JPy2Xj)e$B2t6H@9;U6$uS0_~%r_@s@zwOEu8R z%f5+dFH%0w6R3XyJCEA9z$aL2XDYjlA?^MNfBfIta$VKCLh+egqmSg&34UD5#rni4 z^Y|E$|Jh0W9R7Ty5nqO9@yDoVlvAvZI$HP##>=aELC=j#`GIeZr$WQg9Xsnmus|&R z7|qf%rI2(C1@7H@PX9LHS(K(t2m^sT2R>lrm>*t8Fmx;veu}g$)-m)6`}#TkSwZo= ze{>c0PU0@07E!xr=}HdbPz~Y`2ccdBKjX4L!GGT1Kfl1L{PO5puF5ZRRo<qZeSSUt z<>bhIXXw&ha8<qyv1I%S{)r}^;olTz5I^BxfUDlf6~G5xu{NL8!aUKdGK=3p3A(#@ zRIk!GKx7HPcqJck=kd~uj6DiE62&?>e_A$mI?d4m7Ac=71s(%=>O(~(QS0gOJA7o< zw1?Jr6Gc*e_+Vn3wjTifSrGlH<UK*8WI04@E>iKPdzs$M^9%fSmELe$$uxLH{|6i3 zJU*wlVfmL|8RR#<d81Qc9)YT-|1ZG&x<bPT$bAyXkI&ZEwe|I@^(C9d6az~^f8tM& zLZ}uC09#gsG+I1&rO2VFh@3;p;h!gwC~&O`9Ez&^Qx*8tC}5_`VbKJe5BVn?bQZ)c z&Eh1UBqve7msA~cuI-#lZkSvbEf`eCt(wq+C!}(**<+Erpj`fGHF2#9EkqOi(<<~U zL6LLZJeuI~@lQCx^<?9_VXI?Ye@8pL0_M`9Y1*DdeqC<7*m`}xlJ^;o!Eut3-I7oQ zT2G457*5=c!W{=!jS-U@!4kA?2<~ZL3~nlJ$q{7HH%4NonA`4~P8L788qRclj*Ci? z8Mnf{${N_FJ==a)QRthauWHx1(FoT8we5w`4PJda*nvcBq0?2*>)3~^fB9nTD{p#8 zaoi{UPQGAxdOP`o`G5XzIfDV>a+^n_$?h(b3@6S7+w_s40VYqX(J9Z-biq=oRZmqA z$}Ft}G$!(gxm=lUSUyaX`Ge?+)WgyGrIcPntWF&RM$S|QjQqLDfU(?Uz*tBF#zGh{ z@=j`CLau4*q??rPWUVSTe-S#G^v+M(>NE!YNnb`t5UP>Kid9LPe3@z2#8nT%HgR>v z(qrQ4lrl|R>4dJ_p~o00DD?SJ@59R&&WNr*WVYJ+T1eyQh5Tx{f@4G44j2L+(qvfp zzo8G{P-)5FivkHd>Z9N=NZ{uL73L()x{)pnr&U~?tYaOF9Aljne<RyMy1Z-WX<Dsk z=q?LqyFM>UfXVd@`5$8dh9nu-E2Ztj?|6<)jj;c_(U?SN+MMDt`F!nDJp%_2YF@Kn z_r2}Lm4#`|S2)&u1qNXRnyQ{#MxGSR$F$dB%J-;(&6W6#n94{fd~7mO+uedq3aUa= z7s+(3#K!e{)Uc_pe~Ko@(WB`^yjxjBT80^!vI6Y*8Q5aJDO93;ZJCB|y~e~&Sj_H< zbS&3|VHO(l_RP*~KiARPo4*(Br7V;7Wo!(0B)YW0*d2D)Tf?SBbHUu1aqoz<mzBM= z_4?t_i8NB%{7{_}*QSuk5B*Z_H6APs<H5h@XL@e0^3N^Xf1=|lb0HR+=S#SA@RxJF zr5Fo=HrIT8Y0p?3;8&Q_RhDI<cX;MjM<>=*znvmFa}@N711h=KO>4c3ZXphli6k7P zNyIOyTzQ4Xfvgq8H#79AZ~+$!5QYhi#W7D8bI;bWlKQg1uAD}Vkr)NhgfRD6rT3l? zjJn`;A1I{Xf4ln-RDSo6eKNhn(O$<Gd7S_s!4umN4_+1nIk9fMIO%~$O})6I_d?W( zwH%yu-KG3{U9FZnK~KW)fHJ!*7V{@vlzEDm80r(4g`vwg@_43vWMk<Xr$3gq+r1(Y zViVOED5}>tp<S}i6@od+ICoro*(d_ozWKFi4|c>Jf7?a#%;2IwQjUM{XuLHFtHGNs zNbA8wd7sjhFdXb^@iDjCFbkS)hPq9<?nZVU^N)7<u%{h8a)qF=DQoDRrmVtk$7fp4 z46Hq5uZ;(!(nX2WD0$}U+i`uDnciW98bvH4priNpoE<u;$e%^W=ZSJW!)Hyhamq~! zT2T32e<}5Dej^_JCwlj;%>!p2*(erHb8_Jv!T6v!2-q~RVgkL|o_@72F5M_F+W99B z1c8?IxCtI<cMkX%zoj%Rc({3d?*w9dzSC?7nSIezsOGjA=t7Zo2ME4Ux{U!8nO!Xx zbbYu@JY6+yb!CDe#(i{XIGwbe6)K0_<&opif2T}DPJPrNU~8FY-vd6Ef_4d@P{eF# z`-V|J0v1V6@p6FHeE#nwc>Ep|EsU&u?vP&ycCJ40UO!y{Mxn@hV6w^!H6&okTWg`V zZZHJUKI{`zkXuqS%A;W+H%7E(Jrm*T3jopN?eot-%mRn&K`?C>9@ga>8BvTU`6Ck= ze={)=`R0@F??=A;X?|kSAO3rrO8Lf$6lQ#i8b@utnzc{uYMU0;p2&{t$uzFhOK2^W zp1E(arD3<@x4ejYHjH!&QaWd=gSu^ZlBGNY7Ikk=PbJ6x9a#RJJJ7TBoc<iYVL}*T zBaWlCd;U#NuO7ExNvo^xx$W(HD&Q<ee~v%FjTMB?FS(*F4=vNTxC~XRapYc{s!GDR zh#NY0U8u@65qR#%Pp*&?;~qxaan*&sQhLj32VOlC7jh1gl=69m^HW`xxI;P!+d%M{ z<@3-JJMPI3uiqXUG2@<`0e`|yLQy-y+>^0I?>P>0H<OAzK!}pi4)v&cC<({`e=@j5 zoe%zZ_Az@mtBYkT^9Bm5p+{30+5*>}D9CLKZ<CpS(5hRs{Eka*@(5ekyRYzXUu?;m z>}^?Wo2Bth{Eu2@>C~|oRVcTQ>~UI^Z@n)V?NML#)OL<0pV{aQz?Ak{I6UcXt(C)< zyg>i(xr7|PD8Kvg-509gHhj@qf9rEFzlqUGJ3Nr##oL;CN2b>L-Ol$E?(Zg5#!_u` z)FxyH)D#y;9(}`tmC?&5|9SeiCqMoCT<zcsd}OLM&&=cs-N&ID>BYKshsC;|w%+Iz zUJrhwd-&bvuP^C8diDl6u)l5Yo4mx^m-=RZ@f&tr-sddd-@YQMd*+BUf3(Z573=2Z zyYhYr`2A`3ETt>b>xiKpr~Y2YZu;8VP}*~Gsr853?o(E@@AM8d$r>-n4D&o|5!ASC zaBbKzJubZc0P_XmP;%0~SRw{c1xs+J6F@KQqUPFNxN+~i`aFJbJ=F5b>l<aat3HR^ z+wrF@s_JyLk=gSMq|b5of5vNL(;*fO?y^Fvs6M)_S7g#Z{4E~5#S8AluNx5-sXZX` z7S2tj0_zq=KdDkKSaes&9TMqL?&1r)3&~CmEJ&{;qW{}l<mCK|ZZ0XgRPr<H(yY3N zm9Lgzr1b}4YdI621&%GUP=W=e%i-;QlN3hP?2(tKowikO)e=!)f2fKSca{|t`{)~! z$C+7S52IdE-6w@BeNr2bsCpu0jua7hV+6(ifQ)4n*XZ;y7T(KY+i)D4I*K&o;Kdv3 zwQ_Cy#E|Q%-@Ollw%wmV1r)K`AI3Vj90qA)eT+mfS*cwruCUdpxh&4nSF6%bP$D3V zS-3Y=9+!kuC09IXe@d8ysqaqm@GVksN4DsdC|02*Nu&U44E~p^MQh_E-QM)X=MhkD zrfGo=W=}b&=n;826FvZBqGFR-I;WCj^-~X4Xjpl2v}*x$5Tpw5`$&av+(~JG7KM5S zMiWoC7=1e|y|<dLII`%@V+M7HZr`o)>V4F0US)J&Z|rg#f1gZgdSorY3z1u{88L9T ztk3VIeUVAgJ&oZdYGA5~YMH18Yt5cy^17I@Pv_%`^#ag!yP_YZuV+LOi>kETKRf06 zyhO`lsuY?fae=Uo1;uNXQPJ=Sq52$e9)+mBpd*U&gN(DD98LV;aQvN)CT^D)$wwX? zTU^dbO=YgIe+gX6Nq;6svQRho2VIL(Y`nf9(5(qm9e@TsOu^6Y4scYNNGrsn#^e(t z^v&g{H>ZF85)VrO2E$dFaP@Sq#v4XmEsJ+~+X4twTLUz3<8>A{s||>b=EX><UdSdC z`)8n%&g1N+(<=B{I!2wiXOs#=IGz*dx#f!h@Dv(Ce*jpMZoJdf!Bl*&xk4Qn6+XJB zxO3F?o{Nm|yuK~pyBUy{{ooY)pfe@eYAeGTmsLob&?i!3DogvdNq0~qZFh^H+j)s% zeJWoR-Bv`=6?)ZQ>`sfU4<<Xm&3DKR&3p3_-`+McxtLeL_VFm>0-KCErJ<;~{BYp| zwrO$wf7i-VAx|5!|0FNtQrk<!Sjf>edwD{a(`Ib}hc8m^%AUiaXjsqg+WsQ1)Xb+R z6IZ5T4MIMxjf`+~t$GRtIE~YEr8ow^241cFShsRZ%%sAtt86{lq<R+zZgG$1T~2ql z{Q8L6+V(NpMZ;Eb-7~R*w5L_{V;wL#B=w8Fe`33;^TzEOIB~D0O6nf3xK}yc($e+V z&2%&jM^21|4a&1pN}wOa<@OWw6QMBY)piFKg?70Trcj_K>l>v;ncO-t#vy9@6+P>y z<NcIRW;V%KACf{ycwMCL5*`PgbLBoDwOZ6_z0GcVn3eXMGQQ#-N>2^um7kU^P#jXU ze<hu=js$GP?#p04kRp`cw?HaEizdONg})6w$796MoA6EA5m>|+t;gCzahCd|MY51V z2TY1IJMv{Dc}F)%+&{W6X82cZ#nkjs<c;+I=crYdaMX<zp7p%2kXDiuArRB`r6L3% z`^y;qVYxvWQCq}8K?XFwf`sg-K!dJWe@-$=@LPVxc~^-8Dgy-8lbNM87SEjhh6#=e zZneLUq>ECBoyBE1Q~K59*_m{=Jvytp@vfbMW*{YXFH?5LBl;klsyO?uxM*J&fV1`t z%XC~|>p*mA>ER1mRwOucw1821!gVePU#kek=<DGmiyb-1VmD5b+!*#VlbF4gf0-2i zk5aS0ku;f7PYF(X>fzv`wO5#9T}}RrQ^~#z5zkK5YD-1BXr4f?fQIVCFWbTT@|flm z;ciIzvECa`5aCO<MI;_-eOp)3t0nc5b`ohojyyp0K+pwWj5|T}KKZR&ncAC)EtWNT z3L{#NN95I#q(vMA=Cn^?&p8rle<xT?eiS^-O60~+ZeGp@8IZ+dQ3mk;O};n}5?N*m zgX}9L!uO~li4Z+fGf%E`*kZUIW)(eJAAf!E{OyysPyhOl)3?w6-=CkqGc`c|S^!?I zXP4J+`O;)%kQlC(CcDU!Li<qh3`Ho2D}f!;EI5|L&RCT!LZ!Tki#H<MWQKsAS_p8S zxWfYWp*jHM!!#B^+^xdlP7FKikkyT-Z<lgJtu`E{;}a231KU8~PIqs@S7dl7+wBMw zjN`o%FR!?^@{zA6-e~$!SdXhb;r7GGGPW`$)dv1LLT1_c4lzhdf|nn60T+LbW=?$# z!VO{JDPY08u{g&Q?-Ki5H?$a(f}#}~u?%1@Yp%!u-0v_oZ)<<Vyi#L6m_o1OIIV3e z`e{cGI2OhbRhO7fwZR01&aoJY!c<mM%H5V%v7CdD6}_)f$(WQo3QO|?eH@21`M>Io zerQqM5r<*@B09K^;^84ifMb6`SX&^YFY03BYq$BLJw%J|Et6G|g5qq$6G*ILKjJS# z5|}BGd0NFD?d{Af267gi`C^YfOdGd`HQU&uk3vl1rZ?LSy74}B>{P!sq967Z8YYG} z>)3AwyaxC^I%r5~@$n<^_f5692I4ooDVhZB<^it^)!c&kEWgY?7FB=UBvVmx^eV4P zHMAc@J_cxFQBUr90Y^s}b4P`){~@c0r^+ora2Tv(>+8fMkAJMItEbd4nY0(|N@gU= zqvHW9fI8er6|R1350Z!H)(rp`biieLXbDzLK7gexW^EvSxh;Vj`Ojn=<KKUv7p7MF zXPTZ&Bm`g7Rrw6i9-x1_^4+Yi7K@iz2^DI31CdIEKUK32Fh%L?#ku|$R&F!(rs@kB z_7A7MXt+mgJ@0BO*vc&S5GJNe8bye6=mhDlPMWA)X3bML^ZA_nk&{5&;FkEgTsUO_ zcP-G^4G3x0T-%e{4&=>neq84{25HFPHYcJsUL5K9tCpyF<;#CVXv>uSMPk&~#oro2 z7JU35*8Vvjr(?jlW5u5N7ejIfn9Ci#C=uDtY{d<?vK(XIJhefrZ;B`{mvl?d>`V>V z{y9!s5qvfDmlUt$Exv?*@lfMkVaWA;P(-fEsf$tMJfk5}HTDigWcl}U;tLhfw+W3+ zGDIe|Z}ayz>fL|1ZnM4vVl){GsVj!is^WSgqNT}$6lvZX>GVY^@ztC>jf~)GsIT7v z9zhNFCyPZGU|saA9f@dX3rUyn?^mSuQCe**Fz6Wy1)mj&HqY>-;1ytA-1Qu2wA2mM znuGM7`x3*AnqxL(0FApNgrA&_L7d?+O75xVvRW<X!ZUvqZ!L;b6H&N(PJYJjqv*zF z3F&dQf(2=0fKewI-3tSn!Mh<{@ZXrf{~^Bru@)P)yP3Pp;u(6*=YnElX<vr4OYVb+ zslulu%^hvM;L~NUoNjq~A<5Q;>Q@z9mA|o#XRlwr#AdkCm$%d6lF)<MZ)^i`>E<TZ zaW9547gc|C<Wp|E8|b|)+#UMfX1;6zyiMJG4f>neX&L;7I_XC0bx>YiRl;)|xu4e^ z?veLy;7plDA+cdv0-47HfePFUVirbmPRmPRK7nH0TiAZI_r|&-22d({vI(xr?de5% zUg;pKdrmIQ7Kaf6kBY+gHv3Qc;~xm0?szTOXaRpJ+@Xs!x0Lq%#9}1GHt9l212H5R z5!%Nn9!OK{X7v20=P#eXIzD~%`q^{o^$rWdeNZt$J_#6iA;{|yz`j0TRG)y2CK0Za z7}kAn*I|VUs5>`>;Tt$WwT@G1!b!l>x?F*Nq)X-Yc40(GBPm06)`SZn5Y<O3ugtE8 z<C=fG8OJl>;(C^rM~g?}qk6=HKdzRK$BFUvNdEq7&M`hlvqb?bz@JHL)cq+xZ;i_M zscQcnqjads^kw*VkL``tadosnx3jpdl2-07-d*zh9~A5>;Jkp`T<f6igq)rkSqsrf zI&4QqW-QYGVW<B?x0HP@8mEav67yrm5srTasD}kGXsV_AzHHT?_kJ&Z_q*y(T=c_I zT=c3ZapQ}Of5?5cAisQ?(*y)DysG9a)a#q4K>^I-a4xvTV30LU-XiiygVE^V3_~w4 zeN-ZidtjA52p&Ibb6|M0HU|zCkHO>QvTE8J=}bL2N7wx8KM6vPBU;phBoPUZzqx;r zCnCW^;+B;5rR9ac&Sf#5=j9qEN1Z>K7awU-b}KMUkzi&9__lx|f?y;kG?ZD7A05cv z9vwiV@UJn^Ev&jF^02|{lXoDuj#MY?efIuhW;{7Oy#9~;x{-1aEAusgVUb;T@+=9; z+f@mdnU<q0l~>;6=CZ1bUy<NlJi&iZH3>hOh&Y(6JtG46)cHBW>bQE+3d%a!8?R#- z>ZZRsg~aKp4Fl2RWHF0qgC)2m;BWHHMb6<0Z}<*%a>~ju%;2mas%nvEr5GI2^4S9R z(d$*)6mvm&^cLmo|8@B^Tf)JzOaCbLLRaU=;<75cvOyiA(*HtG9x&RVgf)NEg0dl7 zI|WH_iqWu)<z*A|0DyVc<Tcv%B-23X8;Sk#Mn;s7r;?!+53JRT2hMKL`L8LUl39RL zqTqxrV3}vqA{I4klPDnwd^Hm1s)tXbaAMfzsj;pO6pb9gez*fbQA9TP*cYlxO?eB` zH<e0)-CDG-h2-q*lOI!lY|4MymRRaet4;AMKI_wf1ea$f3A=GrZ*sFz@923_7#Jb% z>5;igQ%`;~A=`9GYG)fq@mAsC$QAEMGyGFL$NBu}C3@-T4wiETVCF@GB;fqWm`4~T zVb8R@J{W~SR^~RD9F*GVB8z)I3O8_CyFi9%-7ccIcW*n)Y;m7Zk4t~Tf8BCLn{JR7 zaK(-6<?PXJB&7m;!g@`G%|&N$naEeHeP%BpEzgmI7UaD@TL2+~5WzJAvP+Ty(gFdW zQ}jj&u&Dq5yLE2np!*a_M4_j6_k7vR=-T?7rbcbuVQxI^-nn_NkItFhFlgbuvpa5a z+Dr#0Zw+XNQbcZM@nC;L9+-Wvx<l%oKkdN8#@F}m2_DVCC#?VIuM_p*{!Q+Gxh<+< zYQM^f)})lu!A&SG=%6gGyrz+?ptu<1g!L`fTU4`e-Ft3ZB`hRSveB1%&hC%1p!!rr z&Z_yfPLH~S*|k+H>}{4t%cs@@?j7N}0~}Ka9`P<<Ox^jKxW9iFeEnVZ!=}?y-x~Bc z?f|tr_O9n<L6Lhja4J7-6QhX7_V3?i0#K_mvI_b504n9v3~QwzD6J+w^qk&cpGjZu z%ycBZ{jL=l9QwM0vWn)3pc%zIQC4kne*HGbu&;y&2uuHn^sK9EBH*{3)<qwk7M-PT zDd4B6>7$C933q?EL-c@pZjg0k2@?*qG{OJmf1b_rVNw2WZ~lc;>@V*0=AWBy{^MQW z{0rsANxbi`w<tK!Y^zoK-&n<AyjjKJPSagxKpPBUXRL-7b@fSv<^7{354fX1uJH#X zh+*VUNs{;$=Sz`9M%?{fV8k_&^5Fh{u>6d0k}3Rs2S|U#8zDn6ivMMRq2BKT7ph=_ zMI`)wP-!mfqWthb6fO=_h5)GX?+%*(9)}6zt1c}NH5d*hC&8}Ltt{ehRIFe;7zg&O zw;e-*VXRt80u^5DAK^GMkEhs~J!OaY$IH*r7a}@GK5i_`*{W@;?K1LCjea@#ylBV~ zR#8&q@-u&Y%$+FVd7UpP?EORpCQrU!ex8UZ=gD~TZ+t@!hn)_iH8mejrMTrJx|yx& zrm9KGKABYu_zBwqD$6263S~|?(T1i~`Dks4wr@675oMxvN7AmVHJ2G=4D&_)kwu>O z=gY_g3lVdkBh4rG0V1fBin@#Cd}vOre;h+yBZhx+H5{M%dgwN@5eia@DFJQAd{5!b zoJ51}Y^|vG3GUK~j%}X|4>19M;g6oCxvsZ$(d?notVkLjI$dGc>p!({R4?*c?u}(t zpbA0vIYpEU1~BtBTS7v0ak0paca`o_imcOpO0o70wXdI_n21e-n;ZVMUI&KQS%4sz zP91+)^~p&vaNq=mEcrGTnO~RLRWZ{gM1m?{bXAdv+wP0S-d1P2m@O^GLS;3qh{#@I zepxZay~He>ogv<5e2t|%3<;JeM#Nje$D)YNjnFjIzm{8J0pbaU!iE>}Pvt5+<>kUM zBy>T77NssjW(BcqR~Un(1qVLlmT{CgHY|THa)_~bU6Ry?pimBJGcc5{hb*wc^*=qW zN`pyxDl!7zlO&DO+s1gd`|a<1*6zI1yPr_eee&wX%O}S#UcWkh`tuJjo}T{j{QrCL z{B07<R%fvF&hlRixbsI3;?Z9o#-oSvVHCvZbW&G4e)018>C1P?x8w0TRw^SMGC_ab zMtx6;8($91_eT3kkdIx@8(7Q?EZWw~=O%oSGUdf^N&kyq70okk&%+!VpHh*}2Cky< zv7V(K%8td=8FxG0=`9ili~=m$t-XclOua72MgmRB`^s&5T<v?QoZhfSoQH8|Ix4v# z>sq*G#<7Z~cOUjDkY`+VEAz9Vp~HWN<2cV6%+5#tqtxF~mt@{F<Uc>$-qXo?hezn0 zK<P*Y)WD31dneY%C~cV87lN>t@92ybR$KNEz+c=a0mJGJ&*`2!!C!Wak=pFL$$sg_ zbKSHG3%~(`j$v+O&;pD|Ru|duGHaIA626gBSfO`(^SPa{ekRToKeH1Ol_`HQm*AU3 z=kr+=p7zB}@;g0(Gl|vnntG(Alk!~!Gf<{TvQ4*^B-(`x@hf!`s%k9s?7jo3f}%5e zsnJvK8ZekhOo}X>stR{?Dm%zcNH&f7{+H$)?e>*JduOj`L9`Kil!dEBormHCDAGVa zC9-L_G`98@6;E><NRZ&$9a(>L(|7NV+**E#Yn(gsT?Zt7Ldm0gnhWhS;QTFR(b7~y zjm5GH>K(NRowCUHPAaXTiKYSM;?PlD2cBB`^Z5W|2<oKzoP%;qZumzFL`H8A%r5~Y z{XirRTA}rcoas~+X!4e~!{+0~06jp$zW}jX>Mj(bHy{IxUm@%Mw?OqlNuVTu^YiBM zqYI)Hvl{OYtS}@-<nbe%=KykE{&{dXUOXJY|Ar5LMT!w~;LimPg_<~^<__Gk^oSCy zQ6bw~1M^J`SF@vN!D`_*3m1s*CyppVs%$dkpySBs4KLv;SkQIAoHfZ<gja%{%L(?m zK)cYPe7+FhiL1*u`E*&dz-laivss>$71}=X2vxa!u_%^J(EvO9nXg5>{l1=@RiB5f zT$2bH0i;YE*4E|eEl~QzCY#C|vJg?Rgl;|nZ_b5bzb+TKT89!AQ5PI8va@_KgehgM zTLU@t?}0(@Bp#x?16L^-PXud^GNGD;V&jdI6U{{H4hx|MD0YYtHf?EtPD+}L#oY`n zDk7vtcuH>WDur^In_=%tRAKOG7J}G*1b?SPHz>;4Vl~fqIp&YmuwkE<1Ef~cK=5;z z2Z@M)oOPlJTq(4;lf+|3*~wPHh)3Q*AOfld5%u3JHYqHtpKx>kh<iJt_Qmp2)ADfb zBBYQK0?ESLbeGBovdJ!g@JuB5B}yz!F(|$?xTCDYFNe@FFZ1Nmm0^AwM`l323<BKs z0qh{4cnboO_{mb0Y+jWMv>5J%BT>qj$g|GpFJO1l8elGL(^-!G|MMEl7@wG%qpOpl z@N|Otl<<<jSqStgyKWd$G1g+RU@9%K>d3}wyq<a|U<p-yA?g@^SNH(`@gASVy`Bfn z>ioR;3?MP@T?J?Yt(55e7Licr41T#HxDWI6$!_?7ceTNL)x<IAx*%=6@}9rpX3ARJ zFMdt%&c3n5E?Vw`yYV&bMq<m%S~f@AQ-L|UU7B8W20<}H<i>S!%q{C=c?DX!QzhEk zAkex4Q)}+`J|S9vkKD>VP#gN#L6)?O5RS-(U{`tDM#-ARO#?+p9P)97wSfBnp`bTL zWVBby0iEE4bvEO?nI%HUv5$?1d*-YHT26BE_=F|>EI>O*R`oOamRh{IU&Zo<W*REA z`_#P6SUMITIibi9W)sTHH*en=$)Q~;`XeL;Ue5okk){}bwle!h(Oubn&qSHc92GoI z=R)401rgbdH;|W={`b5=O;Kda%Q?R{XA5B~kVnF}-(Z_r>9V`{9tQ<MFlp2LC?635 zy1ivjsd7(-0VM|!X5ghQWDLkJUtuKZKt(Ta|At3Ld-ZZ=Nk?1;CGDZ3eAfE;(eT^k zd$yM&td2^5J$+XFTI{nYR8=XsoD>7e&wKZTTMatxn-uzugCGP^e9lnDxoFT%)_Y3G zX>4P`k&bKr87SR3;8=8fwMnzA|4sf&_~$;hSsYOWnIs1uYqPVFL5Sw_n{!A87MM7% zKac&d@v`uc&%);RH9>dN^Ng*SB+8HdT+^0b5_+6}yXlGnHtQ8otsN)AT_o8#Fx;9Y z1O^jD;O9jf887yUFz$VdW1mPRHNg{R^#_>Z#{zkIkrhouFUkM<UlYO94@vOU5P!XO z@IxBb*0ms5!ctgsk;5C^|LzMJ&pYs&JF=OZxl4~U$Y%1tUw$5p&GqQ&PB>~28#N|+ zHm+NLaf_-+WNRP@E~~p>`n~tA_L@C!s=Wj`2_q%pyt@i4OEMANn_9N%ji1h`mg2c3 zJ0s~T>1wXy-nP;&=NY`?I@zKFMaSn$@GVyK;#-{^dpBtZNnI7Cc%QO18I4Tm#oxlV zj<g_aaQNNw^V;am6;u%}Z&qiQz=1?U!-&y;iN=b?8Tr%s`T4|<JUS9ov!^LbHBVw8 z_Y<FyB^2B%t}s|dR$5i<`$jZiCq~vS)Pab)ez-t<2CP%(z*!|DYwYSmiaqLNos&)t z?Q}(XhoEJt#t<0&ithO%y35@~EerJTX*fB{&jHQb?Tf^_-CV}4w96&7!_8$5eaJ(9 z`ciQxHuc+%s(b5rP=Wu}ae=7WQezj0yjhMg>Ff^saC)F*fW>zmbS?r9@+S!SkbehJ zo~(DIQ5!_K!&z3(SsZmL1(L=(aG7Rxg}37NhaAF+Yp!&b%`fsBlC$x%jiKB}+Jhc> zlY?GG4SG&^_yDRHE2z2{@bBvE7ZNXj;>YW=Ur2CwU=))=O{+hpF4(}RP**s+V2y%- zMHow&;*F9*y{4NGCACUkD0?2kqQVh+#xtRD==-}@F-&zx8gtBVNp38ZO-Iz4T!KM? z4Z)hCOXUouvyjtRL&?+?KH|H(F~)<%A5W+F=j7y(alGuqs|T+>EEx75b>D7(?%Q;> z*9U-+<0_#jpB34ny66=r$vHdq>;<z$M_Qm}mr`;y_Lga^MB<4)(t4n*AD>4wuE-ro zhjYb9;Q@y_mG<}}wTz7s%pGAf!f_Wfazl%~VK{<!oD>E&SjE&%CFyp<Kaw`)ZF*YF z6T34`e=%R<pzULk*e+n5TzXM|?=#0CO7AUBS`mjg=8~Io*FNpFKDi{&Ra^DmuCmX* zGN_eglxo_1=`Cg!A{8TlhlYUIsNr>e5mKFa0E35rvd{4VJ4g8*MwghqrB1rrO*#Zz zWLHZmzZp^*G!z|hHoiNnG?d?{(!LGM2ChY^>KcBoMI*5adog<lqeM@CiPWz6?syeU zms#E9Bq>Ju(w^91Fh6-{gf1%eMAS+cw#Gbk1>3R%QXU;1<p<%RQDk4%OY(12s!D`$ ze&ol6{BN!noayq@1gR1=+1>La77Ldab1Iv%%V&(%ZYC!}PlamWc~&NwU6&u$=t4sp zM|&WIE&7cHKc^W3ghRJ~g)3SL2i7|hShDzzx4mF9?vGJ_-$VF1j*xcbGX5k-@l<MK zxEzrzp!GF8wiupvV#3Wp#=+LW<q(n+56`B0kUSf(Y}g=42&7l=_)kp^Bbb{>{vLeP z`tIZF5rA}|p!k}Ls=8R@L&&}!J{XUs2FQpsUkdb#5DhxB@s;U+Oz=i2)`((2MG0Jf zomhEj_cZa9(z%|tloqFVrk;ZFX#9N>O@4<aJfmUV(xE)ITU&I>qZ(>%jqUeo&<8hC zwB0&mEESI(c-^h)F2}&no_4m!u%g!yVi5++U`;k=c3MapK#ci+hT~}BOZ!wT7Q-3Q zTYB4dCb0E@argy)&*{p`;X^!L9tdn}Q`PV{d#F#XA=nt)dFV>Q(L0B0o`R>ZyH85> zwrO@2N&@6>_1c}HjT3KrHxa!T_wFJqSGJ+FdlIV;U>fUzcYb!U+4T%&q_D{SCK{li z2klr(^dr;elRvzNF9f5!TBKws2>MSa1FaXbcJ?;VqKou@7R&#!@cn(eS^t}ymI}@~ z=&a|>`0JZq{B#%%lm+mAhIqQaj@A!%uL0-f&kyfVy1NdYtH-wZy8nGV`tE)_dhq9X z^q0eEjU&9-fNq_^ZHJItk&R#){rRB-sQV8AP!H~2=gt85_I^AD5X7VJqxE0z(jO0T zGratD*8jGDWjpP@jdt5U+qcbc+Ah0nlU=sQUAD!p+u=*M!CjVr*JbZmFn1V%K<9NX z;b6cF)K{eDdWl+JZjn$`B9@Uwhy3!WyR>cxmEU=v+$z;`7|p&%N=yFZs`okL_X=20 zjAqVis}u$Whvt>nqwr>^*0EL73$qp~mWf;SP8xH6X0whZP2dWJ)bcB(FPEzvI07RS z75SfOWm|wjVCcRXb#<J$&{LF7qX^NQeVj|18)w6y2uSUBwQh#ZQ_T_<d>ZG&5bW0n za7^}tD457_L#l;TrZ5IQR_Pea@e0laExAuIO2o}`hZ6dSO%d!|fLp_k8w?bZcLhT^ zhUw^kq}Gv$FzXZ5<QT)xmr=|3illdC?&>g8@l^Y!)ZHH2>$qT$QCmB0rMb-L=tI#S zEUQleMmyVB=n6foG}{Vg=pkjBeOg}=vJUJ}N6QOa^kPMyA{xfp$+tULX%_fGx}y+{ z3!5S|(z#v^$#{rthe$Pi!%JlM`SF)k(-!A{MLzF;nKXrQ!mw!0_HK$8S~WO6R&}Ij zU6|^xzSO3h*e!KO6Duz}ZSj!|Ih$1-DAw@|HqG$QV<c|3Fw?$9U5?ag_kp)vFZb+g z-OpwZWGUi$zunx$4s+;bue%+sZLI{QgRuS+x20vPUAe8HJR(G+h`GWCu(1aF1JAgB zgpl<9@^chf54TkB@Zk>i4hHvC)mrztbKTCogeqbG#7FtOAcd_P^Ktrq$2$!stw(U5 zYB{ThS$5V`3&2X`7e`sWjinWwG<|a=;Uj#5eC#x;A+|HXw0w@mWTV6Hn*quQxrY&} zu#V<+c5&h9(Wp-5e`Y0;D2$dx8TF5U^ZPq4&JV!WNWCXo*|E9THhM}D4f9BF%NrQR zbE+JXxUVT!YQD>1^}H0=GalfS*CUY#8|eekcs<*NH~6=^uJzWwv8286hKJ~Y%4>PL zQOBpN4&zLzE8kt@op}oxQ|v&)BYNuB{Gb_#iw%AW7?58r%hT3F-~Rd2c&v_p{eP6z znP(jYxcKyTFxQYa>2R0T;W6F?Pu?B1u8p^u$L73TH1PfSN}vIwR3AdbJcS{;D4{8{ zW%GDj*^cBxkHJJzo@{d%FEAL0K*#JT%m6Fm2v`epo@W8i%Gd>oe1NW8xwIxOgn}hN zd;puIm=C_N1#@c>ndLu-{?wg+Uf1G|_A|Gz`PFTgTIvZ6FO*I1SA5rWZVY2hA9vQb zM@kkRjvjViaVSw-mm3@1dEF_lnC}kRdEL1Mu~<rZ+#$c*0VYy$bC-bv410Ii8X>$9 z7OE=)!}bv@tX>B@)JD1wG}isjK)c`h@a{nVH}*Ww)fK81g~M+j&hv|ZXuxY~iUsYL zyIqQVK+E?`FB~@FDMd1M&V|nMqp)3S(rRtrzIWao<}U7TKI)VY<!;^XxNxSpI6VCG z@^d`If48n+U%g%SvP~?Yx?L!=bMCmOzf*hq!F^{>8!GbR8LJogr0>gcM@9Q+!V18} zuQ^{>eaNkU&-*v|?n}sj0P01mR=eHx+E7Z7bL>8YVfPRx>3T)k;zXqb-j1Uav!gC6 zrz{0;JXGsi<^J{yLh;wu{qAxFyId5zwbZj{59auC5aWM`owc$u_2mBtUXhmnm@gyN zx=$(2)(KeYn%_z=Dkgrt!uO|8LM|RGQL0XKZagTiuJU;yHS&ai#GTJ!Jdl)cJkW$V z<O(@L<a*w)*k+}AEtyH>F5@fLUxuCsFwDV#ZO7@Pr7Y^iQDG(cgXOQX&-9gj#xGQW zWJU0NX?fqUr$$AU7)cI_y>vK&Q{n0awZ7Bf6lNv7;g-V{^n{^J@)oxld*H2Mn~|rJ zWBe5;#c|n%d}Hc=sInL5F!gg90j`A$O`D6{Nf%y}-Pls#ee-e>?A@j2Dj<Se^e!L~ zX@a82%eiRdSfxEL=Yg+RI>=&4zw)lB^NzO-(sJ*brUB&ng@SM5uRu6~De0Z9yS+AT zMH}9tx!!HRVWXnAUV0n=NbwKKqKpsuwO9x0;6L)~XS5c7uDh3@<AB9j@LkMs#3R5L zxwPHn0)?%3$`2gb#9MvS<0+n%tsZgL@v<m)D7D*Dtl!gar>^!<BDYz;b6IQ2@1kIj z+WjwuWNDirfZ$Vm-*JtnV~Of_Dy(mVor+&s!+lcM*|jw}t~EXJ8xJ5J@E8#A^~H7s zad1in<byJQ6U>-w!&&CrsZ@~r5`Yagj5~eyKSj&)qAZ5TuDcZyR*|1|j0sFXE~_i@ za5~RtH60f?QZOD?-&-xIAp8NOiKU9tD24C+;<KY@Z)orPmHqd%Ndbno{Ni?oW;@1; z8D<i39v3k_+TLt`M9p`3L@lBn-fWet56L#sKI#~M7m#g-xp_JuU}vK|S;ocm<m%m7 zU01K-SRENnshUH((Zq$g-32*K@nf8B5Y)~yw|@yc<#1+<HS9$+yu&=F>~L=^!o2at z-xC$}S&jiSXBbCQHyapsAF{PW(o-;&%C^6f#a~z;30+ei^@%O0Ab)7V<64?{txO!e z5J_Es5JMQuS{rzfwW0&b4)=qvg}WKK=J)Q2UXa!y4&igE%L^TePa-Ia<VJzr8OQj) zPS?r`$(&oS)s$rx^-XJ92nn*xs@i-i+Sz63v2%-MoOEH`cQebHJfP_WiPFNDeRzi{ zAu>&X+CNOF6lGYY{?jQzc+JQMLJ&>sVxvue&qnx^TF?QmVZ@#gDUiKb>V9CKnu~Gz zIrguTC?#?Mbf43qFC+UbD}3_gTbsuTHYzuYc^;mLG;zKdXk8G<s={}Wvjm2{nX+}G zfjZW1G%LNpb9|<;fG4K1pHDbi(T?Yhn>Y|qi45f*=lm8t)+XKMIDTV8S+CcmbA%dy zjz{D_M-r^C*Lv*Zx+i|JX)$FG*3IjAsH2(+oGI<!dQpDd8X9A5M^{Yxx8iHXxSJ${ z<~ceV3)9hd{Y1w)&LO$!63p+N&)~%HO=TA8i*Z$?q1uL@hm2q&xq;%wILdl29V;pn z4~y@%mxRJx+(OnR6uSV4zk^m9;jfH;J2U*pnZ3!S%$n<R7WxSWwH&*Exx)=R*2f|) zOxoR^y(3iAm}C}Qf(($p#2!#tQohp@so-ats}{rDvQy0-w{W{<sp(Hmwt!K^h{g{y zy0U<$yI^I@yz!ajnr_M42%xuUfn4x8QJdx`>uB^#1t={T&_=f;T-}flB8r@UIfC#; zskd5A*@$1{h|fUpGn2^^CPo9Ljfv-kK1!9@uwb_6TL{n;Q)S_7lYP>di-l{7apY#i z*O~}UgZB4a2+Fx!NS7+^6?vclv_~$YK^t+Nk8D=$N^AR)zGA*>&&17a?OH-wwcFpd zA^hm}EZP*OgFkyPqA4obYS|Be-2#Qu=5I+<+q<n;lB-0o-Lttx;=wUq&92C~0mrR| zK?rv<KKBW&IQDtjtZGqN0`W3yWCBv4N9JG!`6~2J-~vfD<+3kNs|5OcMHs@#Uw^sp zm9BQ_Hs32G$^&q;&@?3k+6fLhVM2wRf%?U-FIU2Yu;mHIlx^LZFJ|PIZkYiGYYmiE z>VWlt0_mNlD9@{2=PWSP;ha2rurq1)?qPau!Rk^T$wS*HXB3jd8}=lDo>^Qe<q~UK zazyEq!(>;3UY{^ZcF3do5<7{$W&dNmpO_9#L_VZyiJa><qw6KZ;}OGlku1{m0CWd^ zm*ANJ6@T_wiav0?eMN*M#<$vj;m%&F+UfdXiSFo#MXa!N#6leev2b{z`~1WGvGijg zy1Y*jzx~TF5Np6w6cF(!e>i%$W*~Td;mxY6D`=MEZ}>fOVYK)|TNnAzdFdyS;(CO} zCFK5Xm#(Z=N{_op`mG;qXW0@6mPPSvZuB#4vwshArYF|4zeUejS_bt+qq1vDudDx3 zG;Y4UVY2-gr{EF{48YLi(4LyiG2~;z%01Q_20o@M4_Ps6$u}?o^jv{Xt(3i+a?xpm z1{-tQ_dK2Lis0Y;^yD8eUj6&&yW=Ov&)+4}V95i4v%k!cY6(ta=Mu0^o^=U)slO{V zeKDt^fZ3d!mE*4$vY_@Z78q|o2o2j?R;Pt`W?8cp<u*(8;q{w^Sk8u7$88oM;^Co} zB%1*we_A!gjEVS8`$8@06k+A-KZ6x*+9YT{HkZ|>T^b2<UlF)!U}x}jVsC!dR2U7c zo0Tt%rkdwK`sVv-FnAa2_txJJo_lje6A?f=v9bX*onlC<BX4RF1Up_r%`6AX`d>-^ zidaKd&>t2~C_FDvyy?^Q;h0s&A838D2Y=QEe<VT)fAsLr`PF|1N?HW!ku<IhFY}I| z|M<z%;}?H}lPD=&6;kB4P`bRbe~^Q}b!<&x8$}dvB;AhTtiLWpKm8T$ypgfQ|Ic^w zWj18E4B2q_zZuuKNw3J`8*`SGr~EcYO}UfnAI@dQ>QeZZN8#4BPR)j4?d>ow?+He+ zf6hDJa{b45gId$wPBQiLdk`w?SP%Ta!J!r5;{P>=_P_aI`kjx%Z`puinf|D|WVgNY zDL(^_?Za>PlRQES={It>K5ldyBRX*z&Po4<+r`oH_KhSwFlU3yIzRu)Lc{a}8xik0 z!Rgr|L+FZajxb_%SOWUven-oX4ze%ae^_!&e;?H5Mw*g=rkr>|eb`P2@AuTx77p#+ zy-&a$Ri8LqkVh^ROUP|<!`qp-^gsQFk!Pm%8cD>Y!Wnh~?7C<-9%u#<*kq%i{YZyT zbP5#M#Lq3h(sSG|5$ot@dgEi^T^tZ=Iehx$?XzL9?^dKvp8_C`VbGzvXP}!=e_Q>$ z1c*G%Fv?WSFlqHP8x0bCi`sxXBn|}763i{cfeFo*-Y%V+gy+*p18ZfzPSGV;m?mwn z(dL-MVNU$n5qh!jx?3fjgIS0>qAmv6CKZ$2qJ<{)J7Al7?rpFuD%^qa6ivbk)O>^8 zI5Si*gSHU-#;y95;eGuW8Etlme?wu~pHsJyP(>!%i$?-ydYR8{i5A`cgt{Kv4YHgB zHoo2F4*Kwy)u(^QI>$6`b4=pwG?AZrb#7%FjT_DEK)`n8Y1HxVPU*XP_#_SNgJ>5~ zb!KC>BaW9fL3VGiuOhRtezkwKHSThsbPoD9q{<*Mb%58gu^=ugHTO}Ue*i4EZ^fjY zj!!U3Uxp@#ImM?84^9s*V%8Su?Deh;3=kNfQG?)QGE?|_90bZqwvaHnCoqWOd>xx> z>k+l7H*2j#Bn)R78P}e7q+n|>#N7^cFzl*PW3L^-66TA0_t+`90q)ydudW{o<EYA! z_)BpE6^D_y&8VDB`Y^=Ie;|Bb0C*%f!!JbKN|;CM5$a6y(|3G`PyY@MaP|O#u@p<O z7w)w%+5Gl4V5^~y+;PTHm!JRu21yMWWgw`|&y56pFfY>_HqU$od&j%&+RnWST&uuS z`cBOat}Gr$aryXg+r3%f7@=RXJKy>4bp0uHsOEKM%SJE)j!itTe^(3Xg8;*q%llN{ zGK=EIb`gWo&}CG?8#}O*i0%ZN63))Tai8wIdF5AToRsgoo@gxUT%f4|AGkF5d%l1Z zoe%yB|Loa_R!1b;aLLfNoaa{+V$9=eAcjos4W2X&9I&ix<3YVDlSgMYhO?RHvIkK( zc)To@4^&lDf5~J`f2@Oj42DA_V~48(<KWD#OXjb6oewhjufb01ys1|8EN=#FHNc3Z zq~4g%M~_yE-KX+sQAq9s_Ep<1o8;gCM>bSL8x_?7w2vA`L(vCpEqmevU=tcR{mf}# zn_t@Q3x*Ei7y?zzo4on0O~ZLvoh@>}6cwgJSI2hB05Eqge^-b4*IgQy-Iw(ao9w)} z5RM}bIy~Lury?K6VT1Or^EN!Lb-Q`;F)J3RfHly?erLcAw@uXxcB|4|M|7DlmcGe0 zA8?vis}gYQ09gG27Bm)h%R#|Q<*&s&f1!7wIQ^`{OAmDeL^EvWYR&}q(SUHkV{2xk z>+EVFPWB)xQ0LO#51PtFc@wkCl4`L=zavG~y+XE9WnF;yx!&=5%k^bG@7{&=a{_20 zGYg#NV53x#)1;~|K080&En=Z|UNCkXd))7u`J)rG((f^@>z59p0VIFJ@4hzubr@NL z(f5sPeN<L3)Q`4VyqcKp)7&TlbizfRtm;KbEJZOppp@nS7xdIz^V747(Xza-JQ6Wq zlt9<~tJhnRO^?VSi@6VRKMv_xTEfVjKLVsPOJBk7zt_NiJYryM^r@l!*(pDFU$(@P zJHedxCk@YBR}rlc*HnK6H9S=FE}9{bvT{~3e{4)QqgYseu><G%JdE_h!ClDu;w%%E zO9r8-RZwKG#mEYFOF|jLqsX`N(|D#c4wwOst_zxnO&1zs(w)(wmwUi69q<fBq;jx} zoZ1-m=)R(4IfU=vTZ(WhqevJBcNgEF*$nrD6eewT_4lVAfBb)OEm<62Ea?prbz?0i z${QChao_G1xtlh)UN1eWL5DvTK>7At{Q!%<*WH4i2%ZvO$W7I)WrXkcMgSGwO8Og+ z9)zVE7}%&fWRo1Rle!ajn{+P>!*QCqAlr6(@0g9r?|4o-0EyPqqWoAi1^P<3p&!Kp zp~zRG5xuJWTxWj@7Js1gC2cSGrcl8hEspIY>SH1;!9P9nH*rQcK8qN|=_F%e)vJV$ zsr_bVyXtXgwXGcI_%jhY*}lhYz8IxfIm_7tc89AXt>x$~Q9HO7a6_6*`LwpcCa1SF zJlVSrM;um|PM{ED`Cd}BD-6At2KYM-uI5FuM7PgcY<YhPMD8MIiN_nxQd^}n1<dDI z*#22G`QltSbk^Qk49^vMKs2k(18qJO%ORRt71gS7N400H^J<B^w|OIqk~u66N*)8b zPF%cbUZ0<vqHu<Qtlcx(?m*ST(IyPUz_p5}*cc*2_={NwX3m6mu6MU-+0E@dJ7*b6 z(s13n1h0Rf*q4F-73s8k2Y0Y_r_8Ii8Gb~*XqGM9mR~RP@}&@0e$hs~`?J57f7(f+ z-qng#khAS0Ix4MiWI02f)v%&a&1f5nWp}4-QJdYoH;pEhJ-cmwkuUO(StnfuD)q-m zUB_%w)irovgUB~dpXr7?Lo97T)@Su03|>dR>p*{)J1mP?yQ=d^ek9(y>8cY}SNf)Y zfgDyEAk!7>=NLaC*`<6Cw<DzyeH7Z}uyn@AUc4tGMdNJT-2mHg13==#{DE|g;4cwI z!jna(k9+sR*&@$syPr-m*OXTcv0N<{oab(v6piKm!|7~-rFZ!?z7dh+<?XB9jVw~e z_jG^6yo7!rV$6jPH%0RT@X8S>Br|U^kc?`O?6PH!Os(vGg2U9TmI}~aCOU``%27kW z2P+TV;ZbDYgWfNzPaW7ecfCJ!G=bv?n-IvKwb>Fk1sI3e#Zmqi`K|9IK2+(qm&mH^ z;;WvK$z!93@&?Tqj+g+#pFzTx8}RqIW(9v2nDg@5>ufXv&5AbQSCHTiMm6zR-(kBc z1nTWs${Q06Rl66~Zq0q^LtUTZA-ZOaz4XIfr$-wZ+aU1jIZA5luI(*N8c#Q8kgs=b zvDH=mQNZ^MxCSr@iiR?4gNf<k?0+{^x%{a(tAUL0M+skW=1)~N?~lb~#tSz*Zi#=o z&+EFXU&28}A)a+pa|47>{Y^NoxI}|L*9)oAq*Ex4cc*{`Yb{+y6wO=c;ab=f>Kf9A z!2+f#Ktfj71_YjFi^ZAcw5E;=IKf9D9O|aRKuTF%hJmO)z@`T0S%G%`L0rSOA|M#< z3V!N>DAeVmB-~gMA=hn;*GhY%V9<X)N7oNxj%1kb=D|#8x_bJS&H1R#|7)e{X|Rdz zJy0?q(}go8&Okp2&=oH9b=SF*Sf6xHcum>1LTmCA0oyiP7B919a)T|?P|amh@AVnq zw5TccV_jWAvnnnWH!#gkBz>Y1QgkO#gjrn2${~}=B*^4V`-)&0VsIs+b!&eI3S3`n z#gOUy<o&_>uiqcNzxRIhK7BuYAD^JE$Y~Jm2dB^n8g~_`x#40F@?EW80mmbqp2T~c zu@@HFtjmP^%WPIx(PJP}WKj5zRlzGX%5h)OG--#0K_7Y;WP`82mMwn$^<bG{U_oR^ zie?}HKgU-py>0>e-brhi&w_upW&jf^6bQOQ#Q0R54U@Jpt2|6QStq=t&1yEokgM*t z%jR>|dJl_eJt<Hk+E(OV^Tz5n3CxKFF%K5;n`*&YOm;>zuVyQJ4H_}IFWgOrfzaHK zpu?t~rLb<Js$?jOYYuM!0=6;Y3H$$1jl#yNuiw$-hl?T`y}eZ>P=<dxX-DiV_!ST# zsPzEY`v-b@2n*$cj_alc9uItFbY~=;wo$Uto;Y=#bm4I5>1DAHdx(qJ-64vS*Bwo^ zi;+89Pohu8oT!F?OA%P;?8#ywFGZy0%heK*wb%lkN%2xDlmb-aYSE^o|E0GB`plRK z?-yBpLEvq6=v4ePI|YAI5RSy4cf+n@)nI3=>PU}Z0iS2H%h19g#&I<#W9crLgBHkv zk)py<-Bn-^312+a{84XTi8IjUs=0)Q*6Ve+MGu;uOn*VNG8Fis*R!h+`PfcaHHJ~F zzX4>KW?XS1X{)xjaCp7QFS6P7kRVh4KI8O|KT7}L)2B}(?iqhr?5l%c8o>TXaz?3z zo7UE>e2qd~8aQ4bsKf)`+H(x|vgIlL6QHxpyS$=5-mHuz`NTrm$)QtnExGpr9c5y2 zCaGAKC(D8<9F%+cDs`2#d<wyS`G2p*R!6y3wD^?y^uIH(x=lZ3eOPosbaIjm#Mei5 zvE1+SdUl!B?J0lY+RXO`VSv)mc7CE$&2iY4^<S#gVeN)5k_j48z1d|x`|y@&1;VmH zzpkypARCf~^Sa34O1UPJXI0mLz}6NF7^?dAVs3R4W;ECJ7^dn>t>uaXyq0HK)8bEa z7Qu<8+M<-q@T1XHw)8k5yMg|bTpV?C80eb}y_Ud<f0lo>8C`H4?}BlT#G-Jc=o90} z5l)bp+*(S|lGBq3q=Y$N22;GwpP`LRZ++Z<d7YtP=>#sUbUbMv6{AI7UbL5!c7H!| zn+l6*don`lT3cLUkXQV)T9HC8+!5{;>k>L*Ov<)}af$SoN+<Anc~O+PWCx5SB3G<> zqmM<iLSug~*2nq@3O&X0p`z4aQKU2S>lgFTJmbnW?7YrCaW!Pd)K}L-<hK5C`H%4( z16KP6&|{7sxYetCfbt_WF@i0-tPl&l0y?ch_M09omDo~v-=d*DfsrO0hw%Qxn3R5E z@dO>9T0s!=D|PS}{4JC;?mvXJSi!MJbDt!T^9X;|6LLTLv|6mLfMb@c3Wwqt|Da8l zkuBWdL#AGCS>|o^Nd(+AcYP=!YAhN-m(-}?gxGh931Aznc&CJc1zZ@%VGzSDH~WBE zNXZl~4mb<gQE;MYkghLccT0vA(YDp32`1i<nOl3xq}MF_y|uJA-r$y{yP>M>sLJ%~ zN^gI?hAH%KDQwDu?yYP-sX0d3^P;&bng*@@9zT2W?&XVj?>aWwUwZd#1pF7ik8xKU z#cGc9OWsio4a5JA*%V5_?sSpTaYw1KrNgi$=C{isGVbxSj6X>p%d(=#&C*gzmNTFC zvH-3d-SU$U`cGLi0Pqf&5g7%*s|#0`D8zsMYn`8mfmHvyGHU`qF}iH87D3EM+Xj@! zWTU`mD)dY@L2O@0n@_d#AWz@`s~_Zjn_Rn5Ln#Yz^nX2m`BPf<%Cj^ekyq5))Digl zeY27*oL5Fl!kM+SW#HTGPsP?B&MvE}aXlYl4kFH8a!ur`H&}qNouns|MK{^qtVMtS z`eYdFXQP=g3AL?2_XDyc4dQGYb|j={qd`Mq{Wtp(IL}Z5)AYDeb2NTUbx*^Vh4mMO z{^uNSjvKAM_x;1Ky8+P<AL9jhgMQRyBrr1+*zmK`68;sYN<gseGrQ(2*!{oJ`^F%2 znvHIFHuiYOeQl4|zJ~tt7i_3I@b7=Hhqc$Q0zRK@wvwU66+r98d&1OR>MPq6*e>{6 z8p$8H-+He=4!6%Y8JiD!M&x(IU{vi1Z`AcHVHx@jP3@>1cv2b^gPul}(e;U+E~ATS z1KQb#JF>f2L$!%FpVgw;B7wU1C9)w)h9MmJOpdV^U}m*lB1GN6X<YAnm`r~kwB{X& z672e@1{NcEFkY)Nxh@ls1)}gXOi#eJLoSZm=3K0R-G0J1JH~EnG9W}TG$86M`8GDy zZ;}Ub58;uFW5JFm-@>(%-e^;hs!oRY$GsJYhY#7@6@HE54E`1R3N^IZtjgptp6BT9 zg?-aw)VVlYWcAgl(BL~=W@UfAfT1;ci5A`uW4P<H`ubFSf483a?ww{Q6Ob2%;YhF7 z1F^e(syO!@`(CAsgk%02tAN?<uH%nI{;4O62ENI;0)q~H88o37mNX29zs`i>fjNwL zV04T`o6(l-exZ!(xPm=*@1FDnul>jym4djVVPbSAY8rhiHWw>11tfpzCYld*9obT4 zO<LK*gaM+L2z5vbi`eWHjO>N2dc4Quc8M&IY9!M-En|`_EYp0ld~_`(1k3$>dhNQN zE>9jkjBfID$ss+~lyW`IPf+<JT}Ep$6inJrVPd+I70pw;<-jE3B3@0#duf`BZlH+@ zr6moEOvZ8EmC6(S#u$G9r%@h-6-zE!pb_`eaw>CAq9kmLtbKIL4<#DW*<(13X@>Cv zRLc0?y>p4sr>hgL%;#qwOOh!Gq!D}|4?tsCwb!?|aCD-$@(zB74&)3pH`BseMU22^ z@iLyL+Uj_bR&1U9!*#epVFt!?ncl49^YjKUUwmid`!boHs8fHA4;R;|kS#4?CoCV; zwDfAwLP&HH#n=3Eti(W#3A`+P81=%>G+7J0=4jOj$uwM#y*UvQF#MUG^k{`-E<4;O zd-0gO&cDn5D~v{f7+Vt-h8Z^+ok!hODS1cM(i>)m*Gzdt&$Z{&J@8quo9eWMvN5IC zk5d?3{pfIfbS{4g6PoUb*?pN77vTaWB~VX|EJxofQf!jwi>*A8MU9faEyU+^2B)ct zCjKLGIn}5A1i8d0UKt1=&h-%R{WnThVYzjz5uPBm#;M*Ey+{YPpFCPv6{V$NKVPv# zSEAX%!(1?#w%M4_;Uf%7L7;vF*C7~);Z-vPqNE<Oq7#3`*j0gQyBQeR-c4P@IuC^( z2p(P6?&43+AL9RnD5uTN8rz!-8qr9(5ax>ZQP{y@Ri&wq>*{KSEE~pB(gc2II7srL zL%V9RAnqc+K)uI6xSEn~)O58$etr&}1C{s*DU@@xbVo%(V0RiM!h^wi@fr2BMXeSt zZWtxepI3i*xsoCxpik=R6VjUei#)Qx5vM}Z9`_~uR%EDAn~7X@myDtk?9Gv5;jIc6 zKCpg7WRZ4@dUn~Q|4q_`<t0j3P2-EbSyui;)LU2IoYS8!3Nyy5t@dq!0tXKq#Owox zS+F{xQH!%+_&UT@AMhff^cZVNFYZLW^9#w}pfZ2)0zmE#VFL_x8Km=tKN}i6ZGFy` zlfc^VL<O_sfl*h)4dAc<G@Rq=xLP9cO+X`@RsCJ~7@D>{U$fh<qyrm`t4?|bvWefM z77ShhSBN?#XyBK!yXY-?pvvy-(Xy{CYf6UqHiKg_fapzD0fZ0q0Tt81;E+x4RzQGn z+(UmdYp4dE23Tn*j5ahw*$h;Rv@h`tn>V*1VSeXO-=Wbdx<J!8EVeWqIvHHP@}M-3 zR}4n9HW+NzHxd!ua^z$|Vo>20o7>!Nw{}6`->U!Pfnx4Hy}hh`C+?HG$?@&0+*IZ; zgq42%4G+7@H%Y&1K5?V`pZ2~*yNx5s@>hR~Wv?2r3J^evvKkP`k@aYE$CA9F+`Y3r zJeVR;Bx?i$7*tWB8p1jIHS=NfC7ThEkH|+A3MB2Fo!Rzro5;#XWMpP!W@N;TDuY?0 zTP2D3Hza|Ssd3$fm9;Uhxe3EPS#2Ut1#q8xca0tp1OG&NoOQ)v@+|vHR+eDdlNWz~ zg`Y=cNuI$mjg$>0!%L-Rm3F7_UIQ0odMaz1duf)KQyAPx*AQygpLJW&8#SQEI^088 zN4|mB#xq+s#w%LmJEvMs+f)lY7e!R1d{KsI`1UQ1k##5>tZ>F#wL{02U@vhJZMwT; zp0aDrj^;>VKpV4}#TC4GEw8xi8qa?!e=&_J(mf;5tACw}JO1NdFL^5d{j>PDzuW7b zcm^2s0;Zma((>%`E$Hl8aqCJP5lPh@p~KYTrX9D98%{cz{31b0TNOkJQXG8?#4kI$ z4D=Mp^{-iiK4q4<v8}cCLg2~nW1k9^2F<y6WY&6qSQ0nH03|&YYE$hGI^KV0Kgl}M zq=Y1>GA@<!5+T>jA<L(xm+0V_v<XP;$*wGgNIl7H#EDF1XrwO*eKg9G&g_TmhgR0v zZ9fE{RT*SZFk^ltZlCj!82My50-KZWZ2m<grQq-+=~^VkDC?xEi!?)D%<?M~1&0$+ zzt%6ENy4vrWz*4hXE~hi&kuiCr6U=cC{*ESl!LmCWuCRBNtzVmwyn%Mb^bSCj@>%r z^9bJcSx7hUCNT)Q;NU)>UL6Tv*Lbe*BmBT$ADN20hv$<ED?&EEAhf@IBkvEXfi%mV zJ`4epcP1xEjk^%Y4BJ%*>S)<ku}QC8Wo2efWvw7Mh;78Icu<-!Ca!<J+MaRxkpR>v zsBHcAtp^$vR3ka>wc+>3eR$JeIj|%l=)A#qz1?TeUiF6+F$cu=$1nc;=E<;AnLb4% z4d?4mk6-V-c`3f)UEle5j{h6lI3b`K`17+~kF^wp<e-v1Xzk#;-9G#?3`bNNeD~un z`~w|TP!as==>-14ub+P*1eor~Q~1XyHaMnb2d#24hz|G3u;tIE+1`fy>gP5^j0(lc zPa(@X5P-D~v?G)q(bBdkw8&>$<PHGC)E6-0#>)iemsiq7l##$7d?=xewD=X9QD?8$ z8+<o8ee&e-kLJTE1hdC4Pj;W}oj);OE|ys~qffo_KTr0anNNRTvnjl$<G1rCr%z}K zBXwY;EIx?z6#n7qqP8bc;_1`V)2HSOQt*T*NcYaoD9@L$#nPwq^Yq8vr$dc=LcP?G zN!|YLumTlDe0=<DSOsk)zV1C4h7oGSw`V`<)n3u2`sg>RKZY9p(UT$?9;(Ys!hE|8 zX?(#{s~Ujvc0hll`kI(9P1vd#Dh@Ygdt#wJtyyJ}ts;DQY}A7%mOgbCu!JuAL2@xW zixF3Km#xr9)14YvHT~?w5Zq2RZ8Xuxq#iuc)-0e^W*9qN^w)yetJ!j;@KX`?Osbn@ z8pKa;!H1|5Jrx{q0^u<wq$GdB0cA`Zzpq-?*ON*Le29M<X^TPssaO2%plKW2JjK0_ zsTqp}+KNRaPf=z4$okS$$LH3ME>mbT2hR#PE22TG%0{9P8RRq)8Eu6y8w@aV5;<<C zU~y*V-83ysQ$mm3`XE`v8?-R>MVo7A0)-W;Ds?k_lqxfkDaCe|<C$O@xrD1LGR>%8 zp{_LtPJw>}X0XS92dkD?9ja?1!2{#{CA$KN@YWc)hM5_@(g9cqSNLdC>IQazV1EfD zCTMVrQ%KyRsakEwM}87IG=zR}mh*t!E6w;?_e;rhcx(LcM=f|fbUJMtuex^)n-_N8 zonE^=F#fc%J3=%TCAvt;ON>hQoF}~kZ4D-3=AM6lAy%GfaCPPNv`s~5<(eU<MjRVl z3Q*3qOmk{v-^=TaFV&G3d|LQE)a^bx1zV>vGsI+h8^-K0aFF=gR|#)tD)#Oi$#;); z;U6b<4=W+Fo%i9N_7GG#3Jwr0D79*5_Zc(jL}>5`Hu>S{{044mkf<>VW$I-rmcXDF z?TUZAdx*=((C@mtPul?uSZQ64@3GDeP=?l!H$DAE%wYPgBzT>Tx{r%QBX>S7IHq59 zCVjRWdKFSB7`T6ejb3c=!@6%ZIF_erAr3(}>@9%5EX1U0uN;QJDN1HJ&r4~@+U9_k zW`JBo-JarQPgTLk9U#%$8k@0S-_u@2FMEINfTK6qX?iL)*!|TCE~sesiW{m4gJJ$+ zi@-Nkq*ac(5NEeFi>}Hu^}W~$#5xLZwStp}vvO|lKeRcK)MlH>cs_eW*$oVrIUl`1 zi{+3LDjb4ERt0fZosouAWL02=p+}9!+2eImdQoy^73dTD5<~aBpS>67Uvar1?N)yU zlC;SF;<}u_nV(%3m1xseU@5(7z?mu@j}a6~CcT~kQ^3<!zH=FGTQwv<iMie#6GF&8 z%Uu5qs0ov70j_lLyb^(B>OaG@%qIVgnDLqMe5Yh;1)>xJ`7fvQg0)2kf|7|~tz;$a zj7I%Oy=wjWI8`+g$`zkXFZ%tjFJ^x;v^-oY$O{Skj-Z?^87{**UBm?rQal;~gXiZF z?nNV96%fS<?YdBB2&QvcyNBkq$`2AyFb)Fj`_sqEERvJ?YZU+KVfpY+fN3StFfb`1 zpeuh8u^)B+)E;01&`X3pJ1$Q~85s9&Q#;fqrba#y^$qoipi)#!Hs9ZihGu`Acr(Rf zk>E%sgQ|=u{uo3AA(4dI!>*zQo|%;0Cd~zca2ucJv%I+cAf{!ue2*Vm3jK_K!jYYz zXW^L2dk4by3I<-qK{NBgn2W*!dx4r*CyN52vFDIAbq`w5*&Wr(OtC1TXNJUp)6fMq zmGdo5Xu{xk6sW2(z6unLi~@hAH#S3(SZks!j%}G{d`nSXBS#N~xbE5vls0zQ2?HG= z*t}$85||(=gpN2*v|@K-icJMHay1puak8QgS9)91k8Fh%$Q@0?%r%Rv(@0n@aaZXq zy>RpqGA*diVf3#4-obT0=$q}7ea5!rArq#+C{}wbVaVac><AL(B>R6mXCVAhJ&?)B zh^#ihYOx>BK2r5+YK-EZYD?T$W@HE_?%IOi(Ff3hVbbj4-~ac&#SzU1GQ%mv)|82h z&MegMHh1bEZ|`cmz{qRz*3L~Q3oK~f+I2+;L{W(SQZT#n!t3wd8yn;d(68>PL@|-+ z5)F&reqkTtS;W?i+^2tlTjArw@A9ln!3q8~{9vqoqayN}itR#;o{ZN?T2{Of`?*`Z z`nu<3MM2ZI<l2|yQdatX7sr4}EqW$t#pYBG@S*Y@Suz9gM&-(ET#^nVd;-|i=({)( z1esfPK9t>GVF6R@Nxln=R&b?Y*Ynj<%=tk~p;-k*=_!e{xYK_JvmUlC#i~!I%^ZKn zm{%d*;g2L5gSTl;4!>^jQz7t)R<aYVL|Pkz)9Jh5p;>ALg5Q#0>DR^CKW1Oua+JzT z{4Fmpe-an;iC_lh{=!nkZpC|RXwDNlDz$P2D*GRh`lO~^4L;>ouRrjb$h^O<x|(ka zC$EM>6{G}HE2@9v%=uEw7OMizK|F~{CnmA23UT})ON;pogH|oCtnp`uYMpQ7Cw=?2 zS|@%o8E!$90DxvM5UUY&AF(xSdAkc|nPfid4d>4@3tq21oP#TpG<-Oop8#x130txj z3~0T<6IxP4bfiBxMOF;vkc0z7h+MXH3~OzyCE<6IB=>)jMx_@O*jd$xzfqm0A=w}| zPd4ZhCDFxY3eUWF7AzX77G+U&L~5#Jlu9B{HANU**XR%}b)l->)i72YJcN{vdQj}5 zJbG_UxD@?~REr%APu}T2o%pfKsWGW!+aC;+;^~JK3wsDbf`<n5!>HU?0SId(vlx63 zFV{fKGthsig67$3AynmHn!0%vZcHG1bh#S{ETi;$!|GSoFiX@EtlLVLo(MxhY<Scl z^)KpwH4&AA&Fw`J@8MY!NUx6_qh0gAi5sEu3%|_^vY~3LMb#j1T5#bS$b@?B=O(Z1 zfc{e*v;qpyfauX;>0LITX@j{B*YN&oZcpqq70-V%)I!Ld9a5&mc*3&kctamHUie9S zqDpa8XOjrdoXf8bF8|FcyU9zb1PD;<ReBe-(neo8K0~yJ(ROm(lxr&4-PNPkvVL{Q zl~bDFvAAxwxBzRn2P%e}3W4{hKMfm(Yf~l?q20tbYcdZYGf4|l(p7W`0jgd-h(sec zfx>_ET-=N63DhCeZck&^@P1|Q6dsQ$XO-AB^@vKv1#aaQ7io^o2+SWoWmGs6lN1&% zTZcfYnxxj<jXp~(Hy0p)iw{$QWFCkP`4_42x!JO##s8i$yz&Z{&5G+~rpnhS0~}qW z*~+!j!LF*pu2^D?BVo3wx=i#Mrkgq{URr-KTWhg~3DyiS2G08myWA>mmPe@Y{QO+V zk)LrwKd-8rK8Gsz*IF%w59<loA8nvOFpM+YW1BU{Mt;(_Z|=)~n_)92egX9q#M8QZ z->m<t?>igL^?)rdujh76^fWHD%N}O}eD*cl=dh2-?I+Z+isCriv8-=%y)VQA;RAmb zXbD#43$29S?e#+8<w7z8y<9qihH?%EI;gJ$ScVX1+z}i#AX^g-u$AO+hohCe(Lib9 zKyy`SF)3h=+#E+S?v8Pd#4sd)sY@~mp?#^zYEUaHKr1=O4uYEGbYq@ioO_9dKL+6Y zC~gl^iR;)pE|UplJ|U!uEJ@*)NSl9phA-f^LBt3`hYBCxbb_w-!>PE%OfqI1)0QdR zAji!luJ{ig04&Jdz=CXs0R1TEfFv*70<$w^;FmQ1>LE4BCxe(^J>qqHQ^q5hnics# ziJ)^W%Z<74g}a^1MjDTG?zsdZ#Gc&5$mu7?#N*zH<R(s_7X_4uI0>?<b~}H`O}#VJ zOCXqM*2*QUCxF5A#fN>B4WavV1<7R83*nons1IV^OzBa3PSz9-%1b&zA}tr`5ZFtm zUr49$fQf4#ejK!Bqs;GPQnu1Ww3*Dn??>hb651H{WQ5hU_?IlisJ5;r7d<857zt;Z zCd%%1Z|~ug-5(~2l0AbJD7JsaGWrE<QHsG_!_2Ic%NI8}7=g@}Vs{_JKM$_1gzRXy z*IR{>u~)U?^ituqq@!|}KF@}!Ab3g8E2;K~TRNaxq;x}w#W&M=3Se9^>rP(0OWz63 zKX{NAaBmTFA!{E{;F$GBQG6FM3=!U~=OTPP6aSrNuMj7z@~!LE0z7|VfVJ+~@;{_# zmxGRi`C18KU|do#f$X$<?<mVM?g6aog0JekV;_HhaRZa4Ck6wZ#^&pa<>R3w$4`3( z6L}9%`?H&cxJ!vKU!~-&HaLz2Q!hTw|JNK2oH5?ZP%Hg${vi`GP^3|YU(;E9l6=at z#o_EHxTPV*=?$W+X>ET|oLr?hP}kvX(1nL2$#*_yfiGQRi+=bY$<C%->@J8xf;&Nx znRa#8y3n)Hlb)4E0%#OJ1K?-=L9lwXCsMK*Y-<>C5ABr!;A2Nf^Q95`YP*o86xeQI zyWg^h;oyd{1{iI&KP|;Cy^qZ7ePqV>kr~@Z@{!*v2PMNDPKba02M^99^b`<t0uKyl zLTW83ib$*PV7He^YHY2K)02ae#21i!rZK^mqY@7~OIk~?f{qnnQKx?*wva+0aZN^r zvs;}3M%iWaQ-+enm*HKX;J9JuM?`M1<HP_tcr^zh3x-Kz&&x+;?HNE^Q!F=eGIJWk zg?xM|<_zw^72kiS^DpZJCdp+834HP}j-<P2R9c|m`9Z6)1l7+AL_kJd(@3C*pe%;t z=CP3CVh!%}PLk`93x~BFWmbd$<=i@EHNk9ka=9FW30adxkRp!DEtn)?HIPBQI(nc; zK1t>PrnL=ASl{lmW9(}U#YAsX>XX+sAd;O;K?{-n|5<<c|7YDFH|r{>2RdVdJB{fY za111umB4sJI)R288tiMrk|+>Yu-5S`u$i>YoWytsXW|DS=#Bb-4j^}kgIw%HgWT*u zK4OE}gzB~kII(sAWu9Y+BtE|ejoa~YFA*D^xQX-=bj%^+?Dyxyp#mc=h;M25n>aoK zc~wyvt_6Q-?M+Vzf#dxakl&%_fpu59&KdXPl?TJkpZ#<Jb?fSBFm46K{d+_-avUec zmB{!2YR5&lC)M7EQ92dJHCzUWMo1h*Y^jiEq8)$edmjFXRP8bzaZ8g$F&*j<xvBhN z@%m~}ex+yzKNA^P_T8Kir!;NnaOUk=-V!x>w@81%O(T|NHaTMTcU2~gW?ys)JR5fi z_!vR8tmCruhpcI=36fWc4oO3}C)f+PMroKY_<;fHW!Eqfe%!Sm)Q5VU?G5iH!If!U zy7>ru2B~t^upk8fjXKq_TB`5dVV6rUApD`q*s_{VBHac=g%1qbhG6!8@k^K%B$}F< z<nez7RYHJhp1b8#rh!T9Y(cBq2M_ub!aM)FiJcXoJrp`aY<>ZLJ%Pfjwb*BmPlo2S zwUZsJP~#*nAX@u$e6k+2vTC^4Bp;TfRV7MLrwVY<vq|8}7sKoy&(FtKSqjf4p!tt; zJD3TeDUWt`(4m5z0Rkn(aV-abkom#<IG3ovCC9*jh2+sOOF9|M{A_K~hcd8carPPU z7-92v#T9mis-+TjFQT;);&vs(#N6<3w!ZgJMdoFqS=1uEBpip=wHIk66qH`gkps0m z#ptQ!uERmqIesT&nQ^PAn9)5mqibAMA*^^OpPkP;;3Gm0o3^il%24C2AR{1IC?z4> zowgf)841k<9xraxtNY_0#d*T`I_&=fz6fI4UR-42<Te1n17)p%drhRS<r;<238@C> z%CW9M;~rR*!1i7dLrDfDr}7`u#R5(wA3q%a<u9*4c)^sm*c^gfzg^rU9XXv78OE;y z?J7gCf(d>^Nv)XE5le=NWkULtaXuM@L(H##8~8yJ#tUKEG_-BuMXJxO%8G*LR$j>% z6vi>5@D0a|(U|v%4!Q=D$7*B>WCy&h5gO-7uUAp5Id+g$4DO$|X|5@Fl2xc78j@Eg zfV$L}MqU<uO6lExV+rZlT+`_KJ1X^FNQ338{PVb{Z#(%6gnox?qG;CeD*Q?1SJn@I z7({Z&m&alfMh_!itvr(2<BLU--NjA2J+$Hpsb9)CiCK^KoG3<OE28TDQSj$&K6{(q ztbD5{S*=w8rXjtZKDgs|wjuaYwA+^4yLFfE$g*`;9L|px>FjSnMxfKoE#9_-LpG>U z1%}l%X|T#dQ#4e<Uw?ILv|U@5w=8RaR&ISwAt6*Rs_N?t<C|>|W1Bl$B~R)ywl@z) zqiWrpjq9xxNKFc8`65>D>h2@R_NeU!@c-@U{a<zN_|~D$#s`4qUnyKeRh~Zk1XmxC zrgdpt#v=Yd1b`gHW0~)j_+`QZs8k3(3W?V&?Keuoa9SqyJ>UVHeNvwctOTon43fd- z#v}3&v~sM6xUtJ!Wf$V`?ms_W+PGgf2jre<%xImRw64Q7eY2`jJ*=Ss8v5NRNN++E z1V>l0aWO}efDXptED-$8C{X>$%zA?aE5t<9j;bFrc!cbU&TaQaCqr+FGF#B~E?Yq9 zs~i#h#eeWudV{~x8~BBqFANiZ0DrutL?hqC1xuU^35s8qkX<!L1g7ovyZ8ri4rXC< z&gHWp=kghFZYHSsgmEEm&qB&_doFpav>#lh{qQRF)UMSQ>eel@3jgN=WD3IqP)Qud zuseK$p7&qD#$=hD1ETWBxppf=_#EulZ3~OR2toYx8k9_Lf)NjT4a%y2LB3_vYMI@- zeVCEK!VTMgm7kyAk$kKo+=T{Jq|-0y*8;Gwf6c2xG@4r0$)ZuNVwNt72Kkh1Xi_Dv z(<7Ya4YK1N{Hg|fYIhHErHjA9uh%yvnv?}GqpWIWfe-i&+k_5T;O+c#gX{sX5Eg^c zVBRBSV{Zpg<jHn5U+2<)lVf%`%gc{TArsol{*I-MdhH?kHIqlm_pR7mALBMpc&Q&9 z+hBYRAt1rVZ=~EJP}G21hxy`GDfWV@DtWO`g>9mo{N=LA2VhI9J<O&>wo<0xtY6Rj z*<&8xU?}PXBd7Uw$?@gEC>$$VC;eV~4Yfs12=lY~^>l*3P$XS{r(Yv5P|ZOBpGD;* zJmF0snb29QcEpTa8H%Xe?Zzs4f}!`}!?pGXl)dw9Iz?vX12`7_`IX+RTQq_c<a`+B zxyXt5EgI(|&aV&vq|7=v?chNVBGV*X_nu=jf0ZItOo*09xsWM^Op-vMvNrsbAixrs zcz@s3RCLD_I}y%*ZY}FudSic6&`;iE{2hCN#)yHgw1d=C@bvfLp(T+YJg8yn7L5BH z7*$KEKgQrsrsuG0ZJduL^E1TQ>XJpY^aKL5gU=v;!03}<AP~NF68pNc2z6qMn_*<o zF2R_qi<S>Re|-DPD9&dRtM6lWQ^tvI8ocpEzCs+SenJ<2(N^w!L<dc=YQgM9%F*2N z5__~eWcJ(A$^_zjln_2f`JeHRKcV_leb1T8m*v2cO9uW`ZTY_EAU_S504)?In0-o= zC*GK!Kq?F5GmNs~P7IFYQgTpB+>~<ZEq8^};<@}G+Ad@s@bTh#N|OgR8+h^EDcUm1 zk)a5vVZX$GiGN4|x3hzMU}sB5#X&i+G7nWR^I1!GS5_#}RNSES23&jmoM|X0wm%)E zo!L<1E>EBP{5@!~Dm6Q15B;3rRwAlPLbae}bJ__MY7eIS{xncHEj$e#wFNPL)1o(n zFzN2>xB~umwkAE)==P+C7yv_dEND7miv*6<90w+UH=W4ck@SQ;-6HeEno|fgqpP>p zfT=#8>FR;1uz(I!FV<{sQ}4E*4+1Jfi<#eXx<q<krxUi!k)w`L=L-5t3%kWdOyMkW zy|i2TbH%)G-|~IkQ*z!yq(!~NTP4d|T6s$=uRh0?SPkc7+v_0PL%r<^3up);x7Yr* zv&|`gm>*LUA^3l2S+k>~=hP#;z)jl2?%oe>V@hjh*PJ;u^IEp58N0%29#*$cI}$pA z@Qo^1Bg>01(EuaER)Siyw)m2lXP2!2ERopkWK1ctq+LO@;TUzpu>_?sn$xpS=+h`_ zBs8NTW=1t(D6_cvp)r`1Tb#B-d0)>E>LT%fTeCXiWS|xT3-qQx23aA0^x(%s-P6ep zzkZG3$?&Mm7G^eo0OtHUFIqvll<+1V$sahlZFR?hZ$g%s=F=Om`Ro?W!`LUh39os+ zpJ!%2SAtwi7QhR8Nw(e~ywQDlr*8=#CyOPEl;N86MYHx26?V+p8is+>PGEi62Mqgv zG*y>9BWx8-JIbJe(`QT!9lMH9b2DeISpdU06GNK$|9ErJbibtgjZL}M=vPp_X&RTm z%QSW<rwfpwT&k?S<F~ho*!Q2rek<^M%=KFbVIoxT@NS1+L}@wIyc0}C^PpMxEdu#H z?w~<^gNiOM!NJk*@%Byn92~SN=wfYuCLSjhE@&O4@^)jmY7Nfz+A?Q1->Rsf16@Hy z7hX<tLC}Zn43t2{sHJEBO^3GM_M=kCJ0Wu)7C!_I2kKJ7B}%%eIaa=#e;L^)KLS=^ zYRrQT@*HF|fL#W};@Vob?o>vMhkZ-B!p+bUzHP1jvsJNL`S;u^|FBgfy4&J^w(j;u z^j`_9f&WDb1JoSaWRMD39CKZEwaq!0^{T4T#A1NIdon88W=z8(#g<q`mB<B=P9*`j zS%>>m>K%pI?ov@6)$l*?h7vB>E7pi#%JeuOQn-loI}2&nwu*1@?g@|W9nJ;F!oWaX z8Qg-+O$G1s^q&rXYyVI_q(8uaQ3`CsJtzOHJYuq{<w-9k&@!>G=%GYG@z5{%-BH6) zo`o2UonF=bcA<u9p$<GA_v^FJwE>=aB>E5hSy7XhEsl5OPxEN0@dGeo>JeNrj^k=$ z#`wgmf!}DcJUOs6o6wk`-q*QArt6M@QX9q0zDVAa5C-=*c9k9-Ydwj7lF28|H5NtX zR(IPPHCVfDCe&}`NrSx?;I}LE0u?R5^NX~C5!bNbJfvnSGCC*cVS|?)OHJ-n+XrwJ zOF8XjSc@FiqoEGg<@Q^N8+Xu;dncn&P|kZf`*zOsMnBb6%%lqKXHpYJnWAp+F2vxE zibLt@#?&Nzo~ua%MiqH~TkFY`u4;>!u1MA@An#PGOY-fuN?%2Ehg4#shJ8af&}#Iv zx28M2(dw$2(>N%zn$QimlfaQ5%vy4@wv;h|zmZ#4Mz=&zO=#UGsl-S7vD+(SpJbdu z^1-{Z5Pf$F;iGqD5%?+#sO`<qthTyQuHIV?2-swRE+6r5<MA4Q1_MoZv@n;}O%&l` zRBqlPwy%PjBsMMLYU3K^XBs&tKg~OCG*Nry6bnV+@M9awe6sCA5fQ3P#YP_>godfM zfUY~PI%hN?p`L$rg{o=CLe|x@k}m|&v<+i6b8=h8Y|WJL*lb`57OL9NEAF+yDe9>` zsOmu#XKKtzYB+3vIe2Y`(GD1M+|lU^!POR>FPC|liF4x_nJ@=~U*Eyci~EgLM3lTP z&{`hMz|f>~D0=_*P-@{P`ngnK#dLw55fm!C+5%slt*fp7H@ONVksT8LNA8rRtFLqC zXy85IHu5;whz_Q{RcC^wpus9nGrzrUdskI3(5i&29-Kpe_{8=~%q?_S*8W9$wFR8U zn1|AR`j1iE@x5&;L7y(m^Xv{4dEF-l)$pgAP4W^!wVAtH-vohG9&eDe?vh)U$65!7 zybA5xMJnmSqtw1rso~}ASjmFRLRC?>|E!3zw8*HrE?pG?_2uFs&^#*+lEW%QsOXD) z)~+V{*<FTzP2BD^wmD9K9-pkWp@(ao=n^L50t;66qhY;H{zgJUuC#`XfoR2T<zv|q zGx1ZlEGp(3Ete;^nk?H<1;y++-RV~bUk-RB)P>n_I_rbdPcx4r5_&&z_~at;$MG-} zZHA;4_CRjO1{z=&yTt<;?}aAdcfFpLC~yw@FXID$TWW30KJUIOd!F^Kr0ik2szfq; z(_+b&L#T}0-;~!6zO88phusd6h}XxJiUQu#GlZ6!kVRt1b}_a#=cM&vYhh)a7n8ur zi6$e=%ScSDd=lM9b$o8)>9Qt_x|eFW*--&<eeNe-q$a8%SbD2cI#M<4Z~Q}<LqN=q zx<3zpXzTMfFgDuz-pKoL$O|#TS*zdO<3Y$xqTI@BE4|%}V9uTPE_S;a;X89Cl`saH zbRC3c>n><F+Q1}S!$8!s%nSY^BzbM{7nsPlaDQy1`%@;~pN8anr2g#%0?{w$VD{AN zJlUIM7ww3KzSoX)AbLAKeUt0~KGS|y$%k5hL8lLT-tsY@!ZNT)NgS=sv;1yTg->>W zS|SCskekuaa1{G|So%LMZjuiC|Hk30D%WIU+b0yj5Ne?kxV`NJf2t?=<6UQh`#_4# zMgn1zXb`?TKR=f^N`UP|dtsGytX>V_>EC=jiCdLY*{atcyqaA4K$*`L*X4>Bxd)wp zbna^UK#v*O4FG=+e9+3Z8+|FnX)NqtTD2a16*xq%_1AmeZnXBnIy$%)o2|E<X4O`V z?c+(S`{P~$|MtBhwLTiQ{HNNArLr;?Qz={B!$GnNxxr{>8OSI+Y9p%LyYwn6T8hC* z1V#oCSqDUpXB4=5ClRgcBvME8Br-RD2Juy@TnMF<xwl(N1?|JG?$Fhq>ZTuH9}uO> zJnhiB1p|QVtlkOTby(L<>2}wuz58|QuQJj0o)^8ESbp=`oXtW{m>a+ZyWh$)y#~$| z$HL{NeJhTez@*B&wKc^-fKn&H$D80BfhoETOF}puP{&7|W+QdD4}mnK-v`HkG=u?A z!)Y~lu_W6PuwDEsj=*tvq!6pO!b7n6Evu`X_B9g~LY<-)q2Lt#fuHchr|hd72W;RU zv#$i}Fq?O#5UQqg4gp~B-QyAKp*`SDP!d9~GgV*-FZ%tjf|9}u778EV2$?UP48t*w z4`-jgz5%sDuy`F1Lqp&9hMx3)t{~Xt=Wl}0jJ>iZB#oML)yTWn_=g(>U+VX>=~u@` zUQE2VQf*dGD@IRAXO-UntbUACgL1!7X0tUk%6?^$i&(H$=cv^2$$G8X3&5+=<^ye{ zKC`U~ECJPC21~RZCovgh$N`WCb4a%NtiC(Gwvdt9l8kK`9(!%J<C6q`UUIa%tmxNL z^nMVl^&&=|LgI<8i<SFRj`qe7-V#-8u#%%iD(HYeF6UQZY%!i>XN0sXmXr!>6J0Mb zqxcW{*1+;-xxnmE{`9P;NYF_8{b_ndCLzqm?V&c2fiOkct?TLVdf13r0JTY;6o90! z%q^L#G4A|Wli+ilWX2|cGn^>}FWwEAX7ewx@dr`YGn_}pqXF$uTV&?TC(j^k=w&&? zLz&>r3Ppp$Wp%)+s_?RJ4_uDhO`ro$SmFdsU!9B<L+IthFq_&mF<=9nm9OzL*b*Yd zf;<IOL|cB9or**I8TiPXYGY=FsA@w8B|cOZY_ZOMXtAUfbWnkRpHPE}O9g|>T9gCt zPK2NjzKSbrRM^ZtuixvD^)%`=AIASp+El19S2lBa@WH!-w8Z9y*I#60Rdvx7SEOD7 z|9DN~Om+Jf0Cx_!Dg01ARDWY&YsV|7)NX`jz>Ton=tfu?|G~1_e-MBCPbUZS87wVl z!7|__s3*dgk;NT<afJw3%vUmd%m-t9lY~b}=8|6p>uyG!(1-L!75EbPZcQF1%Bq?u zd_BC9X>xrL(|i`FqS7J483Horwf*6d(8P8$$6lEMp4=EWM~ep!Glq%MV7*Zl()H^L z_xf_yZ%(upqbAGo2b;@gyoTNqD#*(=yp9xG9k)O3iR7(+_+i~(s))Pw<JniKo<~)s z$QMJSH7KL9OB$DtIz<_z(YC_&CUsj2EFIf6y$g1`;8;YaOo||U@00!<%ZiHX*C6+U z<yop6u<}u>3^-uPRa>y7Z01tXu-)42)j?q*cOh#NN?e8{PkZ1AHe!u2_aMjKeWPW# z9*!n#_O8Z%Hp68sDMcEehLsfR)0ny}xCb&J^p*5L({DQY9!umE38#T7w^l3fWO6j{ zq&H0WO9Y%K*-Te8KsY^$_mJY2CGK<=Sxu+|9{r(g3+_!zaa`c>V|5I}>}1`hFiQ~i znEZ*1x{EJn9v9xCptaJVXqEvq-WRn$4qY;tOAR`IqX$;#bL}9gE?f9pYSZ+k%97dq z`eY;*Y1;I~k*blu5Z;HM{R10<?8monE!<Qwx`SL$g0%;(paE1s34<l8)w9x?zR)ti zo7A_Ax0#JiD^BZrtD9z;5Wi(vr(7NMvqB<ry@|87yb}*JizrDSP>EYPtw_hK^|1ch z+@SG)fB^7at0|1RAftsOV-yeB#5>~y)pFTqGYHT^g%uMo(?TV{3G{#y>sd4p>b^2N zVU^=@KAiv$M`gRQ;jf8ip`sEt4j_W+JaSp<5GYk7=Iiu&l8xegIiI1C5k+aDX!FeK zHx#7+AAKC$<+}GF^L}xbF2q^{kh=A7-8H#?)9ah@r5M44r+rDkjs*iUo_L<l##3=x z;AxlFSGic?UwPUb!|#c4_Hv6e`s~6>WdZwi>;igq5)(m_7X?Yi9E#W|+yls?Xpe&Z zfgGwQQLuNA!|qp9(__eO`WjVm0CMqYj~iGbgV*`=M>vmi@u7MY!g&~t`nxhg+J&co zC3xzMdQnfl2~C8Mfx}csh`j5SF_V;^NpA4;F4*fw)>r+Ev;pdUPAXi>vatamKfXHA z(>>0bKeFwMWtPok<7e~v^mdJ#T5j8KIcpoYsLS52LEpJywN*@+5VxC!0|>CHSzH;v z$NzWY%J8M4UM}WeRxJ3WSbJR~xoc#9y7kEF2W>P@sw%{h_YxWuKe1h*Au@@=0jZ4K z0qLvTV38~(Ngwgd^HDVQGk&uPqp#6NLy3GR;}cZ9YlY|#pD<7?d+-WoOK)_xikH?6 zrN9kdLy-5nd+d!YRFv@+O8a~f+{mEY(&wLZg+H;Cntif1%CBB<41BpnEca)B-#v4$ zf)AaVR-6FC`hBre)1(`>*c6)N=jYVgZXI9oWo}#MvO*q*L&)$RioSoSaGtyM!lHDw z0DhLaL$hBN)fH|UP?fR4pz^HSEeoq8&V|078?_6A7xacgv0=j`-^hIXROHLQ<$PM` zM|SJD6WQ<7^m7!yR~70~m|4YtPEa*St2<yOc*teqQn6ZTVh-W4ZM|+}E>SOYp;z2Y zK$Ozm(|bj{PmyF#PV{5D_+`Jfo4)8D7CRd7TAfd~;^&)m7QGc4$1T_?+Pf<w70C_@ z?~z|YPMLG~R=hfbVz=cMws}{68N&Zyj_K>2vxLzOGBQ3s5xMe2u6R{{1?cwuLez$Q zw4`h~zd$=SikNwJnVo$C)*T;1;~(+kOG<P^7XR)DDyz;0Ye?O6@28vBH_^|cvWC69 zzNzh``P{sZ+eex9RWG-SBFd~@)OTa+V$0!>O-iTFDxh$rTJXaxG<7K<)UXyI?(Fhr zSvITzg@9d$H$QC~7m>k#8CvJN;i0Fw%QQqs@brml&QVrz-jz=dE_I_=?4F~MUCiij zsL=HdEQ1E+lxipo$#rSOAjfDF%+p2Fm-pu_?<<faZ5(tJVnnj)t(e-g=hvtvf4FV? zN+l_9Ds|~Fl3AjU>UlM)$QN##zO!~&MWW4(k4UIj5@$v@cC>kaFzI9ubO%YrWpLoX zp6pajs|OF9Pxh^%?lW8<G!20Z!e%n=*jCeKOm9sH?!dE=F7C_CD1InIhl9-gt<0yU z0j3?ulH=HHu1Tynpd{v6fyCT8lGr&^C$T>HB{4hNoU|d@P2H{4>Il7NXV%-uu-uU^ zh#Rif@^yhlfc`mun=ZhJr;y{Jd$MA`2IV?Lq<{MhQhG)hmme9y6lfs)34n)3b=`62 zR@yW-Of~s3+KdBsOM^0TYa677F~Pgo9fwZMruuO+b8e;nq!IH@Tmf?AZc#~s*>O@s zx;zgd@o7DAY}Ksv-^4fftaKad)V_90;`B0JsXvLd&@se+CvOOVj3cqCGVz~I-vo22 zyF?vlCrRy~t39=zbd^hxuKt8U*R+QYVt4F;Ezmah!``3kdt>JneX<j*p1DW6JNC+m z;*C8ryMBFdOg_;Q^F#K+E5tg0(2!jr62%%G=M#q%N<W<F_h2ye#EM>Ed5fS{tgi-8 zZMVG4X5MLk#5vKntVHWzVm}L4zXXG~-tYYmto99U6qM)`v4NZ96&OoOKg<B;3%oSC zHAR8Cc|NQDXmhiF?k#Ta;}OCkN@_!uWnSeYKu@YP`@NplGp<%RNUAKmqO8}xa+2L` z1I0F|90NVDIHi=jA}v~k`T|d{>Jkori|I7U2kBCOT;%~Ch+v9L{Nedbh`kw9hY^Uy zYJq^GkQPC^#({^i|FC#-J)M441)VW?<k3-28W^2$dXB_zmmWwXdbY2hx=yf0=y=Q< zdpVsKncEsBZtOnhnry{@hVu;SyyaZ;i#Aem-%^o+lI#A}C{>HiQe?<%6}+;u*61OW z0aaCho1>C%XP%@pWh)2?m$#O5?M2KO2R6BMmEzLn3BII4lAN@Itgd9y=G~L#18(T} zH=|*tcj!UI4y~~RY%8{PyK<!OlTw>C4al_$1ZfV*%Fw_H34nHjjpvCcfI_u4t<%~7 zJlB=RoD?Ep##q^agTN$P0N=j#GpOY@&9lva=Ju__4mOrQnzY;KSSTSi@A+UD>Awi@ z0ZdN)!{Q_@(~kJE{2I}O#`77&{S2JXMzMT4_zZi2;8UZwAUUI7k!hN7B(xvYQ^0~% z-|S-^BUQGq5lq>$hF#`U_7z?(!SE$zZgaYYHoP{ur!nLM6uV%qcI3LDXicI(6`S3E z%|kox4x5bebwS9kXJss%365hq%@!h&)M)3+JQH`luj8563B+$Weu)2E&vJ2BJRe_W zDcHy2cqegobq#G##+TQb^HY_-Ow;01I;NAq`K`Xrud>r+KDo$P4wHttPKFid1~s*9 zXXel`VXbAJH$y@)uRO3U=$Z8Mjp<E)sZ1-Z%k~Ivzw0)5;3m%e2q;G*h@2|O62joo z_|Zi|rug0jac-+HgiA|#eq5fY@Hyx%(9H{S8(6jvmeR^U5p@s5QKr3aH4z_x5VB}4 zJoYKzZ09UpPF6N}=rh0$HD3o}Ig}mz?PTov_#8+@HhD<~5wFk?zKAQ43c^o+#f1_9 z_{+KFX}S>T7(7YghkB`wC~1EBFS<6gl}gF<1pZ4$cE4z7q2B70Oe4Xe1K3F}?AYJ* z6fKi&cXCibyt_V|X6Z7pMvluakaj32`%6}e6`>CXuTi2TN|&O((yzDaBH>;$Y{^-N z488kxuhK;;11Bfah-7VCR3~eH$FrR}pp+>_l2ST&m|HmpHWBDCm*h#B%#!73rw?(R zK#A3zX0r<n@h%o|s~Ba+y%UiE{iIv5+KOY{*~3YjKAEn>iIgQ`EW}3HS_x)zfdY<N zy<z@bwKdEiK5VC=rTipGA3R9AVuqv;m}4pb0^O=kYyq|H;qt&e)la^E3fY;Ty`)J< zaU^8Cp6|QC<&?y4-+y@BIeho#eaC;ALGHbkBmPm$5+PH%<@~pWm~1c80$e4G=v^i_ z^YrOQ2*TEEq+B-y?X`rolUWyp1BQ`)@L*;|m1dusD#nWI*&loQX?$FH53onAWe!#n zuS5YcUBzmVKRiv;t&b>w&x=JmlLjy^(*;FT5P#$00>3@KOgjo18^9y82<8j?p=2K9 z2dY#-=&oC6zvi?9#iWC(YB_wYxsMLNo@Sp@rqK!!6w)$hs$AWvtFgd_dDq}*l9=(g zRU2}WOa`(1>jP#qN7@)8W|YkeA5l(TS|5t2;?PM5JP&c$E$KXe%Wldsk!^0MvVkpY zksUDA;F=hO_lW)M;27@Oh~`nmCqnMSfARhui<1_c-~lo)FWhDiV(M@d4`NAm6jNzr zWL;5mWHlqEP&3phP&K}HU4`<6&V~>jO8RH3WmYy<`_Inv3jl(h|L)rVh4RHAKY+!4 zes#gFbmV!{C1bFE02<(;n=O~~rF0|v?&Z_nXS>ftYH@vfm6v`21?2doFOH5<>A1)d zyiPXw#GpOm-xh@a?j0_e2J0$^*lNUKjd;b4xpzW>WRlUip(v@6HddzSdAhOIX+HZj zzFto8=()_!tBfFdKI!Hhk58xR>{AsfSOP9vAox;H@j@?uCA)CY;*Hc{wxYVb>bqSz zjdZ*XN5}b9dO;&0=3i7S&#D*^E(Go0(i%6<rjx=&Ju{AuEGP?op#q)N3aahq6SQna zV_CT+b`{ep@wtRiE95G)u+(G;_@VIrWK!<hLSnm~#@?aU+Sl}e&|=g*l+Pf`G%w)s z!hXmwYePtXKS=^Uh)^Xjr#YAd=(^<MjmUi}Sb+j86tlqlmQKYyW@+pxf+~iIM-8V7 zwTts!(9mzILaBVTU~+e>TUo_1ASI}7N<1o|htkM0mL8X|M-}2rmR|WdVZrNKt~VZt zW)B6`b&OR+v4_@BITv+K{oaA%(8_I{O01!)1Z=Z^#>(!ue|q70t+sHgA4&&fb^xMw zR_irWcU#@_nG~xrMTh&G?mXsvW04zVF*jJi+~YIK{_PtaG$J!+;Bi3G?%har2<Kcr z1`MV7qUxx)dy5r6QjY|Qwc1?#m3*|)-SV}`T(8e^5oPiQXBu7;CD!ncc6v>XBCHj| zn4RQ*6*dx1L(;mFO<ieIMooX6ovC)uv-0fn#dO-TEj%~Xe+#P%%J9eDFKdr7_i=yv zMO?8X;^me%D7c)DNs_sDsJq;xh{;X#yfuR+uB*7qLTo8NN*W7}7Eo&v{(&7qMLNam z;7CtF!HG}*jzSah$>)po49o+`7k82_KWT@5T=}WJHa_p@S%dLIhAbr0lW;x8A5PcQ zb))pGIAZ$llZuluQV(N$W_C~<H%*x|h!9)%8J%sPKhobqaJfE`vF+;_M1a+144<XF zLY2|M7PHA8eQP?M1-2ovk)3%-R~iIW*$)8ji=Fb>M<6v2q8p|tUXD5okmcJ<(6e-Z z_Bkz9GLGKaa$XddX}&b0Oc^4)I038i4?J?={R!3B_!kW-W#5{`7WFoR@zQ4>dFU2r z^G;sp9J>oJ63k|ZczQJl2p0gIiRZJo@B@*16HLEe=+xg9aZ=8&&n^+s43a;>FGO^c zUm&QgN(b;{c*)f@`sM)gBSe91DVQdIAp`LI^ou006(b#>u#`A2tW;Y!5C{fOTFxyi zGhGUii(fa8i;S>Z(4|ZZ4z61@y^U(KgX}7DuT;kli;tH}AvwiT)iII--}HGv%(62K zfi5Q45jqsM$}WvBM7XX677JJ0vrY~DUaxIN?hhdTz9{zVwg`vQ;e4c!Ma61=uY!^r zmfbV_`9Gh}5k^iNyHv{lh>{-8ySSRor+*Te#iqp)Ag@RfS!t2W)7yMz51p*JLlq~w zcn3?9wMVc^$(%YRL9y@w?xuuZ9m3`Rl{gMTrlg<r+i06GRN6bNueDkZ@PX$-{HK4C zoQnVKo~$VzHs%PKdx>Nf>R3X5WI>X0Y>kuE^5S%0@<Me0)ciF7FiVY$tY3Us>&8D} z<0!iiZzRiX20h~Za7X+lCAZ?;i9%VNEYmN4ftWxDB!)=V`nQMgC>V<1cf?Gb1ky%Z zjdH6TVLNoEJA(a4p0N`-|K!wJq=IpWGnfRJA|`S>k)x?9V|ipaHprBJ+e1zWV84iS zN4nG<0qDwk0+~S!(i9RCN~FhPj9R;Udw_1)j=c=s{!^Ys{C_CZ<6X+stIqP|naTn+ zRb+blgl7uU^URP_m8b7@%3{!YE-q#;5Gvd}|A4EWxRtdPQshR~_AqmZwW+2Q{_O)X zPQLD5AY-pCBefXH(zkMd^lQ3aZ0LHk8{m`-p?_z)`|SK&kcQ3@tKh}s6qVjHA@38C zH0Udp@PbJfBRY?bDOQz*J`a&)@<rV}ii0IOw{{MD&fQ4bcwrQw+cdOm8bT)k)4Ry( zDLM$~-bPl>;T!9HWU~UkGIm5&ym<z9CCn{m)tCZ;xqWBZtIXPewskvTv~C5#@EXhA z0)BxSyes|!Bl`~lU@&tb#z$=XiWkXS-6;Oa<YOlNrgUdd-a&=nVfRmy!Lgrbx^_1Y zQ@eWv1)&wxjIHkh3OEiw#XC}7X3MMjRfbO~c(d;BJ&`@yvmFD<>Yk`?TlRo0ocb>O z4KhYD28$tH$la`e^JTuAKuFEtFnsx3O|<&fglK2oVm17<CP(8}dbZFv<6YpOyf_Py zCY#_j-A%nkJIMX}Kd>de5xar%nzF%}AB>K&POLdqk;fXsaGnj`6%QULmsC<;AJFY8 zNT_YG&Nd9%@XKn)3bTLE!Sr)wRyOUEvO)%uxd0o7QB_WVV>{|+kU$5#noeIPhP&Up zHynftUlO`zHFYJ?J146BwY*C#(UDkt-U*!P`^uUXz<KT0mBnJd1WV)d425CwAQ#u| z?BNKFGTCuKoc=Pk5<=4oJ3?No(1`L{&8l5d8I{N7Ns`sMtx{ff9oqCjBIQ5~T^={{ z9-#&X8M?QBR_sK9fn%2_3+Y*0rG~i}xOc6rE$(gL`;i^g68}-q`u_a96{fE}_}zML zIxBnc>|VF-_3uWpnfU|s>~VIk|9Awm)kze~`iWpyBLZ3g1pmGz5m}<e#NasZF2#-Z zLi~GrLS9gMUk)1VV+TIvi<c(f!RL7{-Kw#)Wb<f$r`H~|xbj8;tBdAU5G1#oEzRSk z&M%yhRg*xQQrqW{2zncbN)_E_1knfbt89K<dIFqREoIBSknB;{_x6RR&!PzEKZXn8 zz5Ap$b3H-=I@swNj9Smb_8725aF(7}Xy@q}7%EBV+;#W!e0qJA`3?@lJ6@{so=KID zr`hL!Y#N!Sbj45LhN&Ojy2bo@d6voGy$Y!JM`H{J4~P9dZ9!+<sO-Z0i4cMuuaAlF z6AJ}>C%=NdH=ULDaLtwP(p9g~QWsL^mc0NFXD}R+<3<543$Z70gCxSQAk33rRf!NF zD}MY58);!JNhA*&1#WdS=lA(}wX?RqDb*T(7%KCU%lVgI1v?-tue66R6a`{dyoLEJ z)7$)N9rlG6E4c#^Qu6tA;d0?uoo*T3$zG|i7|?2KM||BKrz?kN^O*;3%W1N++oUzE zQqKV^Y-eNq0N@$eB)hb|!?X~u;7dK9d}A}uoPt(66)2)AB*m)v`d2JY6Si<?to5;f zYS!4Dr6P!8U|2&mcIM~j&G|Y}U8A_FR{YkycndE9avJCdU7LniDmJcp#0_Qes07J> zeRT^$e_Py!%-<HZME(|HBuvyzGQ*x9&F009J@7|ax$T&<%7T*!4NvWr4m_efxFRLf z8bVl9@w*b*;`o>t!fv~c?JNJT^cl{7ezFlUMatjE+n$UCRn>x|SIHyXSKal<zY&9s zU5zrEVH+}^Inz08&7UD6CmnZ~)lEn{9IUPawHNc;2C)|l-WjqNYxx6I#uW(cACFpP zS^P3jClJ+LZ-Zj!anEhDkktNk$Yv8K1h!=AN3k_T<vc0`2R_;J&*(KpyKlvR1vb5~ zY@B4E>Ds*t+BMeJ;+N<~twgzte$qP3Z)NJN8Qa8InY%-iai}p?eyNO~sJd1xYK|eQ z<-I6MahX;Jmd43YXUQxDSGA=xPVt~=cdWivs%d*Z!Y&pt<a-jaLI-Q6TO}!K_NQX6 zt1;YmcA17bfk_*)TIbJ=x%CNuY-3J3y*JBNGZ{Sj(6H}v|J<0HZxM}%sLbSC8mjWG zlb>H4jo-e0b@*a@^zp^V*GGfnctI0BPT~d3gb4ybe44?5>!cQoIa5YYxTHog92pT2 z84D@<ZMmLCx*a!*Lpv#0T{;;)FvZbD<*khW=`INjEo?#9@@uvt441KgjYpgpW0~^` zK1xjqj*kOejA`;aUq_>!AgtAYkcBnaBwfXhbR`zIvhwkk7*+D*4wXRPsFr89s>NEE zvQJNMRg+${RLkStTh&4fS`xDR?Dlntd5V?n?%l3CS`<(<d;Q%zjFOZSvRl2~+l@Gv zBC>P6C(mx(J2l#mpEV|b2h^Go6w4~kdP-2R-LEpQc^oq(bO7?->5(hj3NQ^&s<}Xs zplH(X2sV@eB(^Oab$<Io6+9muxYzQ5cfGWbz3n~7hLMr*-sQJ%%-1QPj0zV6JXT#S zprNS>^{F?317BcL?{Mdl9Ybu#fj2K@MsSTA%&w<XtItf6XORwnVR|(mcgn#|VHLAB z;82&N?Ay1UlDWOpg~%(xPO}?kbs$6A24??wRKa~B#nWzj#-;of#_Z1r`XOc@{}NM4 zqx~v@Ut3u$F9$L&g#l-E*fXM0Rien4247bLJ4TbT2r1x@V4ao&h{ZeB^T@YvB)RIK zuh|%iMf1ET{%^m3QEmzGf)=q&@^6Mk#=JfxGJqk&v>a0gz(S_!$<ds(+Q&CV_6`oA zCfKn^G~k?*20Q#nwRRe{-5;#L=1Lbglm|gm=x=j~hOOHLFr+Nm={Z%~t{cJ1A<M?< zC+JiXXn^v0BBfQRsUuAZx{G-ZIy-2st#&)kz^rxy3y=nXEkPJ^?@`Xa0#;+X<9qTO zQ2(@SEPS-`-R~WgkHj%~&>L0`HiB=g_)a${=w%pH5FX=!HzV^vz0A_Ha=z?l&?>@Q zxNp}UTvQuu)a8Aj{**c4_owXZQTDGbKq4Zbv-S{xn#5^&SUxWlqEh+rVLLx>0X&+P zx$(FVy9Ql<8N{_^gxG1Pg1%2{eTUijrVd1jDYE$`{YqZDDO8Qo`p6kzQbuu{Oy+0T z@Tl1(Kl#^FMBD40POq0O2gN*q2q)P6?b~WSEba@-+}8eNVy-s?CJ_gtWx54)9Qjxp zIFYCL(AlMWI*8xEL;32*M*xA)A>~ZoSRq5GLmqyALr;+3meUr#j7J72EHD0=7y0Ql zQ?FBEnTY;iRit#12n0-vNt~3Bf~4@i9hLyG>Xz7Tn)2`!9}MeQF9uCc%1MxCe72?h zK-8UNSM!7T5&Y-Tm+VyZr~5C9i+BJ*AVhk)$RAN3#X(_y^L0#E1drl}sh*7w<AZYk z39ui3L?VwfaRxq2WBfKim*xTX=FvrdK0Hl}?CF!_LvQ+*_phdxFaF1ipI*TKUVa(H z&1UH}A){@Ba0p;23d5%N_{E>!Jh2|a_n)U)Uo3JesFusJToi*xj{x1W16XhcJfU~< z`J)R$59;9SQ8symB#DGaK6(q`xJ8FE!N6;OTC9ZEatH0M;=nd2njggJLa_ebyb3^* zkKmFrk7tnk+qYYBqS;`k({y<?majMB3^@}QvER)xV}lh#;7#BR!crLRKfdSz_}v6; zngxmCw|rTfWN#1|3L$(D{beCq0wZbnX?&6)G=mfYke?&8m<+FHm}ouA(L;mx{8in5 zo#6AKkbi>h?(^Z!1e56kR!7}m(<$QD>{C51WJ^uMKhOPF%N<b#q;Jvgi{(`WMYd=e z;xmR?hV(64h9VwJ%^j9=Xbt=hrsZbtR=p(z#=lZm9U8Q{%pRXBGrJ39b4IyPYBSQ} ztm?TQ<4Opf&+t|76!_O-yi6ifI|B57@r;4PUOED3y${*N>zjoTzsg)1bRlqo{q`;G z3YjZT`|WizwY_QHR>nd4n84~1ossi(1Z}FTs;R}vEO|SM#TWuiv>0=y0TX)zr9-qT zJDnzzn0i*~B12zgJ5kVlaRChVUKIi}a(ha)Y%?^oN1^WM?B3iCX1@pJrz5?8>-8%n zR)`RB13bf^O6Zlqb}?P4l*~=4gnyCy8!MGUw`rv~bTyUMU!ziajY{w98Wohw;v8K8 zeZ+_rcfwl$6M-A%7N=TvBGA^J`Ai&OvkrQ6+P0pX(E6CTaMAL%J`8QH-#sCPEh&N< z`EN7moVS(d#V>OiVtAjjY;ib$_$5#yuke>Zb$4<fgOUEfvBj%}shL>6G_Pkw>85r5 zOOwhrRn_p3nnq=W)!nyztrsx46fpUH2^iuCIAK@<Vk3$n+I8Lg^by@hpa5UrfMTR8 zWy~l>=@Qrb{-IuLSZ)DwzAcz}>4BNs2<C<XCDXU;^Z?ns@Q}>`lYk+An77!kt}YG0 z?M-92<mq&NVM%jJsuAUsVRbHe(}5{U0J)?;d;FC717N;m#EK(S`4OpVPNcFey)Nf# zifbUcR?e4S!PIhD7AqaKNTGla|K36U>YzU~YCLMp4~*b=PXH#_(580%52$;L#4L}5 zWQba((kFl{&`zu`(mi5-4?OVOD~k&fwzxMm`a|xjA=c4Z3lgJF^i(w59_p^0=Qr8J zxI7G1jEW(8N%V$G*VjV~=6pI`oBfg#g5#=2^GjY{cHnUgEEX{cn>bsNWhG^SfJ(3# zva$Kz+7T%Yci79_hH)!Ixj^WONDKruO1AUCI2O=GjUz*GIsfv1GtCffu7|XRCQoD~ zYU*Tpq^Lj@Ea-!P0csb;6qyYWeR$jry9pcLmW@J(#t5z=I3VVysLGR#jd>{A^9mcQ zRJUd4%WXG*IhlT!upk>kfJ7TYfUIke7ks$4X?0WJ5m{y8m)zMYA3QiNF?dK4no64y zZ~Zc@Nd_+?lUI6w#llm9%x6&qxd|M%>T44tS<d~8S72;qL)DX|th+k5ZE&Miu3Uid zf?&oT!B|;0Vel{K*VD-x_F-F6+&LhK3Cx0{GM#3dY5B5&F-rLpz$Fe8ZUs1PUYgpd z8dH;{sv$$M$!pe*H|MI2JHuFG-*=55>QW2xnNhuzQzEl}VG1mlP>=@Sj>zL}IJSd4 zX}P%{JP@aK_x$$i{o5CZ?~cZQJN)?b_}%;Q&xc1J-+%ZgW>7;rqYT59xT8L(3dU?a z^?f=hqc?H6bHBA9EiB>>894A%dCAwGeszQ-G%u*TmN?yPDL6MhPkf-j_P{tG^L+g_ zpQb@Tj)NM1QoI=&YI#R<RkOcUYY|ZtdfhATPBOA|p=IyjJp(da6*>L(1|U|!mosq$ zB8$c?kKhK#*NR9%A<*RUSDuc02$3bSD7>kjeGbMl4kqxr3ogx;zwVP~Uib?Hu0j)( z{OTjP9%EP4%Vqj!_-Er0`#;e++H>(D$8na3u?~HIuwz76LLc&Zr&wg!*`=e~LGE7V z_;~4IB8Orhgv&W9D8E)a+JXOY2SloHPpj2=K1-)&;E|Q^CBh84&+Y`lXiaXSjuaLB z`~Uto+okCCr`W1RcGtt~UAI?<aklnrqw5lONgYePF-Sbt-lcjm-plmRtr3s6eD-YX zePy+OVOK>*XT<xxd&Rn*H66p~H}>Z|J=++8;>a)3VwJ){oRi*;`Gv$U%XL?k4RB4~ zjGF|{YWGXQgdJr>$w=gf2jq>~*1+HykXNh84A*T)IPkahfmVE4CxY6IkU12B_ocM~ zcDs*G!P<DtpvjG+X3)e!8B~~TokCpJ0jUjtG87(=2N{L^L%LW@zqUFZGEL|h(}ecW z{YIYBES=h-E%o~JQXGiAj~J8AOH`e1>rI>X^xIHF8zzB?u+C!}gmt_36gJENVVJ4y z2St@Mft7viY-=64lW7$Oo{_}9qU$4&cRNI>`Dy-QBN&k2?(E=_TPa0<g*=DitCrt? ze7aeigntMt@=11@ZUKbf5HN<))ae9+3DHdJs3tqGnGRMB!Zy%p?Tgkvx?0Sk4UMW# zIG|V^cCL!fbpg9Np;-gM%1~5x`YA61AFk$q_fpql%7~-Md@873aax`TTAI**I)|8h z8cud`6BYBRxN3Zt_28eiak6%yXM1aZX9ldi#WPSb38Xpndg#sVfwra#6C8+dVOOG@ z(gzl1j|>m3`%B<GLpUiy+|k*jBb&{h!9Tj?{(9(ktBcb`HM6ShL2bh|^+y=^52u`w zE_@=k>nY;pO*3v0A@b)2<_B?s5IR^aey|%~sYrU_CgC#)#zr3hpFs4#&_Kz5ig*|j zvgoVoR96aQ(RetA3bLXo%|7EyFEr3mFM8HED2kS#Y{8H?1!X}8gP(x<8>|<i7s@bE z3dcHk{IkpKGYkjZWvo;DEL|?=UpU-NiB39i#agOz*SCmckPPtrEq1YG$3QUP!+<n% zG^xkO>TlUFn<|1{Q5X3v*~lP&I1Lq*kV!>vi%csrbar9ik<=o9tC!)4=tkk(gsf|a zny>Nx5!R_9(LQo$+9I6puRvqbLQ;LWn<gFnUWe4XUV@PZMo8JvSrvmX6c4AO$10K^ zOgIyR*YCOaezC<!(PB5y74);gz-2c%-gLzPHtWqV;y(WVx~%C2N9ovq1cxPkkAA%_ zF1-NABwlpfcO!&V4i6rO;kDS&iAXNR`_NAG4ubRKXQ?!(W|h-&Wp*A4Wk$NUiPCf) z7mU8l$d+KWT8L!w#(PPL9NxpKa=#MVq^94zA4-14`>((o2kynuN05+yUM)OpVQuOq z9Rz(TGkc~%z0xp2x=0*<DG!}U%2bmOnz!3yb%EK3sOO>xPy*6K(LvHmQz3ue4-F9e zU@jPnU~(=M*=Iz{K`JP|qNYOqydNqMJp1Nq>XV?RlBD9J{AmbbDfdGQJV=5`mRLm{ zF~7ig%qI&nNs<onPe~2^Xims&VQtu@;;woo+)6LO-_TN2$PfB|OlpM>qZ5H!pa^B& z{0KG^bY398l}?4!i?|VjWBPiX&~7LzMkl$=53GK@R7(=1qMZNtqgESVRhjUvQoU{L z6bMf)kXgi1g*E`)az*U64~W&xyg(kVYfPBNfYCZ3dm{`bB7GdMSqgiHF#hp07Cz9g zIFpORcp^6G)A{^=(_lA|52=I4V#bV)Pn2Od%{*{>EWl(*EVtL`*=38Xg1~8*P8JUy z%&?a&NNTU!31EdT8Juhh8Z2px*44Lai~}vM(NUJnN3&46q9%XvV1AGtyJb&0*|A&h zWRM?p`h)pFe^3&2`!o8lNqMePM8+PF%NNqXe_<k^+*Ztgxh}(w`2&=|gBFu2)*yh- zsPq$-Zn1*vdr3aZz~l6VvO8_@19y8kd+=Z<AGQGoW|894Gd-bhD3{DS9Vjbtd!chU zFIu^v&|D8H{PfPI^CH8eRNPi_1B+W7%FkQIZ(Pb2OjYMV@D6CpVKmQ*%Kq{~9OoeH zm)1=hfuIzBlrkmj(zOk&|C6#?ET(zciXX*o{qVN+C~4>beYUcn9hKv<JZ~|0a(78< zW$N`Q>;$J+rFGV8xz^Vzu9qiXMx|wgJ=omp_3U2S-LV@sMzSzSgWwx!dR<;BDyDKU zYacr;N4ySPhAo8~9Ty#K+l=)`6q%(L08i;zM1`_{aU(1Fo>yl|rJj~5o{IuyD{{)q z4?#o!>vgvL8sYzsV)pDAJ^K;fJ!ASLNG>6cAe`!H>!zc;Taf`_OvQPSmO4FBVnQ4V z5hLiKD%h3v4J5zA)E0eABGCCC(GdlGk(XH^Bxxb`q>c<i($h|5o#IO_W5XBf#PK#= zFt@XRPByuy$%br|2cn3Gh3lXp)Tl6me3nHeYZqd83)H4SB>{~^E^evk>2wPEC7Fz& zVUS^9Og*1|26l0620POL8R}C<`va)rpUJQmuQ1}&mQK-tu^<~idG>G6F&qFCvC67Z zj)r=KWp$gT>>kLs6T4IQ*S1}=nvckRhJ$H;rs9@I<bXW5>sdK;?lm6j2^-@r-$OT_ zf!V7c`@}2}4VSk%wANF>YF*m_Y-6xbpe=lWf1@@q;amHFe&7c|zs%!Fdt&N=GTFib z??UcZ_-Bi6Q~nmtC~P6hiEcAsFD5I;EUNZInMA2-_;col_TV_?k48lgWxZi4L_KAH zDNez5X*owJNbTV)FW(jyiehr503Y+;meV6JH8MwZCXg$idUxQhH}l)%mCqNZZu`9p zwK8=Zu(i$BXv(H&bV)MYU$G%^?dP%tLrq&dtTBQjhO53Oy=a$1876JF-MtQ<)ag?T zPQ?m$7w+~FD^@~Bn`Uh3b!$NuC-B05r%&Z#C1RrzIqXjIO-c$@kYa}y&h6jyxXE>O zt|#5R3l?$aiuy{|vz847Yc)>G)6i$nphBAQR*eg@jBv3;<_r#G&LQF4L9Z+VIA%cQ z;h6<dr@|Dw%Z$<Gm=@Btg)Gf}US{IXgWdu8*`upT-iaTY;t%8QWqCD?lX>DHRUa;{ g^UvGWfqZo@+@*gypL~U7DC*e%KT!GL;<zse0R6z^S^xk5 delta 48153 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 V#q=7tA@s5L{{TFFWX+o=2mo}>9AE$d diff --git a/homeassistant/components/frontend/www_static/home-assistant-polymer b/homeassistant/components/frontend/www_static/home-assistant-polymer index 84e87e7554b..988ac002816 160000 --- a/homeassistant/components/frontend/www_static/home-assistant-polymer +++ b/homeassistant/components/frontend/www_static/home-assistant-polymer @@ -1 +1 @@ -Subproject commit 84e87e7554b9cd9acfc63ecadcb3e41ccd89eb30 +Subproject commit 988ac0028163cfc970e781718bc9459ed486ea61 diff --git a/homeassistant/components/frontend/www_static/service_worker.js b/homeassistant/components/frontend/www_static/service_worker.js index 48c21a590a9..e8c6a4989d8 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=[["/","e7ef237586d3fbf6ba0bdb577923ea38"],["/frontend/panels/dev-event-f19840b9a6a46f57cb064b384e1353f5.html","21cf247351b95fdd451c304e308a726c"],["/frontend/panels/dev-info-3765a371478cc66d677cf6dcc35267c6.html","dd614f2ee5e09a9dfd7f98822a55893d"],["/frontend/panels/dev-service-e32bcd3afdf485417a3e20b4fc760776.html","d7b70007dfb97e8ccbaa79bc2b41a51d"],["/frontend/panels/dev-state-8257d99a38358a150eafdb23fa6727e0.html","3cf24bb7e92c759b35a74cf641ed80cb"],["/frontend/panels/dev-template-cbb251acabd5e7431058ed507b70522b.html","edd6ef67f4ab763f9d3dd7d3aa6f4007"],["/frontend/panels/map-3b0ca63286cbe80f27bd36dbc2434e89.html","d22eee1c33886ce901851ccd35cb43ed"],["/static/core-22d39af274e1d824ca1302e10971f2d8.js","c6305fc1dee07b5bf94de95ffaccacc4"],["/static/frontend-5aef64bf1b94cc197ac45f87e26f57b5.html","9c16019b4341a5862ad905668ac2153b"],["/static/mdi-48fcee544a61b668451faf2b7295df70.html","08069e54df1fd92bbff70299605d8585"],["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","89313f9f2126ddea722150f8154aca03"]],cacheName="sw-precache-v2--"+(self.registration?self.registration.scope:""),ignoreUrlParametersMatching=[/^utm_/],addDirectoryIndex=function(e,t){var a=new URL(e);return"/"===a.pathname.slice(-1)&&(a.pathname+=t),a.toString()},createCacheKey=function(e,t,a,n){var c=new URL(e);return n&&c.toString().match(n)||(c.search+=(c.search?"&":"")+encodeURIComponent(t)+"="+encodeURIComponent(a)),c.toString()},isPathWhitelisted=function(e,t){if(0===e.length)return!0;var a=new URL(t).pathname;return e.some(function(e){return a.match(e)})},stripIgnoredUrlParameters=function(e,t){var a=new URL(e);return a.search=a.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("&"),a.toString()},hashParamName="_sw-precache",urlsToCacheKeys=new Map(precacheConfig.map(function(e){var t=e[0],a=e[1],n=new URL(t,self.location),c=createCacheKey(n,hashParamName,a,!1);return[n.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(a){if(!t.has(a))return e.add(new Request(a,{credentials:"same-origin"}))}))})}).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(a){return Promise.all(a.map(function(a){if(!t.has(a.url))return e.delete(a)}))})}).then(function(){return self.clients.claim()}))}),self.addEventListener("fetch",function(e){if("GET"===e.request.method){var t,a=stripIgnoredUrlParameters(e.request.url,ignoreUrlParametersMatching);t=urlsToCacheKeys.has(a);var n="index.html";!t&&n&&(a=addDirectoryIndex(a,n),t=urlsToCacheKeys.has(a));var c="/";!t&&c&&"navigate"===e.request.mode&&isPathWhitelisted(["^((?!(static|api|local|service_worker.js|manifest.json)).)*$"],e.request.url)&&(a=new URL(c,self.location).toString(),t=urlsToCacheKeys.has(a)),t&&e.respondWith(caches.open(cacheName).then(function(e){return e.match(urlsToCacheKeys.get(a)).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,t&&e.waitUntil(clients.matchAll({type:"window"}).then(function(e){var a,n;for(a=0;a<e.length;a++)if(n=e[a],n.url===t&&"focus"in n)return n.focus();if(clients.openWindow)return clients.openWindow(t)})))}),self.addEventListener("notificationclose",function(e){notificationEventCallback("closed",e)}); \ No newline at end of file +"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=[["/","8fc0e185070f60174a8d0bad69226022"],["/frontend/panels/dev-event-f19840b9a6a46f57cb064b384e1353f5.html","21cf247351b95fdd451c304e308a726c"],["/frontend/panels/dev-info-3765a371478cc66d677cf6dcc35267c6.html","dd614f2ee5e09a9dfd7f98822a55893d"],["/frontend/panels/dev-service-e32bcd3afdf485417a3e20b4fc760776.html","d7b70007dfb97e8ccbaa79bc2b41a51d"],["/frontend/panels/dev-state-8257d99a38358a150eafdb23fa6727e0.html","3cf24bb7e92c759b35a74cf641ed80cb"],["/frontend/panels/dev-template-cbb251acabd5e7431058ed507b70522b.html","edd6ef67f4ab763f9d3dd7d3aa6f4007"],["/frontend/panels/map-3b0ca63286cbe80f27bd36dbc2434e89.html","d22eee1c33886ce901851ccd35cb43ed"],["/static/core-22d39af274e1d824ca1302e10971f2d8.js","c6305fc1dee07b5bf94de95ffaccacc4"],["/static/frontend-61e57194179b27563a05282b58dd4f47.html","0a0bbfc6567f7ba6a4dabd7fef6a0ee7"],["/static/mdi-48fcee544a61b668451faf2b7295df70.html","08069e54df1fd92bbff70299605d8585"],["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","89313f9f2126ddea722150f8154aca03"]],cacheName="sw-precache-v2--"+(self.registration?self.registration.scope:""),ignoreUrlParametersMatching=[/^utm_/],addDirectoryIndex=function(e,t){var a=new URL(e);return"/"===a.pathname.slice(-1)&&(a.pathname+=t),a.toString()},createCacheKey=function(e,t,a,n){var c=new URL(e);return n&&c.toString().match(n)||(c.search+=(c.search?"&":"")+encodeURIComponent(t)+"="+encodeURIComponent(a)),c.toString()},isPathWhitelisted=function(e,t){if(0===e.length)return!0;var a=new URL(t).pathname;return e.some(function(e){return a.match(e)})},stripIgnoredUrlParameters=function(e,t){var a=new URL(e);return a.search=a.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("&"),a.toString()},hashParamName="_sw-precache",urlsToCacheKeys=new Map(precacheConfig.map(function(e){var t=e[0],a=e[1],n=new URL(t,self.location),c=createCacheKey(n,hashParamName,a,!1);return[n.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(a){if(!t.has(a))return e.add(new Request(a,{credentials:"same-origin"}))}))})}).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(a){return Promise.all(a.map(function(a){if(!t.has(a.url))return e.delete(a)}))})}).then(function(){return self.clients.claim()}))}),self.addEventListener("fetch",function(e){if("GET"===e.request.method){var t,a=stripIgnoredUrlParameters(e.request.url,ignoreUrlParametersMatching);t=urlsToCacheKeys.has(a);var n="index.html";!t&&n&&(a=addDirectoryIndex(a,n),t=urlsToCacheKeys.has(a));var c="/";!t&&c&&"navigate"===e.request.mode&&isPathWhitelisted(["^((?!(static|api|local|service_worker.js|manifest.json)).)*$"],e.request.url)&&(a=new URL(c,self.location).toString(),t=urlsToCacheKeys.has(a)),t&&e.respondWith(caches.open(cacheName).then(function(e){return e.match(urlsToCacheKeys.get(a)).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,t&&e.waitUntil(clients.matchAll({type:"window"}).then(function(e){var a,n;for(a=0;a<e.length;a++)if(n=e[a],n.url===t&&"focus"in n)return n.focus();if(clients.openWindow)return clients.openWindow(t)})))}),self.addEventListener("notificationclose",function(e){notificationEventCallback("closed",e)}); \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/service_worker.js.gz b/homeassistant/components/frontend/www_static/service_worker.js.gz index 8b501e1db0e7b1479276ffd73b11ec8e8320bafe..e73741e44dc8bb89b14e0f04d7360627a9b0e9f3 100644 GIT binary patch delta 650 zcmV;50(Je95|k1KABzYGSlh7%lL3D+Ekht#60%UIAz?AkR4BMgb4t^YQs=Xe8+Fr} zrN&EMLD`NKT#mrTe56U9#i7V~%HvcgOo}j#MU=%rq9oEuhXU%ML~0tdC?O(Gv{G?G zWE92_g&Aiwm8bO-m99q-OA{V360=OoG*u~MQm0DFD4{8n=|+uGDTy@&NFYtjd9Ji# zI?pmnd6Hy#q)w}8p}8z1j3A;ys)%c)<1C2@;}OtM#9Fd6Wb9rO6D$lvrnJZzpjCo% zmJ3NmOn5?mq{(mtql_j@<vEYClVk!qf5MQX2MMKOqY4l`&?(a~7c7l*t|FxvV!=}# zqpQbNVOtqRB9uIhXqHL=S*R%!DoPci5l1m(`4%*ap#hA1l;Kv$L(DuP5$;5aID$23 z7NA0oW!=DtQWfPK1!6*}jK-3aD5OBboDoe`7JO|{u1upa(UK?t^ePcLj}>5^e`zi; z=ViPncjLe)C6F+ZV~le_S&~K^;mD{+GR#jMvyIgu4~5V&O%NI;Y^E!Ol4-<>hX8C( z`a%_>7^@0XFphajM4D!p>>7O#jOK~bY#ZA!3)39;DNVG>DJsF2G|$s8QCX5Do#2ht zXmmSnYEhed{I2^M{aTkQFh*Nse<PYpnTaS)(Mm#Mo+mM;J?DyGNk%^t^|F}F%~}>B zs701(LIuc-#E}j|phU=sQc7t2Gg+@d6|2Qsn8ro`2yuu=OR8m(rAbJDF-#Fa**_EZ z4rZ&8H*0BJMw;chN`&A#A$h8~APE<lf(#Q|?n*0c-yUmzX&*);r{D2!5wNUgC?_U) k9!4TVh|nO;fM$~{1aAaNv9aj0p9E|K2<2~+%9RuV0JCNiRR910 delta 649 zcmV;40(SkB5|a`JABzYGrPZ+plL3E#fu<2lvQ$M{=v44fD3LIh(+GH!IiG#psGH6# zHD2-x%66>aas)Q!BTe!w4n@vW9;Z5CQiN$NqAUgyC6P`#6i^Q(Qq!142@!dsm5LK0 zqcDaj%s8W|JgujwbUlh#n(&B`m}OF?sY)4>I#p6e2~C+yH)@nhNvtVA0%1(fbEOs2 zd6rSilO)R{by`ge&1E5B1Q8WdMO-T#XGu&LkAQ|E){><mWA~bvU||?CrA5vFtrDEG zTu3Tn!V~f%O@<p7Wi(+b&k^F2Wdb^XN<!;FLaErO0z?mV%5=;HOCz1DNGXO`@Knd> z>Ty-rRz{HsB~K%orBXl^YRZI)QiW*5Q4CqW1&v~803#n|xE1n{WS9pCcOpd`!5TCR zP$9>%ZeT>IigJzuF`-mOW64PrQXpZ@h^8tFzP2b=rcsz^NfZEjl?a{33NX)qG?$q3 zGTxKBabT2i^fne6Q!<v4<c!NW(HR43Gg)kNH<u(0NsboU&}J#+Di4!1&A6l_iNv1t zg(^mIrX{9e9P^Y2+=t1o(Feh3o+!<>u?@2@&2gX7M5~+%q46cn^E6CUmSjmMcw;ph z-Hw}D)TSQ4>wZSR)};!J(H7Z%h~`peB8pQCAR#f&lNi&Ub49Quqo0X-S<L2UEel=O zBFi+P0%S(wNQWU%B4k7<B{cq-tXH6l)nYA7V<P}8qmYqYQY{g`BqYEXrU;<yp9y;h zvsKBPwKOgx&GK9&LU5gsJk?x~go{i;hKVhAr4_bsk2Sxv4<nM(@Ax+nSXMKX6O%j- jBatCQXb{JcXOk@iZv=|@8S1m31Z)Hd3Td&xl@tH~5`GZ( From f87016afe6586b4cea80c7347c7d259c35f1997a Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen <paulus.schoutsen@mycase.com> Date: Mon, 9 Jan 2017 01:38:27 +0100 Subject: [PATCH 122/189] Update MDI --- homeassistant/components/frontend/version.py | 2 +- .../components/frontend/www_static/mdi.html | 2 +- .../frontend/www_static/mdi.html.gz | Bin 181452 -> 184175 bytes 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/frontend/version.py b/homeassistant/components/frontend/version.py index 09f6803282b..3af14628008 100644 --- a/homeassistant/components/frontend/version.py +++ b/homeassistant/components/frontend/version.py @@ -3,7 +3,7 @@ FINGERPRINTS = { "core.js": "22d39af274e1d824ca1302e10971f2d8", "frontend.html": "61e57194179b27563a05282b58dd4f47", - "mdi.html": "48fcee544a61b668451faf2b7295df70", + "mdi.html": "5bb2f1717206bad0d187c2633062c575", "micromarkdown-js.html": "93b5ec4016f0bba585521cf4d18dec1a", "panels/ha-panel-dev-event.html": "f19840b9a6a46f57cb064b384e1353f5", "panels/ha-panel-dev-info.html": "3765a371478cc66d677cf6dcc35267c6", diff --git a/homeassistant/components/frontend/www_static/mdi.html b/homeassistant/components/frontend/www_static/mdi.html index c3d73386f8d..ce1d5d24574 100644 --- a/homeassistant/components/frontend/www_static/mdi.html +++ b/homeassistant/components/frontend/www_static/mdi.html @@ -1 +1 @@ -<iron-iconset-svg name="mdi" iconSize="24"><svg><defs><g id="access-point"><path d="M4.93,4.93C3.12,6.74 2,9.24 2,12C2,14.76 3.12,17.26 4.93,19.07L6.34,17.66C4.89,16.22 4,14.22 4,12C4,9.79 4.89,7.78 6.34,6.34L4.93,4.93M19.07,4.93L17.66,6.34C19.11,7.78 20,9.79 20,12C20,14.22 19.11,16.22 17.66,17.66L19.07,19.07C20.88,17.26 22,14.76 22,12C22,9.24 20.88,6.74 19.07,4.93M7.76,7.76C6.67,8.85 6,10.35 6,12C6,13.65 6.67,15.15 7.76,16.24L9.17,14.83C8.45,14.11 8,13.11 8,12C8,10.89 8.45,9.89 9.17,9.17L7.76,7.76M16.24,7.76L14.83,9.17C15.55,9.89 16,10.89 16,12C16,13.11 15.55,14.11 14.83,14.83L16.24,16.24C17.33,15.15 18,13.65 18,12C18,10.35 17.33,8.85 16.24,7.76M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z" /></g><g id="access-point-network"><path d="M4.93,2.93C3.12,4.74 2,7.24 2,10C2,12.76 3.12,15.26 4.93,17.07L6.34,15.66C4.89,14.22 4,12.22 4,10C4,7.79 4.89,5.78 6.34,4.34L4.93,2.93M19.07,2.93L17.66,4.34C19.11,5.78 20,7.79 20,10C20,12.22 19.11,14.22 17.66,15.66L19.07,17.07C20.88,15.26 22,12.76 22,10C22,7.24 20.88,4.74 19.07,2.93M7.76,5.76C6.67,6.85 6,8.35 6,10C6,11.65 6.67,13.15 7.76,14.24L9.17,12.83C8.45,12.11 8,11.11 8,10C8,8.89 8.45,7.89 9.17,7.17L7.76,5.76M16.24,5.76L14.83,7.17C15.55,7.89 16,8.89 16,10C16,11.11 15.55,12.11 14.83,12.83L16.24,14.24C17.33,13.15 18,11.65 18,10C18,8.35 17.33,6.85 16.24,5.76M12,8A2,2 0 0,0 10,10A2,2 0 0,0 12,12A2,2 0 0,0 14,10A2,2 0 0,0 12,8M11,14V18H10A1,1 0 0,0 9,19H2V21H9A1,1 0 0,0 10,22H14A1,1 0 0,0 15,21H22V19H15A1,1 0 0,0 14,18H13V14H11Z" /></g><g id="account"><path d="M12,4A4,4 0 0,1 16,8A4,4 0 0,1 12,12A4,4 0 0,1 8,8A4,4 0 0,1 12,4M12,14C16.42,14 20,15.79 20,18V20H4V18C4,15.79 7.58,14 12,14Z" /></g><g id="account-alert"><path d="M10,4A4,4 0 0,1 14,8A4,4 0 0,1 10,12A4,4 0 0,1 6,8A4,4 0 0,1 10,4M10,14C14.42,14 18,15.79 18,18V20H2V18C2,15.79 5.58,14 10,14M20,12V7H22V12H20M20,16V14H22V16H20Z" /></g><g id="account-box"><path d="M6,17C6,15 10,13.9 12,13.9C14,13.9 18,15 18,17V18H6M15,9A3,3 0 0,1 12,12A3,3 0 0,1 9,9A3,3 0 0,1 12,6A3,3 0 0,1 15,9M3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5C3.89,3 3,3.9 3,5Z" /></g><g id="account-box-outline"><path d="M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M16.5,16.25C16.5,14.75 13.5,14 12,14C10.5,14 7.5,14.75 7.5,16.25V17H16.5M12,12.25A2.25,2.25 0 0,0 14.25,10A2.25,2.25 0 0,0 12,7.75A2.25,2.25 0 0,0 9.75,10A2.25,2.25 0 0,0 12,12.25Z" /></g><g id="account-card-details"><path d="M2,3H22C23.05,3 24,3.95 24,5V19C24,20.05 23.05,21 22,21H2C0.95,21 0,20.05 0,19V5C0,3.95 0.95,3 2,3M14,6V7H22V6H14M14,8V9H21.5L22,9V8H14M14,10V11H21V10H14M8,13.91C6,13.91 2,15 2,17V18H14V17C14,15 10,13.91 8,13.91M8,6A3,3 0 0,0 5,9A3,3 0 0,0 8,12A3,3 0 0,0 11,9A3,3 0 0,0 8,6Z" /></g><g id="account-check"><path d="M9,5A3.5,3.5 0 0,1 12.5,8.5A3.5,3.5 0 0,1 9,12A3.5,3.5 0 0,1 5.5,8.5A3.5,3.5 0 0,1 9,5M9,13.75C12.87,13.75 16,15.32 16,17.25V19H2V17.25C2,15.32 5.13,13.75 9,13.75M17,12.66L14.25,9.66L15.41,8.5L17,10.09L20.59,6.5L21.75,7.91L17,12.66Z" /></g><g id="account-circle"><path d="M12,19.2C9.5,19.2 7.29,17.92 6,16C6.03,14 10,12.9 12,12.9C14,12.9 17.97,14 18,16C16.71,17.92 14.5,19.2 12,19.2M12,5A3,3 0 0,1 15,8A3,3 0 0,1 12,11A3,3 0 0,1 9,8A3,3 0 0,1 12,5M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z" /></g><g id="account-convert"><path d="M7.5,21.5L8.85,20.16L12.66,23.97L12,24C5.71,24 0.56,19.16 0.05,13H1.55C1.91,16.76 4.25,19.94 7.5,21.5M16.5,2.5L15.15,3.84L11.34,0.03L12,0C18.29,0 23.44,4.84 23.95,11H22.45C22.09,7.24 19.75,4.07 16.5,2.5M6,17C6,15 10,13.9 12,13.9C14,13.9 18,15 18,17V18H6V17M15,9A3,3 0 0,1 12,12A3,3 0 0,1 9,9A3,3 0 0,1 12,6A3,3 0 0,1 15,9Z" /></g><g id="account-key"><path d="M11,10V12H10V14H8V12H5.83C5.42,13.17 4.31,14 3,14A3,3 0 0,1 0,11A3,3 0 0,1 3,8C4.31,8 5.42,8.83 5.83,10H11M3,10A1,1 0 0,0 2,11A1,1 0 0,0 3,12A1,1 0 0,0 4,11A1,1 0 0,0 3,10M16,14C18.67,14 24,15.34 24,18V20H8V18C8,15.34 13.33,14 16,14M16,12A4,4 0 0,1 12,8A4,4 0 0,1 16,4A4,4 0 0,1 20,8A4,4 0 0,1 16,12Z" /></g><g id="account-location"><path d="M18,16H6V15.1C6,13.1 10,12 12,12C14,12 18,13.1 18,15.1M12,5.3C13.5,5.3 14.7,6.5 14.7,8C14.7,9.5 13.5,10.7 12,10.7C10.5,10.7 9.3,9.5 9.3,8C9.3,6.5 10.5,5.3 12,5.3M19,2H5C3.89,2 3,2.89 3,4V18A2,2 0 0,0 5,20H9L12,23L15,20H19A2,2 0 0,0 21,18V4C21,2.89 20.1,2 19,2Z" /></g><g id="account-minus"><path d="M15,14C12.33,14 7,15.33 7,18V20H23V18C23,15.33 17.67,14 15,14M1,10V12H9V10M15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12Z" /></g><g id="account-multiple"><path d="M16,13C15.71,13 15.38,13 15.03,13.05C16.19,13.89 17,15 17,16.5V19H23V16.5C23,14.17 18.33,13 16,13M8,13C5.67,13 1,14.17 1,16.5V19H15V16.5C15,14.17 10.33,13 8,13M8,11A3,3 0 0,0 11,8A3,3 0 0,0 8,5A3,3 0 0,0 5,8A3,3 0 0,0 8,11M16,11A3,3 0 0,0 19,8A3,3 0 0,0 16,5A3,3 0 0,0 13,8A3,3 0 0,0 16,11Z" /></g><g id="account-multiple-minus"><path d="M13,13C11,13 7,14 7,16V18H19V16C19,14 15,13 13,13M19.62,13.16C20.45,13.88 21,14.82 21,16V18H24V16C24,14.46 21.63,13.5 19.62,13.16M13,11A3,3 0 0,0 16,8A3,3 0 0,0 13,5A3,3 0 0,0 10,8A3,3 0 0,0 13,11M18,11A3,3 0 0,0 21,8A3,3 0 0,0 18,5C17.68,5 17.37,5.05 17.08,5.14C17.65,5.95 18,6.94 18,8C18,9.06 17.65,10.04 17.08,10.85C17.37,10.95 17.68,11 18,11M8,10H0V12H8V10Z" /></g><g id="account-multiple-outline"><path d="M16.5,6.5A2,2 0 0,1 18.5,8.5A2,2 0 0,1 16.5,10.5A2,2 0 0,1 14.5,8.5A2,2 0 0,1 16.5,6.5M16.5,12A3.5,3.5 0 0,0 20,8.5A3.5,3.5 0 0,0 16.5,5A3.5,3.5 0 0,0 13,8.5A3.5,3.5 0 0,0 16.5,12M7.5,6.5A2,2 0 0,1 9.5,8.5A2,2 0 0,1 7.5,10.5A2,2 0 0,1 5.5,8.5A2,2 0 0,1 7.5,6.5M7.5,12A3.5,3.5 0 0,0 11,8.5A3.5,3.5 0 0,0 7.5,5A3.5,3.5 0 0,0 4,8.5A3.5,3.5 0 0,0 7.5,12M21.5,17.5H14V16.25C14,15.79 13.8,15.39 13.5,15.03C14.36,14.73 15.44,14.5 16.5,14.5C18.94,14.5 21.5,15.71 21.5,16.25M12.5,17.5H2.5V16.25C2.5,15.71 5.06,14.5 7.5,14.5C9.94,14.5 12.5,15.71 12.5,16.25M16.5,13C15.3,13 13.43,13.34 12,14C10.57,13.33 8.7,13 7.5,13C5.33,13 1,14.08 1,16.25V19H23V16.25C23,14.08 18.67,13 16.5,13Z" /></g><g id="account-multiple-plus"><path d="M13,13C11,13 7,14 7,16V18H19V16C19,14 15,13 13,13M19.62,13.16C20.45,13.88 21,14.82 21,16V18H24V16C24,14.46 21.63,13.5 19.62,13.16M13,11A3,3 0 0,0 16,8A3,3 0 0,0 13,5A3,3 0 0,0 10,8A3,3 0 0,0 13,11M18,11A3,3 0 0,0 21,8A3,3 0 0,0 18,5C17.68,5 17.37,5.05 17.08,5.14C17.65,5.95 18,6.94 18,8C18,9.06 17.65,10.04 17.08,10.85C17.37,10.95 17.68,11 18,11M8,10H5V7H3V10H0V12H3V15H5V12H8V10Z" /></g><g id="account-network"><path d="M13,16V18H14A1,1 0 0,1 15,19H22V21H15A1,1 0 0,1 14,22H10A1,1 0 0,1 9,21H2V19H9A1,1 0 0,1 10,18H11V16H5V14.5C5,12.57 8.13,11 12,11C15.87,11 19,12.57 19,14.5V16H13M12,2A3.5,3.5 0 0,1 15.5,5.5A3.5,3.5 0 0,1 12,9A3.5,3.5 0 0,1 8.5,5.5A3.5,3.5 0 0,1 12,2Z" /></g><g id="account-off"><path d="M12,4A4,4 0 0,1 16,8C16,9.95 14.6,11.58 12.75,11.93L8.07,7.25C8.42,5.4 10.05,4 12,4M12.28,14L18.28,20L20,21.72L18.73,23L15.73,20H4V18C4,16.16 6.5,14.61 9.87,14.14L2.78,7.05L4.05,5.78L12.28,14M20,18V19.18L15.14,14.32C18,14.93 20,16.35 20,18Z" /></g><g id="account-outline"><path d="M12,13C9.33,13 4,14.33 4,17V20H20V17C20,14.33 14.67,13 12,13M12,4A4,4 0 0,0 8,8A4,4 0 0,0 12,12A4,4 0 0,0 16,8A4,4 0 0,0 12,4M12,14.9C14.97,14.9 18.1,16.36 18.1,17V18.1H5.9V17C5.9,16.36 9,14.9 12,14.9M12,5.9A2.1,2.1 0 0,1 14.1,8A2.1,2.1 0 0,1 12,10.1A2.1,2.1 0 0,1 9.9,8A2.1,2.1 0 0,1 12,5.9Z" /></g><g id="account-plus"><path d="M15,14C12.33,14 7,15.33 7,18V20H23V18C23,15.33 17.67,14 15,14M6,10V7H4V10H1V12H4V15H6V12H9V10M15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12Z" /></g><g id="account-remove"><path d="M15,14C17.67,14 23,15.33 23,18V20H7V18C7,15.33 12.33,14 15,14M15,12A4,4 0 0,1 11,8A4,4 0 0,1 15,4A4,4 0 0,1 19,8A4,4 0 0,1 15,12M5,9.59L7.12,7.46L8.54,8.88L6.41,11L8.54,13.12L7.12,14.54L5,12.41L2.88,14.54L1.46,13.12L3.59,11L1.46,8.88L2.88,7.46L5,9.59Z" /></g><g id="account-search"><path d="M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.43,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.43C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,14C11.11,14 12.5,13.15 13.32,11.88C12.5,10.75 11.11,10 9.5,10C7.89,10 6.5,10.75 5.68,11.88C6.5,13.15 7.89,14 9.5,14M9.5,5A1.75,1.75 0 0,0 7.75,6.75A1.75,1.75 0 0,0 9.5,8.5A1.75,1.75 0 0,0 11.25,6.75A1.75,1.75 0 0,0 9.5,5Z" /></g><g id="account-settings"><path d="M12,4A4,4 0 0,1 16,8A4,4 0 0,1 12,12A4,4 0 0,1 8,8A4,4 0 0,1 12,4M12,14C16.42,14 20,15.79 20,18V20H4V18C4,15.79 7.58,14 12,14M7,22H9V24H7V22M11,22H13V24H11V22M15,22H17V24H15V22Z" /></g><g id="account-settings-variant"><path d="M9,4A4,4 0 0,0 5,8A4,4 0 0,0 9,12A4,4 0 0,0 13,8A4,4 0 0,0 9,4M9,14C6.33,14 1,15.33 1,18V20H12.08C12.03,19.67 12,19.34 12,19C12,17.5 12.5,16 13.41,14.8C11.88,14.28 10.18,14 9,14M18,14C17.87,14 17.76,14.09 17.74,14.21L17.55,15.53C17.25,15.66 16.96,15.82 16.7,16L15.46,15.5C15.35,15.5 15.22,15.5 15.15,15.63L14.15,17.36C14.09,17.47 14.11,17.6 14.21,17.68L15.27,18.5C15.25,18.67 15.24,18.83 15.24,19C15.24,19.17 15.25,19.33 15.27,19.5L14.21,20.32C14.12,20.4 14.09,20.53 14.15,20.64L15.15,22.37C15.21,22.5 15.34,22.5 15.46,22.5L16.7,22C16.96,22.18 17.24,22.35 17.55,22.47L17.74,23.79C17.76,23.91 17.86,24 18,24H20C20.11,24 20.22,23.91 20.24,23.79L20.43,22.47C20.73,22.34 21,22.18 21.27,22L22.5,22.5C22.63,22.5 22.76,22.5 22.83,22.37L23.83,20.64C23.89,20.53 23.86,20.4 23.77,20.32L22.7,19.5C22.72,19.33 22.74,19.17 22.74,19C22.74,18.83 22.73,18.67 22.7,18.5L23.76,17.68C23.85,17.6 23.88,17.47 23.82,17.36L22.82,15.63C22.76,15.5 22.63,15.5 22.5,15.5L21.27,16C21,15.82 20.73,15.65 20.42,15.53L20.23,14.21C20.22,14.09 20.11,14 20,14M19,17.5A1.5,1.5 0 0,1 20.5,19A1.5,1.5 0 0,1 19,20.5C18.16,20.5 17.5,19.83 17.5,19A1.5,1.5 0 0,1 19,17.5Z" /></g><g id="account-star"><path d="M15,14C12.33,14 7,15.33 7,18V20H23V18C23,15.33 17.67,14 15,14M15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12M5,13.28L7.45,14.77L6.8,11.96L9,10.08L6.11,9.83L5,7.19L3.87,9.83L1,10.08L3.18,11.96L2.5,14.77L5,13.28Z" /></g><g id="account-star-variant"><path d="M9,14C11.67,14 17,15.33 17,18V20H1V18C1,15.33 6.33,14 9,14M9,12A4,4 0 0,1 5,8A4,4 0 0,1 9,4A4,4 0 0,1 13,8A4,4 0 0,1 9,12M19,13.28L16.54,14.77L17.2,11.96L15,10.08L17.89,9.83L19,7.19L20.13,9.83L23,10.08L20.82,11.96L21.5,14.77L19,13.28Z" /></g><g id="account-switch"><path d="M16,9C18.33,9 23,10.17 23,12.5V15H17V12.5C17,11 16.19,9.89 15.04,9.05L16,9M8,9C10.33,9 15,10.17 15,12.5V15H1V12.5C1,10.17 5.67,9 8,9M8,7A3,3 0 0,1 5,4A3,3 0 0,1 8,1A3,3 0 0,1 11,4A3,3 0 0,1 8,7M16,7A3,3 0 0,1 13,4A3,3 0 0,1 16,1A3,3 0 0,1 19,4A3,3 0 0,1 16,7M9,16.75V19H15V16.75L18.25,20L15,23.25V21H9V23.25L5.75,20L9,16.75Z" /></g><g id="adjust"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9A3,3 0 0,1 15,12Z" /></g><g id="air-conditioner"><path d="M6.59,0.66C8.93,-1.15 11.47,1.06 12.04,4.5C12.47,4.5 12.89,4.62 13.27,4.84C13.79,4.24 14.25,3.42 14.07,2.5C13.65,0.35 16.06,-1.39 18.35,1.58C20.16,3.92 17.95,6.46 14.5,7.03C14.5,7.46 14.39,7.89 14.16,8.27C14.76,8.78 15.58,9.24 16.5,9.06C18.63,8.64 20.38,11.04 17.41,13.34C15.07,15.15 12.53,12.94 11.96,9.5C11.53,9.5 11.11,9.37 10.74,9.15C10.22,9.75 9.75,10.58 9.93,11.5C10.35,13.64 7.94,15.39 5.65,12.42C3.83,10.07 6.05,7.53 9.5,6.97C9.5,6.54 9.63,6.12 9.85,5.74C9.25,5.23 8.43,4.76 7.5,4.94C5.37,5.36 3.62,2.96 6.59,0.66M5,16H7A2,2 0 0,1 9,18V24H7V22H5V24H3V18A2,2 0 0,1 5,16M5,18V20H7V18H5M12.93,16H15L12.07,24H10L12.93,16M18,16H21V18H18V22H21V24H18A2,2 0 0,1 16,22V18A2,2 0 0,1 18,16Z" /></g><g id="airballoon"><path d="M11,23A2,2 0 0,1 9,21V19H15V21A2,2 0 0,1 13,23H11M12,1C12.71,1 13.39,1.09 14.05,1.26C15.22,2.83 16,5.71 16,9C16,11.28 15.62,13.37 15,16A2,2 0 0,1 13,18H11A2,2 0 0,1 9,16C8.38,13.37 8,11.28 8,9C8,5.71 8.78,2.83 9.95,1.26C10.61,1.09 11.29,1 12,1M20,8C20,11.18 18.15,15.92 15.46,17.21C16.41,15.39 17,11.83 17,9C17,6.17 16.41,3.61 15.46,1.79C18.15,3.08 20,4.82 20,8M4,8C4,4.82 5.85,3.08 8.54,1.79C7.59,3.61 7,6.17 7,9C7,11.83 7.59,15.39 8.54,17.21C5.85,15.92 4,11.18 4,8Z" /></g><g id="airplane"><path d="M21,16V14L13,9V3.5A1.5,1.5 0 0,0 11.5,2A1.5,1.5 0 0,0 10,3.5V9L2,14V16L10,13.5V19L8,20.5V22L11.5,21L15,22V20.5L13,19V13.5L21,16Z" /></g><g id="airplane-landing"><path d="M2.5,19H21.5V21H2.5V19M9.68,13.27L14.03,14.43L19.34,15.85C20.14,16.06 20.96,15.59 21.18,14.79C21.39,14 20.92,13.17 20.12,12.95L14.81,11.53L12.05,2.5L10.12,2V10.28L5.15,8.95L4.22,6.63L2.77,6.24V11.41L4.37,11.84L9.68,13.27Z" /></g><g id="airplane-off"><path d="M3.15,5.27L8.13,10.26L2.15,14V16L10.15,13.5V19L8.15,20.5V22L11.65,21L15.15,22V20.5L13.15,19V15.27L18.87,21L20.15,19.73L4.42,4M13.15,9V3.5A1.5,1.5 0 0,0 11.65,2A1.5,1.5 0 0,0 10.15,3.5V7.18L17.97,15L21.15,16V14L13.15,9Z" /></g><g id="airplane-takeoff"><path d="M2.5,19H21.5V21H2.5V19M22.07,9.64C21.86,8.84 21.03,8.36 20.23,8.58L14.92,10L8,3.57L6.09,4.08L10.23,11.25L5.26,12.58L3.29,11.04L1.84,11.43L3.66,14.59L4.43,15.92L6.03,15.5L11.34,14.07L15.69,12.91L21,11.5C21.81,11.26 22.28,10.44 22.07,9.64Z" /></g><g id="airplay"><path d="M6,22H18L12,16M21,3H3A2,2 0 0,0 1,5V17A2,2 0 0,0 3,19H7V17H3V5H21V17H17V19H21A2,2 0 0,0 23,17V5A2,2 0 0,0 21,3Z" /></g><g id="alarm"><path d="M12,20A7,7 0 0,1 5,13A7,7 0 0,1 12,6A7,7 0 0,1 19,13A7,7 0 0,1 12,20M12,4A9,9 0 0,0 3,13A9,9 0 0,0 12,22A9,9 0 0,0 21,13A9,9 0 0,0 12,4M12.5,8H11V14L15.75,16.85L16.5,15.62L12.5,13.25V8M7.88,3.39L6.6,1.86L2,5.71L3.29,7.24L7.88,3.39M22,5.72L17.4,1.86L16.11,3.39L20.71,7.25L22,5.72Z" /></g><g id="alarm-check"><path d="M10.54,14.53L8.41,12.4L7.35,13.46L10.53,16.64L16.53,10.64L15.47,9.58L10.54,14.53M12,20A7,7 0 0,1 5,13A7,7 0 0,1 12,6A7,7 0 0,1 19,13A7,7 0 0,1 12,20M12,4A9,9 0 0,0 3,13A9,9 0 0,0 12,22A9,9 0 0,0 21,13A9,9 0 0,0 12,4M7.88,3.39L6.6,1.86L2,5.71L3.29,7.24L7.88,3.39M22,5.72L17.4,1.86L16.11,3.39L20.71,7.25L22,5.72Z" /></g><g id="alarm-multiple"><path d="M9.29,3.25L5.16,6.72L4,5.34L8.14,1.87L9.29,3.25M22,5.35L20.84,6.73L16.7,3.25L17.86,1.87L22,5.35M13,4A8,8 0 0,1 21,12A8,8 0 0,1 13,20A8,8 0 0,1 5,12A8,8 0 0,1 13,4M13,6A6,6 0 0,0 7,12A6,6 0 0,0 13,18A6,6 0 0,0 19,12A6,6 0 0,0 13,6M12,7.5H13.5V12.03L16.72,13.5L16.1,14.86L12,13V7.5M1,14C1,11.5 2.13,9.3 3.91,7.83C3.33,9.1 3,10.5 3,12L3.06,13.13L3,14C3,16.28 4.27,18.26 6.14,19.28C7.44,20.5 9.07,21.39 10.89,21.78C10.28,21.92 9.65,22 9,22A8,8 0 0,1 1,14Z" /></g><g id="alarm-off"><path d="M8,3.28L6.6,1.86L5.74,2.57L7.16,4M16.47,18.39C15.26,19.39 13.7,20 12,20A7,7 0 0,1 5,13C5,11.3 5.61,9.74 6.61,8.53M2.92,2.29L1.65,3.57L3,4.9L1.87,5.83L3.29,7.25L4.4,6.31L5.2,7.11C3.83,8.69 3,10.75 3,13A9,9 0 0,0 12,22C14.25,22 16.31,21.17 17.89,19.8L20.09,22L21.36,20.73L3.89,3.27L2.92,2.29M22,5.72L17.4,1.86L16.11,3.39L20.71,7.25L22,5.72M12,6A7,7 0 0,1 19,13C19,13.84 18.84,14.65 18.57,15.4L20.09,16.92C20.67,15.73 21,14.41 21,13A9,9 0 0,0 12,4C10.59,4 9.27,4.33 8.08,4.91L9.6,6.43C10.35,6.16 11.16,6 12,6Z" /></g><g id="alarm-plus"><path d="M13,9H11V12H8V14H11V17H13V14H16V12H13M12,20A7,7 0 0,1 5,13A7,7 0 0,1 12,6A7,7 0 0,1 19,13A7,7 0 0,1 12,20M12,4A9,9 0 0,0 3,13A9,9 0 0,0 12,22A9,9 0 0,0 21,13A9,9 0 0,0 12,4M22,5.72L17.4,1.86L16.11,3.39L20.71,7.25M7.88,3.39L6.6,1.86L2,5.71L3.29,7.24L7.88,3.39Z" /></g><g id="alarm-snooze"><path d="M7.88,3.39L6.6,1.86L2,5.71L3.29,7.24L7.88,3.39M22,5.72L17.4,1.86L16.11,3.39L20.71,7.25L22,5.72M12,4A9,9 0 0,0 3,13A9,9 0 0,0 12,22A9,9 0 0,0 21,13A9,9 0 0,0 12,4M12,20A7,7 0 0,1 5,13A7,7 0 0,1 12,6A7,7 0 0,1 19,13A7,7 0 0,1 12,20M9,11H12.63L9,15.2V17H15V15H11.37L15,10.8V9H9V11Z" /></g><g id="album"><path d="M12,11A1,1 0 0,0 11,12A1,1 0 0,0 12,13A1,1 0 0,0 13,12A1,1 0 0,0 12,11M12,16.5C9.5,16.5 7.5,14.5 7.5,12C7.5,9.5 9.5,7.5 12,7.5C14.5,7.5 16.5,9.5 16.5,12C16.5,14.5 14.5,16.5 12,16.5M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="alert"><path d="M13,14H11V10H13M13,18H11V16H13M1,21H23L12,2L1,21Z" /></g><g id="alert-box"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M13,13V7H11V13H13M13,17V15H11V17H13Z" /></g><g id="alert-circle"><path d="M13,13H11V7H13M13,17H11V15H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="alert-circle-outline"><path d="M11,15H13V17H11V15M11,7H13V13H11V7M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20Z" /></g><g id="alert-octagon"><path d="M13,13H11V7H13M12,17.3A1.3,1.3 0 0,1 10.7,16A1.3,1.3 0 0,1 12,14.7A1.3,1.3 0 0,1 13.3,16A1.3,1.3 0 0,1 12,17.3M15.73,3H8.27L3,8.27V15.73L8.27,21H15.73L21,15.73V8.27L15.73,3Z" /></g><g id="alert-outline"><path d="M12,2L1,21H23M12,6L19.53,19H4.47M11,10V14H13V10M11,16V18H13V16" /></g><g id="all-inclusive"><path d="M18.6,6.62C17.16,6.62 15.8,7.18 14.83,8.15L7.8,14.39C7.16,15.03 6.31,15.38 5.4,15.38C3.53,15.38 2,13.87 2,12C2,10.13 3.53,8.62 5.4,8.62C6.31,8.62 7.16,8.97 7.84,9.65L8.97,10.65L10.5,9.31L9.22,8.2C8.2,7.18 6.84,6.62 5.4,6.62C2.42,6.62 0,9.04 0,12C0,14.96 2.42,17.38 5.4,17.38C6.84,17.38 8.2,16.82 9.17,15.85L16.2,9.61C16.84,8.97 17.69,8.62 18.6,8.62C20.47,8.62 22,10.13 22,12C22,13.87 20.47,15.38 18.6,15.38C17.7,15.38 16.84,15.03 16.16,14.35L15,13.34L13.5,14.68L14.78,15.8C15.8,16.81 17.15,17.37 18.6,17.37C21.58,17.37 24,14.96 24,12C24,9 21.58,6.62 18.6,6.62Z" /></g><g id="alpha"><path d="M18.08,17.8C17.62,17.93 17.21,18 16.85,18C15.65,18 14.84,17.12 14.43,15.35H14.38C13.39,17.26 12,18.21 10.25,18.21C8.94,18.21 7.89,17.72 7.1,16.73C6.31,15.74 5.92,14.5 5.92,13C5.92,11.25 6.37,9.85 7.26,8.76C8.15,7.67 9.36,7.12 10.89,7.12C11.71,7.12 12.45,7.35 13.09,7.8C13.73,8.26 14.22,8.9 14.56,9.73H14.6L15.31,7.33H17.87L15.73,12.65C15.97,13.89 16.22,14.74 16.5,15.19C16.74,15.64 17.08,15.87 17.5,15.87C17.74,15.87 17.93,15.83 18.1,15.76L18.08,17.8M13.82,12.56C13.61,11.43 13.27,10.55 12.81,9.95C12.36,9.34 11.81,9.04 11.18,9.04C10.36,9.04 9.7,9.41 9.21,10.14C8.72,10.88 8.5,11.79 8.5,12.86C8.5,13.84 8.69,14.65 9.12,15.31C9.54,15.97 10.11,16.29 10.82,16.29C11.42,16.29 11.97,16 12.46,15.45C12.96,14.88 13.37,14.05 13.7,12.96L13.82,12.56Z" /></g><g id="alphabetical"><path d="M6,11A2,2 0 0,1 8,13V17H4A2,2 0 0,1 2,15V13A2,2 0 0,1 4,11H6M4,13V15H6V13H4M20,13V15H22V17H20A2,2 0 0,1 18,15V13A2,2 0 0,1 20,11H22V13H20M12,7V11H14A2,2 0 0,1 16,13V15A2,2 0 0,1 14,17H12A2,2 0 0,1 10,15V7H12M12,15H14V13H12V15Z" /></g><g id="altimeter"><path d="M7,3V5H17V3H7M9,7V9H15V7H9M2,7.96V16.04L6.03,12L2,7.96M22.03,7.96L18,12L22.03,16.04V7.96M7,11V13H17V11H7M9,15V17H15V15H9M7,19V21H17V19H7Z" /></g><g id="amazon"><path d="M15.93,17.09C15.75,17.25 15.5,17.26 15.3,17.15C14.41,16.41 14.25,16.07 13.76,15.36C12.29,16.86 11.25,17.31 9.34,17.31C7.09,17.31 5.33,15.92 5.33,13.14C5.33,10.96 6.5,9.5 8.19,8.76C9.65,8.12 11.68,8 13.23,7.83V7.5C13.23,6.84 13.28,6.09 12.9,5.54C12.58,5.05 11.95,4.84 11.4,4.84C10.38,4.84 9.47,5.37 9.25,6.45C9.2,6.69 9,6.93 8.78,6.94L6.18,6.66C5.96,6.61 5.72,6.44 5.78,6.1C6.38,2.95 9.23,2 11.78,2C13.08,2 14.78,2.35 15.81,3.33C17.11,4.55 17,6.18 17,7.95V12.12C17,13.37 17.5,13.93 18,14.6C18.17,14.85 18.21,15.14 18,15.31L15.94,17.09H15.93M13.23,10.56V10C11.29,10 9.24,10.39 9.24,12.67C9.24,13.83 9.85,14.62 10.87,14.62C11.63,14.62 12.3,14.15 12.73,13.4C13.25,12.47 13.23,11.6 13.23,10.56M20.16,19.54C18,21.14 14.82,22 12.1,22C8.29,22 4.85,20.59 2.25,18.24C2.05,18.06 2.23,17.81 2.5,17.95C5.28,19.58 8.75,20.56 12.33,20.56C14.74,20.56 17.4,20.06 19.84,19.03C20.21,18.87 20.5,19.27 20.16,19.54M21.07,18.5C20.79,18.14 19.22,18.33 18.5,18.42C18.31,18.44 18.28,18.26 18.47,18.12C19.71,17.24 21.76,17.5 22,17.79C22.24,18.09 21.93,20.14 20.76,21.11C20.58,21.27 20.41,21.18 20.5,21C20.76,20.33 21.35,18.86 21.07,18.5Z" /></g><g id="amazon-clouddrive"><path d="M4.94,11.12C5.23,11.12 5.5,11.16 5.76,11.23C5.77,9.09 7.5,7.35 9.65,7.35C11.27,7.35 12.67,8.35 13.24,9.77C13.83,9 14.74,8.53 15.76,8.53C17.5,8.53 18.94,9.95 18.94,11.71C18.94,11.95 18.91,12.2 18.86,12.43C19.1,12.34 19.37,12.29 19.65,12.29C20.95,12.29 22,13.35 22,14.65C22,15.95 20.95,17 19.65,17C18.35,17 6.36,17 4.94,17C3.32,17 2,15.68 2,14.06C2,12.43 3.32,11.12 4.94,11.12Z" /></g><g id="ambulance"><path d="M18,18.5A1.5,1.5 0 0,0 19.5,17A1.5,1.5 0 0,0 18,15.5A1.5,1.5 0 0,0 16.5,17A1.5,1.5 0 0,0 18,18.5M19.5,9.5H17V12H21.46L19.5,9.5M6,18.5A1.5,1.5 0 0,0 7.5,17A1.5,1.5 0 0,0 6,15.5A1.5,1.5 0 0,0 4.5,17A1.5,1.5 0 0,0 6,18.5M20,8L23,12V17H21A3,3 0 0,1 18,20A3,3 0 0,1 15,17H9A3,3 0 0,1 6,20A3,3 0 0,1 3,17H1V6C1,4.89 1.89,4 3,4H17V8H20M8,6V9H5V11H8V14H10V11H13V9H10V6H8Z" /></g><g id="amplifier"><path d="M10,2H14A1,1 0 0,1 15,3H21V21H19A1,1 0 0,1 18,22A1,1 0 0,1 17,21H7A1,1 0 0,1 6,22A1,1 0 0,1 5,21H3V3H9A1,1 0 0,1 10,2M5,5V9H19V5H5M7,6A1,1 0 0,1 8,7A1,1 0 0,1 7,8A1,1 0 0,1 6,7A1,1 0 0,1 7,6M12,6H14V7H12V6M15,6H16V8H15V6M17,6H18V8H17V6M12,11A4,4 0 0,0 8,15A4,4 0 0,0 12,19A4,4 0 0,0 16,15A4,4 0 0,0 12,11M10,6A1,1 0 0,1 11,7A1,1 0 0,1 10,8A1,1 0 0,1 9,7A1,1 0 0,1 10,6Z" /></g><g id="anchor"><path d="M12,2A3,3 0 0,0 9,5C9,6.27 9.8,7.4 11,7.83V10H8V12H11V18.92C9.16,18.63 7.53,17.57 6.53,16H8V14H3V19H5V17.3C6.58,19.61 9.2,21 12,21C14.8,21 17.42,19.61 19,17.31V19H21V14H16V16H17.46C16.46,17.56 14.83,18.63 13,18.92V12H16V10H13V7.82C14.2,7.4 15,6.27 15,5A3,3 0 0,0 12,2M12,4A1,1 0 0,1 13,5A1,1 0 0,1 12,6A1,1 0 0,1 11,5A1,1 0 0,1 12,4Z" /></g><g id="android"><path d="M15,5H14V4H15M10,5H9V4H10M15.53,2.16L16.84,0.85C17.03,0.66 17.03,0.34 16.84,0.14C16.64,-0.05 16.32,-0.05 16.13,0.14L14.65,1.62C13.85,1.23 12.95,1 12,1C11.04,1 10.14,1.23 9.34,1.63L7.85,0.14C7.66,-0.05 7.34,-0.05 7.15,0.14C6.95,0.34 6.95,0.66 7.15,0.85L8.46,2.16C6.97,3.26 6,5 6,7H18C18,5 17,3.25 15.53,2.16M20.5,8A1.5,1.5 0 0,0 19,9.5V16.5A1.5,1.5 0 0,0 20.5,18A1.5,1.5 0 0,0 22,16.5V9.5A1.5,1.5 0 0,0 20.5,8M3.5,8A1.5,1.5 0 0,0 2,9.5V16.5A1.5,1.5 0 0,0 3.5,18A1.5,1.5 0 0,0 5,16.5V9.5A1.5,1.5 0 0,0 3.5,8M6,18A1,1 0 0,0 7,19H8V22.5A1.5,1.5 0 0,0 9.5,24A1.5,1.5 0 0,0 11,22.5V19H13V22.5A1.5,1.5 0 0,0 14.5,24A1.5,1.5 0 0,0 16,22.5V19H17A1,1 0 0,0 18,18V8H6V18Z" /></g><g id="android-debug-bridge"><path d="M15,9A1,1 0 0,1 14,8A1,1 0 0,1 15,7A1,1 0 0,1 16,8A1,1 0 0,1 15,9M9,9A1,1 0 0,1 8,8A1,1 0 0,1 9,7A1,1 0 0,1 10,8A1,1 0 0,1 9,9M16.12,4.37L18.22,2.27L17.4,1.44L15.09,3.75C14.16,3.28 13.11,3 12,3C10.88,3 9.84,3.28 8.91,3.75L6.6,1.44L5.78,2.27L7.88,4.37C6.14,5.64 5,7.68 5,10V11H19V10C19,7.68 17.86,5.64 16.12,4.37M5,16C5,19.86 8.13,23 12,23A7,7 0 0,0 19,16V12H5V16Z" /></g><g id="android-studio"><path d="M11,2H13V4H13.5A1.5,1.5 0 0,1 15,5.5V9L14.56,9.44L16.2,12.28C17.31,11.19 18,9.68 18,8H20C20,10.42 18.93,12.59 17.23,14.06L20.37,19.5L20.5,21.72L18.63,20.5L15.56,15.17C14.5,15.7 13.28,16 12,16C10.72,16 9.5,15.7 8.44,15.17L5.37,20.5L3.5,21.72L3.63,19.5L9.44,9.44L9,9V5.5A1.5,1.5 0 0,1 10.5,4H11V2M9.44,13.43C10.22,13.8 11.09,14 12,14C12.91,14 13.78,13.8 14.56,13.43L13.1,10.9H13.09C12.47,11.5 11.53,11.5 10.91,10.9H10.9L9.44,13.43M12,6A1,1 0 0,0 11,7A1,1 0 0,0 12,8A1,1 0 0,0 13,7A1,1 0 0,0 12,6Z" /></g><g id="angular"><path d="M12,2.5L20.84,5.65L19.5,17.35L12,21.5L4.5,17.35L3.16,5.65L12,2.5M12,4.6L6.47,17H8.53L9.64,14.22H14.34L15.45,17H17.5L12,4.6M13.62,12.5H10.39L12,8.63L13.62,12.5Z" /></g><g id="animation"><path d="M4,2C2.89,2 2,2.89 2,4V14H4V4H14V2H4M8,6C6.89,6 6,6.89 6,8V18H8V8H18V6H8M12,10C10.89,10 10,10.89 10,12V20C10,21.11 10.89,22 12,22H20C21.11,22 22,21.11 22,20V12C22,10.89 21.11,10 20,10H12Z" /></g><g id="apple"><path d="M18.71,19.5C17.88,20.74 17,21.95 15.66,21.97C14.32,22 13.89,21.18 12.37,21.18C10.84,21.18 10.37,21.95 9.1,22C7.79,22.05 6.8,20.68 5.96,19.47C4.25,17 2.94,12.45 4.7,9.39C5.57,7.87 7.13,6.91 8.82,6.88C10.1,6.86 11.32,7.75 12.11,7.75C12.89,7.75 14.37,6.68 15.92,6.84C16.57,6.87 18.39,7.1 19.56,8.82C19.47,8.88 17.39,10.1 17.41,12.63C17.44,15.65 20.06,16.66 20.09,16.67C20.06,16.74 19.67,18.11 18.71,19.5M13,3.5C13.73,2.67 14.94,2.04 15.94,2C16.07,3.17 15.6,4.35 14.9,5.19C14.21,6.04 13.07,6.7 11.95,6.61C11.8,5.46 12.36,4.26 13,3.5Z" /></g><g id="apple-finder"><path d="M4,4H11.89C12.46,2.91 13.13,1.88 13.93,1L15.04,2.11C14.61,2.7 14.23,3.34 13.89,4H20A2,2 0 0,1 22,6V19A2,2 0 0,1 20,21H14.93L15.26,22.23L13.43,22.95L12.93,21H4A2,2 0 0,1 2,19V6A2,2 0 0,1 4,4M4,6V19H12.54C12.5,18.67 12.44,18.34 12.4,18C12.27,18 12.13,18 12,18C9.25,18 6.78,17.5 5.13,16.76L6.04,15.12C7,15.64 9.17,16 12,16C12.08,16 12.16,16 12.24,16C12.21,15.33 12.22,14.66 12.27,14H9C9,14 9.4,9.97 11,6H4M20,19V6H13C12.1,8.22 11.58,10.46 11.3,12H14.17C14,13.28 13.97,14.62 14.06,15.93C15.87,15.8 17.25,15.5 17.96,15.12L18.87,16.76C17.69,17.3 16.1,17.7 14.29,17.89C14.35,18.27 14.41,18.64 14.5,19H20M6,8H8V11H6V8M16,8H18V11H16V8Z" /></g><g id="apple-ios"><path d="M20,9V7H16A2,2 0 0,0 14,9V11A2,2 0 0,0 16,13H18V15H14V17H18A2,2 0 0,0 20,15V13A2,2 0 0,0 18,11H16V9M11,15H9V9H11M11,7H9A2,2 0 0,0 7,9V15A2,2 0 0,0 9,17H11A2,2 0 0,0 13,15V9A2,2 0 0,0 11,7M4,17H6V11H4M4,9H6V7H4V9Z" /></g><g id="apple-keyboard-caps"><path d="M15,14V8H17.17L12,2.83L6.83,8H9V14H15M12,0L22,10H17V16H7V10H2L12,0M7,18H17V24H7V18M15,20H9V22H15V20Z" /></g><g id="apple-keyboard-command"><path d="M6,2A4,4 0 0,1 10,6V8H14V6A4,4 0 0,1 18,2A4,4 0 0,1 22,6A4,4 0 0,1 18,10H16V14H18A4,4 0 0,1 22,18A4,4 0 0,1 18,22A4,4 0 0,1 14,18V16H10V18A4,4 0 0,1 6,22A4,4 0 0,1 2,18A4,4 0 0,1 6,14H8V10H6A4,4 0 0,1 2,6A4,4 0 0,1 6,2M16,18A2,2 0 0,0 18,20A2,2 0 0,0 20,18A2,2 0 0,0 18,16H16V18M14,10H10V14H14V10M6,16A2,2 0 0,0 4,18A2,2 0 0,0 6,20A2,2 0 0,0 8,18V16H6M8,6A2,2 0 0,0 6,4A2,2 0 0,0 4,6A2,2 0 0,0 6,8H8V6M18,8A2,2 0 0,0 20,6A2,2 0 0,0 18,4A2,2 0 0,0 16,6V8H18Z" /></g><g id="apple-keyboard-control"><path d="M19.78,11.78L18.36,13.19L12,6.83L5.64,13.19L4.22,11.78L12,4L19.78,11.78Z" /></g><g id="apple-keyboard-option"><path d="M3,4H9.11L16.15,18H21V20H14.88L7.84,6H3V4M14,4H21V6H14V4Z" /></g><g id="apple-keyboard-shift"><path d="M15,18V12H17.17L12,6.83L6.83,12H9V18H15M12,4L22,14H17V20H7V14H2L12,4Z" /></g><g id="apple-mobileme"><path d="M22,15.04C22,17.23 20.24,19 18.07,19H5.93C3.76,19 2,17.23 2,15.04C2,13.07 3.43,11.44 5.31,11.14C5.28,11 5.27,10.86 5.27,10.71C5.27,9.33 6.38,8.2 7.76,8.2C8.37,8.2 8.94,8.43 9.37,8.8C10.14,7.05 11.13,5.44 13.91,5.44C17.28,5.44 18.87,8.06 18.87,10.83C18.87,10.94 18.87,11.06 18.86,11.17C20.65,11.54 22,13.13 22,15.04Z" /></g><g id="apple-safari"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12C4,14.09 4.8,16 6.11,17.41L9.88,9.88L17.41,6.11C16,4.8 14.09,4 12,4M12,20A8,8 0 0,0 20,12C20,9.91 19.2,8 17.89,6.59L14.12,14.12L6.59,17.89C8,19.2 9.91,20 12,20M12,12L11.23,11.23L9.7,14.3L12.77,12.77L12,12M12,17.5H13V19H12V17.5M15.88,15.89L16.59,15.18L17.65,16.24L16.94,16.95L15.88,15.89M17.5,12V11H19V12H17.5M12,6.5H11V5H12V6.5M8.12,8.11L7.41,8.82L6.35,7.76L7.06,7.05L8.12,8.11M6.5,12V13H5V12H6.5Z" /></g><g id="application"><path d="M19,4C20.11,4 21,4.9 21,6V18A2,2 0 0,1 19,20H5C3.89,20 3,19.1 3,18V6A2,2 0 0,1 5,4H19M19,18V8H5V18H19Z" /></g><g id="appnet"><path d="M14.47,9.14C15.07,7.69 16.18,4.28 16.35,3.68C16.5,3.09 16.95,3 17.2,3H19.25C19.59,3 19.78,3.26 19.7,3.68C17.55,11.27 16.09,13.5 16.09,14C16.09,15.28 17.46,17.67 18.74,17.67C19.5,17.67 19.34,16.56 20.19,16.56H21.81C22.07,16.56 22.32,16.82 22.32,17.25C22.32,17.67 21.85,21 18.61,21C15.36,21 14.15,17.08 14.15,17.08C13.73,17.93 11.23,21 8.16,21C2.7,21 1.68,15.2 1.68,11.79C1.68,8.37 3.3,3 7.91,3C12.5,3 14.47,9.14 14.47,9.14M4.5,11.53C4.5,13.5 4.41,17.59 8,17.67C10.04,17.76 11.91,15.2 12.81,13.15C11.57,8.89 10.72,6.33 8,6.33C4.32,6.41 4.5,11.53 4.5,11.53Z" /></g><g id="apps"><path d="M16,20H20V16H16M16,14H20V10H16M10,8H14V4H10M16,8H20V4H16M10,14H14V10H10M4,14H8V10H4M4,20H8V16H4M10,20H14V16H10M4,8H8V4H4V8Z" /></g><g id="archive"><path d="M3,3H21V7H3V3M4,8H20V21H4V8M9.5,11A0.5,0.5 0 0,0 9,11.5V13H15V11.5A0.5,0.5 0 0,0 14.5,11H9.5Z" /></g><g id="arrange-bring-forward"><path d="M2,2H16V16H2V2M22,8V22H8V18H10V20H20V10H18V8H22Z" /></g><g id="arrange-bring-to-front"><path d="M2,2H11V6H9V4H4V9H6V11H2V2M22,13V22H13V18H15V20H20V15H18V13H22M8,8H16V16H8V8Z" /></g><g id="arrange-send-backward"><path d="M2,2H16V16H2V2M22,8V22H8V18H18V8H22M4,4V14H14V4H4Z" /></g><g id="arrange-send-to-back"><path d="M2,2H11V11H2V2M9,4H4V9H9V4M22,13V22H13V13H22M15,20H20V15H15V20M16,8V11H13V8H16M11,16H8V13H11V16Z" /></g><g id="arrow-all"><path d="M13,11H18L16.5,9.5L17.92,8.08L21.84,12L17.92,15.92L16.5,14.5L18,13H13V18L14.5,16.5L15.92,17.92L12,21.84L8.08,17.92L9.5,16.5L11,18V13H6L7.5,14.5L6.08,15.92L2.16,12L6.08,8.08L7.5,9.5L6,11H11V6L9.5,7.5L8.08,6.08L12,2.16L15.92,6.08L14.5,7.5L13,6V11Z" /></g><g id="arrow-bottom-left"><path d="M19,6.41L17.59,5L7,15.59V9H5V19H15V17H8.41L19,6.41Z" /></g><g id="arrow-bottom-right"><path d="M5,6.41L6.41,5L17,15.59V9H19V19H9V17H15.59L5,6.41Z" /></g><g id="arrow-compress"><path d="M19.5,3.09L15,7.59V4H13V11H20V9H16.41L20.91,4.5L19.5,3.09M4,13V15H7.59L3.09,19.5L4.5,20.91L9,16.41V20H11V13H4Z" /></g><g id="arrow-compress-all"><path d="M19.5,3.09L20.91,4.5L16.41,9H20V11H13V4H15V7.59L19.5,3.09M20.91,19.5L19.5,20.91L15,16.41V20H13V13H20V15H16.41L20.91,19.5M4.5,3.09L9,7.59V4H11V11H4V9H7.59L3.09,4.5L4.5,3.09M3.09,19.5L7.59,15H4V13H11V20H9V16.41L4.5,20.91L3.09,19.5Z" /></g><g id="arrow-down"><path d="M11,4H13V16L18.5,10.5L19.92,11.92L12,19.84L4.08,11.92L5.5,10.5L11,16V4Z" /></g><g id="arrow-down-bold"><path d="M10,4H14V13L17.5,9.5L19.92,11.92L12,19.84L4.08,11.92L6.5,9.5L10,13V4Z" /></g><g id="arrow-down-bold-circle"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,17L17,12H14V8H10V12H7L12,17Z" /></g><g id="arrow-down-bold-circle-outline"><path d="M12,17L7,12H10V8H14V12H17L12,17M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z" /></g><g id="arrow-down-bold-hexagon-outline"><path d="M12,17L7,12H10V8H14V12H17L12,17M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15Z" /></g><g id="arrow-down-box"><path d="M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M11,6V14.5L7.5,11L6.08,12.42L12,18.34L17.92,12.42L16.5,11L13,14.5V6H11Z" /></g><g id="arrow-down-drop-circle"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M7,10L12,15L17,10H7Z" /></g><g id="arrow-down-drop-circle-outline"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4M7,10L12,15L17,10H7Z" /></g><g id="arrow-expand"><path d="M10,21V19H6.41L10.91,14.5L9.5,13.09L5,17.59V14H3V21H10M14.5,10.91L19,6.41V10H21V3H14V5H17.59L13.09,9.5L14.5,10.91Z" /></g><g id="arrow-expand-all"><path d="M9.5,13.09L10.91,14.5L6.41,19H10V21H3V14H5V17.59L9.5,13.09M10.91,9.5L9.5,10.91L5,6.41V10H3V3H10V5H6.41L10.91,9.5M14.5,13.09L19,17.59V14H21V21H14V19H17.59L13.09,14.5L14.5,13.09M13.09,9.5L17.59,5H14V3H21V10H19V6.41L14.5,10.91L13.09,9.5Z" /></g><g id="arrow-left"><path d="M20,11V13H8L13.5,18.5L12.08,19.92L4.16,12L12.08,4.08L13.5,5.5L8,11H20Z" /></g><g id="arrow-left-bold"><path d="M20,10V14H11L14.5,17.5L12.08,19.92L4.16,12L12.08,4.08L14.5,6.5L11,10H20Z" /></g><g id="arrow-left-bold-circle"><path d="M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M7,12L12,17V14H16V10H12V7L7,12Z" /></g><g id="arrow-left-bold-circle-outline"><path d="M7,12L12,7V10H16V14H12V17L7,12M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12Z" /></g><g id="arrow-left-bold-hexagon-outline"><path d="M7,12L12,7V10H16V14H12V17L7,12M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15Z" /></g><g id="arrow-left-box"><path d="M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5C3,3.89 3.9,3 5,3H19M18,11H9.5L13,7.5L11.58,6.08L5.66,12L11.58,17.92L13,16.5L9.5,13H18V11Z" /></g><g id="arrow-left-drop-circle"><path d="M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M14,7L9,12L14,17V7Z" /></g><g id="arrow-left-drop-circle-outline"><path d="M22,12A10,10 0 0,0 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12M20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12M14,7L9,12L14,17V7Z" /></g><g id="arrow-right"><path d="M4,11V13H16L10.5,18.5L11.92,19.92L19.84,12L11.92,4.08L10.5,5.5L16,11H4Z" /></g><g id="arrow-right-bold"><path d="M4,10V14H13L9.5,17.5L11.92,19.92L19.84,12L11.92,4.08L9.5,6.5L13,10H4Z" /></g><g id="arrow-right-bold-circle"><path d="M2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12M17,12L12,7V10H8V14H12V17L17,12Z" /></g><g id="arrow-right-bold-circle-outline"><path d="M17,12L12,17V14H8V10H12V7L17,12M2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12M4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12Z" /></g><g id="arrow-right-bold-hexagon-outline"><path d="M17,12L12,17V14H8V10H12V7L17,12M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15Z" /></g><g id="arrow-right-box"><path d="M5,21A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19C21,20.11 20.1,21 19,21H5M6,13H14.5L11,16.5L12.42,17.92L18.34,12L12.42,6.08L11,7.5L14.5,11H6V13Z" /></g><g id="arrow-right-drop-circle"><path d="M2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12M10,17L15,12L10,7V17Z" /></g><g id="arrow-right-drop-circle-outline"><path d="M2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2A10,10 0 0,0 2,12M4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12M10,17L15,12L10,7V17Z" /></g><g id="arrow-top-left"><path d="M19,17.59L17.59,19L7,8.41V15H5V5H15V7H8.41L19,17.59Z" /></g><g id="arrow-top-right"><path d="M5,17.59L15.59,7H9V5H19V15H17V8.41L6.41,19L5,17.59Z" /></g><g id="arrow-up"><path d="M13,20H11V8L5.5,13.5L4.08,12.08L12,4.16L19.92,12.08L18.5,13.5L13,8V20Z" /></g><g id="arrow-up-bold"><path d="M14,20H10V11L6.5,14.5L4.08,12.08L12,4.16L19.92,12.08L17.5,14.5L14,11V20Z" /></g><g id="arrow-up-bold-circle"><path d="M12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22M12,7L7,12H10V16H14V12H17L12,7Z" /></g><g id="arrow-up-bold-circle-outline"><path d="M12,7L17,12H14V16H10V12H7L12,7M12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20Z" /></g><g id="arrow-up-bold-hexagon-outline"><path d="M12,7L17,12H14V16H10V12H7L12,7M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15Z" /></g><g id="arrow-up-box"><path d="M21,19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19C20.11,3 21,3.9 21,5V19M13,18V9.5L16.5,13L17.92,11.58L12,5.66L6.08,11.58L7.5,13L11,9.5V18H13Z" /></g><g id="arrow-up-drop-circle"><path d="M12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22M17,14L12,9L7,14H17Z" /></g><g id="arrow-up-drop-circle-outline"><path d="M12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M17,14L12,9L7,14H17Z" /></g><g id="assistant"><path d="M19,2H5A2,2 0 0,0 3,4V18A2,2 0 0,0 5,20H9L12,23L15,20H19A2,2 0 0,0 21,18V4A2,2 0 0,0 19,2M13.88,12.88L12,17L10.12,12.88L6,11L10.12,9.12L12,5L13.88,9.12L18,11" /></g><g id="asterisk"><path d="M10,2H14L13.21,9.91L19.66,5.27L21.66,8.73L14.42,12L21.66,15.27L19.66,18.73L13.21,14.09L14,22H10L10.79,14.09L4.34,18.73L2.34,15.27L9.58,12L2.34,8.73L4.34,5.27L10.79,9.91L10,2Z" /></g><g id="at"><path d="M17.42,15C17.79,14.09 18,13.07 18,12C18,8.13 15.31,5 12,5C8.69,5 6,8.13 6,12C6,15.87 8.69,19 12,19C13.54,19 15,19 16,18.22V20.55C15,21 13.46,21 12,21C7.58,21 4,16.97 4,12C4,7.03 7.58,3 12,3C16.42,3 20,7.03 20,12C20,13.85 19.5,15.57 18.65,17H14V15.5C13.36,16.43 12.5,17 11.5,17C9.57,17 8,14.76 8,12C8,9.24 9.57,7 11.5,7C12.5,7 13.36,7.57 14,8.5V8H16V15H17.42M12,9C10.9,9 10,10.34 10,12C10,13.66 10.9,15 12,15C13.1,15 14,13.66 14,12C14,10.34 13.1,9 12,9Z" /></g><g id="attachment"><path d="M7.5,18A5.5,5.5 0 0,1 2,12.5A5.5,5.5 0 0,1 7.5,7H18A4,4 0 0,1 22,11A4,4 0 0,1 18,15H9.5A2.5,2.5 0 0,1 7,12.5A2.5,2.5 0 0,1 9.5,10H17V11.5H9.5A1,1 0 0,0 8.5,12.5A1,1 0 0,0 9.5,13.5H18A2.5,2.5 0 0,0 20.5,11A2.5,2.5 0 0,0 18,8.5H7.5A4,4 0 0,0 3.5,12.5A4,4 0 0,0 7.5,16.5H17V18H7.5Z" /></g><g id="audiobook"><path d="M18,22H6A2,2 0 0,1 4,20V4C4,2.89 4.9,2 6,2H7V9L9.5,7.5L12,9V2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22M13,15A2,2 0 0,0 11,17A2,2 0 0,0 13,19A2,2 0 0,0 15,17V12H18V10H14V15.27C13.71,15.1 13.36,15 13,15Z" /></g><g id="auto-fix"><path d="M7.5,5.6L5,7L6.4,4.5L5,2L7.5,3.4L10,2L8.6,4.5L10,7L7.5,5.6M19.5,15.4L22,14L20.6,16.5L22,19L19.5,17.6L17,19L18.4,16.5L17,14L19.5,15.4M22,2L20.6,4.5L22,7L19.5,5.6L17,7L18.4,4.5L17,2L19.5,3.4L22,2M13.34,12.78L15.78,10.34L13.66,8.22L11.22,10.66L13.34,12.78M14.37,7.29L16.71,9.63C17.1,10 17.1,10.65 16.71,11.04L5.04,22.71C4.65,23.1 4,23.1 3.63,22.71L1.29,20.37C0.9,20 0.9,19.35 1.29,18.96L12.96,7.29C13.35,6.9 14,6.9 14.37,7.29Z" /></g><g id="auto-upload"><path d="M5.35,12.65L6.5,9L7.65,12.65M5.5,7L2.3,16H4.2L4.9,14H8.1L8.8,16H10.7L7.5,7M11,20H22V18H11M14,16H19V11H22L16.5,5.5L11,11H14V16Z" /></g><g id="autorenew"><path d="M12,6V9L16,5L12,1V4A8,8 0 0,0 4,12C4,13.57 4.46,15.03 5.24,16.26L6.7,14.8C6.25,13.97 6,13 6,12A6,6 0 0,1 12,6M18.76,7.74L17.3,9.2C17.74,10.04 18,11 18,12A6,6 0 0,1 12,18V15L8,19L12,23V20A8,8 0 0,0 20,12C20,10.43 19.54,8.97 18.76,7.74Z" /></g><g id="av-timer"><path d="M11,17A1,1 0 0,0 12,18A1,1 0 0,0 13,17A1,1 0 0,0 12,16A1,1 0 0,0 11,17M11,3V7H13V5.08C16.39,5.57 19,8.47 19,12A7,7 0 0,1 12,19A7,7 0 0,1 5,12C5,10.32 5.59,8.78 6.58,7.58L12,13L13.41,11.59L6.61,4.79V4.81C4.42,6.45 3,9.05 3,12A9,9 0 0,0 12,21A9,9 0 0,0 21,12A9,9 0 0,0 12,3M18,12A1,1 0 0,0 17,11A1,1 0 0,0 16,12A1,1 0 0,0 17,13A1,1 0 0,0 18,12M6,12A1,1 0 0,0 7,13A1,1 0 0,0 8,12A1,1 0 0,0 7,11A1,1 0 0,0 6,12Z" /></g><g id="baby"><path d="M18.5,4A2.5,2.5 0 0,1 21,6.5A2.5,2.5 0 0,1 18.5,9A2.5,2.5 0 0,1 16,6.5A2.5,2.5 0 0,1 18.5,4M4.5,20A1.5,1.5 0 0,1 3,18.5A1.5,1.5 0 0,1 4.5,17H11.5A1.5,1.5 0 0,1 13,18.5A1.5,1.5 0 0,1 11.5,20H4.5M16.09,19L14.69,15H11L6.75,10.75C6.75,10.75 9,8.25 12.5,8.25C15.5,8.25 15.85,9.25 16.06,9.87L18.92,18C19.2,18.78 18.78,19.64 18,19.92C17.22,20.19 16.36,19.78 16.09,19Z" /></g><g id="baby-buggy"><path d="M13,2V10H21A8,8 0 0,0 13,2M19.32,15.89C20.37,14.54 21,12.84 21,11H6.44L5.5,9H2V11H4.22C4.22,11 6.11,15.07 6.34,15.42C5.24,16 4.5,17.17 4.5,18.5A3.5,3.5 0 0,0 8,22C9.76,22 11.22,20.7 11.46,19H13.54C13.78,20.7 15.24,22 17,22A3.5,3.5 0 0,0 20.5,18.5C20.5,17.46 20.04,16.53 19.32,15.89M8,20A1.5,1.5 0 0,1 6.5,18.5A1.5,1.5 0 0,1 8,17A1.5,1.5 0 0,1 9.5,18.5A1.5,1.5 0 0,1 8,20M17,20A1.5,1.5 0 0,1 15.5,18.5A1.5,1.5 0 0,1 17,17A1.5,1.5 0 0,1 18.5,18.5A1.5,1.5 0 0,1 17,20Z" /></g><g id="backburger"><path d="M5,13L9,17L7.6,18.42L1.18,12L7.6,5.58L9,7L5,11H21V13H5M21,6V8H11V6H21M21,16V18H11V16H21Z" /></g><g id="backspace"><path d="M22,3H7C6.31,3 5.77,3.35 5.41,3.88L0,12L5.41,20.11C5.77,20.64 6.31,21 7,21H22A2,2 0 0,0 24,19V5A2,2 0 0,0 22,3M19,15.59L17.59,17L14,13.41L10.41,17L9,15.59L12.59,12L9,8.41L10.41,7L14,10.59L17.59,7L19,8.41L15.41,12" /></g><g id="backup-restore"><path d="M12,3A9,9 0 0,0 3,12H0L4,16L8,12H5A7,7 0 0,1 12,5A7,7 0 0,1 19,12A7,7 0 0,1 12,19C10.5,19 9.09,18.5 7.94,17.7L6.5,19.14C8.04,20.3 9.94,21 12,21A9,9 0 0,0 21,12A9,9 0 0,0 12,3M14,12A2,2 0 0,0 12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12Z" /></g><g id="bandcamp"><path d="M22,6L15.5,18H2L8.5,6H22Z" /></g><g id="bank"><path d="M11.5,1L2,6V8H21V6M16,10V17H19V10M2,22H21V19H2M10,10V17H13V10M4,10V17H7V10H4Z" /></g><g id="barcode"><path d="M2,6H4V18H2V6M5,6H6V18H5V6M7,6H10V18H7V6M11,6H12V18H11V6M14,6H16V18H14V6M17,6H20V18H17V6M21,6H22V18H21V6Z" /></g><g id="barcode-scan"><path d="M4,6H6V18H4V6M7,6H8V18H7V6M9,6H12V18H9V6M13,6H14V18H13V6M16,6H18V18H16V6M19,6H20V18H19V6M2,4V8H0V4A2,2 0 0,1 2,2H6V4H2M22,2A2,2 0 0,1 24,4V8H22V4H18V2H22M2,16V20H6V22H2A2,2 0 0,1 0,20V16H2M22,20V16H24V20A2,2 0 0,1 22,22H18V20H22Z" /></g><g id="barley"><path d="M7.33,18.33C6.5,17.17 6.5,15.83 6.5,14.5C8.17,15.5 9.83,16.5 10.67,17.67L11,18.23V15.95C9.5,15.05 8.08,14.13 7.33,13.08C6.5,11.92 6.5,10.58 6.5,9.25C8.17,10.25 9.83,11.25 10.67,12.42L11,13V10.7C9.5,9.8 8.08,8.88 7.33,7.83C6.5,6.67 6.5,5.33 6.5,4C8.17,5 9.83,6 10.67,7.17C10.77,7.31 10.86,7.46 10.94,7.62C10.77,7 10.66,6.42 10.65,5.82C10.64,4.31 11.3,2.76 11.96,1.21C12.65,2.69 13.34,4.18 13.35,5.69C13.36,6.32 13.25,6.96 13.07,7.59C13.15,7.45 13.23,7.31 13.33,7.17C14.17,6 15.83,5 17.5,4C17.5,5.33 17.5,6.67 16.67,7.83C15.92,8.88 14.5,9.8 13,10.7V13L13.33,12.42C14.17,11.25 15.83,10.25 17.5,9.25C17.5,10.58 17.5,11.92 16.67,13.08C15.92,14.13 14.5,15.05 13,15.95V18.23L13.33,17.67C14.17,16.5 15.83,15.5 17.5,14.5C17.5,15.83 17.5,17.17 16.67,18.33C15.92,19.38 14.5,20.3 13,21.2V23H11V21.2C9.5,20.3 8.08,19.38 7.33,18.33Z" /></g><g id="barrel"><path d="M18,19H19V21H5V19H6V13H5V11H6V5H5V3H19V5H18V11H19V13H18V19M9,13A3,3 0 0,0 12,16A3,3 0 0,0 15,13C15,11 12,7.63 12,7.63C12,7.63 9,11 9,13Z" /></g><g id="basecamp"><path d="M3.39,15.64C3.4,15.55 3.42,15.45 3.45,15.36C3.5,15.18 3.54,15 3.6,14.84C3.82,14.19 4.16,13.58 4.5,13C4.7,12.7 4.89,12.41 5.07,12.12C5.26,11.83 5.45,11.54 5.67,11.26C6,10.81 6.45,10.33 7,10.15C7.79,9.9 8.37,10.71 8.82,11.22C9.08,11.5 9.36,11.8 9.71,11.97C9.88,12.04 10.06,12.08 10.24,12.07C10.5,12.05 10.73,11.87 10.93,11.71C11.46,11.27 11.9,10.7 12.31,10.15C12.77,9.55 13.21,8.93 13.73,8.38C13.95,8.15 14.18,7.85 14.5,7.75C14.62,7.71 14.77,7.72 14.91,7.78C15,7.82 15.05,7.87 15.1,7.92C15.17,8 15.25,8.04 15.32,8.09C15.88,8.5 16.4,9 16.89,9.5C17.31,9.93 17.72,10.39 18.1,10.86C18.5,11.32 18.84,11.79 19.15,12.3C19.53,12.93 19.85,13.58 20.21,14.21C20.53,14.79 20.86,15.46 20.53,16.12C20.5,16.15 20.5,16.19 20.5,16.22C19.91,17.19 18.88,17.79 17.86,18.18C16.63,18.65 15.32,18.88 14,18.97C12.66,19.07 11.3,19.06 9.95,18.94C8.73,18.82 7.5,18.6 6.36,18.16C5.4,17.79 4.5,17.25 3.84,16.43C3.69,16.23 3.56,16.03 3.45,15.81C3.43,15.79 3.42,15.76 3.41,15.74C3.39,15.7 3.38,15.68 3.39,15.64M2.08,16.5C2.22,16.73 2.38,16.93 2.54,17.12C2.86,17.5 3.23,17.85 3.62,18.16C4.46,18.81 5.43,19.28 6.44,19.61C7.6,20 8.82,20.19 10.04,20.29C11.45,20.41 12.89,20.41 14.3,20.26C15.6,20.12 16.91,19.85 18.13,19.37C19.21,18.94 20.21,18.32 21.08,17.54C21.31,17.34 21.53,17.13 21.7,16.88C21.86,16.67 22,16.44 22,16.18C22,15.88 22,15.57 21.92,15.27C21.85,14.94 21.76,14.62 21.68,14.3C21.65,14.18 21.62,14.06 21.59,13.94C21.27,12.53 20.78,11.16 20.12,9.87C19.56,8.79 18.87,7.76 18.06,6.84C17.31,6 16.43,5.22 15.43,4.68C14.9,4.38 14.33,4.15 13.75,4C13.44,3.88 13.12,3.81 12.8,3.74C12.71,3.73 12.63,3.71 12.55,3.71C12.44,3.71 12.33,3.71 12.23,3.71C12,3.71 11.82,3.71 11.61,3.71C11.5,3.71 11.43,3.7 11.33,3.71C11.25,3.72 11.16,3.74 11.08,3.75C10.91,3.78 10.75,3.81 10.59,3.85C10.27,3.92 9.96,4 9.65,4.14C9.04,4.38 8.47,4.7 7.93,5.08C6.87,5.8 5.95,6.73 5.18,7.75C4.37,8.83 3.71,10.04 3.21,11.3C2.67,12.64 2.3,14.04 2.07,15.47C2.04,15.65 2,15.84 2,16C2,16.12 2,16.22 2,16.32C2,16.37 2,16.4 2.03,16.44C2.04,16.46 2.06,16.5 2.08,16.5Z" /></g><g id="basket"><path d="M5.5,21C4.72,21 4.04,20.55 3.71,19.9V19.9L1.1,10.44L1,10A1,1 0 0,1 2,9H6.58L11.18,2.43C11.36,2.17 11.66,2 12,2C12.34,2 12.65,2.17 12.83,2.44L17.42,9H22A1,1 0 0,1 23,10L22.96,10.29L20.29,19.9C19.96,20.55 19.28,21 18.5,21H5.5M12,4.74L9,9H15L12,4.74M12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17A2,2 0 0,0 14,15A2,2 0 0,0 12,13Z" /></g><g id="basket-fill"><path d="M3,2H6V5H3V2M6,7H9V10H6V7M8,2H11V5H8V2M17,11L12,6H15V2H19V6H22L17,11M7.5,22C6.72,22 6.04,21.55 5.71,20.9V20.9L3.1,13.44L3,13A1,1 0 0,1 4,12H20A1,1 0 0,1 21,13L20.96,13.29L18.29,20.9C17.96,21.55 17.28,22 16.5,22H7.5M7.61,20H16.39L18.57,14H5.42L7.61,20Z" /></g><g id="basket-unfill"><path d="M3,10H6V7H3V10M5,5H8V2H5V5M8,10H11V7H8V10M17,1L12,6H15V10H19V6H22L17,1M7.5,22C6.72,22 6.04,21.55 5.71,20.9V20.9L3.1,13.44L3,13A1,1 0 0,1 4,12H20A1,1 0 0,1 21,13L20.96,13.29L18.29,20.9C17.96,21.55 17.28,22 16.5,22H7.5M7.61,20H16.39L18.57,14H5.42L7.61,20Z" /></g><g id="battery"><path d="M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z" /></g><g id="battery-10"><path d="M16,18H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z" /></g><g id="battery-20"><path d="M16,17H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z" /></g><g id="battery-30"><path d="M16,15H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z" /></g><g id="battery-40"><path d="M16,14H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z" /></g><g id="battery-50"><path d="M16,13H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z" /></g><g id="battery-60"><path d="M16,12H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z" /></g><g id="battery-70"><path d="M16,10H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z" /></g><g id="battery-80"><path d="M16,9H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z" /></g><g id="battery-90"><path d="M16,8H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z" /></g><g id="battery-alert"><path d="M13,14H11V9H13M13,18H11V16H13M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z" /></g><g id="battery-charging"><path d="M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.66C6,21.4 6.6,22 7.33,22H16.66C17.4,22 18,21.4 18,20.67V5.33C18,4.6 17.4,4 16.67,4M11,20V14.5H9L13,7V12.5H15" /></g><g id="battery-charging-100"><path d="M23,11H20V4L15,14H18V22M12.67,4H11V2H5V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4Z" /></g><g id="battery-charging-20"><path d="M23.05,11H20.05V4L15.05,14H18.05V22M12.05,17H4.05V6H12.05M12.72,4H11.05V2H5.05V4H3.38A1.33,1.33 0 0,0 2.05,5.33V20.67C2.05,21.4 2.65,22 3.38,22H12.72C13.45,22 14.05,21.4 14.05,20.67V5.33A1.33,1.33 0 0,0 12.72,4Z" /></g><g id="battery-charging-30"><path d="M12,15H4V6H12M12.67,4H11V2H5V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4M23,11H20V4L15,14H18V22L23,11Z" /></g><g id="battery-charging-40"><path d="M23,11H20V4L15,14H18V22M12,13H4V6H12M12.67,4H11V2H5V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4Z" /></g><g id="battery-charging-60"><path d="M12,11H4V6H12M12.67,4H11V2H5V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4M23,11H20V4L15,14H18V22L23,11Z" /></g><g id="battery-charging-80"><path d="M23,11H20V4L15,14H18V22M12,9H4V6H12M12.67,4H11V2H5V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4Z" /></g><g id="battery-charging-90"><path d="M23,11H20V4L15,14H18V22M12,8H4V6H12M12.67,4H11V2H5V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4Z" /></g><g id="battery-minus"><path d="M16.67,4C17.4,4 18,4.6 18,5.33V20.67A1.33,1.33 0 0,1 16.67,22H7.33C6.6,22 6,21.4 6,20.67V5.33A1.33,1.33 0 0,1 7.33,4H9V2H15V4H16.67M8,12V14H16V12" /></g><g id="battery-negative"><path d="M11.67,4A1.33,1.33 0 0,1 13,5.33V20.67C13,21.4 12.4,22 11.67,22H2.33C1.6,22 1,21.4 1,20.67V5.33A1.33,1.33 0 0,1 2.33,4H4V2H10V4H11.67M15,12H23V14H15V12M3,13H11V6H3V13Z" /></g><g id="battery-outline"><path d="M16,20H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z" /></g><g id="battery-plus"><path d="M16.67,4C17.4,4 18,4.6 18,5.33V20.67A1.33,1.33 0 0,1 16.67,22H7.33C6.6,22 6,21.4 6,20.67V5.33A1.33,1.33 0 0,1 7.33,4H9V2H15V4H16.67M16,14V12H13V9H11V12H8V14H11V17H13V14H16Z" /></g><g id="battery-positive"><path d="M11.67,4A1.33,1.33 0 0,1 13,5.33V20.67C13,21.4 12.4,22 11.67,22H2.33C1.6,22 1,21.4 1,20.67V5.33A1.33,1.33 0 0,1 2.33,4H4V2H10V4H11.67M23,14H20V17H18V14H15V12H18V9H20V12H23V14M3,13H11V6H3V13Z" /></g><g id="battery-unknown"><path d="M15.07,12.25L14.17,13.17C13.63,13.71 13.25,14.18 13.09,15H11.05C11.16,14.1 11.56,13.28 12.17,12.67L13.41,11.41C13.78,11.05 14,10.55 14,10C14,8.89 13.1,8 12,8A2,2 0 0,0 10,10H8A4,4 0 0,1 12,6A4,4 0 0,1 16,10C16,10.88 15.64,11.68 15.07,12.25M13,19H11V17H13M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.66C6,21.4 6.6,22 7.33,22H16.67C17.4,22 18,21.4 18,20.66V5.33C18,4.59 17.4,4 16.67,4Z" /></g><g id="beach"><path d="M15,18.54C17.13,18.21 19.5,18 22,18V22H5C5,21.35 8.2,19.86 13,18.9V12.4C12.16,12.65 11.45,13.21 11,13.95C10.39,12.93 9.27,12.25 8,12.25C6.73,12.25 5.61,12.93 5,13.95C5.03,10.37 8.5,7.43 13,7.04V7A1,1 0 0,1 14,6A1,1 0 0,1 15,7V7.04C19.5,7.43 22.96,10.37 23,13.95C22.39,12.93 21.27,12.25 20,12.25C18.73,12.25 17.61,12.93 17,13.95C16.55,13.21 15.84,12.65 15,12.39V18.54M7,2A5,5 0 0,1 2,7V2H7Z" /></g><g id="beaker"><path d="M3,3H21V5A2,2 0 0,0 19,7V19A2,2 0 0,1 17,21H7A2,2 0 0,1 5,19V7A2,2 0 0,0 3,5V3M7,5V7H12V8H7V9H10V10H7V11H10V12H7V13H12V14H7V15H10V16H7V19H17V5H7Z" /></g><g id="beats"><path d="M7,12A5,5 0 0,0 12,17A5,5 0 0,0 17,12A5,5 0 0,0 12,7C10.87,7 9.84,7.37 9,8V2.46C9.95,2.16 10.95,2 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12C2,8.3 4,5.07 7,3.34V12M14.5,12C14.5,12.37 14.3,12.68 14,12.86L12.11,14.29C11.94,14.42 11.73,14.5 11.5,14.5A1,1 0 0,1 10.5,13.5V10.5A1,1 0 0,1 11.5,9.5C11.73,9.5 11.94,9.58 12.11,9.71L14,11.14C14.3,11.32 14.5,11.63 14.5,12Z" /></g><g id="beer"><path d="M4,2H19L17,22H6L4,2M6.2,4L7.8,20H8.8L7.43,6.34C8.5,6 9.89,5.89 11,7C12.56,8.56 15.33,7.69 16.5,7.23L16.8,4H6.2Z" /></g><g id="behance"><path d="M19.58,12.27C19.54,11.65 19.33,11.18 18.96,10.86C18.59,10.54 18.13,10.38 17.58,10.38C17,10.38 16.5,10.55 16.19,10.89C15.86,11.23 15.65,11.69 15.57,12.27M21.92,12.04C22,12.45 22,13.04 22,13.81H15.5C15.55,14.71 15.85,15.33 16.44,15.69C16.79,15.92 17.22,16.03 17.73,16.03C18.26,16.03 18.69,15.89 19,15.62C19.2,15.47 19.36,15.27 19.5,15H21.88C21.82,15.54 21.53,16.07 21,16.62C20.22,17.5 19.1,17.92 17.66,17.92C16.47,17.92 15.43,17.55 14.5,16.82C13.62,16.09 13.16,14.9 13.16,13.25C13.16,11.7 13.57,10.5 14.39,9.7C15.21,8.87 16.27,8.46 17.58,8.46C18.35,8.46 19.05,8.6 19.67,8.88C20.29,9.16 20.81,9.59 21.21,10.2C21.58,10.73 21.81,11.34 21.92,12.04M9.58,14.07C9.58,13.42 9.31,12.97 8.79,12.73C8.5,12.6 8.08,12.53 7.54,12.5H4.87V15.84H7.5C8.04,15.84 8.46,15.77 8.76,15.62C9.31,15.35 9.58,14.83 9.58,14.07M4.87,10.46H7.5C8.04,10.46 8.5,10.36 8.82,10.15C9.16,9.95 9.32,9.58 9.32,9.06C9.32,8.5 9.1,8.1 8.66,7.91C8.27,7.78 7.78,7.72 7.19,7.72H4.87M11.72,12.42C12.04,12.92 12.2,13.53 12.2,14.24C12.2,15 12,15.64 11.65,16.23C11.41,16.62 11.12,16.94 10.77,17.21C10.37,17.5 9.9,17.72 9.36,17.83C8.82,17.94 8.24,18 7.61,18H2V5.55H8C9.53,5.58 10.6,6 11.23,6.88C11.61,7.41 11.8,8.04 11.8,8.78C11.8,9.54 11.61,10.15 11.23,10.61C11,10.87 10.7,11.11 10.28,11.32C10.91,11.55 11.39,11.92 11.72,12.42M20.06,7.32H15.05V6.07H20.06V7.32Z" /></g><g id="bell"><path d="M14,20A2,2 0 0,1 12,22A2,2 0 0,1 10,20H14M12,2A1,1 0 0,1 13,3V4.08C15.84,4.56 18,7.03 18,10V16L21,19H3L6,16V10C6,7.03 8.16,4.56 11,4.08V3A1,1 0 0,1 12,2Z" /></g><g id="bell-off"><path d="M14,20A2,2 0 0,1 12,22A2,2 0 0,1 10,20H14M19.74,21.57L17.17,19H3L6,16V10C6,9.35 6.1,8.72 6.3,8.13L3.47,5.3L4.89,3.89L7.29,6.29L21.15,20.15L19.74,21.57M11,4.08V3A1,1 0 0,1 12,2A1,1 0 0,1 13,3V4.08C15.84,4.56 18,7.03 18,10V14.17L8.77,4.94C9.44,4.5 10.19,4.22 11,4.08Z" /></g><g id="bell-outline"><path d="M16,17H7V10.5C7,8 9,6 11.5,6C14,6 16,8 16,10.5M18,16V10.5C18,7.43 15.86,4.86 13,4.18V3.5A1.5,1.5 0 0,0 11.5,2A1.5,1.5 0 0,0 10,3.5V4.18C7.13,4.86 5,7.43 5,10.5V16L3,18V19H20V18M11.5,22A2,2 0 0,0 13.5,20H9.5A2,2 0 0,0 11.5,22Z" /></g><g id="bell-plus"><path d="M10,21C10,22.11 10.9,23 12,23A2,2 0 0,0 14,21M18.88,16.82V11C18.88,7.75 16.63,5.03 13.59,4.31V3.59A1.59,1.59 0 0,0 12,2A1.59,1.59 0 0,0 10.41,3.59V4.31C7.37,5.03 5.12,7.75 5.12,11V16.82L3,18.94V20H21V18.94M16,13H13V16H11V13H8V11H11V8H13V11H16" /></g><g id="bell-ring"><path d="M11.5,22C11.64,22 11.77,22 11.9,21.96C12.55,21.82 13.09,21.38 13.34,20.78C13.44,20.54 13.5,20.27 13.5,20H9.5A2,2 0 0,0 11.5,22M18,10.5C18,7.43 15.86,4.86 13,4.18V3.5A1.5,1.5 0 0,0 11.5,2A1.5,1.5 0 0,0 10,3.5V4.18C7.13,4.86 5,7.43 5,10.5V16L3,18V19H20V18L18,16M19.97,10H21.97C21.82,6.79 20.24,3.97 17.85,2.15L16.42,3.58C18.46,5 19.82,7.35 19.97,10M6.58,3.58L5.15,2.15C2.76,3.97 1.18,6.79 1,10H3C3.18,7.35 4.54,5 6.58,3.58Z" /></g><g id="bell-ring-outline"><path d="M16,17V10.5C16,8 14,6 11.5,6C9,6 7,8 7,10.5V17H16M18,16L20,18V19H3V18L5,16V10.5C5,7.43 7.13,4.86 10,4.18V3.5A1.5,1.5 0 0,1 11.5,2A1.5,1.5 0 0,1 13,3.5V4.18C15.86,4.86 18,7.43 18,10.5V16M11.5,22A2,2 0 0,1 9.5,20H13.5A2,2 0 0,1 11.5,22M19.97,10C19.82,7.35 18.46,5 16.42,3.58L17.85,2.15C20.24,3.97 21.82,6.79 21.97,10H19.97M6.58,3.58C4.54,5 3.18,7.35 3,10H1C1.18,6.79 2.76,3.97 5.15,2.15L6.58,3.58Z" /></g><g id="bell-sleep"><path d="M14,9.8L11.2,13.2H14V15H9V13.2L11.8,9.8H9V8H14M18,16V10.5C18,7.43 15.86,4.86 13,4.18V3.5A1.5,1.5 0 0,0 11.5,2A1.5,1.5 0 0,0 10,3.5V4.18C7.13,4.86 5,7.43 5,10.5V16L3,18V19H20V18M11.5,22A2,2 0 0,0 13.5,20H9.5A2,2 0 0,0 11.5,22Z" /></g><g id="beta"><path d="M9.23,17.59V23.12H6.88V6.72C6.88,5.27 7.31,4.13 8.16,3.28C9,2.43 10.17,2 11.61,2C13,2 14.07,2.34 14.87,3C15.66,3.68 16.05,4.62 16.05,5.81C16.05,6.63 15.79,7.4 15.27,8.11C14.75,8.82 14.08,9.31 13.25,9.58V9.62C14.5,9.82 15.47,10.27 16.13,11C16.79,11.71 17.12,12.62 17.12,13.74C17.12,15.06 16.66,16.14 15.75,16.97C14.83,17.8 13.63,18.21 12.13,18.21C11.07,18.21 10.1,18 9.23,17.59M10.72,10.75V8.83C11.59,8.72 12.3,8.4 12.87,7.86C13.43,7.31 13.71,6.7 13.71,6C13.71,4.62 13,3.92 11.6,3.92C10.84,3.92 10.25,4.16 9.84,4.65C9.43,5.14 9.23,5.82 9.23,6.71V15.5C10.14,16.03 11.03,16.29 11.89,16.29C12.73,16.29 13.39,16.07 13.86,15.64C14.33,15.2 14.56,14.58 14.56,13.79C14.56,12 13.28,11 10.72,10.75Z" /></g><g id="bible"><path d="M5.81,2H7V9L9.5,7.5L12,9V2H18A2,2 0 0,1 20,4V20C20,21.05 19.05,22 18,22H6C4.95,22 4,21.05 4,20V4C4,3 4.83,2.09 5.81,2M13,10V13H10V15H13V20H15V15H18V13H15V10H13Z" /></g><g id="bike"><path d="M5,20.5A3.5,3.5 0 0,1 1.5,17A3.5,3.5 0 0,1 5,13.5A3.5,3.5 0 0,1 8.5,17A3.5,3.5 0 0,1 5,20.5M5,12A5,5 0 0,0 0,17A5,5 0 0,0 5,22A5,5 0 0,0 10,17A5,5 0 0,0 5,12M14.8,10H19V8.2H15.8L13.86,4.93C13.57,4.43 13,4.1 12.4,4.1C11.93,4.1 11.5,4.29 11.2,4.6L7.5,8.29C7.19,8.6 7,9 7,9.5C7,10.13 7.33,10.66 7.85,10.97L11.2,13V18H13V11.5L10.75,9.85L13.07,7.5M19,20.5A3.5,3.5 0 0,1 15.5,17A3.5,3.5 0 0,1 19,13.5A3.5,3.5 0 0,1 22.5,17A3.5,3.5 0 0,1 19,20.5M19,12A5,5 0 0,0 14,17A5,5 0 0,0 19,22A5,5 0 0,0 24,17A5,5 0 0,0 19,12M16,4.8C17,4.8 17.8,4 17.8,3C17.8,2 17,1.2 16,1.2C15,1.2 14.2,2 14.2,3C14.2,4 15,4.8 16,4.8Z" /></g><g id="bing"><path d="M5,3V19L8.72,21L18,15.82V11.73H18L9.77,8.95L11.38,12.84L13.94,14L8.7,16.92V4.27L5,3" /></g><g id="binoculars"><path d="M11,6H13V13H11V6M9,20A1,1 0 0,1 8,21H5A1,1 0 0,1 4,20V15L6,6H10V13A1,1 0 0,1 9,14V20M10,5H7V3H10V5M15,20V14A1,1 0 0,1 14,13V6H18L20,15V20A1,1 0 0,1 19,21H16A1,1 0 0,1 15,20M14,5V3H17V5H14Z" /></g><g id="bio"><path d="M17,12H20A2,2 0 0,1 22,14V17A2,2 0 0,1 20,19H17A2,2 0 0,1 15,17V14A2,2 0 0,1 17,12M17,14V17H20V14H17M2,7H7A2,2 0 0,1 9,9V11A2,2 0 0,1 7,13A2,2 0 0,1 9,15V17A2,2 0 0,1 7,19H2V13L2,7M4,9V12H7V9H4M4,17H7V14H4V17M11,13H13V19H11V13M11,9H13V11H11V9Z" /></g><g id="biohazard"><path d="M23,16.06C23,16.29 23,16.5 22.96,16.7C22.78,14.14 20.64,12.11 18,12.11C17.63,12.11 17.27,12.16 16.92,12.23C16.96,12.5 17,12.73 17,13C17,15.35 15.31,17.32 13.07,17.81C13.42,20.05 15.31,21.79 17.65,21.96C17.43,22 17.22,22 17,22C14.92,22 13.07,20.94 12,19.34C10.93,20.94 9.09,22 7,22C6.78,22 6.57,22 6.35,21.96C8.69,21.79 10.57,20.06 10.93,17.81C8.68,17.32 7,15.35 7,13C7,12.73 7.04,12.5 7.07,12.23C6.73,12.16 6.37,12.11 6,12.11C3.36,12.11 1.22,14.14 1.03,16.7C1,16.5 1,16.29 1,16.06C1,12.85 3.59,10.24 6.81,10.14C6.3,9.27 6,8.25 6,7.17C6,4.94 7.23,3 9.06,2C7.81,2.9 7,4.34 7,6C7,7.35 7.56,8.59 8.47,9.5C9.38,8.59 10.62,8.04 12,8.04C13.37,8.04 14.62,8.59 15.5,9.5C16.43,8.59 17,7.35 17,6C17,4.34 16.18,2.9 14.94,2C16.77,3 18,4.94 18,7.17C18,8.25 17.7,9.27 17.19,10.14C20.42,10.24 23,12.85 23,16.06M9.27,10.11C10.05,10.62 11,10.92 12,10.92C13,10.92 13.95,10.62 14.73,10.11C14,9.45 13.06,9.03 12,9.03C10.94,9.03 10,9.45 9.27,10.11M12,14.47C12.82,14.47 13.5,13.8 13.5,13A1.5,1.5 0 0,0 12,11.5A1.5,1.5 0 0,0 10.5,13C10.5,13.8 11.17,14.47 12,14.47M10.97,16.79C10.87,14.9 9.71,13.29 8.05,12.55C8.03,12.7 8,12.84 8,13C8,14.82 9.27,16.34 10.97,16.79M15.96,12.55C14.29,13.29 13.12,14.9 13,16.79C14.73,16.34 16,14.82 16,13C16,12.84 15.97,12.7 15.96,12.55Z" /></g><g id="bitbucket"><path d="M12,5.76C15.06,5.77 17.55,5.24 17.55,4.59C17.55,3.94 15.07,3.41 12,3.4C8.94,3.4 6.45,3.92 6.45,4.57C6.45,5.23 8.93,5.76 12,5.76M12,14.4C13.5,14.4 14.75,13.16 14.75,11.64A2.75,2.75 0 0,0 12,8.89C10.5,8.89 9.25,10.12 9.25,11.64C9.25,13.16 10.5,14.4 12,14.4M12,2C16.77,2 20.66,3.28 20.66,4.87C20.66,5.29 19.62,11.31 19.21,13.69C19.03,14.76 16.26,16.33 12,16.33V16.31L12,16.33C7.74,16.33 4.97,14.76 4.79,13.69C4.38,11.31 3.34,5.29 3.34,4.87C3.34,3.28 7.23,2 12,2M18.23,16.08C18.38,16.08 18.53,16.19 18.53,16.42V16.5C18.19,18.26 17.95,19.5 17.91,19.71C17.62,21 15.07,22 12,22V22C8.93,22 6.38,21 6.09,19.71C6.05,19.5 5.81,18.26 5.47,16.5V16.42C5.47,16.19 5.62,16.08 5.77,16.08C5.91,16.08 6,16.17 6,16.17C6,16.17 8.14,17.86 12,17.86C15.86,17.86 18,16.17 18,16.17C18,16.17 18.09,16.08 18.23,16.08M13.38,11.64C13.38,12.4 12.76,13 12,13C11.24,13 10.62,12.4 10.62,11.64A1.38,1.38 0 0,1 12,10.26A1.38,1.38 0 0,1 13.38,11.64Z" /></g><g id="black-mesa"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12C4,14.39 5.05,16.53 6.71,18H9V12H17L19.15,15.59C19.69,14.5 20,13.29 20,12A8,8 0 0,0 12,4Z" /></g><g id="blackberry"><path d="M5.45,10.28C6.4,10.28 7.5,11.05 7.5,12C7.5,12.95 6.4,13.72 5.45,13.72H2L2.69,10.28H5.45M6.14,4.76C7.09,4.76 8.21,5.53 8.21,6.5C8.21,7.43 7.09,8.21 6.14,8.21H2.69L3.38,4.76H6.14M13.03,4.76C14,4.76 15.1,5.53 15.1,6.5C15.1,7.43 14,8.21 13.03,8.21H9.41L10.1,4.76H13.03M12.34,10.28C13.3,10.28 14.41,11.05 14.41,12C14.41,12.95 13.3,13.72 12.34,13.72H8.72L9.41,10.28H12.34M10.97,15.79C11.92,15.79 13.03,16.57 13.03,17.5C13.03,18.47 11.92,19.24 10.97,19.24H7.5L8.21,15.79H10.97M18.55,13.72C19.5,13.72 20.62,14.5 20.62,15.45C20.62,16.4 19.5,17.17 18.55,17.17H15.1L15.79,13.72H18.55M19.93,8.21C20.88,8.21 22,9 22,9.93C22,10.88 20.88,11.66 19.93,11.66H16.5L17.17,8.21H19.93Z" /></g><g id="blender"><path d="M8,3C8,3.34 8.17,3.69 8.5,3.88L12,6H2.5A1.5,1.5 0 0,0 1,7.5A1.5,1.5 0 0,0 2.5,9H8.41L2,13C1.16,13.5 1,14.22 1,15C1,16 1.77,17 3,17C3.69,17 4.39,16.5 5,16L7,14.38C7.2,18.62 10.71,22 15,22A8,8 0 0,0 23,14C23,11.08 21.43,8.5 19.09,7.13C19.06,7.11 19.03,7.08 19,7.06C19,7.06 18.92,7 18.86,6.97C15.76,4.88 13.03,3.72 9.55,2.13C9.34,2.04 9.16,2 9,2C8.4,2 8,2.46 8,3M15,9A5,5 0 0,1 20,14A5,5 0 0,1 15,19A5,5 0 0,1 10,14A5,5 0 0,1 15,9M15,10.5A3.5,3.5 0 0,0 11.5,14A3.5,3.5 0 0,0 15,17.5A3.5,3.5 0 0,0 18.5,14A3.5,3.5 0 0,0 15,10.5Z" /></g><g id="blinds"><path d="M3,2H21A1,1 0 0,1 22,3V5A1,1 0 0,1 21,6H20V13A1,1 0 0,1 19,14H13V16.17C14.17,16.58 15,17.69 15,19A3,3 0 0,1 12,22A3,3 0 0,1 9,19C9,17.69 9.83,16.58 11,16.17V14H5A1,1 0 0,1 4,13V6H3A1,1 0 0,1 2,5V3A1,1 0 0,1 3,2M12,18A1,1 0 0,0 11,19A1,1 0 0,0 12,20A1,1 0 0,0 13,19A1,1 0 0,0 12,18Z" /></g><g id="block-helper"><path d="M12,0A12,12 0 0,1 24,12A12,12 0 0,1 12,24A12,12 0 0,1 0,12A12,12 0 0,1 12,0M12,2A10,10 0 0,0 2,12C2,14.4 2.85,16.6 4.26,18.33L18.33,4.26C16.6,2.85 14.4,2 12,2M12,22A10,10 0 0,0 22,12C22,9.6 21.15,7.4 19.74,5.67L5.67,19.74C7.4,21.15 9.6,22 12,22Z" /></g><g id="blogger"><path d="M14,13H9.95A1,1 0 0,0 8.95,14A1,1 0 0,0 9.95,15H14A1,1 0 0,0 15,14A1,1 0 0,0 14,13M9.95,10H12.55A1,1 0 0,0 13.55,9A1,1 0 0,0 12.55,8H9.95A1,1 0 0,0 8.95,9A1,1 0 0,0 9.95,10M16,9V10A1,1 0 0,0 17,11A1,1 0 0,1 18,12V15A3,3 0 0,1 15,18H9A3,3 0 0,1 6,15V8A3,3 0 0,1 9,5H13A3,3 0 0,1 16,8M20,2H4C2.89,2 2,2.89 2,4V20A2,2 0 0,0 4,22H20A2,2 0 0,0 22,20V4C22,2.89 21.1,2 20,2Z" /></g><g id="bluetooth"><path d="M14.88,16.29L13,18.17V14.41M13,5.83L14.88,7.71L13,9.58M17.71,7.71L12,2H11V9.58L6.41,5L5,6.41L10.59,12L5,17.58L6.41,19L11,14.41V22H12L17.71,16.29L13.41,12L17.71,7.71Z" /></g><g id="bluetooth-audio"><path d="M12.88,16.29L11,18.17V14.41M11,5.83L12.88,7.71L11,9.58M15.71,7.71L10,2H9V9.58L4.41,5L3,6.41L8.59,12L3,17.58L4.41,19L9,14.41V22H10L15.71,16.29L11.41,12M19.53,6.71L18.26,8C18.89,9.18 19.25,10.55 19.25,12C19.25,13.45 18.89,14.82 18.26,16L19.46,17.22C20.43,15.68 21,13.87 21,11.91C21,10 20.46,8.23 19.53,6.71M14.24,12L16.56,14.33C16.84,13.6 17,12.82 17,12C17,11.18 16.84,10.4 16.57,9.68L14.24,12Z" /></g><g id="bluetooth-connect"><path d="M19,10L17,12L19,14L21,12M14.88,16.29L13,18.17V14.41M13,5.83L14.88,7.71L13,9.58M17.71,7.71L12,2H11V9.58L6.41,5L5,6.41L10.59,12L5,17.58L6.41,19L11,14.41V22H12L17.71,16.29L13.41,12M7,12L5,10L3,12L5,14L7,12Z" /></g><g id="bluetooth-off"><path d="M13,5.83L14.88,7.71L13.28,9.31L14.69,10.72L17.71,7.7L12,2H11V7.03L13,9.03M5.41,4L4,5.41L10.59,12L5,17.59L6.41,19L11,14.41V22H12L16.29,17.71L18.59,20L20,18.59M13,18.17V14.41L14.88,16.29" /></g><g id="bluetooth-settings"><path d="M14.88,14.29L13,16.17V12.41L14.88,14.29M13,3.83L14.88,5.71L13,7.59M17.71,5.71L12,0H11V7.59L6.41,3L5,4.41L10.59,10L5,15.59L6.41,17L11,12.41V20H12L17.71,14.29L13.41,10L17.71,5.71M15,24H17V22H15M7,24H9V22H7M11,24H13V22H11V24Z" /></g><g id="bluetooth-transfer"><path d="M14.71,7.71L10.41,12L14.71,16.29L9,22H8V14.41L3.41,19L2,17.59L7.59,12L2,6.41L3.41,5L8,9.59V2H9L14.71,7.71M10,5.83V9.59L11.88,7.71L10,5.83M11.88,16.29L10,14.41V18.17L11.88,16.29M22,8H20V11H18V8H16L19,4L22,8M22,16L19,20L16,16H18V13H20V16H22Z" /></g><g id="blur"><path d="M14,8.5A1.5,1.5 0 0,0 12.5,10A1.5,1.5 0 0,0 14,11.5A1.5,1.5 0 0,0 15.5,10A1.5,1.5 0 0,0 14,8.5M14,12.5A1.5,1.5 0 0,0 12.5,14A1.5,1.5 0 0,0 14,15.5A1.5,1.5 0 0,0 15.5,14A1.5,1.5 0 0,0 14,12.5M10,17A1,1 0 0,0 9,18A1,1 0 0,0 10,19A1,1 0 0,0 11,18A1,1 0 0,0 10,17M10,8.5A1.5,1.5 0 0,0 8.5,10A1.5,1.5 0 0,0 10,11.5A1.5,1.5 0 0,0 11.5,10A1.5,1.5 0 0,0 10,8.5M14,20.5A0.5,0.5 0 0,0 13.5,21A0.5,0.5 0 0,0 14,21.5A0.5,0.5 0 0,0 14.5,21A0.5,0.5 0 0,0 14,20.5M14,17A1,1 0 0,0 13,18A1,1 0 0,0 14,19A1,1 0 0,0 15,18A1,1 0 0,0 14,17M21,13.5A0.5,0.5 0 0,0 20.5,14A0.5,0.5 0 0,0 21,14.5A0.5,0.5 0 0,0 21.5,14A0.5,0.5 0 0,0 21,13.5M18,5A1,1 0 0,0 17,6A1,1 0 0,0 18,7A1,1 0 0,0 19,6A1,1 0 0,0 18,5M18,9A1,1 0 0,0 17,10A1,1 0 0,0 18,11A1,1 0 0,0 19,10A1,1 0 0,0 18,9M18,17A1,1 0 0,0 17,18A1,1 0 0,0 18,19A1,1 0 0,0 19,18A1,1 0 0,0 18,17M18,13A1,1 0 0,0 17,14A1,1 0 0,0 18,15A1,1 0 0,0 19,14A1,1 0 0,0 18,13M10,12.5A1.5,1.5 0 0,0 8.5,14A1.5,1.5 0 0,0 10,15.5A1.5,1.5 0 0,0 11.5,14A1.5,1.5 0 0,0 10,12.5M10,7A1,1 0 0,0 11,6A1,1 0 0,0 10,5A1,1 0 0,0 9,6A1,1 0 0,0 10,7M10,3.5A0.5,0.5 0 0,0 10.5,3A0.5,0.5 0 0,0 10,2.5A0.5,0.5 0 0,0 9.5,3A0.5,0.5 0 0,0 10,3.5M10,20.5A0.5,0.5 0 0,0 9.5,21A0.5,0.5 0 0,0 10,21.5A0.5,0.5 0 0,0 10.5,21A0.5,0.5 0 0,0 10,20.5M3,13.5A0.5,0.5 0 0,0 2.5,14A0.5,0.5 0 0,0 3,14.5A0.5,0.5 0 0,0 3.5,14A0.5,0.5 0 0,0 3,13.5M14,3.5A0.5,0.5 0 0,0 14.5,3A0.5,0.5 0 0,0 14,2.5A0.5,0.5 0 0,0 13.5,3A0.5,0.5 0 0,0 14,3.5M14,7A1,1 0 0,0 15,6A1,1 0 0,0 14,5A1,1 0 0,0 13,6A1,1 0 0,0 14,7M21,10.5A0.5,0.5 0 0,0 21.5,10A0.5,0.5 0 0,0 21,9.5A0.5,0.5 0 0,0 20.5,10A0.5,0.5 0 0,0 21,10.5M6,5A1,1 0 0,0 5,6A1,1 0 0,0 6,7A1,1 0 0,0 7,6A1,1 0 0,0 6,5M3,9.5A0.5,0.5 0 0,0 2.5,10A0.5,0.5 0 0,0 3,10.5A0.5,0.5 0 0,0 3.5,10A0.5,0.5 0 0,0 3,9.5M6,9A1,1 0 0,0 5,10A1,1 0 0,0 6,11A1,1 0 0,0 7,10A1,1 0 0,0 6,9M6,17A1,1 0 0,0 5,18A1,1 0 0,0 6,19A1,1 0 0,0 7,18A1,1 0 0,0 6,17M6,13A1,1 0 0,0 5,14A1,1 0 0,0 6,15A1,1 0 0,0 7,14A1,1 0 0,0 6,13Z" /></g><g id="blur-linear"><path d="M13,17A1,1 0 0,0 14,16A1,1 0 0,0 13,15A1,1 0 0,0 12,16A1,1 0 0,0 13,17M13,13A1,1 0 0,0 14,12A1,1 0 0,0 13,11A1,1 0 0,0 12,12A1,1 0 0,0 13,13M13,9A1,1 0 0,0 14,8A1,1 0 0,0 13,7A1,1 0 0,0 12,8A1,1 0 0,0 13,9M17,12.5A0.5,0.5 0 0,0 17.5,12A0.5,0.5 0 0,0 17,11.5A0.5,0.5 0 0,0 16.5,12A0.5,0.5 0 0,0 17,12.5M17,8.5A0.5,0.5 0 0,0 17.5,8A0.5,0.5 0 0,0 17,7.5A0.5,0.5 0 0,0 16.5,8A0.5,0.5 0 0,0 17,8.5M3,3V5H21V3M17,16.5A0.5,0.5 0 0,0 17.5,16A0.5,0.5 0 0,0 17,15.5A0.5,0.5 0 0,0 16.5,16A0.5,0.5 0 0,0 17,16.5M9,17A1,1 0 0,0 10,16A1,1 0 0,0 9,15A1,1 0 0,0 8,16A1,1 0 0,0 9,17M5,13.5A1.5,1.5 0 0,0 6.5,12A1.5,1.5 0 0,0 5,10.5A1.5,1.5 0 0,0 3.5,12A1.5,1.5 0 0,0 5,13.5M5,9.5A1.5,1.5 0 0,0 6.5,8A1.5,1.5 0 0,0 5,6.5A1.5,1.5 0 0,0 3.5,8A1.5,1.5 0 0,0 5,9.5M3,21H21V19H3M9,9A1,1 0 0,0 10,8A1,1 0 0,0 9,7A1,1 0 0,0 8,8A1,1 0 0,0 9,9M9,13A1,1 0 0,0 10,12A1,1 0 0,0 9,11A1,1 0 0,0 8,12A1,1 0 0,0 9,13M5,17.5A1.5,1.5 0 0,0 6.5,16A1.5,1.5 0 0,0 5,14.5A1.5,1.5 0 0,0 3.5,16A1.5,1.5 0 0,0 5,17.5Z" /></g><g id="blur-off"><path d="M3,13.5A0.5,0.5 0 0,0 2.5,14A0.5,0.5 0 0,0 3,14.5A0.5,0.5 0 0,0 3.5,14A0.5,0.5 0 0,0 3,13.5M6,17A1,1 0 0,0 5,18A1,1 0 0,0 6,19A1,1 0 0,0 7,18A1,1 0 0,0 6,17M10,20.5A0.5,0.5 0 0,0 9.5,21A0.5,0.5 0 0,0 10,21.5A0.5,0.5 0 0,0 10.5,21A0.5,0.5 0 0,0 10,20.5M3,9.5A0.5,0.5 0 0,0 2.5,10A0.5,0.5 0 0,0 3,10.5A0.5,0.5 0 0,0 3.5,10A0.5,0.5 0 0,0 3,9.5M6,13A1,1 0 0,0 5,14A1,1 0 0,0 6,15A1,1 0 0,0 7,14A1,1 0 0,0 6,13M21,13.5A0.5,0.5 0 0,0 20.5,14A0.5,0.5 0 0,0 21,14.5A0.5,0.5 0 0,0 21.5,14A0.5,0.5 0 0,0 21,13.5M10,17A1,1 0 0,0 9,18A1,1 0 0,0 10,19A1,1 0 0,0 11,18A1,1 0 0,0 10,17M2.5,5.27L6.28,9.05L6,9A1,1 0 0,0 5,10A1,1 0 0,0 6,11A1,1 0 0,0 7,10C7,9.9 6.97,9.81 6.94,9.72L9.75,12.53C9.04,12.64 8.5,13.26 8.5,14A1.5,1.5 0 0,0 10,15.5C10.74,15.5 11.36,14.96 11.47,14.25L14.28,17.06C14.19,17.03 14.1,17 14,17A1,1 0 0,0 13,18A1,1 0 0,0 14,19A1,1 0 0,0 15,18C15,17.9 14.97,17.81 14.94,17.72L18.72,21.5L20,20.23L3.77,4L2.5,5.27M14,20.5A0.5,0.5 0 0,0 13.5,21A0.5,0.5 0 0,0 14,21.5A0.5,0.5 0 0,0 14.5,21A0.5,0.5 0 0,0 14,20.5M18,7A1,1 0 0,0 19,6A1,1 0 0,0 18,5A1,1 0 0,0 17,6A1,1 0 0,0 18,7M18,11A1,1 0 0,0 19,10A1,1 0 0,0 18,9A1,1 0 0,0 17,10A1,1 0 0,0 18,11M18,15A1,1 0 0,0 19,14A1,1 0 0,0 18,13A1,1 0 0,0 17,14A1,1 0 0,0 18,15M10,7A1,1 0 0,0 11,6A1,1 0 0,0 10,5A1,1 0 0,0 9,6A1,1 0 0,0 10,7M21,10.5A0.5,0.5 0 0,0 21.5,10A0.5,0.5 0 0,0 21,9.5A0.5,0.5 0 0,0 20.5,10A0.5,0.5 0 0,0 21,10.5M10,3.5A0.5,0.5 0 0,0 10.5,3A0.5,0.5 0 0,0 10,2.5A0.5,0.5 0 0,0 9.5,3A0.5,0.5 0 0,0 10,3.5M14,3.5A0.5,0.5 0 0,0 14.5,3A0.5,0.5 0 0,0 14,2.5A0.5,0.5 0 0,0 13.5,3A0.5,0.5 0 0,0 14,3.5M13.8,11.5H14A1.5,1.5 0 0,0 15.5,10A1.5,1.5 0 0,0 14,8.5A1.5,1.5 0 0,0 12.5,10V10.2C12.61,10.87 13.13,11.39 13.8,11.5M14,7A1,1 0 0,0 15,6A1,1 0 0,0 14,5A1,1 0 0,0 13,6A1,1 0 0,0 14,7Z" /></g><g id="blur-radial"><path d="M14,13A1,1 0 0,0 13,14A1,1 0 0,0 14,15A1,1 0 0,0 15,14A1,1 0 0,0 14,13M14,16.5A0.5,0.5 0 0,0 13.5,17A0.5,0.5 0 0,0 14,17.5A0.5,0.5 0 0,0 14.5,17A0.5,0.5 0 0,0 14,16.5M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M17,9.5A0.5,0.5 0 0,0 16.5,10A0.5,0.5 0 0,0 17,10.5A0.5,0.5 0 0,0 17.5,10A0.5,0.5 0 0,0 17,9.5M17,13.5A0.5,0.5 0 0,0 16.5,14A0.5,0.5 0 0,0 17,14.5A0.5,0.5 0 0,0 17.5,14A0.5,0.5 0 0,0 17,13.5M14,7.5A0.5,0.5 0 0,0 14.5,7A0.5,0.5 0 0,0 14,6.5A0.5,0.5 0 0,0 13.5,7A0.5,0.5 0 0,0 14,7.5M14,9A1,1 0 0,0 13,10A1,1 0 0,0 14,11A1,1 0 0,0 15,10A1,1 0 0,0 14,9M10,7.5A0.5,0.5 0 0,0 10.5,7A0.5,0.5 0 0,0 10,6.5A0.5,0.5 0 0,0 9.5,7A0.5,0.5 0 0,0 10,7.5M7,13.5A0.5,0.5 0 0,0 6.5,14A0.5,0.5 0 0,0 7,14.5A0.5,0.5 0 0,0 7.5,14A0.5,0.5 0 0,0 7,13.5M10,16.5A0.5,0.5 0 0,0 9.5,17A0.5,0.5 0 0,0 10,17.5A0.5,0.5 0 0,0 10.5,17A0.5,0.5 0 0,0 10,16.5M7,9.5A0.5,0.5 0 0,0 6.5,10A0.5,0.5 0 0,0 7,10.5A0.5,0.5 0 0,0 7.5,10A0.5,0.5 0 0,0 7,9.5M10,13A1,1 0 0,0 9,14A1,1 0 0,0 10,15A1,1 0 0,0 11,14A1,1 0 0,0 10,13M10,9A1,1 0 0,0 9,10A1,1 0 0,0 10,11A1,1 0 0,0 11,10A1,1 0 0,0 10,9Z" /></g><g id="bomb"><path d="M11.25,6A3.25,3.25 0 0,1 14.5,2.75A3.25,3.25 0 0,1 17.75,6C17.75,6.42 18.08,6.75 18.5,6.75C18.92,6.75 19.25,6.42 19.25,6V5.25H20.75V6A2.25,2.25 0 0,1 18.5,8.25A2.25,2.25 0 0,1 16.25,6A1.75,1.75 0 0,0 14.5,4.25A1.75,1.75 0 0,0 12.75,6H14V7.29C16.89,8.15 19,10.83 19,14A7,7 0 0,1 12,21A7,7 0 0,1 5,14C5,10.83 7.11,8.15 10,7.29V6H11.25M22,6H24V7H22V6M19,4V2H20V4H19M20.91,4.38L22.33,2.96L23.04,3.67L21.62,5.09L20.91,4.38Z" /></g><g id="bomb-off"><path d="M14.5,2.75C12.7,2.75 11.25,4.2 11.25,6H10V7.29C9.31,7.5 8.67,7.81 8.08,8.2L17.79,17.91C18.58,16.76 19,15.39 19,14C19,10.83 16.89,8.15 14,7.29V6H12.75A1.75,1.75 0 0,1 14.5,4.25A1.75,1.75 0 0,1 16.25,6A2.25,2.25 0 0,0 18.5,8.25C19.74,8.25 20.74,7.24 20.74,6V5.25H19.25V6C19.25,6.42 18.91,6.75 18.5,6.75C18.08,6.75 17.75,6.42 17.75,6C17.75,4.2 16.29,2.75 14.5,2.75M3.41,6.36L2,7.77L5.55,11.32C5.2,12.14 5,13.04 5,14C5,17.86 8.13,21 12,21C12.92,21 13.83,20.81 14.68,20.45L18.23,24L19.64,22.59L3.41,6.36Z" /></g><g id="bone"><path d="M8,14A3,3 0 0,1 5,17A3,3 0 0,1 2,14C2,13.23 2.29,12.53 2.76,12C2.29,11.47 2,10.77 2,10A3,3 0 0,1 5,7A3,3 0 0,1 8,10C9.33,10.08 10.67,10.17 12,10.17C13.33,10.17 14.67,10.08 16,10A3,3 0 0,1 19,7A3,3 0 0,1 22,10C22,10.77 21.71,11.47 21.24,12C21.71,12.53 22,13.23 22,14A3,3 0 0,1 19,17A3,3 0 0,1 16,14C14.67,13.92 13.33,13.83 12,13.83C10.67,13.83 9.33,13.92 8,14Z" /></g><g id="book"><path d="M18,22A2,2 0 0,0 20,20V4C20,2.89 19.1,2 18,2H12V9L9.5,7.5L7,9V2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18Z" /></g><g id="book-minus"><path d="M18,22H6A2,2 0 0,1 4,20V4C4,2.89 4.9,2 6,2H7V9L9.5,7.5L12,9V2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22M18,18V16H12V18H18Z" /></g><g id="book-multiple"><path d="M19,18H9A2,2 0 0,1 7,16V4A2,2 0 0,1 9,2H10V7L12,5.5L14,7V2H19A2,2 0 0,1 21,4V16A2,2 0 0,1 19,18M17,20V22H5A2,2 0 0,1 3,20V6H5V20H17Z" /></g><g id="book-multiple-variant"><path d="M19,18H9A2,2 0 0,1 7,16V4A2,2 0 0,1 9,2H19A2,2 0 0,1 21,4V16A2,2 0 0,1 19,18M10,9L12,7.5L14,9V4H10V9M17,20V22H5A2,2 0 0,1 3,20V6H5V20H17Z" /></g><g id="book-open"><path d="M13,12H20V13.5H13M13,9.5H20V11H13M13,14.5H20V16H13M21,4H3A2,2 0 0,0 1,6V19A2,2 0 0,0 3,21H21A2,2 0 0,0 23,19V6A2,2 0 0,0 21,4M21,19H12V6H21" /></g><g id="book-open-page-variant"><path d="M19,2L14,6.5V17.5L19,13V2M6.5,5C4.55,5 2.45,5.4 1,6.5V21.16C1,21.41 1.25,21.66 1.5,21.66C1.6,21.66 1.65,21.59 1.75,21.59C3.1,20.94 5.05,20.5 6.5,20.5C8.45,20.5 10.55,20.9 12,22C13.35,21.15 15.8,20.5 17.5,20.5C19.15,20.5 20.85,20.81 22.25,21.56C22.35,21.61 22.4,21.59 22.5,21.59C22.75,21.59 23,21.34 23,21.09V6.5C22.4,6.05 21.75,5.75 21,5.5V7.5L21,13V19C19.9,18.65 18.7,18.5 17.5,18.5C15.8,18.5 13.35,19.15 12,20V13L12,8.5V6.5C10.55,5.4 8.45,5 6.5,5V5Z" /></g><g id="book-open-variant"><path d="M21,5C19.89,4.65 18.67,4.5 17.5,4.5C15.55,4.5 13.45,4.9 12,6C10.55,4.9 8.45,4.5 6.5,4.5C4.55,4.5 2.45,4.9 1,6V20.65C1,20.9 1.25,21.15 1.5,21.15C1.6,21.15 1.65,21.1 1.75,21.1C3.1,20.45 5.05,20 6.5,20C8.45,20 10.55,20.4 12,21.5C13.35,20.65 15.8,20 17.5,20C19.15,20 20.85,20.3 22.25,21.05C22.35,21.1 22.4,21.1 22.5,21.1C22.75,21.1 23,20.85 23,20.6V6C22.4,5.55 21.75,5.25 21,5M21,18.5C19.9,18.15 18.7,18 17.5,18C15.8,18 13.35,18.65 12,19.5V8C13.35,7.15 15.8,6.5 17.5,6.5C18.7,6.5 19.9,6.65 21,7V18.5Z" /></g><g id="book-plus"><path d="M18,22H6A2,2 0 0,1 4,20V4C4,2.89 4.9,2 6,2H7V9L9.5,7.5L12,9V2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22M14,20H16V18H18V16H16V14H14V16H12V18H14V20Z" /></g><g id="book-variant"><path d="M6,4H11V12L8.5,10.5L6,12M18,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V4A2,2 0 0,0 18,2Z" /></g><g id="bookmark"><path d="M17,3H7A2,2 0 0,0 5,5V21L12,18L19,21V5C19,3.89 18.1,3 17,3Z" /></g><g id="bookmark-check"><path d="M17,3A2,2 0 0,1 19,5V21L12,18L5,21V5C5,3.89 5.9,3 7,3H17M11,14L17.25,7.76L15.84,6.34L11,11.18L8.41,8.59L7,10L11,14Z" /></g><g id="bookmark-music"><path d="M17,3A2,2 0 0,1 19,5V21L12,18L5,21V5C5,3.89 5.9,3 7,3H17M11,11A2,2 0 0,0 9,13A2,2 0 0,0 11,15A2,2 0 0,0 13,13V8H16V6H12V11.27C11.71,11.1 11.36,11 11,11Z" /></g><g id="bookmark-outline"><path d="M17,18L12,15.82L7,18V5H17M17,3H7A2,2 0 0,0 5,5V21L12,18L19,21V5C19,3.89 18.1,3 17,3Z" /></g><g id="bookmark-plus"><path d="M17,3A2,2 0 0,1 19,5V21L12,18L5,21V5C5,3.89 5.9,3 7,3H17M11,7V9H9V11H11V13H13V11H15V9H13V7H11Z" /></g><g id="bookmark-plus-outline"><path d="M17,18V5H7V18L12,15.82L17,18M17,3A2,2 0 0,1 19,5V21L12,18L5,21V5C5,3.89 5.9,3 7,3H17M11,7H13V9H15V11H13V13H11V11H9V9H11V7Z" /></g><g id="bookmark-remove"><path d="M17,3A2,2 0 0,1 19,5V21L12,18L5,21V5C5,3.89 5.9,3 7,3H17M8.17,8.58L10.59,11L8.17,13.41L9.59,14.83L12,12.41L14.41,14.83L15.83,13.41L13.41,11L15.83,8.58L14.41,7.17L12,9.58L9.59,7.17L8.17,8.58Z" /></g><g id="boombox"><path d="M7,5L5,7V8H3A1,1 0 0,0 2,9V17A1,1 0 0,0 3,18H21A1,1 0 0,0 22,17V9A1,1 0 0,0 21,8H19V7L17,5H7M7,7H17V8H7V7M11,9H13A0.5,0.5 0 0,1 13.5,9.5A0.5,0.5 0 0,1 13,10H11A0.5,0.5 0 0,1 10.5,9.5A0.5,0.5 0 0,1 11,9M7.5,10.5A3,3 0 0,1 10.5,13.5A3,3 0 0,1 7.5,16.5A3,3 0 0,1 4.5,13.5A3,3 0 0,1 7.5,10.5M16.5,10.5A3,3 0 0,1 19.5,13.5A3,3 0 0,1 16.5,16.5A3,3 0 0,1 13.5,13.5A3,3 0 0,1 16.5,10.5M7.5,12A1.5,1.5 0 0,0 6,13.5A1.5,1.5 0 0,0 7.5,15A1.5,1.5 0 0,0 9,13.5A1.5,1.5 0 0,0 7.5,12M16.5,12A1.5,1.5 0 0,0 15,13.5A1.5,1.5 0 0,0 16.5,15A1.5,1.5 0 0,0 18,13.5A1.5,1.5 0 0,0 16.5,12Z" /></g><g id="border-all"><path d="M19,11H13V5H19M19,19H13V13H19M11,11H5V5H11M11,19H5V13H11M3,21H21V3H3V21Z" /></g><g id="border-bottom"><path d="M5,15H3V17H5M3,21H21V19H3M5,11H3V13H5M19,9H21V7H19M19,5H21V3H19M5,7H3V9H5M19,17H21V15H19M19,13H21V11H19M17,3H15V5H17M13,3H11V5H13M17,11H15V13H17M13,7H11V9H13M5,3H3V5H5M13,11H11V13H13M9,3H7V5H9M13,15H11V17H13M9,11H7V13H9V11Z" /></g><g id="border-color"><path d="M20.71,4.04C21.1,3.65 21.1,3 20.71,2.63L18.37,0.29C18,-0.1 17.35,-0.1 16.96,0.29L15,2.25L18.75,6M17.75,7L14,3.25L4,13.25V17H7.75L17.75,7Z" /></g><g id="border-horizontal"><path d="M19,21H21V19H19M15,21H17V19H15M11,17H13V15H11M19,9H21V7H19M19,5H21V3H19M3,13H21V11H3M11,21H13V19H11M19,17H21V15H19M13,3H11V5H13M13,7H11V9H13M17,3H15V5H17M9,3H7V5H9M5,3H3V5H5M7,21H9V19H7M3,17H5V15H3M5,7H3V9H5M3,21H5V19H3V21Z" /></g><g id="border-inside"><path d="M19,17H21V15H19M19,21H21V19H19M13,3H11V11H3V13H11V21H13V13H21V11H13M15,21H17V19H15M19,5H21V3H19M19,9H21V7H19M17,3H15V5H17M5,3H3V5H5M9,3H7V5H9M3,17H5V15H3M5,7H3V9H5M7,21H9V19H7M3,21H5V19H3V21Z" /></g><g id="border-left"><path d="M15,5H17V3H15M15,13H17V11H15M19,21H21V19H19M19,13H21V11H19M19,5H21V3H19M19,17H21V15H19M15,21H17V19H15M19,9H21V7H19M3,21H5V3H3M7,13H9V11H7M7,5H9V3H7M7,21H9V19H7M11,13H13V11H11M11,9H13V7H11M11,5H13V3H11M11,17H13V15H11M11,21H13V19H11V21Z" /></g><g id="border-none"><path d="M15,5H17V3H15M15,13H17V11H15M15,21H17V19H15M11,5H13V3H11M19,5H21V3H19M11,9H13V7H11M19,9H21V7H19M19,21H21V19H19M19,13H21V11H19M19,17H21V15H19M11,13H13V11H11M3,5H5V3H3M3,9H5V7H3M3,13H5V11H3M3,17H5V15H3M3,21H5V19H3M11,21H13V19H11M11,17H13V15H11M7,21H9V19H7M7,13H9V11H7M7,5H9V3H7V5Z" /></g><g id="border-outside"><path d="M9,11H7V13H9M13,15H11V17H13M19,19H5V5H19M3,21H21V3H3M17,11H15V13H17M13,11H11V13H13M13,7H11V9H13V7Z" /></g><g id="border-right"><path d="M11,9H13V7H11M11,5H13V3H11M11,13H13V11H11M15,5H17V3H15M15,21H17V19H15M19,21H21V3H19M15,13H17V11H15M11,17H13V15H11M3,9H5V7H3M3,17H5V15H3M3,13H5V11H3M11,21H13V19H11M3,21H5V19H3M7,13H9V11H7M7,5H9V3H7M3,5H5V3H3M7,21H9V19H7V21Z" /></g><g id="border-style"><path d="M15,21H17V19H15M19,21H21V19H19M7,21H9V19H7M11,21H13V19H11M19,17H21V15H19M19,13H21V11H19M3,3V21H5V5H21V3M19,9H21V7H19" /></g><g id="border-top"><path d="M15,13H17V11H15M19,21H21V19H19M11,9H13V7H11M15,21H17V19H15M19,17H21V15H19M3,5H21V3H3M19,13H21V11H19M19,9H21V7H19M11,17H13V15H11M3,9H5V7H3M3,13H5V11H3M3,21H5V19H3M3,17H5V15H3M11,21H13V19H11M11,13H13V11H11M7,13H9V11H7M7,21H9V19H7V21Z" /></g><g id="border-vertical"><path d="M15,13H17V11H15M15,21H17V19H15M15,5H17V3H15M19,9H21V7H19M19,5H21V3H19M19,13H21V11H19M19,21H21V19H19M11,21H13V3H11M19,17H21V15H19M7,5H9V3H7M3,17H5V15H3M3,21H5V19H3M3,13H5V11H3M7,13H9V11H7M7,21H9V19H7M3,5H5V3H3M3,9H5V7H3V9Z" /></g><g id="bow-tie"><path d="M15,14L21,17V7L15,10V14M9,14L3,17V7L9,10V14M10,10H14V14H10V10Z" /></g><g id="bowl"><path d="M22,15A7,7 0 0,1 15,22H9A7,7 0 0,1 2,15V12H15.58L20.3,4.44L22,5.5L17.94,12H22V15Z" /></g><g id="bowling"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12.5,11A1.5,1.5 0 0,0 11,12.5A1.5,1.5 0 0,0 12.5,14A1.5,1.5 0 0,0 14,12.5A1.5,1.5 0 0,0 12.5,11M12,5A2,2 0 0,0 10,7A2,2 0 0,0 12,9A2,2 0 0,0 14,7A2,2 0 0,0 12,5M5.93,8.5C5.38,9.45 5.71,10.67 6.66,11.22C7.62,11.78 8.84,11.45 9.4,10.5C9.95,9.53 9.62,8.31 8.66,7.76C7.71,7.21 6.5,7.53 5.93,8.5Z" /></g><g id="box"><path d="M15.39,14.04V14.04C15.39,12.62 14.24,11.47 12.82,11.47C11.41,11.47 10.26,12.62 10.26,14.04V14.04C10.26,15.45 11.41,16.6 12.82,16.6C14.24,16.6 15.39,15.45 15.39,14.04M17.1,14.04C17.1,16.4 15.18,18.31 12.82,18.31C11.19,18.31 9.77,17.39 9.05,16.04C8.33,17.39 6.91,18.31 5.28,18.31C2.94,18.31 1.04,16.43 1,14.11V14.11H1V7H1V7C1,6.56 1.39,6.18 1.86,6.18C2.33,6.18 2.7,6.56 2.71,7V7H2.71V10.62C3.43,10.08 4.32,9.76 5.28,9.76C6.91,9.76 8.33,10.68 9.05,12.03C9.77,10.68 11.19,9.76 12.82,9.76C15.18,9.76 17.1,11.68 17.1,14.04V14.04M7.84,14.04V14.04C7.84,12.62 6.69,11.47 5.28,11.47C3.86,11.47 2.71,12.62 2.71,14.04V14.04C2.71,15.45 3.86,16.6 5.28,16.6C6.69,16.6 7.84,15.45 7.84,14.04M22.84,16.96V16.96C22.95,17.12 23,17.3 23,17.47C23,17.73 22.88,18 22.66,18.15C22.5,18.26 22.33,18.32 22.15,18.32C21.9,18.32 21.65,18.21 21.5,18L19.59,15.47L17.7,18V18C17.53,18.21 17.28,18.32 17.03,18.32C16.85,18.32 16.67,18.26 16.5,18.15C16.29,18 16.17,17.72 16.17,17.46C16.17,17.29 16.23,17.11 16.33,16.96V16.96H16.33V16.96L18.5,14.04L16.33,11.11V11.11H16.33V11.11C16.22,10.96 16.17,10.79 16.17,10.61C16.17,10.35 16.29,10.1 16.5,9.93C16.89,9.65 17.41,9.72 17.7,10.09V10.09L19.59,12.61L21.5,10.09C21.76,9.72 22.29,9.65 22.66,9.93C22.89,10.1 23,10.36 23,10.63C23,10.8 22.95,10.97 22.84,11.11V11.11H22.84V11.11L20.66,14.04L22.84,16.96V16.96H22.84Z" /></g><g id="box-cutter"><path d="M7.22,11.91C6.89,12.24 6.71,12.65 6.66,13.08L12.17,15.44L20.66,6.96C21.44,6.17 21.44,4.91 20.66,4.13L19.24,2.71C18.46,1.93 17.2,1.93 16.41,2.71L7.22,11.91M5,16V21.75L10.81,16.53L5.81,14.53L5,16M17.12,4.83C17.5,4.44 18.15,4.44 18.54,4.83C18.93,5.23 18.93,5.86 18.54,6.25C18.15,6.64 17.5,6.64 17.12,6.25C16.73,5.86 16.73,5.23 17.12,4.83Z" /></g><g id="box-shadow"><path d="M3,3H18V18H3V3M19,19H21V21H19V19M19,16H21V18H19V16M19,13H21V15H19V13M19,10H21V12H19V10M19,7H21V9H19V7M16,19H18V21H16V19M13,19H15V21H13V19M10,19H12V21H10V19M7,19H9V21H7V19Z" /></g><g id="bridge"><path d="M7,14V10.91C6.28,10.58 5.61,10.18 5,9.71V14H7M5,18H3V16H1V14H3V7H5V8.43C6.8,10 9.27,11 12,11C14.73,11 17.2,10 19,8.43V7H21V14H23V16H21V18H19V16H5V18M17,10.91V14H19V9.71C18.39,10.18 17.72,10.58 17,10.91M16,14V11.32C15.36,11.55 14.69,11.72 14,11.84V14H16M13,14V11.96L12,12L11,11.96V14H13M10,14V11.84C9.31,11.72 8.64,11.55 8,11.32V14H10Z" /></g><g id="briefcase"><path d="M14,6H10V4H14M20,6H16V4L14,2H10L8,4V6H4C2.89,6 2,6.89 2,8V19A2,2 0 0,0 4,21H20A2,2 0 0,0 22,19V8C22,6.89 21.1,6 20,6Z" /></g><g id="briefcase-check"><path d="M10.5,17.5L7,14L8.41,12.59L10.5,14.67L15.68,9.5L17.09,10.91M10,4H14V6H10M20,6H16V4L14,2H10L8,4V6H4C2.89,6 2,6.89 2,8V19C2,20.11 2.89,21 4,21H20C21.11,21 22,20.11 22,19V8C22,6.89 21.11,6 20,6Z" /></g><g id="briefcase-download"><path d="M12,19L7,14H10V10H14V14H17M10,4H14V6H10M20,6H16V4L14,2H10L8,4V6H4C2.89,6 2,6.89 2,8V19A2,2 0 0,0 4,21H20A2,2 0 0,0 22,19V8C22,6.89 21.1,6 20,6Z" /></g><g id="briefcase-upload"><path d="M20,6A2,2 0 0,1 22,8V19A2,2 0 0,1 20,21H4C2.89,21 2,20.1 2,19V8C2,6.89 2.89,6 4,6H8V4L10,2H14L16,4V6H20M10,4V6H14V4H10M12,9L7,14H10V18H14V14H17L12,9Z" /></g><g id="brightness-1"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z" /></g><g id="brightness-2"><path d="M10,2C8.18,2 6.47,2.5 5,3.35C8,5.08 10,8.3 10,12C10,15.7 8,18.92 5,20.65C6.47,21.5 8.18,22 10,22A10,10 0 0,0 20,12A10,10 0 0,0 10,2Z" /></g><g id="brightness-3"><path d="M9,2C7.95,2 6.95,2.16 6,2.46C10.06,3.73 13,7.5 13,12C13,16.5 10.06,20.27 6,21.54C6.95,21.84 7.95,22 9,22A10,10 0 0,0 19,12A10,10 0 0,0 9,2Z" /></g><g id="brightness-4"><path d="M12,18C11.11,18 10.26,17.8 9.5,17.45C11.56,16.5 13,14.42 13,12C13,9.58 11.56,7.5 9.5,6.55C10.26,6.2 11.11,6 12,6A6,6 0 0,1 18,12A6,6 0 0,1 12,18M20,8.69V4H15.31L12,0.69L8.69,4H4V8.69L0.69,12L4,15.31V20H8.69L12,23.31L15.31,20H20V15.31L23.31,12L20,8.69Z" /></g><g id="brightness-5"><path d="M12,18A6,6 0 0,1 6,12A6,6 0 0,1 12,6A6,6 0 0,1 18,12A6,6 0 0,1 12,18M20,15.31L23.31,12L20,8.69V4H15.31L12,0.69L8.69,4H4V8.69L0.69,12L4,15.31V20H8.69L12,23.31L15.31,20H20V15.31Z" /></g><g id="brightness-6"><path d="M12,18V6A6,6 0 0,1 18,12A6,6 0 0,1 12,18M20,15.31L23.31,12L20,8.69V4H15.31L12,0.69L8.69,4H4V8.69L0.69,12L4,15.31V20H8.69L12,23.31L15.31,20H20V15.31Z" /></g><g id="brightness-7"><path d="M12,8A4,4 0 0,0 8,12A4,4 0 0,0 12,16A4,4 0 0,0 16,12A4,4 0 0,0 12,8M12,18A6,6 0 0,1 6,12A6,6 0 0,1 12,6A6,6 0 0,1 18,12A6,6 0 0,1 12,18M20,8.69V4H15.31L12,0.69L8.69,4H4V8.69L0.69,12L4,15.31V20H8.69L12,23.31L15.31,20H20V15.31L23.31,12L20,8.69Z" /></g><g id="brightness-auto"><path d="M14.3,16L13.6,14H10.4L9.7,16H7.8L11,7H13L16.2,16H14.3M20,8.69V4H15.31L12,0.69L8.69,4H4V8.69L0.69,12L4,15.31V20H8.69L12,23.31L15.31,20H20V15.31L23.31,12L20,8.69M10.85,12.65H13.15L12,9L10.85,12.65Z" /></g><g id="broom"><path d="M19.36,2.72L20.78,4.14L15.06,9.85C16.13,11.39 16.28,13.24 15.38,14.44L9.06,8.12C10.26,7.22 12.11,7.37 13.65,8.44L19.36,2.72M5.93,17.57C3.92,15.56 2.69,13.16 2.35,10.92L7.23,8.83L14.67,16.27L12.58,21.15C10.34,20.81 7.94,19.58 5.93,17.57Z" /></g><g id="brush"><path d="M20.71,4.63L19.37,3.29C19,2.9 18.35,2.9 17.96,3.29L9,12.25L11.75,15L20.71,6.04C21.1,5.65 21.1,5 20.71,4.63M7,14A3,3 0 0,0 4,17C4,18.31 2.84,19 2,19C2.92,20.22 4.5,21 6,21A4,4 0 0,0 10,17A3,3 0 0,0 7,14Z" /></g><g id="buffer"><path d="M12.6,2.86C15.27,4.1 18,5.39 20.66,6.63C20.81,6.7 21,6.75 21,6.95C21,7.15 20.81,7.19 20.66,7.26C18,8.5 15.3,9.77 12.62,11C12.21,11.21 11.79,11.21 11.38,11C8.69,9.76 6,8.5 3.32,7.25C3.18,7.19 3,7.14 3,6.94C3,6.76 3.18,6.71 3.31,6.65C6,5.39 8.74,4.1 11.44,2.85C11.73,2.72 12.3,2.73 12.6,2.86M12,21.15C11.8,21.15 11.66,21.07 11.38,20.97C8.69,19.73 6,18.47 3.33,17.22C3.19,17.15 3,17.11 3,16.9C3,16.7 3.19,16.66 3.34,16.59C3.78,16.38 4.23,16.17 4.67,15.96C5.12,15.76 5.56,15.76 6,15.97C7.79,16.8 9.57,17.63 11.35,18.46C11.79,18.67 12.23,18.66 12.67,18.46C14.45,17.62 16.23,16.79 18,15.96C18.44,15.76 18.87,15.75 19.29,15.95C19.77,16.16 20.24,16.39 20.71,16.61C20.78,16.64 20.85,16.68 20.91,16.73C21.04,16.83 21.04,17 20.91,17.08C20.83,17.14 20.74,17.19 20.65,17.23C18,18.5 15.33,19.72 12.66,20.95C12.46,21.05 12.19,21.15 12,21.15M12,16.17C11.9,16.17 11.55,16.07 11.36,16C8.68,14.74 6,13.5 3.34,12.24C3.2,12.18 3,12.13 3,11.93C3,11.72 3.2,11.68 3.35,11.61C3.8,11.39 4.25,11.18 4.7,10.97C5.13,10.78 5.56,10.78 6,11C7.78,11.82 9.58,12.66 11.38,13.5C11.79,13.69 12.21,13.69 12.63,13.5C14.43,12.65 16.23,11.81 18.04,10.97C18.45,10.78 18.87,10.78 19.29,10.97C19.76,11.19 20.24,11.41 20.71,11.63C20.77,11.66 20.84,11.69 20.9,11.74C21.04,11.85 21.04,12 20.89,12.12C20.84,12.16 20.77,12.19 20.71,12.22C18,13.5 15.31,14.75 12.61,16C12.42,16.09 12.08,16.17 12,16.17Z" /></g><g id="bug"><path d="M14,12H10V10H14M14,16H10V14H14M20,8H17.19C16.74,7.22 16.12,6.55 15.37,6.04L17,4.41L15.59,3L13.42,5.17C12.96,5.06 12.5,5 12,5C11.5,5 11.04,5.06 10.59,5.17L8.41,3L7,4.41L8.62,6.04C7.88,6.55 7.26,7.22 6.81,8H4V10H6.09C6.04,10.33 6,10.66 6,11V12H4V14H6V15C6,15.34 6.04,15.67 6.09,16H4V18H6.81C7.85,19.79 9.78,21 12,21C14.22,21 16.15,19.79 17.19,18H20V16H17.91C17.96,15.67 18,15.34 18,15V14H20V12H18V11C18,10.66 17.96,10.33 17.91,10H20V8Z" /></g><g id="bulletin-board"><path d="M12.04,2.5L9.53,5H14.53L12.04,2.5M4,7V20H20V7H4M12,0L17,5V5H20A2,2 0 0,1 22,7V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V7A2,2 0 0,1 4,5H7V5L12,0M7,18V14H12V18H7M14,17V10H18V17H14M6,12V9H11V12H6Z" /></g><g id="bullhorn"><path d="M16,12V16A1,1 0 0,1 15,17C14.83,17 14.67,17 14.06,16.5C13.44,16 12.39,15 11.31,14.5C10.31,14.04 9.28,14 8.26,14L9.47,17.32L9.5,17.5A0.5,0.5 0 0,1 9,18H7C6.78,18 6.59,17.86 6.53,17.66L5.19,14H5A1,1 0 0,1 4,13A2,2 0 0,1 2,11A2,2 0 0,1 4,9A1,1 0 0,1 5,8H8C9.11,8 10.22,8 11.31,7.5C12.39,7 13.44,6 14.06,5.5C14.67,5 14.83,5 15,5A1,1 0 0,1 16,6V10A1,1 0 0,1 17,11A1,1 0 0,1 16,12M21,11C21,12.38 20.44,13.63 19.54,14.54L18.12,13.12C18.66,12.58 19,11.83 19,11C19,10.17 18.66,9.42 18.12,8.88L19.54,7.46C20.44,8.37 21,9.62 21,11Z" /></g><g id="bullseye"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4M12,6A6,6 0 0,0 6,12A6,6 0 0,0 12,18A6,6 0 0,0 18,12A6,6 0 0,0 12,6M12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z" /></g><g id="burst-mode"><path d="M1,5H3V19H1V5M5,5H7V19H5V5M22,5H10A1,1 0 0,0 9,6V18A1,1 0 0,0 10,19H22A1,1 0 0,0 23,18V6A1,1 0 0,0 22,5M11,17L13.5,13.85L15.29,16L17.79,12.78L21,17H11Z" /></g><g id="bus"><path d="M18,11H6V6H18M16.5,17A1.5,1.5 0 0,1 15,15.5A1.5,1.5 0 0,1 16.5,14A1.5,1.5 0 0,1 18,15.5A1.5,1.5 0 0,1 16.5,17M7.5,17A1.5,1.5 0 0,1 6,15.5A1.5,1.5 0 0,1 7.5,14A1.5,1.5 0 0,1 9,15.5A1.5,1.5 0 0,1 7.5,17M4,16C4,16.88 4.39,17.67 5,18.22V20A1,1 0 0,0 6,21H7A1,1 0 0,0 8,20V19H16V20A1,1 0 0,0 17,21H18A1,1 0 0,0 19,20V18.22C19.61,17.67 20,16.88 20,16V6C20,2.5 16.42,2 12,2C7.58,2 4,2.5 4,6V16Z" /></g><g id="cached"><path d="M19,8L15,12H18A6,6 0 0,1 12,18C11,18 10.03,17.75 9.2,17.3L7.74,18.76C8.97,19.54 10.43,20 12,20A8,8 0 0,0 20,12H23M6,12A6,6 0 0,1 12,6C13,6 13.97,6.25 14.8,6.7L16.26,5.24C15.03,4.46 13.57,4 12,4A8,8 0 0,0 4,12H1L5,16L9,12" /></g><g id="cake"><path d="M11.5,0.5C12,0.75 13,2.4 13,3.5C13,4.6 12.33,5 11.5,5C10.67,5 10,4.85 10,3.75C10,2.65 11,2 11.5,0.5M18.5,9C21,9 23,11 23,13.5C23,15.06 22.21,16.43 21,17.24V23H12L3,23V17.24C1.79,16.43 1,15.06 1,13.5C1,11 3,9 5.5,9H10V6H13V9H18.5M12,16A2.5,2.5 0 0,0 14.5,13.5H16A2.5,2.5 0 0,0 18.5,16A2.5,2.5 0 0,0 21,13.5A2.5,2.5 0 0,0 18.5,11H5.5A2.5,2.5 0 0,0 3,13.5A2.5,2.5 0 0,0 5.5,16A2.5,2.5 0 0,0 8,13.5H9.5A2.5,2.5 0 0,0 12,16Z" /></g><g id="cake-layered"><path d="M21,21V17C21,15.89 20.1,15 19,15H18V12C18,10.89 17.1,10 16,10H13V8H11V10H8C6.89,10 6,10.89 6,12V15H5C3.89,15 3,15.89 3,17V21H1V23H23V21M12,7A2,2 0 0,0 14,5C14,4.62 13.9,4.27 13.71,3.97L12,1L10.28,3.97C10.1,4.27 10,4.62 10,5A2,2 0 0,0 12,7Z" /></g><g id="cake-variant"><path d="M12,6C13.11,6 14,5.1 14,4C14,3.62 13.9,3.27 13.71,2.97L12,0L10.29,2.97C10.1,3.27 10,3.62 10,4A2,2 0 0,0 12,6M16.6,16L15.53,14.92L14.45,16C13.15,17.29 10.87,17.3 9.56,16L8.5,14.92L7.4,16C6.75,16.64 5.88,17 4.96,17C4.23,17 3.56,16.77 3,16.39V21A1,1 0 0,0 4,22H20A1,1 0 0,0 21,21V16.39C20.44,16.77 19.77,17 19.04,17C18.12,17 17.25,16.64 16.6,16M18,9H13V7H11V9H6A3,3 0 0,0 3,12V13.54C3,14.62 3.88,15.5 4.96,15.5C5.5,15.5 6,15.3 6.34,14.93L8.5,12.8L10.61,14.93C11.35,15.67 12.64,15.67 13.38,14.93L15.5,12.8L17.65,14.93C18,15.3 18.5,15.5 19.03,15.5C20.11,15.5 21,14.62 21,13.54V12A3,3 0 0,0 18,9Z" /></g><g id="calculator"><path d="M7,2H17A2,2 0 0,1 19,4V20A2,2 0 0,1 17,22H7A2,2 0 0,1 5,20V4A2,2 0 0,1 7,2M7,4V8H17V4H7M7,10V12H9V10H7M11,10V12H13V10H11M15,10V12H17V10H15M7,14V16H9V14H7M11,14V16H13V14H11M15,14V16H17V14H15M7,18V20H9V18H7M11,18V20H13V18H11M15,18V20H17V18H15Z" /></g><g id="calendar"><path d="M19,19H5V8H19M16,1V3H8V1H6V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H18V1M17,12H12V17H17V12Z" /></g><g id="calendar-blank"><path d="M19,19H5V8H19M16,1V3H8V1H6V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H18V1" /></g><g id="calendar-check"><path d="M19,19H5V8H19M19,3H18V1H16V3H8V1H6V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M16.53,11.06L15.47,10L10.59,14.88L8.47,12.76L7.41,13.82L10.59,17L16.53,11.06Z" /></g><g id="calendar-clock"><path d="M15,13H16.5V15.82L18.94,17.23L18.19,18.53L15,16.69V13M19,8H5V19H9.67C9.24,18.09 9,17.07 9,16A7,7 0 0,1 16,9C17.07,9 18.09,9.24 19,9.67V8M5,21C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H6V1H8V3H16V1H18V3H19A2,2 0 0,1 21,5V11.1C22.24,12.36 23,14.09 23,16A7,7 0 0,1 16,23C14.09,23 12.36,22.24 11.1,21H5M16,11.15A4.85,4.85 0 0,0 11.15,16C11.15,18.68 13.32,20.85 16,20.85A4.85,4.85 0 0,0 20.85,16C20.85,13.32 18.68,11.15 16,11.15Z" /></g><g id="calendar-multiple"><path d="M21,17V8H7V17H21M21,3A2,2 0 0,1 23,5V17A2,2 0 0,1 21,19H7C5.89,19 5,18.1 5,17V5A2,2 0 0,1 7,3H8V1H10V3H18V1H20V3H21M3,21H17V23H3C1.89,23 1,22.1 1,21V9H3V21M19,15H15V11H19V15Z" /></g><g id="calendar-multiple-check"><path d="M21,17V8H7V17H21M21,3A2,2 0 0,1 23,5V17A2,2 0 0,1 21,19H7C5.89,19 5,18.1 5,17V5A2,2 0 0,1 7,3H8V1H10V3H18V1H20V3H21M17.53,11.06L13.09,15.5L10.41,12.82L11.47,11.76L13.09,13.38L16.47,10L17.53,11.06M3,21H17V23H3C1.89,23 1,22.1 1,21V9H3V21Z" /></g><g id="calendar-plus"><path d="M19,19V7H5V19H19M16,1H18V3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H6V1H8V3H16V1M11,9H13V12H16V14H13V17H11V14H8V12H11V9Z" /></g><g id="calendar-question"><path d="M6,1V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H18V1H16V3H8V1H6M5,8H19V19H5V8M12.19,9C11.32,9 10.62,9.2 10.08,9.59C9.56,10 9.3,10.57 9.31,11.36L9.32,11.39H11.25C11.26,11.09 11.35,10.86 11.53,10.7C11.71,10.55 11.93,10.47 12.19,10.47C12.5,10.47 12.76,10.57 12.94,10.75C13.12,10.94 13.2,11.2 13.2,11.5C13.2,11.82 13.13,12.09 12.97,12.32C12.83,12.55 12.62,12.75 12.36,12.91C11.85,13.25 11.5,13.55 11.31,13.82C11.11,14.08 11,14.5 11,15H13C13,14.69 13.04,14.44 13.13,14.26C13.22,14.08 13.39,13.9 13.64,13.74C14.09,13.5 14.46,13.21 14.75,12.81C15.04,12.41 15.19,12 15.19,11.5C15.19,10.74 14.92,10.13 14.38,9.68C13.85,9.23 13.12,9 12.19,9M11,16V18H13V16H11Z" /></g><g id="calendar-range"><path d="M9,11H7V13H9V11M13,11H11V13H13V11M17,11H15V13H17V11M19,4H18V2H16V4H8V2H6V4H5C3.89,4 3,4.9 3,6V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V6A2,2 0 0,0 19,4M19,20H5V9H19V20Z" /></g><g id="calendar-remove"><path d="M19,19H5V8H19M19,3H18V1H16V3H8V1H6V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M9.31,17L11.75,14.56L14.19,17L15.25,15.94L12.81,13.5L15.25,11.06L14.19,10L11.75,12.44L9.31,10L8.25,11.06L10.69,13.5L8.25,15.94L9.31,17Z" /></g><g id="calendar-text"><path d="M14,14H7V16H14M19,19H5V8H19M19,3H18V1H16V3H8V1H6V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M17,10H7V12H17V10Z" /></g><g id="calendar-today"><path d="M7,10H12V15H7M19,19H5V8H19M19,3H18V1H16V3H8V1H6V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="call-made"><path d="M9,5V7H15.59L4,18.59L5.41,20L17,8.41V15H19V5" /></g><g id="call-merge"><path d="M17,20.41L18.41,19L15,15.59L13.59,17M7.5,8H11V13.59L5.59,19L7,20.41L13,14.41V8H16.5L12,3.5" /></g><g id="call-missed"><path d="M19.59,7L12,14.59L6.41,9H11V7H3V15H5V10.41L12,17.41L21,8.41" /></g><g id="call-received"><path d="M20,5.41L18.59,4L7,15.59V9H5V19H15V17H8.41" /></g><g id="call-split"><path d="M14,4L16.29,6.29L13.41,9.17L14.83,10.59L17.71,7.71L20,10V4M10,4H4V10L6.29,7.71L11,12.41V20H13V11.59L7.71,6.29" /></g><g id="camcorder"><path d="M17,10.5V7A1,1 0 0,0 16,6H4A1,1 0 0,0 3,7V17A1,1 0 0,0 4,18H16A1,1 0 0,0 17,17V13.5L21,17.5V6.5L17,10.5Z" /></g><g id="camcorder-box"><path d="M18,16L14,12.8V16H6V8H14V11.2L18,8M20,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z" /></g><g id="camcorder-box-off"><path d="M6,8H6.73L14,15.27V16H6M2.27,1L1,2.27L3,4.28C2.41,4.62 2,5.26 2,6V18A2,2 0 0,0 4,20H18.73L20.73,22L22,20.73M20,4H7.82L11.82,8H14V10.18L14.57,10.75L18,8V14.18L22,18.17C22,18.11 22,18.06 22,18V6A2,2 0 0,0 20,4Z" /></g><g id="camcorder-off"><path d="M3.27,2L2,3.27L4.73,6H4A1,1 0 0,0 3,7V17A1,1 0 0,0 4,18H16C16.2,18 16.39,17.92 16.54,17.82L19.73,21L21,19.73M21,6.5L17,10.5V7A1,1 0 0,0 16,6H9.82L21,17.18V6.5Z" /></g><g id="camera"><path d="M4,4H7L9,2H15L17,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4M12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17A5,5 0 0,0 17,12A5,5 0 0,0 12,7M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9Z" /></g><g id="camera-burst"><path d="M1,5H3V19H1V5M5,5H7V19H5V5M22,5H10A1,1 0 0,0 9,6V18A1,1 0 0,0 10,19H22A1,1 0 0,0 23,18V6A1,1 0 0,0 22,5M11,17L13.5,13.85L15.29,16L17.79,12.78L21,17H11Z" /></g><g id="camera-enhance"><path d="M9,3L7.17,5H4A2,2 0 0,0 2,7V19A2,2 0 0,0 4,21H20A2,2 0 0,0 22,19V7A2,2 0 0,0 20,5H16.83L15,3M12,18A5,5 0 0,1 7,13A5,5 0 0,1 12,8A5,5 0 0,1 17,13A5,5 0 0,1 12,18M12,17L13.25,14.25L16,13L13.25,11.75L12,9L10.75,11.75L8,13L10.75,14.25" /></g><g id="camera-front"><path d="M7,2H17V12.5C17,10.83 13.67,10 12,10C10.33,10 7,10.83 7,12.5M17,0H7A2,2 0 0,0 5,2V16A2,2 0 0,0 7,18H17A2,2 0 0,0 19,16V2A2,2 0 0,0 17,0M12,8A2,2 0 0,0 14,6A2,2 0 0,0 12,4A2,2 0 0,0 10,6A2,2 0 0,0 12,8M14,20V22H19V20M10,20H5V22H10V24L13,21L10,18V20Z" /></g><g id="camera-front-variant"><path d="M6,0H18A2,2 0 0,1 20,2V22A2,2 0 0,1 18,24H6A2,2 0 0,1 4,22V2A2,2 0 0,1 6,0M12,6A3,3 0 0,1 15,9A3,3 0 0,1 12,12A3,3 0 0,1 9,9A3,3 0 0,1 12,6M11,1V3H13V1H11M6,4V16.5C6,15.12 8.69,14 12,14C15.31,14 18,15.12 18,16.5V4H6M13,18H9V20H13V22L16,19L13,16V18Z" /></g><g id="camera-iris"><path d="M13.73,15L9.83,21.76C10.53,21.91 11.25,22 12,22C14.4,22 16.6,21.15 18.32,19.75L14.66,13.4M2.46,15C3.38,17.92 5.61,20.26 8.45,21.34L12.12,15M8.54,12L4.64,5.25C3,7 2,9.39 2,12C2,12.68 2.07,13.35 2.2,14H9.69M21.8,10H14.31L14.6,10.5L19.36,18.75C21,16.97 22,14.6 22,12C22,11.31 21.93,10.64 21.8,10M21.54,9C20.62,6.07 18.39,3.74 15.55,2.66L11.88,9M9.4,10.5L14.17,2.24C13.47,2.09 12.75,2 12,2C9.6,2 7.4,2.84 5.68,4.25L9.34,10.6L9.4,10.5Z" /></g><g id="camera-off"><path d="M1.2,4.47L2.5,3.2L20,20.72L18.73,22L16.73,20H4A2,2 0 0,1 2,18V6C2,5.78 2.04,5.57 2.1,5.37L1.2,4.47M7,4L9,2H15L17,4H20A2,2 0 0,1 22,6V18C22,18.6 21.74,19.13 21.32,19.5L16.33,14.5C16.76,13.77 17,12.91 17,12A5,5 0 0,0 12,7C11.09,7 10.23,7.24 9.5,7.67L5.82,4H7M7,12A5,5 0 0,0 12,17C12.5,17 13.03,16.92 13.5,16.77L11.72,15C10.29,14.85 9.15,13.71 9,12.28L7.23,10.5C7.08,10.97 7,11.5 7,12M12,9A3,3 0 0,1 15,12C15,12.35 14.94,12.69 14.83,13L11,9.17C11.31,9.06 11.65,9 12,9Z" /></g><g id="camera-party-mode"><path d="M12,17C10.37,17 8.94,16.21 8,15H12A3,3 0 0,0 15,12C15,11.65 14.93,11.31 14.82,11H16.9C16.96,11.32 17,11.66 17,12A5,5 0 0,1 12,17M12,7C13.63,7 15.06,7.79 16,9H12A3,3 0 0,0 9,12C9,12.35 9.07,12.68 9.18,13H7.1C7.03,12.68 7,12.34 7,12A5,5 0 0,1 12,7M20,4H16.83L15,2H9L7.17,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z" /></g><g id="camera-rear"><path d="M12,6C10.89,6 10,5.1 10,4A2,2 0 0,1 12,2C13.09,2 14,2.9 14,4A2,2 0 0,1 12,6M17,0H7A2,2 0 0,0 5,2V16A2,2 0 0,0 7,18H17A2,2 0 0,0 19,16V2A2,2 0 0,0 17,0M14,20V22H19V20M10,20H5V22H10V24L13,21L10,18V20Z" /></g><g id="camera-rear-variant"><path d="M6,0H18A2,2 0 0,1 20,2V22A2,2 0 0,1 18,24H6A2,2 0 0,1 4,22V2A2,2 0 0,1 6,0M12,2A2,2 0 0,0 10,4A2,2 0 0,0 12,6A2,2 0 0,0 14,4A2,2 0 0,0 12,2M13,18H9V20H13V22L16,19L13,16V18Z" /></g><g id="camera-switch"><path d="M15,15.5V13H9V15.5L5.5,12L9,8.5V11H15V8.5L18.5,12M20,4H16.83L15,2H9L7.17,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z" /></g><g id="camera-timer"><path d="M4.94,6.35C4.55,5.96 4.55,5.32 4.94,4.93C5.33,4.54 5.96,4.54 6.35,4.93L13.07,10.31L13.42,10.59C14.2,11.37 14.2,12.64 13.42,13.42C12.64,14.2 11.37,14.2 10.59,13.42L10.31,13.07L4.94,6.35M12,20A8,8 0 0,0 20,12C20,9.79 19.1,7.79 17.66,6.34L19.07,4.93C20.88,6.74 22,9.24 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12H4A8,8 0 0,0 12,20M12,1A2,2 0 0,1 14,3A2,2 0 0,1 12,5A2,2 0 0,1 10,3A2,2 0 0,1 12,1Z" /></g><g id="candle"><path d="M12.5,2C10.84,2 9.5,5.34 9.5,7A3,3 0 0,0 12.5,10A3,3 0 0,0 15.5,7C15.5,5.34 14.16,2 12.5,2M12.5,6.5A1,1 0 0,1 13.5,7.5A1,1 0 0,1 12.5,8.5A1,1 0 0,1 11.5,7.5A1,1 0 0,1 12.5,6.5M10,11A1,1 0 0,0 9,12V20H7A1,1 0 0,1 6,19V18A1,1 0 0,0 5,17A1,1 0 0,0 4,18V19A3,3 0 0,0 7,22H19A1,1 0 0,0 20,21A1,1 0 0,0 19,20H16V12A1,1 0 0,0 15,11H10Z" /></g><g id="candycane"><path d="M10,10A2,2 0 0,1 8,12A2,2 0 0,1 6,10V8C6,7.37 6.1,6.77 6.27,6.2L10,9.93V10M12,2C12.74,2 13.44,2.13 14.09,2.38L11.97,6C11.14,6 10.44,6.5 10.15,7.25L7.24,4.34C8.34,2.92 10.06,2 12,2M17.76,6.31L14,10.07V8C14,7.62 13.9,7.27 13.72,6.97L15.83,3.38C16.74,4.13 17.42,5.15 17.76,6.31M18,13.09L14,17.09V12.9L18,8.9V13.09M18,20A2,2 0 0,1 16,22A2,2 0 0,1 14,20V19.91L18,15.91V20Z" /></g><g id="car"><path d="M5,11L6.5,6.5H17.5L19,11M17.5,16A1.5,1.5 0 0,1 16,14.5A1.5,1.5 0 0,1 17.5,13A1.5,1.5 0 0,1 19,14.5A1.5,1.5 0 0,1 17.5,16M6.5,16A1.5,1.5 0 0,1 5,14.5A1.5,1.5 0 0,1 6.5,13A1.5,1.5 0 0,1 8,14.5A1.5,1.5 0 0,1 6.5,16M18.92,6C18.72,5.42 18.16,5 17.5,5H6.5C5.84,5 5.28,5.42 5.08,6L3,12V20A1,1 0 0,0 4,21H5A1,1 0 0,0 6,20V19H18V20A1,1 0 0,0 19,21H20A1,1 0 0,0 21,20V12L18.92,6Z" /></g><g id="car-battery"><path d="M4,3V6H1V20H23V6H20V3H14V6H10V3H4M3,8H21V18H3V8M15,10V12H13V14H15V16H17V14H19V12H17V10H15M5,12V14H11V12H5Z" /></g><g id="car-connected"><path d="M5,14H19L17.5,9.5H6.5L5,14M17.5,19A1.5,1.5 0 0,0 19,17.5A1.5,1.5 0 0,0 17.5,16A1.5,1.5 0 0,0 16,17.5A1.5,1.5 0 0,0 17.5,19M6.5,19A1.5,1.5 0 0,0 8,17.5A1.5,1.5 0 0,0 6.5,16A1.5,1.5 0 0,0 5,17.5A1.5,1.5 0 0,0 6.5,19M18.92,9L21,15V23A1,1 0 0,1 20,24H19A1,1 0 0,1 18,23V22H6V23A1,1 0 0,1 5,24H4A1,1 0 0,1 3,23V15L5.08,9C5.28,8.42 5.85,8 6.5,8H17.5C18.15,8 18.72,8.42 18.92,9M12,0C14.12,0 16.15,0.86 17.65,2.35L16.23,3.77C15.11,2.65 13.58,2 12,2C10.42,2 8.89,2.65 7.77,3.77L6.36,2.35C7.85,0.86 9.88,0 12,0M12,4C13.06,4 14.07,4.44 14.82,5.18L13.4,6.6C13.03,6.23 12.53,6 12,6C11.5,6 10.97,6.23 10.6,6.6L9.18,5.18C9.93,4.44 10.94,4 12,4Z" /></g><g id="car-wash"><path d="M5,13L6.5,8.5H17.5L19,13M17.5,18A1.5,1.5 0 0,1 16,16.5A1.5,1.5 0 0,1 17.5,15A1.5,1.5 0 0,1 19,16.5A1.5,1.5 0 0,1 17.5,18M6.5,18A1.5,1.5 0 0,1 5,16.5A1.5,1.5 0 0,1 6.5,15A1.5,1.5 0 0,1 8,16.5A1.5,1.5 0 0,1 6.5,18M18.92,8C18.72,7.42 18.16,7 17.5,7H6.5C5.84,7 5.28,7.42 5.08,8L3,14V22A1,1 0 0,0 4,23H5A1,1 0 0,0 6,22V21H18V22A1,1 0 0,0 19,23H20A1,1 0 0,0 21,22V14M7,5A1.5,1.5 0 0,0 8.5,3.5C8.5,2.5 7,0.8 7,0.8C7,0.8 5.5,2.5 5.5,3.5A1.5,1.5 0 0,0 7,5M12,5A1.5,1.5 0 0,0 13.5,3.5C13.5,2.5 12,0.8 12,0.8C12,0.8 10.5,2.5 10.5,3.5A1.5,1.5 0 0,0 12,5M17,5A1.5,1.5 0 0,0 18.5,3.5C18.5,2.5 17,0.8 17,0.8C17,0.8 15.5,2.5 15.5,3.5A1.5,1.5 0 0,0 17,5Z" /></g><g id="cards"><path d="M21.47,4.35L20.13,3.79V12.82L22.56,6.96C22.97,5.94 22.5,4.77 21.47,4.35M1.97,8.05L6.93,20C7.24,20.77 7.97,21.24 8.74,21.26C9,21.26 9.27,21.21 9.53,21.1L16.9,18.05C17.65,17.74 18.11,17 18.13,16.26C18.14,16 18.09,15.71 18,15.45L13,3.5C12.71,2.73 11.97,2.26 11.19,2.25C10.93,2.25 10.67,2.31 10.42,2.4L3.06,5.45C2.04,5.87 1.55,7.04 1.97,8.05M18.12,4.25A2,2 0 0,0 16.12,2.25H14.67L18.12,10.59" /></g><g id="cards-outline"><path d="M11.19,2.25C10.93,2.25 10.67,2.31 10.42,2.4L3.06,5.45C2.04,5.87 1.55,7.04 1.97,8.05L6.93,20C7.24,20.77 7.97,21.23 8.74,21.25C9,21.25 9.27,21.22 9.53,21.1L16.9,18.05C17.65,17.74 18.11,17 18.13,16.25C18.14,16 18.09,15.71 18,15.45L13,3.5C12.71,2.73 11.97,2.26 11.19,2.25M14.67,2.25L18.12,10.6V4.25A2,2 0 0,0 16.12,2.25M20.13,3.79V12.82L22.56,6.96C22.97,5.94 22.5,4.78 21.47,4.36M11.19,4.22L16.17,16.24L8.78,19.3L3.8,7.29" /></g><g id="cards-playing-outline"><path d="M11.19,2.25C11.97,2.26 12.71,2.73 13,3.5L18,15.45C18.09,15.71 18.14,16 18.13,16.25C18.11,17 17.65,17.74 16.9,18.05L9.53,21.1C9.27,21.22 9,21.25 8.74,21.25C7.97,21.23 7.24,20.77 6.93,20L1.97,8.05C1.55,7.04 2.04,5.87 3.06,5.45L10.42,2.4C10.67,2.31 10.93,2.25 11.19,2.25M14.67,2.25H16.12A2,2 0 0,1 18.12,4.25V10.6L14.67,2.25M20.13,3.79L21.47,4.36C22.5,4.78 22.97,5.94 22.56,6.96L20.13,12.82V3.79M11.19,4.22L3.8,7.29L8.77,19.3L16.17,16.24L11.19,4.22M8.65,8.54L11.88,10.95L11.44,14.96L8.21,12.54L8.65,8.54Z" /></g><g id="cards-variant"><path d="M5,2H19A1,1 0 0,1 20,3V13A1,1 0 0,1 19,14H5A1,1 0 0,1 4,13V3A1,1 0 0,1 5,2M6,4V12H18V4H6M20,17A1,1 0 0,1 19,18H5A1,1 0 0,1 4,17V16H20V17M20,21A1,1 0 0,1 19,22H5A1,1 0 0,1 4,21V20H20V21Z" /></g><g id="carrot"><path d="M16,10L15.8,11H13.5A0.5,0.5 0 0,0 13,11.5A0.5,0.5 0 0,0 13.5,12H15.6L14.6,17H12.5A0.5,0.5 0 0,0 12,17.5A0.5,0.5 0 0,0 12.5,18H14.4L14,20A2,2 0 0,1 12,22A2,2 0 0,1 10,20L9,15H10.5A0.5,0.5 0 0,0 11,14.5A0.5,0.5 0 0,0 10.5,14H8.8L8,10C8,8.8 8.93,7.77 10.29,7.29L8.9,5.28C8.59,4.82 8.7,4.2 9.16,3.89C9.61,3.57 10.23,3.69 10.55,4.14L11,4.8V3A1,1 0 0,1 12,2A1,1 0 0,1 13,3V5.28L14.5,3.54C14.83,3.12 15.47,3.07 15.89,3.43C16.31,3.78 16.36,4.41 16,4.84L13.87,7.35C15.14,7.85 16,8.85 16,10Z" /></g><g id="cart"><path d="M17,18C15.89,18 15,18.89 15,20A2,2 0 0,0 17,22A2,2 0 0,0 19,20C19,18.89 18.1,18 17,18M1,2V4H3L6.6,11.59L5.24,14.04C5.09,14.32 5,14.65 5,15A2,2 0 0,0 7,17H19V15H7.42A0.25,0.25 0 0,1 7.17,14.75C7.17,14.7 7.18,14.66 7.2,14.63L8.1,13H15.55C16.3,13 16.96,12.58 17.3,11.97L20.88,5.5C20.95,5.34 21,5.17 21,5A1,1 0 0,0 20,4H5.21L4.27,2M7,18C5.89,18 5,18.89 5,20A2,2 0 0,0 7,22A2,2 0 0,0 9,20C9,18.89 8.1,18 7,18Z" /></g><g id="cart-off"><path d="M22.73,22.73L1.27,1.27L0,2.54L4.39,6.93L6.6,11.59L5.25,14.04C5.09,14.32 5,14.65 5,15A2,2 0 0,0 7,17H14.46L15.84,18.38C15.34,18.74 15,19.33 15,20A2,2 0 0,0 17,22C17.67,22 18.26,21.67 18.62,21.16L21.46,24L22.73,22.73M7.42,15A0.25,0.25 0 0,1 7.17,14.75L7.2,14.63L8.1,13H10.46L12.46,15H7.42M15.55,13C16.3,13 16.96,12.59 17.3,11.97L20.88,5.5C20.96,5.34 21,5.17 21,5A1,1 0 0,0 20,4H6.54L15.55,13M7,18A2,2 0 0,0 5,20A2,2 0 0,0 7,22A2,2 0 0,0 9,20A2,2 0 0,0 7,18Z" /></g><g id="cart-outline"><path d="M17,18A2,2 0 0,1 19,20A2,2 0 0,1 17,22C15.89,22 15,21.1 15,20C15,18.89 15.89,18 17,18M1,2H4.27L5.21,4H20A1,1 0 0,1 21,5C21,5.17 20.95,5.34 20.88,5.5L17.3,11.97C16.96,12.58 16.3,13 15.55,13H8.1L7.2,14.63L7.17,14.75A0.25,0.25 0 0,0 7.42,15H19V17H7C5.89,17 5,16.1 5,15C5,14.65 5.09,14.32 5.24,14.04L6.6,11.59L3,4H1V2M7,18A2,2 0 0,1 9,20A2,2 0 0,1 7,22C5.89,22 5,21.1 5,20C5,18.89 5.89,18 7,18M16,11L18.78,6H6.14L8.5,11H16Z" /></g><g id="cart-plus"><path d="M11,9H13V6H16V4H13V1H11V4H8V6H11M7,18A2,2 0 0,0 5,20A2,2 0 0,0 7,22A2,2 0 0,0 9,20A2,2 0 0,0 7,18M17,18A2,2 0 0,0 15,20A2,2 0 0,0 17,22A2,2 0 0,0 19,20A2,2 0 0,0 17,18M7.17,14.75L7.2,14.63L8.1,13H15.55C16.3,13 16.96,12.59 17.3,11.97L21.16,4.96L19.42,4H19.41L18.31,6L15.55,11H8.53L8.4,10.73L6.16,6L5.21,4L4.27,2H1V4H3L6.6,11.59L5.25,14.04C5.09,14.32 5,14.65 5,15A2,2 0 0,0 7,17H19V15H7.42C7.29,15 7.17,14.89 7.17,14.75Z" /></g><g id="case-sensitive-alt"><path d="M20,14C20,12.5 19.5,12 18,12H16V11C16,10 16,10 14,10V15.4L14,19H16L18,19C19.5,19 20,18.47 20,17V14M12,12C12,10.5 11.47,10 10,10H6C4.5,10 4,10.5 4,12V19H6V16H10V19H12V12M10,7H14V5H10V7M22,9V20C22,21.11 21.11,22 20,22H4A2,2 0 0,1 2,20V9C2,7.89 2.89,7 4,7H8V5L10,3H14L16,5V7H20A2,2 0 0,1 22,9H22M16,17H18V14H16V17M6,12H10V14H6V12Z" /></g><g id="cash"><path d="M3,6H21V18H3V6M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9M7,8A2,2 0 0,1 5,10V14A2,2 0 0,1 7,16H17A2,2 0 0,1 19,14V10A2,2 0 0,1 17,8H7Z" /></g><g id="cash-100"><path d="M2,5H22V20H2V5M20,18V7H4V18H20M17,8A2,2 0 0,0 19,10V15A2,2 0 0,0 17,17H7A2,2 0 0,0 5,15V10A2,2 0 0,0 7,8H17M17,13V12C17,10.9 16.33,10 15.5,10C14.67,10 14,10.9 14,12V13C14,14.1 14.67,15 15.5,15C16.33,15 17,14.1 17,13M15.5,11A0.5,0.5 0 0,1 16,11.5V13.5A0.5,0.5 0 0,1 15.5,14A0.5,0.5 0 0,1 15,13.5V11.5A0.5,0.5 0 0,1 15.5,11M13,13V12C13,10.9 12.33,10 11.5,10C10.67,10 10,10.9 10,12V13C10,14.1 10.67,15 11.5,15C12.33,15 13,14.1 13,13M11.5,11A0.5,0.5 0 0,1 12,11.5V13.5A0.5,0.5 0 0,1 11.5,14A0.5,0.5 0 0,1 11,13.5V11.5A0.5,0.5 0 0,1 11.5,11M8,15H9V10H8L7,10.5V11.5L8,11V15Z" /></g><g id="cash-multiple"><path d="M5,6H23V18H5V6M14,9A3,3 0 0,1 17,12A3,3 0 0,1 14,15A3,3 0 0,1 11,12A3,3 0 0,1 14,9M9,8A2,2 0 0,1 7,10V14A2,2 0 0,1 9,16H19A2,2 0 0,1 21,14V10A2,2 0 0,1 19,8H9M1,10H3V20H19V22H1V10Z" /></g><g id="cash-usd"><path d="M20,18H4V6H20M20,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4M11,17H13V16H14A1,1 0 0,0 15,15V12A1,1 0 0,0 14,11H11V10H15V8H13V7H11V8H10A1,1 0 0,0 9,9V12A1,1 0 0,0 10,13H13V14H9V16H11V17Z" /></g><g id="cast"><path d="M1,10V12A9,9 0 0,1 10,21H12C12,14.92 7.07,10 1,10M1,14V16A5,5 0 0,1 6,21H8A7,7 0 0,0 1,14M1,18V21H4A3,3 0 0,0 1,18M21,3H3C1.89,3 1,3.89 1,5V8H3V5H21V19H14V21H21A2,2 0 0,0 23,19V5C23,3.89 22.1,3 21,3Z" /></g><g id="cast-connected"><path d="M21,3H3C1.89,3 1,3.89 1,5V8H3V5H21V19H14V21H21A2,2 0 0,0 23,19V5C23,3.89 22.1,3 21,3M1,10V12A9,9 0 0,1 10,21H12C12,14.92 7.07,10 1,10M19,7H5V8.63C8.96,9.91 12.09,13.04 13.37,17H19M1,14V16A5,5 0 0,1 6,21H8A7,7 0 0,0 1,14M1,18V21H4A3,3 0 0,0 1,18Z" /></g><g id="castle"><path d="M2,13H4V15H6V13H8V15H10V13H12V15H14V10L17,7V1H19L23,3L19,5V7L22,10V22H11V19A2,2 0 0,0 9,17A2,2 0 0,0 7,19V22H2V13M18,10C17.45,10 17,10.54 17,11.2V13H19V11.2C19,10.54 18.55,10 18,10Z" /></g><g id="cat"><path d="M12,8L10.67,8.09C9.81,7.07 7.4,4.5 5,4.5C5,4.5 3.03,7.46 4.96,11.41C4.41,12.24 4.07,12.67 4,13.66L2.07,13.95L2.28,14.93L4.04,14.67L4.18,15.38L2.61,16.32L3.08,17.21L4.53,16.32C5.68,18.76 8.59,20 12,20C15.41,20 18.32,18.76 19.47,16.32L20.92,17.21L21.39,16.32L19.82,15.38L19.96,14.67L21.72,14.93L21.93,13.95L20,13.66C19.93,12.67 19.59,12.24 19.04,11.41C20.97,7.46 19,4.5 19,4.5C16.6,4.5 14.19,7.07 13.33,8.09L12,8M9,11A1,1 0 0,1 10,12A1,1 0 0,1 9,13A1,1 0 0,1 8,12A1,1 0 0,1 9,11M15,11A1,1 0 0,1 16,12A1,1 0 0,1 15,13A1,1 0 0,1 14,12A1,1 0 0,1 15,11M11,14H13L12.3,15.39C12.5,16.03 13.06,16.5 13.75,16.5A1.5,1.5 0 0,0 15.25,15H15.75A2,2 0 0,1 13.75,17C13,17 12.35,16.59 12,16V16H12C11.65,16.59 11,17 10.25,17A2,2 0 0,1 8.25,15H8.75A1.5,1.5 0 0,0 10.25,16.5C10.94,16.5 11.5,16.03 11.7,15.39L11,14Z" /></g><g id="cellphone"><path d="M17,19H7V5H17M17,1H7C5.89,1 5,1.89 5,3V21A2,2 0 0,0 7,23H17A2,2 0 0,0 19,21V3C19,1.89 18.1,1 17,1Z" /></g><g id="cellphone-android"><path d="M17.25,18H6.75V4H17.25M14,21H10V20H14M16,1H8A3,3 0 0,0 5,4V20A3,3 0 0,0 8,23H16A3,3 0 0,0 19,20V4A3,3 0 0,0 16,1Z" /></g><g id="cellphone-basic"><path d="M15,2A1,1 0 0,0 14,3V6H10C8.89,6 8,6.89 8,8V20C8,21.11 8.89,22 10,22H15C16.11,22 17,21.11 17,20V8C17,7.26 16.6,6.62 16,6.28V3A1,1 0 0,0 15,2M10,8H15V13H10V8M10,15H11V16H10V15M12,15H13V16H12V15M14,15H15V16H14V15M10,17H11V18H10V17M12,17H13V18H12V17M14,17H15V18H14V17M10,19H11V20H10V19M12,19H13V20H12V19M14,19H15V20H14V19Z" /></g><g id="cellphone-dock"><path d="M16,15H8V5H16M16,1H8C6.89,1 6,1.89 6,3V17A2,2 0 0,0 8,19H16A2,2 0 0,0 18,17V3C18,1.89 17.1,1 16,1M8,23H16V21H8V23Z" /></g><g id="cellphone-iphone"><path d="M16,18H7V4H16M11.5,22A1.5,1.5 0 0,1 10,20.5A1.5,1.5 0 0,1 11.5,19A1.5,1.5 0 0,1 13,20.5A1.5,1.5 0 0,1 11.5,22M15.5,1H7.5A2.5,2.5 0 0,0 5,3.5V20.5A2.5,2.5 0 0,0 7.5,23H15.5A2.5,2.5 0 0,0 18,20.5V3.5A2.5,2.5 0 0,0 15.5,1Z" /></g><g id="cellphone-link"><path d="M22,17H18V10H22M23,8H17A1,1 0 0,0 16,9V19A1,1 0 0,0 17,20H23A1,1 0 0,0 24,19V9A1,1 0 0,0 23,8M4,6H22V4H4A2,2 0 0,0 2,6V17H0V20H14V17H4V6Z" /></g><g id="cellphone-link-off"><path d="M23,8H17A1,1 0 0,0 16,9V13.18L18,15.18V10H22V17H19.82L22.82,20H23A1,1 0 0,0 24,19V9A1,1 0 0,0 23,8M4,6.27L14.73,17H4V6.27M1.92,1.65L0.65,2.92L2.47,4.74C2.18,5.08 2,5.5 2,6V17H0V20H17.73L20.08,22.35L21.35,21.08L3.89,3.62L1.92,1.65M22,6V4H6.82L8.82,6H22Z" /></g><g id="cellphone-settings"><path d="M16,16H8V4H16M16,0H8A2,2 0 0,0 6,2V18A2,2 0 0,0 8,20H16A2,2 0 0,0 18,18V2A2,2 0 0,0 16,0M15,24H17V22H15M11,24H13V22H11M7,24H9V22H7V24Z" /></g><g id="certificate"><path d="M4,3C2.89,3 2,3.89 2,5V15A2,2 0 0,0 4,17H12V22L15,19L18,22V17H20A2,2 0 0,0 22,15V8L22,6V5A2,2 0 0,0 20,3H16V3H4M12,5L15,7L18,5V8.5L21,10L18,11.5V15L15,13L12,15V11.5L9,10L12,8.5V5M4,5H9V7H4V5M4,9H7V11H4V9M4,13H9V15H4V13Z" /></g><g id="chair-school"><path d="M22,5V7H17L13.53,12H16V14H14.46L18.17,22H15.97L15.04,20H6.38L5.35,22H3.1L7.23,14H7C6.55,14 6.17,13.7 6.04,13.3L2.87,3.84L3.82,3.5C4.34,3.34 4.91,3.63 5.08,4.15L7.72,12H12.1L15.57,7H12V5H22M9.5,14L7.42,18H14.11L12.26,14H9.5Z" /></g><g id="chart-arc"><path d="M16.18,19.6L14.17,16.12C15.15,15.4 15.83,14.28 15.97,13H20C19.83,15.76 18.35,18.16 16.18,19.6M13,7.03V3C17.3,3.26 20.74,6.7 21,11H16.97C16.74,8.91 15.09,7.26 13,7.03M7,12.5C7,13.14 7.13,13.75 7.38,14.3L3.9,16.31C3.32,15.16 3,13.87 3,12.5C3,7.97 6.54,4.27 11,4V8.03C8.75,8.28 7,10.18 7,12.5M11.5,21C8.53,21 5.92,19.5 4.4,17.18L7.88,15.17C8.7,16.28 10,17 11.5,17C12.14,17 12.75,16.87 13.3,16.62L15.31,20.1C14.16,20.68 12.87,21 11.5,21Z" /></g><g id="chart-areaspline"><path d="M17.45,15.18L22,7.31V19L22,21H2V3H4V15.54L9.5,6L16,9.78L20.24,2.45L21.97,3.45L16.74,12.5L10.23,8.75L4.31,19H6.57L10.96,11.44L17.45,15.18Z" /></g><g id="chart-bar"><path d="M22,21H2V3H4V19H6V10H10V19H12V6H16V19H18V14H22V21Z" /></g><g id="chart-bubble"><path d="M7.2,11.2C8.97,11.2 10.4,12.63 10.4,14.4C10.4,16.17 8.97,17.6 7.2,17.6C5.43,17.6 4,16.17 4,14.4C4,12.63 5.43,11.2 7.2,11.2M14.8,16A2,2 0 0,1 16.8,18A2,2 0 0,1 14.8,20A2,2 0 0,1 12.8,18A2,2 0 0,1 14.8,16M15.2,4A4.8,4.8 0 0,1 20,8.8C20,11.45 17.85,13.6 15.2,13.6A4.8,4.8 0 0,1 10.4,8.8C10.4,6.15 12.55,4 15.2,4Z" /></g><g id="chart-gantt"><path d="M2,5H10V2H12V22H10V18H6V15H10V13H4V10H10V8H2V5M14,5H17V8H14V5M14,10H19V13H14V10M14,15H22V18H14V15Z" /></g><g id="chart-histogram"><path d="M3,3H5V13H9V7H13V11H17V15H21V21H3V3Z" /></g><g id="chart-line"><path d="M16,11.78L20.24,4.45L21.97,5.45L16.74,14.5L10.23,10.75L5.46,19H22V21H2V3H4V17.54L9.5,8L16,11.78Z" /></g><g id="chart-pie"><path d="M21,11H13V3A8,8 0 0,1 21,11M19,13C19,15.78 17.58,18.23 15.43,19.67L11.58,13H19M11,21C8.22,21 5.77,19.58 4.33,17.43L10.82,13.68L14.56,20.17C13.5,20.7 12.28,21 11,21M3,13A8,8 0 0,1 11,5V12.42L3.83,16.56C3.3,15.5 3,14.28 3,13Z" /></g><g id="chart-scatterplot-hexbin"><path d="M2,2H4V20H22V22H2V2M14,14.5L12,18H7.94L5.92,14.5L7.94,11H12L14,14.5M14.08,6.5L12.06,10H8L6,6.5L8,3H12.06L14.08,6.5M21.25,10.5L19.23,14H15.19L13.17,10.5L15.19,7H19.23L21.25,10.5Z" /></g><g id="chart-timeline"><path d="M2,2H4V20H22V22H2V2M7,10H17V13H7V10M11,15H21V18H11V15M6,4H22V8H20V6H8V8H6V4Z" /></g><g id="check"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z" /></g><g id="check-all"><path d="M0.41,13.41L6,19L7.41,17.58L1.83,12M22.24,5.58L11.66,16.17L7.5,12L6.07,13.41L11.66,19L23.66,7M18,7L16.59,5.58L10.24,11.93L11.66,13.34L18,7Z" /></g><g id="check-circle"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M11,16.5L18,9.5L16.59,8.09L11,13.67L7.91,10.59L6.5,12L11,16.5Z" /></g><g id="check-circle-outline"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4M11,16.5L6.5,12L7.91,10.59L11,13.67L16.59,8.09L18,9.5L11,16.5Z" /></g><g id="checkbox-blank"><path d="M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="checkbox-blank-circle"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="checkbox-blank-circle-outline"><path d="M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="checkbox-blank-outline"><path d="M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M19,5V19H5V5H19Z" /></g><g id="checkbox-marked"><path d="M10,17L5,12L6.41,10.58L10,14.17L17.59,6.58L19,8M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="checkbox-marked-circle"><path d="M10,17L5,12L6.41,10.58L10,14.17L17.59,6.58L19,8M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="checkbox-marked-circle-outline"><path d="M20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4C12.76,4 13.5,4.11 14.2,4.31L15.77,2.74C14.61,2.26 13.34,2 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12M7.91,10.08L6.5,11.5L11,16L21,6L19.59,4.58L11,13.17L7.91,10.08Z" /></g><g id="checkbox-marked-outline"><path d="M19,19H5V5H15V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V11H19M7.91,10.08L6.5,11.5L11,16L21,6L19.59,4.58L11,13.17L7.91,10.08Z" /></g><g id="checkbox-multiple-blank"><path d="M22,16A2,2 0 0,1 20,18H8C6.89,18 6,17.1 6,16V4C6,2.89 6.89,2 8,2H20A2,2 0 0,1 22,4V16M16,20V22H4A2,2 0 0,1 2,20V7H4V20H16Z" /></g><g id="checkbox-multiple-blank-circle"><path d="M14,2A8,8 0 0,0 6,10A8,8 0 0,0 14,18A8,8 0 0,0 22,10A8,8 0 0,0 14,2M4.93,5.82C3.08,7.34 2,9.61 2,12A8,8 0 0,0 10,20C10.64,20 11.27,19.92 11.88,19.77C10.12,19.38 8.5,18.5 7.17,17.29C5.22,16.25 4,14.21 4,12C4,11.7 4.03,11.41 4.07,11.11C4.03,10.74 4,10.37 4,10C4,8.56 4.32,7.13 4.93,5.82Z" /></g><g id="checkbox-multiple-blank-circle-outline"><path d="M14,2A8,8 0 0,0 6,10A8,8 0 0,0 14,18A8,8 0 0,0 22,10A8,8 0 0,0 14,2M14,4C17.32,4 20,6.69 20,10C20,13.32 17.32,16 14,16A6,6 0 0,1 8,10A6,6 0 0,1 14,4M4.93,5.82C3.08,7.34 2,9.61 2,12A8,8 0 0,0 10,20C10.64,20 11.27,19.92 11.88,19.77C10.12,19.38 8.5,18.5 7.17,17.29C5.22,16.25 4,14.21 4,12C4,11.7 4.03,11.41 4.07,11.11C4.03,10.74 4,10.37 4,10C4,8.56 4.32,7.13 4.93,5.82Z" /></g><g id="checkbox-multiple-blank-outline"><path d="M20,16V4H8V16H20M22,16A2,2 0 0,1 20,18H8C6.89,18 6,17.1 6,16V4C6,2.89 6.89,2 8,2H20A2,2 0 0,1 22,4V16M16,20V22H4A2,2 0 0,1 2,20V7H4V20H16Z" /></g><g id="checkbox-multiple-marked"><path d="M22,16A2,2 0 0,1 20,18H8C6.89,18 6,17.1 6,16V4C6,2.89 6.89,2 8,2H20A2,2 0 0,1 22,4V16M16,20V22H4A2,2 0 0,1 2,20V7H4V20H16M13,14L20,7L18.59,5.59L13,11.17L9.91,8.09L8.5,9.5L13,14Z" /></g><g id="checkbox-multiple-marked-circle"><path d="M14,2A8,8 0 0,0 6,10A8,8 0 0,0 14,18A8,8 0 0,0 22,10A8,8 0 0,0 14,2M4.93,5.82C3.08,7.34 2,9.61 2,12A8,8 0 0,0 10,20C10.64,20 11.27,19.92 11.88,19.77C10.12,19.38 8.5,18.5 7.17,17.29C5.22,16.25 4,14.21 4,12C4,11.7 4.03,11.41 4.07,11.11C4.03,10.74 4,10.37 4,10C4,8.56 4.32,7.13 4.93,5.82M18.09,6.08L19.5,7.5L13,14L9.21,10.21L10.63,8.79L13,11.17" /></g><g id="checkbox-multiple-marked-circle-outline"><path d="M14,2A8,8 0 0,0 6,10A8,8 0 0,0 14,18A8,8 0 0,0 22,10H20C20,13.32 17.32,16 14,16A6,6 0 0,1 8,10A6,6 0 0,1 14,4C14.43,4 14.86,4.05 15.27,4.14L16.88,2.54C15.96,2.18 15,2 14,2M20.59,3.58L14,10.17L11.62,7.79L10.21,9.21L14,13L22,5M4.93,5.82C3.08,7.34 2,9.61 2,12A8,8 0 0,0 10,20C10.64,20 11.27,19.92 11.88,19.77C10.12,19.38 8.5,18.5 7.17,17.29C5.22,16.25 4,14.21 4,12C4,11.7 4.03,11.41 4.07,11.11C4.03,10.74 4,10.37 4,10C4,8.56 4.32,7.13 4.93,5.82Z" /></g><g id="checkbox-multiple-marked-outline"><path d="M20,16V10H22V16A2,2 0 0,1 20,18H8C6.89,18 6,17.1 6,16V4C6,2.89 6.89,2 8,2H16V4H8V16H20M10.91,7.08L14,10.17L20.59,3.58L22,5L14,13L9.5,8.5L10.91,7.08M16,20V22H4A2,2 0 0,1 2,20V7H4V20H16Z" /></g><g id="checkerboard"><path d="M3,3H21V21H3V3M5,5V12H12V19H19V12H12V5H5Z" /></g><g id="chemical-weapon"><path d="M11,7.83C9.83,7.42 9,6.3 9,5A3,3 0 0,1 12,2A3,3 0 0,1 15,5C15,6.31 14.16,7.42 13,7.83V10.64C12.68,10.55 12.35,10.5 12,10.5C11.65,10.5 11.32,10.55 11,10.64V7.83M18.3,21.1C17.16,20.45 16.62,19.18 16.84,17.96L14.4,16.55C14.88,16.09 15.24,15.5 15.4,14.82L17.84,16.23C18.78,15.42 20.16,15.26 21.29,15.91C22.73,16.74 23.22,18.57 22.39,20C21.56,21.44 19.73,21.93 18.3,21.1M2.7,15.9C3.83,15.25 5.21,15.42 6.15,16.22L8.6,14.81C8.76,15.5 9.11,16.08 9.6,16.54L7.15,17.95C7.38,19.17 6.83,20.45 5.7,21.1C4.26,21.93 2.43,21.44 1.6,20C0.77,18.57 1.26,16.73 2.7,15.9M14,14A2,2 0 0,1 12,16C10.89,16 10,15.1 10,14A2,2 0 0,1 12,12C13.11,12 14,12.9 14,14M17,14L16.97,14.57L15.5,13.71C15.4,12.64 14.83,11.71 14,11.12V9.41C15.77,10.19 17,11.95 17,14M14.97,18.03C14.14,18.64 13.11,19 12,19C10.89,19 9.86,18.64 9.03,18L10.5,17.17C10.96,17.38 11.47,17.5 12,17.5C12.53,17.5 13.03,17.38 13.5,17.17L14.97,18.03M7.03,14.56L7,14C7,11.95 8.23,10.19 10,9.42V11.13C9.17,11.71 8.6,12.64 8.5,13.7L7.03,14.56Z" /></g><g id="chevron-double-down"><path d="M16.59,5.59L18,7L12,13L6,7L7.41,5.59L12,10.17L16.59,5.59M16.59,11.59L18,13L12,19L6,13L7.41,11.59L12,16.17L16.59,11.59Z" /></g><g id="chevron-double-left"><path d="M18.41,7.41L17,6L11,12L17,18L18.41,16.59L13.83,12L18.41,7.41M12.41,7.41L11,6L5,12L11,18L12.41,16.59L7.83,12L12.41,7.41Z" /></g><g id="chevron-double-right"><path d="M5.59,7.41L7,6L13,12L7,18L5.59,16.59L10.17,12L5.59,7.41M11.59,7.41L13,6L19,12L13,18L11.59,16.59L16.17,12L11.59,7.41Z" /></g><g id="chevron-double-up"><path d="M7.41,18.41L6,17L12,11L18,17L16.59,18.41L12,13.83L7.41,18.41M7.41,12.41L6,11L12,5L18,11L16.59,12.41L12,7.83L7.41,12.41Z" /></g><g id="chevron-down"><path d="M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z" /></g><g id="chevron-left"><path d="M15.41,16.58L10.83,12L15.41,7.41L14,6L8,12L14,18L15.41,16.58Z" /></g><g id="chevron-right"><path d="M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z" /></g><g id="chevron-up"><path d="M7.41,15.41L12,10.83L16.59,15.41L18,14L12,8L6,14L7.41,15.41Z" /></g><g id="chip"><path d="M6,4H18V5H21V7H18V9H21V11H18V13H21V15H18V17H21V19H18V20H6V19H3V17H6V15H3V13H6V11H3V9H6V7H3V5H6V4M11,15V18H12V15H11M13,15V18H14V15H13M15,15V18H16V15H15Z" /></g><g id="church"><path d="M11,2H13V4H15V6H13V9.4L22,13V15L20,14.2V22H14V17A2,2 0 0,0 12,15A2,2 0 0,0 10,17V22H4V14.2L2,15V13L11,9.4V6H9V4H11V2M6,20H8V15L7,14L6,15V20M16,20H18V15L17,14L16,15V20Z" /></g><g id="cisco-webex"><path d="M12,3A9,9 0 0,1 21,12A9,9 0 0,1 12,21A9,9 0 0,1 3,12A9,9 0 0,1 12,3M5.94,8.5C4,11.85 5.15,16.13 8.5,18.06C11.85,20 18.85,7.87 15.5,5.94C12.15,4 7.87,5.15 5.94,8.5Z" /></g><g id="city"><path d="M19,15H17V13H19M19,19H17V17H19M13,7H11V5H13M13,11H11V9H13M13,15H11V13H13M13,19H11V17H13M7,11H5V9H7M7,15H5V13H7M7,19H5V17H7M15,11V5L12,2L9,5V7H3V21H21V11H15Z" /></g><g id="clipboard"><path d="M9,4A3,3 0 0,1 12,1A3,3 0 0,1 15,4H19A2,2 0 0,1 21,6V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V6A2,2 0 0,1 5,4H9M12,3A1,1 0 0,0 11,4A1,1 0 0,0 12,5A1,1 0 0,0 13,4A1,1 0 0,0 12,3Z" /></g><g id="clipboard-account"><path d="M18,19H6V17.6C6,15.6 10,14.5 12,14.5C14,14.5 18,15.6 18,17.6M12,7A3,3 0 0,1 15,10A3,3 0 0,1 12,13A3,3 0 0,1 9,10A3,3 0 0,1 12,7M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="clipboard-alert"><path d="M12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5M13,14H11V8H13M13,18H11V16H13M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="clipboard-arrow-down"><path d="M12,18L7,13H10V9H14V13H17M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="clipboard-arrow-left"><path d="M16,15H12V18L7,13L12,8V11H16M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="clipboard-check"><path d="M10,17L6,13L7.41,11.59L10,14.17L16.59,7.58L18,9M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="clipboard-flow"><path d="M19,4H14.82C14.25,2.44 12.53,1.64 11,2.2C10.14,2.5 9.5,3.16 9.18,4H5A2,2 0 0,0 3,6V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V6A2,2 0 0,0 19,4M12,4A1,1 0 0,1 13,5A1,1 0 0,1 12,6A1,1 0 0,1 11,5A1,1 0 0,1 12,4M10,17H8V10H5L9,6L13,10H10V17M15,20L11,16H14V9H16V16H19L15,20Z" /></g><g id="clipboard-outline"><path d="M7,8V6H5V19H19V6H17V8H7M9,4A3,3 0 0,1 12,1A3,3 0 0,1 15,4H19A2,2 0 0,1 21,6V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V6A2,2 0 0,1 5,4H9M12,3A1,1 0 0,0 11,4A1,1 0 0,0 12,5A1,1 0 0,0 13,4A1,1 0 0,0 12,3Z" /></g><g id="clipboard-text"><path d="M17,9H7V7H17M17,13H7V11H17M14,17H7V15H14M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="clippy"><path d="M15,15.5A2.5,2.5 0 0,1 12.5,18A2.5,2.5 0 0,1 10,15.5V13.75A0.75,0.75 0 0,1 10.75,13A0.75,0.75 0 0,1 11.5,13.75V15.5A1,1 0 0,0 12.5,16.5A1,1 0 0,0 13.5,15.5V11.89C12.63,11.61 12,10.87 12,10C12,8.9 13,8 14.25,8C15.5,8 16.5,8.9 16.5,10C16.5,10.87 15.87,11.61 15,11.89V15.5M8.25,8C9.5,8 10.5,8.9 10.5,10C10.5,10.87 9.87,11.61 9,11.89V17.25A3.25,3.25 0 0,0 12.25,20.5A3.25,3.25 0 0,0 15.5,17.25V13.75A0.75,0.75 0 0,1 16.25,13A0.75,0.75 0 0,1 17,13.75V17.25A4.75,4.75 0 0,1 12.25,22A4.75,4.75 0 0,1 7.5,17.25V11.89C6.63,11.61 6,10.87 6,10C6,8.9 7,8 8.25,8M10.06,6.13L9.63,7.59C9.22,7.37 8.75,7.25 8.25,7.25C7.34,7.25 6.53,7.65 6.03,8.27L4.83,7.37C5.46,6.57 6.41,6 7.5,5.81V5.75A3.75,3.75 0 0,1 11.25,2A3.75,3.75 0 0,1 15,5.75V5.81C16.09,6 17.04,6.57 17.67,7.37L16.47,8.27C15.97,7.65 15.16,7.25 14.25,7.25C13.75,7.25 13.28,7.37 12.87,7.59L12.44,6.13C12.77,6 13.13,5.87 13.5,5.81V5.75C13.5,4.5 12.5,3.5 11.25,3.5C10,3.5 9,4.5 9,5.75V5.81C9.37,5.87 9.73,6 10.06,6.13M14.25,9.25C13.7,9.25 13.25,9.59 13.25,10C13.25,10.41 13.7,10.75 14.25,10.75C14.8,10.75 15.25,10.41 15.25,10C15.25,9.59 14.8,9.25 14.25,9.25M8.25,9.25C7.7,9.25 7.25,9.59 7.25,10C7.25,10.41 7.7,10.75 8.25,10.75C8.8,10.75 9.25,10.41 9.25,10C9.25,9.59 8.8,9.25 8.25,9.25Z" /></g><g id="clock"><path d="M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22C6.47,22 2,17.5 2,12A10,10 0 0,1 12,2M12.5,7V12.25L17,14.92L16.25,16.15L11,13V7H12.5Z" /></g><g id="clock-alert"><path d="M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22C14.25,22 16.33,21.24 18,20V17.28C16.53,18.94 14.39,20 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4C15.36,4 18.23,6.07 19.41,9H21.54C20.27,4.94 16.5,2 12,2M11,7V13L16.25,16.15L17,14.92L12.5,12.25V7H11M20,11V18H22V11H20M20,20V22H22V20H20Z" /></g><g id="clock-end"><path d="M12,1C8.14,1 5,4.14 5,8A7,7 0 0,0 12,15C15.86,15 19,11.87 19,8C19,4.14 15.86,1 12,1M12,3.15C14.67,3.15 16.85,5.32 16.85,8C16.85,10.68 14.67,12.85 12,12.85A4.85,4.85 0 0,1 7.15,8A4.85,4.85 0 0,1 12,3.15M11,5V8.69L14.19,10.53L14.94,9.23L12.5,7.82V5M15,16V19H3V21H15V24L19,20M19,20V24H21V16H19" /></g><g id="clock-fast"><path d="M15,4A8,8 0 0,1 23,12A8,8 0 0,1 15,20A8,8 0 0,1 7,12A8,8 0 0,1 15,4M15,6A6,6 0 0,0 9,12A6,6 0 0,0 15,18A6,6 0 0,0 21,12A6,6 0 0,0 15,6M14,8H15.5V11.78L17.83,14.11L16.77,15.17L14,12.4V8M2,18A1,1 0 0,1 1,17A1,1 0 0,1 2,16H5.83C6.14,16.71 6.54,17.38 7,18H2M3,13A1,1 0 0,1 2,12A1,1 0 0,1 3,11H5.05L5,12L5.05,13H3M4,8A1,1 0 0,1 3,7A1,1 0 0,1 4,6H7C6.54,6.62 6.14,7.29 5.83,8H4Z" /></g><g id="clock-in"><path d="M2.21,0.79L0.79,2.21L4.8,6.21L3,8H8V3L6.21,4.8M12,8C8.14,8 5,11.13 5,15A7,7 0 0,0 12,22C15.86,22 19,18.87 19,15A7,7 0 0,0 12,8M12,10.15C14.67,10.15 16.85,12.32 16.85,15A4.85,4.85 0 0,1 12,19.85C9.32,19.85 7.15,17.68 7.15,15A4.85,4.85 0 0,1 12,10.15M11,12V15.69L14.19,17.53L14.94,16.23L12.5,14.82V12" /></g><g id="clock-out"><path d="M18,1L19.8,2.79L15.79,6.79L17.21,8.21L21.21,4.21L23,6V1M12,8C8.14,8 5,11.13 5,15A7,7 0 0,0 12,22C15.86,22 19,18.87 19,15A7,7 0 0,0 12,8M12,10.15C14.67,10.15 16.85,12.32 16.85,15A4.85,4.85 0 0,1 12,19.85C9.32,19.85 7.15,17.68 7.15,15A4.85,4.85 0 0,1 12,10.15M11,12V15.69L14.19,17.53L14.94,16.23L12.5,14.82V12" /></g><g id="clock-start"><path d="M12,1C8.14,1 5,4.14 5,8A7,7 0 0,0 12,15C15.86,15 19,11.87 19,8C19,4.14 15.86,1 12,1M12,3.15C14.67,3.15 16.85,5.32 16.85,8C16.85,10.68 14.67,12.85 12,12.85A4.85,4.85 0 0,1 7.15,8A4.85,4.85 0 0,1 12,3.15M11,5V8.69L14.19,10.53L14.94,9.23L12.5,7.82V5M4,16V24H6V21H18V24L22,20L18,16V19H6V16" /></g><g id="close"><path d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z" /></g><g id="close-box"><path d="M19,3H16.3H7.7H5A2,2 0 0,0 3,5V7.7V16.4V19A2,2 0 0,0 5,21H7.7H16.4H19A2,2 0 0,0 21,19V16.3V7.7V5A2,2 0 0,0 19,3M15.6,17L12,13.4L8.4,17L7,15.6L10.6,12L7,8.4L8.4,7L12,10.6L15.6,7L17,8.4L13.4,12L17,15.6L15.6,17Z" /></g><g id="close-box-outline"><path d="M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M19,19H5V5H19V19M17,8.4L13.4,12L17,15.6L15.6,17L12,13.4L8.4,17L7,15.6L10.6,12L7,8.4L8.4,7L12,10.6L15.6,7L17,8.4Z" /></g><g id="close-circle"><path d="M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M15.59,7L12,10.59L8.41,7L7,8.41L10.59,12L7,15.59L8.41,17L12,13.41L15.59,17L17,15.59L13.41,12L17,8.41L15.59,7Z" /></g><g id="close-circle-outline"><path d="M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22C17.53,22 22,17.53 22,12C22,6.47 17.53,2 12,2M14.59,8L12,10.59L9.41,8L8,9.41L10.59,12L8,14.59L9.41,16L12,13.41L14.59,16L16,14.59L13.41,12L16,9.41L14.59,8Z" /></g><g id="close-network"><path d="M14.59,6L12,8.59L9.41,6L8,7.41L10.59,10L8,12.59L9.41,14L12,11.41L14.59,14L16,12.59L13.41,10L16,7.41L14.59,6M17,3A2,2 0 0,1 19,5V15A2,2 0 0,1 17,17H13V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H7C5.89,17 5,16.1 5,15V5A2,2 0 0,1 7,3H17Z" /></g><g id="close-octagon"><path d="M8.27,3L3,8.27V15.73L8.27,21H15.73L21,15.73V8.27L15.73,3M8.41,7L12,10.59L15.59,7L17,8.41L13.41,12L17,15.59L15.59,17L12,13.41L8.41,17L7,15.59L10.59,12L7,8.41" /></g><g id="close-octagon-outline"><path d="M8.27,3L3,8.27V15.73L8.27,21H15.73C17.5,19.24 21,15.73 21,15.73V8.27L15.73,3M9.1,5H14.9L19,9.1V14.9L14.9,19H9.1L5,14.9V9.1M9.12,7.71L7.71,9.12L10.59,12L7.71,14.88L9.12,16.29L12,13.41L14.88,16.29L16.29,14.88L13.41,12L16.29,9.12L14.88,7.71L12,10.59" /></g><g id="close-outline"><path d="M3,16.74L7.76,12L3,7.26L7.26,3L12,7.76L16.74,3L21,7.26L16.24,12L21,16.74L16.74,21L12,16.24L7.26,21L3,16.74M12,13.41L16.74,18.16L18.16,16.74L13.41,12L18.16,7.26L16.74,5.84L12,10.59L7.26,5.84L5.84,7.26L10.59,12L5.84,16.74L7.26,18.16L12,13.41Z" /></g><g id="closed-caption"><path d="M18,11H16.5V10.5H14.5V13.5H16.5V13H18V14A1,1 0 0,1 17,15H14A1,1 0 0,1 13,14V10A1,1 0 0,1 14,9H17A1,1 0 0,1 18,10M11,11H9.5V10.5H7.5V13.5H9.5V13H11V14A1,1 0 0,1 10,15H7A1,1 0 0,1 6,14V10A1,1 0 0,1 7,9H10A1,1 0 0,1 11,10M19,4H5C3.89,4 3,4.89 3,6V18A2,2 0 0,0 5,20H19A2,2 0 0,0 21,18V6C21,4.89 20.1,4 19,4Z" /></g><g id="cloud"><path d="M19.35,10.03C18.67,6.59 15.64,4 12,4C9.11,4 6.6,5.64 5.35,8.03C2.34,8.36 0,10.9 0,14A6,6 0 0,0 6,20H19A5,5 0 0,0 24,15C24,12.36 21.95,10.22 19.35,10.03Z" /></g><g id="cloud-check"><path d="M10,17L6.5,13.5L7.91,12.08L10,14.17L15.18,9L16.59,10.41M19.35,10.03C18.67,6.59 15.64,4 12,4C9.11,4 6.6,5.64 5.35,8.03C2.34,8.36 0,10.9 0,14A6,6 0 0,0 6,20H19A5,5 0 0,0 24,15C24,12.36 21.95,10.22 19.35,10.03Z" /></g><g id="cloud-circle"><path d="M16.5,16H8A3,3 0 0,1 5,13A3,3 0 0,1 8,10C8.05,10 8.09,10 8.14,10C8.58,8.28 10.13,7 12,7A4,4 0 0,1 16,11H16.5A2.5,2.5 0 0,1 19,13.5A2.5,2.5 0 0,1 16.5,16M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="cloud-download"><path d="M17,13L12,18L7,13H10V9H14V13M19.35,10.03C18.67,6.59 15.64,4 12,4C9.11,4 6.6,5.64 5.35,8.03C2.34,8.36 0,10.9 0,14A6,6 0 0,0 6,20H19A5,5 0 0,0 24,15C24,12.36 21.95,10.22 19.35,10.03Z" /></g><g id="cloud-outline"><path d="M19,18H6A4,4 0 0,1 2,14A4,4 0 0,1 6,10H6.71C7.37,7.69 9.5,6 12,6A5.5,5.5 0 0,1 17.5,11.5V12H19A3,3 0 0,1 22,15A3,3 0 0,1 19,18M19.35,10.03C18.67,6.59 15.64,4 12,4C9.11,4 6.6,5.64 5.35,8.03C2.34,8.36 0,10.9 0,14A6,6 0 0,0 6,20H19A5,5 0 0,0 24,15C24,12.36 21.95,10.22 19.35,10.03Z" /></g><g id="cloud-outline-off"><path d="M7.73,10L15.73,18H6A4,4 0 0,1 2,14A4,4 0 0,1 6,10M3,5.27L5.75,8C2.56,8.15 0,10.77 0,14A6,6 0 0,0 6,20H17.73L19.73,22L21,20.73L4.27,4M19.35,10.03C18.67,6.59 15.64,4 12,4C10.5,4 9.15,4.43 8,5.17L9.45,6.63C10.21,6.23 11.08,6 12,6A5.5,5.5 0 0,1 17.5,11.5V12H19A3,3 0 0,1 22,15C22,16.13 21.36,17.11 20.44,17.62L21.89,19.07C23.16,18.16 24,16.68 24,15C24,12.36 21.95,10.22 19.35,10.03Z" /></g><g id="cloud-print"><path d="M12,2C9.11,2 6.6,3.64 5.35,6.04C2.34,6.36 0,8.91 0,12A6,6 0 0,0 6,18V22H18V18H19A5,5 0 0,0 24,13C24,10.36 21.95,8.22 19.35,8.04C18.67,4.59 15.64,2 12,2M8,13H16V20H8V13M9,14V15H15V14H9M9,16V17H15V16H9M9,18V19H15V18H9Z" /></g><g id="cloud-print-outline"><path d="M19,16A3,3 0 0,0 22,13A3,3 0 0,0 19,10H17.5V9.5A5.5,5.5 0 0,0 12,4C9.5,4 7.37,5.69 6.71,8H6A4,4 0 0,0 2,12A4,4 0 0,0 6,16V11H18V16H19M19.36,8.04C21.95,8.22 24,10.36 24,13A5,5 0 0,1 19,18H18V22H6V18A6,6 0 0,1 0,12C0,8.91 2.34,6.36 5.35,6.04C6.6,3.64 9.11,2 12,2C15.64,2 18.67,4.6 19.36,8.04M8,13V20H16V13H8M9,18H15V19H9V18M15,17H9V16H15V17M9,14H15V15H9V14Z" /></g><g id="cloud-sync"><path d="M12,4C15.64,4 18.67,6.59 19.35,10.04C21.95,10.22 24,12.36 24,15A5,5 0 0,1 19,20H6A6,6 0 0,1 0,14C0,10.91 2.34,8.36 5.35,8.04C6.6,5.64 9.11,4 12,4M7.5,9.69C6.06,11.5 6.2,14.06 7.82,15.68C8.66,16.5 9.81,17 11,17V18.86L13.83,16.04L11,13.21V15C10.34,15 9.7,14.74 9.23,14.27C8.39,13.43 8.26,12.11 8.92,11.12L7.5,9.69M9.17,8.97L10.62,10.42L12,11.79V10C12.66,10 13.3,10.26 13.77,10.73C14.61,11.57 14.74,12.89 14.08,13.88L15.5,15.31C16.94,13.5 16.8,10.94 15.18,9.32C14.34,8.5 13.19,8 12,8V6.14L9.17,8.97Z" /></g><g id="cloud-upload"><path d="M14,13V17H10V13H7L12,8L17,13M19.35,10.03C18.67,6.59 15.64,4 12,4C9.11,4 6.6,5.64 5.35,8.03C2.34,8.36 0,10.9 0,14A6,6 0 0,0 6,20H19A5,5 0 0,0 24,15C24,12.36 21.95,10.22 19.35,10.03Z" /></g><g id="code-array"><path d="M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M6,6V18H10V16H8V8H10V6H6M16,16H14V18H18V6H14V8H16V16Z" /></g><g id="code-braces"><path d="M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z" /></g><g id="code-brackets"><path d="M15,4V6H18V18H15V20H20V4M4,4V20H9V18H6V6H9V4H4Z" /></g><g id="code-equal"><path d="M6,13H11V15H6M13,13H18V15H13M13,9H18V11H13M6,9H11V11H6M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5Z" /></g><g id="code-greater-than"><path d="M10.41,7.41L15,12L10.41,16.6L9,15.18L12.18,12L9,8.82M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5Z" /></g><g id="code-greater-than-or-equal"><path d="M13,13H18V15H13M13,9H18V11H13M6.91,7.41L11.5,12L6.91,16.6L5.5,15.18L8.68,12L5.5,8.82M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5Z" /></g><g id="code-less-than"><path d="M13.59,7.41L9,12L13.59,16.6L15,15.18L11.82,12L15,8.82M19,3C20.11,3 21,3.9 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19Z" /></g><g id="code-less-than-or-equal"><path d="M13,13H18V15H13M13,9H18V11H13M10.09,7.41L11.5,8.82L8.32,12L11.5,15.18L10.09,16.6L5.5,12M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5Z" /></g><g id="code-not-equal"><path d="M6,15H8V17H6M11,13H18V15H11M11,9H18V11H11M6,7H8V13H6M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5Z" /></g><g id="code-not-equal-variant"><path d="M11,6.5V9.33L8.33,12L11,14.67V17.5L5.5,12M13,6.43L18.57,12L13,17.57V14.74L15.74,12L13,9.26M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5Z" /></g><g id="code-parentheses"><path d="M17.62,3C19.13,5.27 20,8.55 20,12C20,15.44 19.13,18.72 17.62,21L16,19.96C17.26,18.07 18,15.13 18,12C18,8.87 17.26,5.92 16,4.03L17.62,3M6.38,3L8,4.04C6.74,5.92 6,8.87 6,12C6,15.13 6.74,18.08 8,19.96L6.38,21C4.87,18.73 4,15.45 4,12C4,8.55 4.87,5.27 6.38,3Z" /></g><g id="code-string"><path d="M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M12.5,11H11.5A1.5,1.5 0 0,1 10,9.5A1.5,1.5 0 0,1 11.5,8H12.5A1.5,1.5 0 0,1 14,9.5H16A3.5,3.5 0 0,0 12.5,6H11.5A3.5,3.5 0 0,0 8,9.5A3.5,3.5 0 0,0 11.5,13H12.5A1.5,1.5 0 0,1 14,14.5A1.5,1.5 0 0,1 12.5,16H11.5A1.5,1.5 0 0,1 10,14.5H8A3.5,3.5 0 0,0 11.5,18H12.5A3.5,3.5 0 0,0 16,14.5A3.5,3.5 0 0,0 12.5,11Z" /></g><g id="code-tags"><path d="M14.6,16.6L19.2,12L14.6,7.4L16,6L22,12L16,18L14.6,16.6M9.4,16.6L4.8,12L9.4,7.4L8,6L2,12L8,18L9.4,16.6Z" /></g><g id="code-tags-check"><path d="M6.59,3.41L2,8L6.59,12.6L8,11.18L4.82,8L8,4.82L6.59,3.41M12.41,3.41L11,4.82L14.18,8L11,11.18L12.41,12.6L17,8L12.41,3.41M21.59,11.59L13.5,19.68L9.83,16L8.42,17.41L13.5,22.5L23,13L21.59,11.59Z" /></g><g id="codepen"><path d="M19.45,13.29L17.5,12L19.45,10.71M12.77,18.78V15.17L16.13,12.93L18.83,14.74M12,13.83L9.26,12L12,10.17L14.74,12M11.23,18.78L5.17,14.74L7.87,12.93L11.23,15.17M4.55,10.71L6.5,12L4.55,13.29M11.23,5.22V8.83L7.87,11.07L5.17,9.26M12.77,5.22L18.83,9.26L16.13,11.07L12.77,8.83M21,9.16C21,9.15 21,9.13 21,9.12C21,9.1 21,9.08 20.97,9.06C20.97,9.05 20.97,9.03 20.96,9C20.96,9 20.95,9 20.94,8.96C20.94,8.95 20.93,8.94 20.92,8.93C20.92,8.91 20.91,8.89 20.9,8.88C20.89,8.86 20.88,8.85 20.88,8.84C20.87,8.82 20.85,8.81 20.84,8.79C20.83,8.78 20.83,8.77 20.82,8.76A0.04,0.04 0 0,0 20.78,8.72C20.77,8.71 20.76,8.7 20.75,8.69C20.73,8.67 20.72,8.66 20.7,8.65C20.69,8.64 20.68,8.63 20.67,8.62C20.66,8.62 20.66,8.62 20.66,8.61L12.43,3.13C12.17,2.96 11.83,2.96 11.57,3.13L3.34,8.61C3.34,8.62 3.34,8.62 3.33,8.62C3.32,8.63 3.31,8.64 3.3,8.65C3.28,8.66 3.27,8.67 3.25,8.69C3.24,8.7 3.23,8.71 3.22,8.72C3.21,8.73 3.2,8.74 3.18,8.76C3.17,8.77 3.17,8.78 3.16,8.79C3.15,8.81 3.13,8.82 3.12,8.84C3.12,8.85 3.11,8.86 3.1,8.88C3.09,8.89 3.08,8.91 3.08,8.93C3.07,8.94 3.06,8.95 3.06,8.96C3.05,9 3.05,9 3.04,9C3.03,9.03 3.03,9.05 3.03,9.06C3,9.08 3,9.1 3,9.12C3,9.13 3,9.15 3,9.16C3,9.19 3,9.22 3,9.26V14.74C3,14.78 3,14.81 3,14.84C3,14.85 3,14.87 3,14.88C3,14.9 3,14.92 3.03,14.94C3.03,14.95 3.03,14.97 3.04,15C3.05,15 3.05,15 3.06,15.04C3.06,15.05 3.07,15.06 3.08,15.07C3.08,15.09 3.09,15.11 3.1,15.12C3.11,15.14 3.12,15.15 3.12,15.16C3.13,15.18 3.15,15.19 3.16,15.21C3.17,15.22 3.17,15.23 3.18,15.24C3.2,15.25 3.21,15.27 3.22,15.28C3.23,15.29 3.24,15.3 3.25,15.31C3.27,15.33 3.28,15.34 3.3,15.35C3.31,15.36 3.32,15.37 3.33,15.38C3.34,15.38 3.34,15.38 3.34,15.39L11.57,20.87C11.7,20.96 11.85,21 12,21C12.15,21 12.3,20.96 12.43,20.87L20.66,15.39C20.66,15.38 20.66,15.38 20.67,15.38C20.68,15.37 20.69,15.36 20.7,15.35C20.72,15.34 20.73,15.33 20.75,15.31C20.76,15.3 20.77,15.29 20.78,15.28C20.79,15.27 20.8,15.25 20.82,15.24C20.83,15.23 20.83,15.22 20.84,15.21C20.85,15.19 20.87,15.18 20.88,15.16C20.88,15.15 20.89,15.14 20.9,15.12C20.91,15.11 20.92,15.09 20.92,15.07C20.93,15.06 20.94,15.05 20.94,15.04C20.95,15 20.96,15 20.96,15C20.97,14.97 20.97,14.95 20.97,14.94C21,14.92 21,14.9 21,14.88C21,14.87 21,14.85 21,14.84C21,14.81 21,14.78 21,14.74V9.26C21,9.22 21,9.19 21,9.16Z" /></g><g id="coffee"><path d="M2,21H20V19H2M20,8H18V5H20M20,3H4V13A4,4 0 0,0 8,17H14A4,4 0 0,0 18,13V10H20A2,2 0 0,0 22,8V5C22,3.89 21.1,3 20,3Z" /></g><g id="coffee-outline"><path d="M2,21V19H20V21H2M20,8V5H18V8H20M20,3A2,2 0 0,1 22,5V8A2,2 0 0,1 20,10H18V13A4,4 0 0,1 14,17H8A4,4 0 0,1 4,13V3H20M16,5H6V13A2,2 0 0,0 8,15H14A2,2 0 0,0 16,13V5Z" /></g><g id="coffee-to-go"><path d="M3,19V17H17L15.26,15.24L16.67,13.83L20.84,18L16.67,22.17L15.26,20.76L17,19H3M17,8V5H15V8H17M17,3C18.11,3 19,3.9 19,5V8C19,9.11 18.11,10 17,10H15V11A4,4 0 0,1 11,15H7A4,4 0 0,1 3,11V3H17Z" /></g><g id="coin"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4M11,17V16H9V14H13V13H10A1,1 0 0,1 9,12V9A1,1 0 0,1 10,8H11V7H13V8H15V10H11V11H14A1,1 0 0,1 15,12V15A1,1 0 0,1 14,16H13V17H11Z" /></g><g id="coins"><path d="M15,4A8,8 0 0,1 23,12A8,8 0 0,1 15,20A8,8 0 0,1 7,12A8,8 0 0,1 15,4M15,18A6,6 0 0,0 21,12A6,6 0 0,0 15,6A6,6 0 0,0 9,12A6,6 0 0,0 15,18M3,12C3,14.61 4.67,16.83 7,17.65V19.74C3.55,18.85 1,15.73 1,12C1,8.27 3.55,5.15 7,4.26V6.35C4.67,7.17 3,9.39 3,12Z" /></g><g id="collage"><path d="M5,3C3.89,3 3,3.89 3,5V19C3,20.11 3.89,21 5,21H11V3M13,3V11H21V5C21,3.89 20.11,3 19,3M13,13V21H19C20.11,21 21,20.11 21,19V13" /></g><g id="color-helper"><path d="M0,24H24V20H0V24Z" /></g><g id="comment"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9Z" /></g><g id="comment-account"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M16,14V13C16,11.67 13.33,11 12,11C10.67,11 8,11.67 8,13V14H16M12,6A2,2 0 0,0 10,8A2,2 0 0,0 12,10A2,2 0 0,0 14,8A2,2 0 0,0 12,6Z" /></g><g id="comment-account-outline"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10M16,14H8V13C8,11.67 10.67,11 12,11C13.33,11 16,11.67 16,13V14M12,6A2,2 0 0,1 14,8A2,2 0 0,1 12,10A2,2 0 0,1 10,8A2,2 0 0,1 12,6Z" /></g><g id="comment-alert"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M13,10V6H11V10H13M13,14V12H11V14H13Z" /></g><g id="comment-alert-outline"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10M13,10H11V6H13V10M13,14H11V12H13V14Z" /></g><g id="comment-check"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,15L18,7L16.59,5.58L10,12.17L7.41,9.59L6,11L10,15Z" /></g><g id="comment-check-outline"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10M16.5,8L11,13.5L7.5,10L8.91,8.59L11,10.67L15.09,6.59L16.5,8Z" /></g><g id="comment-multiple-outline"><path d="M12,23A1,1 0 0,1 11,22V19H7A2,2 0 0,1 5,17V7C5,5.89 5.9,5 7,5H21A2,2 0 0,1 23,7V17A2,2 0 0,1 21,19H16.9L13.2,22.71C13,22.9 12.75,23 12.5,23V23H12M13,17V20.08L16.08,17H21V7H7V17H13M3,15H1V3A2,2 0 0,1 3,1H19V3H3V15Z" /></g><g id="comment-outline"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10Z" /></g><g id="comment-plus-outline"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10M11,6H13V9H16V11H13V14H11V11H8V9H11V6Z" /></g><g id="comment-processing"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M17,11V9H15V11H17M13,11V9H11V11H13M9,11V9H7V11H9Z" /></g><g id="comment-processing-outline"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10M17,11H15V9H17V11M13,11H11V9H13V11M9,11H7V9H9V11Z" /></g><g id="comment-question-outline"><path d="M4,2A2,2 0 0,0 2,4V16A2,2 0 0,0 4,18H8V21A1,1 0 0,0 9,22H9.5V22C9.75,22 10,21.9 10.2,21.71L13.9,18H20A2,2 0 0,0 22,16V4C22,2.89 21.1,2 20,2H4M4,4H20V16H13.08L10,19.08V16H4V4M12.19,5.5C11.3,5.5 10.59,5.68 10.05,6.04C9.5,6.4 9.22,7 9.27,7.69C0.21,7.69 6.57,7.69 11.24,7.69C11.24,7.41 11.34,7.2 11.5,7.06C11.7,6.92 11.92,6.85 12.19,6.85C12.5,6.85 12.77,6.93 12.95,7.11C13.13,7.28 13.22,7.5 13.22,7.8C13.22,8.08 13.14,8.33 13,8.54C12.83,8.76 12.62,8.94 12.36,9.08C11.84,9.4 11.5,9.68 11.29,9.92C11.1,10.16 11,10.5 11,11H13C13,10.72 13.05,10.5 13.14,10.32C13.23,10.15 13.4,10 13.66,9.85C14.12,9.64 14.5,9.36 14.79,9C15.08,8.63 15.23,8.24 15.23,7.8C15.23,7.1 14.96,6.54 14.42,6.12C13.88,5.71 13.13,5.5 12.19,5.5M11,12V14H13V12H11Z" /></g><g id="comment-remove-outline"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10M9.41,6L12,8.59L14.59,6L16,7.41L13.41,10L16,12.59L14.59,14L12,11.41L9.41,14L8,12.59L10.59,10L8,7.41L9.41,6Z" /></g><g id="comment-text"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M5,5V7H19V5H5M5,9V11H13V9H5M5,13V15H15V13H5Z" /></g><g id="comment-text-outline"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10M6,7H18V9H6V7M6,11H15V13H6V11Z" /></g><g id="compare"><path d="M19,3H14V5H19V18L14,12V21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M10,18H5L10,12M10,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H10V23H12V1H10V3Z" /></g><g id="compass"><path d="M14.19,14.19L6,18L9.81,9.81L18,6M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,10.9A1.1,1.1 0 0,0 10.9,12A1.1,1.1 0 0,0 12,13.1A1.1,1.1 0 0,0 13.1,12A1.1,1.1 0 0,0 12,10.9Z" /></g><g id="compass-outline"><path d="M7,17L10.2,10.2L17,7L13.8,13.8L7,17M12,11.1A0.9,0.9 0 0,0 11.1,12A0.9,0.9 0 0,0 12,12.9A0.9,0.9 0 0,0 12.9,12A0.9,0.9 0 0,0 12,11.1M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z" /></g><g id="console"><path d="M20,19V7H4V19H20M20,3A2,2 0 0,1 22,5V19A2,2 0 0,1 20,21H4A2,2 0 0,1 2,19V5C2,3.89 2.9,3 4,3H20M13,17V15H18V17H13M9.58,13L5.57,9H8.4L11.7,12.3C12.09,12.69 12.09,13.33 11.7,13.72L8.42,17H5.59L9.58,13Z" /></g><g id="contact-mail"><path d="M21,8V7L18,9L15,7V8L18,10M22,3H2A2,2 0 0,0 0,5V19A2,2 0 0,0 2,21H22A2,2 0 0,0 24,19V5A2,2 0 0,0 22,3M8,6A3,3 0 0,1 11,9A3,3 0 0,1 8,12A3,3 0 0,1 5,9A3,3 0 0,1 8,6M14,18H2V17C2,15 6,13.9 8,13.9C10,13.9 14,15 14,17M22,12H14V6H22" /></g><g id="contacts"><path d="M20,0H4V2H20V0M4,24H20V22H4V24M20,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6A2,2 0 0,0 20,4M12,6.75A2.25,2.25 0 0,1 14.25,9A2.25,2.25 0 0,1 12,11.25A2.25,2.25 0 0,1 9.75,9A2.25,2.25 0 0,1 12,6.75M17,17H7V15.5C7,13.83 10.33,13 12,13C13.67,13 17,13.83 17,15.5V17Z" /></g><g id="content-copy"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z" /></g><g id="content-cut"><path d="M19,3L13,9L15,11L22,4V3M12,12.5A0.5,0.5 0 0,1 11.5,12A0.5,0.5 0 0,1 12,11.5A0.5,0.5 0 0,1 12.5,12A0.5,0.5 0 0,1 12,12.5M6,20A2,2 0 0,1 4,18C4,16.89 4.9,16 6,16A2,2 0 0,1 8,18C8,19.11 7.1,20 6,20M6,8A2,2 0 0,1 4,6C4,4.89 4.9,4 6,4A2,2 0 0,1 8,6C8,7.11 7.1,8 6,8M9.64,7.64C9.87,7.14 10,6.59 10,6A4,4 0 0,0 6,2A4,4 0 0,0 2,6A4,4 0 0,0 6,10C6.59,10 7.14,9.87 7.64,9.64L10,12L7.64,14.36C7.14,14.13 6.59,14 6,14A4,4 0 0,0 2,18A4,4 0 0,0 6,22A4,4 0 0,0 10,18C10,17.41 9.87,16.86 9.64,16.36L12,14L19,21H22V20L9.64,7.64Z" /></g><g id="content-duplicate"><path d="M11,17H4A2,2 0 0,1 2,15V3A2,2 0 0,1 4,1H16V3H4V15H11V13L15,16L11,19V17M19,21V7H8V13H6V7A2,2 0 0,1 8,5H19A2,2 0 0,1 21,7V21A2,2 0 0,1 19,23H8A2,2 0 0,1 6,21V19H8V21H19Z" /></g><g id="content-paste"><path d="M19,20H5V4H7V7H17V4H19M12,2A1,1 0 0,1 13,3A1,1 0 0,1 12,4A1,1 0 0,1 11,3A1,1 0 0,1 12,2M19,2H14.82C14.4,0.84 13.3,0 12,0C10.7,0 9.6,0.84 9.18,2H5A2,2 0 0,0 3,4V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V4A2,2 0 0,0 19,2Z" /></g><g id="content-save"><path d="M15,9H5V5H15M12,19A3,3 0 0,1 9,16A3,3 0 0,1 12,13A3,3 0 0,1 15,16A3,3 0 0,1 12,19M17,3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V7L17,3Z" /></g><g id="content-save-all"><path d="M17,7V3H7V7H17M14,17A3,3 0 0,0 17,14A3,3 0 0,0 14,11A3,3 0 0,0 11,14A3,3 0 0,0 14,17M19,1L23,5V17A2,2 0 0,1 21,19H7C5.89,19 5,18.1 5,17V3A2,2 0 0,1 7,1H19M1,7H3V21H17V23H3A2,2 0 0,1 1,21V7Z" /></g><g id="content-save-settings"><path d="M15,8V4H5V8H15M12,18A3,3 0 0,0 15,15A3,3 0 0,0 12,12A3,3 0 0,0 9,15A3,3 0 0,0 12,18M17,2L21,6V18A2,2 0 0,1 19,20H5C3.89,20 3,19.1 3,18V4A2,2 0 0,1 5,2H17M11,22H13V24H11V22M7,22H9V24H7V22M15,22H17V24H15V22Z" /></g><g id="contrast"><path d="M4.38,20.9C3.78,20.71 3.3,20.23 3.1,19.63L19.63,3.1C20.23,3.3 20.71,3.78 20.9,4.38L4.38,20.9M20,16V18H13V16H20M3,6H6V3H8V6H11V8H8V11H6V8H3V6Z" /></g><g id="contrast-box"><path d="M17,15.5H12V17H17M19,19H5L19,5M5.5,7.5H7.5V5.5H9V7.5H11V9H9V11H7.5V9H5.5M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="contrast-circle"><path d="M12,20C9.79,20 7.79,19.1 6.34,17.66L17.66,6.34C19.1,7.79 20,9.79 20,12A8,8 0 0,1 12,20M6,8H8V6H9.5V8H11.5V9.5H9.5V11.5H8V9.5H6M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,16H17V14.5H12V16Z" /></g><g id="cookie"><path d="M12,3A9,9 0 0,0 3,12A9,9 0 0,0 12,21A9,9 0 0,0 21,12C21,11.5 20.96,11 20.87,10.5C20.6,10 20,10 20,10H18V9C18,8 17,8 17,8H15V7C15,6 14,6 14,6H13V4C13,3 12,3 12,3M9.5,6A1.5,1.5 0 0,1 11,7.5A1.5,1.5 0 0,1 9.5,9A1.5,1.5 0 0,1 8,7.5A1.5,1.5 0 0,1 9.5,6M6.5,10A1.5,1.5 0 0,1 8,11.5A1.5,1.5 0 0,1 6.5,13A1.5,1.5 0 0,1 5,11.5A1.5,1.5 0 0,1 6.5,10M11.5,11A1.5,1.5 0 0,1 13,12.5A1.5,1.5 0 0,1 11.5,14A1.5,1.5 0 0,1 10,12.5A1.5,1.5 0 0,1 11.5,11M16.5,13A1.5,1.5 0 0,1 18,14.5A1.5,1.5 0 0,1 16.5,16H16.5A1.5,1.5 0 0,1 15,14.5H15A1.5,1.5 0 0,1 16.5,13M11,16A1.5,1.5 0 0,1 12.5,17.5A1.5,1.5 0 0,1 11,19A1.5,1.5 0 0,1 9.5,17.5A1.5,1.5 0 0,1 11,16Z" /></g><g id="copyright"><path d="M10.08,10.86C10.13,10.53 10.24,10.24 10.38,10C10.5,9.74 10.72,9.53 10.97,9.37C11.21,9.22 11.5,9.15 11.88,9.14C12.11,9.15 12.32,9.19 12.5,9.27C12.71,9.36 12.89,9.5 13.03,9.63C13.17,9.78 13.28,9.96 13.37,10.16C13.46,10.36 13.5,10.58 13.5,10.8H15.3C15.28,10.33 15.19,9.9 15,9.5C14.85,9.12 14.62,8.78 14.32,8.5C14,8.22 13.66,8 13.24,7.84C12.82,7.68 12.36,7.61 11.85,7.61C11.2,7.61 10.63,7.72 10.15,7.95C9.67,8.18 9.27,8.5 8.95,8.87C8.63,9.26 8.39,9.71 8.24,10.23C8.09,10.75 8,11.29 8,11.87V12.14C8,12.72 8.08,13.26 8.23,13.78C8.38,14.3 8.62,14.75 8.94,15.13C9.26,15.5 9.66,15.82 10.14,16.04C10.62,16.26 11.19,16.38 11.84,16.38C12.31,16.38 12.75,16.3 13.16,16.15C13.57,16 13.93,15.79 14.24,15.5C14.55,15.25 14.8,14.94 15,14.58C15.16,14.22 15.27,13.84 15.28,13.43H13.5C13.5,13.64 13.43,13.83 13.34,14C13.25,14.19 13.13,14.34 13,14.47C12.83,14.6 12.66,14.7 12.46,14.77C12.27,14.84 12.07,14.86 11.86,14.87C11.5,14.86 11.2,14.79 10.97,14.64C10.72,14.5 10.5,14.27 10.38,14C10.24,13.77 10.13,13.47 10.08,13.14C10.03,12.81 10,12.47 10,12.14V11.87C10,11.5 10.03,11.19 10.08,10.86M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20Z" /></g><g id="counter"><path d="M4,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4M4,6V18H11V6H4M20,18V6H18.76C19,6.54 18.95,7.07 18.95,7.13C18.88,7.8 18.41,8.5 18.24,8.75L15.91,11.3L19.23,11.28L19.24,12.5L14.04,12.47L14,11.47C14,11.47 17.05,8.24 17.2,7.95C17.34,7.67 17.91,6 16.5,6C15.27,6.05 15.41,7.3 15.41,7.3L13.87,7.31C13.87,7.31 13.88,6.65 14.25,6H13V18H15.58L15.57,17.14L16.54,17.13C16.54,17.13 17.45,16.97 17.46,16.08C17.5,15.08 16.65,15.08 16.5,15.08C16.37,15.08 15.43,15.13 15.43,15.95H13.91C13.91,15.95 13.95,13.89 16.5,13.89C19.1,13.89 18.96,15.91 18.96,15.91C18.96,15.91 19,17.16 17.85,17.63L18.37,18H20M8.92,16H7.42V10.2L5.62,10.76V9.53L8.76,8.41H8.92V16Z" /></g><g id="cow"><path d="M10.5,18A0.5,0.5 0 0,1 11,18.5A0.5,0.5 0 0,1 10.5,19A0.5,0.5 0 0,1 10,18.5A0.5,0.5 0 0,1 10.5,18M13.5,18A0.5,0.5 0 0,1 14,18.5A0.5,0.5 0 0,1 13.5,19A0.5,0.5 0 0,1 13,18.5A0.5,0.5 0 0,1 13.5,18M10,11A1,1 0 0,1 11,12A1,1 0 0,1 10,13A1,1 0 0,1 9,12A1,1 0 0,1 10,11M14,11A1,1 0 0,1 15,12A1,1 0 0,1 14,13A1,1 0 0,1 13,12A1,1 0 0,1 14,11M18,18C18,20.21 15.31,22 12,22C8.69,22 6,20.21 6,18C6,17.1 6.45,16.27 7.2,15.6C6.45,14.6 6,13.35 6,12L6.12,10.78C5.58,10.93 4.93,10.93 4.4,10.78C3.38,10.5 1.84,9.35 2.07,8.55C2.3,7.75 4.21,7.6 5.23,7.9C5.82,8.07 6.45,8.5 6.82,8.96L7.39,8.15C6.79,7.05 7,4 10,3L9.91,3.14V3.14C9.63,3.58 8.91,4.97 9.67,6.47C10.39,6.17 11.17,6 12,6C12.83,6 13.61,6.17 14.33,6.47C15.09,4.97 14.37,3.58 14.09,3.14L14,3C17,4 17.21,7.05 16.61,8.15L17.18,8.96C17.55,8.5 18.18,8.07 18.77,7.9C19.79,7.6 21.7,7.75 21.93,8.55C22.16,9.35 20.62,10.5 19.6,10.78C19.07,10.93 18.42,10.93 17.88,10.78L18,12C18,13.35 17.55,14.6 16.8,15.6C17.55,16.27 18,17.1 18,18M12,16C9.79,16 8,16.9 8,18C8,19.1 9.79,20 12,20C14.21,20 16,19.1 16,18C16,16.9 14.21,16 12,16M12,14C13.12,14 14.17,14.21 15.07,14.56C15.65,13.87 16,13 16,12A4,4 0 0,0 12,8A4,4 0 0,0 8,12C8,13 8.35,13.87 8.93,14.56C9.83,14.21 10.88,14 12,14M14.09,3.14V3.14Z" /></g><g id="creation"><path d="M19,1L17.74,3.75L15,5L17.74,6.26L19,9L20.25,6.26L23,5L20.25,3.75M9,4L6.5,9.5L1,12L6.5,14.5L9,20L11.5,14.5L17,12L11.5,9.5M19,15L17.74,17.74L15,19L17.74,20.25L19,23L20.25,20.25L23,19L20.25,17.74" /></g><g id="credit-card"><path d="M20,8H4V6H20M20,18H4V12H20M20,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z" /></g><g id="credit-card-multiple"><path d="M21,8V6H7V8H21M21,16V11H7V16H21M21,4A2,2 0 0,1 23,6V16A2,2 0 0,1 21,18H7C5.89,18 5,17.1 5,16V6C5,4.89 5.89,4 7,4H21M3,20H18V22H3A2,2 0 0,1 1,20V9H3V20Z" /></g><g id="credit-card-off"><path d="M0.93,4.2L2.21,2.93L20,20.72L18.73,22L16.73,20H4C2.89,20 2,19.1 2,18V6C2,5.78 2.04,5.57 2.11,5.38L0.93,4.2M20,8V6H7.82L5.82,4H20A2,2 0 0,1 22,6V18C22,18.6 21.74,19.13 21.32,19.5L19.82,18H20V12H13.82L9.82,8H20M4,8H4.73L4,7.27V8M4,12V18H14.73L8.73,12H4Z" /></g><g id="credit-card-plus"><path d="M21,18H24V20H21V23H19V20H16V18H19V15H21V18M19,8V6H3V8H19M19,12H3V18H14V20H3C1.89,20 1,19.1 1,18V6C1,4.89 1.89,4 3,4H19A2,2 0 0,1 21,6V13H19V12Z" /></g><g id="credit-card-scan"><path d="M2,4H6V2H2A2,2 0 0,0 0,4V8H2V4M22,2H18V4H22V8H24V4A2,2 0 0,0 22,2M2,16H0V20A2,2 0 0,0 2,22H6V20H2V16M22,20H18V22H22A2,2 0 0,0 24,20V16H22V20M4,8V16A2,2 0 0,0 6,18H18A2,2 0 0,0 20,16V8A2,2 0 0,0 18,6H6A2,2 0 0,0 4,8M6,16V12H18V16H6M18,8V10H6V8H18Z" /></g><g id="crop"><path d="M7,17V1H5V5H1V7H5V17A2,2 0 0,0 7,19H17V23H19V19H23V17M17,15H19V7C19,5.89 18.1,5 17,5H9V7H17V15Z" /></g><g id="crop-free"><path d="M19,3H15V5H19V9H21V5C21,3.89 20.1,3 19,3M19,19H15V21H19A2,2 0 0,0 21,19V15H19M5,15H3V19A2,2 0 0,0 5,21H9V19H5M3,5V9H5V5H9V3H5A2,2 0 0,0 3,5Z" /></g><g id="crop-landscape"><path d="M19,17H5V7H19M19,5H5A2,2 0 0,0 3,7V17A2,2 0 0,0 5,19H19A2,2 0 0,0 21,17V7C21,5.89 20.1,5 19,5Z" /></g><g id="crop-portrait"><path d="M17,19H7V5H17M17,3H7A2,2 0 0,0 5,5V19A2,2 0 0,0 7,21H17A2,2 0 0,0 19,19V5C19,3.89 18.1,3 17,3Z" /></g><g id="crop-rotate"><path d="M7.47,21.5C4.2,19.93 1.86,16.76 1.5,13H0C0.5,19.16 5.66,24 11.95,24C12.18,24 12.39,24 12.61,23.97L8.8,20.15L7.47,21.5M12.05,0C11.82,0 11.61,0 11.39,0.04L15.2,3.85L16.53,2.5C19.8,4.07 22.14,7.24 22.5,11H24C23.5,4.84 18.34,0 12.05,0M16,14H18V8C18,6.89 17.1,6 16,6H10V8H16V14M8,16V4H6V6H4V8H6V16A2,2 0 0,0 8,18H16V20H18V18H20V16H8Z" /></g><g id="crop-square"><path d="M18,18H6V6H18M18,4H6A2,2 0 0,0 4,6V18A2,2 0 0,0 6,20H18A2,2 0 0,0 20,18V6C20,4.89 19.1,4 18,4Z" /></g><g id="crosshairs"><path d="M3.05,13H1V11H3.05C3.5,6.83 6.83,3.5 11,3.05V1H13V3.05C17.17,3.5 20.5,6.83 20.95,11H23V13H20.95C20.5,17.17 17.17,20.5 13,20.95V23H11V20.95C6.83,20.5 3.5,17.17 3.05,13M12,5A7,7 0 0,0 5,12A7,7 0 0,0 12,19A7,7 0 0,0 19,12A7,7 0 0,0 12,5Z" /></g><g id="crosshairs-gps"><path d="M12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8M3.05,13H1V11H3.05C3.5,6.83 6.83,3.5 11,3.05V1H13V3.05C17.17,3.5 20.5,6.83 20.95,11H23V13H20.95C20.5,17.17 17.17,20.5 13,20.95V23H11V20.95C6.83,20.5 3.5,17.17 3.05,13M12,5A7,7 0 0,0 5,12A7,7 0 0,0 12,19A7,7 0 0,0 19,12A7,7 0 0,0 12,5Z" /></g><g id="crown"><path d="M5,16L3,5L8.5,12L12,5L15.5,12L21,5L19,16H5M19,19A1,1 0 0,1 18,20H6A1,1 0 0,1 5,19V18H19V19Z" /></g><g id="cube"><path d="M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L6.04,7.5L12,10.85L17.96,7.5L12,4.15Z" /></g><g id="cube-outline"><path d="M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L6.04,7.5L12,10.85L17.96,7.5L12,4.15M5,15.91L11,19.29V12.58L5,9.21V15.91M19,15.91V9.21L13,12.58V19.29L19,15.91Z" /></g><g id="cube-send"><path d="M16,4L9,8.04V15.96L16,20L23,15.96V8.04M16,6.31L19.8,8.5L16,10.69L12.21,8.5M0,7V9H7V7M11,10.11L15,12.42V17.11L11,14.81M21,10.11V14.81L17,17.11V12.42M2,11V13H7V11M4,15V17H7V15" /></g><g id="cube-unfolded"><path d="M6,9V4H13V9H23V16H18V21H11V16H1V9H6M16,16H13V19H16V16M8,9H11V6H8V9M6,14V11H3V14H6M18,11V14H21V11H18M13,11V14H16V11H13M8,11V14H11V11H8Z" /></g><g id="cup"><path d="M18.32,8H5.67L5.23,4H18.77M3,2L5,20.23C5.13,21.23 5.97,22 7,22H17C18,22 18.87,21.23 19,20.23L21,2H3Z" /></g><g id="cup-off"><path d="M1,4.27L2.28,3L21,21.72L19.73,23L18.27,21.54C17.93,21.83 17.5,22 17,22H7C5.97,22 5.13,21.23 5,20.23L3.53,6.8L1,4.27M18.32,8L18.77,4H5.82L3.82,2H21L19.29,17.47L9.82,8H18.32Z" /></g><g id="cup-water"><path d="M18.32,8H5.67L5.23,4H18.77M12,19A3,3 0 0,1 9,16C9,14 12,10.6 12,10.6C12,10.6 15,14 15,16A3,3 0 0,1 12,19M3,2L5,20.23C5.13,21.23 5.97,22 7,22H17C18,22 18.87,21.23 19,20.23L21,2H3Z" /></g><g id="currency-btc"><path d="M4.5,5H8V2H10V5H11.5V2H13.5V5C19,5 19,11 16,11.25C20,11 21,19 13.5,19V22H11.5V19H10V22H8V19H4.5L5,17H6A1,1 0 0,0 7,16V8A1,1 0 0,0 6,7H4.5V5M10,7V11C10,11 14.5,11.25 14.5,9C14.5,6.75 10,7 10,7M10,12.5V17C10,17 15.5,17 15.5,14.75C15.5,12.5 10,12.5 10,12.5Z" /></g><g id="currency-eur"><path d="M7.07,11L7,12L7.07,13H17.35L16.5,15H7.67C8.8,17.36 11.21,19 14,19C16.23,19 18.22,17.96 19.5,16.33V19.12C18,20.3 16.07,21 14,21C10.08,21 6.75,18.5 5.5,15H2L3,13H5.05L5,12L5.05,11H2L3,9H5.5C6.75,5.5 10.08,3 14,3C16.5,3 18.8,4.04 20.43,5.71L19.57,7.75C18.29,6.08 16.27,5 14,5C11.21,5 8.8,6.64 7.67,9H19.04L18.19,11H7.07Z" /></g><g id="currency-gbp"><path d="M6.5,21V19.75C7.44,19.29 8.24,18.57 8.81,17.7C9.38,16.83 9.67,15.85 9.68,14.75L9.66,13.77L9.57,13H7V11H9.4C9.25,10.17 9.16,9.31 9.13,8.25C9.16,6.61 9.64,5.33 10.58,4.41C11.5,3.5 12.77,3 14.32,3C15.03,3 15.64,3.07 16.13,3.2C16.63,3.32 17,3.47 17.31,3.65L16.76,5.39C16.5,5.25 16.19,5.12 15.79,5C15.38,4.9 14.89,4.85 14.32,4.84C13.25,4.86 12.5,5.19 12,5.83C11.5,6.46 11.29,7.28 11.3,8.28L11.4,9.77L11.6,11H15.5V13H11.79C11.88,14 11.84,15 11.65,15.96C11.35,17.16 10.74,18.18 9.83,19H18V21H6.5Z" /></g><g id="currency-inr"><path d="M8,3H18L17,5H13.74C14.22,5.58 14.58,6.26 14.79,7H18L17,9H15C14.75,11.57 12.74,13.63 10.2,13.96V14H9.5L15.5,21H13L7,14V12H9.5V12C11.26,12 12.72,10.7 12.96,9H7L8,7H12.66C12.1,5.82 10.9,5 9.5,5H7L8,3Z" /></g><g id="currency-ngn"><path d="M4,9H6V3H8L11.42,9H16V3H18V9H20V11H18V13H20V15H18V21H16L12.57,15H8V21H6V15H4V13H6V11H4V9M8,9H9.13L8,7.03V9M8,11V13H11.42L10.28,11H8M16,17V15H14.85L16,17M12.56,11L13.71,13H16V11H12.56Z" /></g><g id="currency-rub"><path d="M6,10H7V3H14.5C17,3 19,5 19,7.5C19,10 17,12 14.5,12H9V14H15V16H9V21H7V16H6V14H7V12H6V10M14.5,5H9V10H14.5A2.5,2.5 0 0,0 17,7.5A2.5,2.5 0 0,0 14.5,5Z" /></g><g id="currency-try"><path d="M19,12A9,9 0 0,1 10,21H8V12.77L5,13.87V11.74L8,10.64V8.87L5,9.96V7.84L8,6.74V3H10V6L15,4.2V6.32L10,8.14V9.92L15,8.1V10.23L10,12.05V19A7,7 0 0,0 17,12H19Z" /></g><g id="currency-usd"><path d="M11.8,10.9C9.53,10.31 8.8,9.7 8.8,8.75C8.8,7.66 9.81,6.9 11.5,6.9C13.28,6.9 13.94,7.75 14,9H16.21C16.14,7.28 15.09,5.7 13,5.19V3H10V5.16C8.06,5.58 6.5,6.84 6.5,8.77C6.5,11.08 8.41,12.23 11.2,12.9C13.7,13.5 14.2,14.38 14.2,15.31C14.2,16 13.71,17.1 11.5,17.1C9.44,17.1 8.63,16.18 8.5,15H6.32C6.44,17.19 8.08,18.42 10,18.83V21H13V18.85C14.95,18.5 16.5,17.35 16.5,15.3C16.5,12.46 14.07,11.5 11.8,10.9Z" /></g><g id="currency-usd-off"><path d="M12.5,6.9C14.28,6.9 14.94,7.75 15,9H17.21C17.14,7.28 16.09,5.7 14,5.19V3H11V5.16C10.47,5.28 9.97,5.46 9.5,5.7L11,7.17C11.4,7 11.9,6.9 12.5,6.9M5.33,4.06L4.06,5.33L7.5,8.77C7.5,10.85 9.06,12 11.41,12.68L14.92,16.19C14.58,16.67 13.87,17.1 12.5,17.1C10.44,17.1 9.63,16.18 9.5,15H7.32C7.44,17.19 9.08,18.42 11,18.83V21H14V18.85C14.96,18.67 15.82,18.3 16.45,17.73L18.67,19.95L19.94,18.68L5.33,4.06Z" /></g><g id="cursor-default"><path d="M13.64,21.97C13.14,22.21 12.54,22 12.31,21.5L10.13,16.76L7.62,18.78C7.45,18.92 7.24,19 7,19A1,1 0 0,1 6,18V3A1,1 0 0,1 7,2C7.24,2 7.47,2.09 7.64,2.23L7.65,2.22L19.14,11.86C19.57,12.22 19.62,12.85 19.27,13.27C19.12,13.45 18.91,13.57 18.7,13.61L15.54,14.23L17.74,18.96C18,19.46 17.76,20.05 17.26,20.28L13.64,21.97Z" /></g><g id="cursor-default-outline"><path d="M10.07,14.27C10.57,14.03 11.16,14.25 11.4,14.75L13.7,19.74L15.5,18.89L13.19,13.91C12.95,13.41 13.17,12.81 13.67,12.58L13.95,12.5L16.25,12.05L8,5.12V15.9L9.82,14.43L10.07,14.27M13.64,21.97C13.14,22.21 12.54,22 12.31,21.5L10.13,16.76L7.62,18.78C7.45,18.92 7.24,19 7,19A1,1 0 0,1 6,18V3A1,1 0 0,1 7,2C7.24,2 7.47,2.09 7.64,2.23L7.65,2.22L19.14,11.86C19.57,12.22 19.62,12.85 19.27,13.27C19.12,13.45 18.91,13.57 18.7,13.61L15.54,14.23L17.74,18.96C18,19.46 17.76,20.05 17.26,20.28L13.64,21.97Z" /></g><g id="cursor-move"><path d="M13,6V11H18V7.75L22.25,12L18,16.25V13H13V18H16.25L12,22.25L7.75,18H11V13H6V16.25L1.75,12L6,7.75V11H11V6H7.75L12,1.75L16.25,6H13Z" /></g><g id="cursor-pointer"><path d="M10,2A2,2 0 0,1 12,4V8.5C12,8.5 14,8.25 14,9.25C14,9.25 16,9 16,10C16,10 18,9.75 18,10.75C18,10.75 20,10.5 20,11.5V15C20,16 17,21 17,22H9C9,22 7,15 4,13C4,13 3,7 8,12V4A2,2 0 0,1 10,2Z" /></g><g id="cursor-text"><path d="M13,19A1,1 0 0,0 14,20H16V22H13.5C12.95,22 12,21.55 12,21C12,21.55 11.05,22 10.5,22H8V20H10A1,1 0 0,0 11,19V5A1,1 0 0,0 10,4H8V2H10.5C11.05,2 12,2.45 12,3C12,2.45 12.95,2 13.5,2H16V4H14A1,1 0 0,0 13,5V19Z" /></g><g id="database"><path d="M12,3C7.58,3 4,4.79 4,7C4,9.21 7.58,11 12,11C16.42,11 20,9.21 20,7C20,4.79 16.42,3 12,3M4,9V12C4,14.21 7.58,16 12,16C16.42,16 20,14.21 20,12V9C20,11.21 16.42,13 12,13C7.58,13 4,11.21 4,9M4,14V17C4,19.21 7.58,21 12,21C16.42,21 20,19.21 20,17V14C20,16.21 16.42,18 12,18C7.58,18 4,16.21 4,14Z" /></g><g id="database-minus"><path d="M9,3C4.58,3 1,4.79 1,7C1,9.21 4.58,11 9,11C13.42,11 17,9.21 17,7C17,4.79 13.42,3 9,3M1,9V12C1,14.21 4.58,16 9,16C13.42,16 17,14.21 17,12V9C17,11.21 13.42,13 9,13C4.58,13 1,11.21 1,9M1,14V17C1,19.21 4.58,21 9,21C10.41,21 11.79,20.81 13,20.46V17.46C11.79,17.81 10.41,18 9,18C4.58,18 1,16.21 1,14M15,17V19H23V17" /></g><g id="database-plus"><path d="M9,3C4.58,3 1,4.79 1,7C1,9.21 4.58,11 9,11C13.42,11 17,9.21 17,7C17,4.79 13.42,3 9,3M1,9V12C1,14.21 4.58,16 9,16C13.42,16 17,14.21 17,12V9C17,11.21 13.42,13 9,13C4.58,13 1,11.21 1,9M1,14V17C1,19.21 4.58,21 9,21C10.41,21 11.79,20.81 13,20.46V17.46C11.79,17.81 10.41,18 9,18C4.58,18 1,16.21 1,14M18,14V17H15V19H18V22H20V19H23V17H20V14" /></g><g id="debug-step-into"><path d="M12,22A2,2 0 0,1 10,20A2,2 0 0,1 12,18A2,2 0 0,1 14,20A2,2 0 0,1 12,22M13,2V13L17.5,8.5L18.92,9.92L12,16.84L5.08,9.92L6.5,8.5L11,13V2H13Z" /></g><g id="debug-step-out"><path d="M12,22A2,2 0 0,1 10,20A2,2 0 0,1 12,18A2,2 0 0,1 14,20A2,2 0 0,1 12,22M13,16H11V6L6.5,10.5L5.08,9.08L12,2.16L18.92,9.08L17.5,10.5L13,6V16Z" /></g><g id="debug-step-over"><path d="M12,14A2,2 0 0,1 14,16A2,2 0 0,1 12,18A2,2 0 0,1 10,16A2,2 0 0,1 12,14M23.46,8.86L21.87,15.75L15,14.16L18.8,11.78C17.39,9.5 14.87,8 12,8C8.05,8 4.77,10.86 4.12,14.63L2.15,14.28C2.96,9.58 7.06,6 12,6C15.58,6 18.73,7.89 20.5,10.72L23.46,8.86Z" /></g><g id="decimal-decrease"><path d="M12,17L15,20V18H21V16H15V14L12,17M9,5A3,3 0 0,1 12,8V11A3,3 0 0,1 9,14A3,3 0 0,1 6,11V8A3,3 0 0,1 9,5M9,7A1,1 0 0,0 8,8V11A1,1 0 0,0 9,12A1,1 0 0,0 10,11V8A1,1 0 0,0 9,7M4,12A1,1 0 0,1 5,13A1,1 0 0,1 4,14A1,1 0 0,1 3,13A1,1 0 0,1 4,12Z" /></g><g id="decimal-increase"><path d="M22,17L19,20V18H13V16H19V14L22,17M9,5A3,3 0 0,1 12,8V11A3,3 0 0,1 9,14A3,3 0 0,1 6,11V8A3,3 0 0,1 9,5M9,7A1,1 0 0,0 8,8V11A1,1 0 0,0 9,12A1,1 0 0,0 10,11V8A1,1 0 0,0 9,7M16,5A3,3 0 0,1 19,8V11A3,3 0 0,1 16,14A3,3 0 0,1 13,11V8A3,3 0 0,1 16,5M16,7A1,1 0 0,0 15,8V11A1,1 0 0,0 16,12A1,1 0 0,0 17,11V8A1,1 0 0,0 16,7M4,12A1,1 0 0,1 5,13A1,1 0 0,1 4,14A1,1 0 0,1 3,13A1,1 0 0,1 4,12Z" /></g><g id="delete"><path d="M19,4H15.5L14.5,3H9.5L8.5,4H5V6H19M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19Z" /></g><g id="delete-circle"><path d="M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M17,7H14.5L13.5,6H10.5L9.5,7H7V9H17V7M9,18H15A1,1 0 0,0 16,17V10H8V17A1,1 0 0,0 9,18Z" /></g><g id="delete-empty"><path d="M20.37,8.91L19.37,10.64L7.24,3.64L8.24,1.91L11.28,3.66L12.64,3.29L16.97,5.79L17.34,7.16L20.37,8.91M6,19V7H11.07L18,11V19A2,2 0 0,1 16,21H8A2,2 0 0,1 6,19Z" /></g><g id="delete-forever"><path d="M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19M8.46,11.88L9.87,10.47L12,12.59L14.12,10.47L15.53,11.88L13.41,14L15.53,16.12L14.12,17.53L12,15.41L9.88,17.53L8.47,16.12L10.59,14L8.46,11.88M15.5,4L14.5,3H9.5L8.5,4H5V6H19V4H15.5Z" /></g><g id="delete-sweep"><path d="M15,16H19V18H15V16M15,8H22V10H15V8M15,12H21V14H15V12M3,18A2,2 0 0,0 5,20H11A2,2 0 0,0 13,18V8H3V18M14,5H11L10,4H6L5,5H2V7H14V5Z" /></g><g id="delete-variant"><path d="M21.03,3L18,20.31C17.83,21.27 17,22 16,22H8C7,22 6.17,21.27 6,20.31L2.97,3H21.03M5.36,5L8,20H16L18.64,5H5.36M9,18V14H13V18H9M13,13.18L9.82,10L13,6.82L16.18,10L13,13.18Z" /></g><g id="delta"><path d="M12,7.77L18.39,18H5.61L12,7.77M12,4L2,20H22" /></g><g id="deskphone"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M15,5V19H19V5H15M5,5V9H13V5H5M5,11V13H7V11H5M8,11V13H10V11H8M11,11V13H13V11H11M5,14V16H7V14H5M8,14V16H10V14H8M11,14V16H13V14H11M11,17V19H13V17H11M8,17V19H10V17H8M5,17V19H7V17H5Z" /></g><g id="desktop-mac"><path d="M21,14H3V4H21M21,2H3C1.89,2 1,2.89 1,4V16A2,2 0 0,0 3,18H10L8,21V22H16V21L14,18H21A2,2 0 0,0 23,16V4C23,2.89 22.1,2 21,2Z" /></g><g id="desktop-tower"><path d="M8,2H16A2,2 0 0,1 18,4V20A2,2 0 0,1 16,22H8A2,2 0 0,1 6,20V4A2,2 0 0,1 8,2M8,4V6H16V4H8M16,8H8V10H16V8M16,18H14V20H16V18Z" /></g><g id="details"><path d="M6.38,6H17.63L12,16L6.38,6M3,4L12,20L21,4H3Z" /></g><g id="developer-board"><path d="M22,9V7H20V5A2,2 0 0,0 18,3H4A2,2 0 0,0 2,5V19A2,2 0 0,0 4,21H18A2,2 0 0,0 20,19V17H22V15H20V13H22V11H20V9H22M18,19H4V5H18V19M6,13H11V17H6V13M12,7H16V10H12V7M6,7H11V12H6V7M12,11H16V17H12V11Z" /></g><g id="deviantart"><path d="M6,6H12L14,2H18V6L14.5,13H18V18H12L10,22H6V18L9.5,11H6V6Z" /></g><g id="dialpad"><path d="M12,19A2,2 0 0,0 10,21A2,2 0 0,0 12,23A2,2 0 0,0 14,21A2,2 0 0,0 12,19M6,1A2,2 0 0,0 4,3A2,2 0 0,0 6,5A2,2 0 0,0 8,3A2,2 0 0,0 6,1M6,7A2,2 0 0,0 4,9A2,2 0 0,0 6,11A2,2 0 0,0 8,9A2,2 0 0,0 6,7M6,13A2,2 0 0,0 4,15A2,2 0 0,0 6,17A2,2 0 0,0 8,15A2,2 0 0,0 6,13M18,5A2,2 0 0,0 20,3A2,2 0 0,0 18,1A2,2 0 0,0 16,3A2,2 0 0,0 18,5M12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17A2,2 0 0,0 14,15A2,2 0 0,0 12,13M18,13A2,2 0 0,0 16,15A2,2 0 0,0 18,17A2,2 0 0,0 20,15A2,2 0 0,0 18,13M18,7A2,2 0 0,0 16,9A2,2 0 0,0 18,11A2,2 0 0,0 20,9A2,2 0 0,0 18,7M12,7A2,2 0 0,0 10,9A2,2 0 0,0 12,11A2,2 0 0,0 14,9A2,2 0 0,0 12,7M12,1A2,2 0 0,0 10,3A2,2 0 0,0 12,5A2,2 0 0,0 14,3A2,2 0 0,0 12,1Z" /></g><g id="diamond"><path d="M16,9H19L14,16M10,9H14L12,17M5,9H8L10,16M15,4H17L19,7H16M11,4H13L14,7H10M7,4H9L8,7H5M6,2L2,8L12,22L22,8L18,2H6Z" /></g><g id="dice-1"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z" /></g><g id="dice-2"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M7,5A2,2 0 0,0 5,7A2,2 0 0,0 7,9A2,2 0 0,0 9,7A2,2 0 0,0 7,5M17,15A2,2 0 0,0 15,17A2,2 0 0,0 17,19A2,2 0 0,0 19,17A2,2 0 0,0 17,15Z" /></g><g id="dice-3"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10M7,5A2,2 0 0,0 5,7A2,2 0 0,0 7,9A2,2 0 0,0 9,7A2,2 0 0,0 7,5M17,15A2,2 0 0,0 15,17A2,2 0 0,0 17,19A2,2 0 0,0 19,17A2,2 0 0,0 17,15Z" /></g><g id="dice-4"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M7,5A2,2 0 0,0 5,7A2,2 0 0,0 7,9A2,2 0 0,0 9,7A2,2 0 0,0 7,5M17,15A2,2 0 0,0 15,17A2,2 0 0,0 17,19A2,2 0 0,0 19,17A2,2 0 0,0 17,15M17,5A2,2 0 0,0 15,7A2,2 0 0,0 17,9A2,2 0 0,0 19,7A2,2 0 0,0 17,5M7,15A2,2 0 0,0 5,17A2,2 0 0,0 7,19A2,2 0 0,0 9,17A2,2 0 0,0 7,15Z" /></g><g id="dice-5"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M7,5A2,2 0 0,0 5,7A2,2 0 0,0 7,9A2,2 0 0,0 9,7A2,2 0 0,0 7,5M17,15A2,2 0 0,0 15,17A2,2 0 0,0 17,19A2,2 0 0,0 19,17A2,2 0 0,0 17,15M17,5A2,2 0 0,0 15,7A2,2 0 0,0 17,9A2,2 0 0,0 19,7A2,2 0 0,0 17,5M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10M7,15A2,2 0 0,0 5,17A2,2 0 0,0 7,19A2,2 0 0,0 9,17A2,2 0 0,0 7,15Z" /></g><g id="dice-6"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M7,5A2,2 0 0,0 5,7A2,2 0 0,0 7,9A2,2 0 0,0 9,7A2,2 0 0,0 7,5M17,15A2,2 0 0,0 15,17A2,2 0 0,0 17,19A2,2 0 0,0 19,17A2,2 0 0,0 17,15M17,10A2,2 0 0,0 15,12A2,2 0 0,0 17,14A2,2 0 0,0 19,12A2,2 0 0,0 17,10M17,5A2,2 0 0,0 15,7A2,2 0 0,0 17,9A2,2 0 0,0 19,7A2,2 0 0,0 17,5M7,10A2,2 0 0,0 5,12A2,2 0 0,0 7,14A2,2 0 0,0 9,12A2,2 0 0,0 7,10M7,15A2,2 0 0,0 5,17A2,2 0 0,0 7,19A2,2 0 0,0 9,17A2,2 0 0,0 7,15Z" /></g><g id="dice-d20"><path d="M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15M14.93,8.27A2.57,2.57 0 0,1 17.5,10.84V13.5C17.5,14.9 16.35,16.05 14.93,16.05C13.5,16.05 12.36,14.9 12.36,13.5V10.84A2.57,2.57 0 0,1 14.93,8.27M14.92,9.71C14.34,9.71 13.86,10.18 13.86,10.77V13.53C13.86,14.12 14.34,14.6 14.92,14.6C15.5,14.6 16,14.12 16,13.53V10.77C16,10.18 15.5,9.71 14.92,9.71M11.45,14.76V15.96L6.31,15.93V14.91C6.31,14.91 9.74,11.58 9.75,10.57C9.75,9.33 8.73,9.46 8.73,9.46C8.73,9.46 7.75,9.5 7.64,10.71L6.14,10.76C6.14,10.76 6.18,8.26 8.83,8.26C11.2,8.26 11.23,10.04 11.23,10.5C11.23,12.18 8.15,14.77 8.15,14.77L11.45,14.76Z" /></g><g id="dice-d4"><path d="M13.43,15.15H14.29V16.36H13.43V18H11.92V16.36H8.82L8.75,15.41L11.91,10.42H13.43V15.15M10.25,15.15H11.92V12.47L10.25,15.15M22,21H2C1.64,21 1.31,20.81 1.13,20.5C0.95,20.18 0.96,19.79 1.15,19.5L11.15,3C11.5,2.38 12.5,2.38 12.86,3L22.86,19.5C23.04,19.79 23.05,20.18 22.87,20.5C22.69,20.81 22.36,21 22,21M3.78,19H20.23L12,5.43L3.78,19Z" /></g><g id="dice-d6"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5M13.39,9.53C10.89,9.5 10.86,11.53 10.86,11.53C10.86,11.53 11.41,10.87 12.53,10.87C13.19,10.87 14.5,11.45 14.55,13.41C14.61,15.47 12.77,16 12.77,16C12.77,16 9.27,16.86 9.3,12.66C9.33,7.94 13.39,8.33 13.39,8.33V9.53M11.95,12.1C11.21,12 10.83,12.78 10.83,12.78L10.85,13.5C10.85,14.27 11.39,14.83 12,14.83C12.61,14.83 13.05,14.27 13.05,13.5C13.05,12.73 12.56,12.1 11.95,12.1Z" /></g><g id="dice-d8"><path d="M12,23C11.67,23 11.37,22.84 11.18,22.57L4.18,12.57C3.94,12.23 3.94,11.77 4.18,11.43L11.18,1.43C11.55,0.89 12.45,0.89 12.82,1.43L19.82,11.43C20.06,11.77 20.06,12.23 19.82,12.57L12.82,22.57C12.63,22.84 12.33,23 12,23M6.22,12L12,20.26L17.78,12L12,3.74L6.22,12M12,8.25C13.31,8.25 14.38,9.2 14.38,10.38C14.38,11.07 14,11.68 13.44,12.07C14.14,12.46 14.6,13.13 14.6,13.9C14.6,15.12 13.44,16.1 12,16.1C10.56,16.1 9.4,15.12 9.4,13.9C9.4,13.13 9.86,12.46 10.56,12.07C10,11.68 9.63,11.07 9.63,10.38C9.63,9.2 10.69,8.25 12,8.25M12,12.65A1.1,1.1 0 0,0 10.9,13.75A1.1,1.1 0 0,0 12,14.85A1.1,1.1 0 0,0 13.1,13.75A1.1,1.1 0 0,0 12,12.65M12,9.5C11.5,9.5 11.1,9.95 11.1,10.5C11.1,11.05 11.5,11.5 12,11.5C12.5,11.5 12.9,11.05 12.9,10.5C12.9,9.95 12.5,9.5 12,9.5Z" /></g><g id="dictionary"><path d="M5.81,2C4.83,2.09 4,3 4,4V20C4,21.05 4.95,22 6,22H18C19.05,22 20,21.05 20,20V4C20,2.89 19.1,2 18,2H12V9L9.5,7.5L7,9V2H6C5.94,2 5.87,2 5.81,2M12,13H13A1,1 0 0,1 14,14V18H13V16H12V18H11V14A1,1 0 0,1 12,13M12,14V15H13V14H12M15,15H18V16L16,19H18V20H15V19L17,16H15V15Z" /></g><g id="directions"><path d="M14,14.5V12H10V15H8V11A1,1 0 0,1 9,10H14V7.5L17.5,11M21.71,11.29L12.71,2.29H12.7C12.31,1.9 11.68,1.9 11.29,2.29L2.29,11.29C1.9,11.68 1.9,12.32 2.29,12.71L11.29,21.71C11.68,22.09 12.31,22.1 12.71,21.71L21.71,12.71C22.1,12.32 22.1,11.68 21.71,11.29Z" /></g><g id="directions-fork"><path d="M3,4V12.5L6,9.5L9,13C10,14 10,15 10,15V21H14V14C14,14 14,13 13.47,12C12.94,11 12,10 12,10L9,6.58L11.5,4M18,4L13.54,8.47L14,9C14,9 14.93,10 15.47,11C15.68,11.4 15.8,11.79 15.87,12.13L21,7" /></g><g id="discord"><path d="M22,24L16.75,19L17.38,21H4.5A2.5,2.5 0 0,1 2,18.5V3.5A2.5,2.5 0 0,1 4.5,1H19.5A2.5,2.5 0 0,1 22,3.5V24M12,6.8C9.32,6.8 7.44,7.95 7.44,7.95C8.47,7.03 10.27,6.5 10.27,6.5L10.1,6.33C8.41,6.36 6.88,7.53 6.88,7.53C5.16,11.12 5.27,14.22 5.27,14.22C6.67,16.03 8.75,15.9 8.75,15.9L9.46,15C8.21,14.73 7.42,13.62 7.42,13.62C7.42,13.62 9.3,14.9 12,14.9C14.7,14.9 16.58,13.62 16.58,13.62C16.58,13.62 15.79,14.73 14.54,15L15.25,15.9C15.25,15.9 17.33,16.03 18.73,14.22C18.73,14.22 18.84,11.12 17.12,7.53C17.12,7.53 15.59,6.36 13.9,6.33L13.73,6.5C13.73,6.5 15.53,7.03 16.56,7.95C16.56,7.95 14.68,6.8 12,6.8M9.93,10.59C10.58,10.59 11.11,11.16 11.1,11.86C11.1,12.55 10.58,13.13 9.93,13.13C9.29,13.13 8.77,12.55 8.77,11.86C8.77,11.16 9.28,10.59 9.93,10.59M14.1,10.59C14.75,10.59 15.27,11.16 15.27,11.86C15.27,12.55 14.75,13.13 14.1,13.13C13.46,13.13 12.94,12.55 12.94,11.86C12.94,11.16 13.45,10.59 14.1,10.59Z" /></g><g id="disk"><path d="M12,14C10.89,14 10,13.1 10,12C10,10.89 10.89,10 12,10C13.11,10 14,10.89 14,12A2,2 0 0,1 12,14M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z" /></g><g id="disk-alert"><path d="M10,14C8.89,14 8,13.1 8,12C8,10.89 8.89,10 10,10A2,2 0 0,1 12,12A2,2 0 0,1 10,14M10,4A8,8 0 0,0 2,12A8,8 0 0,0 10,20A8,8 0 0,0 18,12A8,8 0 0,0 10,4M20,12H22V7H20M20,16H22V14H20V16Z" /></g><g id="disqus"><path d="M12.08,22C9.63,22 7.39,21.11 5.66,19.63L1.41,20.21L3.05,16.15C2.5,14.88 2.16,13.5 2.16,12C2.16,6.5 6.6,2 12.08,2C17.56,2 22,6.5 22,12C22,17.5 17.56,22 12.08,22M17.5,11.97V11.94C17.5,9.06 15.46,7 11.95,7H8.16V17H11.9C15.43,17 17.5,14.86 17.5,11.97M12,14.54H10.89V9.46H12C13.62,9.46 14.7,10.39 14.7,12V12C14.7,13.63 13.62,14.54 12,14.54Z" /></g><g id="disqus-outline"><path d="M11.9,14.5H10.8V9.5H11.9C13.5,9.5 14.6,10.4 14.6,12C14.6,13.6 13.5,14.5 11.9,14.5M11.9,7H8.1V17H11.8C15.3,17 17.4,14.9 17.4,12V12C17.4,9.1 15.4,7 11.9,7M12,20C10.1,20 8.3,19.3 6.9,18.1L6.2,17.5L4.5,17.7L5.2,16.1L4.9,15.3C4.4,14.2 4.2,13.1 4.2,11.9C4.2,7.5 7.8,3.9 12.1,3.9C16.4,3.9 19.9,7.6 19.9,12C19.9,16.4 16.3,20 12,20M12,2C6.5,2 2.1,6.5 2.1,12C2.1,13.5 2.4,14.9 3,16.2L1.4,20.3L5.7,19.7C7.4,21.2 9.7,22.1 12.1,22.1C17.6,22.1 22,17.6 22,12.1C22,6.6 17.5,2 12,2Z" /></g><g id="division"><path d="M19,13H5V11H19V13M12,5A2,2 0 0,1 14,7A2,2 0 0,1 12,9A2,2 0 0,1 10,7A2,2 0 0,1 12,5M12,15A2,2 0 0,1 14,17A2,2 0 0,1 12,19A2,2 0 0,1 10,17A2,2 0 0,1 12,15Z" /></g><g id="division-box"><path d="M17,13V11H7V13H17M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19M12,7A1,1 0 0,0 11,8A1,1 0 0,0 12,9A1,1 0 0,0 13,8A1,1 0 0,0 12,7M12,15A1,1 0 0,0 11,16A1,1 0 0,0 12,17A1,1 0 0,0 13,16A1,1 0 0,0 12,15Z" /></g><g id="dna"><path d="M4,2H6V4C6,5.44 6.68,6.61 7.88,7.78C8.74,8.61 9.89,9.41 11.09,10.2L9.26,11.39C8.27,10.72 7.31,10 6.5,9.21C5.07,7.82 4,6.1 4,4V2M18,2H20V4C20,6.1 18.93,7.82 17.5,9.21C16.09,10.59 14.29,11.73 12.54,12.84C10.79,13.96 9.09,15.05 7.88,16.22C6.68,17.39 6,18.56 6,20V22H4V20C4,17.9 5.07,16.18 6.5,14.79C7.91,13.41 9.71,12.27 11.46,11.16C13.21,10.04 14.91,8.95 16.12,7.78C17.32,6.61 18,5.44 18,4V2M14.74,12.61C15.73,13.28 16.69,14 17.5,14.79C18.93,16.18 20,17.9 20,20V22H18V20C18,18.56 17.32,17.39 16.12,16.22C15.26,15.39 14.11,14.59 12.91,13.8L14.74,12.61M7,3H17V4L16.94,4.5H7.06L7,4V3M7.68,6H16.32C16.08,6.34 15.8,6.69 15.42,7.06L14.91,7.5H9.07L8.58,7.06C8.2,6.69 7.92,6.34 7.68,6M9.09,16.5H14.93L15.42,16.94C15.8,17.31 16.08,17.66 16.32,18H7.68C7.92,17.66 8.2,17.31 8.58,16.94L9.09,16.5M7.06,19.5H16.94L17,20V21H7V20L7.06,19.5Z" /></g><g id="dns"><path d="M7,9A2,2 0 0,1 5,7A2,2 0 0,1 7,5A2,2 0 0,1 9,7A2,2 0 0,1 7,9M20,3H4A1,1 0 0,0 3,4V10A1,1 0 0,0 4,11H20A1,1 0 0,0 21,10V4A1,1 0 0,0 20,3M7,19A2,2 0 0,1 5,17A2,2 0 0,1 7,15A2,2 0 0,1 9,17A2,2 0 0,1 7,19M20,13H4A1,1 0 0,0 3,14V20A1,1 0 0,0 4,21H20A1,1 0 0,0 21,20V14A1,1 0 0,0 20,13Z" /></g><g id="do-not-disturb"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M17,13H7V11H17V13Z" /></g><g id="do-not-disturb-off"><path d="M17,11V13H15.54L20.22,17.68C21.34,16.07 22,14.11 22,12A10,10 0 0,0 12,2C9.89,2 7.93,2.66 6.32,3.78L13.54,11H17M2.27,2.27L1,3.54L3.78,6.32C2.66,7.93 2,9.89 2,12A10,10 0 0,0 12,22C14.11,22 16.07,21.34 17.68,20.22L20.46,23L21.73,21.73L2.27,2.27M7,13V11H8.46L10.46,13H7Z" /></g><g id="dolby"><path d="M2,5V19H22V5H2M6,17H4V7H6C8.86,7.09 11.1,9.33 11,12C11.1,14.67 8.86,16.91 6,17M20,17H18C15.14,16.91 12.9,14.67 13,12C12.9,9.33 15.14,7.09 18,7H20V17Z" /></g><g id="domain"><path d="M18,15H16V17H18M18,11H16V13H18M20,19H12V17H14V15H12V13H14V11H12V9H20M10,7H8V5H10M10,11H8V9H10M10,15H8V13H10M10,19H8V17H10M6,7H4V5H6M6,11H4V9H6M6,15H4V13H6M6,19H4V17H6M12,7V3H2V21H22V7H12Z" /></g><g id="dots-horizontal"><path d="M16,12A2,2 0 0,1 18,10A2,2 0 0,1 20,12A2,2 0 0,1 18,14A2,2 0 0,1 16,12M10,12A2,2 0 0,1 12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12M4,12A2,2 0 0,1 6,10A2,2 0 0,1 8,12A2,2 0 0,1 6,14A2,2 0 0,1 4,12Z" /></g><g id="dots-vertical"><path d="M12,16A2,2 0 0,1 14,18A2,2 0 0,1 12,20A2,2 0 0,1 10,18A2,2 0 0,1 12,16M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M12,4A2,2 0 0,1 14,6A2,2 0 0,1 12,8A2,2 0 0,1 10,6A2,2 0 0,1 12,4Z" /></g><g id="douban"><path d="M20,6H4V4H20V6M20,18V20H4V18H7.33L6.26,14H5V8H19V14H17.74L16.67,18H20M7,12H17V10H7V12M9.4,18H14.6L15.67,14H8.33L9.4,18Z" /></g><g id="download"><path d="M5,20H19V18H5M19,9H15V3H9V9H5L12,16L19,9Z" /></g><g id="drag"><path d="M7,19V17H9V19H7M11,19V17H13V19H11M15,19V17H17V19H15M7,15V13H9V15H7M11,15V13H13V15H11M15,15V13H17V15H15M7,11V9H9V11H7M11,11V9H13V11H11M15,11V9H17V11H15M7,7V5H9V7H7M11,7V5H13V7H11M15,7V5H17V7H15Z" /></g><g id="drag-horizontal"><path d="M3,15V13H5V15H3M3,11V9H5V11H3M7,15V13H9V15H7M7,11V9H9V11H7M11,15V13H13V15H11M11,11V9H13V11H11M15,15V13H17V15H15M15,11V9H17V11H15M19,15V13H21V15H19M19,11V9H21V11H19Z" /></g><g id="drag-vertical"><path d="M9,3H11V5H9V3M13,3H15V5H13V3M9,7H11V9H9V7M13,7H15V9H13V7M9,11H11V13H9V11M13,11H15V13H13V11M9,15H11V17H9V15M13,15H15V17H13V15M9,19H11V21H9V19M13,19H15V21H13V19Z" /></g><g id="drawing"><path d="M8.5,3A5.5,5.5 0 0,1 14,8.5C14,9.83 13.53,11.05 12.74,12H21V21H12V12.74C11.05,13.53 9.83,14 8.5,14A5.5,5.5 0 0,1 3,8.5A5.5,5.5 0 0,1 8.5,3Z" /></g><g id="drawing-box"><path d="M18,18H12V12.21C11.34,12.82 10.47,13.2 9.5,13.2C7.46,13.2 5.8,11.54 5.8,9.5A3.7,3.7 0 0,1 9.5,5.8C11.54,5.8 13.2,7.46 13.2,9.5C13.2,10.47 12.82,11.34 12.21,12H18M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="dribbble"><path d="M16.42,18.42C16,16.5 15.5,14.73 15,13.17C15.5,13.1 16,13.06 16.58,13.06H16.6V13.06H16.6C17.53,13.06 18.55,13.18 19.66,13.43C19.28,15.5 18.08,17.27 16.42,18.42M12,19.8C10.26,19.8 8.66,19.23 7.36,18.26C7.64,17.81 8.23,16.94 9.18,16.04C10.14,15.11 11.5,14.15 13.23,13.58C13.82,15.25 14.36,17.15 14.77,19.29C13.91,19.62 13,19.8 12,19.8M4.2,12C4.2,11.96 4.2,11.93 4.2,11.89C4.42,11.9 4.71,11.9 5.05,11.9H5.06C6.62,11.89 9.36,11.76 12.14,10.89C12.29,11.22 12.44,11.56 12.59,11.92C10.73,12.54 9.27,13.53 8.19,14.5C7.16,15.46 6.45,16.39 6.04,17C4.9,15.66 4.2,13.91 4.2,12M8.55,5C9.1,5.65 10.18,7.06 11.34,9.25C9,9.96 6.61,10.12 5.18,10.12C5.14,10.12 5.1,10.12 5.06,10.12H5.05C4.81,10.12 4.6,10.12 4.43,10.11C5,7.87 6.5,6 8.55,5M12,4.2C13.84,4.2 15.53,4.84 16.86,5.91C15.84,7.14 14.5,8 13.03,8.65C12,6.67 11,5.25 10.34,4.38C10.88,4.27 11.43,4.2 12,4.2M18.13,7.18C19.1,8.42 19.71,9.96 19.79,11.63C18.66,11.39 17.6,11.28 16.6,11.28V11.28H16.59C15.79,11.28 15.04,11.35 14.33,11.47C14.16,11.05 14,10.65 13.81,10.26C15.39,9.57 16.9,8.58 18.13,7.18M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="dribbble-box"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M15.09,16.5C14.81,15.14 14.47,13.91 14.08,12.82L15.2,12.74H15.22V12.74C15.87,12.74 16.59,12.82 17.36,13C17.09,14.44 16.26,15.69 15.09,16.5M12,17.46C10.79,17.46 9.66,17.06 8.76,16.39C8.95,16.07 9.36,15.46 10,14.83C10.7,14.18 11.64,13.5 12.86,13.11C13.28,14.27 13.65,15.6 13.94,17.1C13.33,17.33 12.68,17.46 12,17.46M6.54,12V11.92L7.14,11.93V11.93C8.24,11.93 10.15,11.83 12.1,11.22L12.41,11.94C11.11,12.38 10.09,13.07 9.34,13.76C8.61,14.42 8.12,15.08 7.83,15.5C7.03,14.56 6.54,13.34 6.54,12M9.59,7.11C9.97,7.56 10.73,8.54 11.54,10.08C9.89,10.57 8.23,10.68 7.22,10.68H7.14V10.68H6.7C7.09,9.11 8.17,7.81 9.59,7.11M12,6.54C13.29,6.54 14.47,7 15.41,7.74C14.69,8.6 13.74,9.22 12.72,9.66C12,8.27 11.31,7.28 10.84,6.67C11.21,6.59 11.6,6.54 12,6.54M16.29,8.63C16.97,9.5 17.4,10.57 17.45,11.74C16.66,11.58 15.92,11.5 15.22,11.5V11.5C14.66,11.5 14.13,11.54 13.63,11.63L13.27,10.78C14.37,10.3 15.43,9.61 16.29,8.63M12,5A7,7 0 0,0 5,12A7,7 0 0,0 12,19A7,7 0 0,0 19,12A7,7 0 0,0 12,5Z" /></g><g id="drone"><path d="M22,11H21L20,9H13.75L16,12.5H14L10.75,9H4C3.45,9 2,8.55 2,8C2,7.45 3.5,5.5 5.5,5.5C7.5,5.5 7.67,6.5 9,7H21A1,1 0 0,1 22,8V9L22,11M10.75,6.5L14,3H16L13.75,6.5H10.75M18,11V9.5H19.75L19,11H18M3,19A1,1 0 0,1 2,18A1,1 0 0,1 3,17A4,4 0 0,1 7,21A1,1 0 0,1 6,22A1,1 0 0,1 5,21A2,2 0 0,0 3,19M11,21A1,1 0 0,1 10,22A1,1 0 0,1 9,21A6,6 0 0,0 3,15A1,1 0 0,1 2,14A1,1 0 0,1 3,13A8,8 0 0,1 11,21Z" /></g><g id="dropbox"><path d="M12,14.56L16.35,18.16L18.2,16.95V18.3L12,22L5.82,18.3V16.95L7.68,18.16L12,14.56M7.68,2.5L12,6.09L16.32,2.5L22.5,6.5L18.23,9.94L22.5,13.36L16.32,17.39L12,13.78L7.68,17.39L1.5,13.36L5.77,9.94L1.5,6.5L7.68,2.5M12,13.68L18.13,9.94L12,6.19L5.87,9.94L12,13.68Z" /></g><g id="drupal"><path d="M20.47,14.65C20.47,15.29 20.25,16.36 19.83,17.1C19.4,17.85 19.08,18.06 18.44,18.06C17.7,17.95 16.31,15.82 15.36,15.72C14.18,15.72 11.73,18.17 9.71,18.17C8.54,18.17 8.11,17.95 7.79,17.74C7.15,17.31 6.94,16.67 6.94,15.82C6.94,14.22 8.43,12.84 10.24,12.84C12.59,12.84 14.18,15.18 15.36,15.08C16.31,15.08 18.23,13.16 19.19,13.16C20.15,12.95 20.47,14 20.47,14.65M16.63,5.28C15.57,4.64 14.61,4.32 13.54,3.68C12.91,3.25 12.05,2.3 11.31,1.44C11,2.83 10.78,3.36 10.24,3.79C9.18,4.53 8.64,4.85 7.69,5.28C6.94,5.7 3,8.05 3,13.16C3,18.27 7.37,22 12.05,22C16.85,22 21,18.5 21,13.27C21.21,8.05 17.27,5.7 16.63,5.28Z" /></g><g id="duck"><path d="M8.5,5A1.5,1.5 0 0,0 7,6.5A1.5,1.5 0 0,0 8.5,8A1.5,1.5 0 0,0 10,6.5A1.5,1.5 0 0,0 8.5,5M10,2A5,5 0 0,1 15,7C15,8.7 14.15,10.2 12.86,11.1C14.44,11.25 16.22,11.61 18,12.5C21,14 22,12 22,12C22,12 21,21 15,21H9C9,21 4,21 4,16C4,13 7,12 6,10C2,10 2,6.5 2,6.5C3,7 4.24,7 5,6.65C5.19,4.05 7.36,2 10,2Z" /></g><g id="dumbbell"><path d="M4.22,14.12L3.5,13.41C2.73,12.63 2.73,11.37 3.5,10.59C4.3,9.8 5.56,9.8 6.34,10.59L8.92,13.16L13.16,8.92L10.59,6.34C9.8,5.56 9.8,4.3 10.59,3.5C11.37,2.73 12.63,2.73 13.41,3.5L14.12,4.22L19.78,9.88L20.5,10.59C21.27,11.37 21.27,12.63 20.5,13.41C19.7,14.2 18.44,14.2 17.66,13.41L15.08,10.84L10.84,15.08L13.41,17.66C14.2,18.44 14.2,19.7 13.41,20.5C12.63,21.27 11.37,21.27 10.59,20.5L9.88,19.78L4.22,14.12M3.16,19.42L4.22,18.36L2.81,16.95C2.42,16.56 2.42,15.93 2.81,15.54C3.2,15.15 3.83,15.15 4.22,15.54L8.46,19.78C8.85,20.17 8.85,20.8 8.46,21.19C8.07,21.58 7.44,21.58 7.05,21.19L5.64,19.78L4.58,20.84L3.16,19.42M19.42,3.16L20.84,4.58L19.78,5.64L21.19,7.05C21.58,7.44 21.58,8.07 21.19,8.46C20.8,8.86 20.17,8.86 19.78,8.46L15.54,4.22C15.15,3.83 15.15,3.2 15.54,2.81C15.93,2.42 16.56,2.42 16.95,2.81L18.36,4.22L19.42,3.16Z" /></g><g id="earth"><path d="M17.9,17.39C17.64,16.59 16.89,16 16,16H15V13A1,1 0 0,0 14,12H8V10H10A1,1 0 0,0 11,9V7H13A2,2 0 0,0 15,5V4.59C17.93,5.77 20,8.64 20,12C20,14.08 19.2,15.97 17.9,17.39M11,19.93C7.05,19.44 4,16.08 4,12C4,11.38 4.08,10.78 4.21,10.21L9,15V16A2,2 0 0,0 11,18M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="earth-box"><path d="M5,3C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H5M15.78,5H19V17.18C18.74,16.38 17.69,15.79 16.8,15.79H15.8V12.79A1,1 0 0,0 14.8,11.79H8.8V9.79H10.8A1,1 0 0,0 11.8,8.79V6.79H13.8C14.83,6.79 15.67,6 15.78,5M5,10.29L9.8,14.79V15.79C9.8,16.9 10.7,17.79 11.8,17.79V19H5V10.29Z" /></g><g id="earth-box-off"><path d="M23,4.27L21,6.27V19A2,2 0 0,1 19,21H6.27L4.27,23L3,21.72L21.72,3L23,4.27M5,3H19.18L17.18,5H15.78C15.67,6 14.83,6.79 13.8,6.79H11.8V8.79C11.8,9.35 11.35,9.79 10.8,9.79H8.8V11.79H10.38L8.55,13.62L5,10.29V17.18L3,19.18V5C3,3.89 3.89,3 5,3M11.8,19V17.79C11.17,17.79 10.6,17.5 10.23,17.04L8.27,19H11.8M15.8,12.79V15.79H16.8C17.69,15.79 18.74,16.38 19,17.18V8.27L15.33,11.94C15.61,12.12 15.8,12.43 15.8,12.79Z" /></g><g id="earth-off"><path d="M22,5.27L20.5,6.75C21.46,8.28 22,10.07 22,12A10,10 0 0,1 12,22C10.08,22 8.28,21.46 6.75,20.5L5.27,22L4,20.72L20.72,4L22,5.27M17.9,17.39C19.2,15.97 20,14.08 20,12C20,10.63 19.66,9.34 19.05,8.22L14.83,12.44C14.94,12.6 15,12.79 15,13V16H16C16.89,16 17.64,16.59 17.9,17.39M11,19.93V18C10.5,18 10.07,17.83 9.73,17.54L8.22,19.05C9.07,19.5 10,19.8 11,19.93M15,4.59V5A2,2 0 0,1 13,7H11V9A1,1 0 0,1 10,10H8V12H10.18L8.09,14.09L4.21,10.21C4.08,10.78 4,11.38 4,12C4,13.74 4.56,15.36 5.5,16.67L4.08,18.1C2.77,16.41 2,14.3 2,12A10,10 0 0,1 12,2C14.3,2 16.41,2.77 18.1,4.08L16.67,5.5C16.16,5.14 15.6,4.83 15,4.59Z" /></g><g id="edge"><path d="M2.74,10.81C3.83,-1.36 22.5,-1.36 21.2,13.56H8.61C8.61,17.85 14.42,19.21 19.54,16.31V20.53C13.25,23.88 5,21.43 5,14.09C5,8.58 9.97,6.81 9.97,6.81C9.97,6.81 8.58,8.58 8.54,10.05H15.7C15.7,2.93 5.9,5.57 2.74,10.81Z" /></g><g id="eject"><path d="M12,5L5.33,15H18.67M5,17H19V19H5V17Z" /></g><g id="elevation-decline"><path d="M21,21H3V11.25L9.45,15L13.22,12.8L21,17.29V21M3,8.94V6.75L9.45,10.5L13.22,8.3L21,12.79V15L13.22,10.5L9.45,12.67L3,8.94Z" /></g><g id="elevation-rise"><path d="M3,21V17.29L10.78,12.8L14.55,15L21,11.25V21H3M21,8.94L14.55,12.67L10.78,10.5L3,15V12.79L10.78,8.3L14.55,10.5L21,6.75V8.94Z" /></g><g id="elevator"><path d="M7,2L11,6H8V10H6V6H3L7,2M17,10L13,6H16V2H18V6H21L17,10M7,12H17A2,2 0 0,1 19,14V20A2,2 0 0,1 17,22H7A2,2 0 0,1 5,20V14A2,2 0 0,1 7,12M7,14V20H17V14H7Z" /></g><g id="email"><path d="M20,8L12,13L4,8V6L12,11L20,6M20,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z" /></g><g id="email-alert"><path d="M16,9V7L10,11L4,7V9L10,13L16,9M16,5A2,2 0 0,1 18,7V16A2,2 0 0,1 16,18H4C2.89,18 2,17.1 2,16V7A2,2 0 0,1 4,5H16M20,12V7H22V12H20M20,16V14H22V16H20Z" /></g><g id="email-open"><path d="M4,8L12,13L20,8V8L12,3L4,8V8M22,8V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V8C2,7.27 2.39,6.64 2.97,6.29L12,0.64L21.03,6.29C21.61,6.64 22,7.27 22,8Z" /></g><g id="email-open-outline"><path d="M12,15.36L4,10.36V18H20V10.36L12,15.36M4,8L12,13L20,8V8L12,3L4,8V8M22,8V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V8C2,7.27 2.39,6.64 2.97,6.29L12,0.64L21.03,6.29C21.61,6.64 22,7.27 22,8Z" /></g><g id="email-outline"><path d="M20,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6A2,2 0 0,0 20,4M20,18H4V8L12,13L20,8V18M20,6L12,11L4,6V6H20V6Z" /></g><g id="email-secure"><path d="M20.5,0A2.5,2.5 0 0,1 23,2.5V3A1,1 0 0,1 24,4V8A1,1 0 0,1 23,9H18A1,1 0 0,1 17,8V4A1,1 0 0,1 18,3V2.5A2.5,2.5 0 0,1 20.5,0M12,11L4,6V8L12,13L16.18,10.39C16.69,10.77 17.32,11 18,11H22V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H15V8C15,8.36 15.06,8.7 15.18,9L12,11M20.5,1A1.5,1.5 0 0,0 19,2.5V3H22V2.5A1.5,1.5 0 0,0 20.5,1Z" /></g><g id="email-variant"><path d="M12,13L2,6.76V6C2,4.89 2.89,4 4,4H20A2,2 0 0,1 22,6V6.75L12,13M22,18A2,2 0 0,1 20,20H4C2.89,20 2,19.1 2,18V9.11L4,10.36V18H20V10.36L22,9.11V18Z" /></g><g id="emby"><path d="M11,2L6,7L7,8L2,13L7,18L8,17L13,22L18,17L17,16L22,11L17,6L16,7L11,2M10,8.5L16,12L10,15.5V8.5Z" /></g><g id="emoticon"><path d="M12,17.5C14.33,17.5 16.3,16.04 17.11,14H6.89C7.69,16.04 9.67,17.5 12,17.5M8.5,11A1.5,1.5 0 0,0 10,9.5A1.5,1.5 0 0,0 8.5,8A1.5,1.5 0 0,0 7,9.5A1.5,1.5 0 0,0 8.5,11M15.5,11A1.5,1.5 0 0,0 17,9.5A1.5,1.5 0 0,0 15.5,8A1.5,1.5 0 0,0 14,9.5A1.5,1.5 0 0,0 15.5,11M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="emoticon-cool"><path d="M19,10C19,11.38 16.88,12.5 15.5,12.5C14.12,12.5 12.75,11.38 12.75,10H11.25C11.25,11.38 9.88,12.5 8.5,12.5C7.12,12.5 5,11.38 5,10H4.25C4.09,10.64 4,11.31 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12C20,11.31 19.91,10.64 19.75,10H19M12,4C9.04,4 6.45,5.61 5.07,8H18.93C17.55,5.61 14.96,4 12,4M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M12,17.23C10.25,17.23 8.71,16.5 7.81,15.42L9.23,14C9.68,14.72 10.75,15.23 12,15.23C13.25,15.23 14.32,14.72 14.77,14L16.19,15.42C15.29,16.5 13.75,17.23 12,17.23Z" /></g><g id="emoticon-dead"><path d="M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M16.18,7.76L15.12,8.82L14.06,7.76L13,8.82L14.06,9.88L13,10.94L14.06,12L15.12,10.94L16.18,12L17.24,10.94L16.18,9.88L17.24,8.82L16.18,7.76M7.82,12L8.88,10.94L9.94,12L11,10.94L9.94,9.88L11,8.82L9.94,7.76L8.88,8.82L7.82,7.76L6.76,8.82L7.82,9.88L6.76,10.94L7.82,12M12,14C9.67,14 7.69,15.46 6.89,17.5H17.11C16.31,15.46 14.33,14 12,14Z" /></g><g id="emoticon-devil"><path d="M1.5,2.09C2.4,3 3.87,3.73 5.69,4.25C7.41,2.84 9.61,2 12,2C14.39,2 16.59,2.84 18.31,4.25C20.13,3.73 21.6,3 22.5,2.09C22.47,3.72 21.65,5.21 20.28,6.4C21.37,8 22,9.92 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12C2,9.92 2.63,8 3.72,6.4C2.35,5.21 1.53,3.72 1.5,2.09M20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12M10.5,10C10.5,10.8 9.8,11.5 9,11.5C8.2,11.5 7.5,10.8 7.5,10V8.5L10.5,10M16.5,10C16.5,10.8 15.8,11.5 15,11.5C14.2,11.5 13.5,10.8 13.5,10L16.5,8.5V10M12,17.23C10.25,17.23 8.71,16.5 7.81,15.42L9.23,14C9.68,14.72 10.75,15.23 12,15.23C13.25,15.23 14.32,14.72 14.77,14L16.19,15.42C15.29,16.5 13.75,17.23 12,17.23Z" /></g><g id="emoticon-excited"><path d="M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M13,9.94L14.06,11L15.12,9.94L16.18,11L17.24,9.94L15.12,7.82L13,9.94M8.88,9.94L9.94,11L11,9.94L8.88,7.82L6.76,9.94L7.82,11L8.88,9.94M12,17.5C14.33,17.5 16.31,16.04 17.11,14H6.89C7.69,16.04 9.67,17.5 12,17.5Z" /></g><g id="emoticon-happy"><path d="M20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M10,9.5C10,10.3 9.3,11 8.5,11C7.7,11 7,10.3 7,9.5C7,8.7 7.7,8 8.5,8C9.3,8 10,8.7 10,9.5M17,9.5C17,10.3 16.3,11 15.5,11C14.7,11 14,10.3 14,9.5C14,8.7 14.7,8 15.5,8C16.3,8 17,8.7 17,9.5M12,17.23C10.25,17.23 8.71,16.5 7.81,15.42L9.23,14C9.68,14.72 10.75,15.23 12,15.23C13.25,15.23 14.32,14.72 14.77,14L16.19,15.42C15.29,16.5 13.75,17.23 12,17.23Z" /></g><g id="emoticon-neutral"><path d="M8.5,11A1.5,1.5 0 0,1 7,9.5A1.5,1.5 0 0,1 8.5,8A1.5,1.5 0 0,1 10,9.5A1.5,1.5 0 0,1 8.5,11M15.5,11A1.5,1.5 0 0,1 14,9.5A1.5,1.5 0 0,1 15.5,8A1.5,1.5 0 0,1 17,9.5A1.5,1.5 0 0,1 15.5,11M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22C6.47,22 2,17.5 2,12A10,10 0 0,1 12,2M9,14H15A1,1 0 0,1 16,15A1,1 0 0,1 15,16H9A1,1 0 0,1 8,15A1,1 0 0,1 9,14Z" /></g><g id="emoticon-poop"><path d="M9,11C9.55,11 10,11.9 10,13C10,14.1 9.55,15 9,15C8.45,15 8,14.1 8,13C8,11.9 8.45,11 9,11M15,11C15.55,11 16,11.9 16,13C16,14.1 15.55,15 15,15C14.45,15 14,14.1 14,13C14,11.9 14.45,11 15,11M9.75,1.75C9.75,1.75 16,4 15,8C15,8 19,8 17.25,11.5C17.25,11.5 21.46,11.94 20.28,15.34C19,16.53 18.7,16.88 17.5,17.75L20.31,16.14C21.35,16.65 24.37,18.47 21,21C17,24 11,21.25 9,21.25C7,21.25 5,22 4,22C3,22 2,21 2,19C2,17 4,16 5,16C5,16 2,13 7,11C7,11 5,8 9,7C9,7 8,6 9,5C10,4 9.75,2.75 9.75,1.75M8,17C9.33,18.17 10.67,19.33 12,19.33C13.33,19.33 14.67,18.17 16,17H8M9,10C7.9,10 7,11.34 7,13C7,14.66 7.9,16 9,16C10.1,16 11,14.66 11,13C11,11.34 10.1,10 9,10M15,10C13.9,10 13,11.34 13,13C13,14.66 13.9,16 15,16C16.1,16 17,14.66 17,13C17,11.34 16.1,10 15,10Z" /></g><g id="emoticon-sad"><path d="M20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M15.5,8C16.3,8 17,8.7 17,9.5C17,10.3 16.3,11 15.5,11C14.7,11 14,10.3 14,9.5C14,8.7 14.7,8 15.5,8M10,9.5C10,10.3 9.3,11 8.5,11C7.7,11 7,10.3 7,9.5C7,8.7 7.7,8 8.5,8C9.3,8 10,8.7 10,9.5M12,14C13.75,14 15.29,14.72 16.19,15.81L14.77,17.23C14.32,16.5 13.25,16 12,16C10.75,16 9.68,16.5 9.23,17.23L7.81,15.81C8.71,14.72 10.25,14 12,14Z" /></g><g id="emoticon-tongue"><path d="M9,8A2,2 0 0,1 11,10C11,10.36 10.9,10.71 10.73,11C10.39,10.4 9.74,10 9,10C8.26,10 7.61,10.4 7.27,11C7.1,10.71 7,10.36 7,10A2,2 0 0,1 9,8M15,8A2,2 0 0,1 17,10C17,10.36 16.9,10.71 16.73,11C16.39,10.4 15.74,10 15,10C14.26,10 13.61,10.4 13.27,11C13.1,10.71 13,10.36 13,10A2,2 0 0,1 15,8M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22C6.47,22 2,17.5 2,12A10,10 0 0,1 12,2M9,13H15A1,1 0 0,1 16,14A1,1 0 0,1 15,15C15,17 14.1,18 13,18C11.9,18 11,17 11,15H9A1,1 0 0,1 8,14A1,1 0 0,1 9,13Z" /></g><g id="engine"><path d="M7,4V6H10V8H7L5,10V13H3V10H1V18H3V15H5V18H8L10,20H18V16H20V19H23V9H20V12H18V8H12V6H15V4H7Z" /></g><g id="engine-outline"><path d="M8,10H16V18H11L9,16H7V11M7,4V6H10V8H7L5,10V13H3V10H1V18H3V15H5V18H8L10,20H18V16H20V19H23V9H20V12H18V8H12V6H15V4H7Z" /></g><g id="equal"><path d="M19,10H5V8H19V10M19,16H5V14H19V16Z" /></g><g id="equal-box"><path d="M17,16V14H7V16H17M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19M17,10V8H7V10H17Z" /></g><g id="eraser"><path d="M16.24,3.56L21.19,8.5C21.97,9.29 21.97,10.55 21.19,11.34L12,20.53C10.44,22.09 7.91,22.09 6.34,20.53L2.81,17C2.03,16.21 2.03,14.95 2.81,14.16L13.41,3.56C14.2,2.78 15.46,2.78 16.24,3.56M4.22,15.58L7.76,19.11C8.54,19.9 9.8,19.9 10.59,19.11L14.12,15.58L9.17,10.63L4.22,15.58Z" /></g><g id="eraser-variant"><path d="M15.14,3C14.63,3 14.12,3.2 13.73,3.59L2.59,14.73C1.81,15.5 1.81,16.77 2.59,17.56L5.03,20H12.69L21.41,11.27C22.2,10.5 22.2,9.23 21.41,8.44L16.56,3.59C16.17,3.2 15.65,3 15.14,3M17,18L15,20H22V18" /></g><g id="escalator"><path d="M20,8H18.95L6.95,20H4A2,2 0 0,1 2,18A2,2 0 0,1 4,16H5.29L7,14.29V10A1,1 0 0,1 8,9H9A1,1 0 0,1 10,10V11.29L17.29,4H20A2,2 0 0,1 22,6A2,2 0 0,1 20,8M8.5,5A1.5,1.5 0 0,1 10,6.5A1.5,1.5 0 0,1 8.5,8A1.5,1.5 0 0,1 7,6.5A1.5,1.5 0 0,1 8.5,5Z" /></g><g id="ethernet"><path d="M7,15H9V18H11V15H13V18H15V15H17V18H19V9H15V6H9V9H5V18H7V15M4.38,3H19.63C20.94,3 22,4.06 22,5.38V19.63A2.37,2.37 0 0,1 19.63,22H4.38C3.06,22 2,20.94 2,19.63V5.38C2,4.06 3.06,3 4.38,3Z" /></g><g id="ethernet-cable"><path d="M11,3V7H13V3H11M8,4V11H16V4H14V8H10V4H8M10,12V22H14V12H10Z" /></g><g id="ethernet-cable-off"><path d="M11,3H13V7H11V3M8,4H10V8H14V4H16V11H12.82L8,6.18V4M20,20.72L18.73,22L14,17.27V22H10V13.27L2,5.27L3.28,4L20,20.72Z" /></g><g id="etsy"><path d="M6.72,20.78C8.23,20.71 10.07,20.78 11.87,20.78C13.72,20.78 15.62,20.66 17.12,20.78C17.72,20.83 18.28,21.19 18.77,20.87C19.16,20.38 18.87,19.71 18.96,19.05C19.12,17.78 20.28,16.27 18.59,15.95C17.87,16.61 18.35,17.23 17.95,18.05C17.45,19.03 15.68,19.37 14,19.5C12.54,19.62 10,19.76 9.5,18.77C9.04,17.94 9.29,16.65 9.29,15.58C9.29,14.38 9.16,13.22 9.5,12.3C11.32,12.43 13.7,11.69 15,12.5C15.87,13 15.37,14.06 16.38,14.4C17.07,14.21 16.7,13.32 16.66,12.5C16.63,11.94 16.63,11.19 16.66,10.57C16.69,9.73 17,8.76 16.1,8.74C15.39,9.3 15.93,10.23 15.18,10.75C14.95,10.92 14.43,11 14.08,11C12.7,11.17 10.54,11.05 9.38,10.84C9.23,9.16 9.24,6.87 9.38,5.19C10,4.57 11.45,4.54 12.42,4.55C14.13,4.55 16.79,4.7 17.3,5.55C17.58,6 17.36,7 17.85,7.1C18.85,7.33 18.36,5.55 18.41,4.73C18.44,4.11 18.71,3.72 18.59,3.27C18.27,2.83 17.79,3.05 17.5,3.09C14.35,3.5 9.6,3.27 6.26,3.27C5.86,3.27 5.16,3.07 4.88,3.54C4.68,4.6 6.12,4.16 6.62,4.73C6.79,4.91 7.03,5.73 7.08,6.28C7.23,7.74 7.08,9.97 7.08,12.12C7.08,14.38 7.26,16.67 7.08,18.05C7,18.53 6.73,19.3 6.62,19.41C6,20.04 4.34,19.35 4.5,20.69C5.09,21.08 5.93,20.82 6.72,20.78Z" /></g><g id="ev-station"><path d="M19.77,7.23L19.78,7.22L16.06,3.5L15,4.56L17.11,6.67C16.17,7.03 15.5,7.93 15.5,9A2.5,2.5 0 0,0 18,11.5C18.36,11.5 18.69,11.42 19,11.29V18.5A1,1 0 0,1 18,19.5A1,1 0 0,1 17,18.5V14A2,2 0 0,0 15,12H14V5A2,2 0 0,0 12,3H6A2,2 0 0,0 4,5V21H14V13.5H15.5V18.5A2.5,2.5 0 0,0 18,21A2.5,2.5 0 0,0 20.5,18.5V9C20.5,8.31 20.22,7.68 19.77,7.23M18,10A1,1 0 0,1 17,9A1,1 0 0,1 18,8A1,1 0 0,1 19,9A1,1 0 0,1 18,10M8,18V13.5H6L10,6V11H12L8,18Z" /></g><g id="evernote"><path d="M15.09,11.63C15.09,11.63 15.28,10.35 16,10.35C16.76,10.35 17.78,12.06 17.78,12.06C17.78,12.06 15.46,11.63 15.09,11.63M19,4.69C18.64,4.09 16.83,3.41 15.89,3.41C14.96,3.41 13.5,3.41 13.5,3.41C13.5,3.41 12.7,2 10.88,2C9.05,2 9.17,2.81 9.17,3.5V6.32L8.34,7.19H4.5C4.5,7.19 3.44,7.91 3.44,9.44C3.44,11 3.92,16.35 7.13,16.85C10.93,17.43 11.58,15.67 11.58,15.46C11.58,14.56 11.6,13.21 11.6,13.21C11.6,13.21 12.71,15.33 14.39,15.33C16.07,15.33 17.04,16.3 17.04,17.29C17.04,18.28 17.04,19.13 17.04,19.13C17.04,19.13 17,20.28 16,20.28C15,20.28 13.89,20.28 13.89,20.28C13.89,20.28 13.2,19.74 13.2,19C13.2,18.25 13.53,18.05 13.93,18.05C14.32,18.05 14.65,18.09 14.65,18.09V16.53C14.65,16.53 11.47,16.5 11.47,18.94C11.47,21.37 13.13,22 14.46,22C15.8,22 16.63,22 16.63,22C16.63,22 20.56,21.5 20.56,13.75C20.56,6 19.33,5.28 19,4.69M7.5,6.31H4.26L8.32,2.22V5.5L7.5,6.31Z" /></g><g id="exclamation"><path d="M11,4.5H13V15.5H11V4.5M13,17.5V19.5H11V17.5H13Z" /></g><g id="exit-to-app"><path d="M19,3H5C3.89,3 3,3.89 3,5V9H5V5H19V19H5V15H3V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M10.08,15.58L11.5,17L16.5,12L11.5,7L10.08,8.41L12.67,11H3V13H12.67L10.08,15.58Z" /></g><g id="export"><path d="M23,12L19,8V11H10V13H19V16M1,18V6C1,4.89 1.9,4 3,4H15A2,2 0 0,1 17,6V9H15V6H3V18H15V15H17V18A2,2 0 0,1 15,20H3A2,2 0 0,1 1,18Z" /></g><g id="eye"><path d="M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17M12,4.5C7,4.5 2.73,7.61 1,12C2.73,16.39 7,19.5 12,19.5C17,19.5 21.27,16.39 23,12C21.27,7.61 17,4.5 12,4.5Z" /></g><g id="eye-off"><path d="M11.83,9L15,12.16C15,12.11 15,12.05 15,12A3,3 0 0,0 12,9C11.94,9 11.89,9 11.83,9M7.53,9.8L9.08,11.35C9.03,11.56 9,11.77 9,12A3,3 0 0,0 12,15C12.22,15 12.44,14.97 12.65,14.92L14.2,16.47C13.53,16.8 12.79,17 12,17A5,5 0 0,1 7,12C7,11.21 7.2,10.47 7.53,9.8M2,4.27L4.28,6.55L4.73,7C3.08,8.3 1.78,10 1,12C2.73,16.39 7,19.5 12,19.5C13.55,19.5 15.03,19.2 16.38,18.66L16.81,19.08L19.73,22L21,20.73L3.27,3M12,7A5,5 0 0,1 17,12C17,12.64 16.87,13.26 16.64,13.82L19.57,16.75C21.07,15.5 22.27,13.86 23,12C21.27,7.61 17,4.5 12,4.5C10.6,4.5 9.26,4.75 8,5.2L10.17,7.35C10.74,7.13 11.35,7 12,7Z" /></g><g id="eye-outline"><path d="M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9M3.93,12C5.5,14.97 8.58,16.83 12,16.83C15.42,16.83 18.5,14.97 20.07,12C18.5,9.03 15.42,7.17 12,7.17C8.58,7.17 5.5,9.03 3.93,12M12,4.5C17,4.5 21.27,7.61 23,12C21.27,16.39 17,19.5 12,19.5C7,19.5 2.73,16.39 1,12C2.73,7.61 7,4.5 12,4.5Z" /></g><g id="eye-outline-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L15.65,18.92C14.5,19.3 13.28,19.5 12,19.5C7,19.5 2.73,16.39 1,12C1.69,10.24 2.79,8.69 4.19,7.46L2,5.27M12,9A3,3 0 0,1 15,12C15,12.35 14.94,12.69 14.83,13L11,9.17C11.31,9.06 11.65,9 12,9M3.93,12C5.5,14.97 8.58,16.83 12,16.83C12.5,16.83 13,16.79 13.45,16.72L11.72,15C10.29,14.85 9.15,13.71 9,12.28L6.07,9.34C5.21,10.07 4.5,10.97 3.93,12M20.07,12C18.5,9.03 15.42,7.17 12,7.17C11.09,7.17 10.21,7.3 9.37,7.55L7.3,5.47C8.74,4.85 10.33,4.5 12,4.5C17,4.5 21.27,7.61 23,12C22.18,14.08 20.79,15.88 19,17.19L17.11,15.29C18.33,14.46 19.35,13.35 20.07,12Z" /></g><g id="eyedropper"><path d="M19.35,11.72L17.22,13.85L15.81,12.43L8.1,20.14L3.5,22L2,20.5L3.86,15.9L11.57,8.19L10.15,6.78L12.28,4.65L19.35,11.72M16.76,3C17.93,1.83 19.83,1.83 21,3C22.17,4.17 22.17,6.07 21,7.24L19.08,9.16L14.84,4.92L16.76,3M5.56,17.03L4.5,19.5L6.97,18.44L14.4,11L13,9.6L5.56,17.03Z" /></g><g id="eyedropper-variant"><path d="M6.92,19L5,17.08L13.06,9L15,10.94M20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L13.84,6.41L11.91,4.5L10.5,5.91L11.92,7.33L3,16.25V21H7.75L16.67,12.08L18.09,13.5L19.5,12.09L17.58,10.17L20.7,7.05C21.1,6.65 21.1,6 20.71,5.63Z" /></g><g id="face"><path d="M9,11.75A1.25,1.25 0 0,0 7.75,13A1.25,1.25 0 0,0 9,14.25A1.25,1.25 0 0,0 10.25,13A1.25,1.25 0 0,0 9,11.75M15,11.75A1.25,1.25 0 0,0 13.75,13A1.25,1.25 0 0,0 15,14.25A1.25,1.25 0 0,0 16.25,13A1.25,1.25 0 0,0 15,11.75M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20C7.59,20 4,16.41 4,12C4,11.71 4,11.42 4.05,11.14C6.41,10.09 8.28,8.16 9.26,5.77C11.07,8.33 14.05,10 17.42,10C18.2,10 18.95,9.91 19.67,9.74C19.88,10.45 20,11.21 20,12C20,16.41 16.41,20 12,20Z" /></g><g id="face-profile"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,8.39C13.57,9.4 15.42,10 17.42,10C18.2,10 18.95,9.91 19.67,9.74C19.88,10.45 20,11.21 20,12C20,16.41 16.41,20 12,20C9,20 6.39,18.34 5,15.89L6.75,14V13A1.25,1.25 0 0,1 8,11.75A1.25,1.25 0 0,1 9.25,13V14H12M16,11.75A1.25,1.25 0 0,0 14.75,13A1.25,1.25 0 0,0 16,14.25A1.25,1.25 0 0,0 17.25,13A1.25,1.25 0 0,0 16,11.75Z" /></g><g id="facebook"><path d="M17,2V2H17V6H15C14.31,6 14,6.81 14,7.5V10H14L17,10V14H14V22H10V14H7V10H10V6A4,4 0 0,1 14,2H17Z" /></g><g id="facebook-box"><path d="M19,4V7H17A1,1 0 0,0 16,8V10H19V13H16V20H13V13H11V10H13V7.5C13,5.56 14.57,4 16.5,4M20,2H4A2,2 0 0,0 2,4V20A2,2 0 0,0 4,22H20A2,2 0 0,0 22,20V4C22,2.89 21.1,2 20,2Z" /></g><g id="facebook-messenger"><path d="M12,2C6.5,2 2,6.14 2,11.25C2,14.13 3.42,16.7 5.65,18.4L5.71,22L9.16,20.12L9.13,20.11C10.04,20.36 11,20.5 12,20.5C17.5,20.5 22,16.36 22,11.25C22,6.14 17.5,2 12,2M13.03,14.41L10.54,11.78L5.5,14.41L10.88,8.78L13.46,11.25L18.31,8.78L13.03,14.41Z" /></g><g id="factory"><path d="M4,18V20H8V18H4M4,14V16H14V14H4M10,18V20H14V18H10M16,14V16H20V14H16M16,18V20H20V18H16M2,22V8L7,12V8L12,12V8L17,12L18,2H21L22,12V22H2Z" /></g><g id="fan"><path d="M12,11A1,1 0 0,0 11,12A1,1 0 0,0 12,13A1,1 0 0,0 13,12A1,1 0 0,0 12,11M12.5,2C17,2 17.11,5.57 14.75,6.75C13.76,7.24 13.32,8.29 13.13,9.22C13.61,9.42 14.03,9.73 14.35,10.13C18.05,8.13 22.03,8.92 22.03,12.5C22.03,17 18.46,17.1 17.28,14.73C16.78,13.74 15.72,13.3 14.79,13.11C14.59,13.59 14.28,14 13.88,14.34C15.87,18.03 15.08,22 11.5,22C7,22 6.91,18.42 9.27,17.24C10.25,16.75 10.69,15.71 10.89,14.79C10.4,14.59 9.97,14.27 9.65,13.87C5.96,15.85 2,15.07 2,11.5C2,7 5.56,6.89 6.74,9.26C7.24,10.25 8.29,10.68 9.22,10.87C9.41,10.39 9.73,9.97 10.14,9.65C8.15,5.96 8.94,2 12.5,2Z" /></g><g id="fast-forward"><path d="M13,6V18L21.5,12M4,18L12.5,12L4,6V18Z" /></g><g id="fast-forward-outline"><path d="M15,9.9L18,12L15,14.1V9.9M6,9.9L9,12L6,14.1V9.9M13,6V18L21.5,12L13,6M4,6V18L12.5,12L4,6Z" /></g><g id="fax"><path d="M6,2A1,1 0 0,0 5,3V7H6V5H8V4H6V3H8V2H6M11,2A1,1 0 0,0 10,3V7H11V5H12V7H13V3A1,1 0 0,0 12,2H11M15,2L16.42,4.5L15,7H16.13L17,5.5L17.87,7H19L17.58,4.5L19,2H17.87L17,3.5L16.13,2H15M11,3H12V4H11V3M5,9A3,3 0 0,0 2,12V18H6V22H18V18H22V12A3,3 0 0,0 19,9H5M19,11A1,1 0 0,1 20,12A1,1 0 0,1 19,13A1,1 0 0,1 18,12A1,1 0 0,1 19,11M8,15H16V20H8V15Z" /></g><g id="feather"><path d="M22,2C22,2 14.36,1.63 8.34,9.88C3.72,16.21 2,22 2,22L3.94,21C5.38,18.5 6.13,17.47 7.54,16C10.07,16.74 12.71,16.65 15,14C13,13.44 11.4,13.57 9.04,13.81C11.69,12 13.5,11.6 16,12L17,10C15.2,9.66 14,9.63 12.22,10.04C14.19,8.65 15.56,7.87 18,8L19.21,6.07C17.65,5.96 16.71,6.13 14.92,6.57C16.53,5.11 18,4.45 20.14,4.32C20.14,4.32 21.19,2.43 22,2Z" /></g><g id="ferry"><path d="M6,6H18V9.96L12,8L6,9.96M3.94,19H4C5.6,19 7,18.12 8,17C9,18.12 10.4,19 12,19C13.6,19 15,18.12 16,17C17,18.12 18.4,19 20,19H20.05L21.95,12.31C22.03,12.06 22,11.78 21.89,11.54C21.76,11.3 21.55,11.12 21.29,11.04L20,10.62V6C20,4.89 19.1,4 18,4H15V1H9V4H6A2,2 0 0,0 4,6V10.62L2.71,11.04C2.45,11.12 2.24,11.3 2.11,11.54C2,11.78 1.97,12.06 2.05,12.31M20,21C18.61,21 17.22,20.53 16,19.67C13.56,21.38 10.44,21.38 8,19.67C6.78,20.53 5.39,21 4,21H2V23H4C5.37,23 6.74,22.65 8,22C10.5,23.3 13.5,23.3 16,22C17.26,22.65 18.62,23 20,23H22V21H20Z" /></g><g id="file"><path d="M13,9V3.5L18.5,9M6,2C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6Z" /></g><g id="file-chart"><path d="M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M7,20H9V14H7V20M11,20H13V12H11V20M15,20H17V16H15V20Z" /></g><g id="file-check"><path d="M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M10.45,18.46L15.2,13.71L14.03,12.3L10.45,15.88L8.86,14.3L7.7,15.46L10.45,18.46Z" /></g><g id="file-cloud"><path d="M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M15.68,15C15.34,13.3 13.82,12 12,12C10.55,12 9.3,12.82 8.68,14C7.17,14.18 6,15.45 6,17A3,3 0 0,0 9,20H15.5A2.5,2.5 0 0,0 18,17.5C18,16.18 16.97,15.11 15.68,15Z" /></g><g id="file-delimited"><path d="M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M14,15V11H10V15H12.3C12.6,17 12,18 9.7,19.38L10.85,20.2C13,19 14,16 14,15Z" /></g><g id="file-document"><path d="M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M15,18V16H6V18H15M18,14V12H6V14H18Z" /></g><g id="file-document-box"><path d="M14,17H7V15H14M17,13H7V11H17M17,9H7V7H17M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="file-excel"><path d="M6,2H14L20,8V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M13,3.5V9H18.5L13,3.5M17,11H13V13H14L12,14.67L10,13H11V11H7V13H8L11,15.5L8,18H7V20H11V18H10L12,16.33L14,18H13V20H17V18H16L13,15.5L16,13H17V11Z" /></g><g id="file-excel-box"><path d="M16.2,17H14.2L12,13.2L9.8,17H7.8L11,12L7.8,7H9.8L12,10.8L14.2,7H16.2L13,12M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="file-export"><path d="M6,2C4.89,2 4,2.9 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M13,3.5L18.5,9H13M8.93,12.22H16V19.29L13.88,17.17L11.05,20L8.22,17.17L11.05,14.35" /></g><g id="file-find"><path d="M9,13A3,3 0 0,0 12,16A3,3 0 0,0 15,13A3,3 0 0,0 12,10A3,3 0 0,0 9,13M20,19.59V8L14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18C18.45,22 18.85,21.85 19.19,21.6L14.76,17.17C13.96,17.69 13,18 12,18A5,5 0 0,1 7,13A5,5 0 0,1 12,8A5,5 0 0,1 17,13C17,14 16.69,14.96 16.17,15.75L20,19.59Z" /></g><g id="file-hidden"><path d="M13,9H14V11H11V7H13V9M18.5,9L16.38,6.88L17.63,5.63L20,8V10H18V11H15V9H18.5M13,3.5V2H12V4H13V6H11V4H9V2H8V4H6V5H4V4C4,2.89 4.89,2 6,2H14L16.36,4.36L15.11,5.61L13,3.5M20,20A2,2 0 0,1 18,22H16V20H18V19H20V20M18,15H20V18H18V15M12,22V20H15V22H12M8,22V20H11V22H8M6,22C4.89,22 4,21.1 4,20V18H6V20H7V22H6M4,14H6V17H4V14M4,10H6V13H4V10M18,11H20V14H18V11M4,6H6V9H4V6Z" /></g><g id="file-image"><path d="M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M6,20H15L18,20V12L14,16L12,14L6,20M8,9A2,2 0 0,0 6,11A2,2 0 0,0 8,13A2,2 0 0,0 10,11A2,2 0 0,0 8,9Z" /></g><g id="file-import"><path d="M6,2C4.89,2 4,2.9 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M13,3.5L18.5,9H13M10.05,11.22L12.88,14.05L15,11.93V19H7.93L10.05,16.88L7.22,14.05" /></g><g id="file-lock"><path d="M6,2C4.89,2 4,2.9 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6M13,3.5L18.5,9H13V3.5M12,11A3,3 0 0,1 15,14V15H16V19H8V15H9V14C9,12.36 10.34,11 12,11M12,13A1,1 0 0,0 11,14V15H13V14C13,13.47 12.55,13 12,13Z" /></g><g id="file-multiple"><path d="M15,7H20.5L15,1.5V7M8,0H16L22,6V18A2,2 0 0,1 20,20H8C6.89,20 6,19.1 6,18V2A2,2 0 0,1 8,0M4,4V22H20V24H4A2,2 0 0,1 2,22V4H4Z" /></g><g id="file-music"><path d="M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M9,16A2,2 0 0,0 7,18A2,2 0 0,0 9,20A2,2 0 0,0 11,18V13H14V11H10V16.27C9.71,16.1 9.36,16 9,16Z" /></g><g id="file-outline"><path d="M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M11,4H6V20H11L18,20V11H11V4Z" /></g><g id="file-pdf"><path d="M14,9H19.5L14,3.5V9M7,2H15L21,8V20A2,2 0 0,1 19,22H7C5.89,22 5,21.1 5,20V4A2,2 0 0,1 7,2M11.93,12.44C12.34,13.34 12.86,14.08 13.46,14.59L13.87,14.91C13,15.07 11.8,15.35 10.53,15.84V15.84L10.42,15.88L10.92,14.84C11.37,13.97 11.7,13.18 11.93,12.44M18.41,16.25C18.59,16.07 18.68,15.84 18.69,15.59C18.72,15.39 18.67,15.2 18.57,15.04C18.28,14.57 17.53,14.35 16.29,14.35L15,14.42L14.13,13.84C13.5,13.32 12.93,12.41 12.53,11.28L12.57,11.14C12.9,9.81 13.21,8.2 12.55,7.54C12.39,7.38 12.17,7.3 11.94,7.3H11.7C11.33,7.3 11,7.69 10.91,8.07C10.54,9.4 10.76,10.13 11.13,11.34V11.35C10.88,12.23 10.56,13.25 10.05,14.28L9.09,16.08L8.2,16.57C7,17.32 6.43,18.16 6.32,18.69C6.28,18.88 6.3,19.05 6.37,19.23L6.4,19.28L6.88,19.59L7.32,19.7C8.13,19.7 9.05,18.75 10.29,16.63L10.47,16.56C11.5,16.23 12.78,16 14.5,15.81C15.53,16.32 16.74,16.55 17.5,16.55C17.94,16.55 18.24,16.44 18.41,16.25M18,15.54L18.09,15.65C18.08,15.75 18.05,15.76 18,15.78H17.96L17.77,15.8C17.31,15.8 16.6,15.61 15.87,15.29C15.96,15.19 16,15.19 16.1,15.19C17.5,15.19 17.9,15.44 18,15.54M8.83,17C8.18,18.19 7.59,18.85 7.14,19C7.19,18.62 7.64,17.96 8.35,17.31L8.83,17M11.85,10.09C11.62,9.19 11.61,8.46 11.78,8.04L11.85,7.92L12,7.97C12.17,8.21 12.19,8.53 12.09,9.07L12.06,9.23L11.9,10.05L11.85,10.09Z" /></g><g id="file-pdf-box"><path d="M11.43,10.94C11.2,11.68 10.87,12.47 10.42,13.34C10.22,13.72 10,14.08 9.92,14.38L10.03,14.34V14.34C11.3,13.85 12.5,13.57 13.37,13.41C13.22,13.31 13.08,13.2 12.96,13.09C12.36,12.58 11.84,11.84 11.43,10.94M17.91,14.75C17.74,14.94 17.44,15.05 17,15.05C16.24,15.05 15,14.82 14,14.31C12.28,14.5 11,14.73 9.97,15.06C9.92,15.08 9.86,15.1 9.79,15.13C8.55,17.25 7.63,18.2 6.82,18.2C6.66,18.2 6.5,18.16 6.38,18.09L5.9,17.78L5.87,17.73C5.8,17.55 5.78,17.38 5.82,17.19C5.93,16.66 6.5,15.82 7.7,15.07C7.89,14.93 8.19,14.77 8.59,14.58C8.89,14.06 9.21,13.45 9.55,12.78C10.06,11.75 10.38,10.73 10.63,9.85V9.84C10.26,8.63 10.04,7.9 10.41,6.57C10.5,6.19 10.83,5.8 11.2,5.8H11.44C11.67,5.8 11.89,5.88 12.05,6.04C12.71,6.7 12.4,8.31 12.07,9.64C12.05,9.7 12.04,9.75 12.03,9.78C12.43,10.91 13,11.82 13.63,12.34C13.89,12.54 14.18,12.74 14.5,12.92C14.95,12.87 15.38,12.85 15.79,12.85C17.03,12.85 17.78,13.07 18.07,13.54C18.17,13.7 18.22,13.89 18.19,14.09C18.18,14.34 18.09,14.57 17.91,14.75M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M17.5,14.04C17.4,13.94 17,13.69 15.6,13.69C15.53,13.69 15.46,13.69 15.37,13.79C16.1,14.11 16.81,14.3 17.27,14.3C17.34,14.3 17.4,14.29 17.46,14.28H17.5C17.55,14.26 17.58,14.25 17.59,14.15C17.57,14.12 17.55,14.08 17.5,14.04M8.33,15.5C8.12,15.62 7.95,15.73 7.85,15.81C7.14,16.46 6.69,17.12 6.64,17.5C7.09,17.35 7.68,16.69 8.33,15.5M11.35,8.59L11.4,8.55C11.47,8.23 11.5,7.95 11.56,7.73L11.59,7.57C11.69,7 11.67,6.71 11.5,6.47L11.35,6.42C11.33,6.45 11.3,6.5 11.28,6.54C11.11,6.96 11.12,7.69 11.35,8.59Z" /></g><g id="file-powerpoint"><path d="M6,2H14L20,8V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M13,3.5V9H18.5L13,3.5M8,11V13H9V19H8V20H12V19H11V17H13A3,3 0 0,0 16,14A3,3 0 0,0 13,11H8M13,13A1,1 0 0,1 14,14A1,1 0 0,1 13,15H11V13H13Z" /></g><g id="file-powerpoint-box"><path d="M9.8,13.4H12.3C13.8,13.4 14.46,13.12 15.1,12.58C15.74,12.03 16,11.25 16,10.23C16,9.26 15.75,8.5 15.1,7.88C14.45,7.29 13.83,7 12.3,7H8V17H9.8V13.4M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5C3,3.89 3.9,3 5,3H19M9.8,12V8.4H12.1C12.76,8.4 13.27,8.65 13.6,9C13.93,9.35 14.1,9.72 14.1,10.24C14.1,10.8 13.92,11.19 13.6,11.5C13.28,11.81 12.9,12 12.22,12H9.8Z" /></g><g id="file-presentation-box"><path d="M19,16H5V8H19M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="file-restore"><path d="M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M12,18C9.95,18 8.19,16.76 7.42,15H9.13C9.76,15.9 10.81,16.5 12,16.5A3.5,3.5 0 0,0 15.5,13A3.5,3.5 0 0,0 12,9.5C10.65,9.5 9.5,10.28 8.9,11.4L10.5,13H6.5V9L7.8,10.3C8.69,8.92 10.23,8 12,8A5,5 0 0,1 17,13A5,5 0 0,1 12,18Z" /></g><g id="file-send"><path d="M14,2H6C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M12.54,19.37V17.37H8.54V15.38H12.54V13.38L15.54,16.38L12.54,19.37M13,9V3.5L18.5,9H13Z" /></g><g id="file-tree"><path d="M3,3H9V7H3V3M15,10H21V14H15V10M15,17H21V21H15V17M13,13H7V18H13V20H7L5,20V9H7V11H13V13Z" /></g><g id="file-video"><path d="M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M17,19V13L14,15.2V13H7V19H14V16.8L17,19Z" /></g><g id="file-word"><path d="M6,2H14L20,8V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M13,3.5V9H18.5L13,3.5M7,13L8.5,20H10.5L12,17L13.5,20H15.5L17,13H18V11H14V13H15L14.1,17.2L13,15V15H11V15L9.9,17.2L9,13H10V11H6V13H7Z" /></g><g id="file-word-box"><path d="M15.5,17H14L12,9.5L10,17H8.5L6.1,7H7.8L9.34,14.5L11.3,7H12.7L14.67,14.5L16.2,7H17.9M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="file-xml"><path d="M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M6.12,15.5L9.86,19.24L11.28,17.83L8.95,15.5L11.28,13.17L9.86,11.76L6.12,15.5M17.28,15.5L13.54,11.76L12.12,13.17L14.45,15.5L12.12,17.83L13.54,19.24L17.28,15.5Z" /></g><g id="film"><path d="M3.5,3H5V1.8C5,1.36 5.36,1 5.8,1H10.2C10.64,1 11,1.36 11,1.8V3H12.5A1.5,1.5 0 0,1 14,4.5V5H22V20H14V20.5A1.5,1.5 0 0,1 12.5,22H3.5A1.5,1.5 0 0,1 2,20.5V4.5A1.5,1.5 0 0,1 3.5,3M18,7V9H20V7H18M14,7V9H16V7H14M10,7V9H12V7H10M14,16V18H16V16H14M18,16V18H20V16H18M10,16V18H12V16H10Z" /></g><g id="filmstrip"><path d="M18,9H16V7H18M18,13H16V11H18M18,17H16V15H18M8,9H6V7H8M8,13H6V11H8M8,17H6V15H8M18,3V5H16V3H8V5H6V3H4V21H6V19H8V21H16V19H18V21H20V3H18Z" /></g><g id="filmstrip-off"><path d="M1,4.27L2.28,3L21,21.72L19.73,23L16,19.27V21H8V19H6V21H4V7.27L1,4.27M18,9V7H16V9H18M18,13V11H16V13H18M18,15H16.82L6.82,5H8V3H16V5H18V3H20V18.18L18,16.18V15M8,13V11.27L7.73,11H6V13H8M8,17V15H6V17H8M6,3V4.18L4.82,3H6Z" /></g><g id="filter"><path d="M3,2H21V2H21V4H20.92L14,10.92V22.91L10,18.91V10.91L3.09,4H3V2Z" /></g><g id="filter-outline"><path d="M3,2H21V2H21V4H20.92L15,9.92V22.91L9,16.91V9.91L3.09,4H3V2M11,16.08L13,18.08V9H13.09L18.09,4H5.92L10.92,9H11V16.08Z" /></g><g id="filter-remove"><path d="M14.76,20.83L17.6,18L14.76,15.17L16.17,13.76L19,16.57L21.83,13.76L23.24,15.17L20.43,18L23.24,20.83L21.83,22.24L19,19.4L16.17,22.24L14.76,20.83M2,2H20V2H20V4H19.92L13,10.92V22.91L9,18.91V10.91L2.09,4H2V2Z" /></g><g id="filter-remove-outline"><path d="M14.73,20.83L17.58,18L14.73,15.17L16.15,13.76L19,16.57L21.8,13.76L23.22,15.17L20.41,18L23.22,20.83L21.8,22.24L19,19.4L16.15,22.24L14.73,20.83M2,2H20V2H20V4H19.92L14,9.92V22.91L8,16.91V9.91L2.09,4H2V2M10,16.08L12,18.08V9H12.09L17.09,4H4.92L9.92,9H10V16.08Z" /></g><g id="filter-variant"><path d="M6,13H18V11H6M3,6V8H21V6M10,18H14V16H10V18Z" /></g><g id="fingerprint"><path d="M11.83,1.73C8.43,1.79 6.23,3.32 6.23,3.32C5.95,3.5 5.88,3.91 6.07,4.19C6.27,4.5 6.66,4.55 6.96,4.34C6.96,4.34 11.27,1.15 17.46,4.38C17.75,4.55 18.14,4.45 18.31,4.15C18.5,3.85 18.37,3.47 18.03,3.28C16.36,2.4 14.78,1.96 13.36,1.8C12.83,1.74 12.32,1.72 11.83,1.73M12.22,4.34C6.26,4.26 3.41,9.05 3.41,9.05C3.22,9.34 3.3,9.72 3.58,9.91C3.87,10.1 4.26,10 4.5,9.68C4.5,9.68 6.92,5.5 12.2,5.59C17.5,5.66 19.82,9.65 19.82,9.65C20,9.94 20.38,10.04 20.68,9.87C21,9.69 21.07,9.31 20.9,9C20.9,9 18.15,4.42 12.22,4.34M11.5,6.82C9.82,6.94 8.21,7.55 7,8.56C4.62,10.53 3.1,14.14 4.77,19C4.88,19.33 5.24,19.5 5.57,19.39C5.89,19.28 6.07,18.92 5.95,18.6V18.6C4.41,14.13 5.78,11.2 7.8,9.5C9.77,7.89 13.25,7.5 15.84,9.1C17.11,9.9 18.1,11.28 18.6,12.64C19.11,14 19.08,15.32 18.67,15.94C18.25,16.59 17.4,16.83 16.65,16.64C15.9,16.45 15.29,15.91 15.26,14.77C15.23,13.06 13.89,12 12.5,11.84C11.16,11.68 9.61,12.4 9.21,14C8.45,16.92 10.36,21.07 14.78,22.45C15.11,22.55 15.46,22.37 15.57,22.04C15.67,21.71 15.5,21.35 15.15,21.25C11.32,20.06 9.87,16.43 10.42,14.29C10.66,13.33 11.5,13 12.38,13.08C13.25,13.18 14,13.7 14,14.79C14.05,16.43 15.12,17.54 16.34,17.85C17.56,18.16 18.97,17.77 19.72,16.62C20.5,15.45 20.37,13.8 19.78,12.21C19.18,10.61 18.07,9.03 16.5,8.04C14.96,7.08 13.19,6.7 11.5,6.82M11.86,9.25V9.26C10.08,9.32 8.3,10.24 7.28,12.18C5.96,14.67 6.56,17.21 7.44,19.04C8.33,20.88 9.54,22.1 9.54,22.1C9.78,22.35 10.17,22.35 10.42,22.11C10.67,21.87 10.67,21.5 10.43,21.23C10.43,21.23 9.36,20.13 8.57,18.5C7.78,16.87 7.3,14.81 8.38,12.77C9.5,10.67 11.5,10.16 13.26,10.67C15.04,11.19 16.53,12.74 16.5,15.03C16.46,15.38 16.71,15.68 17.06,15.7C17.4,15.73 17.7,15.47 17.73,15.06C17.79,12.2 15.87,10.13 13.61,9.47C13.04,9.31 12.45,9.23 11.86,9.25M12.08,14.25C11.73,14.26 11.46,14.55 11.47,14.89C11.47,14.89 11.5,16.37 12.31,17.8C13.15,19.23 14.93,20.59 18.03,20.3C18.37,20.28 18.64,20 18.62,19.64C18.6,19.29 18.3,19.03 17.91,19.06C15.19,19.31 14.04,18.28 13.39,17.17C12.74,16.07 12.72,14.88 12.72,14.88C12.72,14.53 12.44,14.25 12.08,14.25Z" /></g><g id="fire"><path d="M11.71,19C9.93,19 8.5,17.59 8.5,15.86C8.5,14.24 9.53,13.1 11.3,12.74C13.07,12.38 14.9,11.53 15.92,10.16C16.31,11.45 16.5,12.81 16.5,14.2C16.5,16.84 14.36,19 11.71,19M13.5,0.67C13.5,0.67 14.24,3.32 14.24,5.47C14.24,7.53 12.89,9.2 10.83,9.2C8.76,9.2 7.2,7.53 7.2,5.47L7.23,5.1C5.21,7.5 4,10.61 4,14A8,8 0 0,0 12,22A8,8 0 0,0 20,14C20,8.6 17.41,3.8 13.5,0.67Z" /></g><g id="firefox"><path d="M21,11.7C21,11.3 20.9,10.7 20.8,10.3C20.5,8.6 19.6,7.1 18.5,5.9C18.3,5.6 17.9,5.3 17.5,5C16.4,4.1 15.1,3.5 13.6,3.2C10.6,2.7 7.6,3.7 5.6,5.8C5.6,5.8 5.6,5.7 5.6,5.7C5.5,5.5 5.5,5.5 5.4,5.5C5.4,5.5 5.4,5.5 5.4,5.5C5.3,5.3 5.3,5.2 5.2,5.1C5.2,5.1 5.2,5.1 5.2,5.1C5.2,4.9 5.1,4.7 5.1,4.5C4.8,4.6 4.8,4.9 4.7,5.1C4.7,5.1 4.7,5.1 4.7,5.1C4.5,5.3 4.3,5.6 4.3,5.9C4.3,5.9 4.3,5.9 4.3,5.9C4.2,6.1 4,7 4.2,7.1C4.2,7.1 4.2,7.1 4.3,7.1C4.3,7.2 4.3,7.3 4.3,7.4C4.1,7.6 4,7.7 4,7.8C3.7,8.4 3.4,8.9 3.3,9.5C3.3,9.7 3.3,9.8 3.3,9.9C3.3,9.9 3.3,9.9 3.3,9.9C3.3,9.9 3.3,9.8 3.3,9.8C3.1,10 3.1,10.3 3,10.5C3.1,10.5 3.1,10.4 3.2,10.4C2.7,13 3.4,15.7 5,17.7C7.4,20.6 11.5,21.8 15.1,20.5C18.6,19.2 21,15.8 21,12C21,11.9 21,11.8 21,11.7M13.5,4.1C15,4.4 16.4,5.1 17.5,6.1C17.6,6.2 17.7,6.4 17.7,6.4C17.4,6.1 16.7,5.6 16.3,5.8C16.4,6.1 17.6,7.6 17.7,7.7C17.7,7.7 18,9 18.1,9.1C18.1,9.1 18.1,9.1 18.1,9.1C18.1,9.1 18.1,9.1 18.1,9.1C18.1,9.3 17.4,11.9 17.4,12.3C17.4,12.4 16.5,14.2 16.6,14.2C16.3,14.9 16,14.9 15.9,15C15.8,15 15.2,15.2 14.5,15.4C13.9,15.5 13.2,15.7 12.7,15.6C12.4,15.6 12,15.6 11.7,15.4C11.6,15.3 10.8,14.9 10.6,14.8C10.3,14.7 10.1,14.5 9.9,14.3C10.2,14.3 10.8,14.3 11,14.3C11.6,14.2 14.2,13.3 14.1,12.9C14.1,12.6 13.6,12.4 13.4,12.2C13.1,12.1 11.9,12.3 11.4,12.5C11.4,12.5 9.5,12 9,11.6C9,11.5 8.9,10.9 8.9,10.8C8.8,10.7 9.2,10.4 9.2,10.4C9.2,10.4 10.2,9.4 10.2,9.3C10.4,9.3 10.6,9.1 10.7,9C10.6,9 10.8,8.9 11.1,8.7C11.1,8.7 11.1,8.7 11.1,8.7C11.4,8.5 11.6,8.5 11.6,8.2C11.6,8.2 12.1,7.3 11.5,7.4C11.5,7.4 10.6,7.3 10.3,7.3C10,7.5 9.9,7.4 9.6,7.3C9.6,7.3 9.4,7.1 9.4,7C9.5,6.8 10.2,5.3 10.5,5.2C10.3,4.8 9.3,5.1 9.1,5.4C9.1,5.4 8.3,6 7.9,6.1C7.9,6.1 7.9,6.1 7.9,6.1C7.9,6 7.4,5.9 6.9,5.9C8.7,4.4 11.1,3.7 13.5,4.1Z" /></g><g id="fish"><path d="M12,20L12.76,17C9.5,16.79 6.59,15.4 5.75,13.58C5.66,14.06 5.53,14.5 5.33,14.83C4.67,16 3.33,16 2,16C3.1,16 3.5,14.43 3.5,12.5C3.5,10.57 3.1,9 2,9C3.33,9 4.67,9 5.33,10.17C5.53,10.5 5.66,10.94 5.75,11.42C6.4,10 8.32,8.85 10.66,8.32L9,5C11,5 13,5 14.33,5.67C15.46,6.23 16.11,7.27 16.69,8.38C19.61,9.08 22,10.66 22,12.5C22,14.38 19.5,16 16.5,16.66C15.67,17.76 14.86,18.78 14.17,19.33C13.33,20 12.67,20 12,20M17,11A1,1 0 0,0 16,12A1,1 0 0,0 17,13A1,1 0 0,0 18,12A1,1 0 0,0 17,11Z" /></g><g id="flag"><path d="M14.4,6L14,4H5V21H7V14H12.6L13,16H20V6H14.4Z" /></g><g id="flag-checkered"><path d="M14.4,6H20V16H13L12.6,14H7V21H5V4H14L14.4,6M14,14H16V12H18V10H16V8H14V10L13,8V6H11V8H9V6H7V8H9V10H7V12H9V10H11V12H13V10L14,12V14M11,10V8H13V10H11M14,10H16V12H14V10Z" /></g><g id="flag-outline"><path d="M14.5,6H20V16H13L12.5,14H7V21H5V4H14L14.5,6M7,6V12H13L13.5,14H18V8H14L13.5,6H7Z" /></g><g id="flag-outline-variant"><path d="M6,3A1,1 0 0,1 7,4V4.88C8.06,4.44 9.5,4 11,4C14,4 14,6 16,6C19,6 20,4 20,4V12C20,12 19,14 16,14C13,14 13,12 11,12C8,12 7,14 7,14V21H5V4A1,1 0 0,1 6,3M7,7.25V11.5C7,11.5 9,10 11,10C13,10 14,12 16,12C18,12 18,11 18,11V7.5C18,7.5 17,8 16,8C14,8 13,6 11,6C9,6 7,7.25 7,7.25Z" /></g><g id="flag-triangle"><path d="M7,2H9V22H7V2M19,9L11,14.6V3.4L19,9Z" /></g><g id="flag-variant"><path d="M6,3A1,1 0 0,1 7,4V4.88C8.06,4.44 9.5,4 11,4C14,4 14,6 16,6C19,6 20,4 20,4V12C20,12 19,14 16,14C13,14 13,12 11,12C8,12 7,14 7,14V21H5V4A1,1 0 0,1 6,3Z" /></g><g id="flash"><path d="M7,2V13H10V22L17,10H13L17,2H7Z" /></g><g id="flash-auto"><path d="M16.85,7.65L18,4L19.15,7.65M19,2H17L13.8,11H15.7L16.4,9H19.6L20.3,11H22.2M3,2V14H6V23L13,11H9L13,2H3Z" /></g><g id="flash-off"><path d="M17,10H13L17,2H7V4.18L15.46,12.64M3.27,3L2,4.27L7,9.27V13H10V22L13.58,15.86L17.73,20L19,18.73L3.27,3Z" /></g><g id="flash-outline"><path d="M7,2H17L13.5,9H17L10,22V14H7V2M9,4V12H12V14.66L14,11H10.24L13.76,4H9Z" /></g><g id="flash-red-eye"><path d="M16,5C15.44,5 15,5.44 15,6C15,6.56 15.44,7 16,7C16.56,7 17,6.56 17,6C17,5.44 16.56,5 16,5M16,2C13.27,2 10.94,3.66 10,6C10.94,8.34 13.27,10 16,10C18.73,10 21.06,8.34 22,6C21.06,3.66 18.73,2 16,2M16,3.5A2.5,2.5 0 0,1 18.5,6A2.5,2.5 0 0,1 16,8.5A2.5,2.5 0 0,1 13.5,6A2.5,2.5 0 0,1 16,3.5M3,2V14H6V23L13,11H9L10.12,8.5C9.44,7.76 8.88,6.93 8.5,6C9.19,4.29 10.5,2.88 12.11,2H3Z" /></g><g id="flashlight"><path d="M9,10L6,5H18L15,10H9M18,4H6V2H18V4M9,22V11H15V22H9M12,13A1,1 0 0,0 11,14A1,1 0 0,0 12,15A1,1 0 0,0 13,14A1,1 0 0,0 12,13Z" /></g><g id="flashlight-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L15,18.27V22H9V12.27L2,5.27M18,5L15,10H11.82L6.82,5H18M18,4H6V2H18V4M15,11V13.18L12.82,11H15Z" /></g><g id="flask"><path d="M6,22A3,3 0 0,1 3,19C3,18.4 3.18,17.84 3.5,17.37L9,7.81V6A1,1 0 0,1 8,5V4A2,2 0 0,1 10,2H14A2,2 0 0,1 16,4V5A1,1 0 0,1 15,6V7.81L20.5,17.37C20.82,17.84 21,18.4 21,19A3,3 0 0,1 18,22H6M5,19A1,1 0 0,0 6,20H18A1,1 0 0,0 19,19C19,18.79 18.93,18.59 18.82,18.43L16.53,14.47L14,17L8.93,11.93L5.18,18.43C5.07,18.59 5,18.79 5,19M13,10A1,1 0 0,0 12,11A1,1 0 0,0 13,12A1,1 0 0,0 14,11A1,1 0 0,0 13,10Z" /></g><g id="flask-empty"><path d="M6,22A3,3 0 0,1 3,19C3,18.4 3.18,17.84 3.5,17.37L9,7.81V6A1,1 0 0,1 8,5V4A2,2 0 0,1 10,2H14A2,2 0 0,1 16,4V5A1,1 0 0,1 15,6V7.81L20.5,17.37C20.82,17.84 21,18.4 21,19A3,3 0 0,1 18,22H6Z" /></g><g id="flask-empty-outline"><path d="M5,19A1,1 0 0,0 6,20H18A1,1 0 0,0 19,19C19,18.79 18.93,18.59 18.82,18.43L13,8.35V4H11V8.35L5.18,18.43C5.07,18.59 5,18.79 5,19M6,22A3,3 0 0,1 3,19C3,18.4 3.18,17.84 3.5,17.37L9,7.81V6A1,1 0 0,1 8,5V4A2,2 0 0,1 10,2H14A2,2 0 0,1 16,4V5A1,1 0 0,1 15,6V7.81L20.5,17.37C20.82,17.84 21,18.4 21,19A3,3 0 0,1 18,22H6Z" /></g><g id="flask-outline"><path d="M5,19A1,1 0 0,0 6,20H18A1,1 0 0,0 19,19C19,18.79 18.93,18.59 18.82,18.43L13,8.35V4H11V8.35L5.18,18.43C5.07,18.59 5,18.79 5,19M6,22A3,3 0 0,1 3,19C3,18.4 3.18,17.84 3.5,17.37L9,7.81V6A1,1 0 0,1 8,5V4A2,2 0 0,1 10,2H14A2,2 0 0,1 16,4V5A1,1 0 0,1 15,6V7.81L20.5,17.37C20.82,17.84 21,18.4 21,19A3,3 0 0,1 18,22H6M13,16L14.34,14.66L16.27,18H7.73L10.39,13.39L13,16M12.5,12A0.5,0.5 0 0,1 13,12.5A0.5,0.5 0 0,1 12.5,13A0.5,0.5 0 0,1 12,12.5A0.5,0.5 0 0,1 12.5,12Z" /></g><g id="flattr"><path d="M21,9V15A6,6 0 0,1 15,21H4.41L11.07,14.35C11.38,14.04 11.69,13.73 11.84,13.75C12,13.78 12,14.14 12,14.5V17H14A3,3 0 0,0 17,14V8.41L21,4.41V9M3,15V9A6,6 0 0,1 9,3H19.59L12.93,9.65C12.62,9.96 12.31,10.27 12.16,10.25C12,10.22 12,9.86 12,9.5V7H10A3,3 0 0,0 7,10V15.59L3,19.59V15Z" /></g><g id="flip-to-back"><path d="M15,17H17V15H15M15,5H17V3H15M5,7H3V19A2,2 0 0,0 5,21H17V19H5M19,17A2,2 0 0,0 21,15H19M19,9H21V7H19M19,13H21V11H19M9,17V15H7A2,2 0 0,0 9,17M13,3H11V5H13M19,3V5H21C21,3.89 20.1,3 19,3M13,15H11V17H13M9,3C7.89,3 7,3.89 7,5H9M9,11H7V13H9M9,7H7V9H9V7Z" /></g><g id="flip-to-front"><path d="M7,21H9V19H7M11,21H13V19H11M19,15H9V5H19M19,3H9C7.89,3 7,3.89 7,5V15A2,2 0 0,0 9,17H14L18,17H19A2,2 0 0,0 21,15V5C21,3.89 20.1,3 19,3M15,21H17V19H15M3,9H5V7H3M5,21V19H3A2,2 0 0,0 5,21M3,17H5V15H3M3,13H5V11H3V13Z" /></g><g id="floppy"><path d="M4.5,22L2,19.5V4A2,2 0 0,1 4,2H20A2,2 0 0,1 22,4V20A2,2 0 0,1 20,22H17V15A1,1 0 0,0 16,14H7A1,1 0 0,0 6,15V22H4.5M5,4V10A1,1 0 0,0 6,11H18A1,1 0 0,0 19,10V4H5M8,16H11V20H8V16M20,4V5H21V4H20Z" /></g><g id="flower"><path d="M3,13A9,9 0 0,0 12,22C12,17 7.97,13 3,13M12,5.5A2.5,2.5 0 0,1 14.5,8A2.5,2.5 0 0,1 12,10.5A2.5,2.5 0 0,1 9.5,8A2.5,2.5 0 0,1 12,5.5M5.6,10.25A2.5,2.5 0 0,0 8.1,12.75C8.63,12.75 9.12,12.58 9.5,12.31C9.5,12.37 9.5,12.43 9.5,12.5A2.5,2.5 0 0,0 12,15A2.5,2.5 0 0,0 14.5,12.5C14.5,12.43 14.5,12.37 14.5,12.31C14.88,12.58 15.37,12.75 15.9,12.75C17.28,12.75 18.4,11.63 18.4,10.25C18.4,9.25 17.81,8.4 16.97,8C17.81,7.6 18.4,6.74 18.4,5.75C18.4,4.37 17.28,3.25 15.9,3.25C15.37,3.25 14.88,3.41 14.5,3.69C14.5,3.63 14.5,3.56 14.5,3.5A2.5,2.5 0 0,0 12,1A2.5,2.5 0 0,0 9.5,3.5C9.5,3.56 9.5,3.63 9.5,3.69C9.12,3.41 8.63,3.25 8.1,3.25A2.5,2.5 0 0,0 5.6,5.75C5.6,6.74 6.19,7.6 7.03,8C6.19,8.4 5.6,9.25 5.6,10.25M12,22A9,9 0 0,0 21,13C16,13 12,17 12,22Z" /></g><g id="folder"><path d="M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z" /></g><g id="folder-account"><path d="M19,17H11V16C11,14.67 13.67,14 15,14C16.33,14 19,14.67 19,16M15,9A2,2 0 0,1 17,11A2,2 0 0,1 15,13A2,2 0 0,1 13,11C13,9.89 13.9,9 15,9M20,6H12L10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6Z" /></g><g id="folder-download"><path d="M20,6A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10L12,6H20M19.25,13H16V9H14V13H10.75L15,17.25" /></g><g id="folder-google-drive"><path d="M13.75,9H16.14L19,14H16.05L13.5,9.46M18.3,17H12.75L14.15,14.5H19.27L19.53,14.96M11.5,17L10.4,14.86L13.24,9.9L14.74,12.56L12.25,17M20,6H12L10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6Z" /></g><g id="folder-image"><path d="M5,17L9.5,11L13,15.5L15.5,12.5L19,17M20,6H12L10,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8A2,2 0 0,0 20,6Z" /></g><g id="folder-lock"><path d="M20,6A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10L12,6H20M19,17V13H18V12A3,3 0 0,0 15,9A3,3 0 0,0 12,12V13H11V17H19M15,11A1,1 0 0,1 16,12V13H14V12A1,1 0 0,1 15,11Z" /></g><g id="folder-lock-open"><path d="M20,6A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10L12,6H20M19,17V13H18L16,13H14V11A1,1 0 0,1 15,10A1,1 0 0,1 16,11H18A3,3 0 0,0 15,8A3,3 0 0,0 12,11V13H11V17H19Z" /></g><g id="folder-move"><path d="M9,18V15H5V11H9V8L14,13M20,6H12L10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6Z" /></g><g id="folder-multiple"><path d="M22,4H14L12,2H6A2,2 0 0,0 4,4V16A2,2 0 0,0 6,18H22A2,2 0 0,0 24,16V6A2,2 0 0,0 22,4M2,6H0V11H0V20A2,2 0 0,0 2,22H20V20H2V6Z" /></g><g id="folder-multiple-image"><path d="M7,15L11.5,9L15,13.5L17.5,10.5L21,15M22,4H14L12,2H6A2,2 0 0,0 4,4V16A2,2 0 0,0 6,18H22A2,2 0 0,0 24,16V6A2,2 0 0,0 22,4M2,6H0V11H0V20A2,2 0 0,0 2,22H20V20H2V6Z" /></g><g id="folder-multiple-outline"><path d="M22,4A2,2 0 0,1 24,6V16A2,2 0 0,1 22,18H6A2,2 0 0,1 4,16V4A2,2 0 0,1 6,2H12L14,4H22M2,6V20H20V22H2A2,2 0 0,1 0,20V11H0V6H2M6,6V16H22V6H6Z" /></g><g id="folder-outline"><path d="M20,18H4V8H20M20,6H12L10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6Z" /></g><g id="folder-plus"><path d="M10,4L12,6H20A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10M15,9V12H12V14H15V17H17V14H20V12H17V9H15Z" /></g><g id="folder-remove"><path d="M10,4L12,6H20A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10M12.46,10.88L14.59,13L12.46,15.12L13.88,16.54L16,14.41L18.12,16.54L19.54,15.12L17.41,13L19.54,10.88L18.12,9.46L16,11.59L13.88,9.46L12.46,10.88Z" /></g><g id="folder-star"><path d="M20,6H12L10,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8A2,2 0 0,0 20,6M17.94,17L15,15.28L12.06,17L12.84,13.67L10.25,11.43L13.66,11.14L15,8L16.34,11.14L19.75,11.43L17.16,13.67L17.94,17Z" /></g><g id="folder-upload"><path d="M20,6A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H10L12,6H20M10.75,13H14V17H16V13H19.25L15,8.75" /></g><g id="food"><path d="M15.5,21L14,8H16.23L15.1,3.46L16.84,3L18.09,8H22L20.5,21H15.5M5,11H10A3,3 0 0,1 13,14H2A3,3 0 0,1 5,11M13,18A3,3 0 0,1 10,21H5A3,3 0 0,1 2,18H13M3,15H8L9.5,16.5L11,15H12A1,1 0 0,1 13,16A1,1 0 0,1 12,17H3A1,1 0 0,1 2,16A1,1 0 0,1 3,15Z" /></g><g id="food-apple"><path d="M20,10C22,13 17,22 15,22C13,22 13,21 12,21C11,21 11,22 9,22C7,22 2,13 4,10C6,7 9,7 11,8V5C5.38,8.07 4.11,3.78 4.11,3.78C4.11,3.78 6.77,0.19 11,5V3H13V8C15,7 18,7 20,10Z" /></g><g id="food-fork-drink"><path d="M3,3A1,1 0 0,0 2,4V8L2,9.5C2,11.19 3.03,12.63 4.5,13.22V19.5A1.5,1.5 0 0,0 6,21A1.5,1.5 0 0,0 7.5,19.5V13.22C8.97,12.63 10,11.19 10,9.5V8L10,4A1,1 0 0,0 9,3A1,1 0 0,0 8,4V8A0.5,0.5 0 0,1 7.5,8.5A0.5,0.5 0 0,1 7,8V4A1,1 0 0,0 6,3A1,1 0 0,0 5,4V8A0.5,0.5 0 0,1 4.5,8.5A0.5,0.5 0 0,1 4,8V4A1,1 0 0,0 3,3M19.88,3C19.75,3 19.62,3.09 19.5,3.16L16,5.25V9H12V11H13L14,21H20L21,11H22V9H18V6.34L20.5,4.84C21,4.56 21.13,4 20.84,3.5C20.63,3.14 20.26,2.95 19.88,3Z" /></g><g id="food-off"><path d="M2,5.27L3.28,4L21,21.72L19.73,23L17.73,21H15.5L15.21,18.5L12.97,16.24C12.86,16.68 12.47,17 12,17H3A1,1 0 0,1 2,16A1,1 0 0,1 3,15H8L9.5,16.5L11,15H11.73L10.73,14H2A3,3 0 0,1 5,11H7.73L2,5.27M14,8H16.23L15.1,3.46L16.84,3L18.09,8H22L20.74,18.92L14.54,12.72L14,8M13,18A3,3 0 0,1 10,21H5A3,3 0 0,1 2,18H13Z" /></g><g id="food-variant"><path d="M22,18A4,4 0 0,1 18,22H15A4,4 0 0,1 11,18V16H17.79L20.55,11.23L22.11,12.13L19.87,16H22V18M9,22H2C2,19 2,16 2.33,12.83C2.6,10.3 3.08,7.66 3.6,5H3V3H4L7,3H8V5H7.4C7.92,7.66 8.4,10.3 8.67,12.83C9,16 9,19 9,22Z" /></g><g id="football"><path d="M7.5,7.5C9.17,5.87 11.29,4.69 13.37,4.18C15.46,3.67 17.5,3.83 18.6,4C19.71,4.15 19.87,4.31 20.03,5.41C20.18,6.5 20.33,8.55 19.82,10.63C19.31,12.71 18.13,14.83 16.5,16.5C14.83,18.13 12.71,19.31 10.63,19.82C8.55,20.33 6.5,20.18 5.41,20.03C4.31,19.87 4.15,19.71 4,18.6C3.83,17.5 3.67,15.46 4.18,13.37C4.69,11.29 5.87,9.17 7.5,7.5M7.3,15.79L8.21,16.7L9.42,15.5L10.63,16.7L11.54,15.79L10.34,14.58L12,12.91L13.21,14.12L14.12,13.21L12.91,12L14.58,10.34L15.79,11.54L16.7,10.63L15.5,9.42L16.7,8.21L15.79,7.3L14.58,8.5L13.37,7.3L12.46,8.21L13.66,9.42L12,11.09L10.79,9.88L9.88,10.79L11.09,12L9.42,13.66L8.21,12.46L7.3,13.37L8.5,14.58L7.3,15.79Z" /></g><g id="football-australian"><path d="M7.5,7.5C9.17,5.87 11.29,4.69 13.37,4.18C18,3 21,6 19.82,10.63C19.31,12.71 18.13,14.83 16.5,16.5C14.83,18.13 12.71,19.31 10.63,19.82C6,21 3,18 4.18,13.37C4.69,11.29 5.87,9.17 7.5,7.5M10.62,11.26L10.26,11.62L12.38,13.74L12.74,13.38L10.62,11.26M11.62,10.26L11.26,10.62L13.38,12.74L13.74,12.38L11.62,10.26M9.62,12.26L9.26,12.62L11.38,14.74L11.74,14.38L9.62,12.26M12.63,9.28L12.28,9.63L14.4,11.75L14.75,11.4L12.63,9.28M8.63,13.28L8.28,13.63L10.4,15.75L10.75,15.4L8.63,13.28M13.63,8.28L13.28,8.63L15.4,10.75L15.75,10.4L13.63,8.28Z" /></g><g id="football-helmet"><path d="M13.5,12A1.5,1.5 0 0,0 12,13.5A1.5,1.5 0 0,0 13.5,15A1.5,1.5 0 0,0 15,13.5A1.5,1.5 0 0,0 13.5,12M13.5,3C18.19,3 22,6.58 22,11C22,12.62 22,14 21.09,16C17,16 16,20 12.5,20C10.32,20 9.27,18.28 9.05,16H9L8.24,16L6.96,20.3C6.81,20.79 6.33,21.08 5.84,21H3A1,1 0 0,1 2,20A1,1 0 0,1 3,19V16A1,1 0 0,1 2,15A1,1 0 0,1 3,14H6.75L7.23,12.39C6.72,12.14 6.13,12 5.5,12H5.07L5,11C5,6.58 8.81,3 13.5,3M5,16V19H5.26L6.15,16H5Z" /></g><g id="format-align-center"><path d="M3,3H21V5H3V3M7,7H17V9H7V7M3,11H21V13H3V11M7,15H17V17H7V15M3,19H21V21H3V19Z" /></g><g id="format-align-justify"><path d="M3,3H21V5H3V3M3,7H21V9H3V7M3,11H21V13H3V11M3,15H21V17H3V15M3,19H21V21H3V19Z" /></g><g id="format-align-left"><path d="M3,3H21V5H3V3M3,7H15V9H3V7M3,11H21V13H3V11M3,15H15V17H3V15M3,19H21V21H3V19Z" /></g><g id="format-align-right"><path d="M3,3H21V5H3V3M9,7H21V9H9V7M3,11H21V13H3V11M9,15H21V17H9V15M3,19H21V21H3V19Z" /></g><g id="format-annotation-plus"><path d="M8.5,7H10.5L16,21H13.6L12.5,18H6.3L5.2,21H3L8.5,7M7.1,16H11.9L9.5,9.7L7.1,16M22,5V7H19V10H17V7H14V5H17V2H19V5H22Z" /></g><g id="format-bold"><path d="M13.5,15.5H10V12.5H13.5A1.5,1.5 0 0,1 15,14A1.5,1.5 0 0,1 13.5,15.5M10,6.5H13A1.5,1.5 0 0,1 14.5,8A1.5,1.5 0 0,1 13,9.5H10M15.6,10.79C16.57,10.11 17.25,9 17.25,8C17.25,5.74 15.5,4 13.25,4H7V18H14.04C16.14,18 17.75,16.3 17.75,14.21C17.75,12.69 16.89,11.39 15.6,10.79Z" /></g><g id="format-clear"><path d="M6,5V5.18L8.82,8H11.22L10.5,9.68L12.6,11.78L14.21,8H20V5H6M3.27,5L2,6.27L8.97,13.24L6.5,19H9.5L11.07,15.34L16.73,21L18,19.73L3.55,5.27L3.27,5Z" /></g><g id="format-color-fill"><path d="M19,11.5C19,11.5 17,13.67 17,15A2,2 0 0,0 19,17A2,2 0 0,0 21,15C21,13.67 19,11.5 19,11.5M5.21,10L10,5.21L14.79,10M16.56,8.94L7.62,0L6.21,1.41L8.59,3.79L3.44,8.94C2.85,9.5 2.85,10.47 3.44,11.06L8.94,16.56C9.23,16.85 9.62,17 10,17C10.38,17 10.77,16.85 11.06,16.56L16.56,11.06C17.15,10.47 17.15,9.5 16.56,8.94Z" /></g><g id="format-color-text"><path d="M9.62,12L12,5.67L14.37,12M11,3L5.5,17H7.75L8.87,14H15.12L16.25,17H18.5L13,3H11Z" /></g><g id="format-float-center"><path d="M9,7H15V13H9V7M3,3H21V5H3V3M3,15H21V17H3V15M3,19H17V21H3V19Z" /></g><g id="format-float-left"><path d="M3,7H9V13H3V7M3,3H21V5H3V3M21,7V9H11V7H21M21,11V13H11V11H21M3,15H17V17H3V15M3,19H21V21H3V19Z" /></g><g id="format-float-none"><path d="M3,7H9V13H3V7M3,3H21V5H3V3M21,11V13H11V11H21M3,15H17V17H3V15M3,19H21V21H3V19Z" /></g><g id="format-float-right"><path d="M15,7H21V13H15V7M3,3H21V5H3V3M13,7V9H3V7H13M9,11V13H3V11H9M3,15H17V17H3V15M3,19H21V21H3V19Z" /></g><g id="format-header-1"><path d="M3,4H5V10H9V4H11V18H9V12H5V18H3V4M14,18V16H16V6.31L13.5,7.75V5.44L16,4H18V16H20V18H14Z" /></g><g id="format-header-2"><path d="M3,4H5V10H9V4H11V18H9V12H5V18H3V4M21,18H15A2,2 0 0,1 13,16C13,15.47 13.2,15 13.54,14.64L18.41,9.41C18.78,9.05 19,8.55 19,8A2,2 0 0,0 17,6A2,2 0 0,0 15,8H13A4,4 0 0,1 17,4A4,4 0 0,1 21,8C21,9.1 20.55,10.1 19.83,10.83L15,16H21V18Z" /></g><g id="format-header-3"><path d="M3,4H5V10H9V4H11V18H9V12H5V18H3V4M15,4H19A2,2 0 0,1 21,6V16A2,2 0 0,1 19,18H15A2,2 0 0,1 13,16V15H15V16H19V12H15V10H19V6H15V7H13V6A2,2 0 0,1 15,4Z" /></g><g id="format-header-4"><path d="M3,4H5V10H9V4H11V18H9V12H5V18H3V4M18,18V13H13V11L18,4H20V11H21V13H20V18H18M18,11V7.42L15.45,11H18Z" /></g><g id="format-header-5"><path d="M3,4H5V10H9V4H11V18H9V12H5V18H3V4M15,4H20V6H15V10H17A4,4 0 0,1 21,14A4,4 0 0,1 17,18H15A2,2 0 0,1 13,16V15H15V16H17A2,2 0 0,0 19,14A2,2 0 0,0 17,12H15A2,2 0 0,1 13,10V6A2,2 0 0,1 15,4Z" /></g><g id="format-header-6"><path d="M3,4H5V10H9V4H11V18H9V12H5V18H3V4M15,4H19A2,2 0 0,1 21,6V7H19V6H15V10H19A2,2 0 0,1 21,12V16A2,2 0 0,1 19,18H15A2,2 0 0,1 13,16V6A2,2 0 0,1 15,4M15,12V16H19V12H15Z" /></g><g id="format-header-decrease"><path d="M4,4H6V10H10V4H12V18H10V12H6V18H4V4M20.42,7.41L16.83,11L20.42,14.59L19,16L14,11L19,6L20.42,7.41Z" /></g><g id="format-header-equal"><path d="M4,4H6V10H10V4H12V18H10V12H6V18H4V4M14,10V8H21V10H14M14,12H21V14H14V12Z" /></g><g id="format-header-increase"><path d="M4,4H6V10H10V4H12V18H10V12H6V18H4V4M14.59,7.41L18.17,11L14.59,14.59L16,16L21,11L16,6L14.59,7.41Z" /></g><g id="format-header-pound"><path d="M3,4H5V10H9V4H11V18H9V12H5V18H3V4M13,8H15.31L15.63,5H17.63L17.31,8H19.31L19.63,5H21.63L21.31,8H23V10H21.1L20.9,12H23V14H20.69L20.37,17H18.37L18.69,14H16.69L16.37,17H14.37L14.69,14H13V12H14.9L15.1,10H13V8M17.1,10L16.9,12H18.9L19.1,10H17.1Z" /></g><g id="format-horizontal-align-center"><path d="M19,16V13H23V11H19V8L15,12L19,16M5,8V11H1V13H5V16L9,12L5,8M11,20H13V4H11V20Z" /></g><g id="format-horizontal-align-left"><path d="M11,16V13H21V11H11V8L7,12L11,16M3,20H5V4H3V20Z" /></g><g id="format-horizontal-align-right"><path d="M13,8V11H3V13H13V16L17,12L13,8M19,20H21V4H19V20Z" /></g><g id="format-indent-decrease"><path d="M11,13H21V11H11M11,9H21V7H11M3,3V5H21V3M3,21H21V19H3M3,12L7,16V8M11,17H21V15H11V17Z" /></g><g id="format-indent-increase"><path d="M11,13H21V11H11M11,9H21V7H11M3,3V5H21V3M11,17H21V15H11M3,8V16L7,12M3,21H21V19H3V21Z" /></g><g id="format-italic"><path d="M10,4V7H12.21L8.79,15H6V18H14V15H11.79L15.21,7H18V4H10Z" /></g><g id="format-line-spacing"><path d="M10,13H22V11H10M10,19H22V17H10M10,7H22V5H10M6,7H8.5L5,3.5L1.5,7H4V17H1.5L5,20.5L8.5,17H6V7Z" /></g><g id="format-line-style"><path d="M3,16H8V14H3V16M9.5,16H14.5V14H9.5V16M16,16H21V14H16V16M3,20H5V18H3V20M7,20H9V18H7V20M11,20H13V18H11V20M15,20H17V18H15V20M19,20H21V18H19V20M3,12H11V10H3V12M13,12H21V10H13V12M3,4V8H21V4H3Z" /></g><g id="format-line-weight"><path d="M3,17H21V15H3V17M3,20H21V19H3V20M3,13H21V10H3V13M3,4V8H21V4H3Z" /></g><g id="format-list-bulleted"><path d="M7,5H21V7H7V5M7,13V11H21V13H7M4,4.5A1.5,1.5 0 0,1 5.5,6A1.5,1.5 0 0,1 4,7.5A1.5,1.5 0 0,1 2.5,6A1.5,1.5 0 0,1 4,4.5M4,10.5A1.5,1.5 0 0,1 5.5,12A1.5,1.5 0 0,1 4,13.5A1.5,1.5 0 0,1 2.5,12A1.5,1.5 0 0,1 4,10.5M7,19V17H21V19H7M4,16.5A1.5,1.5 0 0,1 5.5,18A1.5,1.5 0 0,1 4,19.5A1.5,1.5 0 0,1 2.5,18A1.5,1.5 0 0,1 4,16.5Z" /></g><g id="format-list-bulleted-type"><path d="M5,9.5L7.5,14H2.5L5,9.5M3,4H7V8H3V4M5,20A2,2 0 0,0 7,18A2,2 0 0,0 5,16A2,2 0 0,0 3,18A2,2 0 0,0 5,20M9,5V7H21V5H9M9,19H21V17H9V19M9,13H21V11H9V13Z" /></g><g id="format-list-numbers"><path d="M7,13H21V11H7M7,19H21V17H7M7,7H21V5H7M2,11H3.8L2,13.1V14H5V13H3.2L5,10.9V10H2M3,8H4V4H2V5H3M2,17H4V17.5H3V18.5H4V19H2V20H5V16H2V17Z" /></g><g id="format-page-break"><path d="M7,11H9V13H7V11M11,11H13V13H11V11M19,17H15V11.17L21,17.17V22H3V13H5V20H19V17M3,2H21V11H19V4H5V11H3V2Z" /></g><g id="format-paint"><path d="M18,4V3A1,1 0 0,0 17,2H5A1,1 0 0,0 4,3V7A1,1 0 0,0 5,8H17A1,1 0 0,0 18,7V6H19V10H9V21A1,1 0 0,0 10,22H12A1,1 0 0,0 13,21V12H21V4H18Z" /></g><g id="format-paragraph"><path d="M13,4A4,4 0 0,1 17,8A4,4 0 0,1 13,12H11V18H9V4H13M13,10A2,2 0 0,0 15,8A2,2 0 0,0 13,6H11V10H13Z" /></g><g id="format-pilcrow"><path d="M10,11A4,4 0 0,1 6,7A4,4 0 0,1 10,3H18V5H16V21H14V5H12V21H10V11Z" /></g><g id="format-quote"><path d="M14,17H17L19,13V7H13V13H16M6,17H9L11,13V7H5V13H8L6,17Z" /></g><g id="format-section"><path d="M15.67,4.42C14.7,3.84 13.58,3.54 12.45,3.56C10.87,3.56 9.66,4.34 9.66,5.56C9.66,6.96 11,7.47 13,8.14C15.5,8.95 17.4,9.97 17.4,12.38C17.36,13.69 16.69,14.89 15.6,15.61C16.25,16.22 16.61,17.08 16.6,17.97C16.6,20.79 14,21.97 11.5,21.97C10.04,22.03 8.59,21.64 7.35,20.87L8,19.34C9.04,20.05 10.27,20.43 11.53,20.44C13.25,20.44 14.53,19.66 14.53,18.24C14.53,17 13.75,16.31 11.25,15.45C8.5,14.5 6.6,13.5 6.6,11.21C6.67,9.89 7.43,8.69 8.6,8.07C7.97,7.5 7.61,6.67 7.6,5.81C7.6,3.45 9.77,2 12.53,2C13.82,2 15.09,2.29 16.23,2.89L15.67,4.42M11.35,13.42C12.41,13.75 13.44,14.18 14.41,14.71C15.06,14.22 15.43,13.45 15.41,12.64C15.41,11.64 14.77,10.76 13,10.14C11.89,9.77 10.78,9.31 9.72,8.77C8.97,9.22 8.5,10.03 8.5,10.91C8.5,11.88 9.23,12.68 11.35,13.42Z" /></g><g id="format-size"><path d="M3,12H6V19H9V12H12V9H3M9,4V7H14V19H17V7H22V4H9Z" /></g><g id="format-strikethrough"><path d="M3,14H21V12H3M5,4V7H10V10H14V7H19V4M10,19H14V16H10V19Z" /></g><g id="format-strikethrough-variant"><path d="M23,12V14H18.61C19.61,16.14 19.56,22 12.38,22C4.05,22.05 4.37,15.5 4.37,15.5L8.34,15.55C8.37,18.92 11.5,18.92 12.12,18.88C12.76,18.83 15.15,18.84 15.34,16.5C15.42,15.41 14.32,14.58 13.12,14H1V12H23M19.41,7.89L15.43,7.86C15.43,7.86 15.6,5.09 12.15,5.08C8.7,5.06 9,7.28 9,7.56C9.04,7.84 9.34,9.22 12,9.88H5.71C5.71,9.88 2.22,3.15 10.74,2C19.45,0.8 19.43,7.91 19.41,7.89Z" /></g><g id="format-subscript"><path d="M16,7.41L11.41,12L16,16.59L14.59,18L10,13.41L5.41,18L4,16.59L8.59,12L4,7.41L5.41,6L10,10.59L14.59,6L16,7.41M21.85,21.03H16.97V20.03L17.86,19.23C18.62,18.58 19.18,18.04 19.56,17.6C19.93,17.16 20.12,16.75 20.13,16.36C20.14,16.08 20.05,15.85 19.86,15.66C19.68,15.5 19.39,15.38 19,15.38C18.69,15.38 18.42,15.44 18.16,15.56L17.5,15.94L17.05,14.77C17.32,14.56 17.64,14.38 18.03,14.24C18.42,14.1 18.85,14 19.32,14C20.1,14.04 20.7,14.25 21.1,14.66C21.5,15.07 21.72,15.59 21.72,16.23C21.71,16.79 21.53,17.31 21.18,17.78C20.84,18.25 20.42,18.7 19.91,19.14L19.27,19.66V19.68H21.85V21.03Z" /></g><g id="format-superscript"><path d="M16,7.41L11.41,12L16,16.59L14.59,18L10,13.41L5.41,18L4,16.59L8.59,12L4,7.41L5.41,6L10,10.59L14.59,6L16,7.41M21.85,9H16.97V8L17.86,7.18C18.62,6.54 19.18,6 19.56,5.55C19.93,5.11 20.12,4.7 20.13,4.32C20.14,4.04 20.05,3.8 19.86,3.62C19.68,3.43 19.39,3.34 19,3.33C18.69,3.34 18.42,3.4 18.16,3.5L17.5,3.89L17.05,2.72C17.32,2.5 17.64,2.33 18.03,2.19C18.42,2.05 18.85,2 19.32,2C20.1,2 20.7,2.2 21.1,2.61C21.5,3 21.72,3.54 21.72,4.18C21.71,4.74 21.53,5.26 21.18,5.73C20.84,6.21 20.42,6.66 19.91,7.09L19.27,7.61V7.63H21.85V9Z" /></g><g id="format-text"><path d="M18.5,4L19.66,8.35L18.7,8.61C18.25,7.74 17.79,6.87 17.26,6.43C16.73,6 16.11,6 15.5,6H13V16.5C13,17 13,17.5 13.33,17.75C13.67,18 14.33,18 15,18V19H9V18C9.67,18 10.33,18 10.67,17.75C11,17.5 11,17 11,16.5V6H8.5C7.89,6 7.27,6 6.74,6.43C6.21,6.87 5.75,7.74 5.3,8.61L4.34,8.35L5.5,4H18.5Z" /></g><g id="format-textdirection-l-to-r"><path d="M21,18L17,14V17H5V19H17V22M9,10V15H11V4H13V15H15V4H17V2H9A4,4 0 0,0 5,6A4,4 0 0,0 9,10Z" /></g><g id="format-textdirection-r-to-l"><path d="M8,17V14L4,18L8,22V19H20V17M10,10V15H12V4H14V15H16V4H18V2H10A4,4 0 0,0 6,6A4,4 0 0,0 10,10Z" /></g><g id="format-title"><path d="M5,4V7H10.5V19H13.5V7H19V4H5Z" /></g><g id="format-underline"><path d="M5,21H19V19H5V21M12,17A6,6 0 0,0 18,11V3H15.5V11A3.5,3.5 0 0,1 12,14.5A3.5,3.5 0 0,1 8.5,11V3H6V11A6,6 0 0,0 12,17Z" /></g><g id="format-vertical-align-bottom"><path d="M16,13H13V3H11V13H8L12,17L16,13M4,19V21H20V19H4Z" /></g><g id="format-vertical-align-center"><path d="M8,19H11V23H13V19H16L12,15L8,19M16,5H13V1H11V5H8L12,9L16,5M4,11V13H20V11H4Z" /></g><g id="format-vertical-align-top"><path d="M8,11H11V21H13V11H16L12,7L8,11M4,3V5H20V3H4Z" /></g><g id="format-wrap-inline"><path d="M8,7L13,17H3L8,7M3,3H21V5H3V3M21,15V17H14V15H21M3,19H21V21H3V19Z" /></g><g id="format-wrap-square"><path d="M12,7L17,17H7L12,7M3,3H21V5H3V3M3,7H6V9H3V7M21,7V9H18V7H21M3,11H6V13H3V11M21,11V13H18V11H21M3,15H6V17H3V15M21,15V17H18V15H21M3,19H21V21H3V19Z" /></g><g id="format-wrap-tight"><path d="M12,7L17,17H7L12,7M3,3H21V5H3V3M3,7H9V9H3V7M21,7V9H15V7H21M3,11H7V13H3V11M21,11V13H17V11H21M3,15H6V17H3V15M21,15V17H18V15H21M3,19H21V21H3V19Z" /></g><g id="format-wrap-top-bottom"><path d="M12,7L17,17H7L12,7M3,3H21V5H3V3M3,19H21V21H3V19Z" /></g><g id="forum"><path d="M17,12V3A1,1 0 0,0 16,2H3A1,1 0 0,0 2,3V17L6,13H16A1,1 0 0,0 17,12M21,6H19V15H6V17A1,1 0 0,0 7,18H18L22,22V7A1,1 0 0,0 21,6Z" /></g><g id="forward"><path d="M12,8V4L20,12L12,20V16H4V8H12Z" /></g><g id="foursquare"><path d="M17,5L16.57,7.5C16.5,7.73 16.2,8 15.91,8C15.61,8 12,8 12,8C11.53,8 10.95,8.32 10.95,8.79V9.2C10.95,9.67 11.53,10 12,10C12,10 14.95,10 15.28,10C15.61,10 15.93,10.36 15.86,10.71C15.79,11.07 14.94,13.28 14.9,13.5C14.86,13.67 14.64,14 14.25,14C13.92,14 11.37,14 11.37,14C10.85,14 10.69,14.07 10.34,14.5C10,14.94 7.27,18.1 7.27,18.1C7.24,18.13 7,18.04 7,18V5C7,4.7 7.61,4 8,4C8,4 16.17,4 16.5,4C16.82,4 17.08,4.61 17,5M17,14.45C17.11,13.97 18.78,6.72 19.22,4.55M17.58,2C17.58,2 8.38,2 6.91,2C5.43,2 5,3.11 5,3.8C5,4.5 5,20.76 5,20.76C5,21.54 5.42,21.84 5.66,21.93C5.9,22.03 6.55,22.11 6.94,21.66C6.94,21.66 11.65,16.22 11.74,16.13C11.87,16 11.87,16 12,16C12.26,16 14.2,16 15.26,16C16.63,16 16.85,15 17,14.45C17.11,13.97 18.78,6.72 19.22,4.55C19.56,2.89 19.14,2 17.58,2Z" /></g><g id="fridge"><path d="M9,21V22H7V21A2,2 0 0,1 5,19V4A2,2 0 0,1 7,2H17A2,2 0 0,1 19,4V19A2,2 0 0,1 17,21V22H15V21H9M7,4V9H17V4H7M7,19H17V11H7V19M8,12H10V15H8V12M8,6H10V8H8V6Z" /></g><g id="fridge-filled"><path d="M7,2H17A2,2 0 0,1 19,4V9H5V4A2,2 0 0,1 7,2M19,19A2,2 0 0,1 17,21V22H15V21H9V22H7V21A2,2 0 0,1 5,19V10H19V19M8,5V7H10V5H8M8,12V15H10V12H8Z" /></g><g id="fridge-filled-bottom"><path d="M8,8V6H10V8H8M7,2H17A2,2 0 0,1 19,4V19A2,2 0 0,1 17,21V22H15V21H9V22H7V21A2,2 0 0,1 5,19V4A2,2 0 0,1 7,2M7,4V9H17V4H7M8,12V15H10V12H8Z" /></g><g id="fridge-filled-top"><path d="M7,2A2,2 0 0,0 5,4V19A2,2 0 0,0 7,21V22H9V21H15V22H17V21A2,2 0 0,0 19,19V4A2,2 0 0,0 17,2H7M8,6H10V8H8V6M7,11H17V19H7V11M8,12V15H10V12H8Z" /></g><g id="fullscreen"><path d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z" /></g><g id="fullscreen-exit"><path d="M14,14H19V16H16V19H14V14M5,14H10V19H8V16H5V14M8,5H10V10H5V8H8V5M19,8V10H14V5H16V8H19Z" /></g><g id="function"><path d="M15.6,5.29C14.5,5.19 13.53,6 13.43,7.11L13.18,10H16V12H13L12.56,17.07C12.37,19.27 10.43,20.9 8.23,20.7C6.92,20.59 5.82,19.86 5.17,18.83L6.67,17.33C6.91,18.07 7.57,18.64 8.4,18.71C9.5,18.81 10.47,18 10.57,16.89L11,12H8V10H11.17L11.44,6.93C11.63,4.73 13.57,3.1 15.77,3.3C17.08,3.41 18.18,4.14 18.83,5.17L17.33,6.67C17.09,5.93 16.43,5.36 15.6,5.29Z" /></g><g id="gamepad"><path d="M16.5,9L13.5,12L16.5,15H22V9M9,16.5V22H15V16.5L12,13.5M7.5,9H2V15H7.5L10.5,12M15,7.5V2H9V7.5L12,10.5L15,7.5Z" /></g><g id="gamepad-variant"><path d="M7,6H17A6,6 0 0,1 23,12A6,6 0 0,1 17,18C15.22,18 13.63,17.23 12.53,16H11.47C10.37,17.23 8.78,18 7,18A6,6 0 0,1 1,12A6,6 0 0,1 7,6M6,9V11H4V13H6V15H8V13H10V11H8V9H6M15.5,12A1.5,1.5 0 0,0 14,13.5A1.5,1.5 0 0,0 15.5,15A1.5,1.5 0 0,0 17,13.5A1.5,1.5 0 0,0 15.5,12M18.5,9A1.5,1.5 0 0,0 17,10.5A1.5,1.5 0 0,0 18.5,12A1.5,1.5 0 0,0 20,10.5A1.5,1.5 0 0,0 18.5,9Z" /></g><g id="garage"><path d="M19,20H17V11H7V20H5V9L12,5L19,9V20M8,12H16V14H8V12M8,15H16V17H8V15M16,18V20H8V18H16Z" /></g><g id="garage-open"><path d="M19,20H17V11H7V20H5V9L12,5L19,9V20M8,12H16V14H8V12Z" /></g><g id="gas-cylinder"><path d="M16,9V14L16,20A2,2 0 0,1 14,22H10A2,2 0 0,1 8,20V14L8,9C8,7.14 9.27,5.57 11,5.13V4H9V2H15V4H13V5.13C14.73,5.57 16,7.14 16,9Z" /></g><g id="gas-station"><path d="M18,10A1,1 0 0,1 17,9A1,1 0 0,1 18,8A1,1 0 0,1 19,9A1,1 0 0,1 18,10M12,10H6V5H12M19.77,7.23L19.78,7.22L16.06,3.5L15,4.56L17.11,6.67C16.17,7 15.5,7.93 15.5,9A2.5,2.5 0 0,0 18,11.5C18.36,11.5 18.69,11.42 19,11.29V18.5A1,1 0 0,1 18,19.5A1,1 0 0,1 17,18.5V14C17,12.89 16.1,12 15,12H14V5C14,3.89 13.1,3 12,3H6C4.89,3 4,3.89 4,5V21H14V13.5H15.5V18.5A2.5,2.5 0 0,0 18,21A2.5,2.5 0 0,0 20.5,18.5V9C20.5,8.31 20.22,7.68 19.77,7.23Z" /></g><g id="gate"><path d="M9,5V10H7V6H5V10H3V8H1V20H3V18H5V20H7V18H9V20H11V18H13V20H15V18H17V20H19V18H21V20H23V8H21V10H19V6H17V10H15V5H13V10H11V5H9M3,12H5V16H3V12M7,12H9V16H7V12M11,12H13V16H11V12M15,12H17V16H15V12M19,12H21V16H19V12Z" /></g><g id="gauge"><path d="M17.3,18C19,16.5 20,14.4 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12C4,14.4 5,16.5 6.7,18C8.2,16.7 10,16 12,16C14,16 15.9,16.7 17.3,18M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M7,9A1,1 0 0,1 8,10A1,1 0 0,1 7,11A1,1 0 0,1 6,10A1,1 0 0,1 7,9M10,6A1,1 0 0,1 11,7A1,1 0 0,1 10,8A1,1 0 0,1 9,7A1,1 0 0,1 10,6M17,9A1,1 0 0,1 18,10A1,1 0 0,1 17,11A1,1 0 0,1 16,10A1,1 0 0,1 17,9M14.4,6.1C14.9,6.3 15.1,6.9 15,7.4L13.6,10.8C13.8,11.1 14,11.5 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12C10,11 10.7,10.1 11.7,10L13.1,6.7C13.3,6.1 13.9,5.9 14.4,6.1Z" /></g><g id="gavel"><path d="M2.3,20.28L11.9,10.68L10.5,9.26L9.78,9.97C9.39,10.36 8.76,10.36 8.37,9.97L7.66,9.26C7.27,8.87 7.27,8.24 7.66,7.85L13.32,2.19C13.71,1.8 14.34,1.8 14.73,2.19L15.44,2.9C15.83,3.29 15.83,3.92 15.44,4.31L14.73,5L16.15,6.43C16.54,6.04 17.17,6.04 17.56,6.43C17.95,6.82 17.95,7.46 17.56,7.85L18.97,9.26L19.68,8.55C20.07,8.16 20.71,8.16 21.1,8.55L21.8,9.26C22.19,9.65 22.19,10.29 21.8,10.68L16.15,16.33C15.76,16.72 15.12,16.72 14.73,16.33L14.03,15.63C13.63,15.24 13.63,14.6 14.03,14.21L14.73,13.5L13.32,12.09L3.71,21.7C3.32,22.09 2.69,22.09 2.3,21.7C1.91,21.31 1.91,20.67 2.3,20.28M20,19A2,2 0 0,1 22,21V22H12V21A2,2 0 0,1 14,19H20Z" /></g><g id="gender-female"><path d="M12,4A6,6 0 0,1 18,10C18,12.97 15.84,15.44 13,15.92V18H15V20H13V22H11V20H9V18H11V15.92C8.16,15.44 6,12.97 6,10A6,6 0 0,1 12,4M12,6A4,4 0 0,0 8,10A4,4 0 0,0 12,14A4,4 0 0,0 16,10A4,4 0 0,0 12,6Z" /></g><g id="gender-male"><path d="M9,9C10.29,9 11.5,9.41 12.47,10.11L17.58,5H13V3H21V11H19V6.41L13.89,11.5C14.59,12.5 15,13.7 15,15A6,6 0 0,1 9,21A6,6 0 0,1 3,15A6,6 0 0,1 9,9M9,11A4,4 0 0,0 5,15A4,4 0 0,0 9,19A4,4 0 0,0 13,15A4,4 0 0,0 9,11Z" /></g><g id="gender-male-female"><path d="M17.58,4H14V2H21V9H19V5.41L15.17,9.24C15.69,10.03 16,11 16,12C16,14.42 14.28,16.44 12,16.9V19H14V21H12V23H10V21H8V19H10V16.9C7.72,16.44 6,14.42 6,12A5,5 0 0,1 11,7C12,7 12.96,7.3 13.75,7.83L17.58,4M11,9A3,3 0 0,0 8,12A3,3 0 0,0 11,15A3,3 0 0,0 14,12A3,3 0 0,0 11,9Z" /></g><g id="gender-transgender"><path d="M19.58,3H15V1H23V9H21V4.41L16.17,9.24C16.69,10.03 17,11 17,12C17,14.42 15.28,16.44 13,16.9V19H15V21H13V23H11V21H9V19H11V16.9C8.72,16.44 7,14.42 7,12C7,11 7.3,10.04 7.82,9.26L6.64,8.07L5.24,9.46L3.83,8.04L5.23,6.65L3,4.42V8H1V1H8V3H4.41L6.64,5.24L8.08,3.81L9.5,5.23L8.06,6.66L9.23,7.84C10,7.31 11,7 12,7C13,7 13.96,7.3 14.75,7.83L19.58,3M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9Z" /></g><g id="ghost"><path d="M12,2A9,9 0 0,0 3,11V22L6,19L9,22L12,19L15,22L18,19L21,22V11A9,9 0 0,0 12,2M9,8A2,2 0 0,1 11,10A2,2 0 0,1 9,12A2,2 0 0,1 7,10A2,2 0 0,1 9,8M15,8A2,2 0 0,1 17,10A2,2 0 0,1 15,12A2,2 0 0,1 13,10A2,2 0 0,1 15,8Z" /></g><g id="gift"><path d="M22,12V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V12A1,1 0 0,1 1,11V8A2,2 0 0,1 3,6H6.17C6.06,5.69 6,5.35 6,5A3,3 0 0,1 9,2C10,2 10.88,2.5 11.43,3.24V3.23L12,4L12.57,3.23V3.24C13.12,2.5 14,2 15,2A3,3 0 0,1 18,5C18,5.35 17.94,5.69 17.83,6H21A2,2 0 0,1 23,8V11A1,1 0 0,1 22,12M4,20H11V12H4V20M20,20V12H13V20H20M9,4A1,1 0 0,0 8,5A1,1 0 0,0 9,6A1,1 0 0,0 10,5A1,1 0 0,0 9,4M15,4A1,1 0 0,0 14,5A1,1 0 0,0 15,6A1,1 0 0,0 16,5A1,1 0 0,0 15,4M3,8V10H11V8H3M13,8V10H21V8H13Z" /></g><g id="git"><path d="M2.6,10.59L8.38,4.8L10.07,6.5C9.83,7.35 10.22,8.28 11,8.73V14.27C10.4,14.61 10,15.26 10,16A2,2 0 0,0 12,18A2,2 0 0,0 14,16C14,15.26 13.6,14.61 13,14.27V9.41L15.07,11.5C15,11.65 15,11.82 15,12A2,2 0 0,0 17,14A2,2 0 0,0 19,12A2,2 0 0,0 17,10C16.82,10 16.65,10 16.5,10.07L13.93,7.5C14.19,6.57 13.71,5.55 12.78,5.16C12.35,5 11.9,4.96 11.5,5.07L9.8,3.38L10.59,2.6C11.37,1.81 12.63,1.81 13.41,2.6L21.4,10.59C22.19,11.37 22.19,12.63 21.4,13.41L13.41,21.4C12.63,22.19 11.37,22.19 10.59,21.4L2.6,13.41C1.81,12.63 1.81,11.37 2.6,10.59Z" /></g><g id="github-box"><path d="M4,2H20A2,2 0 0,1 22,4V20A2,2 0 0,1 20,22H14.85C14.5,21.92 14.5,21.24 14.5,21V18.26C14.5,17.33 14.17,16.72 13.81,16.41C16.04,16.16 18.38,15.32 18.38,11.5C18.38,10.39 18,9.5 17.35,8.79C17.45,8.54 17.8,7.5 17.25,6.15C17.25,6.15 16.41,5.88 14.5,7.17C13.71,6.95 12.85,6.84 12,6.84C11.15,6.84 10.29,6.95 9.5,7.17C7.59,5.88 6.75,6.15 6.75,6.15C6.2,7.5 6.55,8.54 6.65,8.79C6,9.5 5.62,10.39 5.62,11.5C5.62,15.31 7.95,16.17 10.17,16.42C9.89,16.67 9.63,17.11 9.54,17.76C8.97,18 7.5,18.45 6.63,16.93C6.63,16.93 6.1,15.97 5.1,15.9C5.1,15.9 4.12,15.88 5,16.5C5,16.5 5.68,16.81 6.14,17.97C6.14,17.97 6.73,19.91 9.5,19.31V21C9.5,21.24 9.5,21.92 9.14,22H4A2,2 0 0,1 2,20V4A2,2 0 0,1 4,2Z" /></g><g id="github-circle"><path d="M12,2A10,10 0 0,0 2,12C2,16.42 4.87,20.17 8.84,21.5C9.34,21.58 9.5,21.27 9.5,21C9.5,20.77 9.5,20.14 9.5,19.31C6.73,19.91 6.14,17.97 6.14,17.97C5.68,16.81 5.03,16.5 5.03,16.5C4.12,15.88 5.1,15.9 5.1,15.9C6.1,15.97 6.63,16.93 6.63,16.93C7.5,18.45 8.97,18 9.54,17.76C9.63,17.11 9.89,16.67 10.17,16.42C7.95,16.17 5.62,15.31 5.62,11.5C5.62,10.39 6,9.5 6.65,8.79C6.55,8.54 6.2,7.5 6.75,6.15C6.75,6.15 7.59,5.88 9.5,7.17C10.29,6.95 11.15,6.84 12,6.84C12.85,6.84 13.71,6.95 14.5,7.17C16.41,5.88 17.25,6.15 17.25,6.15C17.8,7.5 17.45,8.54 17.35,8.79C18,9.5 18.38,10.39 18.38,11.5C18.38,15.32 16.04,16.16 13.81,16.41C14.17,16.72 14.5,17.33 14.5,18.26C14.5,19.6 14.5,20.68 14.5,21C14.5,21.27 14.66,21.59 15.17,21.5C19.14,20.16 22,16.42 22,12A10,10 0 0,0 12,2Z" /></g><g id="glass-flute"><path d="M8,2H16C15.67,5 15.33,8 14.75,9.83C14.17,11.67 13.33,12.33 12.92,14.08C12.5,15.83 12.5,18.67 13.08,20C13.67,21.33 14.83,21.17 15.42,21.25C16,21.33 16,21.67 16,22H8C8,21.67 8,21.33 8.58,21.25C9.17,21.17 10.33,21.33 10.92,20C11.5,18.67 11.5,15.83 11.08,14.08C10.67,12.33 9.83,11.67 9.25,9.83C8.67,8 8.33,5 8,2M10,4C10.07,5.03 10.15,6.07 10.24,7H13.76C13.85,6.07 13.93,5.03 14,4H10Z" /></g><g id="glass-mug"><path d="M10,4V7H18V4H10M8,2H20L21,2V3L20,4V20L21,21V22H20L8,22H7V21L8,20V18.6L4.2,16.83C3.5,16.5 3,15.82 3,15V8A2,2 0 0,1 5,6H8V4L7,3V2H8M5,15L8,16.39V8H5V15Z" /></g><g id="glass-stange"><path d="M8,2H16V22H8V2M10,4V7H14V4H10Z" /></g><g id="glass-tulip"><path d="M8,2H16C15.67,2.67 15.33,3.33 15.58,5C15.83,6.67 16.67,9.33 16.25,10.74C15.83,12.14 14.17,12.28 13.33,13.86C12.5,15.44 12.5,18.47 13.08,19.9C13.67,21.33 14.83,21.17 15.42,21.25C16,21.33 16,21.67 16,22H8C8,21.67 8,21.33 8.58,21.25C9.17,21.17 10.33,21.33 10.92,19.9C11.5,18.47 11.5,15.44 10.67,13.86C9.83,12.28 8.17,12.14 7.75,10.74C7.33,9.33 8.17,6.67 8.42,5C8.67,3.33 8.33,2.67 8,2M10,4C10,5.19 9.83,6.17 9.64,7H14.27C14.13,6.17 14,5.19 14,4H10Z" /></g><g id="glassdoor"><path d="M18,6H16V15C16,16 15.82,16.64 15,16.95L9.5,19V6C9.5,5.3 9.74,4.1 11,4.24L18,5V3.79L9,2.11C8.64,2.04 8.36,2 8,2C6.72,2 6,2.78 6,4V20.37C6,21.95 7.37,22.26 8,22L17,18.32C18,17.91 18,17 18,16V6Z" /></g><g id="glasses"><path d="M3,10C2.76,10 2.55,10.09 2.41,10.25C2.27,10.4 2.21,10.62 2.24,10.86L2.74,13.85C2.82,14.5 3.4,15 4,15H7C7.64,15 8.36,14.44 8.5,13.82L9.56,10.63C9.6,10.5 9.57,10.31 9.5,10.19C9.39,10.07 9.22,10 9,10H3M7,17H4C2.38,17 0.96,15.74 0.76,14.14L0.26,11.15C0.15,10.3 0.39,9.5 0.91,8.92C1.43,8.34 2.19,8 3,8H9C9.83,8 10.58,8.35 11.06,8.96C11.17,9.11 11.27,9.27 11.35,9.45C11.78,9.36 12.22,9.36 12.64,9.45C12.72,9.27 12.82,9.11 12.94,8.96C13.41,8.35 14.16,8 15,8H21C21.81,8 22.57,8.34 23.09,8.92C23.6,9.5 23.84,10.3 23.74,11.11L23.23,14.18C23.04,15.74 21.61,17 20,17H17C15.44,17 13.92,15.81 13.54,14.3L12.64,11.59C12.26,11.31 11.73,11.31 11.35,11.59L10.43,14.37C10.07,15.82 8.56,17 7,17M15,10C14.78,10 14.61,10.07 14.5,10.19C14.42,10.31 14.4,10.5 14.45,10.7L15.46,13.75C15.64,14.44 16.36,15 17,15H20C20.59,15 21.18,14.5 21.25,13.89L21.76,10.82C21.79,10.62 21.73,10.4 21.59,10.25C21.45,10.09 21.24,10 21,10H15Z" /></g><g id="gmail"><path d="M20,18H18V9.25L12,13L6,9.25V18H4V6H5.2L12,10.25L18.8,6H20M20,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z" /></g><g id="gnome"><path d="M18.42,2C14.26,2 13.5,7.93 15.82,7.93C18.16,7.93 22.58,2 18.42,2M12,2.73C11.92,2.73 11.85,2.73 11.78,2.74C9.44,3.04 10.26,7.12 11.5,7.19C12.72,7.27 14.04,2.73 12,2.73M7.93,4.34C7.81,4.34 7.67,4.37 7.53,4.43C5.65,5.21 7.24,8.41 8.3,8.2C9.27,8 9.39,4.3 7.93,4.34M4.93,6.85C4.77,6.84 4.59,6.9 4.41,7.03C2.9,8.07 4.91,10.58 5.8,10.19C6.57,9.85 6.08,6.89 4.93,6.85M13.29,8.77C10.1,8.8 6.03,10.42 5.32,13.59C4.53,17.11 8.56,22 12.76,22C14.83,22 17.21,20.13 17.66,17.77C18,15.97 13.65,16.69 13.81,17.88C14,19.31 12.76,20 11.55,19.1C7.69,16.16 17.93,14.7 17.25,10.69C17.03,9.39 15.34,8.76 13.29,8.77Z" /></g><g id="gondola"><path d="M18,10H13V7.59L22.12,6.07L21.88,4.59L16.41,5.5C16.46,5.35 16.5,5.18 16.5,5A1.5,1.5 0 0,0 15,3.5A1.5,1.5 0 0,0 13.5,5C13.5,5.35 13.63,5.68 13.84,5.93L13,6.07V5H11V6.41L10.41,6.5C10.46,6.35 10.5,6.18 10.5,6A1.5,1.5 0 0,0 9,4.5A1.5,1.5 0 0,0 7.5,6C7.5,6.36 7.63,6.68 7.83,6.93L1.88,7.93L2.12,9.41L11,7.93V10H6C4.89,10 4,10.9 4,12V18A2,2 0 0,0 6,20H18A2,2 0 0,0 20,18V12A2,2 0 0,0 18,10M6,12H8.25V16H6V12M9.75,16V12H14.25V16H9.75M18,16H15.75V12H18V16Z" /></g><g id="google"><path d="M21.35,11.1H12.18V13.83H18.69C18.36,17.64 15.19,19.27 12.19,19.27C8.36,19.27 5,16.25 5,12C5,7.9 8.2,4.73 12.2,4.73C15.29,4.73 17.1,6.7 17.1,6.7L19,4.72C19,4.72 16.56,2 12.1,2C6.42,2 2.03,6.8 2.03,12C2.03,17.05 6.16,22 12.25,22C17.6,22 21.5,18.33 21.5,12.91C21.5,11.76 21.35,11.1 21.35,11.1V11.1Z" /></g><g id="google-cardboard"><path d="M20.74,6H3.2C2.55,6 2,6.57 2,7.27V17.73C2,18.43 2.55,19 3.23,19H8C8.54,19 9,18.68 9.16,18.21L10.55,14.74C10.79,14.16 11.35,13.75 12,13.75C12.65,13.75 13.21,14.16 13.45,14.74L14.84,18.21C15.03,18.68 15.46,19 15.95,19H20.74C21.45,19 22,18.43 22,17.73V7.27C22,6.57 21.45,6 20.74,6M7.22,14.58C6,14.58 5,13.55 5,12.29C5,11 6,10 7.22,10C8.44,10 9.43,11 9.43,12.29C9.43,13.55 8.44,14.58 7.22,14.58M16.78,14.58C15.56,14.58 14.57,13.55 14.57,12.29C14.57,11.03 15.56,10 16.78,10C18,10 19,11.03 19,12.29C19,13.55 18,14.58 16.78,14.58Z" /></g><g id="google-chrome"><path d="M12,20L15.46,14H15.45C15.79,13.4 16,12.73 16,12C16,10.8 15.46,9.73 14.62,9H19.41C19.79,9.93 20,10.94 20,12A8,8 0 0,1 12,20M4,12C4,10.54 4.39,9.18 5.07,8L8.54,14H8.55C9.24,15.19 10.5,16 12,16C12.45,16 12.88,15.91 13.29,15.77L10.89,19.91C7,19.37 4,16.04 4,12M15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9A3,3 0 0,1 15,12M12,4C14.96,4 17.54,5.61 18.92,8H12C10.06,8 8.45,9.38 8.08,11.21L5.7,7.08C7.16,5.21 9.44,4 12,4M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="google-circles"><path d="M16.66,15H17C18,15 19,14.8 19.87,14.46C19.17,18.73 15.47,22 11,22C6,22 2,17.97 2,13C2,8.53 5.27,4.83 9.54,4.13C9.2,5 9,6 9,7V7.34C6.68,8.16 5,10.38 5,13A6,6 0 0,0 11,19C13.62,19 15.84,17.32 16.66,15M17,10A3,3 0 0,0 20,7A3,3 0 0,0 17,4A3,3 0 0,0 14,7A3,3 0 0,0 17,10M17,1A6,6 0 0,1 23,7A6,6 0 0,1 17,13A6,6 0 0,1 11,7C11,3.68 13.69,1 17,1Z" /></g><g id="google-circles-communities"><path d="M15,12C13.89,12 13,12.89 13,14A2,2 0 0,0 15,16A2,2 0 0,0 17,14C17,12.89 16.1,12 15,12M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M14,9C14,7.89 13.1,7 12,7C10.89,7 10,7.89 10,9A2,2 0 0,0 12,11A2,2 0 0,0 14,9M9,12A2,2 0 0,0 7,14A2,2 0 0,0 9,16A2,2 0 0,0 11,14C11,12.89 10.1,12 9,12Z" /></g><g id="google-circles-extended"><path d="M18,19C16.89,19 16,18.1 16,17C16,15.89 16.89,15 18,15A2,2 0 0,1 20,17A2,2 0 0,1 18,19M18,13A4,4 0 0,0 14,17A4,4 0 0,0 18,21A4,4 0 0,0 22,17A4,4 0 0,0 18,13M12,11.1A1.9,1.9 0 0,0 10.1,13A1.9,1.9 0 0,0 12,14.9A1.9,1.9 0 0,0 13.9,13A1.9,1.9 0 0,0 12,11.1M6,19C4.89,19 4,18.1 4,17C4,15.89 4.89,15 6,15A2,2 0 0,1 8,17A2,2 0 0,1 6,19M6,13A4,4 0 0,0 2,17A4,4 0 0,0 6,21A4,4 0 0,0 10,17A4,4 0 0,0 6,13M12,4A2,2 0 0,1 14,6A2,2 0 0,1 12,8C10.89,8 10,7.1 10,6C10,4.89 10.89,4 12,4M12,10A4,4 0 0,0 16,6A4,4 0 0,0 12,2A4,4 0 0,0 8,6A4,4 0 0,0 12,10Z" /></g><g id="google-circles-group"><path d="M5,10A2,2 0 0,0 3,12C3,13.11 3.9,14 5,14C6.11,14 7,13.11 7,12A2,2 0 0,0 5,10M5,16A4,4 0 0,1 1,12A4,4 0 0,1 5,8A4,4 0 0,1 9,12A4,4 0 0,1 5,16M10.5,11H14V8L18,12L14,16V13H10.5V11M5,6C4.55,6 4.11,6.05 3.69,6.14C5.63,3.05 9.08,1 13,1C19.08,1 24,5.92 24,12C24,18.08 19.08,23 13,23C9.08,23 5.63,20.95 3.69,17.86C4.11,17.95 4.55,18 5,18C5.8,18 6.56,17.84 7.25,17.56C8.71,19.07 10.74,20 13,20A8,8 0 0,0 21,12A8,8 0 0,0 13,4C10.74,4 8.71,4.93 7.25,6.44C6.56,6.16 5.8,6 5,6Z" /></g><g id="google-controller"><path d="M7.97,16L5,19C4.67,19.3 4.23,19.5 3.75,19.5A1.75,1.75 0 0,1 2,17.75V17.5L3,10.12C3.21,7.81 5.14,6 7.5,6H16.5C18.86,6 20.79,7.81 21,10.12L22,17.5V17.75A1.75,1.75 0 0,1 20.25,19.5C19.77,19.5 19.33,19.3 19,19L16.03,16H7.97M7,8V10H5V11H7V13H8V11H10V10H8V8H7M16.5,8A0.75,0.75 0 0,0 15.75,8.75A0.75,0.75 0 0,0 16.5,9.5A0.75,0.75 0 0,0 17.25,8.75A0.75,0.75 0 0,0 16.5,8M14.75,9.75A0.75,0.75 0 0,0 14,10.5A0.75,0.75 0 0,0 14.75,11.25A0.75,0.75 0 0,0 15.5,10.5A0.75,0.75 0 0,0 14.75,9.75M18.25,9.75A0.75,0.75 0 0,0 17.5,10.5A0.75,0.75 0 0,0 18.25,11.25A0.75,0.75 0 0,0 19,10.5A0.75,0.75 0 0,0 18.25,9.75M16.5,11.5A0.75,0.75 0 0,0 15.75,12.25A0.75,0.75 0 0,0 16.5,13A0.75,0.75 0 0,0 17.25,12.25A0.75,0.75 0 0,0 16.5,11.5Z" /></g><g id="google-controller-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L12.73,16H7.97L5,19C4.67,19.3 4.23,19.5 3.75,19.5A1.75,1.75 0 0,1 2,17.75V17.5L3,10.12C3.1,9.09 3.53,8.17 4.19,7.46L2,5.27M5,10V11H7V13H8V11.27L6.73,10H5M16.5,6C18.86,6 20.79,7.81 21,10.12L22,17.5V17.75C22,18.41 21.64,19 21.1,19.28L7.82,6H16.5M16.5,8A0.75,0.75 0 0,0 15.75,8.75A0.75,0.75 0 0,0 16.5,9.5A0.75,0.75 0 0,0 17.25,8.75A0.75,0.75 0 0,0 16.5,8M14.75,9.75A0.75,0.75 0 0,0 14,10.5A0.75,0.75 0 0,0 14.75,11.25A0.75,0.75 0 0,0 15.5,10.5A0.75,0.75 0 0,0 14.75,9.75M18.25,9.75A0.75,0.75 0 0,0 17.5,10.5A0.75,0.75 0 0,0 18.25,11.25A0.75,0.75 0 0,0 19,10.5A0.75,0.75 0 0,0 18.25,9.75M16.5,11.5A0.75,0.75 0 0,0 15.75,12.25A0.75,0.75 0 0,0 16.5,13A0.75,0.75 0 0,0 17.25,12.25A0.75,0.75 0 0,0 16.5,11.5Z" /></g><g id="google-drive"><path d="M7.71,3.5L1.15,15L4.58,21L11.13,9.5M9.73,15L6.3,21H19.42L22.85,15M22.28,14L15.42,2H8.58L8.57,2L15.43,14H22.28Z" /></g><g id="google-earth"><path d="M12.4,7.56C9.6,4.91 7.3,5.65 6.31,6.1C7.06,5.38 7.94,4.8 8.92,4.4C11.7,4.3 14.83,4.84 16.56,7.31C16.56,7.31 19,11.5 19.86,9.65C20.08,10.4 20.2,11.18 20.2,12C20.2,12.3 20.18,12.59 20.15,12.88C18.12,12.65 15.33,10.32 12.4,7.56M19.1,16.1C18.16,16.47 17,17.1 15.14,17.1C13.26,17.1 11.61,16.35 9.56,15.7C7.7,15.11 7,14.2 5.72,14.2C5.06,14.2 4.73,14.86 4.55,15.41C4.07,14.37 3.8,13.22 3.8,12C3.8,11.19 3.92,10.42 4.14,9.68C5.4,8.1 7.33,7.12 10.09,9.26C10.09,9.26 16.32,13.92 19.88,14.23C19.7,14.89 19.43,15.5 19.1,16.1M12,20.2C10.88,20.2 9.81,19.97 8.83,19.56C8.21,18.08 8.22,16.92 9.95,17.5C9.95,17.5 13.87,19 18,17.58C16.5,19.19 14.37,20.2 12,20.2M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z" /></g><g id="google-glass"><path d="M13,11V13.5H18.87C18.26,17 15.5,19.5 12,19.5A7.5,7.5 0 0,1 4.5,12A7.5,7.5 0 0,1 12,4.5C14.09,4.5 15.9,5.39 17.16,6.84L18.93,5.06C17.24,3.18 14.83,2 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22C17.5,22 21.5,17.5 21.5,12V11H13Z" /></g><g id="google-keep"><path d="M4,2H20A2,2 0 0,1 22,4V17.33L17.33,22H4A2,2 0 0,1 2,20V4A2,2 0 0,1 4,2M17,17V20.25L20.25,17H17M10,19H14V18H15V13C16.21,12.09 17,10.64 17,9A5,5 0 0,0 12,4A5,5 0 0,0 7,9C7,10.64 7.79,12.09 9,13V18H10V19M14,17H10V16H14V17M14,15H10V14H14V15M12,5A4,4 0 0,1 16,9C16,10.5 15.2,11.77 14,12.46V13H10V12.46C8.8,11.77 8,10.5 8,9A4,4 0 0,1 12,5Z" /></g><g id="google-maps"><path d="M5,4A2,2 0 0,0 3,6V16.29L11.18,8.11C11.06,7.59 11,7.07 11,6.53C11,5.62 11.2,4.76 11.59,4H5M18,21A2,2 0 0,0 20,19V11.86C19.24,13 18.31,14.21 17.29,15.5L16.5,16.5L15.72,15.5C14.39,13.85 13.22,12.32 12.39,10.91C12.05,10.33 11.76,9.76 11.53,9.18L7.46,13.25L15.21,21H18M3,19A2,2 0 0,0 5,21H13.79L6.75,13.96L3,17.71V19M16.5,15C19.11,11.63 21,9.1 21,6.57C21,4.05 19,2 16.5,2C14,2 12,4.05 12,6.57C12,9.1 13.87,11.63 16.5,15M18.5,6.5A2,2 0 0,1 16.5,8.5A2,2 0 0,1 14.5,6.5A2,2 0 0,1 16.5,4.5A2,2 0 0,1 18.5,6.5Z" /></g><g id="google-nearby"><path d="M4.2,3C3.57,3 3.05,3.5 3,4.11C3,8.66 3,13.24 3,17.8C3,18.46 3.54,19 4.2,19C4.31,19 4.42,19 4.53,18.95C8.5,16.84 12.56,14.38 16.5,12.08C16.94,11.89 17.21,11.46 17.21,11C17.21,10.57 17,10.17 16.6,9.96C12.5,7.56 8.21,5.07 4.53,3.05C4.42,3 4.31,3 4.2,3M19.87,6C19.76,6 19.65,6 19.54,6.05C18.6,6.57 17.53,7.18 16.5,7.75C16.85,7.95 17.19,8.14 17.5,8.33C18.5,8.88 19.07,9.9 19.07,11V11C19.07,12.18 18.38,13.27 17.32,13.77C15.92,14.59 12.92,16.36 11.32,17.29C14.07,18.89 16.82,20.5 19.54,21.95C19.65,22 19.76,22 19.87,22C20.54,22 21.07,21.46 21.07,20.8C21.07,16.24 21.08,11.66 21.07,7.11C21,6.5 20.5,6 19.87,6Z" /></g><g id="google-pages"><path d="M19,3H13V8L17,7L16,11H21V5C21,3.89 20.1,3 19,3M17,17L13,16V21H19A2,2 0 0,0 21,19V13H16M8,13H3V19A2,2 0 0,0 5,21H11V16L7,17M3,5V11H8L7,7L11,8V3H5C3.89,3 3,3.89 3,5Z" /></g><g id="google-photos"><path d="M17,12V7L12,2V7H7L2,12H7V17L12,22V17H17L22,12H17M12.88,12.88L12,15.53L11.12,12.88L8.47,12L11.12,11.12L12,8.46L12.88,11.11L15.53,12L12.88,12.88Z" /></g><g id="google-physical-web"><path d="M12,1.5A9,9 0 0,1 21,10.5C21,13.11 19.89,15.47 18.11,17.11L17.05,16.05C18.55,14.68 19.5,12.7 19.5,10.5A7.5,7.5 0 0,0 12,3A7.5,7.5 0 0,0 4.5,10.5C4.5,12.7 5.45,14.68 6.95,16.05L5.89,17.11C4.11,15.47 3,13.11 3,10.5A9,9 0 0,1 12,1.5M12,4.5A6,6 0 0,1 18,10.5C18,12.28 17.22,13.89 16,15L14.92,13.92C15.89,13.1 16.5,11.87 16.5,10.5C16.5,8 14.5,6 12,6C9.5,6 7.5,8 7.5,10.5C7.5,11.87 8.11,13.1 9.08,13.92L8,15C6.78,13.89 6,12.28 6,10.5A6,6 0 0,1 12,4.5M8.11,17.65L11.29,14.46C11.68,14.07 12.32,14.07 12.71,14.46L15.89,17.65C16.28,18.04 16.28,18.67 15.89,19.06L12.71,22.24C12.32,22.63 11.68,22.63 11.29,22.24L8.11,19.06C7.72,18.67 7.72,18.04 8.11,17.65Z" /></g><g id="google-play"><path d="M3,20.5V3.5C3,2.91 3.34,2.39 3.84,2.15L13.69,12L3.84,21.85C3.34,21.6 3,21.09 3,20.5M16.81,15.12L6.05,21.34L14.54,12.85L16.81,15.12M20.16,10.81C20.5,11.08 20.75,11.5 20.75,12C20.75,12.5 20.53,12.9 20.18,13.18L17.89,14.5L15.39,12L17.89,9.5L20.16,10.81M6.05,2.66L16.81,8.88L14.54,11.15L6.05,2.66Z" /></g><g id="google-plus"><path d="M23,11H21V9H19V11H17V13H19V15H21V13H23M8,11V13.4H12C11.8,14.4 10.8,16.4 8,16.4C5.6,16.4 3.7,14.4 3.7,12C3.7,9.6 5.6,7.6 8,7.6C9.4,7.6 10.3,8.2 10.8,8.7L12.7,6.9C11.5,5.7 9.9,5 8,5C4.1,5 1,8.1 1,12C1,15.9 4.1,19 8,19C12,19 14.7,16.2 14.7,12.2C14.7,11.7 14.7,11.4 14.6,11H8Z" /></g><g id="google-plus-box"><path d="M20,2A2,2 0 0,1 22,4V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V4C2,2.89 2.9,2 4,2H20M20,12H18V10H17V12H15V13H17V15H18V13H20V12M9,11.29V13H11.86C11.71,13.71 11,15.14 9,15.14C7.29,15.14 5.93,13.71 5.93,12C5.93,10.29 7.29,8.86 9,8.86C10,8.86 10.64,9.29 11,9.64L12.36,8.36C11.5,7.5 10.36,7 9,7C6.21,7 4,9.21 4,12C4,14.79 6.21,17 9,17C11.86,17 13.79,15 13.79,12.14C13.79,11.79 13.79,11.57 13.71,11.29H9Z" /></g><g id="google-translate"><path d="M3,1C1.89,1 1,1.89 1,3V17C1,18.11 1.89,19 3,19H15L9,1H3M12.34,5L13,7H21V21H12.38L13.03,23H21C22.11,23 23,22.11 23,21V7C23,5.89 22.11,5 21,5H12.34M7.06,5.91C8.16,5.91 9.09,6.31 9.78,7L8.66,8.03C8.37,7.74 7.87,7.41 7.06,7.41C5.67,7.41 4.56,8.55 4.56,9.94C4.56,11.33 5.67,12.5 7.06,12.5C8.68,12.5 9.26,11.33 9.38,10.75H7.06V9.38H10.88C10.93,9.61 10.94,9.77 10.94,10.06C10.94,12.38 9.38,14 7.06,14C4.81,14 3,12.19 3,9.94C3,7.68 4.81,5.91 7.06,5.91M16,10V11H14.34L14.66,12H18C17.73,12.61 17.63,13.17 16.81,14.13C16.41,13.66 16.09,13.25 16,13H15C15.12,13.43 15.62,14.1 16.22,14.78C16.09,14.91 15.91,15.08 15.75,15.22L16.03,16.06C16.28,15.84 16.53,15.61 16.78,15.38C17.8,16.45 18.88,17.44 18.88,17.44L19.44,16.84C19.44,16.84 18.37,15.79 17.41,14.75C18.04,14.05 18.6,13.2 19,12H20V11H17V10H16Z" /></g><g id="google-wallet"><path d="M9.89,11.08C9.76,9.91 9.39,8.77 8.77,7.77C8.5,7.29 8.46,6.7 8.63,6.25C8.71,6 8.83,5.8 9.03,5.59C9.24,5.38 9.46,5.26 9.67,5.18C9.88,5.09 10,5.06 10.31,5.06C10.66,5.06 11,5.17 11.28,5.35L11.72,5.76L11.83,5.92C12.94,7.76 13.53,9.86 13.53,12L13.5,12.79C13.38,14.68 12.8,16.5 11.82,18.13C11.5,18.67 10.92,19 10.29,19L9.78,18.91L9.37,18.73C8.86,18.43 8.57,17.91 8.5,17.37C8.5,17.05 8.54,16.72 8.69,16.41L8.77,16.28C9.54,15 9.95,13.53 9.95,12L9.89,11.08M20.38,7.88C20.68,9.22 20.84,10.62 20.84,12C20.84,13.43 20.68,14.82 20.38,16.16L20.11,17.21C19.78,18.4 19.4,19.32 19,20C18.7,20.62 18.06,21 17.38,21C17.1,21 16.83,20.94 16.58,20.82C16,20.55 15.67,20.07 15.55,19.54L15.5,19.11C15.5,18.7 15.67,18.35 15.68,18.32C16.62,16.34 17.09,14.23 17.09,12C17.09,9.82 16.62,7.69 15.67,5.68C15.22,4.75 15.62,3.63 16.55,3.18C16.81,3.06 17.08,3 17.36,3C18.08,3 18.75,3.42 19.05,4.07C19.63,5.29 20.08,6.57 20.38,7.88M16.12,9.5C16.26,10.32 16.34,11.16 16.34,12C16.34,14 15.95,15.92 15.2,17.72C15.11,16.21 14.75,14.76 14.16,13.44L14.22,12.73L14.25,11.96C14.25,9.88 13.71,7.85 12.67,6.07C14,7.03 15.18,8.21 16.12,9.5M4,10.5C3.15,10.03 2.84,9 3.28,8.18C3.58,7.63 4.15,7.28 4.78,7.28C5.06,7.28 5.33,7.35 5.58,7.5C6.87,8.17 8.03,9.1 8.97,10.16L9.12,11.05L9.18,12C9.18,13.43 8.81,14.84 8.1,16.07C7.6,13.66 6.12,11.62 4,10.5Z" /></g><g id="gradient"><path d="M11,9H13V11H11V9M9,11H11V13H9V11M13,11H15V13H13V11M15,9H17V11H15V9M7,9H9V11H7V9M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M9,18H7V16H9V18M13,18H11V16H13V18M17,18H15V16H17V18M19,11H17V13H19V15H17V13H15V15H13V13H11V15H9V13H7V15H5V13H7V11H5V5H19V11Z" /></g><g id="grease-pencil"><path d="M18.62,1.5C18.11,1.5 17.6,1.69 17.21,2.09L10.75,8.55L14.95,12.74L21.41,6.29C22.2,5.5 22.2,4.24 21.41,3.46L20.04,2.09C19.65,1.69 19.14,1.5 18.62,1.5M9.8,9.5L3.23,16.07L3.93,16.77C3.4,17.24 2.89,17.78 2.38,18.29C1.6,19.08 1.6,20.34 2.38,21.12C3.16,21.9 4.42,21.9 5.21,21.12C5.72,20.63 6.25,20.08 6.73,19.58L7.43,20.27L14,13.7" /></g><g id="grid"><path d="M10,4V8H14V4H10M16,4V8H20V4H16M16,10V14H20V10H16M16,16V20H20V16H16M14,20V16H10V20H14M8,20V16H4V20H8M8,14V10H4V14H8M8,8V4H4V8H8M10,14H14V10H10V14M4,2H20A2,2 0 0,1 22,4V20A2,2 0 0,1 20,22H4C2.92,22 2,21.1 2,20V4A2,2 0 0,1 4,2Z" /></g><g id="grid-off"><path d="M0,2.77L1.28,1.5L22.5,22.72L21.23,24L19.23,22H4C2.92,22 2,21.1 2,20V4.77L0,2.77M10,4V7.68L8,5.68V4H6.32L4.32,2H20A2,2 0 0,1 22,4V19.7L20,17.7V16H18.32L16.32,14H20V10H16V13.68L14,11.68V10H12.32L10.32,8H14V4H10M16,4V8H20V4H16M16,20H17.23L16,18.77V20M4,8H5.23L4,6.77V8M10,14H11.23L10,12.77V14M14,20V16.77L13.23,16H10V20H14M8,20V16H4V20H8M8,14V10.77L7.23,10H4V14H8Z" /></g><g id="group"><path d="M8,8V12H13V8H8M1,1H5V2H19V1H23V5H22V19H23V23H19V22H5V23H1V19H2V5H1V1M5,19V20H19V19H20V5H19V4H5V5H4V19H5M6,6H15V10H18V18H8V14H6V6M15,14H10V16H16V12H15V14Z" /></g><g id="guitar-electric"><path d="M20.5,2L18.65,4.08L18.83,4.26L10.45,12.16C10.23,12.38 9.45,12.75 9.26,12.28C8.81,11.12 10.23,11 10,10.8C8.94,10.28 7.73,11.18 7.67,11.23C6.94,11.78 6.5,12.43 6.26,13.13C5.96,14.04 5.17,14.15 4.73,14.17C3.64,14.24 3,14.53 2.5,15.23C2.27,15.54 1.9,16 2,16.96C2.16,18 2.95,19.33 3.56,20C4.21,20.69 5.05,21.38 5.81,21.75C6.35,22 6.68,22.08 7.47,21.88C8.17,21.7 8.86,21.14 9.15,20.4C9.39,19.76 9.42,19.3 9.53,18.78C9.67,18.11 9.76,18 10.47,17.68C11.14,17.39 11.5,17.35 12.05,16.78C12.44,16.37 12.64,15.93 12.76,15.46C12.86,15.06 12.93,14.56 12.74,14.5C12.57,14.35 12.27,15.31 11.56,14.86C11.05,14.54 11.11,13.74 11.55,13.29C14.41,10.38 16.75,8 19.63,5.09L19.86,5.32L22,3.5Z" /></g><g id="guitar-pick"><path d="M19,4.1C18.1,3.3 17,2.8 15.8,2.5C15.5,2.4 13.6,2 12.2,2C12.2,2 12.1,2 12,2C12,2 11.9,2 11.8,2C10.4,2 8.4,2.4 8.1,2.5C7,2.8 5.9,3.3 5,4.1C3,5.9 3,8.7 4,11C5,13.5 6.1,15.7 7.6,17.9C8.8,19.6 10.1,22 12,22C13.9,22 15.2,19.6 16.5,17.9C18,15.8 19.1,13.5 20.1,11C21,8.7 21,5.9 19,4.1Z" /></g><g id="guitar-pick-outline"><path d="M19,4.1C18.1,3.3 17,2.8 15.8,2.5C15.5,2.4 13.6,2 12.2,2C12.2,2 12.1,2 12,2C12,2 11.9,2 11.8,2C10.4,2 8.4,2.4 8.1,2.5C7,2.8 5.9,3.3 5,4.1C3,5.9 3,8.7 4,11C5,13.5 6.1,15.7 7.6,17.9C8.8,19.6 10.1,22 12,22C13.9,22 15.2,19.6 16.5,17.9C18,15.8 19.1,13.5 20.1,11C21,8.7 21,5.9 19,4.1M18.2,10.2C17.1,12.9 16.1,14.9 14.8,16.7C14.6,16.9 14.5,17.2 14.3,17.4C13.8,18.2 12.6,20 12,20C12,20 12,20 12,20C11.3,20 10.2,18.3 9.6,17.4C9.4,17.2 9.3,16.9 9.1,16.7C7.9,14.9 6.8,12.9 5.7,10.2C5.5,9.5 4.7,7 6.3,5.5C6.8,5 7.6,4.7 8.6,4.4C9,4.4 10.7,4 11.8,4C11.8,4 12.1,4 12.1,4C13.2,4 14.9,4.3 15.3,4.4C16.3,4.7 17.1,5 17.6,5.5C19.3,7 18.5,9.5 18.2,10.2Z" /></g><g id="hackernews"><path d="M2,2H22V22H2V2M11.25,17.5H12.75V13.06L16,7H14.5L12,11.66L9.5,7H8L11.25,13.06V17.5Z" /></g><g id="hamburger"><path d="M2,16H22V18C22,19.11 21.11,20 20,20H4C2.89,20 2,19.11 2,18V16M6,4H18C20.22,4 22,5.78 22,8V10H2V8C2,5.78 3.78,4 6,4M4,11H15L17,13L19,11H20C21.11,11 22,11.89 22,13C22,14.11 21.11,15 20,15H4C2.89,15 2,14.11 2,13C2,11.89 2.89,11 4,11Z" /></g><g id="hand-pointing-right"><path d="M21,9A1,1 0 0,1 22,10A1,1 0 0,1 21,11H16.53L16.4,12.21L14.2,17.15C14,17.65 13.47,18 12.86,18H8.5C7.7,18 7,17.27 7,16.5V10C7,9.61 7.16,9.26 7.43,9L11.63,4.1L12.4,4.84C12.6,5.03 12.72,5.29 12.72,5.58L12.69,5.8L11,9H21M2,18V10H5V18H2Z" /></g><g id="hanger"><path d="M20.76,16.34H20.75C21.5,16.77 22,17.58 22,18.5A2.5,2.5 0 0,1 19.5,21H4.5A2.5,2.5 0 0,1 2,18.5C2,17.58 2.5,16.77 3.25,16.34H3.24L11,11.86C11,11.86 11,11 12,10C13,10 14,9.1 14,8A2,2 0 0,0 12,6A2,2 0 0,0 10,8H8A4,4 0 0,1 12,4A4,4 0 0,1 16,8C16,9.86 14.73,11.42 13,11.87L20.76,16.34M4.5,19V19H19.5V19C19.67,19 19.84,18.91 19.93,18.75C20.07,18.5 20,18.21 19.75,18.07L12,13.59L4.25,18.07C4,18.21 3.93,18.5 4.07,18.75C4.16,18.91 4.33,19 4.5,19Z" /></g><g id="hangouts"><path d="M15,11L14,13H12.5L13.5,11H12V8H15M11,11L10,13H8.5L9.5,11H8V8H11M11.5,2A8.5,8.5 0 0,0 3,10.5A8.5,8.5 0 0,0 11.5,19H12V22.5C16.86,20.15 20,15 20,10.5C20,5.8 16.19,2 11.5,2Z" /></g><g id="harddisk"><path d="M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M12,4A6,6 0 0,0 6,10C6,13.31 8.69,16 12.1,16L11.22,13.77C10.95,13.29 11.11,12.68 11.59,12.4L12.45,11.9C12.93,11.63 13.54,11.79 13.82,12.27L15.74,14.69C17.12,13.59 18,11.9 18,10A6,6 0 0,0 12,4M12,9A1,1 0 0,1 13,10A1,1 0 0,1 12,11A1,1 0 0,1 11,10A1,1 0 0,1 12,9M7,18A1,1 0 0,0 6,19A1,1 0 0,0 7,20A1,1 0 0,0 8,19A1,1 0 0,0 7,18M12.09,13.27L14.58,19.58L17.17,18.08L12.95,12.77L12.09,13.27Z" /></g><g id="headphones"><path d="M12,1C7,1 3,5 3,10V17A3,3 0 0,0 6,20H9V12H5V10A7,7 0 0,1 12,3A7,7 0 0,1 19,10V12H15V20H18A3,3 0 0,0 21,17V10C21,5 16.97,1 12,1Z" /></g><g id="headphones-box"><path d="M7.2,18C6.54,18 6,17.46 6,16.8V13.2L6,12A6,6 0 0,1 12,6A6,6 0 0,1 18,12V13.2L18,16.8A1.2,1.2 0 0,1 16.8,18H14V14H16V12A4,4 0 0,0 12,8A4,4 0 0,0 8,12V14H10V18M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="headphones-settings"><path d="M12,1A9,9 0 0,1 21,10V17A3,3 0 0,1 18,20H15V12H19V10A7,7 0 0,0 12,3A7,7 0 0,0 5,10V12H9V20H6A3,3 0 0,1 3,17V10A9,9 0 0,1 12,1M15,24V22H17V24H15M11,24V22H13V24H11M7,24V22H9V24H7Z" /></g><g id="headset"><path d="M12,1C7,1 3,5 3,10V17A3,3 0 0,0 6,20H9V12H5V10A7,7 0 0,1 12,3A7,7 0 0,1 19,10V12H15V20H19V21H12V23H18A3,3 0 0,0 21,20V10C21,5 16.97,1 12,1Z" /></g><g id="headset-dock"><path d="M2,18H9V6.13C7.27,6.57 6,8.14 6,10V11H8V17H6A2,2 0 0,1 4,15V10A6,6 0 0,1 10,4H11A6,6 0 0,1 17,10V12H18V9H20V12A2,2 0 0,1 18,14H17V15A2,2 0 0,1 15,17H13V11H15V10C15,8.14 13.73,6.57 12,6.13V18H22V20H2V18Z" /></g><g id="headset-off"><path d="M22.5,4.77L20.43,6.84C20.8,7.82 21,8.89 21,10V20A3,3 0 0,1 18,23H12V21H19V20H15V12.27L9,18.27V20H7.27L4.77,22.5L3.5,21.22L21.22,3.5L22.5,4.77M12,1C14.53,1 16.82,2.04 18.45,3.72L17.04,5.14C15.77,3.82 14,3 12,3A7,7 0 0,0 5,10V12H9V13.18L3.5,18.67C3.19,18.19 3,17.62 3,17V10A9,9 0 0,1 12,1M19,12V10C19,9.46 18.94,8.94 18.83,8.44L15.27,12H19Z" /></g><g id="heart"><path d="M12,21.35L10.55,20.03C5.4,15.36 2,12.27 2,8.5C2,5.41 4.42,3 7.5,3C9.24,3 10.91,3.81 12,5.08C13.09,3.81 14.76,3 16.5,3C19.58,3 22,5.41 22,8.5C22,12.27 18.6,15.36 13.45,20.03L12,21.35Z" /></g><g id="heart-box"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M12,17L12.72,16.34C15.3,14 17,12.46 17,10.57C17,9.03 15.79,7.82 14.25,7.82C13.38,7.82 12.55,8.23 12,8.87C11.45,8.23 10.62,7.82 9.75,7.82C8.21,7.82 7,9.03 7,10.57C7,12.46 8.7,14 11.28,16.34L12,17Z" /></g><g id="heart-box-outline"><path d="M12,17L11.28,16.34C8.7,14 7,12.46 7,10.57C7,9.03 8.21,7.82 9.75,7.82C10.62,7.82 11.45,8.23 12,8.87C12.55,8.23 13.38,7.82 14.25,7.82C15.79,7.82 17,9.03 17,10.57C17,12.46 15.3,14 12.72,16.34L12,17M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z" /></g><g id="heart-broken"><path d="M12,21.35L10.55,20.03C5.4,15.36 2,12.27 2,8.5C2,5.41 4.42,3 7.5,3C8.17,3 8.82,3.12 9.44,3.33L13,9.35L9,14.35L12,21.35V21.35M16.5,3C19.58,3 22,5.41 22,8.5C22,12.27 18.6,15.36 13.45,20.03L12,21.35L11,14.35L15.5,9.35L12.85,4.27C13.87,3.47 15.17,3 16.5,3Z" /></g><g id="heart-half-outline"><path d="M16.5,5C15,5 13.58,5.91 13,7.2V17.74C17.25,13.87 20,11.2 20,8.5C20,6.5 18.5,5 16.5,5M16.5,3C19.58,3 22,5.41 22,8.5C22,12.27 18.6,15.36 13.45,20.03L12,21.35L10.55,20.03C5.4,15.36 2,12.27 2,8.5C2,5.41 4.42,3 7.5,3C9.24,3 10.91,3.81 12,5.08C13.09,3.81 14.76,3 16.5,3Z" /></g><g id="heart-half-part"><path d="M13,7.2V17.74L13,20.44L12,21.35L10.55,20.03C5.4,15.36 2,12.27 2,8.5C2,5.41 4.42,3 7.5,3C10,3 13,5 13,7.2Z" /></g><g id="heart-half-part-outline"><path d="M4,8.5C4,11.2 6.75,13.87 11,17.74V7.2C10.42,5.91 9,5 7.5,5C5.5,5 4,6.5 4,8.5M13,7.2V17.74L13,20.44L12,21.35L10.55,20.03C5.4,15.36 2,12.27 2,8.5C2,5.41 4.42,3 7.5,3C10,3 13,5 13,7.2Z" /></g><g id="heart-outline"><path d="M12.1,18.55L12,18.65L11.89,18.55C7.14,14.24 4,11.39 4,8.5C4,6.5 5.5,5 7.5,5C9.04,5 10.54,6 11.07,7.36H12.93C13.46,6 14.96,5 16.5,5C18.5,5 20,6.5 20,8.5C20,11.39 16.86,14.24 12.1,18.55M16.5,3C14.76,3 13.09,3.81 12,5.08C10.91,3.81 9.24,3 7.5,3C4.42,3 2,5.41 2,8.5C2,12.27 5.4,15.36 10.55,20.03L12,21.35L13.45,20.03C18.6,15.36 22,12.27 22,8.5C22,5.41 19.58,3 16.5,3Z" /></g><g id="heart-pulse"><path d="M7.5,4A5.5,5.5 0 0,0 2,9.5C2,10 2.09,10.5 2.22,11H6.3L7.57,7.63C7.87,6.83 9.05,6.75 9.43,7.63L11.5,13L12.09,11.58C12.22,11.25 12.57,11 13,11H21.78C21.91,10.5 22,10 22,9.5A5.5,5.5 0 0,0 16.5,4C14.64,4 13,4.93 12,6.34C11,4.93 9.36,4 7.5,4V4M3,12.5A1,1 0 0,0 2,13.5A1,1 0 0,0 3,14.5H5.44L11,20C12,20.9 12,20.9 13,20L18.56,14.5H21A1,1 0 0,0 22,13.5A1,1 0 0,0 21,12.5H13.4L12.47,14.8C12.07,15.81 10.92,15.67 10.55,14.83L8.5,9.5L7.54,11.83C7.39,12.21 7.05,12.5 6.6,12.5H3Z" /></g><g id="help"><path d="M10,19H13V22H10V19M12,2C17.35,2.22 19.68,7.62 16.5,11.67C15.67,12.67 14.33,13.33 13.67,14.17C13,15 13,16 13,17H10C10,15.33 10,13.92 10.67,12.92C11.33,11.92 12.67,11.33 13.5,10.67C15.92,8.43 15.32,5.26 12,5A3,3 0 0,0 9,8H6A6,6 0 0,1 12,2Z" /></g><g id="help-circle"><path d="M15.07,11.25L14.17,12.17C13.45,12.89 13,13.5 13,15H11V14.5C11,13.39 11.45,12.39 12.17,11.67L13.41,10.41C13.78,10.05 14,9.55 14,9C14,7.89 13.1,7 12,7A2,2 0 0,0 10,9H8A4,4 0 0,1 12,5A4,4 0 0,1 16,9C16,9.88 15.64,10.67 15.07,11.25M13,19H11V17H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z" /></g><g id="help-circle-outline"><path d="M11,18H13V16H11V18M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,6A4,4 0 0,0 8,10H10A2,2 0 0,1 12,8A2,2 0 0,1 14,10C14,12 11,11.75 11,15H13C13,12.75 16,12.5 16,10A4,4 0 0,0 12,6Z" /></g><g id="hexagon"><path d="M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5Z" /></g><g id="hexagon-outline"><path d="M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15Z" /></g><g id="highway"><path d="M10,2L8,8H11V2H10M13,2V8H16L14,2H13M2,9V10H4V11H6V10H18L18.06,11H20V10H22V9H2M7,11L3.34,22H11V11H7M13,11V22H20.66L17,11H13Z" /></g><g id="history"><path d="M11,7V12.11L15.71,14.9L16.5,13.62L12.5,11.25V7M12.5,2C8.97,2 5.91,3.92 4.27,6.77L2,4.5V11H8.5L5.75,8.25C6.96,5.73 9.5,4 12.5,4A7.5,7.5 0 0,1 20,11.5A7.5,7.5 0 0,1 12.5,19C9.23,19 6.47,16.91 5.44,14H3.34C4.44,18.03 8.11,21 12.5,21C17.74,21 22,16.75 22,11.5A9.5,9.5 0 0,0 12.5,2Z" /></g><g id="hololens"><path d="M12,8C12,8 22,8 22,11C22,11 22.09,14.36 21.75,14.25C21,11 12,11 12,11C12,11 3,11 2.25,14.25C1.91,14.36 2,11 2,11C2,8 12,8 12,8M12,12C20,12 20.75,14.25 20.75,14.25C19.75,17.25 19,18 15,18C12,18 13,16.5 12,16.5C11,16.5 12,18 9,18C5,18 4.25,17.25 3.25,14.25C3.25,14.25 4,12 12,12Z" /></g><g id="home"><path d="M10,20V14H14V20H19V12H22L12,3L2,12H5V20H10Z" /></g><g id="home-map-marker"><path d="M12,3L2,12H5V20H19V12H22L12,3M12,7.7C14.1,7.7 15.8,9.4 15.8,11.5C15.8,14.5 12,18 12,18C12,18 8.2,14.5 8.2,11.5C8.2,9.4 9.9,7.7 12,7.7M12,10A1.5,1.5 0 0,0 10.5,11.5A1.5,1.5 0 0,0 12,13A1.5,1.5 0 0,0 13.5,11.5A1.5,1.5 0 0,0 12,10Z" /></g><g id="home-modern"><path d="M6,21V8A2,2 0 0,1 8,6L16,3V6A2,2 0 0,1 18,8V21H12V16H8V21H6M14,19H16V16H14V19M8,13H10V9H8V13M12,13H16V9H12V13Z" /></g><g id="home-outline"><path d="M9,19V13H11L13,13H15V19H18V10.91L12,4.91L6,10.91V19H9M12,2.09L21.91,12H20V21H13V15H11V21H4V12H2.09L12,2.09Z" /></g><g id="home-variant"><path d="M8,20H5V12H2L12,3L22,12H19V20H12V14H8V20M14,14V17H17V14H14Z" /></g><g id="hook"><path d="M18,6C18,7.82 16.76,9.41 15,9.86V17A5,5 0 0,1 10,22A5,5 0 0,1 5,17V12L10,17H7A3,3 0 0,0 10,20A3,3 0 0,0 13,17V9.86C11.23,9.4 10,7.8 10,5.97C10,3.76 11.8,2 14,2C16.22,2 18,3.79 18,6M14,8A2,2 0 0,0 16,6A2,2 0 0,0 14,4A2,2 0 0,0 12,6A2,2 0 0,0 14,8Z" /></g><g id="hook-off"><path d="M13,9.86V11.18L15,13.18V9.86C17.14,9.31 18.43,7.13 17.87,5C17.32,2.85 15.14,1.56 13,2.11C10.86,2.67 9.57,4.85 10.13,7C10.5,8.4 11.59,9.5 13,9.86M14,4A2,2 0 0,1 16,6A2,2 0 0,1 14,8A2,2 0 0,1 12,6A2,2 0 0,1 14,4M18.73,22L14.86,18.13C14.21,20.81 11.5,22.46 8.83,21.82C6.6,21.28 5,19.29 5,17V12L10,17H7A3,3 0 0,0 10,20A3,3 0 0,0 13,17V16.27L2,5.27L3.28,4L13,13.72L15,15.72L20,20.72L18.73,22Z" /></g><g id="hops"><path d="M21,12C21,12 12.5,10 12.5,2C12.5,2 21,2 21,12M3,12C3,2 11.5,2 11.5,2C11.5,10 3,12 3,12M12,6.5C12,6.5 13,8.66 15,10.5C14.76,14.16 12,16 12,16C12,16 9.24,14.16 9,10.5C11,8.66 12,6.5 12,6.5M20.75,13.25C20.75,13.25 20,17 18,19C18,19 15.53,17.36 14.33,14.81C15.05,13.58 15.5,12.12 15.75,11.13C17.13,12.18 18.75,13 20.75,13.25M15.5,18.25C14.5,20.25 12,21.75 12,21.75C12,21.75 9.5,20.25 8.5,18.25C8.5,18.25 9.59,17.34 10.35,15.8C10.82,16.35 11.36,16.79 12,17C12.64,16.79 13.18,16.35 13.65,15.8C14.41,17.34 15.5,18.25 15.5,18.25M3.25,13.25C5.25,13 6.87,12.18 8.25,11.13C8.5,12.12 8.95,13.58 9.67,14.81C8.47,17.36 6,19 6,19C4,17 3.25,13.25 3.25,13.25Z" /></g><g id="hospital"><path d="M18,14H14V18H10V14H6V10H10V6H14V10H18M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="hospital-building"><path d="M2,22V7A1,1 0 0,1 3,6H7V2H17V6H21A1,1 0 0,1 22,7V22H14V17H10V22H2M9,4V10H11V8H13V10H15V4H13V6H11V4H9M4,20H8V17H4V20M4,15H8V12H4V15M16,20H20V17H16V20M16,15H20V12H16V15M10,15H14V12H10V15Z" /></g><g id="hospital-marker"><path d="M12,2C15.86,2 19,5.13 19,9C19,14.25 12,22 12,22C12,22 5,14.25 5,9A7,7 0 0,1 12,2M9,6V12H11V10H13V12H15V6H13V8H11V6H9Z" /></g><g id="hotel"><path d="M19,7H11V14H3V5H1V20H3V17H21V20H23V11A4,4 0 0,0 19,7M7,13A3,3 0 0,0 10,10A3,3 0 0,0 7,7A3,3 0 0,0 4,10A3,3 0 0,0 7,13Z" /></g><g id="houzz"><path d="M12,24V16L5.1,20V12H5.1V4L12,0V8L5.1,12L12,16V8L18.9,4V12H18.9V20L12,24Z" /></g><g id="houzz-box"><path d="M12,4L7.41,6.69V12L12,9.3V4M12,9.3V14.7L12,20L16.59,17.31V12L16.59,6.6L12,9.3M12,14.7L7.41,12V17.4L12,14.7M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z" /></g><g id="human"><path d="M21,9H15V22H13V16H11V22H9V9H3V7H21M12,2A2,2 0 0,1 14,4A2,2 0 0,1 12,6C10.89,6 10,5.1 10,4C10,2.89 10.89,2 12,2Z" /></g><g id="human-child"><path d="M12,2A3,3 0 0,1 15,5A3,3 0 0,1 12,8A3,3 0 0,1 9,5A3,3 0 0,1 12,2M11,22H8V16H6V9H18V16H16V22H13V18H11V22Z" /></g><g id="human-female"><path d="M12,2A2,2 0 0,1 14,4A2,2 0 0,1 12,6A2,2 0 0,1 10,4A2,2 0 0,1 12,2M10.5,22V16H7.5L10.09,8.41C10.34,7.59 11.1,7 12,7C12.9,7 13.66,7.59 13.91,8.41L16.5,16H13.5V22H10.5Z" /></g><g id="human-greeting"><path d="M1.5,4V5.5C1.5,9.65 3.71,13.28 7,15.3V20H22V18C22,15.34 16.67,14 14,14C14,14 13.83,14 13.75,14C9,14 5,10 5,5.5V4M14,4A4,4 0 0,0 10,8A4,4 0 0,0 14,12A4,4 0 0,0 18,8A4,4 0 0,0 14,4Z" /></g><g id="human-handsdown"><path d="M12,1C10.89,1 10,1.9 10,3C10,4.11 10.89,5 12,5C13.11,5 14,4.11 14,3A2,2 0 0,0 12,1M10,6C9.73,6 9.5,6.11 9.31,6.28H9.3L4,11.59L5.42,13L9,9.41V22H11V15H13V22H15V9.41L18.58,13L20,11.59L14.7,6.28C14.5,6.11 14.27,6 14,6" /></g><g id="human-handsup"><path d="M5,1C5,3.7 6.56,6.16 9,7.32V22H11V15H13V22H15V7.31C17.44,6.16 19,3.7 19,1H17A5,5 0 0,1 12,6A5,5 0 0,1 7,1M12,1C10.89,1 10,1.89 10,3C10,4.11 10.89,5 12,5C13.11,5 14,4.11 14,3C14,1.89 13.11,1 12,1Z" /></g><g id="human-male"><path d="M12,2A2,2 0 0,1 14,4A2,2 0 0,1 12,6A2,2 0 0,1 10,4A2,2 0 0,1 12,2M10.5,7H13.5A2,2 0 0,1 15.5,9V14.5H14V22H10V14.5H8.5V9A2,2 0 0,1 10.5,7Z" /></g><g id="human-male-female"><path d="M7.5,2A2,2 0 0,1 9.5,4A2,2 0 0,1 7.5,6A2,2 0 0,1 5.5,4A2,2 0 0,1 7.5,2M6,7H9A2,2 0 0,1 11,9V14.5H9.5V22H5.5V14.5H4V9A2,2 0 0,1 6,7M16.5,2A2,2 0 0,1 18.5,4A2,2 0 0,1 16.5,6A2,2 0 0,1 14.5,4A2,2 0 0,1 16.5,2M15,22V16H12L14.59,8.41C14.84,7.59 15.6,7 16.5,7C17.4,7 18.16,7.59 18.41,8.41L21,16H18V22H15Z" /></g><g id="human-pregnant"><path d="M9,4C9,2.89 9.89,2 11,2C12.11,2 13,2.89 13,4C13,5.11 12.11,6 11,6C9.89,6 9,5.11 9,4M16,13C16,11.66 15.17,10.5 14,10A3,3 0 0,0 11,7A3,3 0 0,0 8,10V17H10V22H13V17H16V13Z" /></g><g id="image"><path d="M8.5,13.5L11,16.5L14.5,12L19,18H5M21,19V5C21,3.89 20.1,3 19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19Z" /></g><g id="image-album"><path d="M6,19L9,15.14L11.14,17.72L14.14,13.86L18,19H6M6,4H11V12L8.5,10.5L6,12M18,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V4A2,2 0 0,0 18,2Z" /></g><g id="image-area"><path d="M20,5A2,2 0 0,1 22,7V17A2,2 0 0,1 20,19H4C2.89,19 2,18.1 2,17V7C2,5.89 2.89,5 4,5H20M5,16H19L14.5,10L11,14.5L8.5,11.5L5,16Z" /></g><g id="image-area-close"><path d="M12,23L8,19H16L12,23M20,3A2,2 0 0,1 22,5V15A2,2 0 0,1 20,17H4A2,2 0 0,1 2,15V5A2,2 0 0,1 4,3H20M5,14H19L14.5,8L11,12.5L8.5,9.5L5,14Z" /></g><g id="image-broken"><path d="M19,3A2,2 0 0,1 21,5V11H19V13H19L17,13V15H15V17H13V19H11V21H5C3.89,21 3,20.1 3,19V5A2,2 0 0,1 5,3H19M21,15V19A2,2 0 0,1 19,21H19L15,21V19H17V17H19V15H21M19,8.5A0.5,0.5 0 0,0 18.5,8H5.5A0.5,0.5 0 0,0 5,8.5V15.5A0.5,0.5 0 0,0 5.5,16H11V15H13V13H15V11H17V9H19V8.5Z" /></g><g id="image-broken-variant"><path d="M21,5V11.59L18,8.58L14,12.59L10,8.59L6,12.59L3,9.58V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5M18,11.42L21,14.43V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V12.42L6,15.41L10,11.41L14,15.41" /></g><g id="image-filter"><path d="M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M3,5H1V21A2,2 0 0,0 3,23H19V21H3M15.96,10.29L13.21,13.83L11.25,11.47L8.5,15H19.5L15.96,10.29Z" /></g><g id="image-filter-black-white"><path d="M19,19L12,11V19H5L12,11V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="image-filter-center-focus"><path d="M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M19,19H15V21H19A2,2 0 0,0 21,19V15H19M19,3H15V5H19V9H21V5A2,2 0 0,0 19,3M5,5H9V3H5A2,2 0 0,0 3,5V9H5M5,15H3V19A2,2 0 0,0 5,21H9V19H5V15Z" /></g><g id="image-filter-center-focus-weak"><path d="M5,15H3V19A2,2 0 0,0 5,21H9V19H5M5,5H9V3H5A2,2 0 0,0 3,5V9H5M19,3H15V5H19V9H21V5A2,2 0 0,0 19,3M19,19H15V21H19A2,2 0 0,0 21,19V15H19M12,8A4,4 0 0,0 8,12A4,4 0 0,0 12,16A4,4 0 0,0 16,12A4,4 0 0,0 12,8M12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14Z" /></g><g id="image-filter-drama"><path d="M19,18H6A4,4 0 0,1 2,14A4,4 0 0,1 6,10A4,4 0 0,1 10,14H12C12,11.24 10.14,8.92 7.6,8.22C8.61,6.88 10.2,6 12,6C15.03,6 17.5,8.47 17.5,11.5V12H19A3,3 0 0,1 22,15A3,3 0 0,1 19,18M19.35,10.04C18.67,6.59 15.64,4 12,4C9.11,4 6.61,5.64 5.36,8.04C2.35,8.36 0,10.9 0,14A6,6 0 0,0 6,20H19A5,5 0 0,0 24,15C24,12.36 21.95,10.22 19.35,10.04Z" /></g><g id="image-filter-frames"><path d="M18,8H6V18H18M20,20H4V6H8.5L12.04,2.5L15.5,6H20M20,4H16L12,0L8,4H4A2,2 0 0,0 2,6V20A2,2 0 0,0 4,22H20A2,2 0 0,0 22,20V6A2,2 0 0,0 20,4Z" /></g><g id="image-filter-hdr"><path d="M14,6L10.25,11L13.1,14.8L11.5,16C9.81,13.75 7,10 7,10L1,18H23L14,6Z" /></g><g id="image-filter-none"><path d="M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z" /></g><g id="image-filter-tilt-shift"><path d="M5.68,19.74C7.16,20.95 9,21.75 11,21.95V19.93C9.54,19.75 8.21,19.17 7.1,18.31M13,19.93V21.95C15,21.75 16.84,20.95 18.32,19.74L16.89,18.31C15.79,19.17 14.46,19.75 13,19.93M18.31,16.9L19.74,18.33C20.95,16.85 21.75,15 21.95,13H19.93C19.75,14.46 19.17,15.79 18.31,16.9M15,12A3,3 0 0,0 12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12M4.07,13H2.05C2.25,15 3.05,16.84 4.26,18.32L5.69,16.89C4.83,15.79 4.25,14.46 4.07,13M5.69,7.1L4.26,5.68C3.05,7.16 2.25,9 2.05,11H4.07C4.25,9.54 4.83,8.21 5.69,7.1M19.93,11H21.95C21.75,9 20.95,7.16 19.74,5.68L18.31,7.1C19.17,8.21 19.75,9.54 19.93,11M18.32,4.26C16.84,3.05 15,2.25 13,2.05V4.07C14.46,4.25 15.79,4.83 16.9,5.69M11,4.07V2.05C9,2.25 7.16,3.05 5.68,4.26L7.1,5.69C8.21,4.83 9.54,4.25 11,4.07Z" /></g><g id="image-filter-vintage"><path d="M12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16M18.7,12.4C18.42,12.24 18.13,12.11 17.84,12C18.13,11.89 18.42,11.76 18.7,11.6C20.62,10.5 21.69,8.5 21.7,6.41C19.91,5.38 17.63,5.3 15.7,6.41C15.42,6.57 15.16,6.76 14.92,6.95C14.97,6.64 15,6.32 15,6C15,3.78 13.79,1.85 12,0.81C10.21,1.85 9,3.78 9,6C9,6.32 9.03,6.64 9.08,6.95C8.84,6.75 8.58,6.56 8.3,6.4C6.38,5.29 4.1,5.37 2.3,6.4C2.3,8.47 3.37,10.5 5.3,11.59C5.58,11.75 5.87,11.88 6.16,12C5.87,12.1 5.58,12.23 5.3,12.39C3.38,13.5 2.31,15.5 2.3,17.58C4.09,18.61 6.37,18.69 8.3,17.58C8.58,17.42 8.84,17.23 9.08,17.04C9.03,17.36 9,17.68 9,18C9,20.22 10.21,22.15 12,23.19C13.79,22.15 15,20.22 15,18C15,17.68 14.97,17.36 14.92,17.05C15.16,17.25 15.42,17.43 15.7,17.59C17.62,18.7 19.9,18.62 21.7,17.59C21.69,15.5 20.62,13.5 18.7,12.4Z" /></g><g id="image-multiple"><path d="M22,16V4A2,2 0 0,0 20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16M11,12L13.03,14.71L16,11L20,16H8M2,6V20A2,2 0 0,0 4,22H18V20H4V6" /></g><g id="import"><path d="M14,12L10,8V11H2V13H10V16M20,18V6C20,4.89 19.1,4 18,4H6A2,2 0 0,0 4,6V9H6V6H18V18H6V15H4V18A2,2 0 0,0 6,20H18A2,2 0 0,0 20,18Z" /></g><g id="inbox"><path d="M19,15H15A3,3 0 0,1 12,18A3,3 0 0,1 9,15H5V5H19M19,3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="inbox-arrow-down"><path d="M16,10H14V7H10V10H8L12,14M19,15H15A3,3 0 0,1 12,18A3,3 0 0,1 9,15H5V5H19M19,3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="inbox-arrow-up"><path d="M14,14H10V11H8L12,7L16,11H14V14M16,11M5,15V5H19V15H15A3,3 0 0,1 12,18A3,3 0 0,1 9,15H5M19,3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3" /></g><g id="incognito"><path d="M12,3C9.31,3 7.41,4.22 7.41,4.22L6,9H18L16.59,4.22C16.59,4.22 14.69,3 12,3M12,11C9.27,11 5.39,11.54 5.13,11.59C4.09,11.87 3.25,12.15 2.59,12.41C1.58,12.75 1,13 1,13H23C23,13 22.42,12.75 21.41,12.41C20.75,12.15 19.89,11.87 18.84,11.59C18.84,11.59 14.82,11 12,11M7.5,14A3.5,3.5 0 0,0 4,17.5A3.5,3.5 0 0,0 7.5,21A3.5,3.5 0 0,0 11,17.5C11,17.34 11,17.18 10.97,17.03C11.29,16.96 11.63,16.9 12,16.91C12.37,16.91 12.71,16.96 13.03,17.03C13,17.18 13,17.34 13,17.5A3.5,3.5 0 0,0 16.5,21A3.5,3.5 0 0,0 20,17.5A3.5,3.5 0 0,0 16.5,14C15.03,14 13.77,14.9 13.25,16.19C12.93,16.09 12.55,16 12,16C11.45,16 11.07,16.09 10.75,16.19C10.23,14.9 8.97,14 7.5,14M7.5,15A2.5,2.5 0 0,1 10,17.5A2.5,2.5 0 0,1 7.5,20A2.5,2.5 0 0,1 5,17.5A2.5,2.5 0 0,1 7.5,15M16.5,15A2.5,2.5 0 0,1 19,17.5A2.5,2.5 0 0,1 16.5,20A2.5,2.5 0 0,1 14,17.5A2.5,2.5 0 0,1 16.5,15Z" /></g><g id="infinity"><path d="M18.6,6.62C21.58,6.62 24,9 24,12C24,14.96 21.58,17.37 18.6,17.37C17.15,17.37 15.8,16.81 14.78,15.8L12,13.34L9.17,15.85C8.2,16.82 6.84,17.38 5.4,17.38C2.42,17.38 0,14.96 0,12C0,9.04 2.42,6.62 5.4,6.62C6.84,6.62 8.2,7.18 9.22,8.2L12,10.66L14.83,8.15C15.8,7.18 17.16,6.62 18.6,6.62M7.8,14.39L10.5,12L7.84,9.65C7.16,8.97 6.31,8.62 5.4,8.62C3.53,8.62 2,10.13 2,12C2,13.87 3.53,15.38 5.4,15.38C6.31,15.38 7.16,15.03 7.8,14.39M16.2,9.61L13.5,12L16.16,14.35C16.84,15.03 17.7,15.38 18.6,15.38C20.47,15.38 22,13.87 22,12C22,10.13 20.47,8.62 18.6,8.62C17.69,8.62 16.84,8.97 16.2,9.61Z" /></g><g id="information"><path d="M13,9H11V7H13M13,17H11V11H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="information-outline"><path d="M11,9H13V7H11M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M11,17H13V11H11V17Z" /></g><g id="information-variant"><path d="M13.5,4A1.5,1.5 0 0,0 12,5.5A1.5,1.5 0 0,0 13.5,7A1.5,1.5 0 0,0 15,5.5A1.5,1.5 0 0,0 13.5,4M13.14,8.77C11.95,8.87 8.7,11.46 8.7,11.46C8.5,11.61 8.56,11.6 8.72,11.88C8.88,12.15 8.86,12.17 9.05,12.04C9.25,11.91 9.58,11.7 10.13,11.36C12.25,10 10.47,13.14 9.56,18.43C9.2,21.05 11.56,19.7 12.17,19.3C12.77,18.91 14.38,17.8 14.54,17.69C14.76,17.54 14.6,17.42 14.43,17.17C14.31,17 14.19,17.12 14.19,17.12C13.54,17.55 12.35,18.45 12.19,17.88C12,17.31 13.22,13.4 13.89,10.71C14,10.07 14.3,8.67 13.14,8.77Z" /></g><g id="instagram"><path d="M7.8,2H16.2C19.4,2 22,4.6 22,7.8V16.2A5.8,5.8 0 0,1 16.2,22H7.8C4.6,22 2,19.4 2,16.2V7.8A5.8,5.8 0 0,1 7.8,2M7.6,4A3.6,3.6 0 0,0 4,7.6V16.4C4,18.39 5.61,20 7.6,20H16.4A3.6,3.6 0 0,0 20,16.4V7.6C20,5.61 18.39,4 16.4,4H7.6M17.25,5.5A1.25,1.25 0 0,1 18.5,6.75A1.25,1.25 0 0,1 17.25,8A1.25,1.25 0 0,1 16,6.75A1.25,1.25 0 0,1 17.25,5.5M12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9Z" /></g><g id="instapaper"><path d="M10,5A1,1 0 0,0 9,4H8V2H16V4H15A1,1 0 0,0 14,5V19A1,1 0 0,0 15,20H16V22H8V20H9A1,1 0 0,0 10,19V5Z" /></g><g id="internet-explorer"><path d="M13,3L14,3.06C16.8,1.79 19.23,1.64 20.5,2.92C21.5,3.93 21.58,5.67 20.92,7.72C21.61,9 22,10.45 22,12L21.95,13H9.08C9.45,15.28 11.06,17 13,17C14.31,17 15.47,16.21 16.2,15H21.5C20.25,18.5 16.92,21 13,21C11.72,21 10.5,20.73 9.41,20.25C6.5,21.68 3.89,21.9 2.57,20.56C1,18.96 1.68,15.57 4,12C4.93,10.54 6.14,9.06 7.57,7.65L8.38,6.88C7.21,7.57 5.71,8.62 4.19,10.17C5.03,6.08 8.66,3 13,3M13,7C11.21,7 9.69,8.47 9.18,10.5H16.82C16.31,8.47 14.79,7 13,7M20.06,4.06C19.4,3.39 18.22,3.35 16.74,3.81C18.22,4.5 19.5,5.56 20.41,6.89C20.73,5.65 20.64,4.65 20.06,4.06M3.89,20C4.72,20.84 6.4,20.69 8.44,19.76C6.59,18.67 5.17,16.94 4.47,14.88C3.27,17.15 3,19.07 3.89,20Z" /></g><g id="invert-colors"><path d="M12,19.58V19.58C10.4,19.58 8.89,18.96 7.76,17.83C6.62,16.69 6,15.19 6,13.58C6,12 6.62,10.47 7.76,9.34L12,5.1M17.66,7.93L12,2.27V2.27L6.34,7.93C3.22,11.05 3.22,16.12 6.34,19.24C7.9,20.8 9.95,21.58 12,21.58C14.05,21.58 16.1,20.8 17.66,19.24C20.78,16.12 20.78,11.05 17.66,7.93Z" /></g><g id="itunes"><path d="M7.85,17.07C7.03,17.17 3.5,17.67 4.06,20.26C4.69,23.3 9.87,22.59 9.83,19C9.81,16.57 9.83,9.2 9.83,9.2C9.83,9.2 9.76,8.53 10.43,8.39L18.19,6.79C18.19,6.79 18.83,6.65 18.83,7.29C18.83,7.89 18.83,14.2 18.83,14.2C18.83,14.2 18.9,14.83 18.12,15C17.34,15.12 13.91,15.4 14.19,18C14.5,21.07 20,20.65 20,17.07V2.61C20,2.61 20.04,1.62 18.9,1.87L9.5,3.78C9.5,3.78 8.66,3.96 8.66,4.77C8.66,5.5 8.66,16.11 8.66,16.11C8.66,16.11 8.66,16.96 7.85,17.07Z" /></g><g id="jeepney"><path d="M19,13V7H20V4H4V7H5V13H2C2,13.93 2.5,14.71 3.5,14.93V20A1,1 0 0,0 4.5,21H5.5A1,1 0 0,0 6.5,20V19H17.5V20A1,1 0 0,0 18.5,21H19.5A1,1 0 0,0 20.5,20V14.93C21.5,14.7 22,13.93 22,13H19M8,15A1.5,1.5 0 0,1 6.5,13.5A1.5,1.5 0 0,1 8,12A1.5,1.5 0 0,1 9.5,13.5A1.5,1.5 0 0,1 8,15M16,15A1.5,1.5 0 0,1 14.5,13.5A1.5,1.5 0 0,1 16,12A1.5,1.5 0 0,1 17.5,13.5A1.5,1.5 0 0,1 16,15M17.5,10.5C15.92,10.18 14.03,10 12,10C9.97,10 8,10.18 6.5,10.5V7H17.5V10.5Z" /></g><g id="jira"><path d="M12,2A1.58,1.58 0 0,1 13.58,3.58A1.58,1.58 0 0,1 12,5.16A1.58,1.58 0 0,1 10.42,3.58A1.58,1.58 0 0,1 12,2M7.79,3.05C8.66,3.05 9.37,3.76 9.37,4.63C9.37,5.5 8.66,6.21 7.79,6.21A1.58,1.58 0 0,1 6.21,4.63A1.58,1.58 0 0,1 7.79,3.05M16.21,3.05C17.08,3.05 17.79,3.76 17.79,4.63C17.79,5.5 17.08,6.21 16.21,6.21A1.58,1.58 0 0,1 14.63,4.63A1.58,1.58 0 0,1 16.21,3.05M11.8,10.95C9.7,8.84 10.22,7.79 10.22,7.79H13.91C13.91,9.37 11.8,10.95 11.8,10.95M13.91,21.47C13.91,21.47 13.91,19.37 9.7,15.16C5.5,10.95 4.96,9.89 4.43,6.74C4.43,6.74 4.83,6.21 5.36,6.74C5.88,7.26 7.07,7.66 8.12,7.66C8.12,7.66 9.17,10.95 12.07,13.05C12.07,13.05 15.88,9.11 15.88,7.53C15.88,7.53 17.07,7.79 18.5,6.74C18.5,6.74 19.5,6.21 19.57,6.74C19.7,7.79 18.64,11.47 14.3,15.16C14.3,15.16 17.07,18.32 16.8,21.47H13.91M9.17,16.21L11.41,18.71C10.36,19.76 10.22,22 10.22,22H7.07C7.59,17.79 9.17,16.21 9.17,16.21Z" /></g><g id="jsfiddle"><path d="M20.33,10.79C21.9,11.44 23,12.96 23,14.73C23,17.09 21.06,19 18.67,19H5.4C3,18.96 1,17 1,14.62C1,13.03 1.87,11.63 3.17,10.87C3.08,10.59 3.04,10.29 3.04,10C3.04,8.34 4.39,7 6.06,7C6.75,7 7.39,7.25 7.9,7.64C8.96,5.47 11.2,3.96 13.81,3.96C17.42,3.96 20.35,6.85 20.35,10.41C20.35,10.54 20.34,10.67 20.33,10.79M9.22,10.85C7.45,10.85 6,12.12 6,13.67C6,15.23 7.45,16.5 9.22,16.5C10.25,16.5 11.17,16.06 11.76,15.39L10.75,14.25C10.42,14.68 9.77,15 9.22,15C8.43,15 7.79,14.4 7.79,13.67C7.79,12.95 8.43,12.36 9.22,12.36C9.69,12.36 10.12,12.59 10.56,12.88C11,13.16 11.73,14.17 12.31,14.82C13.77,16.29 14.53,16.42 15.4,16.42C17.17,16.42 18.6,15.15 18.6,13.6C18.6,12.04 17.17,10.78 15.4,10.78C14.36,10.78 13.44,11.21 12.85,11.88L13.86,13C14.19,12.59 14.84,12.28 15.4,12.28C16.19,12.28 16.83,12.87 16.83,13.6C16.83,14.32 16.19,14.91 15.4,14.91C14.93,14.91 14.5,14.68 14.05,14.39C13.61,14.11 12.88,13.1 12.31,12.45C10.84,11 10.08,10.85 9.22,10.85Z" /></g><g id="json"><path d="M5,3H7V5H5V10A2,2 0 0,1 3,12A2,2 0 0,1 5,14V19H7V21H5C3.93,20.73 3,20.1 3,19V15A2,2 0 0,0 1,13H0V11H1A2,2 0 0,0 3,9V5A2,2 0 0,1 5,3M19,3A2,2 0 0,1 21,5V9A2,2 0 0,0 23,11H24V13H23A2,2 0 0,0 21,15V19A2,2 0 0,1 19,21H17V19H19V14A2,2 0 0,1 21,12A2,2 0 0,1 19,10V5H17V3H19M12,15A1,1 0 0,1 13,16A1,1 0 0,1 12,17A1,1 0 0,1 11,16A1,1 0 0,1 12,15M8,15A1,1 0 0,1 9,16A1,1 0 0,1 8,17A1,1 0 0,1 7,16A1,1 0 0,1 8,15M16,15A1,1 0 0,1 17,16A1,1 0 0,1 16,17A1,1 0 0,1 15,16A1,1 0 0,1 16,15Z" /></g><g id="keg"><path d="M5,22V20H6V16H5V14H6V11H5V7H11V3H10V2H11L13,2H14V3H13V7H19V11H18V14H19V16H18V20H19V22H5M17,9A1,1 0 0,0 16,8H14A1,1 0 0,0 13,9A1,1 0 0,0 14,10H16A1,1 0 0,0 17,9Z" /></g><g id="kettle"><path d="M12.5,3C7.81,3 4,5.69 4,9V9C4,10.19 4.5,11.34 5.44,12.33C4.53,13.5 4,14.96 4,16.5C4,17.64 4,18.83 4,20C4,21.11 4.89,22 6,22H19C20.11,22 21,21.11 21,20C21,18.85 21,17.61 21,16.5C21,15.28 20.66,14.07 20,13L22,11L19,8L16.9,10.1C15.58,9.38 14.05,9 12.5,9C10.65,9 8.95,9.53 7.55,10.41C7.19,9.97 7,9.5 7,9C7,7.21 9.46,5.75 12.5,5.75V5.75C13.93,5.75 15.3,6.08 16.33,6.67L18.35,4.65C16.77,3.59 14.68,3 12.5,3M12.5,11C12.84,11 13.17,11.04 13.5,11.09C10.39,11.57 8,14.25 8,17.5V20H6V17.5A6.5,6.5 0 0,1 12.5,11Z" /></g><g id="key"><path d="M7,14A2,2 0 0,1 5,12A2,2 0 0,1 7,10A2,2 0 0,1 9,12A2,2 0 0,1 7,14M12.65,10C11.83,7.67 9.61,6 7,6A6,6 0 0,0 1,12A6,6 0 0,0 7,18C9.61,18 11.83,16.33 12.65,14H17V18H21V14H23V10H12.65Z" /></g><g id="key-change"><path d="M6.5,2C8.46,2 10.13,3.25 10.74,5H22V8H18V11H15V8H10.74C10.13,9.75 8.46,11 6.5,11C4,11 2,9 2,6.5C2,4 4,2 6.5,2M6.5,5A1.5,1.5 0 0,0 5,6.5A1.5,1.5 0 0,0 6.5,8A1.5,1.5 0 0,0 8,6.5A1.5,1.5 0 0,0 6.5,5M6.5,13C8.46,13 10.13,14.25 10.74,16H22V19H20V22H18V19H16V22H13V19H10.74C10.13,20.75 8.46,22 6.5,22C4,22 2,20 2,17.5C2,15 4,13 6.5,13M6.5,16A1.5,1.5 0 0,0 5,17.5A1.5,1.5 0 0,0 6.5,19A1.5,1.5 0 0,0 8,17.5A1.5,1.5 0 0,0 6.5,16Z" /></g><g id="key-minus"><path d="M6.5,3C8.46,3 10.13,4.25 10.74,6H22V9H18V12H15V9H10.74C10.13,10.75 8.46,12 6.5,12C4,12 2,10 2,7.5C2,5 4,3 6.5,3M6.5,6A1.5,1.5 0 0,0 5,7.5A1.5,1.5 0 0,0 6.5,9A1.5,1.5 0 0,0 8,7.5A1.5,1.5 0 0,0 6.5,6M8,17H16V19H8V17Z" /></g><g id="key-plus"><path d="M6.5,3C8.46,3 10.13,4.25 10.74,6H22V9H18V12H15V9H10.74C10.13,10.75 8.46,12 6.5,12C4,12 2,10 2,7.5C2,5 4,3 6.5,3M6.5,6A1.5,1.5 0 0,0 5,7.5A1.5,1.5 0 0,0 6.5,9A1.5,1.5 0 0,0 8,7.5A1.5,1.5 0 0,0 6.5,6M8,17H11V14H13V17H16V19H13V22H11V19H8V17Z" /></g><g id="key-remove"><path d="M6.5,3C8.46,3 10.13,4.25 10.74,6H22V9H18V12H15V9H10.74C10.13,10.75 8.46,12 6.5,12C4,12 2,10 2,7.5C2,5 4,3 6.5,3M6.5,6A1.5,1.5 0 0,0 5,7.5A1.5,1.5 0 0,0 6.5,9A1.5,1.5 0 0,0 8,7.5A1.5,1.5 0 0,0 6.5,6M14.59,14L16,15.41L13.41,18L16,20.59L14.59,22L12,19.41L9.41,22L8,20.59L10.59,18L8,15.41L9.41,14L12,16.59L14.59,14Z" /></g><g id="key-variant"><path d="M22,18V22H18V19H15V16H12L9.74,13.74C9.19,13.91 8.61,14 8,14A6,6 0 0,1 2,8A6,6 0 0,1 8,2A6,6 0 0,1 14,8C14,8.61 13.91,9.19 13.74,9.74L22,18M7,5A2,2 0 0,0 5,7A2,2 0 0,0 7,9A2,2 0 0,0 9,7A2,2 0 0,0 7,5Z" /></g><g id="keyboard"><path d="M19,10H17V8H19M19,13H17V11H19M16,10H14V8H16M16,13H14V11H16M16,17H8V15H16M7,10H5V8H7M7,13H5V11H7M8,11H10V13H8M8,8H10V10H8M11,11H13V13H11M11,8H13V10H11M20,5H4C2.89,5 2,5.89 2,7V17A2,2 0 0,0 4,19H20A2,2 0 0,0 22,17V7C22,5.89 21.1,5 20,5Z" /></g><g id="keyboard-backspace"><path d="M21,11H6.83L10.41,7.41L9,6L3,12L9,18L10.41,16.58L6.83,13H21V11Z" /></g><g id="keyboard-caps"><path d="M6,18H18V16H6M12,8.41L16.59,13L18,11.58L12,5.58L6,11.58L7.41,13L12,8.41Z" /></g><g id="keyboard-close"><path d="M12,23L16,19H8M19,8H17V6H19M19,11H17V9H19M16,8H14V6H16M16,11H14V9H16M16,15H8V13H16M7,8H5V6H7M7,11H5V9H7M8,9H10V11H8M8,6H10V8H8M11,9H13V11H11M11,6H13V8H11M20,3H4C2.89,3 2,3.89 2,5V15A2,2 0 0,0 4,17H20A2,2 0 0,0 22,15V5C22,3.89 21.1,3 20,3Z" /></g><g id="keyboard-off"><path d="M1,4.27L2.28,3L20,20.72L18.73,22L15.73,19H4C2.89,19 2,18.1 2,17V7C2,6.5 2.18,6.07 2.46,5.73L1,4.27M19,10V8H17V10H19M19,13V11H17V13H19M16,10V8H14V10H16M16,13V11H14V12.18L11.82,10H13V8H11V9.18L9.82,8L6.82,5H20A2,2 0 0,1 22,7V17C22,17.86 21.46,18.59 20.7,18.87L14.82,13H16M8,15V17H13.73L11.73,15H8M5,10H6.73L5,8.27V10M7,13V11H5V13H7M8,13H9.73L8,11.27V13Z" /></g><g id="keyboard-return"><path d="M19,7V11H5.83L9.41,7.41L8,6L2,12L8,18L9.41,16.58L5.83,13H21V7H19Z" /></g><g id="keyboard-tab"><path d="M20,18H22V6H20M11.59,7.41L15.17,11H1V13H15.17L11.59,16.58L13,18L19,12L13,6L11.59,7.41Z" /></g><g id="keyboard-variant"><path d="M6,16H18V18H6V16M6,13V15H2V13H6M7,15V13H10V15H7M11,15V13H13V15H11M14,15V13H17V15H14M18,15V13H22V15H18M2,10H5V12H2V10M19,12V10H22V12H19M18,12H16V10H18V12M8,12H6V10H8V12M12,12H9V10H12V12M15,12H13V10H15V12M2,9V7H4V9H2M5,9V7H7V9H5M8,9V7H10V9H8M11,9V7H13V9H11M14,9V7H16V9H14M17,9V7H22V9H17Z" /></g><g id="kodi"><path d="M12.03,1C11.82,1 11.6,1.11 11.41,1.31C10.56,2.16 9.72,3 8.88,3.84C8.66,4.06 8.6,4.18 8.38,4.38C8.09,4.62 7.96,4.91 7.97,5.28C8,6.57 8,7.84 8,9.13C8,10.46 8,11.82 8,13.16C8,13.26 8,13.34 8.03,13.44C8.11,13.75 8.31,13.82 8.53,13.59C9.73,12.39 10.8,11.3 12,10.09C13.36,8.73 14.73,7.37 16.09,6C16.5,5.6 16.5,5.15 16.09,4.75C14.94,3.6 13.77,2.47 12.63,1.31C12.43,1.11 12.24,1 12.03,1M18.66,7.66C18.45,7.66 18.25,7.75 18.06,7.94C16.91,9.1 15.75,10.24 14.59,11.41C14.2,11.8 14.2,12.23 14.59,12.63C15.74,13.78 16.88,14.94 18.03,16.09C18.43,16.5 18.85,16.5 19.25,16.09C20.36,15 21.5,13.87 22.59,12.75C22.76,12.58 22.93,12.42 23,12.19V11.88C22.93,11.64 22.76,11.5 22.59,11.31C21.47,10.19 20.37,9.06 19.25,7.94C19.06,7.75 18.86,7.66 18.66,7.66M4.78,8.09C4.65,8.04 4.58,8.14 4.5,8.22C3.35,9.39 2.34,10.43 1.19,11.59C0.93,11.86 0.93,12.24 1.19,12.5C1.81,13.13 2.44,13.75 3.06,14.38C3.6,14.92 4,15.33 4.56,15.88C4.72,16.03 4.86,16 4.94,15.81C5,15.71 5,15.58 5,15.47C5,14.29 5,13.37 5,12.19C5,11 5,9.81 5,8.63C5,8.55 5,8.45 4.97,8.38C4.95,8.25 4.9,8.14 4.78,8.09M12.09,14.25C11.89,14.25 11.66,14.34 11.47,14.53C10.32,15.69 9.18,16.87 8.03,18.03C7.63,18.43 7.63,18.85 8.03,19.25C9.14,20.37 10.26,21.47 11.38,22.59C11.54,22.76 11.71,22.93 11.94,23H12.22C12.44,22.94 12.62,22.79 12.78,22.63C13.9,21.5 15.03,20.38 16.16,19.25C16.55,18.85 16.5,18.4 16.13,18C14.97,16.84 13.84,15.69 12.69,14.53C12.5,14.34 12.3,14.25 12.09,14.25Z" /></g><g id="label"><path d="M17.63,5.84C17.27,5.33 16.67,5 16,5H5A2,2 0 0,0 3,7V17A2,2 0 0,0 5,19H16C16.67,19 17.27,18.66 17.63,18.15L22,12L17.63,5.84Z" /></g><g id="label-outline"><path d="M16,17H5V7H16L19.55,12M17.63,5.84C17.27,5.33 16.67,5 16,5H5A2,2 0 0,0 3,7V17A2,2 0 0,0 5,19H16C16.67,19 17.27,18.66 17.63,18.15L22,12L17.63,5.84Z" /></g><g id="lambda"><path d="M6,20L10.16,7.91L9.34,6H8V4H10C10.42,4 10.78,4.26 10.93,4.63L16.66,18H18V20H16C15.57,20 15.21,19.73 15.07,19.36L11.33,10.65L8.12,20H6Z" /></g><g id="lamp"><path d="M8,2H16L20,14H4L8,2M11,15H13V20H18V22H6V20H11V15Z" /></g><g id="lan"><path d="M10,2C8.89,2 8,2.89 8,4V7C8,8.11 8.89,9 10,9H11V11H2V13H6V15H5C3.89,15 3,15.89 3,17V20C3,21.11 3.89,22 5,22H9C10.11,22 11,21.11 11,20V17C11,15.89 10.11,15 9,15H8V13H16V15H15C13.89,15 13,15.89 13,17V20C13,21.11 13.89,22 15,22H19C20.11,22 21,21.11 21,20V17C21,15.89 20.11,15 19,15H18V13H22V11H13V9H14C15.11,9 16,8.11 16,7V4C16,2.89 15.11,2 14,2H10M10,4H14V7H10V4M5,17H9V20H5V17M15,17H19V20H15V17Z" /></g><g id="lan-connect"><path d="M4,1C2.89,1 2,1.89 2,3V7C2,8.11 2.89,9 4,9H1V11H13V9H10C11.11,9 12,8.11 12,7V3C12,1.89 11.11,1 10,1H4M4,3H10V7H4V3M3,13V18L3,20H10V18H5V13H3M14,13C12.89,13 12,13.89 12,15V19C12,20.11 12.89,21 14,21H11V23H23V21H20C21.11,21 22,20.11 22,19V15C22,13.89 21.11,13 20,13H14M14,15H20V19H14V15Z" /></g><g id="lan-disconnect"><path d="M4,1C2.89,1 2,1.89 2,3V7C2,8.11 2.89,9 4,9H1V11H13V9H10C11.11,9 12,8.11 12,7V3C12,1.89 11.11,1 10,1H4M4,3H10V7H4V3M14,13C12.89,13 12,13.89 12,15V19C12,20.11 12.89,21 14,21H11V23H23V21H20C21.11,21 22,20.11 22,19V15C22,13.89 21.11,13 20,13H14M3.88,13.46L2.46,14.88L4.59,17L2.46,19.12L3.88,20.54L6,18.41L8.12,20.54L9.54,19.12L7.41,17L9.54,14.88L8.12,13.46L6,15.59L3.88,13.46M14,15H20V19H14V15Z" /></g><g id="lan-pending"><path d="M4,1C2.89,1 2,1.89 2,3V7C2,8.11 2.89,9 4,9H1V11H13V9H10C11.11,9 12,8.11 12,7V3C12,1.89 11.11,1 10,1H4M4,3H10V7H4V3M3,12V14H5V12H3M14,13C12.89,13 12,13.89 12,15V19C12,20.11 12.89,21 14,21H11V23H23V21H20C21.11,21 22,20.11 22,19V15C22,13.89 21.11,13 20,13H14M3,15V17H5V15H3M14,15H20V19H14V15M3,18V20H5V18H3M6,18V20H8V18H6M9,18V20H11V18H9Z" /></g><g id="language-c"><path d="M15.45,15.97L15.87,18.41C15.61,18.55 15.19,18.68 14.63,18.8C14.06,18.93 13.39,19 12.62,19C10.41,18.96 8.75,18.3 7.64,17.04C6.5,15.77 5.96,14.16 5.96,12.21C6,9.9 6.68,8.13 8,6.89C9.28,5.64 10.92,5 12.9,5C13.65,5 14.3,5.07 14.84,5.19C15.38,5.31 15.78,5.44 16.04,5.59L15.44,8.08L14.4,7.74C14,7.64 13.53,7.59 13,7.59C11.85,7.58 10.89,7.95 10.14,8.69C9.38,9.42 9,10.54 8.96,12.03C8.97,13.39 9.33,14.45 10.04,15.23C10.75,16 11.74,16.4 13.03,16.41L14.36,16.29C14.79,16.21 15.15,16.1 15.45,15.97Z" /></g><g id="language-cpp"><path d="M10.5,15.97L10.91,18.41C10.65,18.55 10.23,18.68 9.67,18.8C9.1,18.93 8.43,19 7.66,19C5.45,18.96 3.79,18.3 2.68,17.04C1.56,15.77 1,14.16 1,12.21C1.05,9.9 1.72,8.13 3,6.89C4.32,5.64 5.96,5 7.94,5C8.69,5 9.34,5.07 9.88,5.19C10.42,5.31 10.82,5.44 11.08,5.59L10.5,8.08L9.44,7.74C9.04,7.64 8.58,7.59 8.05,7.59C6.89,7.58 5.93,7.95 5.18,8.69C4.42,9.42 4.03,10.54 4,12.03C4,13.39 4.37,14.45 5.08,15.23C5.79,16 6.79,16.4 8.07,16.41L9.4,16.29C9.83,16.21 10.19,16.1 10.5,15.97M11,11H13V9H15V11H17V13H15V15H13V13H11V11M18,11H20V9H22V11H24V13H22V15H20V13H18V11Z" /></g><g id="language-csharp"><path d="M11.5,15.97L11.91,18.41C11.65,18.55 11.23,18.68 10.67,18.8C10.1,18.93 9.43,19 8.66,19C6.45,18.96 4.79,18.3 3.68,17.04C2.56,15.77 2,14.16 2,12.21C2.05,9.9 2.72,8.13 4,6.89C5.32,5.64 6.96,5 8.94,5C9.69,5 10.34,5.07 10.88,5.19C11.42,5.31 11.82,5.44 12.08,5.59L11.5,8.08L10.44,7.74C10.04,7.64 9.58,7.59 9.05,7.59C7.89,7.58 6.93,7.95 6.18,8.69C5.42,9.42 5.03,10.54 5,12.03C5,13.39 5.37,14.45 6.08,15.23C6.79,16 7.79,16.4 9.07,16.41L10.4,16.29C10.83,16.21 11.19,16.1 11.5,15.97M13.89,19L14.5,15H13L13.34,13H14.84L15.16,11H13.66L14,9H15.5L16.11,5H18.11L17.5,9H18.5L19.11,5H21.11L20.5,9H22L21.66,11H20.16L19.84,13H21.34L21,15H19.5L18.89,19H16.89L17.5,15H16.5L15.89,19H13.89M16.84,13H17.84L18.16,11H17.16L16.84,13Z" /></g><g id="language-css3"><path d="M5,3L4.35,6.34H17.94L17.5,8.5H3.92L3.26,11.83H16.85L16.09,15.64L10.61,17.45L5.86,15.64L6.19,14H2.85L2.06,18L9.91,21L18.96,18L20.16,11.97L20.4,10.76L21.94,3H5Z" /></g><g id="language-html5"><path d="M12,17.56L16.07,16.43L16.62,10.33H9.38L9.2,8.3H16.8L17,6.31H7L7.56,12.32H14.45L14.22,14.9L12,15.5L9.78,14.9L9.64,13.24H7.64L7.93,16.43L12,17.56M4.07,3H19.93L18.5,19.2L12,21L5.5,19.2L4.07,3Z" /></g><g id="language-javascript"><path d="M3,3H21V21H3V3M7.73,18.04C8.13,18.89 8.92,19.59 10.27,19.59C11.77,19.59 12.8,18.79 12.8,17.04V11.26H11.1V17C11.1,17.86 10.75,18.08 10.2,18.08C9.62,18.08 9.38,17.68 9.11,17.21L7.73,18.04M13.71,17.86C14.21,18.84 15.22,19.59 16.8,19.59C18.4,19.59 19.6,18.76 19.6,17.23C19.6,15.82 18.79,15.19 17.35,14.57L16.93,14.39C16.2,14.08 15.89,13.87 15.89,13.37C15.89,12.96 16.2,12.64 16.7,12.64C17.18,12.64 17.5,12.85 17.79,13.37L19.1,12.5C18.55,11.54 17.77,11.17 16.7,11.17C15.19,11.17 14.22,12.13 14.22,13.4C14.22,14.78 15.03,15.43 16.25,15.95L16.67,16.13C17.45,16.47 17.91,16.68 17.91,17.26C17.91,17.74 17.46,18.09 16.76,18.09C15.93,18.09 15.45,17.66 15.09,17.06L13.71,17.86Z" /></g><g id="language-php"><path d="M12,18.08C5.37,18.08 0,15.36 0,12C0,8.64 5.37,5.92 12,5.92C18.63,5.92 24,8.64 24,12C24,15.36 18.63,18.08 12,18.08M6.81,10.13C7.35,10.13 7.72,10.23 7.9,10.44C8.08,10.64 8.12,11 8.03,11.47C7.93,12 7.74,12.34 7.45,12.56C7.17,12.78 6.74,12.89 6.16,12.89H5.29L5.82,10.13H6.81M3.31,15.68H4.75L5.09,13.93H6.32C6.86,13.93 7.3,13.87 7.65,13.76C8,13.64 8.32,13.45 8.61,13.18C8.85,12.96 9.04,12.72 9.19,12.45C9.34,12.19 9.45,11.89 9.5,11.57C9.66,10.79 9.55,10.18 9.17,9.75C8.78,9.31 8.18,9.1 7.35,9.1H4.59L3.31,15.68M10.56,7.35L9.28,13.93H10.7L11.44,10.16H12.58C12.94,10.16 13.18,10.22 13.29,10.34C13.4,10.46 13.42,10.68 13.36,11L12.79,13.93H14.24L14.83,10.86C14.96,10.24 14.86,9.79 14.56,9.5C14.26,9.23 13.71,9.1 12.91,9.1H11.64L12,7.35H10.56M18,10.13C18.55,10.13 18.91,10.23 19.09,10.44C19.27,10.64 19.31,11 19.22,11.47C19.12,12 18.93,12.34 18.65,12.56C18.36,12.78 17.93,12.89 17.35,12.89H16.5L17,10.13H18M14.5,15.68H15.94L16.28,13.93H17.5C18.05,13.93 18.5,13.87 18.85,13.76C19.2,13.64 19.5,13.45 19.8,13.18C20.04,12.96 20.24,12.72 20.38,12.45C20.53,12.19 20.64,11.89 20.7,11.57C20.85,10.79 20.74,10.18 20.36,9.75C20,9.31 19.37,9.1 18.54,9.1H15.79L14.5,15.68Z" /></g><g id="language-python"><path d="M19.14,7.5A2.86,2.86 0 0,1 22,10.36V14.14A2.86,2.86 0 0,1 19.14,17H12C12,17.39 12.32,17.96 12.71,17.96H17V19.64A2.86,2.86 0 0,1 14.14,22.5H9.86A2.86,2.86 0 0,1 7,19.64V15.89C7,14.31 8.28,13.04 9.86,13.04H15.11C16.69,13.04 17.96,11.76 17.96,10.18V7.5H19.14M14.86,19.29C14.46,19.29 14.14,19.59 14.14,20.18C14.14,20.77 14.46,20.89 14.86,20.89A0.71,0.71 0 0,0 15.57,20.18C15.57,19.59 15.25,19.29 14.86,19.29M4.86,17.5C3.28,17.5 2,16.22 2,14.64V10.86C2,9.28 3.28,8 4.86,8H12C12,7.61 11.68,7.04 11.29,7.04H7V5.36C7,3.78 8.28,2.5 9.86,2.5H14.14C15.72,2.5 17,3.78 17,5.36V9.11C17,10.69 15.72,11.96 14.14,11.96H8.89C7.31,11.96 6.04,13.24 6.04,14.82V17.5H4.86M9.14,5.71C9.54,5.71 9.86,5.41 9.86,4.82C9.86,4.23 9.54,4.11 9.14,4.11C8.75,4.11 8.43,4.23 8.43,4.82C8.43,5.41 8.75,5.71 9.14,5.71Z" /></g><g id="language-python-text"><path d="M2,5.69C8.92,1.07 11.1,7 11.28,10.27C11.46,13.53 8.29,17.64 4.31,14.92V20.3L2,18.77V5.69M4.22,7.4V12.78C7.84,14.95 9.08,13.17 9.08,10.09C9.08,5.74 6.57,5.59 4.22,7.4M15.08,4.15C15.08,4.15 14.9,7.64 15.08,11.07C15.44,14.5 19.69,11.84 19.69,11.84V4.92L22,5.2V14.44C22,20.6 15.85,20.3 15.85,20.3L15.08,18C20.46,18 19.78,14.43 19.78,14.43C13.27,16.97 12.77,12.61 12.77,12.61V5.69L15.08,4.15Z" /></g><g id="language-swift"><path d="M17.09,19.72C14.73,21.08 11.5,21.22 8.23,19.82C5.59,18.7 3.4,16.74 2,14.5C2.67,15.05 3.46,15.5 4.3,15.9C7.67,17.47 11.03,17.36 13.4,15.9C10.03,13.31 7.16,9.94 5.03,7.19C4.58,6.74 4.25,6.18 3.91,5.68C12.19,11.73 11.83,13.27 6.32,4.67C11.21,9.61 15.75,12.41 15.75,12.41C15.91,12.5 16,12.57 16.11,12.63C16.21,12.38 16.3,12.12 16.37,11.85C17.16,9 16.26,5.73 14.29,3.04C18.84,5.79 21.54,10.95 20.41,15.28C20.38,15.39 20.35,15.5 20.36,15.67C22.6,18.5 22,21.45 21.71,20.89C20.5,18.5 18.23,19.24 17.09,19.72V19.72Z" /></g><g id="laptop"><path d="M4,6H20V16H4M20,18A2,2 0 0,0 22,16V6C22,4.89 21.1,4 20,4H4C2.89,4 2,4.89 2,6V16A2,2 0 0,0 4,18H0V20H24V18H20Z" /></g><g id="laptop-chromebook"><path d="M20,15H4V5H20M14,18H10V17H14M22,18V3H2V18H0V20H24V18H22Z" /></g><g id="laptop-mac"><path d="M12,19A1,1 0 0,1 11,18A1,1 0 0,1 12,17A1,1 0 0,1 13,18A1,1 0 0,1 12,19M4,5H20V16H4M20,18A2,2 0 0,0 22,16V5C22,3.89 21.1,3 20,3H4C2.89,3 2,3.89 2,5V16A2,2 0 0,0 4,18H0A2,2 0 0,0 2,20H22A2,2 0 0,0 24,18H20Z" /></g><g id="laptop-off"><path d="M1,4.27L2.28,3L20,20.72L18.73,22L16.73,20H0V18H4C2.89,18 2,17.1 2,16V6C2,5.78 2.04,5.57 2.1,5.37L1,4.27M4,16H12.73L4,7.27V16M20,16V6H7.82L5.82,4H20A2,2 0 0,1 22,6V16A2,2 0 0,1 20,18H24V20H21.82L17.82,16H20Z" /></g><g id="laptop-windows"><path d="M3,4H21A1,1 0 0,1 22,5V16A1,1 0 0,1 21,17H22L24,20V21H0V20L2,17H3A1,1 0 0,1 2,16V5A1,1 0 0,1 3,4M4,6V15H20V6H4Z" /></g><g id="lastfm"><path d="M18,17.93C15.92,17.92 14.81,16.9 14.04,15.09L13.82,14.6L11.92,10.23C11.29,8.69 9.72,7.64 7.96,7.64C5.57,7.64 3.63,9.59 3.63,12C3.63,14.41 5.57,16.36 7.96,16.36C9.62,16.36 11.08,15.41 11.8,14L12.57,15.81C11.5,17.15 9.82,18 7.96,18C4.67,18 2,15.32 2,12C2,8.69 4.67,6 7.96,6C10.44,6 12.45,7.34 13.47,9.7C13.54,9.89 14.54,12.24 15.42,14.24C15.96,15.5 16.42,16.31 17.91,16.36C19.38,16.41 20.39,15.5 20.39,14.37C20.39,13.26 19.62,13 18.32,12.56C16,11.79 14.79,11 14.79,9.15C14.79,7.33 16,6.12 18,6.12C19.31,6.12 20.24,6.7 20.89,7.86L19.62,8.5C19.14,7.84 18.61,7.57 17.94,7.57C17,7.57 16.33,8.23 16.33,9.1C16.33,10.34 17.43,10.53 18.97,11.03C21.04,11.71 22,12.5 22,14.42C22,16.45 20.27,17.93 18,17.93Z" /></g><g id="launch"><path d="M14,3V5H17.59L7.76,14.83L9.17,16.24L19,6.41V10H21V3M19,19H5V5H12V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V12H19V19Z" /></g><g id="layers"><path d="M12,16L19.36,10.27L21,9L12,2L3,9L4.63,10.27M12,18.54L4.62,12.81L3,14.07L12,21.07L21,14.07L19.37,12.8L12,18.54Z" /></g><g id="layers-off"><path d="M3.27,1L2,2.27L6.22,6.5L3,9L4.63,10.27L12,16L14.1,14.37L15.53,15.8L12,18.54L4.63,12.81L3,14.07L12,21.07L16.95,17.22L20.73,21L22,19.73L3.27,1M19.36,10.27L21,9L12,2L9.09,4.27L16.96,12.15L19.36,10.27M19.81,15L21,14.07L19.57,12.64L18.38,13.56L19.81,15Z" /></g><g id="lead-pencil"><path d="M16.84,2.73C16.45,2.73 16.07,2.88 15.77,3.17L13.65,5.29L18.95,10.6L21.07,8.5C21.67,7.89 21.67,6.94 21.07,6.36L17.9,3.17C17.6,2.88 17.22,2.73 16.84,2.73M12.94,6L4.84,14.11L7.4,14.39L7.58,16.68L9.86,16.85L10.15,19.41L18.25,11.3M4.25,15.04L2.5,21.73L9.2,19.94L8.96,17.78L6.65,17.61L6.47,15.29" /></g><g id="leaf"><path d="M17,8C8,10 5.9,16.17 3.82,21.34L5.71,22L6.66,19.7C7.14,19.87 7.64,20 8,20C19,20 22,3 22,3C21,5 14,5.25 9,6.25C4,7.25 2,11.5 2,13.5C2,15.5 3.75,17.25 3.75,17.25C7,8 17,8 17,8Z" /></g><g id="led-off"><path d="M12,6A4,4 0 0,0 8,10V16H6V18H9V23H11V18H13V23H15V18H18V16H16V10A4,4 0 0,0 12,6Z" /></g><g id="led-on"><path d="M11,0V4H13V0H11M18.3,2.29L15.24,5.29L16.64,6.71L19.7,3.71L18.3,2.29M5.71,2.29L4.29,3.71L7.29,6.71L8.71,5.29L5.71,2.29M12,6A4,4 0 0,0 8,10V16H6V18H9V23H11V18H13V23H15V18H18V16H16V10A4,4 0 0,0 12,6M2,9V11H6V9H2M18,9V11H22V9H18Z" /></g><g id="led-outline"><path d="M12,6A4,4 0 0,0 8,10V16H6V18H9V23H11V18H13V23H15V18H18V16H16V10A4,4 0 0,0 12,6M12,8A2,2 0 0,1 14,10V15H10V10A2,2 0 0,1 12,8Z" /></g><g id="led-variant-off"><path d="M12,3C10.05,3 8.43,4.4 8.08,6.25L16.82,15H18V13H16V7A4,4 0 0,0 12,3M3.28,4L2,5.27L8,11.27V13H6V15H9V21H11V15H11.73L13,16.27V21H15V18.27L18.73,22L20,20.72L15,15.72L8,8.72L3.28,4Z" /></g><g id="led-variant-on"><path d="M12,3A4,4 0 0,0 8,7V13H6V15H9V21H11V15H13V21H15V15H18V13H16V7A4,4 0 0,0 12,3Z" /></g><g id="led-variant-outline"><path d="M12,3A4,4 0 0,0 8,7V13H6V15H9V21H11V15H13V21H15V15H18V13H16V7A4,4 0 0,0 12,3M12,5A2,2 0 0,1 14,7V12H10V7A2,2 0 0,1 12,5Z" /></g><g id="library"><path d="M12,8A3,3 0 0,0 15,5A3,3 0 0,0 12,2A3,3 0 0,0 9,5A3,3 0 0,0 12,8M12,11.54C9.64,9.35 6.5,8 3,8V19C6.5,19 9.64,20.35 12,22.54C14.36,20.35 17.5,19 21,19V8C17.5,8 14.36,9.35 12,11.54Z" /></g><g id="library-books"><path d="M19,7H9V5H19M15,15H9V13H15M19,11H9V9H19M20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M4,6H2V20A2,2 0 0,0 4,22H18V20H4V6Z" /></g><g id="library-music"><path d="M4,6H2V20A2,2 0 0,0 4,22H18V20H4M18,7H15V12.5A2.5,2.5 0 0,1 12.5,15A2.5,2.5 0 0,1 10,12.5A2.5,2.5 0 0,1 12.5,10C13.07,10 13.58,10.19 14,10.5V5H18M20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2Z" /></g><g id="library-plus"><path d="M19,11H15V15H13V11H9V9H13V5H15V9H19M20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M4,6H2V20A2,2 0 0,0 4,22H18V20H4V6Z" /></g><g id="lightbulb"><path d="M12,2A7,7 0 0,0 5,9C5,11.38 6.19,13.47 8,14.74V17A1,1 0 0,0 9,18H15A1,1 0 0,0 16,17V14.74C17.81,13.47 19,11.38 19,9A7,7 0 0,0 12,2M9,21A1,1 0 0,0 10,22H14A1,1 0 0,0 15,21V20H9V21Z" /></g><g id="lightbulb-on"><path d="M12,6A6,6 0 0,1 18,12C18,14.22 16.79,16.16 15,17.2V19A1,1 0 0,1 14,20H10A1,1 0 0,1 9,19V17.2C7.21,16.16 6,14.22 6,12A6,6 0 0,1 12,6M14,21V22A1,1 0 0,1 13,23H11A1,1 0 0,1 10,22V21H14M20,11H23V13H20V11M1,11H4V13H1V11M13,1V4H11V1H13M4.92,3.5L7.05,5.64L5.63,7.05L3.5,4.93L4.92,3.5M16.95,5.63L19.07,3.5L20.5,4.93L18.37,7.05L16.95,5.63Z" /></g><g id="lightbulb-on-outline"><path d="M20,11H23V13H20V11M1,11H4V13H1V11M13,1V4H11V1H13M4.92,3.5L7.05,5.64L5.63,7.05L3.5,4.93L4.92,3.5M16.95,5.63L19.07,3.5L20.5,4.93L18.37,7.05L16.95,5.63M12,6A6,6 0 0,1 18,12C18,14.22 16.79,16.16 15,17.2V19A1,1 0 0,1 14,20H10A1,1 0 0,1 9,19V17.2C7.21,16.16 6,14.22 6,12A6,6 0 0,1 12,6M14,21V22A1,1 0 0,1 13,23H11A1,1 0 0,1 10,22V21H14M11,18H13V15.87C14.73,15.43 16,13.86 16,12A4,4 0 0,0 12,8A4,4 0 0,0 8,12C8,13.86 9.27,15.43 11,15.87V18Z" /></g><g id="lightbulb-outline"><path d="M12,2A7,7 0 0,1 19,9C19,11.38 17.81,13.47 16,14.74V17A1,1 0 0,1 15,18H9A1,1 0 0,1 8,17V14.74C6.19,13.47 5,11.38 5,9A7,7 0 0,1 12,2M9,21V20H15V21A1,1 0 0,1 14,22H10A1,1 0 0,1 9,21M12,4A5,5 0 0,0 7,9C7,11.05 8.23,12.81 10,13.58V16H14V13.58C15.77,12.81 17,11.05 17,9A5,5 0 0,0 12,4Z" /></g><g id="link"><path d="M16,6H13V7.9H16C18.26,7.9 20.1,9.73 20.1,12A4.1,4.1 0 0,1 16,16.1H13V18H16A6,6 0 0,0 22,12C22,8.68 19.31,6 16,6M3.9,12C3.9,9.73 5.74,7.9 8,7.9H11V6H8A6,6 0 0,0 2,12A6,6 0 0,0 8,18H11V16.1H8C5.74,16.1 3.9,14.26 3.9,12M8,13H16V11H8V13Z" /></g><g id="link-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L14.73,18H13V16.27L9.73,13H8V11.27L5.5,8.76C4.5,9.5 3.9,10.68 3.9,12C3.9,14.26 5.74,16.1 8,16.1H11V18H8A6,6 0 0,1 2,12C2,10.16 2.83,8.5 4.14,7.41L2,5.27M16,6A6,6 0 0,1 22,12C22,14.21 20.8,16.15 19,17.19L17.6,15.77C19.07,15.15 20.1,13.7 20.1,12C20.1,9.73 18.26,7.9 16,7.9H13V6H16M8,6H11V7.9H9.72L7.82,6H8M16,11V13H14.82L12.82,11H16Z" /></g><g id="link-variant"><path d="M10.59,13.41C11,13.8 11,14.44 10.59,14.83C10.2,15.22 9.56,15.22 9.17,14.83C7.22,12.88 7.22,9.71 9.17,7.76V7.76L12.71,4.22C14.66,2.27 17.83,2.27 19.78,4.22C21.73,6.17 21.73,9.34 19.78,11.29L18.29,12.78C18.3,11.96 18.17,11.14 17.89,10.36L18.36,9.88C19.54,8.71 19.54,6.81 18.36,5.64C17.19,4.46 15.29,4.46 14.12,5.64L10.59,9.17C9.41,10.34 9.41,12.24 10.59,13.41M13.41,9.17C13.8,8.78 14.44,8.78 14.83,9.17C16.78,11.12 16.78,14.29 14.83,16.24V16.24L11.29,19.78C9.34,21.73 6.17,21.73 4.22,19.78C2.27,17.83 2.27,14.66 4.22,12.71L5.71,11.22C5.7,12.04 5.83,12.86 6.11,13.65L5.64,14.12C4.46,15.29 4.46,17.19 5.64,18.36C6.81,19.54 8.71,19.54 9.88,18.36L13.41,14.83C14.59,13.66 14.59,11.76 13.41,10.59C13,10.2 13,9.56 13.41,9.17Z" /></g><g id="link-variant-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L13.9,17.17L11.29,19.78C9.34,21.73 6.17,21.73 4.22,19.78C2.27,17.83 2.27,14.66 4.22,12.71L5.71,11.22C5.7,12.04 5.83,12.86 6.11,13.65L5.64,14.12C4.46,15.29 4.46,17.19 5.64,18.36C6.81,19.54 8.71,19.54 9.88,18.36L12.5,15.76L10.88,14.15C10.87,14.39 10.77,14.64 10.59,14.83C10.2,15.22 9.56,15.22 9.17,14.83C8.12,13.77 7.63,12.37 7.72,11L2,5.27M12.71,4.22C14.66,2.27 17.83,2.27 19.78,4.22C21.73,6.17 21.73,9.34 19.78,11.29L18.29,12.78C18.3,11.96 18.17,11.14 17.89,10.36L18.36,9.88C19.54,8.71 19.54,6.81 18.36,5.64C17.19,4.46 15.29,4.46 14.12,5.64L10.79,8.97L9.38,7.55L12.71,4.22M13.41,9.17C13.8,8.78 14.44,8.78 14.83,9.17C16.2,10.54 16.61,12.5 16.06,14.23L14.28,12.46C14.23,11.78 13.94,11.11 13.41,10.59C13,10.2 13,9.56 13.41,9.17Z" /></g><g id="linkedin"><path d="M21,21H17V14.25C17,13.19 15.81,12.31 14.75,12.31C13.69,12.31 13,13.19 13,14.25V21H9V9H13V11C13.66,9.93 15.36,9.24 16.5,9.24C19,9.24 21,11.28 21,13.75V21M7,21H3V9H7V21M5,3A2,2 0 0,1 7,5A2,2 0 0,1 5,7A2,2 0 0,1 3,5A2,2 0 0,1 5,3Z" /></g><g id="linkedin-box"><path d="M19,19H16V13.7A1.5,1.5 0 0,0 14.5,12.2A1.5,1.5 0 0,0 13,13.7V19H10V10H13V11.2C13.5,10.36 14.59,9.8 15.5,9.8A3.5,3.5 0 0,1 19,13.3M6.5,8.31C5.5,8.31 4.69,7.5 4.69,6.5A1.81,1.81 0 0,1 6.5,4.69C7.5,4.69 8.31,5.5 8.31,6.5A1.81,1.81 0 0,1 6.5,8.31M8,19H5V10H8M20,2H4C2.89,2 2,2.89 2,4V20A2,2 0 0,0 4,22H20A2,2 0 0,0 22,20V4C22,2.89 21.1,2 20,2Z" /></g><g id="linux"><path d="M13.18,14.5C12.53,15.26 11.47,15.26 10.82,14.5L7.44,10.5C7.16,11.28 7,12.12 7,13C7,14.67 7.57,16.18 8.5,17.27C10,17.37 11.29,17.96 11.78,19C11.85,19 11.93,19 12.22,19C12.71,18 13.95,17.44 15.46,17.33C16.41,16.24 17,14.7 17,13C17,12.12 16.84,11.28 16.56,10.5L13.18,14.5M20,20.75C20,21.3 19.3,22 18.75,22H13.25C12.7,22 12,21.3 12,20.75C12,21.3 11.3,22 10.75,22H5.25C4.7,22 4,21.3 4,20.75C4,19.45 4.94,18.31 6.3,17.65C5.5,16.34 5,14.73 5,13C4,15 2.7,15.56 2.09,15C1.5,14.44 1.79,12.83 3.1,11.41C3.84,10.6 5,9.62 5.81,9.25C6.13,8.56 6.54,7.93 7,7.38V7A5,5 0 0,1 12,2A5,5 0 0,1 17,7V7.38C17.46,7.93 17.87,8.56 18.19,9.25C19,9.62 20.16,10.6 20.9,11.41C22.21,12.83 22.5,14.44 21.91,15C21.3,15.56 20,15 19,13C19,14.75 18.5,16.37 17.67,17.69C19.05,18.33 20,19.44 20,20.75M9.88,9C9.46,9.5 9.46,10.27 9.88,10.75L11.13,12.25C11.54,12.73 12.21,12.73 12.63,12.25L13.88,10.75C14.29,10.27 14.29,9.5 13.88,9H9.88M10,5.25C9.45,5.25 9,5.9 9,7C9,8.1 9.45,8.75 10,8.75C10.55,8.75 11,8.1 11,7C11,5.9 10.55,5.25 10,5.25M14,5.25C13.45,5.25 13,5.9 13,7C13,8.1 13.45,8.75 14,8.75C14.55,8.75 15,8.1 15,7C15,5.9 14.55,5.25 14,5.25Z" /></g><g id="lock"><path d="M12,17A2,2 0 0,0 14,15C14,13.89 13.1,13 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V10C4,8.89 4.9,8 6,8H7V6A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,3A3,3 0 0,0 9,6V8H15V6A3,3 0 0,0 12,3Z" /></g><g id="lock-open"><path d="M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V10A2,2 0 0,1 6,8H15V6A3,3 0 0,0 12,3A3,3 0 0,0 9,6H7A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,17A2,2 0 0,0 14,15A2,2 0 0,0 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17Z" /></g><g id="lock-open-outline"><path d="M18,20V10H6V20H18M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V10A2,2 0 0,1 6,8H15V6A3,3 0 0,0 12,3A3,3 0 0,0 9,6H7A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,17A2,2 0 0,1 10,15A2,2 0 0,1 12,13A2,2 0 0,1 14,15A2,2 0 0,1 12,17Z" /></g><g id="lock-outline"><path d="M12,17C10.89,17 10,16.1 10,15C10,13.89 10.89,13 12,13A2,2 0 0,1 14,15A2,2 0 0,1 12,17M18,20V10H6V20H18M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V10C4,8.89 4.89,8 6,8H7V6A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,3A3,3 0 0,0 9,6V8H15V6A3,3 0 0,0 12,3Z" /></g><g id="lock-pattern"><path d="M7,3A4,4 0 0,1 11,7C11,8.86 9.73,10.43 8,10.87V13.13C8.37,13.22 8.72,13.37 9.04,13.56L13.56,9.04C13.2,8.44 13,7.75 13,7A4,4 0 0,1 17,3A4,4 0 0,1 21,7A4,4 0 0,1 17,11C16.26,11 15.57,10.8 15,10.45L10.45,15C10.8,15.57 11,16.26 11,17A4,4 0 0,1 7,21A4,4 0 0,1 3,17C3,15.14 4.27,13.57 6,13.13V10.87C4.27,10.43 3,8.86 3,7A4,4 0 0,1 7,3M17,13A4,4 0 0,1 21,17A4,4 0 0,1 17,21A4,4 0 0,1 13,17A4,4 0 0,1 17,13M17,15A2,2 0 0,0 15,17A2,2 0 0,0 17,19A2,2 0 0,0 19,17A2,2 0 0,0 17,15Z" /></g><g id="lock-plus"><path d="M18,8H17V6A5,5 0 0,0 12,1A5,5 0 0,0 7,6V8H6A2,2 0 0,0 4,10V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V10A2,2 0 0,0 18,8M8.9,6C8.9,4.29 10.29,2.9 12,2.9C13.71,2.9 15.1,4.29 15.1,6V8H8.9V6M16,16H13V19H11V16H8V14H11V11H13V14H16V16Z" /></g><g id="login"><path d="M10,17.25V14H3V10H10V6.75L15.25,12L10,17.25M8,2H17A2,2 0 0,1 19,4V20A2,2 0 0,1 17,22H8A2,2 0 0,1 6,20V16H8V20H17V4H8V8H6V4A2,2 0 0,1 8,2Z" /></g><g id="login-variant"><path d="M19,3H5C3.89,3 3,3.89 3,5V9H5V5H19V19H5V15H3V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M10.08,15.58L11.5,17L16.5,12L11.5,7L10.08,8.41L12.67,11H3V13H12.67L10.08,15.58Z" /></g><g id="logout"><path d="M17,17.25V14H10V10H17V6.75L22.25,12L17,17.25M13,2A2,2 0 0,1 15,4V8H13V4H4V20H13V16H15V20A2,2 0 0,1 13,22H4A2,2 0 0,1 2,20V4A2,2 0 0,1 4,2H13Z" /></g><g id="logout-variant"><path d="M14.08,15.59L16.67,13H7V11H16.67L14.08,8.41L15.5,7L20.5,12L15.5,17L14.08,15.59M19,3A2,2 0 0,1 21,5V9.67L19,7.67V5H5V19H19V16.33L21,14.33V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19Z" /></g><g id="looks"><path d="M12,6A11,11 0 0,0 1,17H3C3,12.04 7.04,8 12,8C16.96,8 21,12.04 21,17H23A11,11 0 0,0 12,6M12,10C8.14,10 5,13.14 5,17H7A5,5 0 0,1 12,12A5,5 0 0,1 17,17H19C19,13.14 15.86,10 12,10Z" /></g><g id="loop"><path d="M9,14V21H2V19H5.57C4,17.3 3,15 3,12.5A9.5,9.5 0 0,1 12.5,3A9.5,9.5 0 0,1 22,12.5A9.5,9.5 0 0,1 12.5,22H12V20H12.5A7.5,7.5 0 0,0 20,12.5A7.5,7.5 0 0,0 12.5,5A7.5,7.5 0 0,0 5,12.5C5,14.47 5.76,16.26 7,17.6V14H9Z" /></g><g id="loupe"><path d="M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22H20A2,2 0 0,0 22,20V12A10,10 0 0,0 12,2M13,7H11V11H7V13H11V17H13V13H17V11H13V7Z" /></g><g id="lumx"><path d="M12.35,1.75L20.13,9.53L13.77,15.89L12.35,14.47L17.3,9.53L10.94,3.16L12.35,1.75M15.89,9.53L14.47,10.94L10.23,6.7L5.28,11.65L3.87,10.23L10.23,3.87L15.89,9.53M10.23,8.11L11.65,9.53L6.7,14.47L13.06,20.84L11.65,22.25L3.87,14.47L10.23,8.11M8.11,14.47L9.53,13.06L13.77,17.3L18.72,12.35L20.13,13.77L13.77,20.13L8.11,14.47Z" /></g><g id="magnet"><path d="M3,7V13A9,9 0 0,0 12,22A9,9 0 0,0 21,13V7H17V13A5,5 0 0,1 12,18A5,5 0 0,1 7,13V7M17,5H21V2H17M3,5H7V2H3" /></g><g id="magnet-on"><path d="M3,7V13A9,9 0 0,0 12,22A9,9 0 0,0 21,13V7H17V13A5,5 0 0,1 12,18A5,5 0 0,1 7,13V7M17,5H21V2H17M3,5H7V2H3M13,1.5L9,9H11V14.5L15,7H13V1.5Z" /></g><g id="magnify"><path d="M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z" /></g><g id="magnify-minus"><path d="M9,2A7,7 0 0,1 16,9C16,10.57 15.5,12 14.61,13.19L15.41,14H16L22,20L20,22L14,16V15.41L13.19,14.61C12,15.5 10.57,16 9,16A7,7 0 0,1 2,9A7,7 0 0,1 9,2M5,8V10H13V8H5Z" /></g><g id="magnify-plus"><path d="M9,2A7,7 0 0,1 16,9C16,10.57 15.5,12 14.61,13.19L15.41,14H16L22,20L20,22L14,16V15.41L13.19,14.61C12,15.5 10.57,16 9,16A7,7 0 0,1 2,9A7,7 0 0,1 9,2M8,5V8H5V10H8V13H10V10H13V8H10V5H8Z" /></g><g id="mail-ru"><path d="M15.45,11.91C15.34,9.7 13.7,8.37 11.72,8.37H11.64C9.35,8.37 8.09,10.17 8.09,12.21C8.09,14.5 9.62,15.95 11.63,15.95C13.88,15.95 15.35,14.3 15.46,12.36M11.65,6.39C13.18,6.39 14.62,7.07 15.67,8.13V8.13C15.67,7.62 16,7.24 16.5,7.24H16.61C17.35,7.24 17.5,7.94 17.5,8.16V16.06C17.46,16.58 18.04,16.84 18.37,16.5C19.64,15.21 21.15,9.81 17.58,6.69C14.25,3.77 9.78,4.25 7.4,5.89C4.88,7.63 3.26,11.5 4.83,15.11C6.54,19.06 11.44,20.24 14.35,19.06C15.83,18.47 16.5,20.46 15,21.11C12.66,22.1 6.23,22 3.22,16.79C1.19,13.27 1.29,7.08 6.68,3.87C10.81,1.42 16.24,2.1 19.5,5.5C22.95,9.1 22.75,15.8 19.4,18.41C17.89,19.59 15.64,18.44 15.66,16.71L15.64,16.15C14.59,17.2 13.18,17.81 11.65,17.81C8.63,17.81 6,15.15 6,12.13C6,9.08 8.63,6.39 11.65,6.39Z" /></g><g id="map"><path d="M15,19L9,16.89V5L15,7.11M20.5,3C20.44,3 20.39,3 20.34,3L15,5.1L9,3L3.36,4.9C3.15,4.97 3,5.15 3,5.38V20.5A0.5,0.5 0 0,0 3.5,21C3.55,21 3.61,21 3.66,20.97L9,18.9L15,21L20.64,19.1C20.85,19 21,18.85 21,18.62V3.5A0.5,0.5 0 0,0 20.5,3Z" /></g><g id="map-marker"><path d="M12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5M12,2A7,7 0 0,0 5,9C5,14.25 12,22 12,22C12,22 19,14.25 19,9A7,7 0 0,0 12,2Z" /></g><g id="map-marker-circle"><path d="M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,12.5A1.5,1.5 0 0,1 10.5,11A1.5,1.5 0 0,1 12,9.5A1.5,1.5 0 0,1 13.5,11A1.5,1.5 0 0,1 12,12.5M12,7.2C9.9,7.2 8.2,8.9 8.2,11C8.2,14 12,17.5 12,17.5C12,17.5 15.8,14 15.8,11C15.8,8.9 14.1,7.2 12,7.2Z" /></g><g id="map-marker-minus"><path d="M9,11.5A2.5,2.5 0 0,0 11.5,9A2.5,2.5 0 0,0 9,6.5A2.5,2.5 0 0,0 6.5,9A2.5,2.5 0 0,0 9,11.5M9,2C12.86,2 16,5.13 16,9C16,14.25 9,22 9,22C9,22 2,14.25 2,9A7,7 0 0,1 9,2M15,17H23V19H15V17Z" /></g><g id="map-marker-multiple"><path d="M14,11.5A2.5,2.5 0 0,0 16.5,9A2.5,2.5 0 0,0 14,6.5A2.5,2.5 0 0,0 11.5,9A2.5,2.5 0 0,0 14,11.5M14,2C17.86,2 21,5.13 21,9C21,14.25 14,22 14,22C14,22 7,14.25 7,9A7,7 0 0,1 14,2M5,9C5,13.5 10.08,19.66 11,20.81L10,22C10,22 3,14.25 3,9C3,5.83 5.11,3.15 8,2.29C6.16,3.94 5,6.33 5,9Z" /></g><g id="map-marker-off"><path d="M16.37,16.1L11.75,11.47L11.64,11.36L3.27,3L2,4.27L5.18,7.45C5.06,7.95 5,8.46 5,9C5,14.25 12,22 12,22C12,22 13.67,20.15 15.37,17.65L18.73,21L20,19.72M12,6.5A2.5,2.5 0 0,1 14.5,9C14.5,9.73 14.17,10.39 13.67,10.85L17.3,14.5C18.28,12.62 19,10.68 19,9A7,7 0 0,0 12,2C10,2 8.24,2.82 6.96,4.14L10.15,7.33C10.61,6.82 11.26,6.5 12,6.5Z" /></g><g id="map-marker-plus"><path d="M9,11.5A2.5,2.5 0 0,0 11.5,9A2.5,2.5 0 0,0 9,6.5A2.5,2.5 0 0,0 6.5,9A2.5,2.5 0 0,0 9,11.5M9,2C12.86,2 16,5.13 16,9C16,14.25 9,22 9,22C9,22 2,14.25 2,9A7,7 0 0,1 9,2M15,17H18V14H20V17H23V19H20V22H18V19H15V17Z" /></g><g id="map-marker-radius"><path d="M12,2C15.31,2 18,4.66 18,7.95C18,12.41 12,19 12,19C12,19 6,12.41 6,7.95C6,4.66 8.69,2 12,2M12,6A2,2 0 0,0 10,8A2,2 0 0,0 12,10A2,2 0 0,0 14,8A2,2 0 0,0 12,6M20,19C20,21.21 16.42,23 12,23C7.58,23 4,21.21 4,19C4,17.71 5.22,16.56 7.11,15.83L7.75,16.74C6.67,17.19 6,17.81 6,18.5C6,19.88 8.69,21 12,21C15.31,21 18,19.88 18,18.5C18,17.81 17.33,17.19 16.25,16.74L16.89,15.83C18.78,16.56 20,17.71 20,19Z" /></g><g id="margin"><path d="M14.63,6.78L12.9,5.78L18.5,2.08L18.1,8.78L16.37,7.78L8.73,21H6.42L14.63,6.78M17.5,12C19.43,12 21,13.74 21,16.5C21,19.26 19.43,21 17.5,21C15.57,21 14,19.26 14,16.5C14,13.74 15.57,12 17.5,12M17.5,14C16.67,14 16,14.84 16,16.5C16,18.16 16.67,19 17.5,19C18.33,19 19,18.16 19,16.5C19,14.84 18.33,14 17.5,14M7.5,5C9.43,5 11,6.74 11,9.5C11,12.26 9.43,14 7.5,14C5.57,14 4,12.26 4,9.5C4,6.74 5.57,5 7.5,5M7.5,7C6.67,7 6,7.84 6,9.5C6,11.16 6.67,12 7.5,12C8.33,12 9,11.16 9,9.5C9,7.84 8.33,7 7.5,7Z" /></g><g id="markdown"><path d="M2,16V8H4L7,11L10,8H12V16H10V10.83L7,13.83L4,10.83V16H2M16,8H19V12H21.5L17.5,16.5L13.5,12H16V8Z" /></g><g id="marker"><path d="M18.5,1.15C17.97,1.15 17.46,1.34 17.07,1.73L11.26,7.55L16.91,13.2L22.73,7.39C23.5,6.61 23.5,5.35 22.73,4.56L19.89,1.73C19.5,1.34 19,1.15 18.5,1.15M10.3,8.5L4.34,14.46C3.56,15.24 3.56,16.5 4.36,17.31C3.14,18.54 1.9,19.77 0.67,21H6.33L7.19,20.14C7.97,20.9 9.22,20.89 10,20.12L15.95,14.16" /></g><g id="marker-check"><path d="M10,16L5,11L6.41,9.58L10,13.17L17.59,5.58L19,7M19,1H5C3.89,1 3,1.89 3,3V15.93C3,16.62 3.35,17.23 3.88,17.59L12,23L20.11,17.59C20.64,17.23 21,16.62 21,15.93V3C21,1.89 20.1,1 19,1Z" /></g><g id="martini"><path d="M7.5,7L5.5,5H18.5L16.5,7M11,13V19H6V21H18V19H13V13L21,5V3H3V5L11,13Z" /></g><g id="material-ui"><path d="M8,16.61V15.37L14,11.91V7.23L9,10.12L4,7.23V13L3,13.58L2,13V5L3.07,4.38L9,7.81L12.93,5.54L14.93,4.38L16,5V13.06L10.92,16L14.97,18.33L20,15.43V11L21,10.42L22,11V16.58L14.97,20.64L8,16.61M22,9.75L21,10.33L20,9.75V8.58L21,8L22,8.58V9.75Z" /></g><g id="math-compass"><path d="M13,4.2V3C13,2.4 12.6,2 12,2V4.2C9.8,4.6 9,5.7 9,7C9,7.8 9.3,8.5 9.8,9L4,19.9V22L6.2,20L11.6,10C11.7,10 11.9,10 12,10C13.7,10 15,8.7 15,7C15,5.7 14.2,4.6 13,4.2M12.9,7.5C12.7,7.8 12.4,8 12,8C11.4,8 11,7.6 11,7C11,6.8 11.1,6.7 11.1,6.5C11.3,6.2 11.6,6 12,6C12.6,6 13,6.4 13,7C13,7.2 12.9,7.3 12.9,7.5M20,19.9V22H20L17.8,20L13.4,11.8C14.1,11.6 14.7,11.3 15.2,10.9L20,19.9Z" /></g><g id="matrix"><path d="M2,2H6V4H4V20H6V22H2V2M20,4H18V2H22V22H18V20H20V4M9,5H10V10H11V11H8V10H9V6L8,6.5V5.5L9,5M15,13H16V18H17V19H14V18H15V14L14,14.5V13.5L15,13M9,13C10.1,13 11,14.34 11,16C11,17.66 10.1,19 9,19C7.9,19 7,17.66 7,16C7,14.34 7.9,13 9,13M9,14C8.45,14 8,14.9 8,16C8,17.1 8.45,18 9,18C9.55,18 10,17.1 10,16C10,14.9 9.55,14 9,14M15,5C16.1,5 17,6.34 17,8C17,9.66 16.1,11 15,11C13.9,11 13,9.66 13,8C13,6.34 13.9,5 15,5M15,6C14.45,6 14,6.9 14,8C14,9.1 14.45,10 15,10C15.55,10 16,9.1 16,8C16,6.9 15.55,6 15,6Z" /></g><g id="maxcdn"><path d="M20.6,6.69C19.73,5.61 18.38,5 16.9,5H2.95L4.62,8.57L2.39,19H6.05L8.28,8.57H11.4L9.17,19H12.83L15.06,8.57H16.9C17.3,8.57 17.63,8.7 17.82,8.94C18,9.17 18.07,9.5 18,9.9L16.04,19H19.69L21.5,10.65C21.78,9.21 21.46,7.76 20.6,6.69Z" /></g><g id="medical-bag"><path d="M10,3L8,5V7H5C3.85,7 3.12,8 3,9L2,19C1.88,20 2.54,21 4,21H20C21.46,21 22.12,20 22,19L21,9C20.88,8 20.06,7 19,7H16V5L14,3H10M10,5H14V7H10V5M11,10H13V13H16V15H13V18H11V15H8V13H11V10Z" /></g><g id="medium"><path d="M21.93,6.62L15.89,16.47L11.57,9.43L15,3.84C15.17,3.58 15.5,3.47 15.78,3.55L21.93,6.62M22,19.78C22,20.35 21.5,20.57 20.89,20.26L16.18,17.91L22,8.41V19.78M9,19.94C9,20.5 8.57,20.76 8.07,20.5L2.55,17.76C2.25,17.6 2,17.2 2,16.86V4.14C2,3.69 2.33,3.5 2.74,3.68L8.7,6.66L9,7.12V19.94M15.29,17.46L10,14.81V8.81L15.29,17.46Z" /></g><g id="memory"><path d="M17,17H7V7H17M21,11V9H19V7C19,5.89 18.1,5 17,5H15V3H13V5H11V3H9V5H7C5.89,5 5,5.89 5,7V9H3V11H5V13H3V15H5V17A2,2 0 0,0 7,19H9V21H11V19H13V21H15V19H17A2,2 0 0,0 19,17V15H21V13H19V11M13,13H11V11H13M15,9H9V15H15V9Z" /></g><g id="menu"><path d="M3,6H21V8H3V6M3,11H21V13H3V11M3,16H21V18H3V16Z" /></g><g id="menu-down"><path d="M7,10L12,15L17,10H7Z" /></g><g id="menu-down-outline"><path d="M18,9V10.5L12,16.5L6,10.5V9H18M12,13.67L14.67,11H9.33L12,13.67Z" /></g><g id="menu-left"><path d="M14,7L9,12L14,17V7Z" /></g><g id="menu-right"><path d="M10,17L15,12L10,7V17Z" /></g><g id="menu-up"><path d="M7,15L12,10L17,15H7Z" /></g><g id="menu-up-outline"><path d="M18,16V14.5L12,8.5L6,14.5V16H18M12,11.33L14.67,14H9.33L12,11.33Z" /></g><g id="message"><path d="M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4C22,2.89 21.1,2 20,2Z" /></g><g id="message-alert"><path d="M13,10H11V6H13M13,14H11V12H13M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4C22,2.89 21.1,2 20,2Z" /></g><g id="message-bulleted"><path d="M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M8,14H6V12H8V14M8,11H6V9H8V11M8,8H6V6H8V8M15,14H10V12H15V14M18,11H10V9H18V11M18,8H10V6H18V8Z" /></g><g id="message-bulleted-off"><path d="M1.27,1.73L0,3L2,5V22L6,18H15L20.73,23.73L22,22.46L1.27,1.73M8,14H6V12H8V14M6,11V9L8,11H6M20,2H4.08L10,7.92V6H18V8H10.08L11.08,9H18V11H13.08L20.07,18C21.14,17.95 22,17.08 22,16V4A2,2 0 0,0 20,2Z" /></g><g id="message-draw"><path d="M18,14H10.5L12.5,12H18M6,14V11.5L12.88,4.64C13.07,4.45 13.39,4.45 13.59,4.64L15.35,6.41C15.55,6.61 15.55,6.92 15.35,7.12L8.47,14M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4C22,2.89 21.1,2 20,2Z" /></g><g id="message-image"><path d="M5,14L8.5,9.5L11,12.5L14.5,8L19,14M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4C22,2.89 21.1,2 20,2Z" /></g><g id="message-outline"><path d="M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M20,16H6L4,18V4H20" /></g><g id="message-plus"><path d="M20,2A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H6L2,22V4C2,2.89 2.9,2 4,2H20M11,6V9H8V11H11V14H13V11H16V9H13V6H11Z" /></g><g id="message-processing"><path d="M17,11H15V9H17M13,11H11V9H13M9,11H7V9H9M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4C22,2.89 21.1,2 20,2Z" /></g><g id="message-reply"><path d="M22,4C22,2.89 21.1,2 20,2H4A2,2 0 0,0 2,4V16A2,2 0 0,0 4,18H18L22,22V4Z" /></g><g id="message-reply-text"><path d="M18,8H6V6H18V8M18,11H6V9H18V11M18,14H6V12H18V14M22,4A2,2 0 0,0 20,2H4A2,2 0 0,0 2,4V16A2,2 0 0,0 4,18H18L22,22V4Z" /></g><g id="message-text"><path d="M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M6,9H18V11H6M14,14H6V12H14M18,8H6V6H18" /></g><g id="message-text-outline"><path d="M20,2A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H6L2,22V4C2,2.89 2.9,2 4,2H20M4,4V17.17L5.17,16H20V4H4M6,7H18V9H6V7M6,11H15V13H6V11Z" /></g><g id="message-video"><path d="M18,14L14,10.8V14H6V6H14V9.2L18,6M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4C22,2.89 21.1,2 20,2Z" /></g><g id="meteor"><path d="M2.8,3L19.67,18.82C19.67,18.82 20,19.27 19.58,19.71C19.17,20.15 18.63,19.77 18.63,19.77L2.8,3M7.81,4.59L20.91,16.64C20.91,16.64 21.23,17.08 20.82,17.5C20.4,17.97 19.86,17.59 19.86,17.59L7.81,4.59M4.29,8L17.39,20.03C17.39,20.03 17.71,20.47 17.3,20.91C16.88,21.36 16.34,21 16.34,21L4.29,8M12.05,5.96L21.2,14.37C21.2,14.37 21.42,14.68 21.13,15C20.85,15.3 20.47,15.03 20.47,15.03L12.05,5.96M5.45,11.91L14.6,20.33C14.6,20.33 14.82,20.64 14.54,20.95C14.25,21.26 13.87,21 13.87,21L5.45,11.91M16.38,7.92L20.55,11.74C20.55,11.74 20.66,11.88 20.5,12.03C20.38,12.17 20.19,12.05 20.19,12.05L16.38,7.92M7.56,16.1L11.74,19.91C11.74,19.91 11.85,20.06 11.7,20.2C11.56,20.35 11.37,20.22 11.37,20.22L7.56,16.1Z" /></g><g id="microphone"><path d="M12,2A3,3 0 0,1 15,5V11A3,3 0 0,1 12,14A3,3 0 0,1 9,11V5A3,3 0 0,1 12,2M19,11C19,14.53 16.39,17.44 13,17.93V21H11V17.93C7.61,17.44 5,14.53 5,11H7A5,5 0 0,0 12,16A5,5 0 0,0 17,11H19Z" /></g><g id="microphone-off"><path d="M19,11C19,12.19 18.66,13.3 18.1,14.28L16.87,13.05C17.14,12.43 17.3,11.74 17.3,11H19M15,11.16L9,5.18V5A3,3 0 0,1 12,2A3,3 0 0,1 15,5V11L15,11.16M4.27,3L21,19.73L19.73,21L15.54,16.81C14.77,17.27 13.91,17.58 13,17.72V21H11V17.72C7.72,17.23 5,14.41 5,11H6.7C6.7,14 9.24,16.1 12,16.1C12.81,16.1 13.6,15.91 14.31,15.58L12.65,13.92L12,14A3,3 0 0,1 9,11V10.28L3,4.27L4.27,3Z" /></g><g id="microphone-outline"><path d="M17.3,11C17.3,14 14.76,16.1 12,16.1C9.24,16.1 6.7,14 6.7,11H5C5,14.41 7.72,17.23 11,17.72V21H13V17.72C16.28,17.23 19,14.41 19,11M10.8,4.9C10.8,4.24 11.34,3.7 12,3.7C12.66,3.7 13.2,4.24 13.2,4.9L13.19,11.1C13.19,11.76 12.66,12.3 12,12.3C11.34,12.3 10.8,11.76 10.8,11.1M12,14A3,3 0 0,0 15,11V5A3,3 0 0,0 12,2A3,3 0 0,0 9,5V11A3,3 0 0,0 12,14Z" /></g><g id="microphone-settings"><path d="M19,10H17.3C17.3,13 14.76,15.1 12,15.1C9.24,15.1 6.7,13 6.7,10H5C5,13.41 7.72,16.23 11,16.72V20H13V16.72C16.28,16.23 19,13.41 19,10M15,24H17V22H15M11,24H13V22H11M12,13A3,3 0 0,0 15,10V4A3,3 0 0,0 12,1A3,3 0 0,0 9,4V10A3,3 0 0,0 12,13M7,24H9V22H7V24Z" /></g><g id="microphone-variant"><path d="M9,3A4,4 0 0,1 13,7H5A4,4 0 0,1 9,3M11.84,9.82L11,18H10V19A2,2 0 0,0 12,21A2,2 0 0,0 14,19V14A4,4 0 0,1 18,10H20L19,11L20,12H18A2,2 0 0,0 16,14V19A4,4 0 0,1 12,23A4,4 0 0,1 8,19V18H7L6.16,9.82C5.67,9.32 5.31,8.7 5.13,8H12.87C12.69,8.7 12.33,9.32 11.84,9.82M9,11A1,1 0 0,0 8,12A1,1 0 0,0 9,13A1,1 0 0,0 10,12A1,1 0 0,0 9,11Z" /></g><g id="microphone-variant-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L16,19.26C15.86,21.35 14.12,23 12,23A4,4 0 0,1 8,19V18H7L6.16,9.82C5.82,9.47 5.53,9.06 5.33,8.6L2,5.27M9,3A4,4 0 0,1 13,7H8.82L6.08,4.26C6.81,3.5 7.85,3 9,3M11.84,9.82L11.82,10L9.82,8H12.87C12.69,8.7 12.33,9.32 11.84,9.82M11,18H10V19A2,2 0 0,0 12,21A2,2 0 0,0 14,19V17.27L11.35,14.62L11,18M18,10H20L19,11L20,12H18A2,2 0 0,0 16,14V14.18L14.3,12.5C14.9,11 16.33,10 18,10M8,12A1,1 0 0,0 9,13C9.21,13 9.4,12.94 9.56,12.83L8.17,11.44C8.06,11.6 8,11.79 8,12Z" /></g><g id="microscope"><path d="M9.46,6.28L11.05,9C8.47,9.26 6.5,11.41 6.5,14A5,5 0 0,0 11.5,19C13.55,19 15.31,17.77 16.08,16H13.5V14H21.5V16H19.25C18.84,17.57 17.97,18.96 16.79,20H19.5V22H3.5V20H6.21C4.55,18.53 3.5,16.39 3.5,14C3.5,10.37 5.96,7.2 9.46,6.28M12.74,2.07L13.5,3.37L14.36,2.87L17.86,8.93L14.39,10.93L10.89,4.87L11.76,4.37L11,3.07L12.74,2.07Z" /></g><g id="microsoft"><path d="M2,3H11V12H2V3M11,22H2V13H11V22M21,3V12H12V3H21M21,22H12V13H21V22Z" /></g><g id="minecraft"><path d="M4,2H20A2,2 0 0,1 22,4V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V4A2,2 0 0,1 4,2M6,6V10H10V12H8V18H10V16H14V18H16V12H14V10H18V6H14V10H10V6H6Z" /></g><g id="minus"><path d="M19,13H5V11H19V13Z" /></g><g id="minus-box"><path d="M17,13H7V11H17M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="minus-circle"><path d="M17,13H7V11H17M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="minus-circle-outline"><path d="M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M7,13H17V11H7" /></g><g id="minus-network"><path d="M16,11V9H8V11H16M17,3A2,2 0 0,1 19,5V15A2,2 0 0,1 17,17H13V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H7C5.89,17 5,16.1 5,15V5A2,2 0 0,1 7,3H17Z" /></g><g id="mixcloud"><path d="M21.11,18.5C20.97,18.5 20.83,18.44 20.71,18.36C20.37,18.13 20.28,17.68 20.5,17.34C21.18,16.34 21.54,15.16 21.54,13.93C21.54,12.71 21.18,11.53 20.5,10.5C20.28,10.18 20.37,9.73 20.71,9.5C21.04,9.28 21.5,9.37 21.72,9.7C22.56,10.95 23,12.41 23,13.93C23,15.45 22.56,16.91 21.72,18.16C21.58,18.37 21.35,18.5 21.11,18.5M19,17.29C18.88,17.29 18.74,17.25 18.61,17.17C18.28,16.94 18.19,16.5 18.42,16.15C18.86,15.5 19.1,14.73 19.1,13.93C19.1,13.14 18.86,12.37 18.42,11.71C18.19,11.37 18.28,10.92 18.61,10.69C18.95,10.47 19.4,10.55 19.63,10.89C20.24,11.79 20.56,12.84 20.56,13.93C20.56,15 20.24,16.07 19.63,16.97C19.5,17.18 19.25,17.29 19,17.29M14.9,15.73C15.89,15.73 16.7,14.92 16.7,13.93C16.7,13.17 16.22,12.5 15.55,12.25C15.5,12.55 15.43,12.85 15.34,13.14C15.23,13.44 14.95,13.64 14.64,13.64C14.57,13.64 14.5,13.62 14.41,13.6C14.03,13.47 13.82,13.06 13.95,12.67C14.09,12.24 14.17,11.78 14.17,11.32C14.17,8.93 12.22,7 9.82,7C8.1,7 6.56,8 5.87,9.5C6.54,9.7 7.16,10.04 7.66,10.54C7.95,10.83 7.95,11.29 7.66,11.58C7.38,11.86 6.91,11.86 6.63,11.58C6.17,11.12 5.56,10.86 4.9,10.86C3.56,10.86 2.46,11.96 2.46,13.3C2.46,14.64 3.56,15.73 4.9,15.73H14.9M15.6,10.75C17.06,11.07 18.17,12.37 18.17,13.93C18.17,15.73 16.7,17.19 14.9,17.19H4.9C2.75,17.19 1,15.45 1,13.3C1,11.34 2.45,9.73 4.33,9.45C5.12,7.12 7.33,5.5 9.82,5.5C12.83,5.5 15.31,7.82 15.6,10.75Z" /></g><g id="monitor"><path d="M21,16H3V4H21M21,2H3C1.89,2 1,2.89 1,4V16A2,2 0 0,0 3,18H10V20H8V22H16V20H14V18H21A2,2 0 0,0 23,16V4C23,2.89 22.1,2 21,2Z" /></g><g id="monitor-multiple"><path d="M22,17V7H6V17H22M22,5A2,2 0 0,1 24,7V17C24,18.11 23.1,19 22,19H16V21H18V23H10V21H12V19H6C4.89,19 4,18.11 4,17V7A2,2 0 0,1 6,5H22M2,3V15H0V3A2,2 0 0,1 2,1H20V3H2Z" /></g><g id="more"><path d="M19,13.5A1.5,1.5 0 0,1 17.5,12A1.5,1.5 0 0,1 19,10.5A1.5,1.5 0 0,1 20.5,12A1.5,1.5 0 0,1 19,13.5M14,13.5A1.5,1.5 0 0,1 12.5,12A1.5,1.5 0 0,1 14,10.5A1.5,1.5 0 0,1 15.5,12A1.5,1.5 0 0,1 14,13.5M9,13.5A1.5,1.5 0 0,1 7.5,12A1.5,1.5 0 0,1 9,10.5A1.5,1.5 0 0,1 10.5,12A1.5,1.5 0 0,1 9,13.5M22,3H7C6.31,3 5.77,3.35 5.41,3.88L0,12L5.41,20.11C5.77,20.64 6.37,21 7.06,21H22A2,2 0 0,0 24,19V5C24,3.89 23.1,3 22,3Z" /></g><g id="motorbike"><path d="M16.36,4.27H18.55V2.13H16.36V1.07H18.22C17.89,0.43 17.13,0 16.36,0C15.16,0 14.18,0.96 14.18,2.13C14.18,3.31 15.16,4.27 16.36,4.27M10.04,9.39L13,6.93L17.45,9.6H10.25M19.53,12.05L21.05,10.56C21.93,9.71 21.93,8.43 21.05,7.57L19.2,9.39L13.96,4.27C13.64,3.73 13,3.41 12.33,3.41C11.78,3.41 11.35,3.63 11,3.95L7,7.89C6.65,8.21 6.44,8.64 6.44,9.17V9.71H5.13C4.04,9.71 3.16,10.67 3.16,11.84V12.27C3.5,12.16 3.93,12.16 4.25,12.16C7.09,12.16 9.5,14.4 9.5,17.28C9.5,17.6 9.5,18.03 9.38,18.35H14.5C14.4,18.03 14.4,17.6 14.4,17.28C14.4,14.29 16.69,12.05 19.53,12.05M4.36,19.73C2.84,19.73 1.64,18.56 1.64,17.07C1.64,15.57 2.84,14.4 4.36,14.4C5.89,14.4 7.09,15.57 7.09,17.07C7.09,18.56 5.89,19.73 4.36,19.73M4.36,12.8C1.96,12.8 0,14.72 0,17.07C0,19.41 1.96,21.33 4.36,21.33C6.76,21.33 8.73,19.41 8.73,17.07C8.73,14.72 6.76,12.8 4.36,12.8M19.64,19.73C18.11,19.73 16.91,18.56 16.91,17.07C16.91,15.57 18.11,14.4 19.64,14.4C21.16,14.4 22.36,15.57 22.36,17.07C22.36,18.56 21.16,19.73 19.64,19.73M19.64,12.8C17.24,12.8 15.27,14.72 15.27,17.07C15.27,19.41 17.24,21.33 19.64,21.33C22.04,21.33 24,19.41 24,17.07C24,14.72 22.04,12.8 19.64,12.8Z" /></g><g id="mouse"><path d="M11,1.07C7.05,1.56 4,4.92 4,9H11M4,15A8,8 0 0,0 12,23A8,8 0 0,0 20,15V11H4M13,1.07V9H20C20,4.92 16.94,1.56 13,1.07Z" /></g><g id="mouse-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L17.5,20.79C16.08,22.16 14.14,23 12,23A8,8 0 0,1 4,15V11H7.73L5.73,9H4C4,8.46 4.05,7.93 4.15,7.42L2,5.27M11,1.07V9H10.82L5.79,3.96C7.05,2.4 8.9,1.33 11,1.07M20,11V15C20,15.95 19.83,16.86 19.53,17.71L12.82,11H20M13,1.07C16.94,1.56 20,4.92 20,9H13V1.07Z" /></g><g id="mouse-variant"><path d="M14,7H10V2.1C12.28,2.56 14,4.58 14,7M4,7C4,4.58 5.72,2.56 8,2.1V7H4M14,12C14,14.42 12.28,16.44 10,16.9V18A3,3 0 0,0 13,21A3,3 0 0,0 16,18V13A4,4 0 0,1 20,9H22L21,10L22,11H20A2,2 0 0,0 18,13H18V18A5,5 0 0,1 13,23A5,5 0 0,1 8,18V16.9C5.72,16.44 4,14.42 4,12V9H14V12Z" /></g><g id="mouse-variant-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L17.29,20.56C16.42,22 14.82,23 13,23A5,5 0 0,1 8,18V16.9C5.72,16.44 4,14.42 4,12V9H5.73L2,5.27M14,7H10V2.1C12.28,2.56 14,4.58 14,7M8,2.1V6.18L5.38,3.55C6.07,2.83 7,2.31 8,2.1M14,12V12.17L10.82,9H14V12M10,16.9V18A3,3 0 0,0 13,21C14.28,21 15.37,20.2 15.8,19.07L12.4,15.67C11.74,16.28 10.92,16.71 10,16.9M16,13A4,4 0 0,1 20,9H22L21,10L22,11H20A2,2 0 0,0 18,13V16.18L16,14.18V13Z" /></g><g id="move-resize"><path d="M9,1V2H10V5H9V6H12V5H11V2H12V1M9,7C7.89,7 7,7.89 7,9V21C7,22.11 7.89,23 9,23H21C22.11,23 23,22.11 23,21V9C23,7.89 22.11,7 21,7M1,9V12H2V11H5V12H6V9H5V10H2V9M9,9H21V21H9M14,10V11H15V16H11V15H10V18H11V17H15V19H14V20H17V19H16V17H19V18H20V15H19V16H16V11H17V10" /></g><g id="move-resize-variant"><path d="M1.88,0.46L0.46,1.88L5.59,7H2V9H9V2H7V5.59M11,7V9H21V15H23V9A2,2 0 0,0 21,7M7,11V21A2,2 0 0,0 9,23H15V21H9V11M15.88,14.46L14.46,15.88L19.6,21H17V23H23V17H21V19.59" /></g><g id="movie"><path d="M18,4L20,8H17L15,4H13L15,8H12L10,4H8L10,8H7L5,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V4H18Z" /></g><g id="multiplication"><path d="M11,3H13V10.27L19.29,6.64L20.29,8.37L14,12L20.3,15.64L19.3,17.37L13,13.72V21H11V13.73L4.69,17.36L3.69,15.63L10,12L3.72,8.36L4.72,6.63L11,10.26V3Z" /></g><g id="multiplication-box"><path d="M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19M11,17H13V13.73L15.83,15.36L16.83,13.63L14,12L16.83,10.36L15.83,8.63L13,10.27V7H11V10.27L8.17,8.63L7.17,10.36L10,12L7.17,13.63L8.17,15.36L11,13.73V17Z" /></g><g id="music-box"><path d="M16,9H13V14.5A2.5,2.5 0 0,1 10.5,17A2.5,2.5 0 0,1 8,14.5A2.5,2.5 0 0,1 10.5,12C11.07,12 11.58,12.19 12,12.5V7H16M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="music-box-outline"><path d="M16,9H13V14.5A2.5,2.5 0 0,1 10.5,17A2.5,2.5 0 0,1 8,14.5A2.5,2.5 0 0,1 10.5,12C11.07,12 11.58,12.19 12,12.5V7H16V9M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M5,5V19H19V5H5Z" /></g><g id="music-circle"><path d="M16,9V7H12V12.5C11.58,12.19 11.07,12 10.5,12A2.5,2.5 0 0,0 8,14.5A2.5,2.5 0 0,0 10.5,17A2.5,2.5 0 0,0 13,14.5V9H16M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z" /></g><g id="music-note"><path d="M12,3V12.26C11.5,12.09 11,12 10.5,12C8,12 6,14 6,16.5C6,19 8,21 10.5,21C13,21 15,19 15,16.5V6H19V3H12Z" /></g><g id="music-note-bluetooth"><path d="M10,3V12.26C9.5,12.09 9,12 8.5,12C6,12 4,14 4,16.5C4,19 6,21 8.5,21C11,21 13,19 13,16.5V6H17V3H10M20,7V10.79L17.71,8.5L17,9.21L19.79,12L17,14.79L17.71,15.5L20,13.21V17H20.5L23.35,14.15L21.21,12L23.36,9.85L20.5,7H20M21,8.91L21.94,9.85L21,10.79V8.91M21,13.21L21.94,14.15L21,15.09V13.21Z" /></g><g id="music-note-bluetooth-off"><path d="M10,3V8.68L13,11.68V6H17V3H10M3.28,4.5L2,5.77L8.26,12.03C5.89,12.15 4,14.1 4,16.5C4,19 6,21 8.5,21C10.9,21 12.85,19.11 12.97,16.74L17.68,21.45L18.96,20.18L13,14.22L10,11.22L3.28,4.5M20,7V10.79L17.71,8.5L17,9.21L19.79,12L17,14.79L17.71,15.5L20,13.21V17H20.5L23.35,14.15L21.21,12L23.36,9.85L20.5,7H20M21,8.91L21.94,9.85L21,10.79V8.91M21,13.21L21.94,14.15L21,15.09V13.21Z" /></g><g id="music-note-eighth"><path d="M12,3V12.26C11.5,12.09 11,12 10.5,12C8.54,12 6.9,13.26 6.28,15H3V18H6.28C6.9,19.74 8.54,21 10.5,21C12.46,21 14.1,19.74 14.72,18H19V15H15V6H19V3H12Z" /></g><g id="music-note-half"><path d="M12,3V12.26C11.5,12.09 11,12 10.5,12C8.54,12 6.9,13.26 6.28,15H3V18H6.28C6.9,19.74 8.54,21 10.5,21C12.46,21 14.1,19.74 14.72,18H19V15H15V9L15,6V3H12M10.5,14.5A2,2 0 0,1 12.5,16.5A2,2 0 0,1 10.5,18.5A2,2 0 0,1 8.5,16.5A2,2 0 0,1 10.5,14.5Z" /></g><g id="music-note-off"><path d="M12,3V8.68L15,11.68V6H19V3H12M5.28,4.5L4,5.77L10.26,12.03C7.89,12.15 6,14.1 6,16.5C6,19 8,21 10.5,21C12.9,21 14.85,19.11 14.97,16.74L19.68,21.45L20.96,20.18L15,14.22L12,11.22L5.28,4.5Z" /></g><g id="music-note-quarter"><path d="M12,3H15V15H19V18H14.72C14.1,19.74 12.46,21 10.5,21C8.54,21 6.9,19.74 6.28,18H3V15H6.28C6.9,13.26 8.54,12 10.5,12C11,12 11.5,12.09 12,12.26V3Z" /></g><g id="music-note-sixteenth"><path d="M12,3V12.26C11.5,12.09 11,12 10.5,12C8.54,12 6.9,13.26 6.28,15H3V18H6.28C6.9,19.74 8.54,21 10.5,21C12.46,21 14.1,19.74 14.72,18H19V15H15V10H19V7H15V6H19V3H12Z" /></g><g id="music-note-whole"><path d="M10.5,12C8.6,12 6.9,13.2 6.26,15H3V18H6.26C6.9,19.8 8.6,21 10.5,21C12.4,21 14.1,19.8 14.74,18H19V15H14.74C14.1,13.2 12.4,12 10.5,12M10.5,14.5A2,2 0 0,1 12.5,16.5A2,2 0 0,1 10.5,18.5A2,2 0 0,1 8.5,16.5A2,2 0 0,1 10.5,14.5Z" /></g><g id="nature"><path d="M13,16.12C16.47,15.71 19.17,12.76 19.17,9.17C19.17,5.3 16.04,2.17 12.17,2.17A7,7 0 0,0 5.17,9.17C5.17,12.64 7.69,15.5 11,16.06V20H5V22H19V20H13V16.12Z" /></g><g id="nature-people"><path d="M4.5,11A1.5,1.5 0 0,0 6,9.5A1.5,1.5 0 0,0 4.5,8A1.5,1.5 0 0,0 3,9.5A1.5,1.5 0 0,0 4.5,11M22.17,9.17C22.17,5.3 19.04,2.17 15.17,2.17A7,7 0 0,0 8.17,9.17C8.17,12.64 10.69,15.5 14,16.06V20H6V17H7V13A1,1 0 0,0 6,12H3A1,1 0 0,0 2,13V17H3V22H19V20H16V16.12C19.47,15.71 22.17,12.76 22.17,9.17Z" /></g><g id="navigation"><path d="M12,2L4.5,20.29L5.21,21L12,18L18.79,21L19.5,20.29L12,2Z" /></g><g id="near-me"><path d="M21,3L3,10.53V11.5L9.84,14.16L12.5,21H13.46L21,3Z" /></g><g id="needle"><path d="M11.15,15.18L9.73,13.77L11.15,12.35L12.56,13.77L13.97,12.35L12.56,10.94L13.97,9.53L15.39,10.94L16.8,9.53L13.97,6.7L6.9,13.77L9.73,16.6L11.15,15.18M3.08,19L6.2,15.89L4.08,13.77L13.97,3.87L16.1,6L17.5,4.58L16.1,3.16L17.5,1.75L21.75,6L20.34,7.4L18.92,6L17.5,7.4L19.63,9.53L9.73,19.42L7.61,17.3L3.08,21.84V19Z" /></g><g id="nest-protect"><path d="M12,18A6,6 0 0,0 18,12C18,8.68 15.31,6 12,6C8.68,6 6,8.68 6,12A6,6 0 0,0 12,18M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19M8,12A4,4 0 0,1 12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12Z" /></g><g id="nest-thermostat"><path d="M16.95,16.95L14.83,14.83C15.55,14.1 16,13.1 16,12C16,11.26 15.79,10.57 15.43,10L17.6,7.81C18.5,9 19,10.43 19,12C19,13.93 18.22,15.68 16.95,16.95M12,5C13.57,5 15,5.5 16.19,6.4L14,8.56C13.43,8.21 12.74,8 12,8A4,4 0 0,0 8,12C8,13.1 8.45,14.1 9.17,14.83L7.05,16.95C5.78,15.68 5,13.93 5,12A7,7 0 0,1 12,5M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z" /></g><g id="new-box"><path d="M20,4C21.11,4 22,4.89 22,6V18C22,19.11 21.11,20 20,20H4C2.89,20 2,19.11 2,18V6C2,4.89 2.89,4 4,4H20M8.5,15V9H7.25V12.5L4.75,9H3.5V15H4.75V11.5L7.3,15H8.5M13.5,10.26V9H9.5V15H13.5V13.75H11V12.64H13.5V11.38H11V10.26H13.5M20.5,14V9H19.25V13.5H18.13V10H16.88V13.5H15.75V9H14.5V14A1,1 0 0,0 15.5,15H19.5A1,1 0 0,0 20.5,14Z" /></g><g id="newspaper"><path d="M20,11H4V8H20M20,15H13V13H20M20,19H13V17H20M11,19H4V13H11M20.33,4.67L18.67,3L17,4.67L15.33,3L13.67,4.67L12,3L10.33,4.67L8.67,3L7,4.67L5.33,3L3.67,4.67L2,3V19A2,2 0 0,0 4,21H20A2,2 0 0,0 22,19V3L20.33,4.67Z" /></g><g id="nfc"><path d="M10.59,7.66C10.59,7.66 11.19,7.39 11.57,7.82C11.95,8.26 12.92,9.94 12.92,11.62C12.92,13.3 12.5,15.09 12.05,15.68C11.62,16.28 11.19,16.28 10.86,16.06C10.54,15.85 5.5,12 5.23,11.89C4.95,11.78 4.85,12.05 5.12,13.5C5.39,15 4.95,15.41 4.57,15.47C4.2,15.5 3.06,15.2 3,12.16C2.95,9.13 3.76,8.64 4.14,8.64C4.85,8.64 10.27,13.5 10.64,13.46C10.97,13.41 11.13,11.35 10.5,9.72C9.78,7.96 10.59,7.66 10.59,7.66M19.3,4.63C21.12,8.24 21,11.66 21,12C21,12.34 21.12,15.76 19.3,19.37C19.3,19.37 18.83,19.92 18.12,19.59C17.42,19.26 17.66,18.4 17.66,18.4C17.66,18.4 19.14,15.55 19.1,12.05V12C19.14,8.5 17.66,5.6 17.66,5.6C17.66,5.6 17.42,4.74 18.12,4.41C18.83,4.08 19.3,4.63 19.3,4.63M15.77,6.25C17.26,8.96 17.16,11.66 17.14,12C17.16,12.34 17.26,14.92 15.77,17.85C15.77,17.85 15.3,18.4 14.59,18.07C13.89,17.74 14.13,16.88 14.13,16.88C14.13,16.88 15.09,15.5 15.24,12.05V12C15.14,8.53 14.13,7.23 14.13,7.23C14.13,7.23 13.89,6.36 14.59,6.04C15.3,5.71 15.77,6.25 15.77,6.25Z" /></g><g id="nfc-tap"><path d="M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M4,4H11A2,2 0 0,1 13,6V9H11V6H4V11H6V9L9,12L6,15V13H4A2,2 0 0,1 2,11V6A2,2 0 0,1 4,4M20,20H13A2,2 0 0,1 11,18V15H13V18H20V13H18V15L15,12L18,9V11H20A2,2 0 0,1 22,13V18A2,2 0 0,1 20,20Z" /></g><g id="nfc-variant"><path d="M18,6H13A2,2 0 0,0 11,8V10.28C10.41,10.62 10,11.26 10,12A2,2 0 0,0 12,14C13.11,14 14,13.1 14,12C14,11.26 13.6,10.62 13,10.28V8H16V16H8V8H10V6H8L6,6V18H18M20,20H4V4H20M20,2H4A2,2 0 0,0 2,4V20A2,2 0 0,0 4,22H20C21.11,22 22,21.1 22,20V4C22,2.89 21.11,2 20,2Z" /></g><g id="nodejs"><path d="M12,1.85C11.73,1.85 11.45,1.92 11.22,2.05L3.78,6.35C3.3,6.63 3,7.15 3,7.71V16.29C3,16.85 3.3,17.37 3.78,17.65L5.73,18.77C6.68,19.23 7,19.24 7.44,19.24C8.84,19.24 9.65,18.39 9.65,16.91V8.44C9.65,8.32 9.55,8.22 9.43,8.22H8.5C8.37,8.22 8.27,8.32 8.27,8.44V16.91C8.27,17.57 7.59,18.22 6.5,17.67L4.45,16.5C4.38,16.45 4.34,16.37 4.34,16.29V7.71C4.34,7.62 4.38,7.54 4.45,7.5L11.89,3.21C11.95,3.17 12.05,3.17 12.11,3.21L19.55,7.5C19.62,7.54 19.66,7.62 19.66,7.71V16.29C19.66,16.37 19.62,16.45 19.55,16.5L12.11,20.79C12.05,20.83 11.95,20.83 11.88,20.79L10,19.65C9.92,19.62 9.84,19.61 9.79,19.64C9.26,19.94 9.16,20 8.67,20.15C8.55,20.19 8.36,20.26 8.74,20.47L11.22,21.94C11.46,22.08 11.72,22.15 12,22.15C12.28,22.15 12.54,22.08 12.78,21.94L20.22,17.65C20.7,17.37 21,16.85 21,16.29V7.71C21,7.15 20.7,6.63 20.22,6.35L12.78,2.05C12.55,1.92 12.28,1.85 12,1.85M14,8C11.88,8 10.61,8.89 10.61,10.39C10.61,12 11.87,12.47 13.91,12.67C16.34,12.91 16.53,13.27 16.53,13.75C16.53,14.58 15.86,14.93 14.3,14.93C12.32,14.93 11.9,14.44 11.75,13.46C11.73,13.36 11.64,13.28 11.53,13.28H10.57C10.45,13.28 10.36,13.37 10.36,13.5C10.36,14.74 11.04,16.24 14.3,16.24C16.65,16.24 18,15.31 18,13.69C18,12.08 16.92,11.66 14.63,11.35C12.32,11.05 12.09,10.89 12.09,10.35C12.09,9.9 12.29,9.3 14,9.3C15.5,9.3 16.09,9.63 16.32,10.66C16.34,10.76 16.43,10.83 16.53,10.83H17.5C17.55,10.83 17.61,10.81 17.65,10.76C17.69,10.72 17.72,10.66 17.7,10.6C17.56,8.82 16.38,8 14,8Z" /></g><g id="note"><path d="M14,10V4.5L19.5,10M5,3C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V9L15,3H5Z" /></g><g id="note-multiple"><path d="M16,9H21.5L16,3.5V9M7,2H17L23,8V18A2,2 0 0,1 21,20H7C5.89,20 5,19.1 5,18V4A2,2 0 0,1 7,2M3,6V22H21V24H3A2,2 0 0,1 1,22V6H3Z" /></g><g id="note-multiple-outline"><path d="M3,6V22H21V24H3A2,2 0 0,1 1,22V6H3M16,9H21.5L16,3.5V9M7,2H17L23,8V18A2,2 0 0,1 21,20H7C5.89,20 5,19.1 5,18V4A2,2 0 0,1 7,2M7,4V18H21V11H14V4H7Z" /></g><g id="note-outline"><path d="M14,10H19.5L14,4.5V10M5,3H15L21,9V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3M5,5V19H19V12H12V5H5Z" /></g><g id="note-plus"><path d="M14,10H19.5L14,4.5V10M5,3H15L21,9V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3M9,18H11V15H14V13H11V10H9V13H6V15H9V18Z" /></g><g id="note-plus-outline"><path d="M15,10H20.5L15,4.5V10M4,3H16L22,9V19A2,2 0 0,1 20,21H4C2.89,21 2,20.1 2,19V5C2,3.89 2.89,3 4,3M4,5V19H20V12H13V5H4M8,17V15H6V13H8V11H10V13H12V15H10V17H8Z" /></g><g id="note-text"><path d="M14,10H19.5L14,4.5V10M5,3H15L21,9V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3M5,12V14H19V12H5M5,16V18H14V16H5Z" /></g><g id="notification-clear-all"><path d="M5,13H19V11H5M3,17H17V15H3M7,7V9H21V7" /></g><g id="npm"><path d="M4,10V14H6V11H7V14H8V10H4M9,10V15H11V14H13V10H9M12,11V13H11V11H12M14,10V14H16V11H17V14H18V11H19V14H20V10H14M3,9H21V15H12V16H8V15H3V9Z" /></g><g id="nuke"><path d="M14.04,12H10V11H5.5A3.5,3.5 0 0,1 2,7.5A3.5,3.5 0 0,1 5.5,4C6.53,4 7.45,4.44 8.09,5.15C8.5,3.35 10.08,2 12,2C13.92,2 15.5,3.35 15.91,5.15C16.55,4.44 17.47,4 18.5,4A3.5,3.5 0 0,1 22,7.5A3.5,3.5 0 0,1 18.5,11H14.04V12M10,16.9V15.76H5V13.76H19V15.76H14.04V16.92L20,19.08C20.58,19.29 21,19.84 21,20.5A1.5,1.5 0 0,1 19.5,22H4.5A1.5,1.5 0 0,1 3,20.5C3,19.84 3.42,19.29 4,19.08L10,16.9Z" /></g><g id="numeric"><path d="M4,17V9H2V7H6V17H4M22,15C22,16.11 21.1,17 20,17H16V15H20V13H18V11H20V9H16V7H20A2,2 0 0,1 22,9V10.5A1.5,1.5 0 0,1 20.5,12A1.5,1.5 0 0,1 22,13.5V15M14,15V17H8V13C8,11.89 8.9,11 10,11H12V9H8V7H12A2,2 0 0,1 14,9V11C14,12.11 13.1,13 12,13H10V15H14Z" /></g><g id="numeric-0-box"><path d="M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H11M11,9H13V15H11V9Z" /></g><g id="numeric-0-box-multiple-outline"><path d="M21,17V3H7V17H21M21,1A2,2 0 0,1 23,3V17A2,2 0 0,1 21,19H7A2,2 0 0,1 5,17V3A2,2 0 0,1 7,1H21M3,5V21H19V23H3A2,2 0 0,1 1,21V5H3M13,5H15A2,2 0 0,1 17,7V13A2,2 0 0,1 15,15H13A2,2 0 0,1 11,13V7A2,2 0 0,1 13,5M13,7V13H15V7H13Z" /></g><g id="numeric-0-box-outline"><path d="M19,19V5H5V19H19M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M11,7H13A2,2 0 0,1 15,9V15A2,2 0 0,1 13,17H11A2,2 0 0,1 9,15V9A2,2 0 0,1 11,7M11,9V15H13V9H11Z" /></g><g id="numeric-1-box"><path d="M14,17H12V9H10V7H14M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="numeric-1-box-multiple-outline"><path d="M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M14,15H16V5H12V7H14M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z" /></g><g id="numeric-1-box-outline"><path d="M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,17H14V7H10V9H12" /></g><g id="numeric-2-box"><path d="M15,11C15,12.11 14.1,13 13,13H11V15H15V17H9V13C9,11.89 9.9,11 11,11H13V9H9V7H13A2,2 0 0,1 15,9M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="numeric-2-box-multiple-outline"><path d="M17,13H13V11H15A2,2 0 0,0 17,9V7C17,5.89 16.1,5 15,5H11V7H15V9H13A2,2 0 0,0 11,11V15H17M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z" /></g><g id="numeric-2-box-outline"><path d="M15,15H11V13H13A2,2 0 0,0 15,11V9C15,7.89 14.1,7 13,7H9V9H13V11H11A2,2 0 0,0 9,13V17H15M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="numeric-3-box"><path d="M15,10.5A1.5,1.5 0 0,1 13.5,12C14.34,12 15,12.67 15,13.5V15C15,16.11 14.11,17 13,17H9V15H13V13H11V11H13V9H9V7H13C14.11,7 15,7.89 15,9M19,3H5C3.91,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19C20.11,21 21,20.1 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="numeric-3-box-multiple-outline"><path d="M17,13V11.5A1.5,1.5 0 0,0 15.5,10A1.5,1.5 0 0,0 17,8.5V7C17,5.89 16.1,5 15,5H11V7H15V9H13V11H15V13H11V15H15A2,2 0 0,0 17,13M3,5H1V21A2,2 0 0,0 3,23H19V21H3M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1Z" /></g><g id="numeric-3-box-outline"><path d="M15,15V13.5A1.5,1.5 0 0,0 13.5,12A1.5,1.5 0 0,0 15,10.5V9C15,7.89 14.1,7 13,7H9V9H13V11H11V13H13V15H9V17H13A2,2 0 0,0 15,15M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="numeric-4-box"><path d="M15,17H13V13H9V7H11V11H13V7H15M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="numeric-4-box-multiple-outline"><path d="M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M15,15H17V5H15V9H13V5H11V11H15M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z" /></g><g id="numeric-4-box-outline"><path d="M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M13,17H15V7H13V11H11V7H9V13H13" /></g><g id="numeric-5-box"><path d="M15,9H11V11H13A2,2 0 0,1 15,13V15C15,16.11 14.1,17 13,17H9V15H13V13H9V7H15M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="numeric-5-box-multiple-outline"><path d="M17,13V11C17,9.89 16.1,9 15,9H13V7H17V5H11V11H15V13H11V15H15A2,2 0 0,0 17,13M3,5H1V21A2,2 0 0,0 3,23H19V21H3M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1Z" /></g><g id="numeric-5-box-outline"><path d="M15,15V13C15,11.89 14.1,11 13,11H11V9H15V7H9V13H13V15H9V17H13A2,2 0 0,0 15,15M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="numeric-6-box"><path d="M15,9H11V11H13A2,2 0 0,1 15,13V15C15,16.11 14.1,17 13,17H11A2,2 0 0,1 9,15V9C9,7.89 9.9,7 11,7H15M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M11,15H13V13H11V15Z" /></g><g id="numeric-6-box-multiple-outline"><path d="M13,11H15V13H13M13,15H15A2,2 0 0,0 17,13V11C17,9.89 16.1,9 15,9H13V7H17V5H13A2,2 0 0,0 11,7V13C11,14.11 11.9,15 13,15M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z" /></g><g id="numeric-6-box-outline"><path d="M11,13H13V15H11M11,17H13A2,2 0 0,0 15,15V13C15,11.89 14.1,11 13,11H11V9H15V7H11A2,2 0 0,0 9,9V15C9,16.11 9.9,17 11,17M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="numeric-7-box"><path d="M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M11,17L15,9V7H9V9H13L9,17H11Z" /></g><g id="numeric-7-box-multiple-outline"><path d="M13,15L17,7V5H11V7H15L11,15M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z" /></g><g id="numeric-7-box-outline"><path d="M11,17L15,9V7H9V9H13L9,17M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="numeric-8-box"><path d="M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M11,17H13A2,2 0 0,0 15,15V13.5A1.5,1.5 0 0,0 13.5,12A1.5,1.5 0 0,0 15,10.5V9C15,7.89 14.1,7 13,7H11A2,2 0 0,0 9,9V10.5A1.5,1.5 0 0,0 10.5,12A1.5,1.5 0 0,0 9,13.5V15C9,16.11 9.9,17 11,17M11,13H13V15H11V13M11,9H13V11H11V9Z" /></g><g id="numeric-8-box-multiple-outline"><path d="M13,11H15V13H13M13,7H15V9H13M13,15H15A2,2 0 0,0 17,13V11.5A1.5,1.5 0 0,0 15.5,10A1.5,1.5 0 0,0 17,8.5V7C17,5.89 16.1,5 15,5H13A2,2 0 0,0 11,7V8.5A1.5,1.5 0 0,0 12.5,10A1.5,1.5 0 0,0 11,11.5V13C11,14.11 11.9,15 13,15M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z" /></g><g id="numeric-8-box-outline"><path d="M11,13H13V15H11M11,9H13V11H11M11,17H13A2,2 0 0,0 15,15V13.5A1.5,1.5 0 0,0 13.5,12A1.5,1.5 0 0,0 15,10.5V9C15,7.89 14.1,7 13,7H11A2,2 0 0,0 9,9V10.5A1.5,1.5 0 0,0 10.5,12A1.5,1.5 0 0,0 9,13.5V15C9,16.11 9.9,17 11,17M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="numeric-9-box"><path d="M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M13,11H11V9H13V11M13,7H11A2,2 0 0,0 9,9V11C9,12.11 9.9,13 11,13H13V15H9V17H13A2,2 0 0,0 15,15V9C15,7.89 14.1,7 13,7Z" /></g><g id="numeric-9-box-multiple-outline"><path d="M15,9H13V7H15M15,5H13A2,2 0 0,0 11,7V9C11,10.11 11.9,11 13,11H15V13H11V15H15A2,2 0 0,0 17,13V7C17,5.89 16.1,5 15,5M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z" /></g><g id="numeric-9-box-outline"><path d="M13,11H11V9H13M13,7H11A2,2 0 0,0 9,9V11C9,12.11 9.9,13 11,13H13V15H9V17H13A2,2 0 0,0 15,15V9C15,7.89 14.1,7 13,7M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="numeric-9-plus-box"><path d="M21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5M19,11H17V9H15V11H13V13H15V15H17V13H19V11M10,7H8A2,2 0 0,0 6,9V11C6,12.11 6.9,13 8,13H10V15H6V17H10A2,2 0 0,0 12,15V9C12,7.89 11.1,7 10,7M8,9H10V11H8V9Z" /></g><g id="numeric-9-plus-box-multiple-outline"><path d="M21,9H19V7H17V9H15V11H17V13H19V11H21V17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M11,9V8H12V9M14,12V8C14,6.89 13.1,6 12,6H11A2,2 0 0,0 9,8V9C9,10.11 9.9,11 11,11H12V12H9V14H12A2,2 0 0,0 14,12M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z" /></g><g id="numeric-9-plus-box-outline"><path d="M19,11H17V9H15V11H13V13H15V15H17V13H19V19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M9,11V10H10V11M12,14V10C12,8.89 11.1,8 10,8H9A2,2 0 0,0 7,10V11C7,12.11 7.9,13 9,13H10V14H7V16H10A2,2 0 0,0 12,14Z" /></g><g id="nutrition"><path d="M22,18A4,4 0 0,1 18,22H14A4,4 0 0,1 10,18V16H22V18M4,3H14A2,2 0 0,1 16,5V14H8V19H4A2,2 0 0,1 2,17V5A2,2 0 0,1 4,3M4,6V8H6V6H4M14,8V6H8V8H14M4,10V12H6V10H4M8,10V12H14V10H8M4,14V16H6V14H4Z" /></g><g id="oar"><path d="M20.23,15.21C18.77,13.75 14.97,10.2 12.77,11.27L4.5,3L3,4.5L11.28,12.79C10.3,15 13.88,18.62 15.35,20.08C17.11,21.84 18.26,20.92 19.61,19.57C21.1,18.08 21.61,16.61 20.23,15.21Z" /></g><g id="octagon"><path d="M15.73,3H8.27L3,8.27V15.73L8.27,21H15.73L21,15.73V8.27" /></g><g id="octagon-outline"><path d="M8.27,3L3,8.27V15.73L8.27,21H15.73C17.5,19.24 21,15.73 21,15.73V8.27L15.73,3M9.1,5H14.9L19,9.1V14.9L14.9,19H9.1L5,14.9V9.1" /></g><g id="odnoklassniki"><path d="M17.83,12.74C17.55,12.17 16.76,11.69 15.71,12.5C14.28,13.64 12,13.64 12,13.64C12,13.64 9.72,13.64 8.29,12.5C7.24,11.69 6.45,12.17 6.17,12.74C5.67,13.74 6.23,14.23 7.5,15.04C8.59,15.74 10.08,16 11.04,16.1L10.24,16.9C9.1,18.03 8,19.12 7.25,19.88C6.8,20.34 6.8,21.07 7.25,21.5L7.39,21.66C7.84,22.11 8.58,22.11 9.03,21.66L12,18.68C13.15,19.81 14.24,20.9 15,21.66C15.45,22.11 16.18,22.11 16.64,21.66L16.77,21.5C17.23,21.07 17.23,20.34 16.77,19.88L13.79,16.9L13,16.09C13.95,16 15.42,15.73 16.5,15.04C17.77,14.23 18.33,13.74 17.83,12.74M12,4.57C13.38,4.57 14.5,5.69 14.5,7.06C14.5,8.44 13.38,9.55 12,9.55C10.62,9.55 9.5,8.44 9.5,7.06C9.5,5.69 10.62,4.57 12,4.57M12,12.12C14.8,12.12 17.06,9.86 17.06,7.06C17.06,4.27 14.8,2 12,2C9.2,2 6.94,4.27 6.94,7.06C6.94,9.86 9.2,12.12 12,12.12Z" /></g><g id="office"><path d="M3,18L7,16.75V7L14,5V19.5L3.5,18.25L14,22L20,20.75V3.5L13.95,2L3,5.75V18Z" /></g><g id="oil"><path d="M22,12.5C22,12.5 24,14.67 24,16A2,2 0 0,1 22,18A2,2 0 0,1 20,16C20,14.67 22,12.5 22,12.5M6,6H10A1,1 0 0,1 11,7A1,1 0 0,1 10,8H9V10H11C11.74,10 12.39,10.4 12.73,11L19.24,7.24L22.5,9.13C23,9.4 23.14,10 22.87,10.5C22.59,10.97 22,11.14 21.5,10.86L19.4,9.65L15.75,15.97C15.41,16.58 14.75,17 14,17H5A2,2 0 0,1 3,15V12A2,2 0 0,1 5,10H7V8H6A1,1 0 0,1 5,7A1,1 0 0,1 6,6M5,12V15H14L16.06,11.43L12.6,13.43L11.69,12H5M0.38,9.21L2.09,7.5C2.5,7.11 3.11,7.11 3.5,7.5C3.89,7.89 3.89,8.5 3.5,8.91L1.79,10.62C1.4,11 0.77,11 0.38,10.62C0,10.23 0,9.6 0.38,9.21Z" /></g><g id="oil-temperature"><path d="M11.5,1A1.5,1.5 0 0,0 10,2.5V14.5C9.37,14.97 9,15.71 9,16.5A2.5,2.5 0 0,0 11.5,19A2.5,2.5 0 0,0 14,16.5C14,15.71 13.63,15 13,14.5V13H17V11H13V9H17V7H13V5H17V3H13V2.5A1.5,1.5 0 0,0 11.5,1M0,15V17C0.67,17 0.79,17.21 1.29,17.71C1.79,18.21 2.67,19 4,19C5.33,19 6.21,18.21 6.71,17.71C6.82,17.59 6.91,17.5 7,17.41V15.16C6.21,15.42 5.65,15.93 5.29,16.29C4.79,16.79 4.67,17 4,17C3.33,17 3.21,16.79 2.71,16.29C2.21,15.79 1.33,15 0,15M16,15V17C16.67,17 16.79,17.21 17.29,17.71C17.79,18.21 18.67,19 20,19C21.33,19 22.21,18.21 22.71,17.71C23.21,17.21 23.33,17 24,17V15C22.67,15 21.79,15.79 21.29,16.29C20.79,16.79 20.67,17 20,17C19.33,17 19.21,16.79 18.71,16.29C18.21,15.79 17.33,15 16,15M8,20C6.67,20 5.79,20.79 5.29,21.29C4.79,21.79 4.67,22 4,22C3.33,22 3.21,21.79 2.71,21.29C2.35,20.93 1.79,20.42 1,20.16V22.41C1.09,22.5 1.18,22.59 1.29,22.71C1.79,23.21 2.67,24 4,24C5.33,24 6.21,23.21 6.71,22.71C7.21,22.21 7.33,22 8,22C8.67,22 8.79,22.21 9.29,22.71C9.73,23.14 10.44,23.8 11.5,23.96C11.66,24 11.83,24 12,24C13.33,24 14.21,23.21 14.71,22.71C15.21,22.21 15.33,22 16,22C16.67,22 16.79,22.21 17.29,22.71C17.79,23.21 18.67,24 20,24C21.33,24 22.21,23.21 22.71,22.71C22.82,22.59 22.91,22.5 23,22.41V20.16C22.21,20.42 21.65,20.93 21.29,21.29C20.79,21.79 20.67,22 20,22C19.33,22 19.21,21.79 18.71,21.29C18.21,20.79 17.33,20 16,20C14.67,20 13.79,20.79 13.29,21.29C12.79,21.79 12.67,22 12,22C11.78,22 11.63,21.97 11.5,21.92C11.22,21.82 11.05,21.63 10.71,21.29C10.21,20.79 9.33,20 8,20Z" /></g><g id="omega"><path d="M19.15,19H13.39V16.87C15.5,15.25 16.59,13.24 16.59,10.84C16.59,9.34 16.16,8.16 15.32,7.29C14.47,6.42 13.37,6 12.03,6C10.68,6 9.57,6.42 8.71,7.3C7.84,8.17 7.41,9.37 7.41,10.88C7.41,13.26 8.5,15.26 10.61,16.87V19H4.85V16.87H8.41C6.04,15.32 4.85,13.23 4.85,10.6C4.85,8.5 5.5,6.86 6.81,5.66C8.12,4.45 9.84,3.85 11.97,3.85C14.15,3.85 15.89,4.45 17.19,5.64C18.5,6.83 19.15,8.5 19.15,10.58C19.15,13.21 17.95,15.31 15.55,16.87H19.15V19Z" /></g><g id="onedrive"><path d="M20.08,13.64C21.17,13.81 22,14.75 22,15.89C22,16.78 21.5,17.55 20.75,17.92L20.58,18H9.18L9.16,18V18C7.71,18 6.54,16.81 6.54,15.36C6.54,13.9 7.72,12.72 9.18,12.72L9.4,12.73L9.39,12.53A3.3,3.3 0 0,1 12.69,9.23C13.97,9.23 15.08,9.96 15.63,11C16.08,10.73 16.62,10.55 17.21,10.55A2.88,2.88 0 0,1 20.09,13.43L20.08,13.64M8.82,12.16C7.21,12.34 5.96,13.7 5.96,15.36C5.96,16.04 6.17,16.66 6.5,17.18H4.73A2.73,2.73 0 0,1 2,14.45C2,13 3.12,11.83 4.53,11.73L4.46,11.06C4.46,9.36 5.84,8 7.54,8C8.17,8 8.77,8.18 9.26,8.5C9.95,7.11 11.4,6.15 13.07,6.15C15.27,6.15 17.08,7.83 17.3,9.97H17.21C16.73,9.97 16.27,10.07 15.84,10.25C15.12,9.25 13.96,8.64 12.69,8.64C10.67,8.64 9,10.19 8.82,12.16Z" /></g><g id="opacity"><path d="M17.66,8L12,2.35L6.34,8C4.78,9.56 4,11.64 4,13.64C4,15.64 4.78,17.75 6.34,19.31C7.9,20.87 9.95,21.66 12,21.66C14.05,21.66 16.1,20.87 17.66,19.31C19.22,17.75 20,15.64 20,13.64C20,11.64 19.22,9.56 17.66,8M6,14C6,12 6.62,10.73 7.76,9.6L12,5.27L16.24,9.65C17.38,10.77 18,12 18,14H6Z" /></g><g id="open-in-app"><path d="M12,10L8,14H11V20H13V14H16M19,4H5C3.89,4 3,4.9 3,6V18A2,2 0 0,0 5,20H9V18H5V8H19V18H15V20H19A2,2 0 0,0 21,18V6A2,2 0 0,0 19,4Z" /></g><g id="open-in-new"><path d="M14,3V5H17.59L7.76,14.83L9.17,16.24L19,6.41V10H21V3M19,19H5V5H12V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V12H19V19Z" /></g><g id="openid"><path d="M14,2L11,3.5V19.94C7,19.5 4,17.46 4,15C4,12.75 6.5,10.85 10,10.22V8.19C4.86,8.88 1,11.66 1,15C1,18.56 5.36,21.5 11,21.94C11.03,21.94 11.06,21.94 11.09,21.94L14,20.5V2M15,8.19V10.22C16.15,10.43 17.18,10.77 18.06,11.22L16.5,12L23,13.5L22.5,9L20.5,10C19,9.12 17.12,8.47 15,8.19Z" /></g><g id="opera"><path d="M17.33,3.57C15.86,2.56 14.05,2 12,2C10.13,2 8.46,2.47 7.06,3.32C4.38,4.95 2.72,8 2.72,11.9C2.72,17.19 6.43,22 12,22C17.57,22 21.28,17.19 21.28,11.9C21.28,8.19 19.78,5.25 17.33,3.57M12,3.77C15,3.77 15.6,7.93 15.6,11.72C15.6,15.22 15.26,19.91 12.04,19.91C8.82,19.91 8.4,15.17 8.4,11.67C8.4,7.89 9,3.77 12,3.77Z" /></g><g id="ornament"><path d="M12,1A3,3 0 0,1 15,4V5A1,1 0 0,1 16,6V7.07C18.39,8.45 20,11.04 20,14A8,8 0 0,1 12,22A8,8 0 0,1 4,14C4,11.04 5.61,8.45 8,7.07V6A1,1 0 0,1 9,5V4A3,3 0 0,1 12,1M12,3A1,1 0 0,0 11,4V5H13V4A1,1 0 0,0 12,3M12,8C10.22,8 8.63,8.77 7.53,10H16.47C15.37,8.77 13.78,8 12,8M6.34,16H7.59L6,14.43C6.05,15 6.17,15.5 6.34,16M12.59,16L8.59,12H6.41L10.41,16H12.59M17.66,12H16.41L18,13.57C17.95,13 17.83,12.5 17.66,12M11.41,12L15.41,16H17.59L13.59,12H11.41M12,20C13.78,20 15.37,19.23 16.47,18H7.53C8.63,19.23 10.22,20 12,20Z" /></g><g id="ornament-variant"><path d="M12,1A3,3 0 0,1 15,4V5A1,1 0 0,1 16,6V7.07C18.39,8.45 20,11.04 20,14A8,8 0 0,1 12,22A8,8 0 0,1 4,14C4,11.04 5.61,8.45 8,7.07V6A1,1 0 0,1 9,5V4A3,3 0 0,1 12,1M12,3A1,1 0 0,0 11,4V5H13V4A1,1 0 0,0 12,3M12,8C10.22,8 8.63,8.77 7.53,10H16.47C15.37,8.77 13.78,8 12,8M12,20C13.78,20 15.37,19.23 16.47,18H7.53C8.63,19.23 10.22,20 12,20M12,12A2,2 0 0,0 10,14A2,2 0 0,0 12,16A2,2 0 0,0 14,14A2,2 0 0,0 12,12M18,14C18,13.31 17.88,12.65 17.67,12C16.72,12.19 16,13 16,14C16,15 16.72,15.81 17.67,15.97C17.88,15.35 18,14.69 18,14M6,14C6,14.69 6.12,15.35 6.33,15.97C7.28,15.81 8,15 8,14C8,13 7.28,12.19 6.33,12C6.12,12.65 6,13.31 6,14Z" /></g><g id="owl"><path d="M12,16C12.56,16.84 13.31,17.53 14.2,18L12,20.2L9.8,18C10.69,17.53 11.45,16.84 12,16M17,11.2A2,2 0 0,0 15,13.2A2,2 0 0,0 17,15.2A2,2 0 0,0 19,13.2C19,12.09 18.1,11.2 17,11.2M7,11.2A2,2 0 0,0 5,13.2A2,2 0 0,0 7,15.2A2,2 0 0,0 9,13.2C9,12.09 8.1,11.2 7,11.2M17,8.7A4,4 0 0,1 21,12.7A4,4 0 0,1 17,16.7A4,4 0 0,1 13,12.7A4,4 0 0,1 17,8.7M7,8.7A4,4 0 0,1 11,12.7A4,4 0 0,1 7,16.7A4,4 0 0,1 3,12.7A4,4 0 0,1 7,8.7M2.24,1C4,4.7 2.73,7.46 1.55,10.2C1.19,11 1,11.83 1,12.7A6,6 0 0,0 7,18.7C7.21,18.69 7.42,18.68 7.63,18.65L10.59,21.61L12,23L13.41,21.61L16.37,18.65C16.58,18.68 16.79,18.69 17,18.7A6,6 0 0,0 23,12.7C23,11.83 22.81,11 22.45,10.2C21.27,7.46 20,4.7 21.76,1C19.12,3.06 15.36,4.69 12,4.7C8.64,4.69 4.88,3.06 2.24,1Z" /></g><g id="package"><path d="M5.12,5H18.87L17.93,4H5.93L5.12,5M20.54,5.23C20.83,5.57 21,6 21,6.5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V6.5C3,6 3.17,5.57 3.46,5.23L4.84,3.55C5.12,3.21 5.53,3 6,3H18C18.47,3 18.88,3.21 19.15,3.55L20.54,5.23M6,18H12V15H6V18Z" /></g><g id="package-down"><path d="M5.12,5L5.93,4H17.93L18.87,5M12,17.5L6.5,12H10V10H14V12H17.5L12,17.5M20.54,5.23L19.15,3.55C18.88,3.21 18.47,3 18,3H6C5.53,3 5.12,3.21 4.84,3.55L3.46,5.23C3.17,5.57 3,6 3,6.5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V6.5C21,6 20.83,5.57 20.54,5.23Z" /></g><g id="package-up"><path d="M20.54,5.23C20.83,5.57 21,6 21,6.5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V6.5C3,6 3.17,5.57 3.46,5.23L4.84,3.55C5.12,3.21 5.53,3 6,3H18C18.47,3 18.88,3.21 19.15,3.55L20.54,5.23M5.12,5H18.87L17.93,4H5.93L5.12,5M12,9.5L6.5,15H10V17H14V15H17.5L12,9.5Z" /></g><g id="package-variant"><path d="M2,10.96C1.5,10.68 1.35,10.07 1.63,9.59L3.13,7C3.24,6.8 3.41,6.66 3.6,6.58L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.66,6.72 20.82,6.88 20.91,7.08L22.36,9.6C22.64,10.08 22.47,10.69 22,10.96L21,11.54V16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V10.96C2.7,11.13 2.32,11.14 2,10.96M12,4.15V4.15L12,10.85V10.85L17.96,7.5L12,4.15M5,15.91L11,19.29V12.58L5,9.21V15.91M19,15.91V12.69L14,15.59C13.67,15.77 13.3,15.76 13,15.6V19.29L19,15.91M13.85,13.36L20.13,9.73L19.55,8.72L13.27,12.35L13.85,13.36Z" /></g><g id="package-variant-closed"><path d="M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L10.11,5.22L16,8.61L17.96,7.5L12,4.15M6.04,7.5L12,10.85L13.96,9.75L8.08,6.35L6.04,7.5M5,15.91L11,19.29V12.58L5,9.21V15.91M19,15.91V9.21L13,12.58V19.29L19,15.91Z" /></g><g id="page-first"><path d="M18.41,16.59L13.82,12L18.41,7.41L17,6L11,12L17,18L18.41,16.59M6,6H8V18H6V6Z" /></g><g id="page-last"><path d="M5.59,7.41L10.18,12L5.59,16.59L7,18L13,12L7,6L5.59,7.41M16,6H18V18H16V6Z" /></g><g id="palette"><path d="M17.5,12A1.5,1.5 0 0,1 16,10.5A1.5,1.5 0 0,1 17.5,9A1.5,1.5 0 0,1 19,10.5A1.5,1.5 0 0,1 17.5,12M14.5,8A1.5,1.5 0 0,1 13,6.5A1.5,1.5 0 0,1 14.5,5A1.5,1.5 0 0,1 16,6.5A1.5,1.5 0 0,1 14.5,8M9.5,8A1.5,1.5 0 0,1 8,6.5A1.5,1.5 0 0,1 9.5,5A1.5,1.5 0 0,1 11,6.5A1.5,1.5 0 0,1 9.5,8M6.5,12A1.5,1.5 0 0,1 5,10.5A1.5,1.5 0 0,1 6.5,9A1.5,1.5 0 0,1 8,10.5A1.5,1.5 0 0,1 6.5,12M12,3A9,9 0 0,0 3,12A9,9 0 0,0 12,21A1.5,1.5 0 0,0 13.5,19.5C13.5,19.11 13.35,18.76 13.11,18.5C12.88,18.23 12.73,17.88 12.73,17.5A1.5,1.5 0 0,1 14.23,16H16A5,5 0 0,0 21,11C21,6.58 16.97,3 12,3Z" /></g><g id="palette-advanced"><path d="M22,22H10V20H22V22M2,22V20H9V22H2M18,18V10H22V18H18M18,3H22V9H18V3M2,18V3H16V18H2M9,14.56A3,3 0 0,0 12,11.56C12,9.56 9,6.19 9,6.19C9,6.19 6,9.56 6,11.56A3,3 0 0,0 9,14.56Z" /></g><g id="panda"><path d="M12,3C13.74,3 15.36,3.5 16.74,4.35C17.38,3.53 18.38,3 19.5,3A3.5,3.5 0 0,1 23,6.5C23,8 22.05,9.28 20.72,9.78C20.9,10.5 21,11.23 21,12A9,9 0 0,1 12,21A9,9 0 0,1 3,12C3,11.23 3.1,10.5 3.28,9.78C1.95,9.28 1,8 1,6.5A3.5,3.5 0 0,1 4.5,3C5.62,3 6.62,3.53 7.26,4.35C8.64,3.5 10.26,3 12,3M12,5A7,7 0 0,0 5,12A7,7 0 0,0 12,19A7,7 0 0,0 19,12A7,7 0 0,0 12,5M16.19,10.3C16.55,11.63 16.08,12.91 15.15,13.16C14.21,13.42 13.17,12.54 12.81,11.2C12.45,9.87 12.92,8.59 13.85,8.34C14.79,8.09 15.83,8.96 16.19,10.3M7.81,10.3C8.17,8.96 9.21,8.09 10.15,8.34C11.08,8.59 11.55,9.87 11.19,11.2C10.83,12.54 9.79,13.42 8.85,13.16C7.92,12.91 7.45,11.63 7.81,10.3M12,14C12.6,14 13.13,14.19 13.5,14.5L12.5,15.5C12.5,15.92 12.84,16.25 13.25,16.25A0.75,0.75 0 0,0 14,15.5A0.5,0.5 0 0,1 14.5,15A0.5,0.5 0 0,1 15,15.5A1.75,1.75 0 0,1 13.25,17.25C12.76,17.25 12.32,17.05 12,16.72C11.68,17.05 11.24,17.25 10.75,17.25A1.75,1.75 0 0,1 9,15.5A0.5,0.5 0 0,1 9.5,15A0.5,0.5 0 0,1 10,15.5A0.75,0.75 0 0,0 10.75,16.25A0.75,0.75 0 0,0 11.5,15.5L10.5,14.5C10.87,14.19 11.4,14 12,14Z" /></g><g id="pandora"><path d="M16.87,7.73C16.87,9.9 15.67,11.7 13.09,11.7H10.45V3.66H13.09C15.67,3.66 16.87,5.5 16.87,7.73M10.45,15.67V13.41H13.09C17.84,13.41 20.5,10.91 20.5,7.73C20.5,4.45 17.84,2 13.09,2H3.5V2.92C6.62,2.92 7.17,3.66 7.17,8.28V15.67C7.17,20.29 6.62,21.08 3.5,21.08V22H14.1V21.08C11,21.08 10.45,20.29 10.45,15.67Z" /></g><g id="panorama"><path d="M8.5,12.5L11,15.5L14.5,11L19,17H5M23,18V6A2,2 0 0,0 21,4H3A2,2 0 0,0 1,6V18A2,2 0 0,0 3,20H21A2,2 0 0,0 23,18Z" /></g><g id="panorama-fisheye"><path d="M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22C17.53,22 22,17.53 22,12C22,6.47 17.53,2 12,2Z" /></g><g id="panorama-horizontal"><path d="M21.43,4C21.33,4 21.23,4 21.12,4.06C18.18,5.16 15.09,5.7 12,5.7C8.91,5.7 5.82,5.15 2.88,4.06C2.77,4 2.66,4 2.57,4C2.23,4 2,4.23 2,4.63V19.38C2,19.77 2.23,20 2.57,20C2.67,20 2.77,20 2.88,19.94C5.82,18.84 8.91,18.3 12,18.3C15.09,18.3 18.18,18.85 21.12,19.94C21.23,20 21.33,20 21.43,20C21.76,20 22,19.77 22,19.37V4.63C22,4.23 21.76,4 21.43,4M20,6.54V17.45C17.4,16.68 14.72,16.29 12,16.29C9.28,16.29 6.6,16.68 4,17.45V6.54C6.6,7.31 9.28,7.7 12,7.7C14.72,7.71 17.4,7.32 20,6.54Z" /></g><g id="panorama-vertical"><path d="M6.54,20C7.31,17.4 7.7,14.72 7.7,12C7.7,9.28 7.31,6.6 6.54,4H17.45C16.68,6.6 16.29,9.28 16.29,12C16.29,14.72 16.68,17.4 17.45,20M19.94,21.12C18.84,18.18 18.3,15.09 18.3,12C18.3,8.91 18.85,5.82 19.94,2.88C20,2.77 20,2.66 20,2.57C20,2.23 19.77,2 19.37,2H4.63C4.23,2 4,2.23 4,2.57C4,2.67 4,2.77 4.06,2.88C5.16,5.82 5.71,8.91 5.71,12C5.71,15.09 5.16,18.18 4.07,21.12C4,21.23 4,21.34 4,21.43C4,21.76 4.23,22 4.63,22H19.38C19.77,22 20,21.76 20,21.43C20,21.33 20,21.23 19.94,21.12Z" /></g><g id="panorama-wide-angle"><path d="M12,4C9.27,4 6.78,4.24 4.05,4.72L3.12,4.88L2.87,5.78C2.29,7.85 2,9.93 2,12C2,14.07 2.29,16.15 2.87,18.22L3.12,19.11L4.05,19.27C6.78,19.76 9.27,20 12,20C14.73,20 17.22,19.76 19.95,19.28L20.88,19.12L21.13,18.23C21.71,16.15 22,14.07 22,12C22,9.93 21.71,7.85 21.13,5.78L20.88,4.89L19.95,4.73C17.22,4.24 14.73,4 12,4M12,6C14.45,6 16.71,6.2 19.29,6.64C19.76,8.42 20,10.22 20,12C20,13.78 19.76,15.58 19.29,17.36C16.71,17.8 14.45,18 12,18C9.55,18 7.29,17.8 4.71,17.36C4.24,15.58 4,13.78 4,12C4,10.22 4.24,8.42 4.71,6.64C7.29,6.2 9.55,6 12,6Z" /></g><g id="paper-cut-vertical"><path d="M11.43,3.23L12,4L12.57,3.23V3.24C13.12,2.5 14,2 15,2A3,3 0 0,1 18,5C18,5.35 17.94,5.69 17.83,6H20A2,2 0 0,1 22,8V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V8A2,2 0 0,1 4,6H6.17C6.06,5.69 6,5.35 6,5A3,3 0 0,1 9,2C10,2 10.88,2.5 11.43,3.24V3.23M4,8V20H11A1,1 0 0,1 12,19A1,1 0 0,1 13,20H20V8H15L14.9,8L17,10.92L15.4,12.1L12.42,8H11.58L8.6,12.1L7,10.92L9.1,8H9L4,8M9,4A1,1 0 0,0 8,5A1,1 0 0,0 9,6A1,1 0 0,0 10,5A1,1 0 0,0 9,4M15,4A1,1 0 0,0 14,5A1,1 0 0,0 15,6A1,1 0 0,0 16,5A1,1 0 0,0 15,4M12,16A1,1 0 0,1 13,17A1,1 0 0,1 12,18A1,1 0 0,1 11,17A1,1 0 0,1 12,16M12,13A1,1 0 0,1 13,14A1,1 0 0,1 12,15A1,1 0 0,1 11,14A1,1 0 0,1 12,13M12,10A1,1 0 0,1 13,11A1,1 0 0,1 12,12A1,1 0 0,1 11,11A1,1 0 0,1 12,10Z" /></g><g id="paperclip"><path d="M16.5,6V17.5A4,4 0 0,1 12.5,21.5A4,4 0 0,1 8.5,17.5V5A2.5,2.5 0 0,1 11,2.5A2.5,2.5 0 0,1 13.5,5V15.5A1,1 0 0,1 12.5,16.5A1,1 0 0,1 11.5,15.5V6H10V15.5A2.5,2.5 0 0,0 12.5,18A2.5,2.5 0 0,0 15,15.5V5A4,4 0 0,0 11,1A4,4 0 0,0 7,5V17.5A5.5,5.5 0 0,0 12.5,23A5.5,5.5 0 0,0 18,17.5V6H16.5Z" /></g><g id="parking"><path d="M13.2,11H10V7H13.2A2,2 0 0,1 15.2,9A2,2 0 0,1 13.2,11M13,3H6V21H10V15H13A6,6 0 0,0 19,9C19,5.68 16.31,3 13,3Z" /></g><g id="pause"><path d="M14,19H18V5H14M6,19H10V5H6V19Z" /></g><g id="pause-circle"><path d="M15,16H13V8H15M11,16H9V8H11M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="pause-circle-outline"><path d="M13,16V8H15V16H13M9,16V8H11V16H9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z" /></g><g id="pause-octagon"><path d="M15.73,3L21,8.27V15.73L15.73,21H8.27L3,15.73V8.27L8.27,3H15.73M15,16V8H13V16H15M11,16V8H9V16H11Z" /></g><g id="pause-octagon-outline"><path d="M15,16H13V8H15V16M11,16H9V8H11V16M15.73,3L21,8.27V15.73L15.73,21H8.27L3,15.73V8.27L8.27,3H15.73M14.9,5H9.1L5,9.1V14.9L9.1,19H14.9L19,14.9V9.1L14.9,5Z" /></g><g id="paw"><path d="M8.35,3C9.53,2.83 10.78,4.12 11.14,5.9C11.5,7.67 10.85,9.25 9.67,9.43C8.5,9.61 7.24,8.32 6.87,6.54C6.5,4.77 7.17,3.19 8.35,3M15.5,3C16.69,3.19 17.35,4.77 17,6.54C16.62,8.32 15.37,9.61 14.19,9.43C13,9.25 12.35,7.67 12.72,5.9C13.08,4.12 14.33,2.83 15.5,3M3,7.6C4.14,7.11 5.69,8 6.5,9.55C7.26,11.13 7,12.79 5.87,13.28C4.74,13.77 3.2,12.89 2.41,11.32C1.62,9.75 1.9,8.08 3,7.6M21,7.6C22.1,8.08 22.38,9.75 21.59,11.32C20.8,12.89 19.26,13.77 18.13,13.28C17,12.79 16.74,11.13 17.5,9.55C18.31,8 19.86,7.11 21,7.6M19.33,18.38C19.37,19.32 18.65,20.36 17.79,20.75C16,21.57 13.88,19.87 11.89,19.87C9.9,19.87 7.76,21.64 6,20.75C5,20.26 4.31,18.96 4.44,17.88C4.62,16.39 6.41,15.59 7.47,14.5C8.88,13.09 9.88,10.44 11.89,10.44C13.89,10.44 14.95,13.05 16.3,14.5C17.41,15.72 19.26,16.75 19.33,18.38Z" /></g><g id="paw-off"><path d="M2,4.27L3.28,3L21.5,21.22L20.23,22.5L18.23,20.5C18.09,20.6 17.94,20.68 17.79,20.75C16,21.57 13.88,19.87 11.89,19.87C9.9,19.87 7.76,21.64 6,20.75C5,20.26 4.31,18.96 4.44,17.88C4.62,16.39 6.41,15.59 7.47,14.5C8.21,13.77 8.84,12.69 9.55,11.82L2,4.27M8.35,3C9.53,2.83 10.78,4.12 11.14,5.9C11.32,6.75 11.26,7.56 11,8.19L7.03,4.2C7.29,3.55 7.75,3.1 8.35,3M15.5,3C16.69,3.19 17.35,4.77 17,6.54C16.62,8.32 15.37,9.61 14.19,9.43C13,9.25 12.35,7.67 12.72,5.9C13.08,4.12 14.33,2.83 15.5,3M3,7.6C4.14,7.11 5.69,8 6.5,9.55C7.26,11.13 7,12.79 5.87,13.28C4.74,13.77 3.2,12.89 2.41,11.32C1.62,9.75 1.9,8.08 3,7.6M21,7.6C22.1,8.08 22.38,9.75 21.59,11.32C20.8,12.89 19.26,13.77 18.13,13.28C17,12.79 16.74,11.13 17.5,9.55C18.31,8 19.86,7.11 21,7.6Z" /></g><g id="pen"><path d="M20.71,7.04C20.37,7.38 20.04,7.71 20.03,8.04C20,8.36 20.34,8.69 20.66,9C21.14,9.5 21.61,9.95 21.59,10.44C21.57,10.93 21.06,11.44 20.55,11.94L16.42,16.08L15,14.66L19.25,10.42L18.29,9.46L16.87,10.87L13.12,7.12L16.96,3.29C17.35,2.9 18,2.9 18.37,3.29L20.71,5.63C21.1,6 21.1,6.65 20.71,7.04M3,17.25L12.56,7.68L16.31,11.43L6.75,21H3V17.25Z" /></g><g id="pencil"><path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z" /></g><g id="pencil-box"><path d="M19,3A2,2 0 0,1 21,5V19C21,20.11 20.1,21 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M16.7,9.35C16.92,9.14 16.92,8.79 16.7,8.58L15.42,7.3C15.21,7.08 14.86,7.08 14.65,7.3L13.65,8.3L15.7,10.35L16.7,9.35M7,14.94V17H9.06L15.12,10.94L13.06,8.88L7,14.94Z" /></g><g id="pencil-box-outline"><path d="M19,19V5H5V19H19M19,3A2,2 0 0,1 21,5V19C21,20.11 20.1,21 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M16.7,9.35L15.7,10.35L13.65,8.3L14.65,7.3C14.86,7.08 15.21,7.08 15.42,7.3L16.7,8.58C16.92,8.79 16.92,9.14 16.7,9.35M7,14.94L13.06,8.88L15.12,10.94L9.06,17H7V14.94Z" /></g><g id="pencil-circle"><path d="M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22C17.53,22 22,17.53 22,12C22,6.47 17.53,2 12,2M15.1,7.07C15.24,7.07 15.38,7.12 15.5,7.23L16.77,8.5C17,8.72 17,9.07 16.77,9.28L15.77,10.28L13.72,8.23L14.72,7.23C14.82,7.12 14.96,7.07 15.1,7.07M13.13,8.81L15.19,10.87L9.13,16.93H7.07V14.87L13.13,8.81Z" /></g><g id="pencil-lock"><path d="M5.5,2A2.5,2.5 0 0,0 3,4.5V5A1,1 0 0,0 2,6V10A1,1 0 0,0 3,11H8A1,1 0 0,0 9,10V6A1,1 0 0,0 8,5V4.5A2.5,2.5 0 0,0 5.5,2M5.5,3A1.5,1.5 0 0,1 7,4.5V5H4V4.5A1.5,1.5 0 0,1 5.5,3M19.66,3C19.4,3 19.16,3.09 18.97,3.28L17.13,5.13L20.88,8.88L22.72,7.03C23.11,6.64 23.11,6 22.72,5.63L20.38,3.28C20.18,3.09 19.91,3 19.66,3M16.06,6.19L5,17.25V21H8.75L19.81,9.94L16.06,6.19Z" /></g><g id="pencil-off"><path d="M18.66,2C18.4,2 18.16,2.09 17.97,2.28L16.13,4.13L19.88,7.88L21.72,6.03C22.11,5.64 22.11,5 21.72,4.63L19.38,2.28C19.18,2.09 18.91,2 18.66,2M3.28,4L2,5.28L8.5,11.75L4,16.25V20H7.75L12.25,15.5L18.72,22L20,20.72L13.5,14.25L9.75,10.5L3.28,4M15.06,5.19L11.03,9.22L14.78,12.97L18.81,8.94L15.06,5.19Z" /></g><g id="pentagon"><path d="M12,2.5L2,9.8L5.8,21.5H18.2L22,9.8L12,2.5Z" /></g><g id="pentagon-outline"><path d="M12,5L19.6,10.5L16.7,19.4H7.3L4.4,10.5L12,5M12,2.5L2,9.8L5.8,21.5H18.1L22,9.8L12,2.5Z" /></g><g id="percent"><path d="M7,4A3,3 0 0,1 10,7A3,3 0 0,1 7,10A3,3 0 0,1 4,7A3,3 0 0,1 7,4M17,14A3,3 0 0,1 20,17A3,3 0 0,1 17,20A3,3 0 0,1 14,17A3,3 0 0,1 17,14M20,5.41L5.41,20L4,18.59L18.59,4L20,5.41Z" /></g><g id="pharmacy"><path d="M16,14H13V17H11V14H8V12H11V9H13V12H16M21,5H18.35L19.5,1.85L17.15,1L15.69,5H3V7L5,13L3,19V21H21V19L19,13L21,7V5Z" /></g><g id="phone"><path d="M6.62,10.79C8.06,13.62 10.38,15.94 13.21,17.38L15.41,15.18C15.69,14.9 16.08,14.82 16.43,14.93C17.55,15.3 18.75,15.5 20,15.5A1,1 0 0,1 21,16.5V20A1,1 0 0,1 20,21A17,17 0 0,1 3,4A1,1 0 0,1 4,3H7.5A1,1 0 0,1 8.5,4C8.5,5.25 8.7,6.45 9.07,7.57C9.18,7.92 9.1,8.31 8.82,8.59L6.62,10.79Z" /></g><g id="phone-bluetooth"><path d="M20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.06,13.62 6.62,10.79L8.82,8.59C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5M18,7.21L18.94,8.14L18,9.08M18,2.91L18.94,3.85L18,4.79M14.71,9.5L17,7.21V11H17.5L20.35,8.14L18.21,6L20.35,3.85L17.5,1H17V4.79L14.71,2.5L14,3.21L16.79,6L14,8.79L14.71,9.5Z" /></g><g id="phone-classic"><path d="M12,3C7.46,3 3.34,4.78 0.29,7.67C0.11,7.85 0,8.1 0,8.38C0,8.66 0.11,8.91 0.29,9.09L2.77,11.57C2.95,11.75 3.2,11.86 3.5,11.86C3.75,11.86 4,11.75 4.18,11.58C4.97,10.84 5.87,10.22 6.84,9.73C7.17,9.57 7.4,9.23 7.4,8.83V5.73C8.85,5.25 10.39,5 12,5C13.59,5 15.14,5.25 16.59,5.72V8.82C16.59,9.21 16.82,9.56 17.15,9.72C18.13,10.21 19,10.84 19.82,11.57C20,11.75 20.25,11.85 20.5,11.85C20.8,11.85 21.05,11.74 21.23,11.56L23.71,9.08C23.89,8.9 24,8.65 24,8.37C24,8.09 23.88,7.85 23.7,7.67C20.65,4.78 16.53,3 12,3M9,7V10C9,10 3,15 3,18V22H21V18C21,15 15,10 15,10V7H13V9H11V7H9M12,12A4,4 0 0,1 16,16A4,4 0 0,1 12,20A4,4 0 0,1 8,16A4,4 0 0,1 12,12M12,13.5A2.5,2.5 0 0,0 9.5,16A2.5,2.5 0 0,0 12,18.5A2.5,2.5 0 0,0 14.5,16A2.5,2.5 0 0,0 12,13.5Z" /></g><g id="phone-forward"><path d="M20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.06,13.62 6.62,10.79L8.82,8.59C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5M18,11L23,6L18,1V4H14V8H18V11Z" /></g><g id="phone-hangup"><path d="M12,9C10.4,9 8.85,9.25 7.4,9.72V12.82C7.4,13.22 7.17,13.56 6.84,13.72C5.86,14.21 4.97,14.84 4.17,15.57C4,15.75 3.75,15.86 3.5,15.86C3.2,15.86 2.95,15.74 2.77,15.56L0.29,13.08C0.11,12.9 0,12.65 0,12.38C0,12.1 0.11,11.85 0.29,11.67C3.34,8.77 7.46,7 12,7C16.54,7 20.66,8.77 23.71,11.67C23.89,11.85 24,12.1 24,12.38C24,12.65 23.89,12.9 23.71,13.08L21.23,15.56C21.05,15.74 20.8,15.86 20.5,15.86C20.25,15.86 20,15.75 19.82,15.57C19.03,14.84 18.14,14.21 17.16,13.72C16.83,13.56 16.6,13.22 16.6,12.82V9.72C15.15,9.25 13.6,9 12,9Z" /></g><g id="phone-in-talk"><path d="M15,12H17A5,5 0 0,0 12,7V9A3,3 0 0,1 15,12M19,12H21C21,7 16.97,3 12,3V5C15.86,5 19,8.13 19,12M20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.06,13.62 6.62,10.79L8.82,8.59C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5Z" /></g><g id="phone-incoming"><path d="M4,3A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.17L13.21,17.37C10.38,15.93 8.06,13.62 6.62,10.78L8.82,8.57C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4M19,11V9.5H15.5L21,4L20,3L14.5,8.5V5H13V11H19Z" /></g><g id="phone-locked"><path d="M19.2,4H15.8V3.5C15.8,2.56 16.56,1.8 17.5,1.8C18.44,1.8 19.2,2.56 19.2,3.5M20,4V3.5A2.5,2.5 0 0,0 17.5,1A2.5,2.5 0 0,0 15,3.5V4A1,1 0 0,0 14,5V9A1,1 0 0,0 15,10H20A1,1 0 0,0 21,9V5A1,1 0 0,0 20,4M20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.06,13.62 6.62,10.79L8.82,8.59C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5Z" /></g><g id="phone-log"><path d="M20,15.5A1,1 0 0,1 21,16.5V20A1,1 0 0,1 20,21A17,17 0 0,1 3,4A1,1 0 0,1 4,3H7.5A1,1 0 0,1 8.5,4C8.5,5.24 8.7,6.45 9.07,7.57C9.18,7.92 9.1,8.31 8.82,8.58L6.62,10.79C8.06,13.62 10.38,15.94 13.21,17.38L15.41,15.18C15.69,14.9 16.08,14.82 16.43,14.93C17.55,15.3 18.75,15.5 20,15.5M12,3H14V5H12M15,3H21V5H15M12,6H14V8H12M15,6H21V8H15M12,9H14V11H12M15,9H21V11H15" /></g><g id="phone-minus"><path d="M4,3A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5C18.76,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.07,13.62 6.62,10.79L8.82,8.58C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.24 8.5,4A1,1 0 0,0 7.5,3M13,6V8H21V6" /></g><g id="phone-missed"><path d="M23.71,16.67C20.66,13.77 16.54,12 12,12C7.46,12 3.34,13.77 0.29,16.67C0.11,16.85 0,17.1 0,17.38C0,17.65 0.11,17.9 0.29,18.08L2.77,20.56C2.95,20.74 3.2,20.86 3.5,20.86C3.75,20.86 4,20.75 4.18,20.57C4.97,19.83 5.86,19.21 6.84,18.72C7.17,18.56 7.4,18.22 7.4,17.82V14.72C8.85,14.25 10.39,14 12,14C13.6,14 15.15,14.25 16.6,14.72V17.82C16.6,18.22 16.83,18.56 17.16,18.72C18.14,19.21 19.03,19.83 19.82,20.57C20,20.75 20.25,20.86 20.5,20.86C20.8,20.86 21.05,20.74 21.23,20.56L23.71,18.08C23.89,17.9 24,17.65 24,17.38C24,17.1 23.89,16.85 23.71,16.67M6.5,5.5L12,11L19,4L18,3L12,9L7.5,4.5H11V3H5V9H6.5V5.5Z" /></g><g id="phone-outgoing"><path d="M4,3A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.17L13.21,17.37C10.38,15.93 8.06,13.62 6.62,10.78L8.82,8.57C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4M15,3V4.5H18.5L13,10L14,11L19.5,5.5V9H21V3H15Z" /></g><g id="phone-paused"><path d="M19,10H21V3H19M20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.06,13.62 6.62,10.79L8.82,8.59C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5M17,3H15V10H17V3Z" /></g><g id="phone-plus"><path d="M4,3A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5C18.76,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.07,13.62 6.62,10.79L8.82,8.58C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.24 8.5,4A1,1 0 0,0 7.5,3M16,3V6H13V8H16V11H18V8H21V6H18V3" /></g><g id="phone-settings"><path d="M19,11H21V9H19M20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.06,13.62 6.62,10.79L8.82,8.59C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5M17,9H15V11H17M13,9H11V11H13V9Z" /></g><g id="phone-voip"><path d="M13,17V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H13M23.7,7.67C23.88,7.85 24,8.09 24,8.37C24,8.65 23.89,8.9 23.71,9.08L21.23,11.56C21.05,11.74 20.8,11.85 20.5,11.85C20.25,11.85 20,11.75 19.82,11.57C19,10.84 18.13,10.21 17.15,9.72C16.82,9.56 16.59,9.21 16.59,8.82V5.72C15.14,5.25 13.59,5 12,5C10.4,5 8.85,5.25 7.4,5.73V8.83C7.4,9.23 7.17,9.57 6.84,9.73C5.87,10.22 4.97,10.84 4.18,11.58C4,11.75 3.75,11.86 3.5,11.86C3.2,11.86 2.95,11.75 2.77,11.57L0.29,9.09C0.11,8.91 0,8.66 0,8.38C0,8.1 0.11,7.85 0.29,7.67C3.34,4.78 7.46,3 12,3C16.53,3 20.65,4.78 23.7,7.67M11,10V15H10V10H11M12,10H15V13H13V15H12V10M14,12V11H13V12H14Z" /></g><g id="pi"><path d="M4,5V7H6V19H8V7H14V16A3,3 0 0,0 17,19A3,3 0 0,0 20,16H18A1,1 0 0,1 17,17A1,1 0 0,1 16,16V7H18V5" /></g><g id="pi-box"><path d="M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M6,7H17V9H15V14A1,1 0 0,0 16,15A1,1 0 0,0 17,14H19A3,3 0 0,1 16,17A3,3 0 0,1 13,14V9H10V17H8V9H6" /></g><g id="piano"><path d="M4,3H20A2,2 0 0,1 22,5V19A2,2 0 0,1 20,21H4A2,2 0 0,1 2,19V5A2,2 0 0,1 4,3M4,5V19H8V13H6.75V5H4M9,19H15V13H13.75V5H10.25V13H9V19M16,19H20V5H17.25V13H16V19Z" /></g><g id="pig"><path d="M9.5,9A1.5,1.5 0 0,0 8,10.5A1.5,1.5 0 0,0 9.5,12A1.5,1.5 0 0,0 11,10.5A1.5,1.5 0 0,0 9.5,9M14.5,9A1.5,1.5 0 0,0 13,10.5A1.5,1.5 0 0,0 14.5,12A1.5,1.5 0 0,0 16,10.5A1.5,1.5 0 0,0 14.5,9M12,4L12.68,4.03C13.62,3.24 14.82,2.59 15.72,2.35C17.59,1.85 20.88,2.23 21.31,3.83C21.62,5 20.6,6.45 19.03,7.38C20.26,8.92 21,10.87 21,13A9,9 0 0,1 12,22A9,9 0 0,1 3,13C3,10.87 3.74,8.92 4.97,7.38C3.4,6.45 2.38,5 2.69,3.83C3.12,2.23 6.41,1.85 8.28,2.35C9.18,2.59 10.38,3.24 11.32,4.03L12,4M10,16A1,1 0 0,1 11,17A1,1 0 0,1 10,18A1,1 0 0,1 9,17A1,1 0 0,1 10,16M14,16A1,1 0 0,1 15,17A1,1 0 0,1 14,18A1,1 0 0,1 13,17A1,1 0 0,1 14,16M12,13C9.24,13 7,15.34 7,17C7,18.66 9.24,20 12,20C14.76,20 17,18.66 17,17C17,15.34 14.76,13 12,13M7.76,4.28C7.31,4.16 4.59,4.35 4.59,4.35C4.59,4.35 6.8,6.1 7.24,6.22C7.69,6.34 9.77,6.43 9.91,5.9C10.06,5.36 8.2,4.4 7.76,4.28M16.24,4.28C15.8,4.4 13.94,5.36 14.09,5.9C14.23,6.43 16.31,6.34 16.76,6.22C17.2,6.1 19.41,4.35 19.41,4.35C19.41,4.35 16.69,4.16 16.24,4.28Z" /></g><g id="pill"><path d="M4.22,11.29L11.29,4.22C13.64,1.88 17.43,1.88 19.78,4.22C22.12,6.56 22.12,10.36 19.78,12.71L12.71,19.78C10.36,22.12 6.56,22.12 4.22,19.78C1.88,17.43 1.88,13.64 4.22,11.29M5.64,12.71C4.59,13.75 4.24,15.24 4.6,16.57L10.59,10.59L14.83,14.83L18.36,11.29C19.93,9.73 19.93,7.2 18.36,5.64C16.8,4.07 14.27,4.07 12.71,5.64L5.64,12.71Z" /></g><g id="pillar"><path d="M6,5H18A1,1 0 0,1 19,6A1,1 0 0,1 18,7H6A1,1 0 0,1 5,6A1,1 0 0,1 6,5M21,2V4H3V2H21M15,8H17V22H15V8M7,8H9V22H7V8M11,8H13V22H11V8Z" /></g><g id="pin"><path d="M16,12V4H17V2H7V4H8V12L6,14V16H11.2V22H12.8V16H18V14L16,12Z" /></g><g id="pin-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L12.8,16.07V22H11.2V16H6V14L8,12V11.27L2,5.27M16,12L18,14V16H17.82L8,6.18V4H7V2H17V4H16V12Z" /></g><g id="pine-tree"><path d="M10,21V18H3L8,13H5L10,8H7L12,3L17,8H14L19,13H16L21,18H14V21H10Z" /></g><g id="pine-tree-box"><path d="M4,2H20A2,2 0 0,1 22,4V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V4A2,2 0 0,1 4,2M11,19H13V17H18L14,13H17L13,9H16L12,5L8,9H11L7,13H10L6,17H11V19Z" /></g><g id="pinterest"><path d="M13.25,17.25C12.25,17.25 11.29,16.82 10.6,16.1L9.41,20.1L9.33,20.36L9.29,20.34C9.04,20.75 8.61,21 8.12,21C7.37,21 6.75,20.38 6.75,19.62C6.75,19.56 6.76,19.5 6.77,19.44L6.75,19.43L6.81,19.21L9.12,12.26C9.12,12.26 8.87,11.5 8.87,10.42C8.87,8.27 10.03,7.62 10.95,7.62C11.88,7.62 12.73,7.95 12.73,9.26C12.73,10.94 11.61,11.8 11.61,13C11.61,13.94 12.37,14.69 13.29,14.69C16.21,14.69 17.25,12.5 17.25,10.44C17.25,7.71 14.89,5.5 12,5.5C9.1,5.5 6.75,7.71 6.75,10.44C6.75,11.28 7,12.12 7.43,12.85C7.54,13.05 7.6,13.27 7.6,13.5A1.25,1.25 0 0,1 6.35,14.75C5.91,14.75 5.5,14.5 5.27,14.13C4.6,13 4.25,11.73 4.25,10.44C4.25,6.33 7.73,3 12,3C16.27,3 19.75,6.33 19.75,10.44C19.75,13.72 17.71,17.25 13.25,17.25Z" /></g><g id="pinterest-box"><path d="M13,16.2C12.2,16.2 11.43,15.86 10.88,15.28L9.93,18.5L9.86,18.69L9.83,18.67C9.64,19 9.29,19.2 8.9,19.2C8.29,19.2 7.8,18.71 7.8,18.1C7.8,18.05 7.81,18 7.81,17.95H7.8L7.85,17.77L9.7,12.21C9.7,12.21 9.5,11.59 9.5,10.73C9.5,9 10.42,8.5 11.16,8.5C11.91,8.5 12.58,8.76 12.58,9.81C12.58,11.15 11.69,11.84 11.69,12.81C11.69,13.55 12.29,14.16 13.03,14.16C15.37,14.16 16.2,12.4 16.2,10.75C16.2,8.57 14.32,6.8 12,6.8C9.68,6.8 7.8,8.57 7.8,10.75C7.8,11.42 8,12.09 8.34,12.68C8.43,12.84 8.5,13 8.5,13.2A1,1 0 0,1 7.5,14.2C7.13,14.2 6.79,14 6.62,13.7C6.08,12.81 5.8,11.79 5.8,10.75C5.8,7.47 8.58,4.8 12,4.8C15.42,4.8 18.2,7.47 18.2,10.75C18.2,13.37 16.57,16.2 13,16.2M20,2H4C2.89,2 2,2.89 2,4V20A2,2 0 0,0 4,22H20A2,2 0 0,0 22,20V4C22,2.89 21.1,2 20,2Z" /></g><g id="pistol"><path d="M7,5H23V9H22V10H16A1,1 0 0,0 15,11V12A2,2 0 0,1 13,14H9.62C9.24,14 8.89,14.22 8.72,14.56L6.27,19.45C6.1,19.79 5.76,20 5.38,20H2C2,20 -1,20 3,14C3,14 6,10 2,10V5H3L3.5,4H6.5L7,5M14,12V11A1,1 0 0,0 13,10H12C12,10 11,11 12,12A2,2 0 0,1 10,10A1,1 0 0,0 9,11V12A1,1 0 0,0 10,13H13A1,1 0 0,0 14,12Z" /></g><g id="pizza"><path d="M12,15A2,2 0 0,1 10,13C10,11.89 10.9,11 12,11A2,2 0 0,1 14,13A2,2 0 0,1 12,15M7,7C7,5.89 7.89,5 9,5A2,2 0 0,1 11,7A2,2 0 0,1 9,9C7.89,9 7,8.1 7,7M12,2C8.43,2 5.23,3.54 3,6L12,22L21,6C18.78,3.54 15.57,2 12,2Z" /></g><g id="plane-shield"><path d="M12,1L3,5V11C3,16.55 6.84,21.74 12,23C17.16,21.74 21,16.55 21,11V5L12,1M12,5.68C12.5,5.68 12.95,6.11 12.95,6.63V10.11L18,13.26V14.53L12.95,12.95V16.42L14.21,17.37V18.32L12,17.68L9.79,18.32V17.37L11.05,16.42V12.95L6,14.53V13.26L11.05,10.11V6.63C11.05,6.11 11.5,5.68 12,5.68Z" /></g><g id="play"><path d="M8,5.14V19.14L19,12.14L8,5.14Z" /></g><g id="play-box-outline"><path d="M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M10,8V16L15,12L10,8Z" /></g><g id="play-circle"><path d="M10,16.5V7.5L16,12M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="play-circle-outline"><path d="M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M10,16.5L16,12L10,7.5V16.5Z" /></g><g id="play-pause"><path d="M3,5V19L11,12M13,19H16V5H13M18,5V19H21V5" /></g><g id="play-protected-content"><path d="M2,5V18H11V16H4V7H17V11H19V5H2M9,9V14L12.5,11.5L9,9M21.04,11.67L16.09,16.62L13.96,14.5L12.55,15.91L16.09,19.45L22.45,13.09L21.04,11.67Z" /></g><g id="playlist-check"><path d="M14,10H2V12H14V10M14,6H2V8H14V6M2,16H10V14H2V16M21.5,11.5L23,13L16,20L11.5,15.5L13,14L16,17L21.5,11.5Z" /></g><g id="playlist-minus"><path d="M2,16H10V14H2M12,14V16H22V14M14,6H2V8H14M14,10H2V12H14V10Z" /></g><g id="playlist-play"><path d="M19,9H2V11H19V9M19,5H2V7H19V5M2,15H15V13H2V15M17,13V19L22,16L17,13Z" /></g><g id="playlist-plus"><path d="M2,16H10V14H2M18,14V10H16V14H12V16H16V20H18V16H22V14M14,6H2V8H14M14,10H2V12H14V10Z" /></g><g id="playlist-remove"><path d="M2,6V8H14V6H2M2,10V12H10V10H2M14.17,10.76L12.76,12.17L15.59,15L12.76,17.83L14.17,19.24L17,16.41L19.83,19.24L21.24,17.83L18.41,15L21.24,12.17L19.83,10.76L17,13.59L14.17,10.76M2,14V16H10V14H2Z" /></g><g id="playstation"><path d="M9.5,4.27C10.88,4.53 12.9,5.14 14,5.5C16.75,6.45 17.69,7.63 17.69,10.29C17.69,12.89 16.09,13.87 14.05,12.89V8.05C14.05,7.5 13.95,6.97 13.41,6.82C13,6.69 12.76,7.07 12.76,7.63V19.73L9.5,18.69V4.27M13.37,17.62L18.62,15.75C19.22,15.54 19.31,15.24 18.83,15.08C18.34,14.92 17.47,14.97 16.87,15.18L13.37,16.41V14.45L13.58,14.38C13.58,14.38 14.59,14 16,13.87C17.43,13.71 19.17,13.89 20.53,14.4C22.07,14.89 22.25,15.61 21.86,16.1C21.46,16.6 20.5,16.95 20.5,16.95L13.37,19.5V17.62M3.5,17.42C1.93,17 1.66,16.05 2.38,15.5C3.05,15 4.18,14.65 4.18,14.65L8.86,13V14.88L5.5,16.09C4.9,16.3 4.81,16.6 5.29,16.76C5.77,16.92 6.65,16.88 7.24,16.66L8.86,16.08V17.77L8.54,17.83C6.92,18.09 5.2,18 3.5,17.42Z" /></g><g id="plex"><path d="M4,2C2.89,2 2,2.89 2,4V20C2,21.11 2.89,22 4,22H20C21.11,22 22,21.11 22,20V4C22,2.89 21.11,2 20,2H4M8.56,6H12.06L15.5,12L12.06,18H8.56L12,12L8.56,6Z" /></g><g id="plus"><path d="M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z" /></g><g id="plus-box"><path d="M17,13H13V17H11V13H7V11H11V7H13V11H17M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="plus-box-outline"><path d="M19,19V5H5V19H19M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5C3,3.89 3.9,3 5,3H19M11,7H13V11H17V13H13V17H11V13H7V11H11V7Z" /></g><g id="plus-circle"><path d="M17,13H13V17H11V13H7V11H11V7H13V11H17M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="plus-circle-multiple-outline"><path d="M16,8H14V11H11V13H14V16H16V13H19V11H16M2,12C2,9.21 3.64,6.8 6,5.68V3.5C2.5,4.76 0,8.09 0,12C0,15.91 2.5,19.24 6,20.5V18.32C3.64,17.2 2,14.79 2,12M15,3C10.04,3 6,7.04 6,12C6,16.96 10.04,21 15,21C19.96,21 24,16.96 24,12C24,7.04 19.96,3 15,3M15,19C11.14,19 8,15.86 8,12C8,8.14 11.14,5 15,5C18.86,5 22,8.14 22,12C22,15.86 18.86,19 15,19Z" /></g><g id="plus-circle-outline"><path d="M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M13,7H11V11H7V13H11V17H13V13H17V11H13V7Z" /></g><g id="plus-network"><path d="M16,11V9H13V6H11V9H8V11H11V14H13V11H16M17,3A2,2 0 0,1 19,5V15A2,2 0 0,1 17,17H13V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H7C5.89,17 5,16.1 5,15V5A2,2 0 0,1 7,3H17Z" /></g><g id="plus-one"><path d="M10,8V12H14V14H10V18H8V14H4V12H8V8H10M14.5,6.08L19,5V18H17V7.4L14.5,7.9V6.08Z" /></g><g id="plus-outline"><path d="M4,9H9V4H15V9H20V15H15V20H9V15H4V9M11,13V18H13V13H18V11H13V6H11V11H6V13H11Z" /></g><g id="pocket"><path d="M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12V4.5A2.5,2.5 0 0,1 4.5,2H19.5A2.5,2.5 0 0,1 22,4.5V12M15.88,8.25L12,12.13L8.12,8.24C7.53,7.65 6.58,7.65 6,8.24C5.41,8.82 5.41,9.77 6,10.36L10.93,15.32C11.5,15.9 12.47,15.9 13.06,15.32L18,10.37C18.59,9.78 18.59,8.83 18,8.25C17.42,7.66 16.47,7.66 15.88,8.25Z" /></g><g id="pokeball"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4C7.92,4 4.55,7.05 4.06,11H8.13C8.57,9.27 10.14,8 12,8C13.86,8 15.43,9.27 15.87,11H19.94C19.45,7.05 16.08,4 12,4M12,20C16.08,20 19.45,16.95 19.94,13H15.87C15.43,14.73 13.86,16 12,16C10.14,16 8.57,14.73 8.13,13H4.06C4.55,16.95 7.92,20 12,20M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z" /></g><g id="polaroid"><path d="M6,3H18A2,2 0 0,1 20,5V19A2,2 0 0,1 18,21H6A2,2 0 0,1 4,19V5A2,2 0 0,1 6,3M6,5V17H18V5H6Z" /></g><g id="poll"><path d="M3,22V8H7V22H3M10,22V2H14V22H10M17,22V14H21V22H17Z" /></g><g id="poll-box"><path d="M17,17H15V13H17M13,17H11V7H13M9,17H7V10H9M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="polymer"><path d="M19,4H15L7.1,16.63L4.5,12L9,4H5L0.5,12L5,20H9L16.89,7.37L19.5,12L15,20H19L23.5,12L19,4Z" /></g><g id="pool"><path d="M2,15C3.67,14.25 5.33,13.5 7,13.17V5A3,3 0 0,1 10,2C11.31,2 12.42,2.83 12.83,4H10A1,1 0 0,0 9,5V6H14V5A3,3 0 0,1 17,2C18.31,2 19.42,2.83 19.83,4H17A1,1 0 0,0 16,5V14.94C18,14.62 20,13 22,13V15C19.78,15 17.56,17 15.33,17C13.11,17 10.89,15 8.67,15C6.44,15 4.22,16 2,17V15M14,8H9V10H14V8M14,12H9V13C10.67,13.16 12.33,14.31 14,14.79V12M2,19C4.22,18 6.44,17 8.67,17C10.89,17 13.11,19 15.33,19C17.56,19 19.78,17 22,17V19C19.78,19 17.56,21 15.33,21C13.11,21 10.89,19 8.67,19C6.44,19 4.22,20 2,21V19Z" /></g><g id="popcorn"><path d="M7,22H4.75C4.75,22 4,22 3.81,20.65L2.04,3.81L2,3.5C2,2.67 2.9,2 4,2C5.1,2 6,2.67 6,3.5C6,2.67 6.9,2 8,2C9.1,2 10,2.67 10,3.5C10,2.67 10.9,2 12,2C13.09,2 14,2.66 14,3.5V3.5C14,2.67 14.9,2 16,2C17.1,2 18,2.67 18,3.5C18,2.67 18.9,2 20,2C21.1,2 22,2.67 22,3.5L21.96,3.81L20.19,20.65C20,22 19.25,22 19.25,22H17L16.5,22H13.75L10.25,22H7.5L7,22M17.85,4.93C17.55,4.39 16.84,4 16,4C15.19,4 14.36,4.36 14,4.87L13.78,20H16.66L17.85,4.93M10,4.87C9.64,4.36 8.81,4 8,4C7.16,4 6.45,4.39 6.15,4.93L7.34,20H10.22L10,4.87Z" /></g><g id="pot"><path d="M19,19A2,2 0 0,1 17,21H7A2,2 0 0,1 5,19V13H3V10H21V13H19V19M6,6H8V8H6V6M11,6H13V8H11V6M16,6H18V8H16V6M18,3H20V5H18V3M13,3H15V5H13V3M8,3H10V5H8V3Z" /></g><g id="pot-mix"><path d="M19,19A2,2 0 0,1 17,21H7A2,2 0 0,1 5,19V13H3V10H14L18,3.07L19.73,4.07L16.31,10H21V13H19V19Z" /></g><g id="pound"><path d="M5.41,21L6.12,17H2.12L2.47,15H6.47L7.53,9H3.53L3.88,7H7.88L8.59,3H10.59L9.88,7H15.88L16.59,3H18.59L17.88,7H21.88L21.53,9H17.53L16.47,15H20.47L20.12,17H16.12L15.41,21H13.41L14.12,17H8.12L7.41,21H5.41M9.53,9L8.47,15H14.47L15.53,9H9.53Z" /></g><g id="pound-box"><path d="M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M7,18H9L9.35,16H13.35L13,18H15L15.35,16H17.35L17.71,14H15.71L16.41,10H18.41L18.76,8H16.76L17.12,6H15.12L14.76,8H10.76L11.12,6H9.12L8.76,8H6.76L6.41,10H8.41L7.71,14H5.71L5.35,16H7.35L7,18M10.41,10H14.41L13.71,14H9.71L10.41,10Z" /></g><g id="power"><path d="M16.56,5.44L15.11,6.89C16.84,7.94 18,9.83 18,12A6,6 0 0,1 12,18A6,6 0 0,1 6,12C6,9.83 7.16,7.94 8.88,6.88L7.44,5.44C5.36,6.88 4,9.28 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12C20,9.28 18.64,6.88 16.56,5.44M13,3H11V13H13" /></g><g id="power-plug"><path d="M16,7V3H14V7H10V3H8V7H8C7,7 6,8 6,9V14.5L9.5,18V21H14.5V18L18,14.5V9C18,8 17,7 16,7Z" /></g><g id="power-plug-off"><path d="M8,3V6.18C11.1,9.23 14.1,12.3 17.2,15.3C17.4,15 17.8,14.8 18,14.4V8.8C18,7.68 16.7,7.16 16,6.84V3H14V7H10V3H8M3.28,4C2.85,4.42 2.43,4.85 2,5.27L6,9.27V14.5C7.17,15.65 8.33,16.83 9.5,18V21H14.5V18C14.72,17.73 14.95,18.33 15.17,18.44C16.37,19.64 17.47,20.84 18.67,22.04C19.17,21.64 19.57,21.14 19.97,20.74C14.37,15.14 8.77,9.64 3.27,4.04L3.28,4Z" /></g><g id="power-settings"><path d="M15,24H17V22H15M16.56,4.44L15.11,5.89C16.84,6.94 18,8.83 18,11A6,6 0 0,1 12,17A6,6 0 0,1 6,11C6,8.83 7.16,6.94 8.88,5.88L7.44,4.44C5.36,5.88 4,8.28 4,11A8,8 0 0,0 12,19A8,8 0 0,0 20,11C20,8.28 18.64,5.88 16.56,4.44M13,2H11V12H13M11,24H13V22H11M7,24H9V22H7V24Z" /></g><g id="power-socket"><path d="M15,15H17V11H15M7,15H9V11H7M11,13H13V9H11M8.83,7H15.2L19,10.8V17H5V10.8M8,5L3,10V19H21V10L16,5H8Z" /></g><g id="prescription"><path d="M4,4V10L4,14H6V10H8L13.41,15.41L9.83,19L11.24,20.41L14.83,16.83L18.41,20.41L19.82,19L16.24,15.41L19.82,11.83L18.41,10.41L14.83,14L10.83,10H11A3,3 0 0,0 14,7A3,3 0 0,0 11,4H4M6,6H11A1,1 0 0,1 12,7A1,1 0 0,1 11,8H6V6Z" /></g><g id="presentation"><path d="M2,3H10A2,2 0 0,1 12,1A2,2 0 0,1 14,3H22V5H21V16H15.25L17,22H15L13.25,16H10.75L9,22H7L8.75,16H3V5H2V3M5,5V14H19V5H5Z" /></g><g id="presentation-play"><path d="M2,3H10A2,2 0 0,1 12,1A2,2 0 0,1 14,3H22V5H21V16H15.25L17,22H15L13.25,16H10.75L9,22H7L8.75,16H3V5H2V3M5,5V14H19V5H5M11.85,11.85C11.76,11.94 11.64,12 11.5,12A0.5,0.5 0 0,1 11,11.5V7.5A0.5,0.5 0 0,1 11.5,7C11.64,7 11.76,7.06 11.85,7.15L13.25,8.54C13.57,8.86 13.89,9.18 13.89,9.5C13.89,9.82 13.57,10.14 13.25,10.46L11.85,11.85Z" /></g><g id="printer"><path d="M18,3H6V7H18M19,12A1,1 0 0,1 18,11A1,1 0 0,1 19,10A1,1 0 0,1 20,11A1,1 0 0,1 19,12M16,19H8V14H16M19,8H5A3,3 0 0,0 2,11V17H6V21H18V17H22V11A3,3 0 0,0 19,8Z" /></g><g id="printer-3d"><path d="M19,6A1,1 0 0,0 20,5A1,1 0 0,0 19,4A1,1 0 0,0 18,5A1,1 0 0,0 19,6M19,2A3,3 0 0,1 22,5V11H18V7H6V11H2V5A3,3 0 0,1 5,2H19M18,18.25C18,18.63 17.79,18.96 17.47,19.13L12.57,21.82C12.4,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L6.53,19.13C6.21,18.96 6,18.63 6,18.25V13C6,12.62 6.21,12.29 6.53,12.12L11.43,9.68C11.59,9.56 11.79,9.5 12,9.5C12.21,9.5 12.4,9.56 12.57,9.68L17.47,12.12C17.79,12.29 18,12.62 18,13V18.25M12,11.65L9.04,13L12,14.6L14.96,13L12,11.65M8,17.66L11,19.29V16.33L8,14.71V17.66M16,17.66V14.71L13,16.33V19.29L16,17.66Z" /></g><g id="printer-alert"><path d="M14,4V8H6V4H14M15,13A1,1 0 0,0 16,12A1,1 0 0,0 15,11A1,1 0 0,0 14,12A1,1 0 0,0 15,13M13,19V15H7V19H13M15,9A3,3 0 0,1 18,12V17H15V21H5V17H2V12A3,3 0 0,1 5,9H15M22,7V12H20V7H22M22,14V16H20V14H22Z" /></g><g id="printer-settings"><path d="M18,2V6H6V2H18M19,11A1,1 0 0,0 20,10A1,1 0 0,0 19,9A1,1 0 0,0 18,10A1,1 0 0,0 19,11M16,18V13H8V18H16M19,7A3,3 0 0,1 22,10V16H18V20H6V16H2V10A3,3 0 0,1 5,7H19M15,24V22H17V24H15M11,24V22H13V24H11M7,24V22H9V24H7Z" /></g><g id="priority-high"><path d="M14,19H22V17H14V19M14,13.5H22V11.5H14V13.5M14,8H22V6H14V8M2,12.5C2,8.92 4.92,6 8.5,6H9V4L12,7L9,10V8H8.5C6,8 4,10 4,12.5C4,15 6,17 8.5,17H12V19H8.5C4.92,19 2,16.08 2,12.5Z" /></g><g id="priority-low"><path d="M14,5H22V7H14V5M14,10.5H22V12.5H14V10.5M14,16H22V18H14V16M2,11.5C2,15.08 4.92,18 8.5,18H9V20L12,17L9,14V16H8.5C6,16 4,14 4,11.5C4,9 6,7 8.5,7H12V5H8.5C4.92,5 2,7.92 2,11.5Z" /></g><g id="professional-hexagon"><path d="M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M5,9V15H6.25V13H7A2,2 0 0,0 9,11A2,2 0 0,0 7,9H5M6.25,12V10H6.75A1,1 0 0,1 7.75,11A1,1 0 0,1 6.75,12H6.25M9.75,9V15H11V13H11.75L12.41,15H13.73L12.94,12.61C13.43,12.25 13.75,11.66 13.75,11A2,2 0 0,0 11.75,9H9.75M11,12V10H11.5A1,1 0 0,1 12.5,11A1,1 0 0,1 11.5,12H11M17,9C15.62,9 14.5,10.34 14.5,12C14.5,13.66 15.62,15 17,15C18.38,15 19.5,13.66 19.5,12C19.5,10.34 18.38,9 17,9M17,10.25C17.76,10.25 18.38,11.03 18.38,12C18.38,12.97 17.76,13.75 17,13.75C16.24,13.75 15.63,12.97 15.63,12C15.63,11.03 16.24,10.25 17,10.25Z" /></g><g id="projector"><path d="M16,6C14.87,6 13.77,6.35 12.84,7H4C2.89,7 2,7.89 2,9V15C2,16.11 2.89,17 4,17H5V18A1,1 0 0,0 6,19H8A1,1 0 0,0 9,18V17H15V18A1,1 0 0,0 16,19H18A1,1 0 0,0 19,18V17H20C21.11,17 22,16.11 22,15V9C22,7.89 21.11,7 20,7H19.15C18.23,6.35 17.13,6 16,6M16,7.5A3.5,3.5 0 0,1 19.5,11A3.5,3.5 0 0,1 16,14.5A3.5,3.5 0 0,1 12.5,11A3.5,3.5 0 0,1 16,7.5M4,9H8V10H4V9M16,9A2,2 0 0,0 14,11A2,2 0 0,0 16,13A2,2 0 0,0 18,11A2,2 0 0,0 16,9M4,11H8V12H4V11M4,13H8V14H4V13Z" /></g><g id="projector-screen"><path d="M4,2A1,1 0 0,0 3,3V4A1,1 0 0,0 4,5H5V14H11V16.59L6.79,20.79L8.21,22.21L11,19.41V22H13V19.41L15.79,22.21L17.21,20.79L13,16.59V14H19V5H20A1,1 0 0,0 21,4V3A1,1 0 0,0 20,2H4Z" /></g><g id="publish"><path d="M5,4V6H19V4H5M5,14H9V20H15V14H19L12,7L5,14Z" /></g><g id="pulse"><path d="M3,13H5.79L10.1,4.79L11.28,13.75L14.5,9.66L17.83,13H21V15H17L14.67,12.67L9.92,18.73L8.94,11.31L7,15H3V13Z" /></g><g id="puzzle"><path d="M20.5,11H19V7C19,5.89 18.1,5 17,5H13V3.5A2.5,2.5 0 0,0 10.5,1A2.5,2.5 0 0,0 8,3.5V5H4A2,2 0 0,0 2,7V10.8H3.5C5,10.8 6.2,12 6.2,13.5C6.2,15 5,16.2 3.5,16.2H2V20A2,2 0 0,0 4,22H7.8V20.5C7.8,19 9,17.8 10.5,17.8C12,17.8 13.2,19 13.2,20.5V22H17A2,2 0 0,0 19,20V16H20.5A2.5,2.5 0 0,0 23,13.5A2.5,2.5 0 0,0 20.5,11Z" /></g><g id="qqchat"><path d="M3.18,13.54C3.76,12.16 4.57,11.14 5.17,10.92C5.16,10.12 5.31,9.62 5.56,9.22C5.56,9.19 5.5,8.86 5.72,8.45C5.87,4.85 8.21,2 12,2C15.79,2 18.13,4.85 18.28,8.45C18.5,8.86 18.44,9.19 18.44,9.22C18.69,9.62 18.84,10.12 18.83,10.92C19.43,11.14 20.24,12.16 20.82,13.55C21.57,15.31 21.69,17 21.09,17.3C20.68,17.5 20.03,17 19.42,16.12C19.18,17.1 18.58,18 17.73,18.71C18.63,19.04 19.21,19.58 19.21,20.19C19.21,21.19 17.63,22 15.69,22C13.93,22 12.5,21.34 12.21,20.5H11.79C11.5,21.34 10.07,22 8.31,22C6.37,22 4.79,21.19 4.79,20.19C4.79,19.58 5.37,19.04 6.27,18.71C5.42,18 4.82,17.1 4.58,16.12C3.97,17 3.32,17.5 2.91,17.3C2.31,17 2.43,15.31 3.18,13.54Z" /></g><g id="qrcode"><path d="M3,11H5V13H3V11M11,5H13V9H11V5M9,11H13V15H11V13H9V11M15,11H17V13H19V11H21V13H19V15H21V19H19V21H17V19H13V21H11V17H15V15H17V13H15V11M19,19V15H17V19H19M15,3H21V9H15V3M17,5V7H19V5H17M3,3H9V9H3V3M5,5V7H7V5H5M3,15H9V21H3V15M5,17V19H7V17H5Z" /></g><g id="qrcode-scan"><path d="M4,4H10V10H4V4M20,4V10H14V4H20M14,15H16V13H14V11H16V13H18V11H20V13H18V15H20V18H18V20H16V18H13V20H11V16H14V15M16,15V18H18V15H16M4,20V14H10V20H4M6,6V8H8V6H6M16,6V8H18V6H16M6,16V18H8V16H6M4,11H6V13H4V11M9,11H13V15H11V13H9V11M11,6H13V10H11V6M2,2V6H0V2A2,2 0 0,1 2,0H6V2H2M22,0A2,2 0 0,1 24,2V6H22V2H18V0H22M2,18V22H6V24H2A2,2 0 0,1 0,22V18H2M22,22V18H24V22A2,2 0 0,1 22,24H18V22H22Z" /></g><g id="quadcopter"><path d="M5.5,1C8,1 10,3 10,5.5C10,6.38 9.75,7.2 9.31,7.9L9.41,8H14.59L14.69,7.9C14.25,7.2 14,6.38 14,5.5C14,3 16,1 18.5,1C21,1 23,3 23,5.5C23,8 21,10 18.5,10C17.62,10 16.8,9.75 16.1,9.31L15,10.41V13.59L16.1,14.69C16.8,14.25 17.62,14 18.5,14C21,14 23,16 23,18.5C23,21 21,23 18.5,23C16,23 14,21 14,18.5C14,17.62 14.25,16.8 14.69,16.1L14.59,16H9.41L9.31,16.1C9.75,16.8 10,17.62 10,18.5C10,21 8,23 5.5,23C3,23 1,21 1,18.5C1,16 3,14 5.5,14C6.38,14 7.2,14.25 7.9,14.69L9,13.59V10.41L7.9,9.31C7.2,9.75 6.38,10 5.5,10C3,10 1,8 1,5.5C1,3 3,1 5.5,1M5.5,3A2.5,2.5 0 0,0 3,5.5A2.5,2.5 0 0,0 5.5,8A2.5,2.5 0 0,0 8,5.5A2.5,2.5 0 0,0 5.5,3M5.5,16A2.5,2.5 0 0,0 3,18.5A2.5,2.5 0 0,0 5.5,21A2.5,2.5 0 0,0 8,18.5A2.5,2.5 0 0,0 5.5,16M18.5,3A2.5,2.5 0 0,0 16,5.5A2.5,2.5 0 0,0 18.5,8A2.5,2.5 0 0,0 21,5.5A2.5,2.5 0 0,0 18.5,3M18.5,16A2.5,2.5 0 0,0 16,18.5A2.5,2.5 0 0,0 18.5,21A2.5,2.5 0 0,0 21,18.5A2.5,2.5 0 0,0 18.5,16M3.91,17.25L5.04,17.91C5.17,17.81 5.33,17.75 5.5,17.75A0.75,0.75 0 0,1 6.25,18.5L6.24,18.6L7.37,19.25L7.09,19.75L5.96,19.09C5.83,19.19 5.67,19.25 5.5,19.25A0.75,0.75 0 0,1 4.75,18.5L4.76,18.4L3.63,17.75L3.91,17.25M3.63,6.25L4.76,5.6L4.75,5.5A0.75,0.75 0 0,1 5.5,4.75C5.67,4.75 5.83,4.81 5.96,4.91L7.09,4.25L7.37,4.75L6.24,5.4L6.25,5.5A0.75,0.75 0 0,1 5.5,6.25C5.33,6.25 5.17,6.19 5.04,6.09L3.91,6.75L3.63,6.25M16.91,4.25L18.04,4.91C18.17,4.81 18.33,4.75 18.5,4.75A0.75,0.75 0 0,1 19.25,5.5L19.24,5.6L20.37,6.25L20.09,6.75L18.96,6.09C18.83,6.19 18.67,6.25 18.5,6.25A0.75,0.75 0 0,1 17.75,5.5L17.76,5.4L16.63,4.75L16.91,4.25M16.63,19.25L17.75,18.5A0.75,0.75 0 0,1 18.5,17.75C18.67,17.75 18.83,17.81 18.96,17.91L20.09,17.25L20.37,17.75L19.25,18.5A0.75,0.75 0 0,1 18.5,19.25C18.33,19.25 18.17,19.19 18.04,19.09L16.91,19.75L16.63,19.25Z" /></g><g id="quality-high"><path d="M14.5,13.5H16.5V10.5H14.5M18,14A1,1 0 0,1 17,15H16.25V16.5H14.75V15H14A1,1 0 0,1 13,14V10A1,1 0 0,1 14,9H17A1,1 0 0,1 18,10M11,15H9.5V13H7.5V15H6V9H7.5V11.5H9.5V9H11M19,4H5C3.89,4 3,4.89 3,6V18A2,2 0 0,0 5,20H19A2,2 0 0,0 21,18V6C21,4.89 20.1,4 19,4Z" /></g><g id="quicktime"><path d="M12,3A9,9 0 0,1 21,12C21,13.76 20.5,15.4 19.62,16.79L21,18.17V20A1,1 0 0,1 20,21H18.18L16.79,19.62C15.41,20.5 13.76,21 12,21A9,9 0 0,1 3,12A9,9 0 0,1 12,3M12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17C12.65,17 13.26,16.88 13.83,16.65L10.95,13.77C10.17,13 10.17,11.72 10.95,10.94C11.73,10.16 13,10.16 13.78,10.94L16.66,13.82C16.88,13.26 17,12.64 17,12A5,5 0 0,0 12,7Z" /></g><g id="radar"><path d="M19.07,4.93L17.66,6.34C19.1,7.79 20,9.79 20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12C4,7.92 7.05,4.56 11,4.07V6.09C8.16,6.57 6,9.03 6,12A6,6 0 0,0 12,18A6,6 0 0,0 18,12C18,10.34 17.33,8.84 16.24,7.76L14.83,9.17C15.55,9.9 16,10.9 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12C8,10.14 9.28,8.59 11,8.14V10.28C10.4,10.63 10,11.26 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12C14,11.26 13.6,10.62 13,10.28V2H12A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,9.24 20.88,6.74 19.07,4.93Z" /></g><g id="radiator"><path d="M7.95,3L6.53,5.19L7.95,7.4H7.94L5.95,10.5L4.22,9.6L5.64,7.39L4.22,5.19L6.22,2.09L7.95,3M13.95,2.89L12.53,5.1L13.95,7.3L13.94,7.31L11.95,10.4L10.22,9.5L11.64,7.3L10.22,5.1L12.22,2L13.95,2.89M20,2.89L18.56,5.1L20,7.3V7.31L18,10.4L16.25,9.5L17.67,7.3L16.25,5.1L18.25,2L20,2.89M2,22V14A2,2 0 0,1 4,12H20A2,2 0 0,1 22,14V22H20V20H4V22H2M6,14A1,1 0 0,0 5,15V17A1,1 0 0,0 6,18A1,1 0 0,0 7,17V15A1,1 0 0,0 6,14M10,14A1,1 0 0,0 9,15V17A1,1 0 0,0 10,18A1,1 0 0,0 11,17V15A1,1 0 0,0 10,14M14,14A1,1 0 0,0 13,15V17A1,1 0 0,0 14,18A1,1 0 0,0 15,17V15A1,1 0 0,0 14,14M18,14A1,1 0 0,0 17,15V17A1,1 0 0,0 18,18A1,1 0 0,0 19,17V15A1,1 0 0,0 18,14Z" /></g><g id="radio"><path d="M20,6A2,2 0 0,1 22,8V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V8C2,7.15 2.53,6.42 3.28,6.13L15.71,1L16.47,2.83L8.83,6H20M20,8H4V12H16V10H18V12H20V8M7,14A3,3 0 0,0 4,17A3,3 0 0,0 7,20A3,3 0 0,0 10,17A3,3 0 0,0 7,14Z" /></g><g id="radio-handheld"><path d="M9,2A1,1 0 0,0 8,3C8,8.67 8,14.33 8,20C8,21.11 8.89,22 10,22H15C16.11,22 17,21.11 17,20V9C17,7.89 16.11,7 15,7H10V3A1,1 0 0,0 9,2M10,9H15V13H10V9Z" /></g><g id="radio-tower"><path d="M12,10A2,2 0 0,1 14,12C14,12.5 13.82,12.94 13.53,13.29L16.7,22H14.57L12,14.93L9.43,22H7.3L10.47,13.29C10.18,12.94 10,12.5 10,12A2,2 0 0,1 12,10M12,8A4,4 0 0,0 8,12C8,12.5 8.1,13 8.28,13.46L7.4,15.86C6.53,14.81 6,13.47 6,12A6,6 0 0,1 12,6A6,6 0 0,1 18,12C18,13.47 17.47,14.81 16.6,15.86L15.72,13.46C15.9,13 16,12.5 16,12A4,4 0 0,0 12,8M12,4A8,8 0 0,0 4,12C4,14.36 5,16.5 6.64,17.94L5.92,19.94C3.54,18.11 2,15.23 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12C22,15.23 20.46,18.11 18.08,19.94L17.36,17.94C19,16.5 20,14.36 20,12A8,8 0 0,0 12,4Z" /></g><g id="radioactive"><path d="M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M12,22C10.05,22 8.22,21.44 6.69,20.47L10,15.47C10.6,15.81 11.28,16 12,16C12.72,16 13.4,15.81 14,15.47L17.31,20.47C15.78,21.44 13.95,22 12,22M2,12C2,7.86 4.5,4.3 8.11,2.78L10.34,8.36C8.96,9 8,10.38 8,12H2M16,12C16,10.38 15.04,9 13.66,8.36L15.89,2.78C19.5,4.3 22,7.86 22,12H16Z" /></g><g id="radiobox-blank"><path d="M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="radiobox-marked"><path d="M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17A5,5 0 0,0 17,12A5,5 0 0,0 12,7Z" /></g><g id="raspberrypi"><path d="M20,8H22V10H20V8M4,5H20A2,2 0 0,1 22,7H19V9H5V13H8V16H19V17H22A2,2 0 0,1 20,19H16V20H14V19H11V20H7V19H4A2,2 0 0,1 2,17V7A2,2 0 0,1 4,5M19,15H9V10H19V11H22V13H19V15M13,12V14H15V12H13M5,6V8H6V6H5M7,6V8H8V6H7M9,6V8H10V6H9M11,6V8H12V6H11M13,6V8H14V6H13M15,6V8H16V6H15M20,14H22V16H20V14Z" /></g><g id="ray-end"><path d="M20,9C18.69,9 17.58,9.83 17.17,11H2V13H17.17C17.58,14.17 18.69,15 20,15A3,3 0 0,0 23,12A3,3 0 0,0 20,9Z" /></g><g id="ray-end-arrow"><path d="M1,12L5,16V13H17.17C17.58,14.17 18.69,15 20,15A3,3 0 0,0 23,12A3,3 0 0,0 20,9C18.69,9 17.58,9.83 17.17,11H5V8L1,12Z" /></g><g id="ray-start"><path d="M4,9C5.31,9 6.42,9.83 6.83,11H22V13H6.83C6.42,14.17 5.31,15 4,15A3,3 0 0,1 1,12A3,3 0 0,1 4,9Z" /></g><g id="ray-start-arrow"><path d="M23,12L19,16V13H6.83C6.42,14.17 5.31,15 4,15A3,3 0 0,1 1,12A3,3 0 0,1 4,9C5.31,9 6.42,9.83 6.83,11H19V8L23,12Z" /></g><g id="ray-start-end"><path d="M4,9C5.31,9 6.42,9.83 6.83,11H17.17C17.58,9.83 18.69,9 20,9A3,3 0 0,1 23,12A3,3 0 0,1 20,15C18.69,15 17.58,14.17 17.17,13H6.83C6.42,14.17 5.31,15 4,15A3,3 0 0,1 1,12A3,3 0 0,1 4,9Z" /></g><g id="ray-vertex"><path d="M2,11H9.17C9.58,9.83 10.69,9 12,9C13.31,9 14.42,9.83 14.83,11H22V13H14.83C14.42,14.17 13.31,15 12,15C10.69,15 9.58,14.17 9.17,13H2V11Z" /></g><g id="rdio"><path d="M19.29,10.84C19.35,11.22 19.38,11.61 19.38,12C19.38,16.61 15.5,20.35 10.68,20.35C5.87,20.35 2,16.61 2,12C2,7.39 5.87,3.65 10.68,3.65C11.62,3.65 12.53,3.79 13.38,4.06V9.11C13.38,9.11 10.79,7.69 8.47,9.35C6.15,11 6.59,12.76 6.59,12.76C6.59,12.76 6.7,15.5 9.97,15.5C13.62,15.5 14.66,12.19 14.66,12.19V4.58C15.36,4.93 16,5.36 16.65,5.85C18.2,6.82 19.82,7.44 21.67,7.39C21.67,7.39 22,7.31 22,8C22,8.4 21.88,8.83 21.5,9.25C21.5,9.25 20.78,10.33 19.29,10.84Z" /></g><g id="read"><path d="M21.59,11.59L23,13L13.5,22.5L8.42,17.41L9.83,16L13.5,19.68L21.59,11.59M4,16V3H6L9,3A4,4 0 0,1 13,7C13,8.54 12.13,9.88 10.85,10.55L14,16H12L9.11,11H6V16H4M6,9H9A2,2 0 0,0 11,7A2,2 0 0,0 9,5H6V9Z" /></g><g id="readability"><path d="M12,4C15.15,4 17.81,6.38 18.69,9.65C18,10.15 17.58,10.93 17.5,11.81L17.32,13.91C15.55,13 13.78,12.17 12,12.17C10.23,12.17 8.45,13 6.68,13.91L6.5,11.77C6.42,10.89 6,10.12 5.32,9.61C6.21,6.36 8.86,4 12,4M17.05,17H6.95L6.73,14.47C8.5,13.59 10.24,12.75 12,12.75C13.76,12.75 15.5,13.59 17.28,14.47L17.05,17M5,19V18L3.72,14.5H3.5A2.5,2.5 0 0,1 1,12A2.5,2.5 0 0,1 3.5,9.5C4.82,9.5 5.89,10.5 6,11.81L6.5,18V19H5M19,19H17.5V18L18,11.81C18.11,10.5 19.18,9.5 20.5,9.5A2.5,2.5 0 0,1 23,12A2.5,2.5 0 0,1 20.5,14.5H20.28L19,18V19Z" /></g><g id="receipt"><path d="M3,22L4.5,20.5L6,22L7.5,20.5L9,22L10.5,20.5L12,22L13.5,20.5L15,22L16.5,20.5L18,22L19.5,20.5L21,22V2L19.5,3.5L18,2L16.5,3.5L15,2L13.5,3.5L12,2L10.5,3.5L9,2L7.5,3.5L6,2L4.5,3.5L3,2M18,9H6V7H18M18,13H6V11H18M18,17H6V15H18V17Z" /></g><g id="record"><path d="M19,12C19,15.86 15.86,19 12,19C8.14,19 5,15.86 5,12C5,8.14 8.14,5 12,5C15.86,5 19,8.14 19,12Z" /></g><g id="record-rec"><path d="M12.5,5A7.5,7.5 0 0,0 5,12.5A7.5,7.5 0 0,0 12.5,20A7.5,7.5 0 0,0 20,12.5A7.5,7.5 0 0,0 12.5,5M7,10H9A1,1 0 0,1 10,11V12C10,12.5 9.62,12.9 9.14,12.97L10.31,15H9.15L8,13V15H7M12,10H14V11H12V12H14V13H12V14H14V15H12A1,1 0 0,1 11,14V11A1,1 0 0,1 12,10M16,10H18V11H16V14H18V15H16A1,1 0 0,1 15,14V11A1,1 0 0,1 16,10M8,11V12H9V11" /></g><g id="recycle"><path d="M21.82,15.42L19.32,19.75C18.83,20.61 17.92,21.06 17,21H15V23L12.5,18.5L15,14V16H17.82L15.6,12.15L19.93,9.65L21.73,12.77C22.25,13.54 22.32,14.57 21.82,15.42M9.21,3.06H14.21C15.19,3.06 16.04,3.63 16.45,4.45L17.45,6.19L19.18,5.19L16.54,9.6L11.39,9.69L13.12,8.69L11.71,6.24L9.5,10.09L5.16,7.59L6.96,4.47C7.37,3.64 8.22,3.06 9.21,3.06M5.05,19.76L2.55,15.43C2.06,14.58 2.13,13.56 2.64,12.79L3.64,11.06L1.91,10.06L7.05,10.14L9.7,14.56L7.97,13.56L6.56,16H11V21H7.4C6.47,21.07 5.55,20.61 5.05,19.76Z" /></g><g id="reddit"><path d="M22,11.5C22,10.1 20.9,9 19.5,9C18.9,9 18.3,9.2 17.9,9.6C16.4,8.7 14.6,8.1 12.5,8L13.6,4L17,5A2,2 0 0,0 19,7A2,2 0 0,0 21,5A2,2 0 0,0 19,3C18.3,3 17.6,3.4 17.3,4L13.3,3C13,2.9 12.8,3.1 12.7,3.4L11.5,8C9.5,8.1 7.6,8.7 6.1,9.6C5.7,9.2 5.1,9 4.5,9C3.1,9 2,10.1 2,11.5C2,12.4 2.4,13.1 3.1,13.6L3,14.5C3,18.1 7,21 12,21C17,21 21,18.1 21,14.5L20.9,13.6C21.6,13.1 22,12.4 22,11.5M9,11.8C9.7,11.8 10.2,12.4 10.2,13C10.2,13.6 9.7,14.2 9,14.2C8.3,14.2 7.8,13.7 7.8,13C7.8,12.3 8.3,11.8 9,11.8M15.8,17.2C14,18.3 10,18.3 8.2,17.2C8,17 7.9,16.7 8.1,16.5C8.3,16.3 8.6,16.2 8.8,16.4C10,17.3 14,17.3 15.2,16.4C15.4,16.2 15.7,16.3 15.9,16.5C16.1,16.7 16,17 15.8,17.2M15,14.2C14.3,14.2 13.8,13.6 13.8,13C13.8,12.3 14.4,11.8 15,11.8C15.7,11.8 16.2,12.4 16.2,13C16.2,13.7 15.7,14.2 15,14.2Z" /></g><g id="redo"><path d="M18.4,10.6C16.55,9 14.15,8 11.5,8C6.85,8 2.92,11.03 1.54,15.22L3.9,16C4.95,12.81 7.95,10.5 11.5,10.5C13.45,10.5 15.23,11.22 16.62,12.38L13,16H22V7L18.4,10.6Z" /></g><g id="redo-variant"><path d="M10.5,7A6.5,6.5 0 0,0 4,13.5A6.5,6.5 0 0,0 10.5,20H14V18H10.5C8,18 6,16 6,13.5C6,11 8,9 10.5,9H16.17L13.09,12.09L14.5,13.5L20,8L14.5,2.5L13.08,3.91L16.17,7H10.5M18,18H16V20H18V18Z" /></g><g id="refresh"><path d="M17.65,6.35C16.2,4.9 14.21,4 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20C15.73,20 18.84,17.45 19.73,14H17.65C16.83,16.33 14.61,18 12,18A6,6 0 0,1 6,12A6,6 0 0,1 12,6C13.66,6 15.14,6.69 16.22,7.78L13,11H20V4L17.65,6.35Z" /></g><g id="regex"><path d="M16,16.92C15.67,16.97 15.34,17 15,17C14.66,17 14.33,16.97 14,16.92V13.41L11.5,15.89C11,15.5 10.5,15 10.11,14.5L12.59,12H9.08C9.03,11.67 9,11.34 9,11C9,10.66 9.03,10.33 9.08,10H12.59L10.11,7.5C10.3,7.25 10.5,7 10.76,6.76V6.76C11,6.5 11.25,6.3 11.5,6.11L14,8.59V5.08C14.33,5.03 14.66,5 15,5C15.34,5 15.67,5.03 16,5.08V8.59L18.5,6.11C19,6.5 19.5,7 19.89,7.5L17.41,10H20.92C20.97,10.33 21,10.66 21,11C21,11.34 20.97,11.67 20.92,12H17.41L19.89,14.5C19.7,14.75 19.5,15 19.24,15.24V15.24C19,15.5 18.75,15.7 18.5,15.89L16,13.41V16.92H16V16.92M5,19A2,2 0 0,1 7,17A2,2 0 0,1 9,19A2,2 0 0,1 7,21A2,2 0 0,1 5,19H5Z" /></g><g id="relative-scale"><path d="M20,18H4V6H20M20,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4M12,10H10V12H12M8,10H6V12H8M16,14H14V16H16M16,10H14V12H16V10Z" /></g><g id="reload"><path d="M19,12H22.32L17.37,16.95L12.42,12H16.97C17,10.46 16.42,8.93 15.24,7.75C12.9,5.41 9.1,5.41 6.76,7.75C4.42,10.09 4.42,13.9 6.76,16.24C8.6,18.08 11.36,18.47 13.58,17.41L15.05,18.88C12,20.69 8,20.29 5.34,17.65C2.22,14.53 2.23,9.47 5.35,6.35C8.5,3.22 13.53,3.21 16.66,6.34C18.22,7.9 19,9.95 19,12Z" /></g><g id="remote"><path d="M12,0C8.96,0 6.21,1.23 4.22,3.22L5.63,4.63C7.26,3 9.5,2 12,2C14.5,2 16.74,3 18.36,4.64L19.77,3.23C17.79,1.23 15.04,0 12,0M7.05,6.05L8.46,7.46C9.37,6.56 10.62,6 12,6C13.38,6 14.63,6.56 15.54,7.46L16.95,6.05C15.68,4.78 13.93,4 12,4C10.07,4 8.32,4.78 7.05,6.05M12,15A2,2 0 0,1 10,13A2,2 0 0,1 12,11A2,2 0 0,1 14,13A2,2 0 0,1 12,15M15,9H9A1,1 0 0,0 8,10V22A1,1 0 0,0 9,23H15A1,1 0 0,0 16,22V10A1,1 0 0,0 15,9Z" /></g><g id="rename-box"><path d="M18,17H10.5L12.5,15H18M6,17V14.5L13.88,6.65C14.07,6.45 14.39,6.45 14.59,6.65L16.35,8.41C16.55,8.61 16.55,8.92 16.35,9.12L8.47,17M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="reorder-horizontal"><path d="M3,15H21V13H3V15M3,19H21V17H3V19M3,11H21V9H3V11M3,5V7H21V5H3Z" /></g><g id="reorder-vertical"><path d="M9,3V21H11V3H9M5,3V21H7V3H5M13,3V21H15V3H13M19,3H17V21H19V3Z" /></g><g id="repeat"><path d="M17,17H7V14L3,18L7,22V19H19V13H17M7,7H17V10L21,6L17,2V5H5V11H7V7Z" /></g><g id="repeat-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L15.73,19H7V22L3,18L7,14V17H13.73L7,10.27V11H5V8.27L2,5.27M17,13H19V17.18L17,15.18V13M17,5V2L21,6L17,10V7H8.82L6.82,5H17Z" /></g><g id="repeat-once"><path d="M13,15V9H12L10,10V11H11.5V15M17,17H7V14L3,18L7,22V19H19V13H17M7,7H17V10L21,6L17,2V5H5V11H7V7Z" /></g><g id="replay"><path d="M12,5V1L7,6L12,11V7A6,6 0 0,1 18,13A6,6 0 0,1 12,19A6,6 0 0,1 6,13H4A8,8 0 0,0 12,21A8,8 0 0,0 20,13A8,8 0 0,0 12,5Z" /></g><g id="reply"><path d="M10,9V5L3,12L10,19V14.9C15,14.9 18.5,16.5 21,20C20,15 17,10 10,9Z" /></g><g id="reply-all"><path d="M13,9V5L6,12L13,19V14.9C18,14.9 21.5,16.5 24,20C23,15 20,10 13,9M7,8V5L0,12L7,19V16L3,12L7,8Z" /></g><g id="reproduction"><path d="M12.72,13.15L13.62,12.26C13.6,11 14.31,9.44 15.62,8.14C17.57,6.18 20.11,5.55 21.28,6.72C22.45,7.89 21.82,10.43 19.86,12.38C18.56,13.69 17,14.4 15.74,14.38L14.85,15.28C14.5,15.61 14,15.66 13.6,15.41C12.76,15.71 12,16.08 11.56,16.8C11.03,17.68 11.03,19.1 10.47,19.95C9.91,20.81 8.79,21.1 7.61,21.1C6.43,21.1 5,21 3.95,19.5L6.43,19.92C7,20 8.5,19.39 9.05,18.54C9.61,17.68 9.61,16.27 10.14,15.38C10.61,14.6 11.5,14.23 12.43,13.91C12.42,13.64 12.5,13.36 12.72,13.15M7,2A5,5 0 0,1 12,7A5,5 0 0,1 7,12A5,5 0 0,1 2,7A5,5 0 0,1 7,2M7,4A3,3 0 0,0 4,7A3,3 0 0,0 7,10A3,3 0 0,0 10,7A3,3 0 0,0 7,4Z" /></g><g id="resize-bottom-right"><path d="M22,22H20V20H22V22M22,18H20V16H22V18M18,22H16V20H18V22M18,18H16V16H18V18M14,22H12V20H14V22M22,14H20V12H22V14Z" /></g><g id="responsive"><path d="M4,6V16H9V12A2,2 0 0,1 11,10H16A2,2 0 0,1 18,12V16H20V6H4M0,20V18H4A2,2 0 0,1 2,16V6A2,2 0 0,1 4,4H20A2,2 0 0,1 22,6V16A2,2 0 0,1 20,18H24V20H18V20C18,21.11 17.1,22 16,22H11A2,2 0 0,1 9,20H9L0,20M11.5,20A0.5,0.5 0 0,0 11,20.5A0.5,0.5 0 0,0 11.5,21A0.5,0.5 0 0,0 12,20.5A0.5,0.5 0 0,0 11.5,20M15.5,20A0.5,0.5 0 0,0 15,20.5A0.5,0.5 0 0,0 15.5,21A0.5,0.5 0 0,0 16,20.5A0.5,0.5 0 0,0 15.5,20M13,20V21H14V20H13M11,12V19H16V12H11Z" /></g><g id="restore"><path d="M13,3A9,9 0 0,0 4,12H1L4.89,15.89L4.96,16.03L9,12H6A7,7 0 0,1 13,5A7,7 0 0,1 20,12A7,7 0 0,1 13,19C11.07,19 9.32,18.21 8.06,16.94L6.64,18.36C8.27,20 10.5,21 13,21A9,9 0 0,0 22,12A9,9 0 0,0 13,3M12,8V13L16.28,15.54L17,14.33L13.5,12.25V8H12Z" /></g><g id="rewind"><path d="M11.5,12L20,18V6M11,18V6L2.5,12L11,18Z" /></g><g id="rewind-outline"><path d="M10,9.9L7,12L10,14.1V9.9M19,9.9L16,12L19,14.1V9.9M12,6V18L3.5,12L12,6M21,6V18L12.5,12L21,6Z" /></g><g id="rhombus"><path d="M21.5,10.8L13.2,2.5C12.5,1.8 11.5,1.8 10.8,2.5L2.5,10.8C1.8,11.5 1.8,12.5 2.5,13.2L10.8,21.5C11.5,22.2 12.5,22.2 13.2,21.5L21.5,13.2C22.1,12.5 22.1,11.5 21.5,10.8Z" /></g><g id="rhombus-outline"><path d="M21.5,10.8L13.2,2.5C12.5,1.8 11.5,1.8 10.8,2.5L2.5,10.8C1.8,11.5 1.8,12.5 2.5,13.2L10.8,21.5C11.5,22.2 12.5,22.2 13.2,21.5L21.5,13.2C22.1,12.5 22.1,11.5 21.5,10.8M20.3,12L12,20.3L3.7,12L12,3.7L20.3,12Z" /></g><g id="ribbon"><path d="M13.41,19.31L16.59,22.5L18,21.07L14.83,17.9M15.54,11.53H15.53L12,15.07L8.47,11.53H8.46V11.53C7.56,10.63 7,9.38 7,8A5,5 0 0,1 12,3A5,5 0 0,1 17,8C17,9.38 16.44,10.63 15.54,11.53M16.9,13C18.2,11.73 19,9.96 19,8A7,7 0 0,0 12,1A7,7 0 0,0 5,8C5,9.96 5.81,11.73 7.1,13V13L10.59,16.5L6,21.07L7.41,22.5L16.9,13Z" /></g><g id="road"><path d="M11,16H13V20H11M11,10H13V14H11M11,4H13V8H11M4,22H20V2H4V22Z" /></g><g id="road-variant"><path d="M18.1,4.8C18,4.3 17.6,4 17.1,4H13L13.2,7H10.8L11,4H6.8C6.3,4 5.9,4.4 5.8,4.8L3.1,18.8C3,19.4 3.5,20 4.1,20H10L10.3,15H13.7L14,20H19.8C20.4,20 20.9,19.4 20.8,18.8L18.1,4.8M10.4,13L10.6,9H13.2L13.4,13H10.4Z" /></g><g id="robot"><path d="M12,2A2,2 0 0,1 14,4C14,4.74 13.6,5.39 13,5.73V7H14A7,7 0 0,1 21,14H22A1,1 0 0,1 23,15V18A1,1 0 0,1 22,19H21V20A2,2 0 0,1 19,22H5A2,2 0 0,1 3,20V19H2A1,1 0 0,1 1,18V15A1,1 0 0,1 2,14H3A7,7 0 0,1 10,7H11V5.73C10.4,5.39 10,4.74 10,4A2,2 0 0,1 12,2M7.5,13A2.5,2.5 0 0,0 5,15.5A2.5,2.5 0 0,0 7.5,18A2.5,2.5 0 0,0 10,15.5A2.5,2.5 0 0,0 7.5,13M16.5,13A2.5,2.5 0 0,0 14,15.5A2.5,2.5 0 0,0 16.5,18A2.5,2.5 0 0,0 19,15.5A2.5,2.5 0 0,0 16.5,13Z" /></g><g id="rocket"><path d="M2.81,14.12L5.64,11.29L8.17,10.79C11.39,6.41 17.55,4.22 19.78,4.22C19.78,6.45 17.59,12.61 13.21,15.83L12.71,18.36L9.88,21.19L9.17,17.66C7.76,17.66 7.76,17.66 7.05,16.95C6.34,16.24 6.34,16.24 6.34,14.83L2.81,14.12M5.64,16.95L7.05,18.36L4.39,21.03H2.97V19.61L5.64,16.95M4.22,15.54L5.46,15.71L3,18.16V16.74L4.22,15.54M8.29,18.54L8.46,19.78L7.26,21H5.84L8.29,18.54M13,9.5A1.5,1.5 0 0,0 11.5,11A1.5,1.5 0 0,0 13,12.5A1.5,1.5 0 0,0 14.5,11A1.5,1.5 0 0,0 13,9.5Z" /></g><g id="roomba"><path d="M12,2C14.65,2 17.19,3.06 19.07,4.93L17.65,6.35C16.15,4.85 14.12,4 12,4C9.88,4 7.84,4.84 6.35,6.35L4.93,4.93C6.81,3.06 9.35,2 12,2M3.66,6.5L5.11,7.94C4.39,9.17 4,10.57 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12C20,10.57 19.61,9.17 18.88,7.94L20.34,6.5C21.42,8.12 22,10.04 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12C2,10.04 2.58,8.12 3.66,6.5M12,6A6,6 0 0,1 18,12C18,13.59 17.37,15.12 16.24,16.24L14.83,14.83C14.08,15.58 13.06,16 12,16C10.94,16 9.92,15.58 9.17,14.83L7.76,16.24C6.63,15.12 6,13.59 6,12A6,6 0 0,1 12,6M12,8A1,1 0 0,0 11,9A1,1 0 0,0 12,10A1,1 0 0,0 13,9A1,1 0 0,0 12,8Z" /></g><g id="rotate-3d"><path d="M12,5C16.97,5 21,7.69 21,11C21,12.68 19.96,14.2 18.29,15.29C19.36,14.42 20,13.32 20,12.13C20,9.29 16.42,7 12,7V10L8,6L12,2V5M12,19C7.03,19 3,16.31 3,13C3,11.32 4.04,9.8 5.71,8.71C4.64,9.58 4,10.68 4,11.88C4,14.71 7.58,17 12,17V14L16,18L12,22V19Z" /></g><g id="rotate-90"><path d="M7.34,6.41L0.86,12.9L7.35,19.38L13.84,12.9L7.34,6.41M3.69,12.9L7.35,9.24L11,12.9L7.34,16.56L3.69,12.9M19.36,6.64C17.61,4.88 15.3,4 13,4V0.76L8.76,5L13,9.24V6C14.79,6 16.58,6.68 17.95,8.05C20.68,10.78 20.68,15.22 17.95,17.95C16.58,19.32 14.79,20 13,20C12.03,20 11.06,19.79 10.16,19.39L8.67,20.88C10,21.62 11.5,22 13,22C15.3,22 17.61,21.12 19.36,19.36C22.88,15.85 22.88,10.15 19.36,6.64Z" /></g><g id="rotate-left"><path d="M13,4.07V1L8.45,5.55L13,10V6.09C15.84,6.57 18,9.03 18,12C18,14.97 15.84,17.43 13,17.91V19.93C16.95,19.44 20,16.08 20,12C20,7.92 16.95,4.56 13,4.07M7.1,18.32C8.26,19.22 9.61,19.76 11,19.93V17.9C10.13,17.75 9.29,17.41 8.54,16.87L7.1,18.32M6.09,13H4.07C4.24,14.39 4.79,15.73 5.69,16.89L7.1,15.47C6.58,14.72 6.23,13.88 6.09,13M7.11,8.53L5.7,7.11C4.8,8.27 4.24,9.61 4.07,11H6.09C6.23,10.13 6.58,9.28 7.11,8.53Z" /></g><g id="rotate-left-variant"><path d="M4,2H7A2,2 0 0,1 9,4V20A2,2 0 0,1 7,22H4A2,2 0 0,1 2,20V4A2,2 0 0,1 4,2M20,15A2,2 0 0,1 22,17V20A2,2 0 0,1 20,22H11V15H20M14,4A8,8 0 0,1 22,12L21.94,13H19.92L20,12A6,6 0 0,0 14,6V9L10,5L14,1V4Z" /></g><g id="rotate-right"><path d="M16.89,15.5L18.31,16.89C19.21,15.73 19.76,14.39 19.93,13H17.91C17.77,13.87 17.43,14.72 16.89,15.5M13,17.9V19.92C14.39,19.75 15.74,19.21 16.9,18.31L15.46,16.87C14.71,17.41 13.87,17.76 13,17.9M19.93,11C19.76,9.61 19.21,8.27 18.31,7.11L16.89,8.53C17.43,9.28 17.77,10.13 17.91,11M15.55,5.55L11,1V4.07C7.06,4.56 4,7.92 4,12C4,16.08 7.05,19.44 11,19.93V17.91C8.16,17.43 6,14.97 6,12C6,9.03 8.16,6.57 11,6.09V10L15.55,5.55Z" /></g><g id="rotate-right-variant"><path d="M10,4V1L14,5L10,9V6A6,6 0 0,0 4,12L4.08,13H2.06L2,12A8,8 0 0,1 10,4M17,2H20A2,2 0 0,1 22,4V20A2,2 0 0,1 20,22H17A2,2 0 0,1 15,20V4A2,2 0 0,1 17,2M4,15H13V22H4A2,2 0 0,1 2,20V17A2,2 0 0,1 4,15Z" /></g><g id="rounded-corner"><path d="M19,19H21V21H19V19M19,17H21V15H19V17M3,13H5V11H3V13M3,17H5V15H3V17M3,9H5V7H3V9M3,5H5V3H3V5M7,5H9V3H7V5M15,21H17V19H15V21M11,21H13V19H11V21M15,21H17V19H15V21M7,21H9V19H7V21M3,21H5V19H3V21M21,8A5,5 0 0,0 16,3H11V5H16A3,3 0 0,1 19,8V13H21V8Z" /></g><g id="router-wireless"><path d="M4,13H20A1,1 0 0,1 21,14V18A1,1 0 0,1 20,19H4A1,1 0 0,1 3,18V14A1,1 0 0,1 4,13M9,17H10V15H9V17M5,15V17H7V15H5M19,6.93L17.6,8.34C16.15,6.89 14.15,6 11.93,6C9.72,6 7.72,6.89 6.27,8.34L4.87,6.93C6.68,5.12 9.18,4 11.93,4C14.69,4 17.19,5.12 19,6.93M16.17,9.76L14.77,11.17C14.04,10.45 13.04,10 11.93,10C10.82,10 9.82,10.45 9.1,11.17L7.7,9.76C8.78,8.67 10.28,8 11.93,8C13.58,8 15.08,8.67 16.17,9.76Z" /></g><g id="routes"><path d="M11,10H5L3,8L5,6H11V3L12,2L13,3V4H19L21,6L19,8H13V10H19L21,12L19,14H13V20A2,2 0 0,1 15,22H9A2,2 0 0,1 11,20V10Z" /></g><g id="rowing"><path d="M8.5,14.5L4,19L5.5,20.5L9,17H11L8.5,14.5M15,1A2,2 0 0,0 13,3A2,2 0 0,0 15,5A2,2 0 0,0 17,3A2,2 0 0,0 15,1M21,21L18,24L15,21V19.5L7.91,12.41C7.6,12.46 7.3,12.5 7,12.5V10.32C8.66,10.35 10.61,9.45 11.67,8.28L13.07,6.73C13.26,6.5 13.5,6.35 13.76,6.23C14.05,6.09 14.38,6 14.72,6H14.75C16,6 17,7 17,8.26V14C17,14.85 16.65,15.62 16.08,16.17L12.5,12.59V10.32C11.87,10.84 11.07,11.34 10.21,11.71L16.5,18H18L21,21Z" /></g><g id="rss"><path d="M6.18,15.64A2.18,2.18 0 0,1 8.36,17.82C8.36,19 7.38,20 6.18,20C5,20 4,19 4,17.82A2.18,2.18 0 0,1 6.18,15.64M4,4.44A15.56,15.56 0 0,1 19.56,20H16.73A12.73,12.73 0 0,0 4,7.27V4.44M4,10.1A9.9,9.9 0 0,1 13.9,20H11.07A7.07,7.07 0 0,0 4,12.93V10.1Z" /></g><g id="rss-box"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M7.5,15A1.5,1.5 0 0,0 6,16.5A1.5,1.5 0 0,0 7.5,18A1.5,1.5 0 0,0 9,16.5A1.5,1.5 0 0,0 7.5,15M6,10V12A6,6 0 0,1 12,18H14A8,8 0 0,0 6,10M6,6V8A10,10 0 0,1 16,18H18A12,12 0 0,0 6,6Z" /></g><g id="ruler"><path d="M1.39,18.36L3.16,16.6L4.58,18L5.64,16.95L4.22,15.54L5.64,14.12L8.11,16.6L9.17,15.54L6.7,13.06L8.11,11.65L9.53,13.06L10.59,12L9.17,10.59L10.59,9.17L13.06,11.65L14.12,10.59L11.65,8.11L13.06,6.7L14.47,8.11L15.54,7.05L14.12,5.64L15.54,4.22L18,6.7L19.07,5.64L16.6,3.16L18.36,1.39L22.61,5.64L5.64,22.61L1.39,18.36Z" /></g><g id="run"><path d="M17.12,10L16.04,8.18L15.31,11.05L17.8,15.59V22H16V17L13.67,13.89L12.07,18.4L7.25,20.5L6.2,19L10.39,16.53L12.91,6.67L10.8,7.33V11H9V5.8L14.42,4.11L14.92,4.03C15.54,4.03 16.08,4.37 16.38,4.87L18.38,8.2H22V10H17.12M17,3.8C16,3.8 15.2,3 15.2,2C15.2,1 16,0.2 17,0.2C18,0.2 18.8,1 18.8,2C18.8,3 18,3.8 17,3.8M7,9V11H4A1,1 0 0,1 3,10A1,1 0 0,1 4,9H7M9.25,13L8.75,15H5A1,1 0 0,1 4,14A1,1 0 0,1 5,13H9.25M7,5V7H3A1,1 0 0,1 2,6A1,1 0 0,1 3,5H7Z" /></g><g id="sale"><path d="M18.65,2.85L19.26,6.71L22.77,8.5L21,12L22.78,15.5L19.24,17.29L18.63,21.15L14.74,20.54L11.97,23.3L9.19,20.5L5.33,21.14L4.71,17.25L1.22,15.47L3,11.97L1.23,8.5L4.74,6.69L5.35,2.86L9.22,3.5L12,0.69L14.77,3.46L18.65,2.85M9.5,7A1.5,1.5 0 0,0 8,8.5A1.5,1.5 0 0,0 9.5,10A1.5,1.5 0 0,0 11,8.5A1.5,1.5 0 0,0 9.5,7M14.5,14A1.5,1.5 0 0,0 13,15.5A1.5,1.5 0 0,0 14.5,17A1.5,1.5 0 0,0 16,15.5A1.5,1.5 0 0,0 14.5,14M8.41,17L17,8.41L15.59,7L7,15.59L8.41,17Z" /></g><g id="satellite"><path d="M5,18L8.5,13.5L11,16.5L14.5,12L19,18M5,12V10A5,5 0 0,0 10,5H12A7,7 0 0,1 5,12M5,5H8A3,3 0 0,1 5,8M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="satellite-variant"><path d="M11.62,1L17.28,6.67L15.16,8.79L13.04,6.67L11.62,8.09L13.95,10.41L12.79,11.58L13.24,12.04C14.17,11.61 15.31,11.77 16.07,12.54L12.54,16.07C11.77,15.31 11.61,14.17 12.04,13.24L11.58,12.79L10.41,13.95L8.09,11.62L6.67,13.04L8.79,15.16L6.67,17.28L1,11.62L3.14,9.5L5.26,11.62L6.67,10.21L3.84,7.38C3.06,6.6 3.06,5.33 3.84,4.55L4.55,3.84C5.33,3.06 6.6,3.06 7.38,3.84L10.21,6.67L11.62,5.26L9.5,3.14L11.62,1M18,14A4,4 0 0,1 14,18V16A2,2 0 0,0 16,14H18M22,14A8,8 0 0,1 14,22V20A6,6 0 0,0 20,14H22Z" /></g><g id="saxophone"><path d="M4,2A1,1 0 0,0 3,3A1,1 0 0,0 4,4A3,3 0 0,1 7,7V8.66L7,15.5C7,19.1 9.9,22 13.5,22C17.1,22 20,19.1 20,15.5V13A1,1 0 0,0 21,12A1,1 0 0,0 20,11H14A1,1 0 0,0 13,12A1,1 0 0,0 14,13V15A1,1 0 0,1 13,16A1,1 0 0,1 12,15V11A1,1 0 0,0 13,10A1,1 0 0,0 12,9V8A1,1 0 0,0 13,7A1,1 0 0,0 12,6V5.5A3.5,3.5 0 0,0 8.5,2H4Z" /></g><g id="scale"><path d="M8.46,15.06L7.05,16.47L5.68,15.1C4.82,16.21 4.24,17.54 4.06,19H6V21H2V20C2,15.16 5.44,11.13 10,10.2V8.2L2,5V3H22V5L14,8.2V10.2C18.56,11.13 22,15.16 22,20V21H18V19H19.94C19.76,17.54 19.18,16.21 18.32,15.1L16.95,16.47L15.54,15.06L16.91,13.68C15.8,12.82 14.46,12.24 13,12.06V14H11V12.06C9.54,12.24 8.2,12.82 7.09,13.68L8.46,15.06M12,18A2,2 0 0,1 14,20A2,2 0 0,1 12,22C11.68,22 11.38,21.93 11.12,21.79L7.27,20L11.12,18.21C11.38,18.07 11.68,18 12,18Z" /></g><g id="scale-balance"><path d="M12,3C10.73,3 9.6,3.8 9.18,5H3V7H4.95L2,14C1.53,16 3,17 5.5,17C8,17 9.56,16 9,14L6.05,7H9.17C9.5,7.85 10.15,8.5 11,8.83V20H2V22H22V20H13V8.82C13.85,8.5 14.5,7.85 14.82,7H17.95L15,14C14.53,16 16,17 18.5,17C21,17 22.56,16 22,14L19.05,7H21V5H14.83C14.4,3.8 13.27,3 12,3M12,5A1,1 0 0,1 13,6A1,1 0 0,1 12,7A1,1 0 0,1 11,6A1,1 0 0,1 12,5M5.5,10.25L7,14H4L5.5,10.25M18.5,10.25L20,14H17L18.5,10.25Z" /></g><g id="scale-bathroom"><path d="M5,2H19A2,2 0 0,1 21,4V20A2,2 0 0,1 19,22H5A2,2 0 0,1 3,20V4A2,2 0 0,1 5,2M12,4A4,4 0 0,0 8,8H11.26L10.85,5.23L12.9,8H16A4,4 0 0,0 12,4M5,10V20H19V10H5Z" /></g><g id="scanner"><path d="M19.8,10.7L4.2,5L3.5,6.9L17.6,12H5A2,2 0 0,0 3,14V18A2,2 0 0,0 5,20H19A2,2 0 0,0 21,18V12.5C21,11.7 20.5,10.9 19.8,10.7M7,17H5V15H7V17M19,17H9V15H19V17Z" /></g><g id="school"><path d="M12,3L1,9L12,15L21,10.09V17H23V9M5,13.18V17.18L12,21L19,17.18V13.18L12,17L5,13.18Z" /></g><g id="screen-rotation"><path d="M7.5,21.5C4.25,19.94 1.91,16.76 1.55,13H0.05C0.56,19.16 5.71,24 12,24L12.66,23.97L8.85,20.16M14.83,21.19L2.81,9.17L9.17,2.81L21.19,14.83M10.23,1.75C9.64,1.16 8.69,1.16 8.11,1.75L1.75,8.11C1.16,8.7 1.16,9.65 1.75,10.23L13.77,22.25C14.36,22.84 15.31,22.84 15.89,22.25L22.25,15.89C22.84,15.3 22.84,14.35 22.25,13.77L10.23,1.75M16.5,2.5C19.75,4.07 22.09,7.24 22.45,11H23.95C23.44,4.84 18.29,0 12,0L11.34,0.03L15.15,3.84L16.5,2.5Z" /></g><g id="screen-rotation-lock"><path d="M16.8,2.5C16.8,1.56 17.56,0.8 18.5,0.8C19.44,0.8 20.2,1.56 20.2,2.5V3H16.8V2.5M16,9H21A1,1 0 0,0 22,8V4A1,1 0 0,0 21,3V2.5A2.5,2.5 0 0,0 18.5,0A2.5,2.5 0 0,0 16,2.5V3A1,1 0 0,0 15,4V8A1,1 0 0,0 16,9M8.47,20.5C5.2,18.94 2.86,15.76 2.5,12H1C1.5,18.16 6.66,23 12.95,23L13.61,22.97L9.8,19.15L8.47,20.5M23.25,12.77L20.68,10.2L19.27,11.61L21.5,13.83L15.83,19.5L4.5,8.17L10.17,2.5L12.27,4.61L13.68,3.2L11.23,0.75C10.64,0.16 9.69,0.16 9.11,0.75L2.75,7.11C2.16,7.7 2.16,8.65 2.75,9.23L14.77,21.25C15.36,21.84 16.31,21.84 16.89,21.25L23.25,14.89C23.84,14.3 23.84,13.35 23.25,12.77Z" /></g><g id="screwdriver"><path d="M18,1.83C17.5,1.83 17,2 16.59,2.41C13.72,5.28 8,11 8,11L9.5,12.5L6,16H4L2,20L4,22L8,20V18L11.5,14.5L13,16C13,16 18.72,10.28 21.59,7.41C22.21,6.5 22.37,5.37 21.59,4.59L19.41,2.41C19,2 18.5,1.83 18,1.83M18,4L20,6L13,13L11,11L18,4Z" /></g><g id="script"><path d="M14,20A2,2 0 0,0 16,18V5H9A1,1 0 0,0 8,6V16H5V5A3,3 0 0,1 8,2H19A3,3 0 0,1 22,5V6H18V18L18,19A3,3 0 0,1 15,22H5A3,3 0 0,1 2,19V18H12A2,2 0 0,0 14,20Z" /></g><g id="sd"><path d="M18,8H16V4H18M15,8H13V4H15M12,8H10V4H12M18,2H10L4,8V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V4A2,2 0 0,0 18,2Z" /></g><g id="seal"><path d="M20.39,19.37L16.38,18L15,22L11.92,16L9,22L7.62,18L3.61,19.37L6.53,13.37C5.57,12.17 5,10.65 5,9A7,7 0 0,1 12,2A7,7 0 0,1 19,9C19,10.65 18.43,12.17 17.47,13.37L20.39,19.37M7,9L9.69,10.34L9.5,13.34L12,11.68L14.5,13.33L14.33,10.34L17,9L14.32,7.65L14.5,4.67L12,6.31L9.5,4.65L9.67,7.66L7,9Z" /></g><g id="seat-flat"><path d="M22,11V13H9V7H18A4,4 0 0,1 22,11M2,14V16H8V18H16V16H22V14M7.14,12.1C8.3,10.91 8.28,9 7.1,7.86C5.91,6.7 4,6.72 2.86,7.9C1.7,9.09 1.72,11 2.9,12.14C4.09,13.3 6,13.28 7.14,12.1Z" /></g><g id="seat-flat-angled"><path d="M22.25,14.29L21.56,16.18L9.2,11.71L11.28,6.05L19.84,9.14C21.94,9.9 23,12.2 22.25,14.29M1.5,12.14L8,14.5V19H16V17.37L20.5,19L21.21,17.11L2.19,10.25M7.3,10.2C8.79,9.5 9.42,7.69 8.71,6.2C8,4.71 6.2,4.08 4.7,4.8C3.21,5.5 2.58,7.3 3.3,8.8C4,10.29 5.8,10.92 7.3,10.2Z" /></g><g id="seat-individual-suite"><path d="M7,13A3,3 0 0,0 10,10A3,3 0 0,0 7,7A3,3 0 0,0 4,10A3,3 0 0,0 7,13M19,7H11V14H3V7H1V17H23V11A4,4 0 0,0 19,7Z" /></g><g id="seat-legroom-extra"><path d="M4,12V3H2V12A5,5 0 0,0 7,17H13V15H7A3,3 0 0,1 4,12M22.83,17.24C22.45,16.5 21.54,16.27 20.8,16.61L19.71,17.11L16.3,10.13C15.96,9.45 15.27,9 14.5,9H11V3H5V11A3,3 0 0,0 8,14H15L18.41,21L22.13,19.3C22.9,18.94 23.23,18 22.83,17.24Z" /></g><g id="seat-legroom-normal"><path d="M5,12V3H3V12A5,5 0 0,0 8,17H14V15H8A3,3 0 0,1 5,12M20.5,18H19V11A2,2 0 0,0 17,9H12V3H6V11A3,3 0 0,0 9,14H16V21H20.5A1.5,1.5 0 0,0 22,19.5A1.5,1.5 0 0,0 20.5,18Z" /></g><g id="seat-legroom-reduced"><path d="M19.97,19.2C20.15,20.16 19.42,21 18.5,21H14V18L15,14H9A3,3 0 0,1 6,11V3H12V9H17A2,2 0 0,1 19,11L17,18H18.44C19.17,18 19.83,18.5 19.97,19.2M5,12V3H3V12A5,5 0 0,0 8,17H12V15H8A3,3 0 0,1 5,12Z" /></g><g id="seat-recline-extra"><path d="M5.35,5.64C4.45,5 4.23,3.76 4.86,2.85C5.5,1.95 6.74,1.73 7.65,2.36C8.55,3 8.77,4.24 8.14,5.15C7.5,6.05 6.26,6.27 5.35,5.64M16,19H8.93C7.45,19 6.19,17.92 5.97,16.46L4,7H2L4,16.76C4.37,19.2 6.47,21 8.94,21H16M16.23,15H11.35L10.32,10.9C11.9,11.79 13.6,12.44 15.47,12.12V10C13.84,10.3 12.03,9.72 10.78,8.74L9.14,7.47C8.91,7.29 8.65,7.17 8.38,7.09C8.06,7 7.72,6.97 7.39,7.03H7.37C6.14,7.25 5.32,8.42 5.53,9.64L6.88,15.56C7.16,17 8.39,18 9.83,18H16.68L20.5,21L22,19.5" /></g><g id="seat-recline-normal"><path d="M7.59,5.41C6.81,4.63 6.81,3.36 7.59,2.58C8.37,1.8 9.64,1.8 10.42,2.58C11.2,3.36 11.2,4.63 10.42,5.41C9.63,6.2 8.37,6.2 7.59,5.41M6,16V7H4V16A5,5 0 0,0 9,21H15V19H9A3,3 0 0,1 6,16M20,20.07L14.93,15H11.5V11.32C12.9,12.47 15.1,13.5 17,13.5V11.32C15.34,11.34 13.39,10.45 12.33,9.28L10.93,7.73C10.74,7.5 10.5,7.35 10.24,7.23C9.95,7.09 9.62,7 9.28,7H9.25C8,7 7,8 7,9.25V15A3,3 0 0,0 10,18H15.07L18.57,21.5" /></g><g id="security"><path d="M12,12H19C18.47,16.11 15.72,19.78 12,20.92V12H5V6.3L12,3.19M12,1L3,5V11C3,16.55 6.84,21.73 12,23C17.16,21.73 21,16.55 21,11V5L12,1Z" /></g><g id="security-home"><path d="M11,13H13V16H16V11H18L12,6L6,11H8V16H11V13M12,1L21,5V11C21,16.55 17.16,21.74 12,23C6.84,21.74 3,16.55 3,11V5L12,1Z" /></g><g id="security-network"><path d="M13,18H14A1,1 0 0,1 15,19H22V21H15A1,1 0 0,1 14,22H10A1,1 0 0,1 9,21H2V19H9A1,1 0 0,1 10,18H11V16.34C8.07,15.13 6,12 6,8.67V4.67L12,2L18,4.67V8.67C18,12 15.93,15.13 13,16.34V18M12,4L8,5.69V9H12V4M12,9V15C13.91,14.53 16,12.06 16,10V9H12Z" /></g><g id="select"><path d="M4,3H5V5H3V4A1,1 0 0,1 4,3M20,3A1,1 0 0,1 21,4V5H19V3H20M15,5V3H17V5H15M11,5V3H13V5H11M7,5V3H9V5H7M21,20A1,1 0 0,1 20,21H19V19H21V20M15,21V19H17V21H15M11,21V19H13V21H11M7,21V19H9V21H7M4,21A1,1 0 0,1 3,20V19H5V21H4M3,15H5V17H3V15M21,15V17H19V15H21M3,11H5V13H3V11M21,11V13H19V11H21M3,7H5V9H3V7M21,7V9H19V7H21Z" /></g><g id="select-all"><path d="M9,9H15V15H9M7,17H17V7H7M15,5H17V3H15M15,21H17V19H15M19,17H21V15H19M19,9H21V7H19M19,21A2,2 0 0,0 21,19H19M19,13H21V11H19M11,21H13V19H11M9,3H7V5H9M3,17H5V15H3M5,21V19H3A2,2 0 0,0 5,21M19,3V5H21A2,2 0 0,0 19,3M13,3H11V5H13M3,9H5V7H3M7,21H9V19H7M3,13H5V11H3M3,5H5V3A2,2 0 0,0 3,5Z" /></g><g id="select-inverse"><path d="M5,3H7V5H9V3H11V5H13V3H15V5H17V3H19V5H21V7H19V9H21V11H19V13H21V15H19V17H21V19H19V21H17V19H15V21H13V19H11V21H9V19H7V21H5V19H3V17H5V15H3V13H5V11H3V9H5V7H3V5H5V3Z" /></g><g id="select-off"><path d="M1,4.27L2.28,3L21,21.72L19.73,23L17,20.27V21H15V19H15.73L5,8.27V9H3V7H3.73L1,4.27M20,3A1,1 0 0,1 21,4V5H19V3H20M15,5V3H17V5H15M11,5V3H13V5H11M7,5V3H9V5H7M11,21V19H13V21H11M7,21V19H9V21H7M4,21A1,1 0 0,1 3,20V19H5V21H4M3,15H5V17H3V15M21,15V17H19V15H21M3,11H5V13H3V11M21,11V13H19V11H21M21,7V9H19V7H21Z" /></g><g id="selection"><path d="M2,4V7H4V4H2M7,4H4C4,4 4,4 4,4H2C2,2.89 2.9,2 4,2H7V4M22,4V7H20V4H22M17,4H20C20,4 20,4 20,4H22C22,2.89 21.1,2 20,2H17V4M22,20V17H20V20H22M17,20H20C20,20 20,20 20,20H22C22,21.11 21.1,22 20,22H17V20M2,20V17H4V20H2M7,20H4C4,20 4,20 4,20H2C2,21.11 2.9,22 4,22H7V20M10,2H14V4H10V2M10,20H14V22H10V20M20,10H22V14H20V10M2,10H4V14H2V10Z" /></g><g id="send"><path d="M2,21L23,12L2,3V10L17,12L2,14V21Z" /></g><g id="serial-port"><path d="M7,3H17V5H19V8H16V14H8V8H5V5H7V3M17,9H19V14H17V9M11,15H13V22H11V15M5,9H7V14H5V9Z" /></g><g id="server"><path d="M4,1H20A1,1 0 0,1 21,2V6A1,1 0 0,1 20,7H4A1,1 0 0,1 3,6V2A1,1 0 0,1 4,1M4,9H20A1,1 0 0,1 21,10V14A1,1 0 0,1 20,15H4A1,1 0 0,1 3,14V10A1,1 0 0,1 4,9M4,17H20A1,1 0 0,1 21,18V22A1,1 0 0,1 20,23H4A1,1 0 0,1 3,22V18A1,1 0 0,1 4,17M9,5H10V3H9V5M9,13H10V11H9V13M9,21H10V19H9V21M5,3V5H7V3H5M5,11V13H7V11H5M5,19V21H7V19H5Z" /></g><g id="server-minus"><path d="M4,4H20A1,1 0 0,1 21,5V9A1,1 0 0,1 20,10H4A1,1 0 0,1 3,9V5A1,1 0 0,1 4,4M9,8H10V6H9V8M5,6V8H7V6H5M8,16H16V18H8V16Z" /></g><g id="server-network"><path d="M13,18H14A1,1 0 0,1 15,19H22V21H15A1,1 0 0,1 14,22H10A1,1 0 0,1 9,21H2V19H9A1,1 0 0,1 10,18H11V16H4A1,1 0 0,1 3,15V11A1,1 0 0,1 4,10H20A1,1 0 0,1 21,11V15A1,1 0 0,1 20,16H13V18M4,2H20A1,1 0 0,1 21,3V7A1,1 0 0,1 20,8H4A1,1 0 0,1 3,7V3A1,1 0 0,1 4,2M9,6H10V4H9V6M9,14H10V12H9V14M5,4V6H7V4H5M5,12V14H7V12H5Z" /></g><g id="server-network-off"><path d="M13,18H14A1,1 0 0,1 15,19H15.73L13,16.27V18M22,19V20.18L20.82,19H22M21,21.72L19.73,23L17.73,21H15A1,1 0 0,1 14,22H10A1,1 0 0,1 9,21H2V19H9A1,1 0 0,1 10,18H11V16H4A1,1 0 0,1 3,15V11A1,1 0 0,1 4,10H6.73L4.73,8H4A1,1 0 0,1 3,7V6.27L1,4.27L2.28,3L21,21.72M4,2H20A1,1 0 0,1 21,3V7A1,1 0 0,1 20,8H9.82L7,5.18V4H5.82L3.84,2C3.89,2 3.94,2 4,2M20,10A1,1 0 0,1 21,11V15A1,1 0 0,1 20,16H17.82L11.82,10H20M9,6H10V4H9V6M9,14H10V13.27L9,12.27V14M5,12V14H7V12H5Z" /></g><g id="server-off"><path d="M4,1H20A1,1 0 0,1 21,2V6A1,1 0 0,1 20,7H8.82L6.82,5H7V3H5V3.18L3.21,1.39C3.39,1.15 3.68,1 4,1M22,22.72L20.73,24L19.73,23H4A1,1 0 0,1 3,22V18A1,1 0 0,1 4,17H13.73L11.73,15H4A1,1 0 0,1 3,14V10A1,1 0 0,1 4,9H5.73L3.68,6.95C3.38,6.85 3.15,6.62 3.05,6.32L1,4.27L2.28,3L22,22.72M20,9A1,1 0 0,1 21,10V14A1,1 0 0,1 20,15H16.82L10.82,9H20M20,17A1,1 0 0,1 21,18V19.18L18.82,17H20M9,5H10V3H9V5M9,13H9.73L9,12.27V13M9,21H10V19H9V21M5,11V13H7V11H5M5,19V21H7V19H5Z" /></g><g id="server-plus"><path d="M4,4H20A1,1 0 0,1 21,5V9A1,1 0 0,1 20,10H4A1,1 0 0,1 3,9V5A1,1 0 0,1 4,4M9,8H10V6H9V8M5,6V8H7V6H5M8,16H11V13H13V16H16V18H13V21H11V18H8V16Z" /></g><g id="server-remove"><path d="M4,4H20A1,1 0 0,1 21,5V9A1,1 0 0,1 20,10H4A1,1 0 0,1 3,9V5A1,1 0 0,1 4,4M9,8H10V6H9V8M5,6V8H7V6H5M10.59,17L8,14.41L9.41,13L12,15.59L14.59,13L16,14.41L13.41,17L16,19.59L14.59,21L12,18.41L9.41,21L8,19.59L10.59,17Z" /></g><g id="server-security"><path d="M3,1H19A1,1 0 0,1 20,2V6A1,1 0 0,1 19,7H3A1,1 0 0,1 2,6V2A1,1 0 0,1 3,1M3,9H19A1,1 0 0,1 20,10V10.67L17.5,9.56L11,12.44V15H3A1,1 0 0,1 2,14V10A1,1 0 0,1 3,9M3,17H11C11.06,19.25 12,21.4 13.46,23H3A1,1 0 0,1 2,22V18A1,1 0 0,1 3,17M8,5H9V3H8V5M8,13H9V11H8V13M8,21H9V19H8V21M4,3V5H6V3H4M4,11V13H6V11H4M4,19V21H6V19H4M17.5,12L22,14V17C22,19.78 20.08,22.37 17.5,23C14.92,22.37 13,19.78 13,17V14L17.5,12M17.5,13.94L15,15.06V17.72C15,19.26 16.07,20.7 17.5,21.06V13.94Z" /></g><g id="settings"><path d="M12,15.5A3.5,3.5 0 0,1 8.5,12A3.5,3.5 0 0,1 12,8.5A3.5,3.5 0 0,1 15.5,12A3.5,3.5 0 0,1 12,15.5M19.43,12.97C19.47,12.65 19.5,12.33 19.5,12C19.5,11.67 19.47,11.34 19.43,11L21.54,9.37C21.73,9.22 21.78,8.95 21.66,8.73L19.66,5.27C19.54,5.05 19.27,4.96 19.05,5.05L16.56,6.05C16.04,5.66 15.5,5.32 14.87,5.07L14.5,2.42C14.46,2.18 14.25,2 14,2H10C9.75,2 9.54,2.18 9.5,2.42L9.13,5.07C8.5,5.32 7.96,5.66 7.44,6.05L4.95,5.05C4.73,4.96 4.46,5.05 4.34,5.27L2.34,8.73C2.21,8.95 2.27,9.22 2.46,9.37L4.57,11C4.53,11.34 4.5,11.67 4.5,12C4.5,12.33 4.53,12.65 4.57,12.97L2.46,14.63C2.27,14.78 2.21,15.05 2.34,15.27L4.34,18.73C4.46,18.95 4.73,19.03 4.95,18.95L7.44,17.94C7.96,18.34 8.5,18.68 9.13,18.93L9.5,21.58C9.54,21.82 9.75,22 10,22H14C14.25,22 14.46,21.82 14.5,21.58L14.87,18.93C15.5,18.67 16.04,18.34 16.56,17.94L19.05,18.95C19.27,19.03 19.54,18.95 19.66,18.73L21.66,15.27C21.78,15.05 21.73,14.78 21.54,14.63L19.43,12.97Z" /></g><g id="settings-box"><path d="M17.25,12C17.25,12.23 17.23,12.46 17.2,12.68L18.68,13.84C18.81,13.95 18.85,14.13 18.76,14.29L17.36,16.71C17.27,16.86 17.09,16.92 16.93,16.86L15.19,16.16C14.83,16.44 14.43,16.67 14,16.85L13.75,18.7C13.72,18.87 13.57,19 13.4,19H10.6C10.43,19 10.28,18.87 10.25,18.7L10,16.85C9.56,16.67 9.17,16.44 8.81,16.16L7.07,16.86C6.91,16.92 6.73,16.86 6.64,16.71L5.24,14.29C5.15,14.13 5.19,13.95 5.32,13.84L6.8,12.68C6.77,12.46 6.75,12.23 6.75,12C6.75,11.77 6.77,11.54 6.8,11.32L5.32,10.16C5.19,10.05 5.15,9.86 5.24,9.71L6.64,7.29C6.73,7.13 6.91,7.07 7.07,7.13L8.81,7.84C9.17,7.56 9.56,7.32 10,7.15L10.25,5.29C10.28,5.13 10.43,5 10.6,5H13.4C13.57,5 13.72,5.13 13.75,5.29L14,7.15C14.43,7.32 14.83,7.56 15.19,7.84L16.93,7.13C17.09,7.07 17.27,7.13 17.36,7.29L18.76,9.71C18.85,9.86 18.81,10.05 18.68,10.16L17.2,11.32C17.23,11.54 17.25,11.77 17.25,12M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M12,10C10.89,10 10,10.89 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12C14,10.89 13.1,10 12,10Z" /></g><g id="shape-circle-plus"><path d="M11,19A6,6 0 0,0 17,13H19A8,8 0 0,1 11,21A8,8 0 0,1 3,13A8,8 0 0,1 11,5V7A6,6 0 0,0 5,13A6,6 0 0,0 11,19M19,5H22V7H19V10H17V7H14V5H17V2H19V5Z" /></g><g id="shape-plus"><path d="M2,2H11V11H2V2M17.5,2C20,2 22,4 22,6.5C22,9 20,11 17.5,11C15,11 13,9 13,6.5C13,4 15,2 17.5,2M6.5,14L11,22H2L6.5,14M19,17H22V19H19V22H17V19H14V17H17V14H19V17Z" /></g><g id="shape-polygon-plus"><path d="M17,15.7V13H19V17L10,21L3,14L7,5H11V7H8.3L5.4,13.6L10.4,18.6L17,15.7M22,5V7H19V10H17V7H14V5H17V2H19V5H22Z" /></g><g id="shape-rectangle-plus"><path d="M19,6H22V8H19V11H17V8H14V6H17V3H19V6M17,17V14H19V19H3V6H11V8H5V17H17Z" /></g><g id="shape-square-plus"><path d="M19,5H22V7H19V10H17V7H14V5H17V2H19V5M17,19V13H19V21H3V5H11V7H5V19H17Z" /></g><g id="share"><path d="M21,11L14,4V8C7,9 4,14 3,19C5.5,15.5 9,13.9 14,13.9V18L21,11Z" /></g><g id="share-variant"><path d="M18,16.08C17.24,16.08 16.56,16.38 16.04,16.85L8.91,12.7C8.96,12.47 9,12.24 9,12C9,11.76 8.96,11.53 8.91,11.3L15.96,7.19C16.5,7.69 17.21,8 18,8A3,3 0 0,0 21,5A3,3 0 0,0 18,2A3,3 0 0,0 15,5C15,5.24 15.04,5.47 15.09,5.7L8.04,9.81C7.5,9.31 6.79,9 6,9A3,3 0 0,0 3,12A3,3 0 0,0 6,15C6.79,15 7.5,14.69 8.04,14.19L15.16,18.34C15.11,18.55 15.08,18.77 15.08,19C15.08,20.61 16.39,21.91 18,21.91C19.61,21.91 20.92,20.61 20.92,19A2.92,2.92 0 0,0 18,16.08Z" /></g><g id="shield"><path d="M12,1L3,5V11C3,16.55 6.84,21.74 12,23C17.16,21.74 21,16.55 21,11V5L12,1Z" /></g><g id="shield-outline"><path d="M21,11C21,16.55 17.16,21.74 12,23C6.84,21.74 3,16.55 3,11V5L12,1L21,5V11M12,21C15.75,20 19,15.54 19,11.22V6.3L12,3.18L5,6.3V11.22C5,15.54 8.25,20 12,21Z" /></g><g id="shopping"><path d="M12,13A5,5 0 0,1 7,8H9A3,3 0 0,0 12,11A3,3 0 0,0 15,8H17A5,5 0 0,1 12,13M12,3A3,3 0 0,1 15,6H9A3,3 0 0,1 12,3M19,6H17A5,5 0 0,0 12,1A5,5 0 0,0 7,6H5C3.89,6 3,6.89 3,8V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V8C21,6.89 20.1,6 19,6Z" /></g><g id="shopping-music"><path d="M12,3A3,3 0 0,0 9,6H15A3,3 0 0,0 12,3M19,6A2,2 0 0,1 21,8V20A2,2 0 0,1 19,22H5C3.89,22 3,21.1 3,20V8C3,6.89 3.89,6 5,6H7A5,5 0 0,1 12,1A5,5 0 0,1 17,6H19M9,19L16.5,14L9,10V19Z" /></g><g id="shovel"><path d="M15.1,1.81L12.27,4.64C11.5,5.42 11.5,6.69 12.27,7.47L13.68,8.88L9.13,13.43L6.31,10.6L4.89,12C-0.06,17 3.5,20.5 3.5,20.5C3.5,20.5 7,24 12,19.09L13.41,17.68L10.61,14.88L15.15,10.34L16.54,11.73C17.32,12.5 18.59,12.5 19.37,11.73L22.2,8.9L15.1,1.81M17.93,10.28L16.55,8.9L15.11,7.46L13.71,6.06L15.12,4.65L19.35,8.88L17.93,10.28Z" /></g><g id="shovel-off"><path d="M15.1,1.81L12.27,4.65C11.5,5.43 11.5,6.69 12.27,7.47L13.68,8.89L13,9.62L14.44,11.06L15.17,10.33L16.56,11.72C17.34,12.5 18.61,12.5 19.39,11.72L22.22,8.88L15.1,1.81M17.93,10.28L13.7,6.06L15.11,4.65L19.34,8.88L17.93,10.28M20.7,20.24L19.29,21.65L11.5,13.88L10.5,14.88L13.33,17.69L12,19.09C7,24 3.5,20.5 3.5,20.5C3.5,20.5 -0.06,17 4.89,12L6.31,10.6L9.13,13.43L10.13,12.43L2.35,4.68L3.77,3.26L20.7,20.24Z" /></g><g id="shredder"><path d="M6,3V7H8V5H16V7H18V3H6M5,8A3,3 0 0,0 2,11V17H5V14H19V17H22V11A3,3 0 0,0 19,8H5M18,10A1,1 0 0,1 19,11A1,1 0 0,1 18,12A1,1 0 0,1 17,11A1,1 0 0,1 18,10M7,16V21H9V16H7M11,16V20H13V16H11M15,16V21H17V16H15Z" /></g><g id="shuffle"><path d="M14.83,13.41L13.42,14.82L16.55,17.95L14.5,20H20V14.5L17.96,16.54L14.83,13.41M14.5,4L16.54,6.04L4,18.59L5.41,20L17.96,7.46L20,9.5V4M10.59,9.17L5.41,4L4,5.41L9.17,10.58L10.59,9.17Z" /></g><g id="shuffle-disabled"><path d="M16,4.5V7H5V9H16V11.5L19.5,8M16,12.5V15H5V17H16V19.5L19.5,16" /></g><g id="shuffle-variant"><path d="M17,3L22.25,7.5L17,12L22.25,16.5L17,21V18H14.26L11.44,15.18L13.56,13.06L15.5,15H17V12L17,9H15.5L6.5,18H2V15H5.26L14.26,6H17V3M2,6H6.5L9.32,8.82L7.2,10.94L5.26,9H2V6Z" /></g><g id="sigma"><path d="M5,4H18V9H17L16,6H10.06L13.65,11.13L9.54,17H16L17,15H18V20H5L10.6,12L5,4Z" /></g><g id="sigma-lower"><path d="M19,12C19,16.42 15.64,20 11.5,20C7.36,20 4,16.42 4,12C4,7.58 7.36,4 11.5,4H20V6H16.46C18,7.47 19,9.61 19,12M11.5,6C8.46,6 6,8.69 6,12C6,15.31 8.46,18 11.5,18C14.54,18 17,15.31 17,12C17,8.69 14.54,6 11.5,6Z" /></g><g id="sign-caution"><path d="M2,3H22V13H18V21H16V13H8V21H6V13H2V3M18.97,11L20,9.97V7.15L16.15,11H18.97M13.32,11L19.32,5H16.5L10.5,11H13.32M7.66,11L13.66,5H10.83L4.83,11H7.66M5.18,5L4,6.18V9L8,5H5.18Z" /></g><g id="signal"><path d="M3,21H6V18H3M8,21H11V14H8M13,21H16V9H13M18,21H21V3H18V21Z" /></g><g id="signal-2g"><path d="M11,19.5H2V13.5A3,3 0 0,1 5,10.5H8V7.5H2V4.5H8A3,3 0 0,1 11,7.5V10.5A3,3 0 0,1 8,13.5H5V16.5H11M22,10.5H17.5V13.5H19V16.5H16V7.5H22V4.5H16A3,3 0 0,0 13,7.5V16.5A3,3 0 0,0 16,19.5H19A3,3 0 0,0 22,16.5" /></g><g id="signal-3g"><path d="M11,16.5V14.25C11,13 10,12 8.75,12C10,12 11,11 11,9.75V7.5A3,3 0 0,0 8,4.5H2V7.5H8V10.5H5V13.5H8V16.5H2V19.5H8A3,3 0 0,0 11,16.5M22,16.5V10.5H17.5V13.5H19V16.5H16V7.5H22V4.5H16A3,3 0 0,0 13,7.5V16.5A3,3 0 0,0 16,19.5H19A3,3 0 0,0 22,16.5Z" /></g><g id="signal-4g"><path d="M22,16.5V10.5H17.5V13.5H19V16.5H16V7.5H22V4.5H16A3,3 0 0,0 13,7.5V16.5A3,3 0 0,0 16,19.5H19A3,3 0 0,0 22,16.5M8,19.5H11V4.5H8V10.5H5V4.5H2V13.5H8V19.5Z" /></g><g id="signal-hspa"><path d="M10.5,10.5H13.5V4.5H16.5V19.5H13.5V13.5H10.5V19.5H7.5V4.5H10.5V10.5Z" /></g><g id="signal-hspa-plus"><path d="M19,8V11H22V14H19V17H16V14H13V11H16V8H19M5,10.5H8V4.5H11V19.5H8V13.5H5V19.5H2V4.5H5V10.5Z" /></g><g id="signal-variant"><path d="M4,6V4H4.1C12.9,4 20,11.1 20,19.9V20H18V19.9C18,12.2 11.8,6 4,6M4,10V8A12,12 0 0,1 16,20H14A10,10 0 0,0 4,10M4,14V12A8,8 0 0,1 12,20H10A6,6 0 0,0 4,14M4,16A4,4 0 0,1 8,20H4V16Z" /></g><g id="silverware"><path d="M8.1,13.34L3.91,9.16C2.35,7.59 2.35,5.06 3.91,3.5L10.93,10.5L8.1,13.34M14.88,11.53L13.41,13L20.29,19.88L18.88,21.29L12,14.41L5.12,21.29L3.71,19.88L13.47,10.12C12.76,8.59 13.26,6.44 14.85,4.85C16.76,2.93 19.5,2.57 20.96,4.03C22.43,5.5 22.07,8.24 20.15,10.15C18.56,11.74 16.41,12.24 14.88,11.53Z" /></g><g id="silverware-fork"><path d="M5.12,21.29L3.71,19.88L13.36,10.22L13.16,10C12.38,9.23 12.38,7.97 13.16,7.19L17.5,2.82L18.43,3.74L15.19,7L16.15,7.94L19.39,4.69L20.31,5.61L17.06,8.85L18,9.81L21.26,6.56L22.18,7.5L17.81,11.84C17.03,12.62 15.77,12.62 15,11.84L14.78,11.64L5.12,21.29Z" /></g><g id="silverware-spoon"><path d="M14.88,11.53L5.12,21.29L3.71,19.88L13.47,10.12C12.76,8.59 13.26,6.44 14.85,4.85C16.76,2.93 19.5,2.57 20.96,4.03C22.43,5.5 22.07,8.24 20.15,10.15C18.56,11.74 16.41,12.24 14.88,11.53Z" /></g><g id="silverware-variant"><path d="M8.1,13.34L3.91,9.16C2.35,7.59 2.35,5.06 3.91,3.5L10.93,10.5L8.1,13.34M13.41,13L20.29,19.88L18.88,21.29L12,14.41L5.12,21.29L3.71,19.88L13.36,10.22L13.16,10C12.38,9.23 12.38,7.97 13.16,7.19L17.5,2.82L18.43,3.74L15.19,7L16.15,7.94L19.39,4.69L20.31,5.61L17.06,8.85L18,9.81L21.26,6.56L22.18,7.5L17.81,11.84C17.03,12.62 15.77,12.62 15,11.84L14.78,11.64L13.41,13Z" /></g><g id="sim"><path d="M20,4A2,2 0 0,0 18,2H10L4,8V20A2,2 0 0,0 6,22H18C19.11,22 20,21.1 20,20V4M9,19H7V17H9V19M17,19H15V17H17V19M9,15H7V11H9V15M13,19H11V15H13V19M13,13H11V11H13V13M17,15H15V11H17V15Z" /></g><g id="sim-alert"><path d="M13,13H11V8H13M13,17H11V15H13M18,2H10L4,8V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V4A2,2 0 0,0 18,2Z" /></g><g id="sim-off"><path d="M19,5A2,2 0 0,0 17,3H10L7.66,5.34L19,16.68V5M3.65,3.88L2.38,5.15L5,7.77V19A2,2 0 0,0 7,21H17C17.36,21 17.68,20.9 17.97,20.74L19.85,22.62L21.12,21.35L3.65,3.88Z" /></g><g id="sitemap"><path d="M9,2V8H11V11H5C3.89,11 3,11.89 3,13V16H1V22H7V16H5V13H11V16H9V22H15V16H13V13H19V16H17V22H23V16H21V13C21,11.89 20.11,11 19,11H13V8H15V2H9Z" /></g><g id="skip-backward"><path d="M20,5V19L13,12M6,5V19H4V5M13,5V19L6,12" /></g><g id="skip-forward"><path d="M4,5V19L11,12M18,5V19H20V5M11,5V19L18,12" /></g><g id="skip-next"><path d="M16,18H18V6H16M6,18L14.5,12L6,6V18Z" /></g><g id="skip-next-circle"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M8,8L13,12L8,16M14,8H16V16H14" /></g><g id="skip-next-circle-outline"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4M8,8V16L13,12M14,8V16H16V8" /></g><g id="skip-previous"><path d="M6,18V6H8V18H6M9.5,12L18,6V18L9.5,12Z" /></g><g id="skip-previous-circle"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M8,8H10V16H8M16,8V16L11,12" /></g><g id="skip-previous-circle-outline"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4C7.59,4 4,7.59 4,12C4,16.41 7.59,20 12,20C16.41,20 20,16.41 20,12C20,7.59 16.41,4 12,4M16,8V16L11,12M10,8V16H8V8" /></g><g id="skull"><path d="M12,2A9,9 0 0,0 3,11C3,14.03 4.53,16.82 7,18.47V22H9V19H11V22H13V19H15V22H17V18.46C19.47,16.81 21,14 21,11A9,9 0 0,0 12,2M8,11A2,2 0 0,1 10,13A2,2 0 0,1 8,15A2,2 0 0,1 6,13A2,2 0 0,1 8,11M16,11A2,2 0 0,1 18,13A2,2 0 0,1 16,15A2,2 0 0,1 14,13A2,2 0 0,1 16,11M12,14L13.5,17H10.5L12,14Z" /></g><g id="skype"><path d="M18,6C20.07,8.04 20.85,10.89 20.36,13.55C20.77,14.27 21,15.11 21,16A5,5 0 0,1 16,21C15.11,21 14.27,20.77 13.55,20.36C10.89,20.85 8.04,20.07 6,18C3.93,15.96 3.15,13.11 3.64,10.45C3.23,9.73 3,8.89 3,8A5,5 0 0,1 8,3C8.89,3 9.73,3.23 10.45,3.64C13.11,3.15 15.96,3.93 18,6M12.04,17.16C14.91,17.16 16.34,15.78 16.34,13.92C16.34,12.73 15.78,11.46 13.61,10.97L11.62,10.53C10.86,10.36 10,10.13 10,9.42C10,8.7 10.6,8.2 11.7,8.2C13.93,8.2 13.72,9.73 14.83,9.73C15.41,9.73 15.91,9.39 15.91,8.8C15.91,7.43 13.72,6.4 11.86,6.4C9.85,6.4 7.7,7.26 7.7,9.54C7.7,10.64 8.09,11.81 10.25,12.35L12.94,13.03C13.75,13.23 13.95,13.68 13.95,14.1C13.95,14.78 13.27,15.45 12.04,15.45C9.63,15.45 9.96,13.6 8.67,13.6C8.09,13.6 7.67,14 7.67,14.57C7.67,15.68 9,17.16 12.04,17.16Z" /></g><g id="skype-business"><path d="M12.03,16.53C9.37,16.53 8.18,15.22 8.18,14.24C8.18,13.74 8.55,13.38 9.06,13.38C10.2,13.38 9.91,15 12.03,15C13.12,15 13.73,14.43 13.73,13.82C13.73,13.46 13.55,13.06 12.83,12.88L10.46,12.29C8.55,11.81 8.2,10.78 8.2,9.81C8.2,7.79 10.1,7.03 11.88,7.03C13.5,7.03 15.46,7.94 15.46,9.15C15.46,9.67 15,9.97 14.5,9.97C13.5,9.97 13.7,8.62 11.74,8.62C10.77,8.62 10.23,9.06 10.23,9.69C10.23,10.32 11,10.5 11.66,10.68L13.42,11.07C15.34,11.5 15.83,12.62 15.83,13.67C15.83,15.31 14.57,16.53 12.03,16.53M18,6C20.07,8.04 20.85,10.89 20.36,13.55C20.77,14.27 21,15.11 21,16A5,5 0 0,1 16,21C15.11,21 14.27,20.77 13.55,20.36C10.89,20.85 8.04,20.07 6,18C3.93,15.96 3.15,13.11 3.64,10.45C3.23,9.73 3,8.89 3,8A5,5 0 0,1 8,3C8.89,3 9.73,3.23 10.45,3.64C13.11,3.15 15.96,3.93 18,6M8,5A3,3 0 0,0 5,8C5,8.79 5.3,9.5 5.8,10.04C5.1,12.28 5.63,14.82 7.4,16.6C9.18,18.37 11.72,18.9 13.96,18.2C14.5,18.7 15.21,19 16,19A3,3 0 0,0 19,16C19,15.21 18.7,14.5 18.2,13.96C18.9,11.72 18.37,9.18 16.6,7.4C14.82,5.63 12.28,5.1 10.04,5.8C9.5,5.3 8.79,5 8,5Z" /></g><g id="slack"><path d="M10.23,11.16L12.91,10.27L13.77,12.84L11.09,13.73L10.23,11.16M17.69,13.71C18.23,13.53 18.5,12.94 18.34,12.4C18.16,11.86 17.57,11.56 17.03,11.75L15.73,12.18L14.87,9.61L16.17,9.17C16.71,9 17,8.4 16.82,7.86C16.64,7.32 16.05,7 15.5,7.21L14.21,7.64L13.76,6.3C13.58,5.76 13,5.46 12.45,5.65C11.91,5.83 11.62,6.42 11.8,6.96L12.25,8.3L9.57,9.19L9.12,7.85C8.94,7.31 8.36,7 7.81,7.2C7.27,7.38 7,7.97 7.16,8.5L7.61,9.85L6.31,10.29C5.77,10.47 5.5,11.06 5.66,11.6C5.8,12 6.19,12.3 6.61,12.31L6.97,12.25L8.27,11.82L9.13,14.39L7.83,14.83C7.29,15 7,15.6 7.18,16.14C7.32,16.56 7.71,16.84 8.13,16.85L8.5,16.79L9.79,16.36L10.24,17.7C10.38,18.13 10.77,18.4 11.19,18.41L11.55,18.35C12.09,18.17 12.38,17.59 12.2,17.04L11.75,15.7L14.43,14.81L14.88,16.15C15,16.57 15.41,16.84 15.83,16.85L16.19,16.8C16.73,16.62 17,16.03 16.84,15.5L16.39,14.15L17.69,13.71M21.17,9.25C23.23,16.12 21.62,19.1 14.75,21.17C7.88,23.23 4.9,21.62 2.83,14.75C0.77,7.88 2.38,4.9 9.25,2.83C16.12,0.77 19.1,2.38 21.17,9.25Z" /></g><g id="sleep"><path d="M23,12H17V10L20.39,6H17V4H23V6L19.62,10H23V12M15,16H9V14L12.39,10H9V8H15V10L11.62,14H15V16M7,20H1V18L4.39,14H1V12H7V14L3.62,18H7V20Z" /></g><g id="sleep-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L12.73,16H9V14L9.79,13.06L2,5.27M23,12H17V10L20.39,6H17V4H23V6L19.62,10H23V12M9.82,8H15V10L13.54,11.72L9.82,8M7,20H1V18L4.39,14H1V12H7V14L3.62,18H7V20Z" /></g><g id="smoking"><path d="M7,19H22V15H7M2,19H5V15H2M10,4V5A3,3 0 0,1 7,8A5,5 0 0,0 2,13H4A3,3 0 0,1 7,10A5,5 0 0,0 12,5V4H10Z" /></g><g id="smoking-off"><path d="M15.82,14L19.82,18H22V14M2,18H5V14H2M3.28,4L2,5.27L4.44,7.71C2.93,8.61 2,10.24 2,12H4C4,10.76 4.77,9.64 5.93,9.2L10.73,14H7V18H14.73L18.73,22L20,20.72M10,3V4C10,5.09 9.4,6.1 8.45,6.62L9.89,8.07C11.21,7.13 12,5.62 12,4V3H10Z" /></g><g id="snapchat"><path d="M12,20.45C10.81,20.45 10.1,19.94 9.47,19.5C9,19.18 8.58,18.87 8.08,18.79C6.93,18.73 6.59,18.79 5.97,18.9C5.86,18.9 5.73,18.87 5.68,18.69C5.5,17.94 5.45,17.73 5.32,17.71C4,17.5 3.19,17.2 3.03,16.83C3,16.6 3.07,16.5 3.18,16.5C4.25,16.31 5.2,15.75 6,14.81C6.63,14.09 6.93,13.39 6.96,13.32C7.12,13 7.15,12.72 7.06,12.5C6.89,12.09 6.31,11.91 5.68,11.7C5.34,11.57 4.79,11.29 4.86,10.9C4.92,10.62 5.29,10.42 5.81,10.46C6.16,10.62 6.46,10.7 6.73,10.7C7.06,10.7 7.21,10.58 7.25,10.54C7.14,8.78 7.05,7.25 7.44,6.38C8.61,3.76 11.08,3.55 12,3.55C12.92,3.55 15.39,3.76 16.56,6.38C16.95,7.25 16.86,8.78 16.75,10.54C16.79,10.58 16.94,10.7 17.27,10.7C17.54,10.7 17.84,10.62 18.19,10.46C18.71,10.42 19.08,10.62 19.14,10.9C19.21,11.29 18.66,11.57 18.32,11.7C17.69,11.91 17.11,12.09 16.94,12.5C16.85,12.72 16.88,13 17.04,13.32C17.07,13.39 17.37,14.09 18,14.81C18.8,15.75 19.75,16.31 20.82,16.5C20.93,16.5 21,16.6 20.97,16.83C20.81,17.2 20,17.5 18.68,17.71C18.55,17.73 18.5,17.94 18.32,18.69C18.27,18.87 18.14,18.9 18.03,18.9C17.41,18.79 17.07,18.73 15.92,18.79C15.42,18.87 15,19.18 14.53,19.5C13.9,19.94 13.19,20.45 12,20.45Z" /></g><g id="snowman"><path d="M17,17A5,5 0 0,1 12,22A5,5 0 0,1 7,17C7,15.5 7.65,14.17 8.69,13.25C8.26,12.61 8,11.83 8,11C8,10.86 8,10.73 8,10.59L5.04,8.87L4.83,8.71L2.29,9.39L2.03,8.43L4.24,7.84L2.26,6.69L2.76,5.82L4.74,6.97L4.15,4.75L5.11,4.5L5.8,7.04L6.04,7.14L8.73,8.69C9.11,8.15 9.62,7.71 10.22,7.42C9.5,6.87 9,6 9,5A3,3 0 0,1 12,2A3,3 0 0,1 15,5C15,6 14.5,6.87 13.78,7.42C14.38,7.71 14.89,8.15 15.27,8.69L17.96,7.14L18.2,7.04L18.89,4.5L19.85,4.75L19.26,6.97L21.24,5.82L21.74,6.69L19.76,7.84L21.97,8.43L21.71,9.39L19.17,8.71L18.96,8.87L16,10.59V11C16,11.83 15.74,12.61 15.31,13.25C16.35,14.17 17,15.5 17,17Z" /></g><g id="soccer"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,3C13.76,3 15.4,3.53 16.78,4.41L16.5,5H13L12,5L10.28,4.16L10.63,3.13C11.08,3.05 11.53,3 12,3M9.53,3.38L9.19,4.41L6.63,5.69L5.38,5.94C6.5,4.73 7.92,3.84 9.53,3.38M13,6H16L18.69,9.59L17.44,12.16L14.81,12.78L11.53,8.94L13,6M6.16,6.66L7,10L5.78,13.06L3.22,13.94C3.08,13.31 3,12.67 3,12C3,10.1 3.59,8.36 4.59,6.91L6.16,6.66M20.56,9.22C20.85,10.09 21,11.03 21,12C21,13.44 20.63,14.79 20.03,16H19L18.16,12.66L19.66,9.66L20.56,9.22M8,10H11L13.81,13.28L12,16L8.84,16.78L6.53,13.69L8,10M12,17L15,19L14.13,20.72C13.44,20.88 12.73,21 12,21C10.25,21 8.63,20.5 7.25,19.63L8.41,17.91L12,17M19,17H19.5C18.5,18.5 17,19.67 15.31,20.34L16,19L19,17Z" /></g><g id="sofa"><path d="M7,6H9A2,2 0 0,1 11,8V12H5V8A2,2 0 0,1 7,6M15,6H17A2,2 0 0,1 19,8V12H13V8A2,2 0 0,1 15,6M1,9H2A1,1 0 0,1 3,10V12A2,2 0 0,0 5,14H19A2,2 0 0,0 21,12V11L21,10A1,1 0 0,1 22,9H23A1,1 0 0,1 24,10V19H21V17H3V19H0V10A1,1 0 0,1 1,9Z" /></g><g id="solid"><path d="M0,0H24V24H0" /></g><g id="sort"><path d="M10,13V11H18V13H10M10,19V17H14V19H10M10,7V5H22V7H10M6,17H8.5L5,20.5L1.5,17H4V7H1.5L5,3.5L8.5,7H6V17Z" /></g><g id="sort-alphabetical"><path d="M9.25,5L12.5,1.75L15.75,5H9.25M15.75,19L12.5,22.25L9.25,19H15.75M8.89,14.3H6L5.28,17H2.91L6,7H9L12.13,17H9.67L8.89,14.3M6.33,12.68H8.56L7.93,10.56L7.67,9.59L7.42,8.63H7.39L7.17,9.6L6.93,10.58L6.33,12.68M13.05,17V15.74L17.8,8.97V8.91H13.5V7H20.73V8.34L16.09,15V15.08H20.8V17H13.05Z" /></g><g id="sort-ascending"><path d="M10,11V13H18V11H10M10,5V7H14V5H10M10,17V19H22V17H10M6,7H8.5L5,3.5L1.5,7H4V20H6V7Z" /></g><g id="sort-descending"><path d="M10,13V11H18V13H10M10,19V17H14V19H10M10,7V5H22V7H10M6,17H8.5L5,20.5L1.5,17H4V4H6V17Z" /></g><g id="sort-numeric"><path d="M7.78,7C9.08,7.04 10,7.53 10.57,8.46C11.13,9.4 11.41,10.56 11.39,11.95C11.4,13.5 11.09,14.73 10.5,15.62C9.88,16.5 8.95,16.97 7.71,17C6.45,16.96 5.54,16.5 4.96,15.56C4.38,14.63 4.09,13.45 4.09,12C4.09,10.55 4.39,9.36 5,8.44C5.59,7.5 6.5,7.04 7.78,7M7.75,8.63C7.31,8.63 6.96,8.9 6.7,9.46C6.44,10 6.32,10.87 6.32,12C6.31,13.15 6.44,14 6.69,14.54C6.95,15.1 7.31,15.37 7.77,15.37C8.69,15.37 9.16,14.24 9.17,12C9.17,9.77 8.7,8.65 7.75,8.63M13.33,17V15.22L13.76,15.24L14.3,15.22L15.34,15.03C15.68,14.92 16,14.78 16.26,14.58C16.59,14.35 16.86,14.08 17.07,13.76C17.29,13.45 17.44,13.12 17.53,12.78L17.5,12.77C17.05,13.19 16.38,13.4 15.47,13.41C14.62,13.4 13.91,13.15 13.34,12.65C12.77,12.15 12.5,11.43 12.46,10.5C12.47,9.5 12.81,8.69 13.47,8.03C14.14,7.37 15,7.03 16.12,7C17.37,7.04 18.29,7.45 18.88,8.24C19.47,9 19.76,10 19.76,11.19C19.75,12.15 19.61,13 19.32,13.76C19.03,14.5 18.64,15.13 18.12,15.64C17.66,16.06 17.11,16.38 16.47,16.61C15.83,16.83 15.12,16.96 14.34,17H13.33M16.06,8.63C15.65,8.64 15.32,8.8 15.06,9.11C14.81,9.42 14.68,9.84 14.68,10.36C14.68,10.8 14.8,11.16 15.03,11.46C15.27,11.77 15.63,11.92 16.11,11.93C16.43,11.93 16.7,11.86 16.92,11.74C17.14,11.61 17.3,11.46 17.41,11.28C17.5,11.17 17.53,10.97 17.53,10.71C17.54,10.16 17.43,9.69 17.2,9.28C16.97,8.87 16.59,8.65 16.06,8.63M9.25,5L12.5,1.75L15.75,5H9.25M15.75,19L12.5,22.25L9.25,19H15.75Z" /></g><g id="sort-variant"><path d="M3,13H15V11H3M3,6V8H21V6M3,18H9V16H3V18Z" /></g><g id="soundcloud"><path d="M11.56,8.87V17H20.32V17C22.17,16.87 23,15.73 23,14.33C23,12.85 21.88,11.66 20.38,11.66C20,11.66 19.68,11.74 19.35,11.88C19.11,9.54 17.12,7.71 14.67,7.71C13.5,7.71 12.39,8.15 11.56,8.87M10.68,9.89C10.38,9.71 10.06,9.57 9.71,9.5V17H11.1V9.34C10.95,9.5 10.81,9.7 10.68,9.89M8.33,9.35V17H9.25V9.38C9.06,9.35 8.87,9.34 8.67,9.34C8.55,9.34 8.44,9.34 8.33,9.35M6.5,10V17H7.41V9.54C7.08,9.65 6.77,9.81 6.5,10M4.83,12.5C4.77,12.5 4.71,12.44 4.64,12.41V17H5.56V10.86C5.19,11.34 4.94,11.91 4.83,12.5M2.79,12.22V16.91C3,16.97 3.24,17 3.5,17H3.72V12.14C3.64,12.13 3.56,12.12 3.5,12.12C3.24,12.12 3,12.16 2.79,12.22M1,14.56C1,15.31 1.34,15.97 1.87,16.42V12.71C1.34,13.15 1,13.82 1,14.56Z" /></g><g id="source-branch"><path d="M13,14C9.64,14 8.54,15.35 8.18,16.24C9.25,16.7 10,17.76 10,19A3,3 0 0,1 7,22A3,3 0 0,1 4,19C4,17.69 4.83,16.58 6,16.17V7.83C4.83,7.42 4,6.31 4,5A3,3 0 0,1 7,2A3,3 0 0,1 10,5C10,6.31 9.17,7.42 8,7.83V13.12C8.88,12.47 10.16,12 12,12C14.67,12 15.56,10.66 15.85,9.77C14.77,9.32 14,8.25 14,7A3,3 0 0,1 17,4A3,3 0 0,1 20,7C20,8.34 19.12,9.5 17.91,9.86C17.65,11.29 16.68,14 13,14M7,18A1,1 0 0,0 6,19A1,1 0 0,0 7,20A1,1 0 0,0 8,19A1,1 0 0,0 7,18M7,4A1,1 0 0,0 6,5A1,1 0 0,0 7,6A1,1 0 0,0 8,5A1,1 0 0,0 7,4M17,6A1,1 0 0,0 16,7A1,1 0 0,0 17,8A1,1 0 0,0 18,7A1,1 0 0,0 17,6Z" /></g><g id="source-commit"><path d="M17,12C17,14.42 15.28,16.44 13,16.9V21H11V16.9C8.72,16.44 7,14.42 7,12C7,9.58 8.72,7.56 11,7.1V3H13V7.1C15.28,7.56 17,9.58 17,12M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9Z" /></g><g id="source-commit-end"><path d="M17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12C7,9.58 8.72,7.56 11,7.1V3H13V7.1C15.28,7.56 17,9.58 17,12M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9Z" /></g><g id="source-commit-end-local"><path d="M12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M11,5V3H13V5H11Z" /></g><g id="source-commit-local"><path d="M12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M11,5V3H13V5H11M11,21V19H13V21H11Z" /></g><g id="source-commit-next-local"><path d="M17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12C7,9.58 8.72,7.56 11,7.1V3H13V7.1C15.28,7.56 17,9.58 17,12M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M11,21V19H13V21H11Z" /></g><g id="source-commit-start"><path d="M12,7A5,5 0 0,1 17,12C17,14.42 15.28,16.44 13,16.9V21H11V16.9C8.72,16.44 7,14.42 7,12A5,5 0 0,1 12,7M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9Z" /></g><g id="source-commit-start-next-local"><path d="M12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M11,21V19H13V21H11Z" /></g><g id="source-fork"><path d="M6,2A3,3 0 0,1 9,5C9,6.28 8.19,7.38 7.06,7.81C7.15,8.27 7.39,8.83 8,9.63C9,10.92 11,12.83 12,14.17C13,12.83 15,10.92 16,9.63C16.61,8.83 16.85,8.27 16.94,7.81C15.81,7.38 15,6.28 15,5A3,3 0 0,1 18,2A3,3 0 0,1 21,5C21,6.32 20.14,7.45 18.95,7.85C18.87,8.37 18.64,9 18,9.83C17,11.17 15,13.08 14,14.38C13.39,15.17 13.15,15.73 13.06,16.19C14.19,16.62 15,17.72 15,19A3,3 0 0,1 12,22A3,3 0 0,1 9,19C9,17.72 9.81,16.62 10.94,16.19C10.85,15.73 10.61,15.17 10,14.38C9,13.08 7,11.17 6,9.83C5.36,9 5.13,8.37 5.05,7.85C3.86,7.45 3,6.32 3,5A3,3 0 0,1 6,2M6,4A1,1 0 0,0 5,5A1,1 0 0,0 6,6A1,1 0 0,0 7,5A1,1 0 0,0 6,4M18,4A1,1 0 0,0 17,5A1,1 0 0,0 18,6A1,1 0 0,0 19,5A1,1 0 0,0 18,4M12,18A1,1 0 0,0 11,19A1,1 0 0,0 12,20A1,1 0 0,0 13,19A1,1 0 0,0 12,18Z" /></g><g id="source-merge"><path d="M7,3A3,3 0 0,1 10,6C10,7.29 9.19,8.39 8.04,8.81C8.58,13.81 13.08,14.77 15.19,14.96C15.61,13.81 16.71,13 18,13A3,3 0 0,1 21,16A3,3 0 0,1 18,19C16.69,19 15.57,18.16 15.16,17C10.91,16.8 9.44,15.19 8,13.39V15.17C9.17,15.58 10,16.69 10,18A3,3 0 0,1 7,21A3,3 0 0,1 4,18C4,16.69 4.83,15.58 6,15.17V8.83C4.83,8.42 4,7.31 4,6A3,3 0 0,1 7,3M7,5A1,1 0 0,0 6,6A1,1 0 0,0 7,7A1,1 0 0,0 8,6A1,1 0 0,0 7,5M7,17A1,1 0 0,0 6,18A1,1 0 0,0 7,19A1,1 0 0,0 8,18A1,1 0 0,0 7,17M18,15A1,1 0 0,0 17,16A1,1 0 0,0 18,17A1,1 0 0,0 19,16A1,1 0 0,0 18,15Z" /></g><g id="source-pull"><path d="M6,3A3,3 0 0,1 9,6C9,7.31 8.17,8.42 7,8.83V15.17C8.17,15.58 9,16.69 9,18A3,3 0 0,1 6,21A3,3 0 0,1 3,18C3,16.69 3.83,15.58 5,15.17V8.83C3.83,8.42 3,7.31 3,6A3,3 0 0,1 6,3M6,5A1,1 0 0,0 5,6A1,1 0 0,0 6,7A1,1 0 0,0 7,6A1,1 0 0,0 6,5M6,17A1,1 0 0,0 5,18A1,1 0 0,0 6,19A1,1 0 0,0 7,18A1,1 0 0,0 6,17M21,18A3,3 0 0,1 18,21A3,3 0 0,1 15,18C15,16.69 15.83,15.58 17,15.17V7H15V10.25L10.75,6L15,1.75V5H17A2,2 0 0,1 19,7V15.17C20.17,15.58 21,16.69 21,18M18,17A1,1 0 0,0 17,18A1,1 0 0,0 18,19A1,1 0 0,0 19,18A1,1 0 0,0 18,17Z" /></g><g id="speaker"><path d="M12,12A3,3 0 0,0 9,15A3,3 0 0,0 12,18A3,3 0 0,0 15,15A3,3 0 0,0 12,12M12,20A5,5 0 0,1 7,15A5,5 0 0,1 12,10A5,5 0 0,1 17,15A5,5 0 0,1 12,20M12,4A2,2 0 0,1 14,6A2,2 0 0,1 12,8C10.89,8 10,7.1 10,6C10,4.89 10.89,4 12,4M17,2H7C5.89,2 5,2.89 5,4V20A2,2 0 0,0 7,22H17A2,2 0 0,0 19,20V4C19,2.89 18.1,2 17,2Z" /></g><g id="speaker-off"><path d="M2,5.27L3.28,4L21,21.72L19.73,23L18.27,21.54C17.93,21.83 17.5,22 17,22H7C5.89,22 5,21.1 5,20V8.27L2,5.27M12,18A3,3 0 0,1 9,15C9,14.24 9.28,13.54 9.75,13L8.33,11.6C7.5,12.5 7,13.69 7,15A5,5 0 0,0 12,20C13.31,20 14.5,19.5 15.4,18.67L14,17.25C13.45,17.72 12.76,18 12,18M17,15A5,5 0 0,0 12,10H11.82L5.12,3.3C5.41,2.54 6.14,2 7,2H17A2,2 0 0,1 19,4V17.18L17,15.17V15M12,4C10.89,4 10,4.89 10,6A2,2 0 0,0 12,8A2,2 0 0,0 14,6C14,4.89 13.1,4 12,4Z" /></g><g id="speaker-wireless"><path d="M20.07,19.07L18.66,17.66C20.11,16.22 21,14.21 21,12C21,9.78 20.11,7.78 18.66,6.34L20.07,4.93C21.88,6.74 23,9.24 23,12C23,14.76 21.88,17.26 20.07,19.07M17.24,16.24L15.83,14.83C16.55,14.11 17,13.11 17,12C17,10.89 16.55,9.89 15.83,9.17L17.24,7.76C18.33,8.85 19,10.35 19,12C19,13.65 18.33,15.15 17.24,16.24M4,3H12A2,2 0 0,1 14,5V19A2,2 0 0,1 12,21H4A2,2 0 0,1 2,19V5A2,2 0 0,1 4,3M8,5A2,2 0 0,0 6,7A2,2 0 0,0 8,9A2,2 0 0,0 10,7A2,2 0 0,0 8,5M8,11A4,4 0 0,0 4,15A4,4 0 0,0 8,19A4,4 0 0,0 12,15A4,4 0 0,0 8,11M8,13A2,2 0 0,1 10,15A2,2 0 0,1 8,17A2,2 0 0,1 6,15A2,2 0 0,1 8,13Z" /></g><g id="speedometer"><path d="M12,16A3,3 0 0,1 9,13C9,11.88 9.61,10.9 10.5,10.39L20.21,4.77L14.68,14.35C14.18,15.33 13.17,16 12,16M12,3C13.81,3 15.5,3.5 16.97,4.32L14.87,5.53C14,5.19 13,5 12,5A8,8 0 0,0 4,13C4,15.21 4.89,17.21 6.34,18.65H6.35C6.74,19.04 6.74,19.67 6.35,20.06C5.96,20.45 5.32,20.45 4.93,20.07V20.07C3.12,18.26 2,15.76 2,13A10,10 0 0,1 12,3M22,13C22,15.76 20.88,18.26 19.07,20.07V20.07C18.68,20.45 18.05,20.45 17.66,20.06C17.27,19.67 17.27,19.04 17.66,18.65V18.65C19.11,17.2 20,15.21 20,13C20,12 19.81,11 19.46,10.1L20.67,8C21.5,9.5 22,11.18 22,13Z" /></g><g id="spellcheck"><path d="M21.59,11.59L13.5,19.68L9.83,16L8.42,17.41L13.5,22.5L23,13M6.43,11L8.5,5.5L10.57,11M12.45,16H14.54L9.43,3H7.57L2.46,16H4.55L5.67,13H11.31L12.45,16Z" /></g><g id="spotify"><path d="M17.9,10.9C14.7,9 9.35,8.8 6.3,9.75C5.8,9.9 5.3,9.6 5.15,9.15C5,8.65 5.3,8.15 5.75,8C9.3,6.95 15.15,7.15 18.85,9.35C19.3,9.6 19.45,10.2 19.2,10.65C18.95,11 18.35,11.15 17.9,10.9M17.8,13.7C17.55,14.05 17.1,14.2 16.75,13.95C14.05,12.3 9.95,11.8 6.8,12.8C6.4,12.9 5.95,12.7 5.85,12.3C5.75,11.9 5.95,11.45 6.35,11.35C10,10.25 14.5,10.8 17.6,12.7C17.9,12.85 18.05,13.35 17.8,13.7M16.6,16.45C16.4,16.75 16.05,16.85 15.75,16.65C13.4,15.2 10.45,14.9 6.95,15.7C6.6,15.8 6.3,15.55 6.2,15.25C6.1,14.9 6.35,14.6 6.65,14.5C10.45,13.65 13.75,14 16.35,15.6C16.7,15.75 16.75,16.15 16.6,16.45M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="spotlight"><path d="M2,6L7.09,8.55C6.4,9.5 6,10.71 6,12C6,13.29 6.4,14.5 7.09,15.45L2,18V6M6,3H18L15.45,7.09C14.5,6.4 13.29,6 12,6C10.71,6 9.5,6.4 8.55,7.09L6,3M22,6V18L16.91,15.45C17.6,14.5 18,13.29 18,12C18,10.71 17.6,9.5 16.91,8.55L22,6M18,21H6L8.55,16.91C9.5,17.6 10.71,18 12,18C13.29,18 14.5,17.6 15.45,16.91L18,21M12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z" /></g><g id="spotlight-beam"><path d="M9,16.5L9.91,15.59L15.13,20.8L14.21,21.71L9,16.5M15.5,10L16.41,9.09L21.63,14.3L20.71,15.21L15.5,10M6.72,2.72L10.15,6.15L6.15,10.15L2.72,6.72C1.94,5.94 1.94,4.67 2.72,3.89L3.89,2.72C4.67,1.94 5.94,1.94 6.72,2.72M14.57,7.5L15.28,8.21L8.21,15.28L7.5,14.57L6.64,11.07L11.07,6.64L14.57,7.5Z" /></g><g id="spray"><path d="M10,4H12V6H10V4M7,3H9V5H7V3M7,6H9V8H7V6M6,8V10H4V8H6M6,5V7H4V5H6M6,2V4H4V2H6M13,22A2,2 0 0,1 11,20V10A2,2 0 0,1 13,8V7H14V4H17V7H18V8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H13M13,10V20H18V10H13Z" /></g><g id="square-inc"><path d="M6,3H18A3,3 0 0,1 21,6V18A3,3 0 0,1 18,21H6A3,3 0 0,1 3,18V6A3,3 0 0,1 6,3M7,6A1,1 0 0,0 6,7V17A1,1 0 0,0 7,18H17A1,1 0 0,0 18,17V7A1,1 0 0,0 17,6H7M9.5,9H14.5A0.5,0.5 0 0,1 15,9.5V14.5A0.5,0.5 0 0,1 14.5,15H9.5A0.5,0.5 0 0,1 9,14.5V9.5A0.5,0.5 0 0,1 9.5,9Z" /></g><g id="square-inc-cash"><path d="M5.5,0H18.5A5.5,5.5 0 0,1 24,5.5V18.5A5.5,5.5 0 0,1 18.5,24H5.5A5.5,5.5 0 0,1 0,18.5V5.5A5.5,5.5 0 0,1 5.5,0M15.39,15.18C15.39,16.76 14.5,17.81 12.85,17.95V12.61C14.55,13.13 15.39,13.66 15.39,15.18M11.65,6V10.88C10.34,10.5 9.03,9.93 9.03,8.43C9.03,6.94 10.18,6.12 11.65,6M15.5,7.6L16.5,6.8C15.62,5.66 14.4,4.92 12.85,4.77V3.8H11.65V3.8L11.65,4.75C9.5,4.89 7.68,6.17 7.68,8.5C7.68,11 9.74,11.78 11.65,12.29V17.96C10.54,17.84 9.29,17.31 8.43,16.03L7.3,16.78C8.2,18.12 9.76,19 11.65,19.14V20.2H12.07L12.85,20.2V19.16C15.35,19 16.7,17.34 16.7,15.14C16.7,12.58 14.81,11.76 12.85,11.19V6.05C14,6.22 14.85,6.76 15.5,7.6Z" /></g><g id="stackexchange"><path d="M4,14.04V11H20V14.04H4M4,10V7H20V10H4M17.46,2C18.86,2 20,3.18 20,4.63V6H4V4.63C4,3.18 5.14,2 6.54,2H17.46M4,15H20V16.35C20,17.81 18.86,19 17.46,19H16.5L13,22V19H6.54C5.14,19 4,17.81 4,16.35V15Z" /></g><g id="stackoverflow"><path d="M17.36,20.2V14.82H19.15V22H3V14.82H4.8V20.2H17.36M6.77,14.32L7.14,12.56L15.93,14.41L15.56,16.17L6.77,14.32M7.93,10.11L8.69,8.5L16.83,12.28L16.07,13.9L7.93,10.11M10.19,6.12L11.34,4.74L18.24,10.5L17.09,11.87L10.19,6.12M14.64,1.87L20,9.08L18.56,10.15L13.2,2.94L14.64,1.87M6.59,18.41V16.61H15.57V18.41H6.59Z" /></g><g id="stadium"><path d="M5,3H7L10,5L7,7V8.33C8.47,8.12 10.18,8 12,8C13.82,8 15.53,8.12 17,8.33V3H19L22,5L19,7V8.71C20.85,9.17 22,9.8 22,10.5C22,11.88 17.5,13 12,13C6.5,13 2,11.88 2,10.5C2,9.8 3.15,9.17 5,8.71V3M12,9.5C8.69,9.5 7,9.67 7,10.5C7,11.33 8.69,11.5 12,11.5C15.31,11.5 17,11.33 17,10.5C17,9.67 15.31,9.5 12,9.5M12,14.75C15.81,14.75 19.2,14.08 21.4,13.05L20,21H15V19A2,2 0 0,0 13,17H11A2,2 0 0,0 9,19V21H4L2.6,13.05C4.8,14.08 8.19,14.75 12,14.75Z" /></g><g id="stairs"><path d="M15,5V9H11V13H7V17H3V20H10V16H14V12H18V8H22V5H15Z" /></g><g id="star"><path d="M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z" /></g><g id="star-circle"><path d="M16.23,18L12,15.45L7.77,18L8.89,13.19L5.16,9.96L10.08,9.54L12,5L13.92,9.53L18.84,9.95L15.11,13.18L16.23,18M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="star-half"><path d="M12,15.89V6.59L13.71,10.63L18.09,11L14.77,13.88L15.76,18.16M22,9.74L14.81,9.13L12,2.5L9.19,9.13L2,9.74L7.45,14.47L5.82,21.5L12,17.77L18.18,21.5L16.54,14.47L22,9.74Z" /></g><g id="star-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L17.05,20.31L12,17.27L5.82,21L7.45,13.97L2,9.24L5.66,8.93L2,5.27M12,2L14.81,8.62L22,9.24L16.54,13.97L16.77,14.95L9.56,7.74L12,2Z" /></g><g id="star-outline"><path d="M12,15.39L8.24,17.66L9.23,13.38L5.91,10.5L10.29,10.13L12,6.09L13.71,10.13L18.09,10.5L14.77,13.38L15.76,17.66M22,9.24L14.81,8.63L12,2L9.19,8.63L2,9.24L7.45,13.97L5.82,21L12,17.27L18.18,21L16.54,13.97L22,9.24Z" /></g><g id="steam"><path d="M20.14,7.79C21.33,7.79 22.29,8.75 22.29,9.93C22.29,11.11 21.33,12.07 20.14,12.07A2.14,2.14 0 0,1 18,9.93C18,8.75 18.96,7.79 20.14,7.79M3,6.93A3,3 0 0,1 6,9.93V10.24L12.33,13.54C12.84,13.15 13.46,12.93 14.14,12.93L16.29,9.93C16.29,7.8 18,6.07 20.14,6.07A3.86,3.86 0 0,1 24,9.93A3.86,3.86 0 0,1 20.14,13.79L17.14,15.93A3,3 0 0,1 14.14,18.93C12.5,18.93 11.14,17.59 11.14,15.93C11.14,15.89 11.14,15.85 11.14,15.82L4.64,12.44C4.17,12.75 3.6,12.93 3,12.93A3,3 0 0,1 0,9.93A3,3 0 0,1 3,6.93M15.03,14.94C15.67,15.26 15.92,16.03 15.59,16.67C15.27,17.3 14.5,17.55 13.87,17.23L12.03,16.27C12.19,17.29 13.08,18.07 14.14,18.07C15.33,18.07 16.29,17.11 16.29,15.93C16.29,14.75 15.33,13.79 14.14,13.79C13.81,13.79 13.5,13.86 13.22,14L15.03,14.94M3,7.79C1.82,7.79 0.86,8.75 0.86,9.93C0.86,11.11 1.82,12.07 3,12.07C3.24,12.07 3.5,12.03 3.7,11.95L2.28,11.22C1.64,10.89 1.39,10.12 1.71,9.5C2.04,8.86 2.81,8.6 3.44,8.93L5.14,9.81C5.08,8.68 4.14,7.79 3,7.79M20.14,6.93C18.5,6.93 17.14,8.27 17.14,9.93A3,3 0 0,0 20.14,12.93A3,3 0 0,0 23.14,9.93A3,3 0 0,0 20.14,6.93Z" /></g><g id="steering"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4C16.1,4 19.5,7.1 20,11H17C16.5,9.9 14.4,9 12,9C9.6,9 7.5,9.9 7,11H4C4.5,7.1 7.9,4 12,4M4,13H7C7.2,14.3 8.2,16.6 11,17V20C7.4,19.6 4.4,16.6 4,13M13,20V17C15.8,16.6 16.7,14.3 17,13H20C19.6,16.6 16.6,19.6 13,20Z" /></g><g id="step-backward"><path d="M19,5V19H16V5M14,5V19L3,12" /></g><g id="step-backward-2"><path d="M17,5H14V19H17V5M12,5L1,12L12,19V5M22,5H19V19H22V5Z" /></g><g id="step-forward"><path d="M5,5V19H8V5M10,5V19L21,12" /></g><g id="step-forward-2"><path d="M7,5H10V19H7V5M12,5L23,12L12,19V5M2,5H5V19H2V5Z" /></g><g id="stethoscope"><path d="M19,8C19.56,8 20,8.43 20,9A1,1 0 0,1 19,10C18.43,10 18,9.55 18,9C18,8.43 18.43,8 19,8M2,2V11C2,13.96 4.19,16.5 7.14,16.91C7.76,19.92 10.42,22 13.5,22A6.5,6.5 0 0,0 20,15.5V11.81C21.16,11.39 22,10.29 22,9A3,3 0 0,0 19,6A3,3 0 0,0 16,9C16,10.29 16.84,11.4 18,11.81V15.41C18,17.91 16,19.91 13.5,19.91C11.5,19.91 9.82,18.7 9.22,16.9C12,16.3 14,13.8 14,11V2H10V5H12V11A4,4 0 0,1 8,15A4,4 0 0,1 4,11V5H6V2H2Z" /></g><g id="sticker"><path d="M12.12,18.46L18.3,12.28C16.94,12.59 15.31,13.2 14.07,14.46C13.04,15.5 12.39,16.83 12.12,18.46M20.75,10H21.05C21.44,10 21.79,10.27 21.93,10.64C22.07,11 22,11.43 21.7,11.71L11.7,21.71C11.5,21.9 11.26,22 11,22L10.64,21.93C10.27,21.79 10,21.44 10,21.05C9.84,17.66 10.73,14.96 12.66,13.03C15.5,10.2 19.62,10 20.75,10M12,2C16.5,2 20.34,5 21.58,9.11L20,9H19.42C18.24,6.07 15.36,4 12,4A8,8 0 0,0 4,12C4,15.36 6.07,18.24 9,19.42C8.97,20.13 9,20.85 9.11,21.57C5,20.33 2,16.5 2,12C2,6.47 6.5,2 12,2Z" /></g><g id="stocking"><path d="M17,2A2,2 0 0,1 19,4V7A2,2 0 0,1 17,9V17C17,17.85 16.5,18.57 15.74,18.86L9.5,21.77C8.5,22.24 7.29,21.81 6.83,20.81L6,19C5.5,18 5.95,16.8 6.95,16.34L10,14.91V9A2,2 0 0,1 8,7V4A2,2 0 0,1 10,2H17M10,4V7H17V4H10Z" /></g><g id="stop"><path d="M18,18H6V6H18V18Z" /></g><g id="stop-circle"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M9,9H15V15H9" /></g><g id="stop-circle-outline"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4M9,9V15H15V9" /></g><g id="store"><path d="M12,18H6V14H12M21,14V12L20,7H4L3,12V14H4V20H14V14H18V20H20V14M20,4H4V6H20V4Z" /></g><g id="store-24-hour"><path d="M16,12H15V10H13V7H14V9H15V7H16M11,10H9V11H11V12H8V9H10V8H8V7H11M19,7V4H5V7H2V20H10V16H14V20H22V7H19Z" /></g><g id="stove"><path d="M6,14H8L11,17H9L6,14M4,4H5V3A1,1 0 0,1 6,2H10A1,1 0 0,1 11,3V4H13V3A1,1 0 0,1 14,2H18A1,1 0 0,1 19,3V4H20A2,2 0 0,1 22,6V19A2,2 0 0,1 20,21V22H17V21H7V22H4V21A2,2 0 0,1 2,19V6A2,2 0 0,1 4,4M18,7A1,1 0 0,1 19,8A1,1 0 0,1 18,9A1,1 0 0,1 17,8A1,1 0 0,1 18,7M14,7A1,1 0 0,1 15,8A1,1 0 0,1 14,9A1,1 0 0,1 13,8A1,1 0 0,1 14,7M20,6H4V10H20V6M4,19H20V12H4V19M6,7A1,1 0 0,1 7,8A1,1 0 0,1 6,9A1,1 0 0,1 5,8A1,1 0 0,1 6,7M13,14H15L18,17H16L13,14Z" /></g><g id="subdirectory-arrow-left"><path d="M11,9L12.42,10.42L8.83,14H18V4H20V16H8.83L12.42,19.58L11,21L5,15L11,9Z" /></g><g id="subdirectory-arrow-right"><path d="M19,15L13,21L11.58,19.58L15.17,16H4V4H6V14H15.17L11.58,10.42L13,9L19,15Z" /></g><g id="subway"><path d="M8.5,15A1,1 0 0,1 9.5,16A1,1 0 0,1 8.5,17A1,1 0 0,1 7.5,16A1,1 0 0,1 8.5,15M7,9H17V14H7V9M15.5,15A1,1 0 0,1 16.5,16A1,1 0 0,1 15.5,17A1,1 0 0,1 14.5,16A1,1 0 0,1 15.5,15M18,15.88V9C18,6.38 15.32,6 12,6C9,6 6,6.37 6,9V15.88A2.62,2.62 0 0,0 8.62,18.5L7.5,19.62V20H9.17L10.67,18.5H13.5L15,20H16.5V19.62L15.37,18.5C16.82,18.5 18,17.33 18,15.88M17.8,2.8C20.47,3.84 22,6.05 22,8.86V22H2V8.86C2,6.05 3.53,3.84 6.2,2.8C8,2.09 10.14,2 12,2C13.86,2 16,2.09 17.8,2.8Z" /></g><g id="subway-variant"><path d="M18,11H13V6H18M16.5,17A1.5,1.5 0 0,1 15,15.5A1.5,1.5 0 0,1 16.5,14A1.5,1.5 0 0,1 18,15.5A1.5,1.5 0 0,1 16.5,17M11,11H6V6H11M7.5,17A1.5,1.5 0 0,1 6,15.5A1.5,1.5 0 0,1 7.5,14A1.5,1.5 0 0,1 9,15.5A1.5,1.5 0 0,1 7.5,17M12,2C7.58,2 4,2.5 4,6V15.5A3.5,3.5 0 0,0 7.5,19L6,20.5V21H18V20.5L16.5,19A3.5,3.5 0 0,0 20,15.5V6C20,2.5 16.42,2 12,2Z" /></g><g id="sunglasses"><path d="M7,17H4C2.38,17 0.96,15.74 0.76,14.14L0.26,11.15C0.15,10.3 0.39,9.5 0.91,8.92C1.43,8.34 2.19,8 3,8H9C9.83,8 10.58,8.35 11.06,8.96C11.17,9.11 11.27,9.27 11.35,9.45C11.78,9.36 12.22,9.36 12.64,9.45C12.72,9.27 12.82,9.11 12.94,8.96C13.41,8.35 14.16,8 15,8H21C21.81,8 22.57,8.34 23.09,8.92C23.6,9.5 23.84,10.3 23.74,11.11L23.23,14.18C23.04,15.74 21.61,17 20,17H17C15.44,17 13.92,15.81 13.54,14.3L12.64,11.59C12.26,11.31 11.73,11.31 11.35,11.59L10.43,14.37C10.07,15.82 8.56,17 7,17Z" /></g><g id="surround-sound"><path d="M20,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6A2,2 0 0,0 20,4M7.76,16.24L6.35,17.65C4.78,16.1 4,14.05 4,12C4,9.95 4.78,7.9 6.34,6.34L7.75,7.75C6.59,8.93 6,10.46 6,12C6,13.54 6.59,15.07 7.76,16.24M12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16M17.66,17.66L16.25,16.25C17.41,15.07 18,13.54 18,12C18,10.46 17.41,8.93 16.24,7.76L17.65,6.35C19.22,7.9 20,9.95 20,12C20,14.05 19.22,16.1 17.66,17.66M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z" /></g><g id="swap-horizontal"><path d="M21,9L17,5V8H10V10H17V13M7,11L3,15L7,19V16H14V14H7V11Z" /></g><g id="swap-vertical"><path d="M9,3L5,7H8V14H10V7H13M16,17V10H14V17H11L15,21L19,17H16Z" /></g><g id="swim"><path d="M2,18C4.22,17 6.44,16 8.67,16C10.89,16 13.11,18 15.33,18C17.56,18 19.78,16 22,16V19C19.78,19 17.56,21 15.33,21C13.11,21 10.89,19 8.67,19C6.44,19 4.22,20 2,21V18M8.67,13C7.89,13 7.12,13.12 6.35,13.32L11.27,9.88L10.23,8.64C10.09,8.47 10,8.24 10,8C10,7.66 10.17,7.35 10.44,7.17L16.16,3.17L17.31,4.8L12.47,8.19L17.7,14.42C16.91,14.75 16.12,15 15.33,15C13.11,15 10.89,13 8.67,13M18,7A2,2 0 0,1 20,9A2,2 0 0,1 18,11A2,2 0 0,1 16,9A2,2 0 0,1 18,7Z" /></g><g id="switch"><path d="M13,18H14A1,1 0 0,1 15,19H22V21H15A1,1 0 0,1 14,22H10A1,1 0 0,1 9,21H2V19H9A1,1 0 0,1 10,18H11V16H8A1,1 0 0,1 7,15V3A1,1 0 0,1 8,2H16A1,1 0 0,1 17,3V15A1,1 0 0,1 16,16H13V18M13,6H14V4H13V6M9,4V6H11V4H9M9,8V10H11V8H9M9,12V14H11V12H9Z" /></g><g id="sword"><path d="M6.92,5H5L14,14L15,13.06M19.96,19.12L19.12,19.96C18.73,20.35 18.1,20.35 17.71,19.96L14.59,16.84L11.91,19.5L10.5,18.09L11.92,16.67L3,7.75V3H7.75L16.67,11.92L18.09,10.5L19.5,11.91L16.83,14.58L19.95,17.7C20.35,18.1 20.35,18.73 19.96,19.12Z" /></g><g id="sync"><path d="M12,18A6,6 0 0,1 6,12C6,11 6.25,10.03 6.7,9.2L5.24,7.74C4.46,8.97 4,10.43 4,12A8,8 0 0,0 12,20V23L16,19L12,15M12,4V1L8,5L12,9V6A6,6 0 0,1 18,12C18,13 17.75,13.97 17.3,14.8L18.76,16.26C19.54,15.03 20,13.57 20,12A8,8 0 0,0 12,4Z" /></g><g id="sync-alert"><path d="M11,13H13V7H11M21,4H15V10L17.24,7.76C18.32,8.85 19,10.34 19,12C19,14.61 17.33,16.83 15,17.65V19.74C18.45,18.85 21,15.73 21,12C21,9.79 20.09,7.8 18.64,6.36M11,17H13V15H11M3,12C3,14.21 3.91,16.2 5.36,17.64L3,20H9V14L6.76,16.24C5.68,15.15 5,13.66 5,12C5,9.39 6.67,7.17 9,6.35V4.26C5.55,5.15 3,8.27 3,12Z" /></g><g id="sync-off"><path d="M20,4H14V10L16.24,7.76C17.32,8.85 18,10.34 18,12C18,13 17.75,13.94 17.32,14.77L18.78,16.23C19.55,15 20,13.56 20,12C20,9.79 19.09,7.8 17.64,6.36L20,4M2.86,5.41L5.22,7.77C4.45,9 4,10.44 4,12C4,14.21 4.91,16.2 6.36,17.64L4,20H10V14L7.76,16.24C6.68,15.15 6,13.66 6,12C6,11 6.25,10.06 6.68,9.23L14.76,17.31C14.5,17.44 14.26,17.56 14,17.65V19.74C14.79,19.53 15.54,19.2 16.22,18.78L18.58,21.14L19.85,19.87L4.14,4.14L2.86,5.41M10,6.35V4.26C9.2,4.47 8.45,4.8 7.77,5.22L9.23,6.68C9.5,6.56 9.73,6.44 10,6.35Z" /></g><g id="tab"><path d="M19,19H5V5H12V9H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="tab-unselected"><path d="M15,21H17V19H15M11,21H13V19H11M19,13H21V11H19M19,21A2,2 0 0,0 21,19H19M7,5H9V3H7M19,17H21V15H19M19,3H11V9H21V5C21,3.89 20.1,3 19,3M5,21V19H3A2,2 0 0,0 5,21M3,17H5V15H3M7,21H9V19H7M3,5H5V3C3.89,3 3,3.89 3,5M3,13H5V11H3M3,9H5V7H3V9Z" /></g><g id="table"><path d="M5,4H19A2,2 0 0,1 21,6V18A2,2 0 0,1 19,20H5A2,2 0 0,1 3,18V6A2,2 0 0,1 5,4M5,8V12H11V8H5M13,8V12H19V8H13M5,14V18H11V14H5M13,14V18H19V14H13Z" /></g><g id="table-column-plus-after"><path d="M11,2A2,2 0 0,1 13,4V20A2,2 0 0,1 11,22H2V2H11M4,10V14H11V10H4M4,16V20H11V16H4M4,4V8H11V4H4M15,11H18V8H20V11H23V13H20V16H18V13H15V11Z" /></g><g id="table-column-plus-before"><path d="M13,2A2,2 0 0,0 11,4V20A2,2 0 0,0 13,22H22V2H13M20,10V14H13V10H20M20,16V20H13V16H20M20,4V8H13V4H20M9,11H6V8H4V11H1V13H4V16H6V13H9V11Z" /></g><g id="table-column-remove"><path d="M4,2H11A2,2 0 0,1 13,4V20A2,2 0 0,1 11,22H4A2,2 0 0,1 2,20V4A2,2 0 0,1 4,2M4,10V14H11V10H4M4,16V20H11V16H4M4,4V8H11V4H4M17.59,12L15,9.41L16.41,8L19,10.59L21.59,8L23,9.41L20.41,12L23,14.59L21.59,16L19,13.41L16.41,16L15,14.59L17.59,12Z" /></g><g id="table-column-width"><path d="M5,8H19A2,2 0 0,1 21,10V20A2,2 0 0,1 19,22H5A2,2 0 0,1 3,20V10A2,2 0 0,1 5,8M5,12V15H11V12H5M13,12V15H19V12H13M5,17V20H11V17H5M13,17V20H19V17H13M11,2H21V6H19V4H13V6H11V2Z" /></g><g id="table-edit"><path d="M21.7,13.35L20.7,14.35L18.65,12.3L19.65,11.3C19.86,11.08 20.21,11.08 20.42,11.3L21.7,12.58C21.92,12.79 21.92,13.14 21.7,13.35M12,18.94L18.07,12.88L20.12,14.93L14.06,21H12V18.94M4,2H18A2,2 0 0,1 20,4V8.17L16.17,12H12V16.17L10.17,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2M4,6V10H10V6H4M12,6V10H18V6H12M4,12V16H10V12H4Z" /></g><g id="table-large"><path d="M4,3H20A2,2 0 0,1 22,5V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V5A2,2 0 0,1 4,3M4,7V10H8V7H4M10,7V10H14V7H10M20,10V7H16V10H20M4,12V15H8V12H4M4,20H8V17H4V20M10,12V15H14V12H10M10,20H14V17H10V20M20,20V17H16V20H20M20,12H16V15H20V12Z" /></g><g id="table-row-height"><path d="M3,5H15A2,2 0 0,1 17,7V17A2,2 0 0,1 15,19H3A2,2 0 0,1 1,17V7A2,2 0 0,1 3,5M3,9V12H8V9H3M10,9V12H15V9H10M3,14V17H8V14H3M10,14V17H15V14H10M23,14V7H19V9H21V12H19V14H23Z" /></g><g id="table-row-plus-after"><path d="M22,10A2,2 0 0,1 20,12H4A2,2 0 0,1 2,10V3H4V5H8V3H10V5H14V3H16V5H20V3H22V10M4,10H8V7H4V10M10,10H14V7H10V10M20,10V7H16V10H20M11,14H13V17H16V19H13V22H11V19H8V17H11V14Z" /></g><g id="table-row-plus-before"><path d="M22,14A2,2 0 0,0 20,12H4A2,2 0 0,0 2,14V21H4V19H8V21H10V19H14V21H16V19H20V21H22V14M4,14H8V17H4V14M10,14H14V17H10V14M20,14V17H16V14H20M11,10H13V7H16V5H13V2H11V5H8V7H11V10Z" /></g><g id="table-row-remove"><path d="M9.41,13L12,15.59L14.59,13L16,14.41L13.41,17L16,19.59L14.59,21L12,18.41L9.41,21L8,19.59L10.59,17L8,14.41L9.41,13M22,9A2,2 0 0,1 20,11H4A2,2 0 0,1 2,9V6A2,2 0 0,1 4,4H20A2,2 0 0,1 22,6V9M4,9H8V6H4V9M10,9H14V6H10V9M16,9H20V6H16V9Z" /></g><g id="tablet"><path d="M19,18H5V6H19M21,4H3C1.89,4 1,4.89 1,6V18A2,2 0 0,0 3,20H21A2,2 0 0,0 23,18V6C23,4.89 22.1,4 21,4Z" /></g><g id="tablet-android"><path d="M19.25,19H4.75V3H19.25M14,22H10V21H14M18,0H6A3,3 0 0,0 3,3V21A3,3 0 0,0 6,24H18A3,3 0 0,0 21,21V3A3,3 0 0,0 18,0Z" /></g><g id="tablet-ipad"><path d="M19,19H4V3H19M11.5,23A1.5,1.5 0 0,1 10,21.5A1.5,1.5 0 0,1 11.5,20A1.5,1.5 0 0,1 13,21.5A1.5,1.5 0 0,1 11.5,23M18.5,0H4.5A2.5,2.5 0 0,0 2,2.5V21.5A2.5,2.5 0 0,0 4.5,24H18.5A2.5,2.5 0 0,0 21,21.5V2.5A2.5,2.5 0 0,0 18.5,0Z" /></g><g id="tag"><path d="M5.5,7A1.5,1.5 0 0,1 4,5.5A1.5,1.5 0 0,1 5.5,4A1.5,1.5 0 0,1 7,5.5A1.5,1.5 0 0,1 5.5,7M21.41,11.58L12.41,2.58C12.05,2.22 11.55,2 11,2H4C2.89,2 2,2.89 2,4V11C2,11.55 2.22,12.05 2.59,12.41L11.58,21.41C11.95,21.77 12.45,22 13,22C13.55,22 14.05,21.77 14.41,21.41L21.41,14.41C21.78,14.05 22,13.55 22,13C22,12.44 21.77,11.94 21.41,11.58Z" /></g><g id="tag-faces"><path d="M15,18C11.68,18 9,15.31 9,12C9,8.68 11.68,6 15,6A6,6 0 0,1 21,12A6,6 0 0,1 15,18M4,13A1,1 0 0,1 3,12A1,1 0 0,1 4,11A1,1 0 0,1 5,12A1,1 0 0,1 4,13M22,3H7.63C6.97,3 6.38,3.32 6,3.81L0,12L6,20.18C6.38,20.68 6.97,21 7.63,21H22A2,2 0 0,0 24,19V5C24,3.89 23.1,3 22,3M13,11A1,1 0 0,0 14,10A1,1 0 0,0 13,9A1,1 0 0,0 12,10A1,1 0 0,0 13,11M15,16C16.86,16 18.35,14.72 18.8,13H11.2C11.65,14.72 13.14,16 15,16M17,11A1,1 0 0,0 18,10A1,1 0 0,0 17,9A1,1 0 0,0 16,10A1,1 0 0,0 17,11Z" /></g><g id="tag-heart"><path d="M21.41,11.58L12.41,2.58C12.05,2.22 11.55,2 11,2H4A2,2 0 0,0 2,4V11C2,11.55 2.22,12.05 2.59,12.42L11.59,21.42C11.95,21.78 12.45,22 13,22C13.55,22 14.05,21.78 14.41,21.41L21.41,14.41C21.78,14.05 22,13.55 22,13C22,12.45 21.77,11.94 21.41,11.58M5.5,7A1.5,1.5 0 0,1 4,5.5A1.5,1.5 0 0,1 5.5,4A1.5,1.5 0 0,1 7,5.5A1.5,1.5 0 0,1 5.5,7M17.27,15.27L13,19.54L8.73,15.27C8.28,14.81 8,14.19 8,13.5A2.5,2.5 0 0,1 10.5,11C11.19,11 11.82,11.28 12.27,11.74L13,12.46L13.73,11.73C14.18,11.28 14.81,11 15.5,11A2.5,2.5 0 0,1 18,13.5C18,14.19 17.72,14.82 17.27,15.27Z" /></g><g id="tag-multiple"><path d="M5.5,9A1.5,1.5 0 0,0 7,7.5A1.5,1.5 0 0,0 5.5,6A1.5,1.5 0 0,0 4,7.5A1.5,1.5 0 0,0 5.5,9M17.41,11.58C17.77,11.94 18,12.44 18,13C18,13.55 17.78,14.05 17.41,14.41L12.41,19.41C12.05,19.77 11.55,20 11,20C10.45,20 9.95,19.78 9.58,19.41L2.59,12.42C2.22,12.05 2,11.55 2,11V6C2,4.89 2.89,4 4,4H9C9.55,4 10.05,4.22 10.41,4.58L17.41,11.58M13.54,5.71L14.54,4.71L21.41,11.58C21.78,11.94 22,12.45 22,13C22,13.55 21.78,14.05 21.42,14.41L16.04,19.79L15.04,18.79L20.75,13L13.54,5.71Z" /></g><g id="tag-outline"><path d="M5.5,7A1.5,1.5 0 0,0 7,5.5A1.5,1.5 0 0,0 5.5,4A1.5,1.5 0 0,0 4,5.5A1.5,1.5 0 0,0 5.5,7M21.41,11.58C21.77,11.94 22,12.44 22,13C22,13.55 21.78,14.05 21.41,14.41L14.41,21.41C14.05,21.77 13.55,22 13,22C12.45,22 11.95,21.77 11.58,21.41L2.59,12.41C2.22,12.05 2,11.55 2,11V4C2,2.89 2.89,2 4,2H11C11.55,2 12.05,2.22 12.41,2.58L21.41,11.58M13,20L20,13L11.5,4.5L4.5,11.5L13,20Z" /></g><g id="tag-text-outline"><path d="M5.5,7A1.5,1.5 0 0,0 7,5.5A1.5,1.5 0 0,0 5.5,4A1.5,1.5 0 0,0 4,5.5A1.5,1.5 0 0,0 5.5,7M21.41,11.58C21.77,11.94 22,12.44 22,13C22,13.55 21.78,14.05 21.41,14.41L14.41,21.41C14.05,21.77 13.55,22 13,22C12.45,22 11.95,21.77 11.58,21.41L2.59,12.41C2.22,12.05 2,11.55 2,11V4C2,2.89 2.89,2 4,2H11C11.55,2 12.05,2.22 12.41,2.58L21.41,11.58M13,20L20,13L11.5,4.5L4.5,11.5L13,20M10.09,8.91L11.5,7.5L17,13L15.59,14.41L10.09,8.91M7.59,11.41L9,10L13,14L11.59,15.41L7.59,11.41Z" /></g><g id="target"><path d="M11,2V4.07C7.38,4.53 4.53,7.38 4.07,11H2V13H4.07C4.53,16.62 7.38,19.47 11,19.93V22H13V19.93C16.62,19.47 19.47,16.62 19.93,13H22V11H19.93C19.47,7.38 16.62,4.53 13,4.07V2M11,6.08V8H13V6.09C15.5,6.5 17.5,8.5 17.92,11H16V13H17.91C17.5,15.5 15.5,17.5 13,17.92V16H11V17.91C8.5,17.5 6.5,15.5 6.08,13H8V11H6.09C6.5,8.5 8.5,6.5 11,6.08M12,11A1,1 0 0,0 11,12A1,1 0 0,0 12,13A1,1 0 0,0 13,12A1,1 0 0,0 12,11Z" /></g><g id="taxi"><path d="M5,11L6.5,6.5H17.5L19,11M17.5,16A1.5,1.5 0 0,1 16,14.5A1.5,1.5 0 0,1 17.5,13A1.5,1.5 0 0,1 19,14.5A1.5,1.5 0 0,1 17.5,16M6.5,16A1.5,1.5 0 0,1 5,14.5A1.5,1.5 0 0,1 6.5,13A1.5,1.5 0 0,1 8,14.5A1.5,1.5 0 0,1 6.5,16M18.92,6C18.72,5.42 18.16,5 17.5,5H15V3H9V5H6.5C5.84,5 5.28,5.42 5.08,6L3,12V20A1,1 0 0,0 4,21H5A1,1 0 0,0 6,20V19H18V20A1,1 0 0,0 19,21H20A1,1 0 0,0 21,20V12L18.92,6Z" /></g><g id="teamviewer"><path d="M19,3A2,2 0 0,1 21,5V19C21,20.11 20.1,21 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M12,5A7,7 0 0,0 5,12A7,7 0 0,0 12,19A7,7 0 0,0 19,12A7,7 0 0,0 12,5M7,12L10,9V11H14V9L17,12L14,15V13H10V15L7,12Z" /></g><g id="telegram"><path d="M9.78,18.65L10.06,14.42L17.74,7.5C18.08,7.19 17.67,7.04 17.22,7.31L7.74,13.3L3.64,12C2.76,11.75 2.75,11.14 3.84,10.7L19.81,4.54C20.54,4.21 21.24,4.72 20.96,5.84L18.24,18.65C18.05,19.56 17.5,19.78 16.74,19.36L12.6,16.3L10.61,18.23C10.38,18.46 10.19,18.65 9.78,18.65Z" /></g><g id="television"><path d="M20,17H4V5H20M20,3H4C2.89,3 2,3.89 2,5V17A2,2 0 0,0 4,19H8V21H16V19H20A2,2 0 0,0 22,17V5C22,3.89 21.1,3 20,3Z" /></g><g id="television-guide"><path d="M21,17V5H3V17H21M21,3A2,2 0 0,1 23,5V17A2,2 0 0,1 21,19H16V21H8V19H3A2,2 0 0,1 1,17V5A2,2 0 0,1 3,3H21M5,7H11V11H5V7M5,13H11V15H5V13M13,7H19V9H13V7M13,11H19V15H13V11Z" /></g><g id="temperature-celsius"><path d="M16.5,5C18.05,5 19.5,5.47 20.69,6.28L19.53,9.17C18.73,8.44 17.67,8 16.5,8C14,8 12,10 12,12.5C12,15 14,17 16.5,17C17.53,17 18.47,16.66 19.23,16.08L20.37,18.93C19.24,19.61 17.92,20 16.5,20A7.5,7.5 0 0,1 9,12.5A7.5,7.5 0 0,1 16.5,5M6,3A3,3 0 0,1 9,6A3,3 0 0,1 6,9A3,3 0 0,1 3,6A3,3 0 0,1 6,3M6,5A1,1 0 0,0 5,6A1,1 0 0,0 6,7A1,1 0 0,0 7,6A1,1 0 0,0 6,5Z" /></g><g id="temperature-fahrenheit"><path d="M11,20V5H20V8H14V11H19V14H14V20H11M6,3A3,3 0 0,1 9,6A3,3 0 0,1 6,9A3,3 0 0,1 3,6A3,3 0 0,1 6,3M6,5A1,1 0 0,0 5,6A1,1 0 0,0 6,7A1,1 0 0,0 7,6A1,1 0 0,0 6,5Z" /></g><g id="temperature-kelvin"><path d="M7,5H10V11L15,5H19L13.88,10.78L19,20H15.38L11.76,13.17L10,15.15V20H7V5Z" /></g><g id="tennis"><path d="M12,2C14.5,2 16.75,2.9 18.5,4.4C16.36,6.23 15,8.96 15,12C15,15.04 16.36,17.77 18.5,19.6C16.75,21.1 14.5,22 12,22C9.5,22 7.25,21.1 5.5,19.6C7.64,17.77 9,15.04 9,12C9,8.96 7.64,6.23 5.5,4.4C7.25,2.9 9.5,2 12,2M22,12C22,14.32 21.21,16.45 19.88,18.15C18.12,16.68 17,14.47 17,12C17,9.53 18.12,7.32 19.88,5.85C21.21,7.55 22,9.68 22,12M2,12C2,9.68 2.79,7.55 4.12,5.85C5.88,7.32 7,9.53 7,12C7,14.47 5.88,16.68 4.12,18.15C2.79,16.45 2,14.32 2,12Z" /></g><g id="tent"><path d="M4,6C4,7.19 4.39,8.27 5,9A3,3 0 0,1 2,6A3,3 0 0,1 5,3C4.39,3.73 4,4.81 4,6M2,21V19H4.76L12,4.78L19.24,19H22V21H2M12,9.19L7,19H17L12,9.19Z" /></g><g id="terrain"><path d="M14,6L10.25,11L13.1,14.8L11.5,16C9.81,13.75 7,10 7,10L1,18H23L14,6Z" /></g><g id="test-tube"><path d="M7,2V4H8V18A4,4 0 0,0 12,22A4,4 0 0,0 16,18V4H17V2H7M11,16C10.4,16 10,15.6 10,15C10,14.4 10.4,14 11,14C11.6,14 12,14.4 12,15C12,15.6 11.6,16 11,16M13,12C12.4,12 12,11.6 12,11C12,10.4 12.4,10 13,10C13.6,10 14,10.4 14,11C14,11.6 13.6,12 13,12M14,7H10V4H14V7Z" /></g><g id="text-shadow"><path d="M3,3H16V6H11V18H8V6H3V3M12,7H14V9H12V7M15,7H17V9H15V7M18,7H20V9H18V7M12,10H14V12H12V10M12,13H14V15H12V13M12,16H14V18H12V16M12,19H14V21H12V19Z" /></g><g id="text-to-speech"><path d="M8,7A2,2 0 0,1 10,9V14A2,2 0 0,1 8,16A2,2 0 0,1 6,14V9A2,2 0 0,1 8,7M14,14C14,16.97 11.84,19.44 9,19.92V22H7V19.92C4.16,19.44 2,16.97 2,14H4A4,4 0 0,0 8,18A4,4 0 0,0 12,14H14M21.41,9.41L17.17,13.66L18.18,10H14A2,2 0 0,1 12,8V4A2,2 0 0,1 14,2H20A2,2 0 0,1 22,4V8C22,8.55 21.78,9.05 21.41,9.41Z" /></g><g id="text-to-speech-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L13.38,16.65C12.55,18.35 10.93,19.59 9,19.92V22H7V19.92C4.16,19.44 2,16.97 2,14H4A4,4 0 0,0 8,18C9.82,18 11.36,16.78 11.84,15.11L10,13.27V14A2,2 0 0,1 8,16A2,2 0 0,1 6,14V9.27L2,5.27M21.41,9.41L17.17,13.66L18.18,10H14A2,2 0 0,1 12,8V4A2,2 0 0,1 14,2H20A2,2 0 0,1 22,4V8C22,8.55 21.78,9.05 21.41,9.41Z" /></g><g id="textbox"><path d="M17,7H22V17H17V19A1,1 0 0,0 18,20H20V22H17.5C16.95,22 16,21.55 16,21C16,21.55 15.05,22 14.5,22H12V20H14A1,1 0 0,0 15,19V5A1,1 0 0,0 14,4H12V2H14.5C15.05,2 16,2.45 16,3C16,2.45 16.95,2 17.5,2H20V4H18A1,1 0 0,0 17,5V7M2,7H13V9H4V15H13V17H2V7M20,15V9H17V15H20Z" /></g><g id="texture"><path d="M9.29,21H12.12L21,12.12V9.29M19,21C19.55,21 20.05,20.78 20.41,20.41C20.78,20.05 21,19.55 21,19V17L17,21M5,3A2,2 0 0,0 3,5V7L7,3M11.88,3L3,11.88V14.71L14.71,3M19.5,3.08L3.08,19.5C3.17,19.85 3.35,20.16 3.59,20.41C3.84,20.65 4.15,20.83 4.5,20.92L20.93,4.5C20.74,3.8 20.2,3.26 19.5,3.08Z" /></g><g id="theater"><path d="M4,15H6A2,2 0 0,1 8,17V19H9V17A2,2 0 0,1 11,15H13A2,2 0 0,1 15,17V19H16V17A2,2 0 0,1 18,15H20A2,2 0 0,1 22,17V19H23V22H1V19H2V17A2,2 0 0,1 4,15M11,7L15,10L11,13V7M4,2H20A2,2 0 0,1 22,4V13.54C21.41,13.19 20.73,13 20,13V4H4V13C3.27,13 2.59,13.19 2,13.54V4A2,2 0 0,1 4,2Z" /></g><g id="theme-light-dark"><path d="M7.5,2C5.71,3.15 4.5,5.18 4.5,7.5C4.5,9.82 5.71,11.85 7.53,13C4.46,13 2,10.54 2,7.5A5.5,5.5 0 0,1 7.5,2M19.07,3.5L20.5,4.93L4.93,20.5L3.5,19.07L19.07,3.5M12.89,5.93L11.41,5L9.97,6L10.39,4.3L9,3.24L10.75,3.12L11.33,1.47L12,3.1L13.73,3.13L12.38,4.26L12.89,5.93M9.59,9.54L8.43,8.81L7.31,9.59L7.65,8.27L6.56,7.44L7.92,7.35L8.37,6.06L8.88,7.33L10.24,7.36L9.19,8.23L9.59,9.54M19,13.5A5.5,5.5 0 0,1 13.5,19C12.28,19 11.15,18.6 10.24,17.93L17.93,10.24C18.6,11.15 19,12.28 19,13.5M14.6,20.08L17.37,18.93L17.13,22.28L14.6,20.08M18.93,17.38L20.08,14.61L22.28,17.15L18.93,17.38M20.08,12.42L18.94,9.64L22.28,9.88L20.08,12.42M9.63,18.93L12.4,20.08L9.87,22.27L9.63,18.93Z" /></g><g id="thermometer"><path d="M17,17A5,5 0 0,1 12,22A5,5 0 0,1 7,17C7,15.36 7.79,13.91 9,13V5A3,3 0 0,1 12,2A3,3 0 0,1 15,5V13C16.21,13.91 17,15.36 17,17M11,8V14.17C9.83,14.58 9,15.69 9,17A3,3 0 0,0 12,20A3,3 0 0,0 15,17C15,15.69 14.17,14.58 13,14.17V8H11Z" /></g><g id="thermometer-lines"><path d="M17,3H21V5H17V3M17,7H21V9H17V7M17,11H21V13H17.75L17,12.1V11M21,15V17H19C19,16.31 18.9,15.63 18.71,15H21M17,17A5,5 0 0,1 12,22A5,5 0 0,1 7,17C7,15.36 7.79,13.91 9,13V5A3,3 0 0,1 12,2A3,3 0 0,1 15,5V13C16.21,13.91 17,15.36 17,17M11,8V14.17C9.83,14.58 9,15.69 9,17A3,3 0 0,0 12,20A3,3 0 0,0 15,17C15,15.69 14.17,14.58 13,14.17V8H11M7,3V5H3V3H7M7,7V9H3V7H7M7,11V12.1L6.25,13H3V11H7M3,15H5.29C5.1,15.63 5,16.31 5,17H3V15Z" /></g><g id="thumb-down"><path d="M19,15H23V3H19M15,3H6C5.17,3 4.46,3.5 4.16,4.22L1.14,11.27C1.05,11.5 1,11.74 1,12V13.91L1,14A2,2 0 0,0 3,16H9.31L8.36,20.57C8.34,20.67 8.33,20.77 8.33,20.88C8.33,21.3 8.5,21.67 8.77,21.94L9.83,23L16.41,16.41C16.78,16.05 17,15.55 17,15V5C17,3.89 16.1,3 15,3Z" /></g><g id="thumb-down-outline"><path d="M19,15V3H23V15H19M15,3A2,2 0 0,1 17,5V15C17,15.55 16.78,16.05 16.41,16.41L9.83,23L8.77,21.94C8.5,21.67 8.33,21.3 8.33,20.88L8.36,20.57L9.31,16H3C1.89,16 1,15.1 1,14V13.91L1,12C1,11.74 1.05,11.5 1.14,11.27L4.16,4.22C4.46,3.5 5.17,3 6,3H15M15,5H5.97L3,12V14H11.78L10.65,19.32L15,14.97V5Z" /></g><g id="thumb-up"><path d="M23,10C23,8.89 22.1,8 21,8H14.68L15.64,3.43C15.66,3.33 15.67,3.22 15.67,3.11C15.67,2.7 15.5,2.32 15.23,2.05L14.17,1L7.59,7.58C7.22,7.95 7,8.45 7,9V19A2,2 0 0,0 9,21H18C18.83,21 19.54,20.5 19.84,19.78L22.86,12.73C22.95,12.5 23,12.26 23,12V10.08L23,10M1,21H5V9H1V21Z" /></g><g id="thumb-up-outline"><path d="M5,9V21H1V9H5M9,21A2,2 0 0,1 7,19V9C7,8.45 7.22,7.95 7.59,7.59L14.17,1L15.23,2.06C15.5,2.33 15.67,2.7 15.67,3.11L15.64,3.43L14.69,8H21C22.11,8 23,8.9 23,10V10.09L23,12C23,12.26 22.95,12.5 22.86,12.73L19.84,19.78C19.54,20.5 18.83,21 18,21H9M9,19H18.03L21,12V10H12.21L13.34,4.68L9,9.03V19Z" /></g><g id="thumbs-up-down"><path d="M22.5,10.5H15.75C15.13,10.5 14.6,10.88 14.37,11.41L12.11,16.7C12.04,16.87 12,17.06 12,17.25V18.5A1,1 0 0,0 13,19.5H18.18L17.5,22.68V22.92C17.5,23.23 17.63,23.5 17.83,23.72L18.62,24.5L23.56,19.56C23.83,19.29 24,18.91 24,18.5V12A1.5,1.5 0 0,0 22.5,10.5M12,6.5A1,1 0 0,0 11,5.5H5.82L6.5,2.32V2.09C6.5,1.78 6.37,1.5 6.17,1.29L5.38,0.5L0.44,5.44C0.17,5.71 0,6.09 0,6.5V13A1.5,1.5 0 0,0 1.5,14.5H8.25C8.87,14.5 9.4,14.12 9.63,13.59L11.89,8.3C11.96,8.13 12,7.94 12,7.75V6.5Z" /></g><g id="ticket"><path d="M15.58,16.8L12,14.5L8.42,16.8L9.5,12.68L6.21,10L10.46,9.74L12,5.8L13.54,9.74L17.79,10L14.5,12.68M20,12C20,10.89 20.9,10 22,10V6C22,4.89 21.1,4 20,4H4A2,2 0 0,0 2,6V10C3.11,10 4,10.9 4,12A2,2 0 0,1 2,14V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V14A2,2 0 0,1 20,12Z" /></g><g id="ticket-account"><path d="M20,12A2,2 0 0,0 22,14V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V14C3.11,14 4,13.1 4,12A2,2 0 0,0 2,10V6C2,4.89 2.9,4 4,4H20A2,2 0 0,1 22,6V10A2,2 0 0,0 20,12M16.5,16.25C16.5,14.75 13.5,14 12,14C10.5,14 7.5,14.75 7.5,16.25V17H16.5V16.25M12,12.25A2.25,2.25 0 0,0 14.25,10A2.25,2.25 0 0,0 12,7.75A2.25,2.25 0 0,0 9.75,10A2.25,2.25 0 0,0 12,12.25Z" /></g><g id="ticket-confirmation"><path d="M13,8.5H11V6.5H13V8.5M13,13H11V11H13V13M13,17.5H11V15.5H13V17.5M22,10V6C22,4.89 21.1,4 20,4H4A2,2 0 0,0 2,6V10C3.11,10 4,10.9 4,12A2,2 0 0,1 2,14V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V14A2,2 0 0,1 20,12A2,2 0 0,1 22,10Z" /></g><g id="ticket-percent"><path d="M4,4A2,2 0 0,0 2,6V10C3.11,10 4,10.9 4,12A2,2 0 0,1 2,14V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V14A2,2 0 0,1 20,12C20,10.89 20.9,10 22,10V6C22,4.89 21.1,4 20,4H4M15.5,7L17,8.5L8.5,17L7,15.5L15.5,7M8.81,7.04C9.79,7.04 10.58,7.83 10.58,8.81A1.77,1.77 0 0,1 8.81,10.58C7.83,10.58 7.04,9.79 7.04,8.81A1.77,1.77 0 0,1 8.81,7.04M15.19,13.42C16.17,13.42 16.96,14.21 16.96,15.19A1.77,1.77 0 0,1 15.19,16.96C14.21,16.96 13.42,16.17 13.42,15.19A1.77,1.77 0 0,1 15.19,13.42Z" /></g><g id="tie"><path d="M6,2L10,6L7,17L12,22L17,17L14,6L18,2Z" /></g><g id="tilde"><path d="M2,15C2,15 2,9 8,9C12,9 12.5,12.5 15.5,12.5C19.5,12.5 19.5,9 19.5,9H22C22,9 22,15 16,15C12,15 10.5,11.5 8.5,11.5C4.5,11.5 4.5,15 4.5,15H2" /></g><g id="timelapse"><path d="M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M16.24,7.76C15.07,6.58 13.53,6 12,6V12L7.76,16.24C10.1,18.58 13.9,18.58 16.24,16.24C18.59,13.9 18.59,10.1 16.24,7.76Z" /></g><g id="timer"><path d="M12,20A7,7 0 0,1 5,13A7,7 0 0,1 12,6A7,7 0 0,1 19,13A7,7 0 0,1 12,20M19.03,7.39L20.45,5.97C20,5.46 19.55,5 19.04,4.56L17.62,6C16.07,4.74 14.12,4 12,4A9,9 0 0,0 3,13A9,9 0 0,0 12,22C17,22 21,17.97 21,13C21,10.88 20.26,8.93 19.03,7.39M11,14H13V8H11M15,1H9V3H15V1Z" /></g><g id="timer-10"><path d="M12.9,13.22C12.9,13.82 12.86,14.33 12.78,14.75C12.7,15.17 12.58,15.5 12.42,15.77C12.26,16.03 12.06,16.22 11.83,16.34C11.6,16.46 11.32,16.5 11,16.5C10.71,16.5 10.43,16.46 10.19,16.34C9.95,16.22 9.75,16.03 9.59,15.77C9.43,15.5 9.3,15.17 9.21,14.75C9.12,14.33 9.08,13.82 9.08,13.22V10.72C9.08,10.12 9.12,9.61 9.21,9.2C9.3,8.79 9.42,8.46 9.59,8.2C9.75,7.95 9.95,7.77 10.19,7.65C10.43,7.54 10.7,7.5 11,7.5C11.31,7.5 11.58,7.54 11.81,7.65C12.05,7.76 12.25,7.94 12.41,8.2C12.57,8.45 12.7,8.78 12.78,9.19C12.86,9.6 12.91,10.11 12.91,10.71V13.22M13.82,7.05C13.5,6.65 13.07,6.35 12.59,6.17C12.12,6 11.58,5.9 11,5.9C10.42,5.9 9.89,6 9.41,6.17C8.93,6.35 8.5,6.64 8.18,7.05C7.84,7.46 7.58,8 7.39,8.64C7.21,9.29 7.11,10.09 7.11,11.03V12.95C7.11,13.89 7.2,14.69 7.39,15.34C7.58,16 7.84,16.53 8.19,16.94C8.53,17.35 8.94,17.65 9.42,17.83C9.9,18 10.43,18.11 11,18.11C11.6,18.11 12.13,18 12.6,17.83C13.08,17.65 13.5,17.35 13.82,16.94C14.16,16.53 14.42,16 14.6,15.34C14.78,14.69 14.88,13.89 14.88,12.95V11.03C14.88,10.09 14.79,9.29 14.6,8.64C14.42,8 14.16,7.45 13.82,7.05M23.78,14.37C23.64,14.09 23.43,13.84 23.15,13.63C22.87,13.42 22.54,13.24 22.14,13.1C21.74,12.96 21.29,12.83 20.79,12.72C20.44,12.65 20.15,12.57 19.92,12.5C19.69,12.41 19.5,12.33 19.37,12.24C19.23,12.15 19.14,12.05 19.09,11.94C19.04,11.83 19,11.7 19,11.55C19,11.41 19.04,11.27 19.1,11.14C19.16,11 19.25,10.89 19.37,10.8C19.5,10.7 19.64,10.62 19.82,10.56C20,10.5 20.22,10.47 20.46,10.47C20.71,10.47 20.93,10.5 21.12,10.58C21.31,10.65 21.47,10.75 21.6,10.87C21.73,11 21.82,11.13 21.89,11.29C21.95,11.45 22,11.61 22,11.78H23.94C23.94,11.39 23.86,11.03 23.7,10.69C23.54,10.35 23.31,10.06 23,9.81C22.71,9.56 22.35,9.37 21.92,9.22C21.5,9.07 21,9 20.46,9C19.95,9 19.5,9.07 19.07,9.21C18.66,9.35 18.3,9.54 18,9.78C17.72,10 17.5,10.3 17.34,10.62C17.18,10.94 17.11,11.27 17.11,11.63C17.11,12 17.19,12.32 17.34,12.59C17.5,12.87 17.7,13.11 18,13.32C18.25,13.53 18.58,13.7 18.96,13.85C19.34,14 19.77,14.11 20.23,14.21C20.62,14.29 20.94,14.38 21.18,14.47C21.42,14.56 21.61,14.66 21.75,14.76C21.88,14.86 21.97,15 22,15.1C22.07,15.22 22.09,15.35 22.09,15.5C22.09,15.81 21.96,16.06 21.69,16.26C21.42,16.46 21.03,16.55 20.5,16.55C20.3,16.55 20.09,16.53 19.88,16.47C19.67,16.42 19.5,16.34 19.32,16.23C19.15,16.12 19,15.97 18.91,15.79C18.8,15.61 18.74,15.38 18.73,15.12H16.84C16.84,15.5 16.92,15.83 17.08,16.17C17.24,16.5 17.47,16.82 17.78,17.1C18.09,17.37 18.47,17.59 18.93,17.76C19.39,17.93 19.91,18 20.5,18C21.04,18 21.5,17.95 21.95,17.82C22.38,17.69 22.75,17.5 23.06,17.28C23.37,17.05 23.6,16.77 23.77,16.45C23.94,16.13 24,15.78 24,15.39C24,15 23.93,14.65 23.78,14.37M0,7.72V9.4L3,8.4V18H5V6H4.75L0,7.72Z" /></g><g id="timer-3"><path d="M20.87,14.37C20.73,14.09 20.5,13.84 20.24,13.63C19.96,13.42 19.63,13.24 19.23,13.1C18.83,12.96 18.38,12.83 17.88,12.72C17.53,12.65 17.24,12.57 17,12.5C16.78,12.41 16.6,12.33 16.46,12.24C16.32,12.15 16.23,12.05 16.18,11.94C16.13,11.83 16.1,11.7 16.1,11.55C16.1,11.4 16.13,11.27 16.19,11.14C16.25,11 16.34,10.89 16.46,10.8C16.58,10.7 16.73,10.62 16.91,10.56C17.09,10.5 17.31,10.47 17.55,10.47C17.8,10.47 18,10.5 18.21,10.58C18.4,10.65 18.56,10.75 18.69,10.87C18.82,11 18.91,11.13 19,11.29C19.04,11.45 19.08,11.61 19.08,11.78H21.03C21.03,11.39 20.95,11.03 20.79,10.69C20.63,10.35 20.4,10.06 20.1,9.81C19.8,9.56 19.44,9.37 19,9.22C18.58,9.07 18.09,9 17.55,9C17.04,9 16.57,9.07 16.16,9.21C15.75,9.35 15.39,9.54 15.1,9.78C14.81,10 14.59,10.3 14.43,10.62C14.27,10.94 14.2,11.27 14.2,11.63C14.2,12 14.28,12.31 14.43,12.59C14.58,12.87 14.8,13.11 15.07,13.32C15.34,13.53 15.67,13.7 16.05,13.85C16.43,14 16.86,14.11 17.32,14.21C17.71,14.29 18.03,14.38 18.27,14.47C18.5,14.56 18.7,14.66 18.84,14.76C18.97,14.86 19.06,15 19.11,15.1C19.16,15.22 19.18,15.35 19.18,15.5C19.18,15.81 19.05,16.06 18.78,16.26C18.5,16.46 18.12,16.55 17.61,16.55C17.39,16.55 17.18,16.53 16.97,16.47C16.76,16.42 16.57,16.34 16.41,16.23C16.24,16.12 16.11,15.97 16,15.79C15.89,15.61 15.83,15.38 15.82,15.12H13.93C13.93,15.5 14,15.83 14.17,16.17C14.33,16.5 14.56,16.82 14.87,17.1C15.18,17.37 15.56,17.59 16,17.76C16.5,17.93 17,18 17.6,18C18.13,18 18.61,17.95 19.04,17.82C19.47,17.69 19.84,17.5 20.15,17.28C20.46,17.05 20.69,16.77 20.86,16.45C21.03,16.13 21.11,15.78 21.11,15.39C21.09,15 21,14.65 20.87,14.37M11.61,12.97C11.45,12.73 11.25,12.5 11,12.32C10.74,12.13 10.43,11.97 10.06,11.84C10.36,11.7 10.63,11.54 10.86,11.34C11.09,11.14 11.28,10.93 11.43,10.7C11.58,10.47 11.7,10.24 11.77,10C11.85,9.75 11.88,9.5 11.88,9.26C11.88,8.71 11.79,8.22 11.6,7.8C11.42,7.38 11.16,7.03 10.82,6.74C10.5,6.46 10.09,6.24 9.62,6.1C9.17,5.97 8.65,5.9 8.09,5.9C7.54,5.9 7.03,6 6.57,6.14C6.1,6.31 5.7,6.54 5.37,6.83C5.04,7.12 4.77,7.46 4.59,7.86C4.39,8.25 4.3,8.69 4.3,9.15H6.28C6.28,8.89 6.33,8.66 6.42,8.46C6.5,8.26 6.64,8.08 6.8,7.94C6.97,7.8 7.16,7.69 7.38,7.61C7.6,7.53 7.84,7.5 8.11,7.5C8.72,7.5 9.17,7.65 9.47,7.96C9.77,8.27 9.91,8.71 9.91,9.28C9.91,9.55 9.87,9.8 9.79,10C9.71,10.24 9.58,10.43 9.41,10.59C9.24,10.75 9.03,10.87 8.78,10.96C8.53,11.05 8.23,11.09 7.89,11.09H6.72V12.66H7.9C8.24,12.66 8.54,12.7 8.81,12.77C9.08,12.85 9.31,12.96 9.5,13.12C9.69,13.28 9.84,13.5 9.94,13.73C10.04,13.97 10.1,14.27 10.1,14.6C10.1,15.22 9.92,15.69 9.57,16C9.22,16.35 8.73,16.5 8.12,16.5C7.83,16.5 7.56,16.47 7.32,16.38C7.08,16.3 6.88,16.18 6.71,16C6.54,15.86 6.41,15.68 6.32,15.46C6.23,15.24 6.18,15 6.18,14.74H4.19C4.19,15.29 4.3,15.77 4.5,16.19C4.72,16.61 5,16.96 5.37,17.24C5.73,17.5 6.14,17.73 6.61,17.87C7.08,18 7.57,18.08 8.09,18.08C8.66,18.08 9.18,18 9.67,17.85C10.16,17.7 10.58,17.47 10.93,17.17C11.29,16.87 11.57,16.5 11.77,16.07C11.97,15.64 12.07,15.14 12.07,14.59C12.07,14.3 12.03,14 11.96,13.73C11.88,13.5 11.77,13.22 11.61,12.97Z" /></g><g id="timer-off"><path d="M12,20A7,7 0 0,1 5,13C5,11.72 5.35,10.5 5.95,9.5L15.5,19.04C14.5,19.65 13.28,20 12,20M3,4L1.75,5.27L4.5,8.03C3.55,9.45 3,11.16 3,13A9,9 0 0,0 12,22C13.84,22 15.55,21.45 17,20.5L19.5,23L20.75,21.73L13.04,14L3,4M11,9.44L13,11.44V8H11M15,1H9V3H15M19.04,4.55L17.62,5.97C16.07,4.74 14.12,4 12,4C10.17,4 8.47,4.55 7.05,5.5L8.5,6.94C9.53,6.35 10.73,6 12,6A7,7 0 0,1 19,13C19,14.27 18.65,15.47 18.06,16.5L19.5,17.94C20.45,16.53 21,14.83 21,13C21,10.88 20.26,8.93 19.03,7.39L20.45,5.97L19.04,4.55Z" /></g><g id="timer-sand"><path d="M20,2V4H18V8.41L14.41,12L18,15.59V20H20V22H4V20H6V15.59L9.59,12L6,8.41V4H4V2H20M16,16.41L13,13.41V10.59L16,7.59V4H8V7.59L11,10.59V13.41L8,16.41V17H10L12,15L14,17H16V16.41M12,9L10,7H14L12,9Z" /></g><g id="timer-sand-empty"><path d="M20,2V4H18V8.41L14.41,12L18,15.59V20H20V22H4V20H6V15.59L9.59,12L6,8.41V4H4V2H20M16,16.41L13,13.41V10.59L16,7.59V4H8V7.59L11,10.59V13.41L8,16.41V20H16V16.41Z" /></g><g id="timetable"><path d="M14,12H15.5V14.82L17.94,16.23L17.19,17.53L14,15.69V12M4,2H18A2,2 0 0,1 20,4V10.1C21.24,11.36 22,13.09 22,15A7,7 0 0,1 15,22C13.09,22 11.36,21.24 10.1,20H4A2,2 0 0,1 2,18V4A2,2 0 0,1 4,2M4,15V18H8.67C8.24,17.09 8,16.07 8,15H4M4,8H10V5H4V8M18,8V5H12V8H18M4,13H8.29C8.63,11.85 9.26,10.82 10.1,10H4V13M15,10.15A4.85,4.85 0 0,0 10.15,15C10.15,17.68 12.32,19.85 15,19.85A4.85,4.85 0 0,0 19.85,15C19.85,12.32 17.68,10.15 15,10.15Z" /></g><g id="toggle-switch"><path d="M17,7A5,5 0 0,1 22,12A5,5 0 0,1 17,17A5,5 0 0,1 12,12A5,5 0 0,1 17,7M4,14A2,2 0 0,1 2,12A2,2 0 0,1 4,10H10V14H4Z" /></g><g id="toggle-switch-off"><path d="M7,7A5,5 0 0,1 12,12A5,5 0 0,1 7,17A5,5 0 0,1 2,12A5,5 0 0,1 7,7M20,14H14V10H20A2,2 0 0,1 22,12A2,2 0 0,1 20,14M7,9A3,3 0 0,0 4,12A3,3 0 0,0 7,15A3,3 0 0,0 10,12A3,3 0 0,0 7,9Z" /></g><g id="tooltip"><path d="M4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H16L12,22L8,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2Z" /></g><g id="tooltip-edit"><path d="M4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H16L12,22L8,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2M18,14V12H12.5L10.5,14H18M6,14H8.5L15.35,7.12C15.55,6.93 15.55,6.61 15.35,6.41L13.59,4.65C13.39,4.45 13.07,4.45 12.88,4.65L6,11.53V14Z" /></g><g id="tooltip-image"><path d="M4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H16L12,22L8,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2M19,15V7L15,11L13,9L7,15H19M7,5A2,2 0 0,0 5,7A2,2 0 0,0 7,9A2,2 0 0,0 9,7A2,2 0 0,0 7,5Z" /></g><g id="tooltip-outline"><path d="M4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H16L12,22L8,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2M4,4V16H8.83L12,19.17L15.17,16H20V4H4Z" /></g><g id="tooltip-outline-plus"><path d="M4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H16L12,22L8,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2M4,4V16H8.83L12,19.17L15.17,16H20V4H4M11,6H13V9H16V11H13V14H11V11H8V9H11V6Z" /></g><g id="tooltip-text"><path d="M4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H16L12,22L8,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2M5,5V7H19V5H5M5,9V11H15V9H5M5,13V15H17V13H5Z" /></g><g id="tooth"><path d="M7,2C4,2 2,5 2,8C2,10.11 3,13 4,14C5,15 6,22 8,22C12.54,22 10,15 12,15C14,15 11.46,22 16,22C18,22 19,15 20,14C21,13 22,10.11 22,8C22,5 20,2 17,2C14,2 14,3 12,3C10,3 10,2 7,2M7,4C9,4 10,5 12,5C14,5 15,4 17,4C18.67,4 20,6 20,8C20,9.75 19.14,12.11 18.19,13.06C17.33,13.92 16.06,19.94 15.5,19.94C15.29,19.94 15,18.88 15,17.59C15,15.55 14.43,13 12,13C9.57,13 9,15.55 9,17.59C9,18.88 8.71,19.94 8.5,19.94C7.94,19.94 6.67,13.92 5.81,13.06C4.86,12.11 4,9.75 4,8C4,6 5.33,4 7,4Z" /></g><g id="tor"><path d="M12,14C11,14 9,15 9,16C9,18 12,18 12,18V17A1,1 0 0,1 11,16A1,1 0 0,1 12,15V14M12,19C12,19 8,18.5 8,16.5C8,13.5 11,12.75 12,12.75V11.5C11,11.5 7,13 7,16C7,20 12,20 12,20V19M10.07,7.03L11.26,7.56C11.69,5.12 12.84,3.5 12.84,3.5C12.41,4.53 12.13,5.38 11.95,6.05C13.16,3.55 15.61,2 15.61,2C14.43,3.18 13.56,4.46 12.97,5.53C14.55,3.85 16.74,2.75 16.74,2.75C14.05,4.47 12.84,7.2 12.54,7.96L13.09,8.04C13.09,8.56 13.09,9.04 13.34,9.42C14.1,11.31 18,11.47 18,16C18,20.53 13.97,22 11.83,22C9.69,22 5,21.03 5,16C5,10.97 9.95,10.93 10.83,8.92C10.95,8.54 10.07,7.03 10.07,7.03Z" /></g><g id="tower-beach"><path d="M17,4V8H18V10H17.64L21,23H18.93L18.37,20.83L12,17.15L5.63,20.83L5.07,23H3L6.36,10H6V8H7V4H6V3L18,1V4H17M7.28,14.43L6.33,18.12L10,16L7.28,14.43M15.57,10H8.43L7.8,12.42L12,14.85L16.2,12.42L15.57,10M17.67,18.12L16.72,14.43L14,16L17.67,18.12Z" /></g><g id="tower-fire"><path d="M17,4V8H18V10H17.64L21,23H18.93L18.37,20.83L12,17.15L5.63,20.83L5.07,23H3L6.36,10H6V8H7V4H6V3L12,1L18,3V4H17M7.28,14.43L6.33,18.12L10,16L7.28,14.43M15.57,10H8.43L7.8,12.42L12,14.85L16.2,12.42L15.57,10M17.67,18.12L16.72,14.43L14,16L17.67,18.12Z" /></g><g id="traffic-light"><path d="M12,9A2,2 0 0,1 10,7C10,5.89 10.9,5 12,5C13.11,5 14,5.89 14,7A2,2 0 0,1 12,9M12,14A2,2 0 0,1 10,12C10,10.89 10.9,10 12,10C13.11,10 14,10.89 14,12A2,2 0 0,1 12,14M12,19A2,2 0 0,1 10,17C10,15.89 10.9,15 12,15C13.11,15 14,15.89 14,17A2,2 0 0,1 12,19M20,10H17V8.86C18.72,8.41 20,6.86 20,5H17V4A1,1 0 0,0 16,3H8A1,1 0 0,0 7,4V5H4C4,6.86 5.28,8.41 7,8.86V10H4C4,11.86 5.28,13.41 7,13.86V15H4C4,16.86 5.28,18.41 7,18.86V20A1,1 0 0,0 8,21H16A1,1 0 0,0 17,20V18.86C18.72,18.41 20,16.86 20,15H17V13.86C18.72,13.41 20,11.86 20,10Z" /></g><g id="train"><path d="M18,10H6V5H18M12,17C10.89,17 10,16.1 10,15C10,13.89 10.89,13 12,13A2,2 0 0,1 14,15A2,2 0 0,1 12,17M4,15.5A3.5,3.5 0 0,0 7.5,19L6,20.5V21H18V20.5L16.5,19A3.5,3.5 0 0,0 20,15.5V5C20,1.5 16.42,1 12,1C7.58,1 4,1.5 4,5V15.5Z" /></g><g id="tram"><path d="M17,18C16.4,18 16,17.6 16,17C16,16.4 16.4,16 17,16C17.6,16 18,16.4 18,17C18,17.6 17.6,18 17,18M6.7,10.7L7,7.3C7,6.6 7.6,6 8.3,6H15.6C16.4,6 17,6.6 17,7.3L17.3,10.6C17.3,11.3 16.7,11.9 16,11.9H8C7.3,12 6.7,11.4 6.7,10.7M7,18C6.4,18 6,17.6 6,17C6,16.4 6.4,16 7,16C7.6,16 8,16.4 8,17C8,17.6 7.6,18 7,18M19,6A2,2 0 0,0 17,4H15A2,2 0 0,0 13,2H11A2,2 0 0,0 9,4H7A2,2 0 0,0 5,6L4,18A2,2 0 0,0 6,20H8L7,22H17.1L16.1,20H18A2,2 0 0,0 20,18L19,6Z" /></g><g id="transcribe"><path d="M20,5A2,2 0 0,1 22,7V17A2,2 0 0,1 20,19H4C2.89,19 2,18.1 2,17V7C2,5.89 2.89,5 4,5H20M18,17V15H12.5L10.5,17H18M6,17H8.5L15.35,10.12C15.55,9.93 15.55,9.61 15.35,9.41L13.59,7.65C13.39,7.45 13.07,7.45 12.88,7.65L6,14.53V17Z" /></g><g id="transcribe-close"><path d="M12,23L8,19H16L12,23M20,3A2,2 0 0,1 22,5V15A2,2 0 0,1 20,17H4A2,2 0 0,1 2,15V5A2,2 0 0,1 4,3H20M18,15V13H12.5L10.5,15H18M6,15H8.5L15.35,8.12C15.55,7.93 15.55,7.61 15.35,7.42L13.59,5.65C13.39,5.45 13.07,5.45 12.88,5.65L6,12.53V15Z" /></g><g id="transfer"><path d="M3,8H5V16H3V8M7,8H9V16H7V8M11,8H13V16H11V8M15,19.25V4.75L22.25,12L15,19.25Z" /></g><g id="transit-transfer"><path d="M16.5,15.5H22V17H16.5V18.75L14,16.25L16.5,13.75V15.5M19.5,19.75V18L22,20.5L19.5,23V21.25H14V19.75H19.5M9.5,5.5A2,2 0 0,1 7.5,3.5A2,2 0 0,1 9.5,1.5A2,2 0 0,1 11.5,3.5A2,2 0 0,1 9.5,5.5M5.75,8.9L4,9.65V13H2V8.3L7.25,6.15C7.5,6.05 7.75,6 8,6C8.7,6 9.35,6.35 9.7,6.95L10.65,8.55C11.55,10 13.15,11 15,11V13C12.8,13 10.85,12 9.55,10.4L8.95,13.4L11,15.45V23H9V17L6.85,15L5.1,23H3L5.75,8.9Z" /></g><g id="translate"><path d="M12.87,15.07L10.33,12.56L10.36,12.53C12.1,10.59 13.34,8.36 14.07,6H17V4H10V2H8V4H1V6H12.17C11.5,7.92 10.44,9.75 9,11.35C8.07,10.32 7.3,9.19 6.69,8H4.69C5.42,9.63 6.42,11.17 7.67,12.56L2.58,17.58L4,19L9,14L12.11,17.11L12.87,15.07M18.5,10H16.5L12,22H14L15.12,19H19.87L21,22H23L18.5,10M15.88,17L17.5,12.67L19.12,17H15.88Z" /></g><g id="treasure-chest"><path d="M5,4H19A3,3 0 0,1 22,7V11H15V10H9V11H2V7A3,3 0 0,1 5,4M11,11H13V13H11V11M2,12H9V13L11,15H13L15,13V12H22V20H2V12Z" /></g><g id="tree"><path d="M11,21V16.74C10.53,16.91 10.03,17 9.5,17C7,17 5,15 5,12.5C5,11.23 5.5,10.09 6.36,9.27C6.13,8.73 6,8.13 6,7.5C6,5 8,3 10.5,3C12.06,3 13.44,3.8 14.25,5C14.33,5 14.41,5 14.5,5A5.5,5.5 0 0,1 20,10.5A5.5,5.5 0 0,1 14.5,16C14,16 13.5,15.93 13,15.79V21H11Z" /></g><g id="trello"><path d="M4,3H20A1,1 0 0,1 21,4V20A1,1 0 0,1 20,21H4A1,1 0 0,1 3,20V4A1,1 0 0,1 4,3M5.5,5A0.5,0.5 0 0,0 5,5.5V17.5A0.5,0.5 0 0,0 5.5,18H10.5A0.5,0.5 0 0,0 11,17.5V5.5A0.5,0.5 0 0,0 10.5,5H5.5M13.5,5A0.5,0.5 0 0,0 13,5.5V11.5A0.5,0.5 0 0,0 13.5,12H18.5A0.5,0.5 0 0,0 19,11.5V5.5A0.5,0.5 0 0,0 18.5,5H13.5Z" /></g><g id="trending-down"><path d="M16,18L18.29,15.71L13.41,10.83L9.41,14.83L2,7.41L3.41,6L9.41,12L13.41,8L19.71,14.29L22,12V18H16Z" /></g><g id="trending-neutral"><path d="M22,12L18,8V11H3V13H18V16L22,12Z" /></g><g id="trending-up"><path d="M16,6L18.29,8.29L13.41,13.17L9.41,9.17L2,16.59L3.41,18L9.41,12L13.41,16L19.71,9.71L22,12V6H16Z" /></g><g id="triangle"><path d="M1,21H23L12,2" /></g><g id="triangle-outline"><path d="M12,2L1,21H23M12,6L19.53,19H4.47" /></g><g id="trophy"><path d="M20.2,2H19.5H18C17.1,2 16,3 16,4H8C8,3 6.9,2 6,2H4.5H3.8H2V11C2,12 3,13 4,13H6.2C6.6,15 7.9,16.7 11,17V19.1C8.8,19.3 8,20.4 8,21.7V22H16V21.7C16,20.4 15.2,19.3 13,19.1V17C16.1,16.7 17.4,15 17.8,13H20C21,13 22,12 22,11V2H20.2M4,11V4H6V6V11C5.1,11 4.3,11 4,11M20,11C19.7,11 18.9,11 18,11V6V4H20V11Z" /></g><g id="trophy-award"><path d="M15.2,10.7L16.6,16L12,12.2L7.4,16L8.8,10.8L4.6,7.3L10,7L12,2L14,7L19.4,7.3L15.2,10.7M14,19.1H13V16L12,15L11,16V19.1H10A2,2 0 0,0 8,21.1V22.1H16V21.1A2,2 0 0,0 14,19.1Z" /></g><g id="trophy-outline"><path d="M2,2V11C2,12 3,13 4,13H6.2C6.6,15 7.9,16.7 11,17V19.1C8.8,19.3 8,20.4 8,21.7V22H16V21.7C16,20.4 15.2,19.3 13,19.1V17C16.1,16.7 17.4,15 17.8,13H20C21,13 22,12 22,11V2H18C17.1,2 16,3 16,4H8C8,3 6.9,2 6,2H2M4,4H6V6L6,11H4V4M18,4H20V11H18V6L18,4M8,6H16V11.5C16,13.43 15.42,15 12,15C8.59,15 8,13.43 8,11.5V6Z" /></g><g id="trophy-variant"><path d="M20.2,4H20H17V2H7V4H4.5H3.8H2V11C2,12 3,13 4,13H7.2C7.6,14.9 8.6,16.6 11,16.9V19C8,19.2 8,20.3 8,21.6V22H16V21.7C16,20.4 16,19.3 13,19.1V17C15.5,16.7 16.5,15 16.8,13.1H20C21,13.1 22,12.1 22,11.1V4H20.2M4,11V6H7V8V11C5.6,11 4.4,11 4,11M20,11C19.6,11 18.4,11 17,11V6H18H20V11Z" /></g><g id="trophy-variant-outline"><path d="M7,2V4H2V11C2,12 3,13 4,13H7.2C7.6,14.9 8.6,16.6 11,16.9V19C8,19.2 8,20.3 8,21.6V22H16V21.7C16,20.4 16,19.3 13,19.1V17C15.5,16.7 16.5,15 16.8,13.1H20C21,13.1 22,12.1 22,11.1V4H17V2H7M9,4H15V12A3,3 0 0,1 12,15C10,15 9,13.66 9,12V4M4,6H7V8L7,11H4V6M17,6H20V11H17V6Z" /></g><g id="truck"><path d="M18,18.5A1.5,1.5 0 0,1 16.5,17A1.5,1.5 0 0,1 18,15.5A1.5,1.5 0 0,1 19.5,17A1.5,1.5 0 0,1 18,18.5M19.5,9.5L21.46,12H17V9.5M6,18.5A1.5,1.5 0 0,1 4.5,17A1.5,1.5 0 0,1 6,15.5A1.5,1.5 0 0,1 7.5,17A1.5,1.5 0 0,1 6,18.5M20,8H17V4H3C1.89,4 1,4.89 1,6V17H3A3,3 0 0,0 6,20A3,3 0 0,0 9,17H15A3,3 0 0,0 18,20A3,3 0 0,0 21,17H23V12L20,8Z" /></g><g id="truck-delivery"><path d="M3,4A2,2 0 0,0 1,6V17H3A3,3 0 0,0 6,20A3,3 0 0,0 9,17H15A3,3 0 0,0 18,20A3,3 0 0,0 21,17H23V12L20,8H17V4M10,6L14,10L10,14V11H4V9H10M17,9.5H19.5L21.47,12H17M6,15.5A1.5,1.5 0 0,1 7.5,17A1.5,1.5 0 0,1 6,18.5A1.5,1.5 0 0,1 4.5,17A1.5,1.5 0 0,1 6,15.5M18,15.5A1.5,1.5 0 0,1 19.5,17A1.5,1.5 0 0,1 18,18.5A1.5,1.5 0 0,1 16.5,17A1.5,1.5 0 0,1 18,15.5Z" /></g><g id="truck-trailer"><path d="M22,15V17H10A3,3 0 0,1 7,20A3,3 0 0,1 4,17H2V6A2,2 0 0,1 4,4H17A2,2 0 0,1 19,6V15H22M7,16A1,1 0 0,0 6,17A1,1 0 0,0 7,18A1,1 0 0,0 8,17A1,1 0 0,0 7,16Z" /></g><g id="tshirt-crew"><path d="M16,21H8A1,1 0 0,1 7,20V12.07L5.7,13.12C5.31,13.5 4.68,13.5 4.29,13.12L1.46,10.29C1.07,9.9 1.07,9.27 1.46,8.88L7.34,3H9C9,4.1 10.34,5 12,5C13.66,5 15,4.1 15,3H16.66L22.54,8.88C22.93,9.27 22.93,9.9 22.54,10.29L19.71,13.12C19.32,13.5 18.69,13.5 18.3,13.12L17,12.07V20A1,1 0 0,1 16,21M20.42,9.58L16.11,5.28C15.8,5.63 15.43,5.94 15,6.2C14.16,6.7 13.13,7 12,7C10.3,7 8.79,6.32 7.89,5.28L3.58,9.58L5,11L8,9H9V19H15V9H16L19,11L20.42,9.58Z" /></g><g id="tshirt-v"><path d="M16,21H8A1,1 0 0,1 7,20V12.07L5.7,13.12C5.31,13.5 4.68,13.5 4.29,13.12L1.46,10.29C1.07,9.9 1.07,9.27 1.46,8.88L7.34,3H9C9,4.1 10,6 12,7.25C14,6 15,4.1 15,3H16.66L22.54,8.88C22.93,9.27 22.93,9.9 22.54,10.29L19.71,13.12C19.32,13.5 18.69,13.5 18.3,13.12L17,12.07V20A1,1 0 0,1 16,21M20.42,9.58L16.11,5.28C15,7 14,8.25 12,9.25C10,8.25 9,7 7.89,5.28L3.58,9.58L5,11L8,9H9V19H15V9H16L19,11L20.42,9.58Z" /></g><g id="tumblr"><path d="M16,11H13V14.9C13,15.63 13.14,16 14.1,16H16V19C16,19 14.97,19.1 13.9,19.1C11.25,19.1 10,17.5 10,15.7V11H8V8.2C10.41,8 10.62,6.16 10.8,5H13V8H16M20,2H4C2.89,2 2,2.89 2,4V20A2,2 0 0,0 4,22H20A2,2 0 0,0 22,20V4C22,2.89 21.1,2 20,2Z" /></g><g id="tumblr-reblog"><path d="M3.75,17L8,12.75V16H18V11.5L20,9.5V16A2,2 0 0,1 18,18H8V21.25L3.75,17M20.25,7L16,11.25V8H6V12.5L4,14.5V8A2,2 0 0,1 6,6H16V2.75L20.25,7Z" /></g><g id="tune"><path d="M3,17V19H9V17H3M3,5V7H13V5H3M13,21V19H21V17H13V15H11V21H13M7,9V11H3V13H7V15H9V9H7M21,13V11H11V13H21M15,9H17V7H21V5H17V3H15V9Z" /></g><g id="tune-vertical"><path d="M5,3V12H3V14H5V21H7V14H9V12H7V3M11,3V8H9V10H11V21H13V10H15V8H13V3M17,3V14H15V16H17V21H19V16H21V14H19V3" /></g><g id="twitch"><path d="M4,2H22V14L17,19H13L10,22H7V19H2V6L4,2M20,13V4H6V16H9V19L12,16H17L20,13M15,7H17V12H15V7M12,7V12H10V7H12Z" /></g><g id="twitter"><path d="M22.46,6C21.69,6.35 20.86,6.58 20,6.69C20.88,6.16 21.56,5.32 21.88,4.31C21.05,4.81 20.13,5.16 19.16,5.36C18.37,4.5 17.26,4 16,4C13.65,4 11.73,5.92 11.73,8.29C11.73,8.63 11.77,8.96 11.84,9.27C8.28,9.09 5.11,7.38 3,4.79C2.63,5.42 2.42,6.16 2.42,6.94C2.42,8.43 3.17,9.75 4.33,10.5C3.62,10.5 2.96,10.3 2.38,10C2.38,10 2.38,10 2.38,10.03C2.38,12.11 3.86,13.85 5.82,14.24C5.46,14.34 5.08,14.39 4.69,14.39C4.42,14.39 4.15,14.36 3.89,14.31C4.43,16 6,17.26 7.89,17.29C6.43,18.45 4.58,19.13 2.56,19.13C2.22,19.13 1.88,19.11 1.54,19.07C3.44,20.29 5.7,21 8.12,21C16,21 20.33,14.46 20.33,8.79C20.33,8.6 20.33,8.42 20.32,8.23C21.16,7.63 21.88,6.87 22.46,6Z" /></g><g id="twitter-box"><path d="M17.71,9.33C17.64,13.95 14.69,17.11 10.28,17.31C8.46,17.39 7.15,16.81 6,16.08C7.34,16.29 9,15.76 9.9,15C8.58,14.86 7.81,14.19 7.44,13.12C7.82,13.18 8.22,13.16 8.58,13.09C7.39,12.69 6.54,11.95 6.5,10.41C6.83,10.57 7.18,10.71 7.64,10.74C6.75,10.23 6.1,8.38 6.85,7.16C8.17,8.61 9.76,9.79 12.37,9.95C11.71,7.15 15.42,5.63 16.97,7.5C17.63,7.38 18.16,7.14 18.68,6.86C18.47,7.5 18.06,7.97 17.56,8.33C18.1,8.26 18.59,8.13 19,7.92C18.75,8.45 18.19,8.93 17.71,9.33M20,2H4A2,2 0 0,0 2,4V20A2,2 0 0,0 4,22H20A2,2 0 0,0 22,20V4C22,2.89 21.1,2 20,2Z" /></g><g id="twitter-circle"><path d="M17.71,9.33C18.19,8.93 18.75,8.45 19,7.92C18.59,8.13 18.1,8.26 17.56,8.33C18.06,7.97 18.47,7.5 18.68,6.86C18.16,7.14 17.63,7.38 16.97,7.5C15.42,5.63 11.71,7.15 12.37,9.95C9.76,9.79 8.17,8.61 6.85,7.16C6.1,8.38 6.75,10.23 7.64,10.74C7.18,10.71 6.83,10.57 6.5,10.41C6.54,11.95 7.39,12.69 8.58,13.09C8.22,13.16 7.82,13.18 7.44,13.12C7.81,14.19 8.58,14.86 9.9,15C9,15.76 7.34,16.29 6,16.08C7.15,16.81 8.46,17.39 10.28,17.31C14.69,17.11 17.64,13.95 17.71,9.33M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z" /></g><g id="twitter-retweet"><path d="M6,5.75L10.25,10H7V16H13.5L15.5,18H7A2,2 0 0,1 5,16V10H1.75L6,5.75M18,18.25L13.75,14H17V8H10.5L8.5,6H17A2,2 0 0,1 19,8V14H22.25L18,18.25Z" /></g><g id="ubuntu"><path d="M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M14.34,7.74C14.92,8.07 15.65,7.87 16,7.3C16.31,6.73 16.12,6 15.54,5.66C14.97,5.33 14.23,5.5 13.9,6.1C13.57,6.67 13.77,7.41 14.34,7.74M11.88,15.5C11.35,15.5 10.85,15.39 10.41,15.18L9.57,16.68C10.27,17 11.05,17.22 11.88,17.22C12.37,17.22 12.83,17.15 13.28,17.03C13.36,16.54 13.64,16.1 14.1,15.84C14.56,15.57 15.08,15.55 15.54,15.72C16.43,14.85 17,13.66 17.09,12.33L15.38,12.31C15.22,14.1 13.72,15.5 11.88,15.5M11.88,8.5C13.72,8.5 15.22,9.89 15.38,11.69L17.09,11.66C17,10.34 16.43,9.15 15.54,8.28C15.08,8.45 14.55,8.42 14.1,8.16C13.64,7.9 13.36,7.45 13.28,6.97C12.83,6.85 12.37,6.78 11.88,6.78C11.05,6.78 10.27,6.97 9.57,7.32L10.41,8.82C10.85,8.61 11.35,8.5 11.88,8.5M8.37,12C8.37,10.81 8.96,9.76 9.86,9.13L9,7.65C7.94,8.36 7.15,9.43 6.83,10.69C7.21,11 7.45,11.47 7.45,12C7.45,12.53 7.21,13 6.83,13.31C7.15,14.56 7.94,15.64 9,16.34L9.86,14.87C8.96,14.24 8.37,13.19 8.37,12M14.34,16.26C13.77,16.59 13.57,17.32 13.9,17.9C14.23,18.47 14.97,18.67 15.54,18.34C16.12,18 16.31,17.27 16,16.7C15.65,16.12 14.92,15.93 14.34,16.26M5.76,10.8C5.1,10.8 4.56,11.34 4.56,12C4.56,12.66 5.1,13.2 5.76,13.2C6.43,13.2 6.96,12.66 6.96,12C6.96,11.34 6.43,10.8 5.76,10.8Z" /></g><g id="umbraco"><path d="M8.6,8.6L7.17,8.38C6.5,11.67 6.46,14.24 7.61,15.5C8.6,16.61 11.89,16.61 11.89,16.61C11.89,16.61 15.29,16.61 16.28,15.5C17.43,14.24 17.38,11.67 16.72,8.38L15.29,8.6C15.29,8.6 16.54,13.88 14.69,14.69C13.81,15.07 11.89,15.07 11.89,15.07C11.89,15.07 10.08,15.07 9.2,14.69C7.35,13.88 8.6,8.6 8.6,8.6M12,3A9,9 0 0,1 21,12A9,9 0 0,1 12,21A9,9 0 0,1 3,12A9,9 0 0,1 12,3Z" /></g><g id="umbrella"><path d="M12,2A9,9 0 0,0 3,11H11V19A1,1 0 0,1 10,20A1,1 0 0,1 9,19H7A3,3 0 0,0 10,22A3,3 0 0,0 13,19V11H21A9,9 0 0,0 12,2Z" /></g><g id="umbrella-outline"><path d="M12,4C15.09,4 17.82,6.04 18.7,9H5.3C6.18,6.03 8.9,4 12,4M12,2A9,9 0 0,0 3,11H11V19A1,1 0 0,1 10,20A1,1 0 0,1 9,19H7A3,3 0 0,0 10,22A3,3 0 0,0 13,19V11H21A9,9 0 0,0 12,2Z" /></g><g id="undo"><path d="M12.5,8C9.85,8 7.45,9 5.6,10.6L2,7V16H11L7.38,12.38C8.77,11.22 10.54,10.5 12.5,10.5C16.04,10.5 19.05,12.81 20.1,16L22.47,15.22C21.08,11.03 17.15,8 12.5,8Z" /></g><g id="undo-variant"><path d="M13.5,7A6.5,6.5 0 0,1 20,13.5A6.5,6.5 0 0,1 13.5,20H10V18H13.5C16,18 18,16 18,13.5C18,11 16,9 13.5,9H7.83L10.91,12.09L9.5,13.5L4,8L9.5,2.5L10.92,3.91L7.83,7H13.5M6,18H8V20H6V18Z" /></g><g id="unfold-less"><path d="M16.59,5.41L15.17,4L12,7.17L8.83,4L7.41,5.41L12,10M7.41,18.59L8.83,20L12,16.83L15.17,20L16.58,18.59L12,14L7.41,18.59Z" /></g><g id="unfold-more"><path d="M12,18.17L8.83,15L7.42,16.41L12,21L16.59,16.41L15.17,15M12,5.83L15.17,9L16.58,7.59L12,3L7.41,7.59L8.83,9L12,5.83Z" /></g><g id="ungroup"><path d="M2,2H6V3H13V2H17V6H16V9H18V8H22V12H21V18H22V22H18V21H12V22H8V18H9V16H6V17H2V13H3V6H2V2M18,12V11H16V13H17V17H13V16H11V18H12V19H18V18H19V12H18M13,6V5H6V6H5V13H6V14H9V12H8V8H12V9H14V6H13M12,12H11V14H13V13H14V11H12V12Z" /></g><g id="unity"><path d="M9.11,17H6.5L1.59,12L6.5,7H9.11L10.42,4.74L17.21,3L19.08,9.74L17.77,12L19.08,14.26L17.21,21L10.42,19.26L9.11,17M9.25,16.75L14.38,18.13L11.42,13H5.5L9.25,16.75M16.12,17.13L17.5,12L16.12,6.87L13.15,12L16.12,17.13M9.25,7.25L5.5,11H11.42L14.38,5.87L9.25,7.25Z" /></g><g id="untappd"><path d="M14.41,4C14.41,4 14.94,4.39 14.97,4.71C14.97,4.81 14.73,4.85 14.68,4.93C14.62,5 14.7,5.15 14.65,5.21C14.59,5.26 14.5,5.26 14.41,5.41C14.33,5.56 12.07,10.09 11.73,10.63C11.59,11.03 11.47,12.46 11.37,12.66C11.26,12.85 6.34,19.84 6.16,20.05C5.67,20.63 4.31,20.3 3.28,19.56C2.3,18.86 1.74,17.7 2.11,17.16C2.27,16.93 7.15,9.92 7.29,9.75C7.44,9.58 8.75,9 9.07,8.71C9.47,8.22 12.96,4.54 13.07,4.42C13.18,4.3 13.15,4.2 13.18,4.13C13.22,4.06 13.38,4.08 13.43,4C13.5,3.93 13.39,3.71 13.5,3.68C13.59,3.64 13.96,3.67 14.41,4M10.85,4.44L11.74,5.37L10.26,6.94L9.46,5.37C9.38,5.22 9.28,5.22 9.22,5.17C9.17,5.11 9.24,4.97 9.19,4.89C9.13,4.81 8.9,4.83 8.9,4.73C8.9,4.62 9.05,4.28 9.5,3.96C9.5,3.96 10.06,3.6 10.37,3.68C10.47,3.71 10.43,3.95 10.5,4C10.54,4.1 10.7,4.08 10.73,4.15C10.77,4.21 10.73,4.32 10.85,4.44M21.92,17.15C22.29,17.81 21.53,19 20.5,19.7C19.5,20.39 18.21,20.54 17.83,20C17.66,19.78 12.67,12.82 12.56,12.62C12.45,12.43 12.32,11 12.18,10.59L12.15,10.55C12.45,10 13.07,8.77 13.73,7.47C14.3,8.06 14.75,8.56 14.88,8.72C15.21,9 16.53,9.58 16.68,9.75C16.82,9.92 21.78,16.91 21.92,17.15Z" /></g><g id="update"><path d="M21,10.12H14.22L16.96,7.3C14.23,4.6 9.81,4.5 7.08,7.2C4.35,9.91 4.35,14.28 7.08,17C9.81,19.7 14.23,19.7 16.96,17C18.32,15.65 19,14.08 19,12.1H21C21,14.08 20.12,16.65 18.36,18.39C14.85,21.87 9.15,21.87 5.64,18.39C2.14,14.92 2.11,9.28 5.62,5.81C9.13,2.34 14.76,2.34 18.27,5.81L21,3V10.12M12.5,8V12.25L16,14.33L15.28,15.54L11,13V8H12.5Z" /></g><g id="upload"><path d="M9,16V10H5L12,3L19,10H15V16H9M5,20V18H19V20H5Z" /></g><g id="usb"><path d="M15,7V11H16V13H13V5H15L12,1L9,5H11V13H8V10.93C8.7,10.56 9.2,9.85 9.2,9C9.2,7.78 8.21,6.8 7,6.8C5.78,6.8 4.8,7.78 4.8,9C4.8,9.85 5.3,10.56 6,10.93V13A2,2 0 0,0 8,15H11V18.05C10.29,18.41 9.8,19.15 9.8,20A2.2,2.2 0 0,0 12,22.2A2.2,2.2 0 0,0 14.2,20C14.2,19.15 13.71,18.41 13,18.05V15H16A2,2 0 0,0 18,13V11H19V7H15Z" /></g><g id="vector-arrange-above"><path d="M3,1C1.89,1 1,1.89 1,3V14C1,15.11 1.89,16 3,16C6.67,16 10.33,16 14,16C15.11,16 16,15.11 16,14C16,10.33 16,6.67 16,3C16,1.89 15.11,1 14,1H3M3,3H14V14H3V3M18,7V9H20V20H9V18H7V20C7,21.11 7.89,22 9,22H20C21.11,22 22,21.11 22,20V9C22,7.89 21.11,7 20,7H18Z" /></g><g id="vector-arrange-below"><path d="M20,22C21.11,22 22,21.11 22,20V9C22,7.89 21.11,7 20,7C16.33,7 12.67,7 9,7C7.89,7 7,7.89 7,9C7,12.67 7,16.33 7,20C7,21.11 7.89,22 9,22H20M20,20H9V9H20V20M5,16V14H3V3H14V5H16V3C16,1.89 15.11,1 14,1H3C1.89,1 1,1.89 1,3V14C1,15.11 1.89,16 3,16H5Z" /></g><g id="vector-circle"><path d="M9,2V4.06C6.72,4.92 4.92,6.72 4.05,9H2V15H4.06C4.92,17.28 6.72,19.09 9,19.95V22H15V19.94C17.28,19.08 19.09,17.28 19.95,15H22V9H19.94C19.08,6.72 17.28,4.92 15,4.05V2M11,4H13V6H11M9,6.25V8H15V6.25C16.18,6.86 17.14,7.82 17.75,9H16V15H17.75C17.14,16.18 16.18,17.14 15,17.75V16H9V17.75C7.82,17.14 6.86,16.18 6.25,15H8V9H6.25C6.86,7.82 7.82,6.86 9,6.25M4,11H6V13H4M18,11H20V13H18M11,18H13V20H11" /></g><g id="vector-circle-variant"><path d="M22,9H19.97C18.7,5.41 15.31,3 11.5,3A9,9 0 0,0 2.5,12C2.5,17 6.53,21 11.5,21C15.31,21 18.7,18.6 20,15H22M20,11V13H18V11M17.82,15C16.66,17.44 14.2,19 11.5,19C7.64,19 4.5,15.87 4.5,12C4.5,8.14 7.64,5 11.5,5C14.2,5 16.66,6.57 17.81,9H16V15" /></g><g id="vector-combine"><path d="M3,1C1.89,1 1,1.89 1,3V14C1,15.11 1.89,16 3,16C4.33,16 7,16 7,16C7,16 7,18.67 7,20C7,21.11 7.89,22 9,22H20C21.11,22 22,21.11 22,20V9C22,7.89 21.11,7 20,7C18.67,7 16,7 16,7C16,7 16,4.33 16,3C16,1.89 15.11,1 14,1H3M3,3H14C14,4.33 14,7 14,7H9C7.89,7 7,7.89 7,9V14C7,14 4.33,14 3,14V3M9,9H14V14H9V9M16,9C16,9 18.67,9 20,9V20H9C9,18.67 9,16 9,16H14C15.11,16 16,15.11 16,14V9Z" /></g><g id="vector-curve"><path d="M18.5,2A1.5,1.5 0 0,1 20,3.5A1.5,1.5 0 0,1 18.5,5C18.27,5 18.05,4.95 17.85,4.85L14.16,8.55L14.5,9C16.69,7.74 19.26,7 22,7L23,7.03V9.04L22,9C19.42,9 17,9.75 15,11.04A3.96,3.96 0 0,1 11.04,15C9.75,17 9,19.42 9,22L9.04,23H7.03L7,22C7,19.26 7.74,16.69 9,14.5L8.55,14.16L4.85,17.85C4.95,18.05 5,18.27 5,18.5A1.5,1.5 0 0,1 3.5,20A1.5,1.5 0 0,1 2,18.5A1.5,1.5 0 0,1 3.5,17C3.73,17 3.95,17.05 4.15,17.15L7.84,13.45C7.31,12.78 7,11.92 7,11A4,4 0 0,1 11,7C11.92,7 12.78,7.31 13.45,7.84L17.15,4.15C17.05,3.95 17,3.73 17,3.5A1.5,1.5 0 0,1 18.5,2M11,9A2,2 0 0,0 9,11A2,2 0 0,0 11,13A2,2 0 0,0 13,11A2,2 0 0,0 11,9Z" /></g><g id="vector-difference"><path d="M3,1C1.89,1 1,1.89 1,3V14C1,15.11 1.89,16 3,16H5V14H3V3H14V5H16V3C16,1.89 15.11,1 14,1H3M9,7C7.89,7 7,7.89 7,9V11H9V9H11V7H9M13,7V9H14V10H16V7H13M18,7V9H20V20H9V18H7V20C7,21.11 7.89,22 9,22H20C21.11,22 22,21.11 22,20V9C22,7.89 21.11,7 20,7H18M14,12V14H12V16H14C15.11,16 16,15.11 16,14V12H14M7,13V16H10V14H9V13H7Z" /></g><g id="vector-difference-ab"><path d="M3,1C1.89,1 1,1.89 1,3V5H3V3H5V1H3M7,1V3H10V1H7M12,1V3H14V5H16V3C16,1.89 15.11,1 14,1H12M1,7V10H3V7H1M14,7C14,7 14,11.67 14,14C11.67,14 7,14 7,14C7,14 7,18 7,20C7,21.11 7.89,22 9,22H20C21.11,22 22,21.11 22,20V9C22,7.89 21.11,7 20,7C18,7 14,7 14,7M16,9H20V20H9V16H14C15.11,16 16,15.11 16,14V9M1,12V14C1,15.11 1.89,16 3,16H5V14H3V12H1Z" /></g><g id="vector-difference-ba"><path d="M20,22C21.11,22 22,21.11 22,20V18H20V20H18V22H20M16,22V20H13V22H16M11,22V20H9V18H7V20C7,21.11 7.89,22 9,22H11M22,16V13H20V16H22M9,16C9,16 9,11.33 9,9C11.33,9 16,9 16,9C16,9 16,5 16,3C16,1.89 15.11,1 14,1H3C1.89,1 1,1.89 1,3V14C1,15.11 1.89,16 3,16C5,16 9,16 9,16M7,14H3V3H14V7H9C7.89,7 7,7.89 7,9V14M22,11V9C22,7.89 21.11,7 20,7H18V9H20V11H22Z" /></g><g id="vector-intersection"><path d="M3.14,1A2.14,2.14 0 0,0 1,3.14V5H3V3H5V1H3.14M7,1V3H10V1H7M12,1V3H14V5H16V3.14C16,1.96 15.04,1 13.86,1H12M1,7V10H3V7H1M9,7C7.89,7 7,7.89 7,9C7,11.33 7,16 7,16C7,16 11.57,16 13.86,16A2.14,2.14 0 0,0 16,13.86C16,11.57 16,7 16,7C16,7 11.33,7 9,7M18,7V9H20V11H22V9C22,7.89 21.11,7 20,7H18M9,9H14V14H9V9M1,12V13.86C1,15.04 1.96,16 3.14,16H5V14H3V12H1M20,13V16H22V13H20M7,18V20C7,21.11 7.89,22 9,22H11V20H9V18H7M20,18V20H18V22H20C21.11,22 22,21.11 22,20V18H20M13,20V22H16V20H13Z" /></g><g id="vector-line"><path d="M15,3V7.59L7.59,15H3V21H9V16.42L16.42,9H21V3M17,5H19V7H17M5,17H7V19H5" /></g><g id="vector-point"><path d="M12,20L7,22L12,11L17,22L12,20M8,2H16V5H22V7H16V10H8V7H2V5H8V2M10,4V8H14V4H10Z" /></g><g id="vector-polygon"><path d="M2,2V8H4.28L5.57,16H4V22H10V20.06L15,20.05V22H21V16H19.17L20,9H22V3H16V6.53L14.8,8H9.59L8,5.82V2M4,4H6V6H4M18,5H20V7H18M6.31,8H7.11L9,10.59V14H15V10.91L16.57,9H18L17.16,16H15V18.06H10V16H7.6M11,10H13V12H11M6,18H8V20H6M17,18H19V20H17" /></g><g id="vector-polyline"><path d="M16,2V8H17.08L14.95,13H14.26L12,9.97V5H6V11H6.91L4.88,16H2V22H8V16H7.04L9.07,11H10.27L12,13.32V19H18V13H17.12L19.25,8H22V2M18,4H20V6H18M8,7H10V9H8M14,15H16V17H14M4,18H6V20H4" /></g><g id="vector-rectangle"><path d="M2,4H8V6H16V4H22V10H20V14H22V20H16V18H8V20H2V14H4V10H2V4M16,10V8H8V10H6V14H8V16H16V14H18V10H16M4,6V8H6V6H4M18,6V8H20V6H18M4,16V18H6V16H4M18,16V18H20V16H18Z" /></g><g id="vector-selection"><path d="M3,1H5V3H3V5H1V3A2,2 0 0,1 3,1M14,1A2,2 0 0,1 16,3V5H14V3H12V1H14M20,7A2,2 0 0,1 22,9V11H20V9H18V7H20M22,20A2,2 0 0,1 20,22H18V20H20V18H22V20M20,13H22V16H20V13M13,9V7H16V10H14V9H13M13,22V20H16V22H13M9,22A2,2 0 0,1 7,20V18H9V20H11V22H9M7,16V13H9V14H10V16H7M7,3V1H10V3H7M3,16A2,2 0 0,1 1,14V12H3V14H5V16H3M1,7H3V10H1V7M9,7H11V9H9V11H7V9A2,2 0 0,1 9,7M16,14A2,2 0 0,1 14,16H12V14H14V12H16V14Z" /></g><g id="vector-square"><path d="M2,2H8V4H16V2H22V8H20V16H22V22H16V20H8V22H2V16H4V8H2V2M16,8V6H8V8H6V16H8V18H16V16H18V8H16M4,4V6H6V4H4M18,4V6H20V4H18M4,18V20H6V18H4M18,18V20H20V18H18Z" /></g><g id="vector-triangle"><path d="M9,3V9H9.73L5.79,16H2V22H8V20H16V22H22V16H18.21L14.27,9H15V3M11,5H13V7H11M12,9.04L16,16.15V18H8V16.15M4,18H6V20H4M18,18H20V20H18" /></g><g id="vector-union"><path d="M3,1C1.89,1 1,1.89 1,3V14C1,15.11 1.89,16 3,16H7V20C7,21.11 7.89,22 9,22H20C21.11,22 22,21.11 22,20V9C22,7.89 21.11,7 20,7H16V3C16,1.89 15.11,1 14,1H3M3,3H14V9H20V20H9V14H3V3Z" /></g><g id="verified"><path d="M10,17L6,13L7.41,11.59L10,14.17L16.59,7.58L18,9M12,1L3,5V11C3,16.55 6.84,21.74 12,23C17.16,21.74 21,16.55 21,11V5L12,1Z" /></g><g id="vibrate"><path d="M16,19H8V5H16M16.5,3H7.5A1.5,1.5 0 0,0 6,4.5V19.5A1.5,1.5 0 0,0 7.5,21H16.5A1.5,1.5 0 0,0 18,19.5V4.5A1.5,1.5 0 0,0 16.5,3M19,17H21V7H19M22,9V15H24V9M3,17H5V7H3M0,15H2V9H0V15Z" /></g><g id="video"><path d="M17,10.5V7A1,1 0 0,0 16,6H4A1,1 0 0,0 3,7V17A1,1 0 0,0 4,18H16A1,1 0 0,0 17,17V13.5L21,17.5V6.5L17,10.5Z" /></g><g id="video-off"><path d="M3.27,2L2,3.27L4.73,6H4A1,1 0 0,0 3,7V17A1,1 0 0,0 4,18H16C16.2,18 16.39,17.92 16.54,17.82L19.73,21L21,19.73M21,6.5L17,10.5V7A1,1 0 0,0 16,6H9.82L21,17.18V6.5Z" /></g><g id="video-switch"><path d="M13,15.5V13H7V15.5L3.5,12L7,8.5V11H13V8.5L16.5,12M18,9.5V6A1,1 0 0,0 17,5H3A1,1 0 0,0 2,6V18A1,1 0 0,0 3,19H17A1,1 0 0,0 18,18V14.5L22,18.5V5.5L18,9.5Z" /></g><g id="view-agenda"><path d="M20,3H3A1,1 0 0,0 2,4V10A1,1 0 0,0 3,11H20A1,1 0 0,0 21,10V4A1,1 0 0,0 20,3M20,13H3A1,1 0 0,0 2,14V20A1,1 0 0,0 3,21H20A1,1 0 0,0 21,20V14A1,1 0 0,0 20,13Z" /></g><g id="view-array"><path d="M8,18H17V5H8M18,5V18H21V5M4,18H7V5H4V18Z" /></g><g id="view-carousel"><path d="M18,6V17H22V6M2,17H6V6H2M7,19H17V4H7V19Z" /></g><g id="view-column"><path d="M16,5V18H21V5M4,18H9V5H4M10,18H15V5H10V18Z" /></g><g id="view-dashboard"><path d="M13,3V9H21V3M13,21H21V11H13M3,21H11V15H3M3,13H11V3H3V13Z" /></g><g id="view-day"><path d="M2,3V6H21V3M20,8H3A1,1 0 0,0 2,9V15A1,1 0 0,0 3,16H20A1,1 0 0,0 21,15V9A1,1 0 0,0 20,8M2,21H21V18H2V21Z" /></g><g id="view-grid"><path d="M3,11H11V3H3M3,21H11V13H3M13,21H21V13H13M13,3V11H21V3" /></g><g id="view-headline"><path d="M4,5V7H21V5M4,11H21V9H4M4,19H21V17H4M4,15H21V13H4V15Z" /></g><g id="view-list"><path d="M9,5V9H21V5M9,19H21V15H9M9,14H21V10H9M4,9H8V5H4M4,19H8V15H4M4,14H8V10H4V14Z" /></g><g id="view-module"><path d="M16,5V11H21V5M10,11H15V5H10M16,18H21V12H16M10,18H15V12H10M4,18H9V12H4M4,11H9V5H4V11Z" /></g><g id="view-parallel"><path d="M4,21V3H8V21H4M10,21V3H14V21H10M16,21V3H20V21H16Z" /></g><g id="view-quilt"><path d="M10,5V11H21V5M16,18H21V12H16M4,18H9V5H4M10,18H15V12H10V18Z" /></g><g id="view-sequential"><path d="M3,4H21V8H3V4M3,10H21V14H3V10M3,16H21V20H3V16Z" /></g><g id="view-stream"><path d="M4,5V11H21V5M4,18H21V12H4V18Z" /></g><g id="view-week"><path d="M13,5H10A1,1 0 0,0 9,6V18A1,1 0 0,0 10,19H13A1,1 0 0,0 14,18V6A1,1 0 0,0 13,5M20,5H17A1,1 0 0,0 16,6V18A1,1 0 0,0 17,19H20A1,1 0 0,0 21,18V6A1,1 0 0,0 20,5M6,5H3A1,1 0 0,0 2,6V18A1,1 0 0,0 3,19H6A1,1 0 0,0 7,18V6A1,1 0 0,0 6,5Z" /></g><g id="vimeo"><path d="M22,7.42C21.91,9.37 20.55,12.04 17.92,15.44C15.2,19 12.9,20.75 11,20.75C9.85,20.75 8.86,19.67 8.05,17.5C7.5,15.54 7,13.56 6.44,11.58C5.84,9.42 5.2,8.34 4.5,8.34C4.36,8.34 3.84,8.66 2.94,9.29L2,8.07C3,7.2 3.96,6.33 4.92,5.46C6.24,4.32 7.23,3.72 7.88,3.66C9.44,3.5 10.4,4.58 10.76,6.86C11.15,9.33 11.42,10.86 11.57,11.46C12,13.5 12.5,14.5 13.05,14.5C13.47,14.5 14.1,13.86 14.94,12.53C15.78,11.21 16.23,10.2 16.29,9.5C16.41,8.36 15.96,7.79 14.94,7.79C14.46,7.79 13.97,7.9 13.46,8.12C14.44,4.89 16.32,3.32 19.09,3.41C21.15,3.47 22.12,4.81 22,7.42Z" /></g><g id="vine"><path d="M19.89,11.95C19.43,12.06 19,12.1 18.57,12.1C16.3,12.1 14.55,10.5 14.55,7.76C14.55,6.41 15.08,5.7 15.82,5.7C16.5,5.7 17,6.33 17,7.61C17,8.34 16.79,9.14 16.65,9.61C16.65,9.61 17.35,10.83 19.26,10.46C19.67,9.56 19.89,8.39 19.89,7.36C19.89,4.6 18.5,3 15.91,3C13.26,3 11.71,5.04 11.71,7.72C11.71,10.38 12.95,12.67 15,13.71C14.14,15.43 13.04,16.95 11.9,18.1C9.82,15.59 7.94,12.24 7.17,5.7H4.11C5.53,16.59 9.74,20.05 10.86,20.72C11.5,21.1 12.03,21.08 12.61,20.75C13.5,20.24 16.23,17.5 17.74,14.34C18.37,14.33 19.13,14.26 19.89,14.09V11.95Z" /></g><g id="violin"><path d="M11,2A1,1 0 0,0 10,3V5L10,9A0.5,0.5 0 0,0 10.5,9.5H12A0.5,0.5 0 0,1 12.5,10A0.5,0.5 0 0,1 12,10.5H10.5C9.73,10.5 9,9.77 9,9V5.16C7.27,5.6 6,7.13 6,9V10.5A2.5,2.5 0 0,1 8.5,13A2.5,2.5 0 0,1 6,15.5V17C6,19.77 8.23,22 11,22H13C15.77,22 18,19.77 18,17V15.5A2.5,2.5 0 0,1 15.5,13A2.5,2.5 0 0,1 18,10.5V9C18,6.78 16.22,5 14,5V3A1,1 0 0,0 13,2H11M10.75,16.5H13.25L12.75,20H11.25L10.75,16.5Z" /></g><g id="visualstudio"><path d="M17,8.5L12.25,12.32L17,16V8.5M4.7,18.4L2,16.7V7.7L5,6.7L9.3,10.03L18,2L22,4.5V20L17,22L9.34,14.66L4.7,18.4M5,14L6.86,12.28L5,10.5V14Z" /></g><g id="vk"><path d="M19.54,14.6C21.09,16.04 21.41,16.73 21.46,16.82C22.1,17.88 20.76,17.96 20.76,17.96L18.18,18C18.18,18 17.62,18.11 16.9,17.61C15.93,16.95 15,15.22 14.31,15.45C13.6,15.68 13.62,17.23 13.62,17.23C13.62,17.23 13.62,17.45 13.46,17.62C13.28,17.81 12.93,17.74 12.93,17.74H11.78C11.78,17.74 9.23,18 7,15.67C4.55,13.13 2.39,8.13 2.39,8.13C2.39,8.13 2.27,7.83 2.4,7.66C2.55,7.5 2.97,7.5 2.97,7.5H5.73C5.73,7.5 6,7.5 6.17,7.66C6.32,7.77 6.41,8 6.41,8C6.41,8 6.85,9.11 7.45,10.13C8.6,12.12 9.13,12.55 9.5,12.34C10.1,12.03 9.93,9.53 9.93,9.53C9.93,9.53 9.94,8.62 9.64,8.22C9.41,7.91 8.97,7.81 8.78,7.79C8.62,7.77 8.88,7.41 9.21,7.24C9.71,7 10.58,7 11.62,7C12.43,7 12.66,7.06 12.97,7.13C13.93,7.36 13.6,8.25 13.6,10.37C13.6,11.06 13.5,12 13.97,12.33C14.18,12.47 14.7,12.35 16,10.16C16.6,9.12 17.06,7.89 17.06,7.89C17.06,7.89 17.16,7.68 17.31,7.58C17.47,7.5 17.69,7.5 17.69,7.5H20.59C20.59,7.5 21.47,7.4 21.61,7.79C21.76,8.2 21.28,9.17 20.09,10.74C18.15,13.34 17.93,13.1 19.54,14.6Z" /></g><g id="vk-box"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M17.24,14.03C16.06,12.94 16.22,13.11 17.64,11.22C18.5,10.07 18.85,9.37 18.74,9.07C18.63,8.79 18,8.86 18,8.86L15.89,8.88C15.89,8.88 15.73,8.85 15.62,8.92C15.5,9 15.43,9.15 15.43,9.15C15.43,9.15 15.09,10.04 14.65,10.8C13.71,12.39 13.33,12.47 13.18,12.38C12.83,12.15 12.91,11.45 12.91,10.95C12.91,9.41 13.15,8.76 12.46,8.6C12.23,8.54 12.06,8.5 11.47,8.5C10.72,8.5 10.08,8.5 9.72,8.68C9.5,8.8 9.29,9.06 9.41,9.07C9.55,9.09 9.86,9.16 10.03,9.39C10.25,9.68 10.24,10.34 10.24,10.34C10.24,10.34 10.36,12.16 9.95,12.39C9.66,12.54 9.27,12.22 8.44,10.78C8,10.04 7.68,9.22 7.68,9.22L7.5,9L7.19,8.85H5.18C5.18,8.85 4.88,8.85 4.77,9C4.67,9.1 4.76,9.32 4.76,9.32C4.76,9.32 6.33,12.96 8.11,14.8C9.74,16.5 11.59,16.31 11.59,16.31H12.43C12.43,16.31 12.68,16.36 12.81,16.23C12.93,16.1 12.93,15.94 12.93,15.94C12.93,15.94 12.91,14.81 13.43,14.65C13.95,14.5 14.61,15.73 15.31,16.22C15.84,16.58 16.24,16.5 16.24,16.5L18.12,16.47C18.12,16.47 19.1,16.41 18.63,15.64C18.6,15.58 18.36,15.07 17.24,14.03Z" /></g><g id="vk-circle"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M17.24,14.03C16.06,12.94 16.22,13.11 17.64,11.22C18.5,10.07 18.85,9.37 18.74,9.07C18.63,8.79 18,8.86 18,8.86L15.89,8.88C15.89,8.88 15.73,8.85 15.62,8.92C15.5,9 15.43,9.15 15.43,9.15C15.43,9.15 15.09,10.04 14.65,10.8C13.71,12.39 13.33,12.47 13.18,12.38C12.83,12.15 12.91,11.45 12.91,10.95C12.91,9.41 13.15,8.76 12.46,8.6C12.23,8.54 12.06,8.5 11.47,8.5C10.72,8.5 10.08,8.5 9.72,8.68C9.5,8.8 9.29,9.06 9.41,9.07C9.55,9.09 9.86,9.16 10.03,9.39C10.25,9.68 10.24,10.34 10.24,10.34C10.24,10.34 10.36,12.16 9.95,12.39C9.66,12.54 9.27,12.22 8.44,10.78C8,10.04 7.68,9.22 7.68,9.22L7.5,9L7.19,8.85H5.18C5.18,8.85 4.88,8.85 4.77,9C4.67,9.1 4.76,9.32 4.76,9.32C4.76,9.32 6.33,12.96 8.11,14.8C9.74,16.5 11.59,16.31 11.59,16.31H12.43C12.43,16.31 12.68,16.36 12.81,16.23C12.93,16.1 12.93,15.94 12.93,15.94C12.93,15.94 12.91,14.81 13.43,14.65C13.95,14.5 14.61,15.73 15.31,16.22C15.84,16.58 16.24,16.5 16.24,16.5L18.12,16.47C18.12,16.47 19.1,16.41 18.63,15.64C18.6,15.58 18.36,15.07 17.24,14.03Z" /></g><g id="vlc"><path d="M12,1C11.58,1 11.19,1.23 11,1.75L9.88,4.88C10.36,5.4 11.28,5.5 12,5.5C12.72,5.5 13.64,5.4 14.13,4.88L13,1.75C12.82,1.25 12.42,1 12,1M8.44,8.91L7,12.91C8.07,14.27 10.26,14.5 12,14.5C13.74,14.5 15.93,14.27 17,12.91L15.56,8.91C14.76,9.83 13.24,10 12,10C10.76,10 9.24,9.83 8.44,8.91M5.44,15C4.62,15 3.76,15.65 3.53,16.44L2.06,21.56C1.84,22.35 2.3,23 3.13,23H20.88C21.7,23 22.16,22.35 21.94,21.56L20.47,16.44C20.24,15.65 19.38,15 18.56,15H17.75L18.09,15.97C18.21,16.29 18.29,16.69 18.09,16.97C16.84,18.7 14.14,19 12,19C9.86,19 7.16,18.7 5.91,16.97C5.71,16.69 5.79,16.29 5.91,15.97L6.25,15H5.44Z" /></g><g id="voice"><path d="M9,5A4,4 0 0,1 13,9A4,4 0 0,1 9,13A4,4 0 0,1 5,9A4,4 0 0,1 9,5M9,15C11.67,15 17,16.34 17,19V21H1V19C1,16.34 6.33,15 9,15M16.76,5.36C18.78,7.56 18.78,10.61 16.76,12.63L15.08,10.94C15.92,9.76 15.92,8.23 15.08,7.05L16.76,5.36M20.07,2C24,6.05 23.97,12.11 20.07,16L18.44,14.37C21.21,11.19 21.21,6.65 18.44,3.63L20.07,2Z" /></g><g id="voicemail"><path d="M18.5,15A3.5,3.5 0 0,1 15,11.5A3.5,3.5 0 0,1 18.5,8A3.5,3.5 0 0,1 22,11.5A3.5,3.5 0 0,1 18.5,15M5.5,15A3.5,3.5 0 0,1 2,11.5A3.5,3.5 0 0,1 5.5,8A3.5,3.5 0 0,1 9,11.5A3.5,3.5 0 0,1 5.5,15M18.5,6A5.5,5.5 0 0,0 13,11.5C13,12.83 13.47,14.05 14.26,15H9.74C10.53,14.05 11,12.83 11,11.5A5.5,5.5 0 0,0 5.5,6A5.5,5.5 0 0,0 0,11.5A5.5,5.5 0 0,0 5.5,17H18.5A5.5,5.5 0 0,0 24,11.5A5.5,5.5 0 0,0 18.5,6Z" /></g><g id="volume-high"><path d="M14,3.23V5.29C16.89,6.15 19,8.83 19,12C19,15.17 16.89,17.84 14,18.7V20.77C18,19.86 21,16.28 21,12C21,7.72 18,4.14 14,3.23M16.5,12C16.5,10.23 15.5,8.71 14,7.97V16C15.5,15.29 16.5,13.76 16.5,12M3,9V15H7L12,20V4L7,9H3Z" /></g><g id="volume-low"><path d="M7,9V15H11L16,20V4L11,9H7Z" /></g><g id="volume-medium"><path d="M5,9V15H9L14,20V4L9,9M18.5,12C18.5,10.23 17.5,8.71 16,7.97V16C17.5,15.29 18.5,13.76 18.5,12Z" /></g><g id="volume-off"><path d="M12,4L9.91,6.09L12,8.18M4.27,3L3,4.27L7.73,9H3V15H7L12,20V13.27L16.25,17.53C15.58,18.04 14.83,18.46 14,18.7V20.77C15.38,20.45 16.63,19.82 17.68,18.96L19.73,21L21,19.73L12,10.73M19,12C19,12.94 18.8,13.82 18.46,14.64L19.97,16.15C20.62,14.91 21,13.5 21,12C21,7.72 18,4.14 14,3.23V5.29C16.89,6.15 19,8.83 19,12M16.5,12C16.5,10.23 15.5,8.71 14,7.97V10.18L16.45,12.63C16.5,12.43 16.5,12.21 16.5,12Z" /></g><g id="vpn"><path d="M9,5H15L12,8L9,5M10.5,14.66C10.2,15 10,15.5 10,16A2,2 0 0,0 12,18A2,2 0 0,0 14,16C14,15.45 13.78,14.95 13.41,14.59L14.83,13.17C15.55,13.9 16,14.9 16,16A4,4 0 0,1 12,20A4,4 0 0,1 8,16C8,14.93 8.42,13.96 9.1,13.25L9.09,13.24L16.17,6.17V6.17C16.89,5.45 17.89,5 19,5A4,4 0 0,1 23,9A4,4 0 0,1 19,13C17.9,13 16.9,12.55 16.17,11.83L17.59,10.41C17.95,10.78 18.45,11 19,11A2,2 0 0,0 21,9A2,2 0 0,0 19,7C18.45,7 17.95,7.22 17.59,7.59L10.5,14.66M6.41,7.59C6.05,7.22 5.55,7 5,7A2,2 0 0,0 3,9A2,2 0 0,0 5,11C5.55,11 6.05,10.78 6.41,10.41L7.83,11.83C7.1,12.55 6.1,13 5,13A4,4 0 0,1 1,9A4,4 0 0,1 5,5C6.11,5 7.11,5.45 7.83,6.17V6.17L10.59,8.93L9.17,10.35L6.41,7.59Z" /></g><g id="walk"><path d="M14.12,10H19V8.2H15.38L13.38,4.87C13.08,4.37 12.54,4.03 11.92,4.03C11.74,4.03 11.58,4.06 11.42,4.11L6,5.8V11H7.8V7.33L9.91,6.67L6,22H7.8L10.67,13.89L13,17V22H14.8V15.59L12.31,11.05L13.04,8.18M14,3.8C15,3.8 15.8,3 15.8,2C15.8,1 15,0.2 14,0.2C13,0.2 12.2,1 12.2,2C12.2,3 13,3.8 14,3.8Z" /></g><g id="wallet"><path d="M21,18V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V6H12C10.89,6 10,6.9 10,8V16A2,2 0 0,0 12,18M12,16H22V8H12M16,13.5A1.5,1.5 0 0,1 14.5,12A1.5,1.5 0 0,1 16,10.5A1.5,1.5 0 0,1 17.5,12A1.5,1.5 0 0,1 16,13.5Z" /></g><g id="wallet-giftcard"><path d="M20,14H4V8H9.08L7,10.83L8.62,12L11,8.76L12,7.4L13,8.76L15.38,12L17,10.83L14.92,8H20M20,19H4V17H20M9,4A1,1 0 0,1 10,5A1,1 0 0,1 9,6A1,1 0 0,1 8,5A1,1 0 0,1 9,4M15,4A1,1 0 0,1 16,5A1,1 0 0,1 15,6A1,1 0 0,1 14,5A1,1 0 0,1 15,4M20,6H17.82C17.93,5.69 18,5.35 18,5A3,3 0 0,0 15,2C13.95,2 13.04,2.54 12.5,3.35L12,4L11.5,3.34C10.96,2.54 10.05,2 9,2A3,3 0 0,0 6,5C6,5.35 6.07,5.69 6.18,6H4C2.89,6 2,6.89 2,8V19C2,20.11 2.89,21 4,21H20C21.11,21 22,20.11 22,19V8C22,6.89 21.11,6 20,6Z" /></g><g id="wallet-membership"><path d="M20,10H4V4H20M20,15H4V13H20M20,2H4C2.89,2 2,2.89 2,4V15C2,16.11 2.89,17 4,17H8V22L12,20L16,22V17H20C21.11,17 22,16.11 22,15V4C22,2.89 21.11,2 20,2Z" /></g><g id="wallet-travel"><path d="M20,14H4V8H7V10H9V8H15V10H17V8H20M20,19H4V17H20M9,4H15V6H9M20,6H17V4C17,2.89 16.11,2 15,2H9C7.89,2 7,2.89 7,4V6H4C2.89,6 2,6.89 2,8V19C2,20.11 2.89,21 4,21H20C21.11,21 22,20.11 22,19V8C22,6.89 21.11,6 20,6Z" /></g><g id="wan"><path d="M12,2A8,8 0 0,0 4,10C4,14.03 7,17.42 11,17.93V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15A1,1 0 0,0 14,19H13V17.93C17,17.43 20,14.03 20,10A8,8 0 0,0 12,2M12,4C12,4 12.74,5.28 13.26,7H10.74C11.26,5.28 12,4 12,4M9.77,4.43C9.5,4.93 9.09,5.84 8.74,7H6.81C7.5,5.84 8.5,4.93 9.77,4.43M14.23,4.44C15.5,4.94 16.5,5.84 17.19,7H15.26C14.91,5.84 14.5,4.93 14.23,4.44M6.09,9H8.32C8.28,9.33 8.25,9.66 8.25,10C8.25,10.34 8.28,10.67 8.32,11H6.09C6.03,10.67 6,10.34 6,10C6,9.66 6.03,9.33 6.09,9M10.32,9H13.68C13.72,9.33 13.75,9.66 13.75,10C13.75,10.34 13.72,10.67 13.68,11H10.32C10.28,10.67 10.25,10.34 10.25,10C10.25,9.66 10.28,9.33 10.32,9M15.68,9H17.91C17.97,9.33 18,9.66 18,10C18,10.34 17.97,10.67 17.91,11H15.68C15.72,10.67 15.75,10.34 15.75,10C15.75,9.66 15.72,9.33 15.68,9M6.81,13H8.74C9.09,14.16 9.5,15.07 9.77,15.56C8.5,15.06 7.5,14.16 6.81,13M10.74,13H13.26C12.74,14.72 12,16 12,16C12,16 11.26,14.72 10.74,13M15.26,13H17.19C16.5,14.16 15.5,15.07 14.23,15.57C14.5,15.07 14.91,14.16 15.26,13Z" /></g><g id="washing-machine"><path d="M14.83,11.17C16.39,12.73 16.39,15.27 14.83,16.83C13.27,18.39 10.73,18.39 9.17,16.83L14.83,11.17M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M7,4A1,1 0 0,0 6,5A1,1 0 0,0 7,6A1,1 0 0,0 8,5A1,1 0 0,0 7,4M10,4A1,1 0 0,0 9,5A1,1 0 0,0 10,6A1,1 0 0,0 11,5A1,1 0 0,0 10,4M12,8A6,6 0 0,0 6,14A6,6 0 0,0 12,20A6,6 0 0,0 18,14A6,6 0 0,0 12,8Z" /></g><g id="watch"><path d="M6,12A6,6 0 0,1 12,6A6,6 0 0,1 18,12A6,6 0 0,1 12,18A6,6 0 0,1 6,12M20,12C20,9.45 18.81,7.19 16.95,5.73L16,0H8L7.05,5.73C5.19,7.19 4,9.45 4,12C4,14.54 5.19,16.81 7.05,18.27L8,24H16L16.95,18.27C18.81,16.81 20,14.54 20,12Z" /></g><g id="watch-export"><path d="M14,11H19L16.5,8.5L17.92,7.08L22.84,12L17.92,16.92L16.5,15.5L19,13H14V11M12,18A6,6 0 0,1 6,12A6,6 0 0,1 12,6C13.4,6 14.69,6.5 15.71,7.29L17.13,5.87L16.95,5.73L16,0H8L7.05,5.73C5.19,7.19 4,9.46 4,12C4,14.55 5.19,16.81 7.05,18.27L8,24H16L16.95,18.27L17.13,18.13L15.71,16.71C14.69,17.5 13.4,18 12,18Z" /></g><g id="watch-import"><path d="M2,11H7L4.5,8.5L5.92,7.08L10.84,12L5.92,16.92L4.5,15.5L7,13H2V11M12,18A6,6 0 0,0 18,12A6,6 0 0,0 12,6C10.6,6 9.31,6.5 8.29,7.29L6.87,5.87L7.05,5.73L8,0H16L16.95,5.73C18.81,7.19 20,9.45 20,12C20,14.54 18.81,16.81 16.95,18.27L16,24H8L7.05,18.27L6.87,18.13L8.29,16.71C9.31,17.5 10.6,18 12,18Z" /></g><g id="watch-vibrate"><path d="M3,17V7H5V17H3M19,17V7H21V17H19M22,9H24V15H22V9M0,15V9H2V15H0M17.96,11.97C17.96,13.87 17.07,15.57 15.68,16.67L14.97,20.95H9L8.27,16.67C6.88,15.57 6,13.87 6,11.97C6,10.07 6.88,8.37 8.27,7.28L9,3H14.97L15.68,7.28C17.07,8.37 17.96,10.07 17.96,11.97M7.5,11.97C7.5,14.45 9.5,16.46 11.97,16.46A4.49,4.49 0 0,0 16.46,11.97C16.46,9.5 14.45,7.5 11.97,7.5A4.47,4.47 0 0,0 7.5,11.97Z" /></g><g id="water"><path d="M12,20A6,6 0 0,1 6,14C6,10 12,3.25 12,3.25C12,3.25 18,10 18,14A6,6 0 0,1 12,20Z" /></g><g id="water-off"><path d="M17.12,17.12L12.5,12.5L5.27,5.27L4,6.55L7.32,9.87C6.55,11.32 6,12.79 6,14A6,6 0 0,0 12,20C13.5,20 14.9,19.43 15.96,18.5L18.59,21.13L19.86,19.86L17.12,17.12M18,14C18,10 12,3.2 12,3.2C12,3.2 10.67,4.71 9.27,6.72L17.86,15.31C17.95,14.89 18,14.45 18,14Z" /></g><g id="water-percent"><path d="M12,3.25C12,3.25 6,10 6,14C6,17.32 8.69,20 12,20A6,6 0 0,0 18,14C18,10 12,3.25 12,3.25M14.47,9.97L15.53,11.03L9.53,17.03L8.47,15.97M9.75,10A1.25,1.25 0 0,1 11,11.25A1.25,1.25 0 0,1 9.75,12.5A1.25,1.25 0 0,1 8.5,11.25A1.25,1.25 0 0,1 9.75,10M14.25,14.5A1.25,1.25 0 0,1 15.5,15.75A1.25,1.25 0 0,1 14.25,17A1.25,1.25 0 0,1 13,15.75A1.25,1.25 0 0,1 14.25,14.5Z" /></g><g id="water-pump"><path d="M19,14.5C19,14.5 21,16.67 21,18A2,2 0 0,1 19,20A2,2 0 0,1 17,18C17,16.67 19,14.5 19,14.5M5,18V9A2,2 0 0,1 3,7A2,2 0 0,1 5,5V4A2,2 0 0,1 7,2H9A2,2 0 0,1 11,4V5H19A2,2 0 0,1 21,7V9L21,11A1,1 0 0,1 22,12A1,1 0 0,1 21,13H17A1,1 0 0,1 16,12A1,1 0 0,1 17,11V9H11V18H12A2,2 0 0,1 14,20V22H2V20A2,2 0 0,1 4,18H5Z" /></g><g id="watermark"><path d="M21,3H3A2,2 0 0,0 1,5V19A2,2 0 0,0 3,21H21A2,2 0 0,0 23,19V5A2,2 0 0,0 21,3M21,19H12V13H21V19Z" /></g><g id="weather-cloudy"><path d="M6,19A5,5 0 0,1 1,14A5,5 0 0,1 6,9C7,6.65 9.3,5 12,5C15.43,5 18.24,7.66 18.5,11.03L19,11A4,4 0 0,1 23,15A4,4 0 0,1 19,19H6M19,13H17V12A5,5 0 0,0 12,7C9.5,7 7.45,8.82 7.06,11.19C6.73,11.07 6.37,11 6,11A3,3 0 0,0 3,14A3,3 0 0,0 6,17H19A2,2 0 0,0 21,15A2,2 0 0,0 19,13Z" /></g><g id="weather-fog"><path d="M3,15H13A1,1 0 0,1 14,16A1,1 0 0,1 13,17H3A1,1 0 0,1 2,16A1,1 0 0,1 3,15M16,15H21A1,1 0 0,1 22,16A1,1 0 0,1 21,17H16A1,1 0 0,1 15,16A1,1 0 0,1 16,15M1,12A5,5 0 0,1 6,7C7,4.65 9.3,3 12,3C15.43,3 18.24,5.66 18.5,9.03L19,9C21.19,9 22.97,10.76 23,13H21A2,2 0 0,0 19,11H17V10A5,5 0 0,0 12,5C9.5,5 7.45,6.82 7.06,9.19C6.73,9.07 6.37,9 6,9A3,3 0 0,0 3,12C3,12.35 3.06,12.69 3.17,13H1.1L1,12M3,19H5A1,1 0 0,1 6,20A1,1 0 0,1 5,21H3A1,1 0 0,1 2,20A1,1 0 0,1 3,19M8,19H21A1,1 0 0,1 22,20A1,1 0 0,1 21,21H8A1,1 0 0,1 7,20A1,1 0 0,1 8,19Z" /></g><g id="weather-hail"><path d="M6,14A1,1 0 0,1 7,15A1,1 0 0,1 6,16A5,5 0 0,1 1,11A5,5 0 0,1 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16H18A1,1 0 0,1 17,15A1,1 0 0,1 18,14H19A2,2 0 0,0 21,12A2,2 0 0,0 19,10H17V9A5,5 0 0,0 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8A3,3 0 0,0 3,11A3,3 0 0,0 6,14M10,18A2,2 0 0,1 12,20A2,2 0 0,1 10,22A2,2 0 0,1 8,20A2,2 0 0,1 10,18M14.5,16A1.5,1.5 0 0,1 16,17.5A1.5,1.5 0 0,1 14.5,19A1.5,1.5 0 0,1 13,17.5A1.5,1.5 0 0,1 14.5,16M10.5,12A1.5,1.5 0 0,1 12,13.5A1.5,1.5 0 0,1 10.5,15A1.5,1.5 0 0,1 9,13.5A1.5,1.5 0 0,1 10.5,12Z" /></g><g id="weather-lightning"><path d="M6,16A5,5 0 0,1 1,11A5,5 0 0,1 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16H18A1,1 0 0,1 17,15A1,1 0 0,1 18,14H19A2,2 0 0,0 21,12A2,2 0 0,0 19,10H17V9A5,5 0 0,0 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8A3,3 0 0,0 3,11A3,3 0 0,0 6,14H7A1,1 0 0,1 8,15A1,1 0 0,1 7,16H6M12,11H15L13,15H15L11.25,22L12,17H9.5L12,11Z" /></g><g id="weather-lightning-rainy"><path d="M4.5,13.59C5,13.87 5.14,14.5 4.87,14.96C4.59,15.44 4,15.6 3.5,15.33V15.33C2,14.47 1,12.85 1,11A5,5 0 0,1 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16A1,1 0 0,1 18,15A1,1 0 0,1 19,14A2,2 0 0,0 21,12A2,2 0 0,0 19,10H17V9A5,5 0 0,0 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8A3,3 0 0,0 3,11C3,12.11 3.6,13.08 4.5,13.6V13.59M9.5,11H12.5L10.5,15H12.5L8.75,22L9.5,17H7L9.5,11M17.5,18.67C17.5,19.96 16.5,21 15.25,21C14,21 13,19.96 13,18.67C13,17.12 15.25,14.5 15.25,14.5C15.25,14.5 17.5,17.12 17.5,18.67Z" /></g><g id="weather-night"><path d="M17.75,4.09L15.22,6.03L16.13,9.09L13.5,7.28L10.87,9.09L11.78,6.03L9.25,4.09L12.44,4L13.5,1L14.56,4L17.75,4.09M21.25,11L19.61,12.25L20.2,14.23L18.5,13.06L16.8,14.23L17.39,12.25L15.75,11L17.81,10.95L18.5,9L19.19,10.95L21.25,11M18.97,15.95C19.8,15.87 20.69,17.05 20.16,17.8C19.84,18.25 19.5,18.67 19.08,19.07C15.17,23 8.84,23 4.94,19.07C1.03,15.17 1.03,8.83 4.94,4.93C5.34,4.53 5.76,4.17 6.21,3.85C6.96,3.32 8.14,4.21 8.06,5.04C7.79,7.9 8.75,10.87 10.95,13.06C13.14,15.26 16.1,16.22 18.97,15.95M17.33,17.97C14.5,17.81 11.7,16.64 9.53,14.5C7.36,12.31 6.2,9.5 6.04,6.68C3.23,9.82 3.34,14.64 6.35,17.66C9.37,20.67 14.19,20.78 17.33,17.97Z" /></g><g id="weather-partlycloudy"><path d="M12.74,5.47C15.1,6.5 16.35,9.03 15.92,11.46C17.19,12.56 18,14.19 18,16V16.17C18.31,16.06 18.65,16 19,16A3,3 0 0,1 22,19A3,3 0 0,1 19,22H6A4,4 0 0,1 2,18A4,4 0 0,1 6,14H6.27C5,12.45 4.6,10.24 5.5,8.26C6.72,5.5 9.97,4.24 12.74,5.47M11.93,7.3C10.16,6.5 8.09,7.31 7.31,9.07C6.85,10.09 6.93,11.22 7.41,12.13C8.5,10.83 10.16,10 12,10C12.7,10 13.38,10.12 14,10.34C13.94,9.06 13.18,7.86 11.93,7.3M13.55,3.64C13,3.4 12.45,3.23 11.88,3.12L14.37,1.82L15.27,4.71C14.76,4.29 14.19,3.93 13.55,3.64M6.09,4.44C5.6,4.79 5.17,5.19 4.8,5.63L4.91,2.82L7.87,3.5C7.25,3.71 6.65,4.03 6.09,4.44M18,9.71C17.91,9.12 17.78,8.55 17.59,8L19.97,9.5L17.92,11.73C18.03,11.08 18.05,10.4 18,9.71M3.04,11.3C3.11,11.9 3.24,12.47 3.43,13L1.06,11.5L3.1,9.28C3,9.93 2.97,10.61 3.04,11.3M19,18H16V16A4,4 0 0,0 12,12A4,4 0 0,0 8,16H6A2,2 0 0,0 4,18A2,2 0 0,0 6,20H19A1,1 0 0,0 20,19A1,1 0 0,0 19,18Z" /></g><g id="weather-pouring"><path d="M9,12C9.53,12.14 9.85,12.69 9.71,13.22L8.41,18.05C8.27,18.59 7.72,18.9 7.19,18.76C6.65,18.62 6.34,18.07 6.5,17.54L7.78,12.71C7.92,12.17 8.47,11.86 9,12M13,12C13.53,12.14 13.85,12.69 13.71,13.22L11.64,20.95C11.5,21.5 10.95,21.8 10.41,21.66C9.88,21.5 9.56,20.97 9.7,20.43L11.78,12.71C11.92,12.17 12.47,11.86 13,12M17,12C17.53,12.14 17.85,12.69 17.71,13.22L16.41,18.05C16.27,18.59 15.72,18.9 15.19,18.76C14.65,18.62 14.34,18.07 14.5,17.54L15.78,12.71C15.92,12.17 16.47,11.86 17,12M17,10V9A5,5 0 0,0 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8A3,3 0 0,0 3,11C3,12.11 3.6,13.08 4.5,13.6V13.59C5,13.87 5.14,14.5 4.87,14.96C4.59,15.43 4,15.6 3.5,15.32V15.33C2,14.47 1,12.85 1,11A5,5 0 0,1 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8A4,4 0 0,1 23,12C23,13.5 22.2,14.77 21,15.46V15.46C20.5,15.73 19.91,15.57 19.63,15.09C19.36,14.61 19.5,14 20,13.72V13.73C20.6,13.39 21,12.74 21,12A2,2 0 0,0 19,10H17Z" /></g><g id="weather-rainy"><path d="M6,14A1,1 0 0,1 7,15A1,1 0 0,1 6,16A5,5 0 0,1 1,11A5,5 0 0,1 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16H18A1,1 0 0,1 17,15A1,1 0 0,1 18,14H19A2,2 0 0,0 21,12A2,2 0 0,0 19,10H17V9A5,5 0 0,0 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8A3,3 0 0,0 3,11A3,3 0 0,0 6,14M14.83,15.67C16.39,17.23 16.39,19.5 14.83,21.08C14.05,21.86 13,22 12,22C11,22 9.95,21.86 9.17,21.08C7.61,19.5 7.61,17.23 9.17,15.67L12,11L14.83,15.67M13.41,16.69L12,14.25L10.59,16.69C9.8,17.5 9.8,18.7 10.59,19.5C11,19.93 11.5,20 12,20C12.5,20 13,19.93 13.41,19.5C14.2,18.7 14.2,17.5 13.41,16.69Z" /></g><g id="weather-snowy"><path d="M6,14A1,1 0 0,1 7,15A1,1 0 0,1 6,16A5,5 0 0,1 1,11A5,5 0 0,1 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16H18A1,1 0 0,1 17,15A1,1 0 0,1 18,14H19A2,2 0 0,0 21,12A2,2 0 0,0 19,10H17V9A5,5 0 0,0 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8A3,3 0 0,0 3,11A3,3 0 0,0 6,14M7.88,18.07L10.07,17.5L8.46,15.88C8.07,15.5 8.07,14.86 8.46,14.46C8.85,14.07 9.5,14.07 9.88,14.46L11.5,16.07L12.07,13.88C12.21,13.34 12.76,13.03 13.29,13.17C13.83,13.31 14.14,13.86 14,14.4L13.41,16.59L15.6,16C16.14,15.86 16.69,16.17 16.83,16.71C16.97,17.24 16.66,17.79 16.12,17.93L13.93,18.5L15.54,20.12C15.93,20.5 15.93,21.15 15.54,21.54C15.15,21.93 14.5,21.93 14.12,21.54L12.5,19.93L11.93,22.12C11.79,22.66 11.24,22.97 10.71,22.83C10.17,22.69 9.86,22.14 10,21.6L10.59,19.41L8.4,20C7.86,20.14 7.31,19.83 7.17,19.29C7.03,18.76 7.34,18.21 7.88,18.07Z" /></g><g id="weather-snowy-rainy"><path d="M18.5,18.67C18.5,19.96 17.5,21 16.25,21C15,21 14,19.96 14,18.67C14,17.12 16.25,14.5 16.25,14.5C16.25,14.5 18.5,17.12 18.5,18.67M4,17.36C3.86,16.82 4.18,16.25 4.73,16.11L7,15.5L5.33,13.86C4.93,13.46 4.93,12.81 5.33,12.4C5.73,12 6.4,12 6.79,12.4L8.45,14.05L9.04,11.8C9.18,11.24 9.75,10.92 10.29,11.07C10.85,11.21 11.17,11.78 11,12.33L10.42,14.58L12.67,14C13.22,13.83 13.79,14.15 13.93,14.71C14.08,15.25 13.76,15.82 13.2,15.96L10.95,16.55L12.6,18.21C13,18.6 13,19.27 12.6,19.67C12.2,20.07 11.54,20.07 11.15,19.67L9.5,18L8.89,20.27C8.75,20.83 8.18,21.14 7.64,21C7.08,20.86 6.77,20.29 6.91,19.74L7.5,17.5L5.26,18.09C4.71,18.23 4.14,17.92 4,17.36M1,11A5,5 0 0,1 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16A1,1 0 0,1 18,15A1,1 0 0,1 19,14A2,2 0 0,0 21,12A2,2 0 0,0 19,10H17V9A5,5 0 0,0 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8A3,3 0 0,0 3,11C3,11.85 3.35,12.61 3.91,13.16C4.27,13.55 4.26,14.16 3.88,14.54C3.5,14.93 2.85,14.93 2.47,14.54C1.56,13.63 1,12.38 1,11Z" /></g><g id="weather-sunny"><path d="M12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,2L14.39,5.42C13.65,5.15 12.84,5 12,5C11.16,5 10.35,5.15 9.61,5.42L12,2M3.34,7L7.5,6.65C6.9,7.16 6.36,7.78 5.94,8.5C5.5,9.24 5.25,10 5.11,10.79L3.34,7M3.36,17L5.12,13.23C5.26,14 5.53,14.78 5.95,15.5C6.37,16.24 6.91,16.86 7.5,17.37L3.36,17M20.65,7L18.88,10.79C18.74,10 18.47,9.23 18.05,8.5C17.63,7.78 17.1,7.15 16.5,6.64L20.65,7M20.64,17L16.5,17.36C17.09,16.85 17.62,16.22 18.04,15.5C18.46,14.77 18.73,14 18.87,13.21L20.64,17M12,22L9.59,18.56C10.33,18.83 11.14,19 12,19C12.82,19 13.63,18.83 14.37,18.56L12,22Z" /></g><g id="weather-sunset"><path d="M3,12H7A5,5 0 0,1 12,7A5,5 0 0,1 17,12H21A1,1 0 0,1 22,13A1,1 0 0,1 21,14H3A1,1 0 0,1 2,13A1,1 0 0,1 3,12M5,16H19A1,1 0 0,1 20,17A1,1 0 0,1 19,18H5A1,1 0 0,1 4,17A1,1 0 0,1 5,16M17,20A1,1 0 0,1 18,21A1,1 0 0,1 17,22H7A1,1 0 0,1 6,21A1,1 0 0,1 7,20H17M15,12A3,3 0 0,0 12,9A3,3 0 0,0 9,12H15M12,2L14.39,5.42C13.65,5.15 12.84,5 12,5C11.16,5 10.35,5.15 9.61,5.42L12,2M3.34,7L7.5,6.65C6.9,7.16 6.36,7.78 5.94,8.5C5.5,9.24 5.25,10 5.11,10.79L3.34,7M20.65,7L18.88,10.79C18.74,10 18.47,9.23 18.05,8.5C17.63,7.78 17.1,7.15 16.5,6.64L20.65,7Z" /></g><g id="weather-sunset-down"><path d="M3,12H7A5,5 0 0,1 12,7A5,5 0 0,1 17,12H21A1,1 0 0,1 22,13A1,1 0 0,1 21,14H3A1,1 0 0,1 2,13A1,1 0 0,1 3,12M15,12A3,3 0 0,0 12,9A3,3 0 0,0 9,12H15M12,2L14.39,5.42C13.65,5.15 12.84,5 12,5C11.16,5 10.35,5.15 9.61,5.42L12,2M3.34,7L7.5,6.65C6.9,7.16 6.36,7.78 5.94,8.5C5.5,9.24 5.25,10 5.11,10.79L3.34,7M20.65,7L18.88,10.79C18.74,10 18.47,9.23 18.05,8.5C17.63,7.78 17.1,7.15 16.5,6.64L20.65,7M12.71,20.71L15.82,17.6C16.21,17.21 16.21,16.57 15.82,16.18C15.43,15.79 14.8,15.79 14.41,16.18L12,18.59L9.59,16.18C9.2,15.79 8.57,15.79 8.18,16.18C7.79,16.57 7.79,17.21 8.18,17.6L11.29,20.71C11.5,20.9 11.74,21 12,21C12.26,21 12.5,20.9 12.71,20.71Z" /></g><g id="weather-sunset-up"><path d="M3,12H7A5,5 0 0,1 12,7A5,5 0 0,1 17,12H21A1,1 0 0,1 22,13A1,1 0 0,1 21,14H3A1,1 0 0,1 2,13A1,1 0 0,1 3,12M15,12A3,3 0 0,0 12,9A3,3 0 0,0 9,12H15M12,2L14.39,5.42C13.65,5.15 12.84,5 12,5C11.16,5 10.35,5.15 9.61,5.42L12,2M3.34,7L7.5,6.65C6.9,7.16 6.36,7.78 5.94,8.5C5.5,9.24 5.25,10 5.11,10.79L3.34,7M20.65,7L18.88,10.79C18.74,10 18.47,9.23 18.05,8.5C17.63,7.78 17.1,7.15 16.5,6.64L20.65,7M12.71,16.3L15.82,19.41C16.21,19.8 16.21,20.43 15.82,20.82C15.43,21.21 14.8,21.21 14.41,20.82L12,18.41L9.59,20.82C9.2,21.21 8.57,21.21 8.18,20.82C7.79,20.43 7.79,19.8 8.18,19.41L11.29,16.3C11.5,16.1 11.74,16 12,16C12.26,16 12.5,16.1 12.71,16.3Z" /></g><g id="weather-windy"><path d="M4,10A1,1 0 0,1 3,9A1,1 0 0,1 4,8H12A2,2 0 0,0 14,6A2,2 0 0,0 12,4C11.45,4 10.95,4.22 10.59,4.59C10.2,5 9.56,5 9.17,4.59C8.78,4.2 8.78,3.56 9.17,3.17C9.9,2.45 10.9,2 12,2A4,4 0 0,1 16,6A4,4 0 0,1 12,10H4M19,12A1,1 0 0,0 20,11A1,1 0 0,0 19,10C18.72,10 18.47,10.11 18.29,10.29C17.9,10.68 17.27,10.68 16.88,10.29C16.5,9.9 16.5,9.27 16.88,8.88C17.42,8.34 18.17,8 19,8A3,3 0 0,1 22,11A3,3 0 0,1 19,14H5A1,1 0 0,1 4,13A1,1 0 0,1 5,12H19M18,18H4A1,1 0 0,1 3,17A1,1 0 0,1 4,16H18A3,3 0 0,1 21,19A3,3 0 0,1 18,22C17.17,22 16.42,21.66 15.88,21.12C15.5,20.73 15.5,20.1 15.88,19.71C16.27,19.32 16.9,19.32 17.29,19.71C17.47,19.89 17.72,20 18,20A1,1 0 0,0 19,19A1,1 0 0,0 18,18Z" /></g><g id="weather-windy-variant"><path d="M6,6L6.69,6.06C7.32,3.72 9.46,2 12,2A5.5,5.5 0 0,1 17.5,7.5L17.42,8.45C17.88,8.16 18.42,8 19,8A3,3 0 0,1 22,11A3,3 0 0,1 19,14H6A4,4 0 0,1 2,10A4,4 0 0,1 6,6M6,8A2,2 0 0,0 4,10A2,2 0 0,0 6,12H19A1,1 0 0,0 20,11A1,1 0 0,0 19,10H15.5V7.5A3.5,3.5 0 0,0 12,4A3.5,3.5 0 0,0 8.5,7.5V8H6M18,18H4A1,1 0 0,1 3,17A1,1 0 0,1 4,16H18A3,3 0 0,1 21,19A3,3 0 0,1 18,22C17.17,22 16.42,21.66 15.88,21.12C15.5,20.73 15.5,20.1 15.88,19.71C16.27,19.32 16.9,19.32 17.29,19.71C17.47,19.89 17.72,20 18,20A1,1 0 0,0 19,19A1,1 0 0,0 18,18Z" /></g><g id="web"><path d="M16.36,14C16.44,13.34 16.5,12.68 16.5,12C16.5,11.32 16.44,10.66 16.36,10H19.74C19.9,10.64 20,11.31 20,12C20,12.69 19.9,13.36 19.74,14M14.59,19.56C15.19,18.45 15.65,17.25 15.97,16H18.92C17.96,17.65 16.43,18.93 14.59,19.56M14.34,14H9.66C9.56,13.34 9.5,12.68 9.5,12C9.5,11.32 9.56,10.65 9.66,10H14.34C14.43,10.65 14.5,11.32 14.5,12C14.5,12.68 14.43,13.34 14.34,14M12,19.96C11.17,18.76 10.5,17.43 10.09,16H13.91C13.5,17.43 12.83,18.76 12,19.96M8,8H5.08C6.03,6.34 7.57,5.06 9.4,4.44C8.8,5.55 8.35,6.75 8,8M5.08,16H8C8.35,17.25 8.8,18.45 9.4,19.56C7.57,18.93 6.03,17.65 5.08,16M4.26,14C4.1,13.36 4,12.69 4,12C4,11.31 4.1,10.64 4.26,10H7.64C7.56,10.66 7.5,11.32 7.5,12C7.5,12.68 7.56,13.34 7.64,14M12,4.03C12.83,5.23 13.5,6.57 13.91,8H10.09C10.5,6.57 11.17,5.23 12,4.03M18.92,8H15.97C15.65,6.75 15.19,5.55 14.59,4.44C16.43,5.07 17.96,6.34 18.92,8M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="webcam"><path d="M12,2A7,7 0 0,1 19,9A7,7 0 0,1 12,16A7,7 0 0,1 5,9A7,7 0 0,1 12,2M12,4A5,5 0 0,0 7,9A5,5 0 0,0 12,14A5,5 0 0,0 17,9A5,5 0 0,0 12,4M12,6A3,3 0 0,1 15,9A3,3 0 0,1 12,12A3,3 0 0,1 9,9A3,3 0 0,1 12,6M6,22A2,2 0 0,1 4,20C4,19.62 4.1,19.27 4.29,18.97L6.11,15.81C7.69,17.17 9.75,18 12,18C14.25,18 16.31,17.17 17.89,15.81L19.71,18.97C19.9,19.27 20,19.62 20,20A2,2 0 0,1 18,22H6Z" /></g><g id="webhook"><path d="M10.46,19C9,21.07 6.15,21.59 4.09,20.15C2.04,18.71 1.56,15.84 3,13.75C3.87,12.5 5.21,11.83 6.58,11.77L6.63,13.2C5.72,13.27 4.84,13.74 4.27,14.56C3.27,16 3.58,17.94 4.95,18.91C6.33,19.87 8.26,19.5 9.26,18.07C9.57,17.62 9.75,17.13 9.82,16.63V15.62L15.4,15.58L15.47,15.47C16,14.55 17.15,14.23 18.05,14.75C18.95,15.27 19.26,16.43 18.73,17.35C18.2,18.26 17.04,18.58 16.14,18.06C15.73,17.83 15.44,17.46 15.31,17.04L11.24,17.06C11.13,17.73 10.87,18.38 10.46,19M17.74,11.86C20.27,12.17 22.07,14.44 21.76,16.93C21.45,19.43 19.15,21.2 16.62,20.89C15.13,20.71 13.9,19.86 13.19,18.68L14.43,17.96C14.92,18.73 15.75,19.28 16.75,19.41C18.5,19.62 20.05,18.43 20.26,16.76C20.47,15.09 19.23,13.56 17.5,13.35C16.96,13.29 16.44,13.36 15.97,13.53L15.12,13.97L12.54,9.2H12.32C11.26,9.16 10.44,8.29 10.47,7.25C10.5,6.21 11.4,5.4 12.45,5.44C13.5,5.5 14.33,6.35 14.3,7.39C14.28,7.83 14.11,8.23 13.84,8.54L15.74,12.05C16.36,11.85 17.04,11.78 17.74,11.86M8.25,9.14C7.25,6.79 8.31,4.1 10.62,3.12C12.94,2.14 15.62,3.25 16.62,5.6C17.21,6.97 17.09,8.47 16.42,9.67L15.18,8.95C15.6,8.14 15.67,7.15 15.27,6.22C14.59,4.62 12.78,3.85 11.23,4.5C9.67,5.16 8.97,7 9.65,8.6C9.93,9.26 10.4,9.77 10.97,10.11L11.36,10.32L8.29,15.31C8.32,15.36 8.36,15.42 8.39,15.5C8.88,16.41 8.54,17.56 7.62,18.05C6.71,18.54 5.56,18.18 5.06,17.24C4.57,16.31 4.91,15.16 5.83,14.67C6.22,14.46 6.65,14.41 7.06,14.5L9.37,10.73C8.9,10.3 8.5,9.76 8.25,9.14Z" /></g><g id="wechat"><path d="M9.5,4C5.36,4 2,6.69 2,10C2,11.89 3.08,13.56 4.78,14.66L4,17L6.5,15.5C7.39,15.81 8.37,16 9.41,16C9.15,15.37 9,14.7 9,14C9,10.69 12.13,8 16,8C16.19,8 16.38,8 16.56,8.03C15.54,5.69 12.78,4 9.5,4M6.5,6.5A1,1 0 0,1 7.5,7.5A1,1 0 0,1 6.5,8.5A1,1 0 0,1 5.5,7.5A1,1 0 0,1 6.5,6.5M11.5,6.5A1,1 0 0,1 12.5,7.5A1,1 0 0,1 11.5,8.5A1,1 0 0,1 10.5,7.5A1,1 0 0,1 11.5,6.5M16,9C12.69,9 10,11.24 10,14C10,16.76 12.69,19 16,19C16.67,19 17.31,18.92 17.91,18.75L20,20L19.38,18.13C20.95,17.22 22,15.71 22,14C22,11.24 19.31,9 16,9M14,11.5A1,1 0 0,1 15,12.5A1,1 0 0,1 14,13.5A1,1 0 0,1 13,12.5A1,1 0 0,1 14,11.5M18,11.5A1,1 0 0,1 19,12.5A1,1 0 0,1 18,13.5A1,1 0 0,1 17,12.5A1,1 0 0,1 18,11.5Z" /></g><g id="weight"><path d="M12,3A4,4 0 0,1 16,7C16,7.73 15.81,8.41 15.46,9H18C18.95,9 19.75,9.67 19.95,10.56C21.96,18.57 22,18.78 22,19A2,2 0 0,1 20,21H4A2,2 0 0,1 2,19C2,18.78 2.04,18.57 4.05,10.56C4.25,9.67 5.05,9 6,9H8.54C8.19,8.41 8,7.73 8,7A4,4 0 0,1 12,3M12,5A2,2 0 0,0 10,7A2,2 0 0,0 12,9A2,2 0 0,0 14,7A2,2 0 0,0 12,5Z" /></g><g id="weight-kilogram"><path d="M12,3A4,4 0 0,1 16,7C16,7.73 15.81,8.41 15.46,9H18C18.95,9 19.75,9.67 19.95,10.56C21.96,18.57 22,18.78 22,19A2,2 0 0,1 20,21H4A2,2 0 0,1 2,19C2,18.78 2.04,18.57 4.05,10.56C4.25,9.67 5.05,9 6,9H8.54C8.19,8.41 8,7.73 8,7A4,4 0 0,1 12,3M12,5A2,2 0 0,0 10,7A2,2 0 0,0 12,9A2,2 0 0,0 14,7A2,2 0 0,0 12,5M9.04,15.44L10.4,18H12.11L10.07,14.66L11.95,11.94H10.2L8.87,14.33H8.39V11.94H6.97V18H8.39V15.44H9.04M17.31,17.16V14.93H14.95V16.04H15.9V16.79L15.55,16.93L14.94,17C14.59,17 14.31,16.85 14.11,16.6C13.92,16.34 13.82,16 13.82,15.59V14.34C13.82,13.93 13.92,13.6 14.12,13.35C14.32,13.09 14.58,12.97 14.91,12.97C15.24,12.97 15.5,13.05 15.64,13.21C15.8,13.37 15.9,13.61 15.95,13.93H17.27L17.28,13.9C17.23,13.27 17,12.77 16.62,12.4C16.23,12.04 15.64,11.86 14.86,11.86C14.14,11.86 13.56,12.09 13.1,12.55C12.64,13 12.41,13.61 12.41,14.34V15.6C12.41,16.34 12.65,16.94 13.12,17.4C13.58,17.86 14.19,18.09 14.94,18.09C15.53,18.09 16.03,18 16.42,17.81C16.81,17.62 17.11,17.41 17.31,17.16Z" /></g><g id="whatsapp"><path d="M16.75,13.96C17,14.09 17.16,14.16 17.21,14.26C17.27,14.37 17.25,14.87 17,15.44C16.8,16 15.76,16.54 15.3,16.56C14.84,16.58 14.83,16.92 12.34,15.83C9.85,14.74 8.35,12.08 8.23,11.91C8.11,11.74 7.27,10.53 7.31,9.3C7.36,8.08 8,7.5 8.26,7.26C8.5,7 8.77,6.97 8.94,7H9.41C9.56,7 9.77,6.94 9.96,7.45L10.65,9.32C10.71,9.45 10.75,9.6 10.66,9.76L10.39,10.17L10,10.59C9.88,10.71 9.74,10.84 9.88,11.09C10,11.35 10.5,12.18 11.2,12.87C12.11,13.75 12.91,14.04 13.15,14.17C13.39,14.31 13.54,14.29 13.69,14.13L14.5,13.19C14.69,12.94 14.85,13 15.08,13.08L16.75,13.96M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22C10.03,22 8.2,21.43 6.65,20.45L2,22L3.55,17.35C2.57,15.8 2,13.97 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12C4,13.72 4.54,15.31 5.46,16.61L4.5,19.5L7.39,18.54C8.69,19.46 10.28,20 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z" /></g><g id="wheelchair-accessibility"><path d="M18.4,11.2L14.3,11.4L16.6,8.8C16.8,8.5 16.9,8 16.8,7.5C16.7,7.2 16.6,6.9 16.3,6.7L10.9,3.5C10.5,3.2 9.9,3.3 9.5,3.6L6.8,6.1C6.3,6.6 6.2,7.3 6.7,7.8C7.1,8.3 7.9,8.3 8.4,7.9L10.4,6.1L12.3,7.2L8.1,11.5C8,11.6 8,11.7 7.9,11.7C7.4,11.9 6.9,12.1 6.5,12.4L8,13.9C8.5,13.7 9,13.5 9.5,13.5C11.4,13.5 13,15.1 13,17C13,17.6 12.9,18.1 12.6,18.5L14.1,20C14.7,19.1 15,18.1 15,17C15,15.8 14.6,14.6 13.9,13.7L17.2,13.4L17,18.2C16.9,18.9 17.4,19.4 18.1,19.5H18.2C18.8,19.5 19.3,19 19.4,18.4L19.6,12.5C19.6,12.2 19.5,11.8 19.3,11.6C19,11.3 18.7,11.2 18.4,11.2M18,5.5A2,2 0 0,0 20,3.5A2,2 0 0,0 18,1.5A2,2 0 0,0 16,3.5A2,2 0 0,0 18,5.5M12.5,21.6C11.6,22.2 10.6,22.5 9.5,22.5C6.5,22.5 4,20 4,17C4,15.9 4.3,14.9 4.9,14L6.4,15.5C6.2,16 6,16.5 6,17C6,18.9 7.6,20.5 9.5,20.5C10.1,20.5 10.6,20.4 11,20.1L12.5,21.6Z" /></g><g id="white-balance-auto"><path d="M10.3,16L9.6,14H6.4L5.7,16H3.8L7,7H9L12.2,16M22,7L20.8,13.29L19.3,7H17.7L16.21,13.29L15,7H14.24C12.77,5.17 10.5,4 8,4A8,8 0 0,0 0,12A8,8 0 0,0 8,20C11.13,20 13.84,18.19 15.15,15.57L15.25,16H17L18.5,9.9L20,16H21.75L23.8,7M6.85,12.65H9.15L8,9L6.85,12.65Z" /></g><g id="white-balance-incandescent"><path d="M17.24,18.15L19.04,19.95L20.45,18.53L18.66,16.74M20,12.5H23V10.5H20M15,6.31V1.5H9V6.31C7.21,7.35 6,9.28 6,11.5A6,6 0 0,0 12,17.5A6,6 0 0,0 18,11.5C18,9.28 16.79,7.35 15,6.31M4,10.5H1V12.5H4M11,22.45C11.32,22.45 13,22.45 13,22.45V19.5H11M3.55,18.53L4.96,19.95L6.76,18.15L5.34,16.74L3.55,18.53Z" /></g><g id="white-balance-iridescent"><path d="M4.96,19.95L6.76,18.15L5.34,16.74L3.55,18.53M3.55,4.46L5.34,6.26L6.76,4.84L4.96,3.05M20.45,18.53L18.66,16.74L17.24,18.15L19.04,19.95M13,22.45V19.5H11V22.45C11.32,22.45 13,22.45 13,22.45M19.04,3.05L17.24,4.84L18.66,6.26L20.45,4.46M11,3.5H13V0.55H11M5,14.5H19V8.5H5V14.5Z" /></g><g id="white-balance-sunny"><path d="M3.55,18.54L4.96,19.95L6.76,18.16L5.34,16.74M11,22.45C11.32,22.45 13,22.45 13,22.45V19.5H11M12,5.5A6,6 0 0,0 6,11.5A6,6 0 0,0 12,17.5A6,6 0 0,0 18,11.5C18,8.18 15.31,5.5 12,5.5M20,12.5H23V10.5H20M17.24,18.16L19.04,19.95L20.45,18.54L18.66,16.74M20.45,4.46L19.04,3.05L17.24,4.84L18.66,6.26M13,0.55H11V3.5H13M4,10.5H1V12.5H4M6.76,4.84L4.96,3.05L3.55,4.46L5.34,6.26L6.76,4.84Z" /></g><g id="widgets"><path d="M3,3H11V7.34L16.66,1.69L22.31,7.34L16.66,13H21V21H13V13H16.66L11,7.34V11H3V3M3,13H11V21H3V13Z" /></g><g id="wifi"><path d="M12,21L15.6,16.2C14.6,15.45 13.35,15 12,15C10.65,15 9.4,15.45 8.4,16.2L12,21M12,3C7.95,3 4.21,4.34 1.2,6.6L3,9C5.5,7.12 8.62,6 12,6C15.38,6 18.5,7.12 21,9L22.8,6.6C19.79,4.34 16.05,3 12,3M12,9C9.3,9 6.81,9.89 4.8,11.4L6.6,13.8C8.1,12.67 9.97,12 12,12C14.03,12 15.9,12.67 17.4,13.8L19.2,11.4C17.19,9.89 14.7,9 12,9Z" /></g><g id="wifi-off"><path d="M2.28,3L1,4.27L2.47,5.74C2.04,6 1.61,6.29 1.2,6.6L3,9C3.53,8.6 4.08,8.25 4.66,7.93L6.89,10.16C6.15,10.5 5.44,10.91 4.8,11.4L6.6,13.8C7.38,13.22 8.26,12.77 9.2,12.47L11.75,15C10.5,15.07 9.34,15.5 8.4,16.2L12,21L14.46,17.73L17.74,21L19,19.72M12,3C9.85,3 7.8,3.38 5.9,4.07L8.29,6.47C9.5,6.16 10.72,6 12,6C15.38,6 18.5,7.11 21,9L22.8,6.6C19.79,4.34 16.06,3 12,3M12,9C11.62,9 11.25,9 10.88,9.05L14.07,12.25C15.29,12.53 16.43,13.07 17.4,13.8L19.2,11.4C17.2,9.89 14.7,9 12,9Z" /></g><g id="wii"><path d="M17.84,16.94H15.97V10.79H17.84V16.94M18,8.58C18,9.19 17.5,9.69 16.9,9.69A1.11,1.11 0 0,1 15.79,8.58C15.79,7.96 16.29,7.46 16.9,7.46C17.5,7.46 18,7.96 18,8.58M21.82,16.94H19.94V10.79H21.82V16.94M22,8.58C22,9.19 21.5,9.69 20.88,9.69A1.11,1.11 0 0,1 19.77,8.58C19.77,7.96 20.27,7.46 20.88,7.46C21.5,7.46 22,7.96 22,8.58M12.9,8.05H14.9L12.78,15.5C12.78,15.5 12.5,17.04 11.28,17.04C10.07,17.04 9.79,15.5 9.79,15.5L8.45,10.64L7.11,15.5C7.11,15.5 6.82,17.04 5.61,17.04C4.4,17.04 4.12,15.5 4.12,15.5L2,8.05H4L5.72,14.67L7.11,9.3C7.43,7.95 8.45,7.97 8.45,7.97C8.45,7.97 9.47,7.95 9.79,9.3L11.17,14.67L12.9,8.05Z" /></g><g id="wiiu"><path d="M2,15.96C2,18.19 3.54,19.5 5.79,19.5H18.57C20.47,19.5 22,18.2 22,16.32V6.97C22,5.83 21.15,4.6 20.11,4.6H17.15V12.3C17.15,18.14 6.97,18.09 6.97,12.41V4.5H4.72C3.26,4.5 2,5.41 2,6.85V15.96M9.34,11.23C9.34,15.74 14.66,15.09 14.66,11.94V4.5H9.34V11.23Z" /></g><g id="wikipedia"><path d="M14.97,18.95L12.41,12.92C11.39,14.91 10.27,17 9.31,18.95C9.3,18.96 8.84,18.95 8.84,18.95C7.37,15.5 5.85,12.1 4.37,8.68C4.03,7.84 2.83,6.5 2,6.5C2,6.4 2,6.18 2,6.05H7.06V6.5C6.46,6.5 5.44,6.9 5.7,7.55C6.42,9.09 8.94,15.06 9.63,16.58C10.1,15.64 11.43,13.16 12,12.11C11.55,11.23 10.13,7.93 9.71,7.11C9.39,6.57 8.58,6.5 7.96,6.5C7.96,6.35 7.97,6.25 7.96,6.06L12.42,6.07V6.47C11.81,6.5 11.24,6.71 11.5,7.29C12.1,8.53 12.45,9.42 13,10.57C13.17,10.23 14.07,8.38 14.5,7.41C14.76,6.76 14.37,6.5 13.29,6.5C13.3,6.38 13.3,6.17 13.3,6.07C14.69,6.06 16.78,6.06 17.15,6.05V6.47C16.44,6.5 15.71,6.88 15.33,7.46L13.5,11.3C13.68,11.81 15.46,15.76 15.65,16.2L19.5,7.37C19.2,6.65 18.34,6.5 18,6.5C18,6.37 18,6.2 18,6.05L22,6.08V6.1L22,6.5C21.12,6.5 20.57,7 20.25,7.75C19.45,9.54 17,15.24 15.4,18.95C15.4,18.95 14.97,18.95 14.97,18.95Z" /></g><g id="window-close"><path d="M13.46,12L19,17.54V19H17.54L12,13.46L6.46,19H5V17.54L10.54,12L5,6.46V5H6.46L12,10.54L17.54,5H19V6.46L13.46,12Z" /></g><g id="window-closed"><path d="M6,11H10V9H14V11H18V4H6V11M18,13H6V20H18V13M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2Z" /></g><g id="window-maximize"><path d="M4,4H20V20H4V4M6,8V18H18V8H6Z" /></g><g id="window-minimize"><path d="M20,14H4V10H20" /></g><g id="window-open"><path d="M6,8H10V6H14V8H18V4H6V8M18,10H6V15H18V10M6,20H18V17H6V20M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2Z" /></g><g id="window-restore"><path d="M4,8H8V4H20V16H16V20H4V8M16,8V14H18V6H10V8H16M6,12V18H14V12H6Z" /></g><g id="windows"><path d="M3,12V6.75L9,5.43V11.91L3,12M20,3V11.75L10,11.9V5.21L20,3M3,13L9,13.09V19.9L3,18.75V13M20,13.25V22L10,20.09V13.1L20,13.25Z" /></g><g id="wordpress"><path d="M12.2,15.5L9.65,21.72C10.4,21.9 11.19,22 12,22C12.84,22 13.66,21.9 14.44,21.7M20.61,7.06C20.8,7.96 20.76,9.05 20.39,10.25C19.42,13.37 17,19 16.1,21.13C19.58,19.58 22,16.12 22,12.1C22,10.26 21.5,8.53 20.61,7.06M4.31,8.64C4.31,8.64 3.82,8 3.31,8H2.78C2.28,9.13 2,10.62 2,12C2,16.09 4.5,19.61 8.12,21.11M3.13,7.14C4.8,4.03 8.14,2 12,2C14.5,2 16.78,3.06 18.53,4.56C18.03,4.46 17.5,4.57 16.93,4.89C15.64,5.63 15.22,7.71 16.89,8.76C17.94,9.41 18.31,11.04 18.27,12.04C18.24,13.03 15.85,17.61 15.85,17.61L13.5,9.63C13.5,9.63 13.44,9.07 13.44,8.91C13.44,8.71 13.5,8.46 13.63,8.31C13.72,8.22 13.85,8 14,8H15.11V7.14H9.11V8H9.3C9.5,8 9.69,8.29 9.87,8.47C10.09,8.7 10.37,9.55 10.7,10.43L11.57,13.3L9.69,17.63L7.63,8.97C7.63,8.97 7.69,8.37 7.82,8.27C7.9,8.2 8,8 8.17,8H8.22V7.14H3.13Z" /></g><g id="worker"><path d="M12,15C7.58,15 4,16.79 4,19V21H20V19C20,16.79 16.42,15 12,15M8,9A4,4 0 0,0 12,13A4,4 0 0,0 16,9M11.5,2C11.2,2 11,2.21 11,2.5V5.5H10V3C10,3 7.75,3.86 7.75,6.75C7.75,6.75 7,6.89 7,8H17C16.95,6.89 16.25,6.75 16.25,6.75C16.25,3.86 14,3 14,3V5.5H13V2.5C13,2.21 12.81,2 12.5,2H11.5Z" /></g><g id="wrap"><path d="M21,5H3V7H21V5M3,19H10V17H3V19M3,13H18C19,13 20,13.43 20,15C20,16.57 19,17 18,17H16V15L12,18L16,21V19H18C20.95,19 22,17.73 22,15C22,12.28 21,11 18,11H3V13Z" /></g><g id="wrench"><path d="M22.7,19L13.6,9.9C14.5,7.6 14,4.9 12.1,3C10.1,1 7.1,0.6 4.7,1.7L9,6L6,9L1.6,4.7C0.4,7.1 0.9,10.1 2.9,12.1C4.8,14 7.5,14.5 9.8,13.6L18.9,22.7C19.3,23.1 19.9,23.1 20.3,22.7L22.6,20.4C23.1,20 23.1,19.3 22.7,19Z" /></g><g id="wunderlist"><path d="M17,17.5L12,15L7,17.5V5H5V19H19V5H17V17.5M12,12.42L14.25,13.77L13.65,11.22L15.64,9.5L13,9.27L12,6.86L11,9.27L8.36,9.5L10.35,11.22L9.75,13.77L12,12.42M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z" /></g><g id="xaml"><path d="M18.93,12L15.46,18H8.54L5.07,12L8.54,6H15.46L18.93,12M23.77,12L19.73,19L18,18L21.46,12L18,6L19.73,5L23.77,12M0.23,12L4.27,5L6,6L2.54,12L6,18L4.27,19L0.23,12Z" /></g><g id="xbox"><path d="M6.43,3.72C6.5,3.66 6.57,3.6 6.62,3.56C8.18,2.55 10,2 12,2C13.88,2 15.64,2.5 17.14,3.42C17.25,3.5 17.54,3.69 17.7,3.88C16.25,2.28 12,5.7 12,5.7C10.5,4.57 9.17,3.8 8.16,3.5C7.31,3.29 6.73,3.5 6.46,3.7M19.34,5.21C19.29,5.16 19.24,5.11 19.2,5.06C18.84,4.66 18.38,4.56 18,4.59C17.61,4.71 15.9,5.32 13.8,7.31C13.8,7.31 16.17,9.61 17.62,11.96C19.07,14.31 19.93,16.16 19.4,18.73C21,16.95 22,14.59 22,12C22,9.38 21,7 19.34,5.21M15.73,12.96C15.08,12.24 14.13,11.21 12.86,9.95C12.59,9.68 12.3,9.4 12,9.1C12,9.1 11.53,9.56 10.93,10.17C10.16,10.94 9.17,11.95 8.61,12.54C7.63,13.59 4.81,16.89 4.65,18.74C4.65,18.74 4,17.28 5.4,13.89C6.3,11.68 9,8.36 10.15,7.28C10.15,7.28 9.12,6.14 7.82,5.35L7.77,5.32C7.14,4.95 6.46,4.66 5.8,4.62C5.13,4.67 4.71,5.16 4.71,5.16C3.03,6.95 2,9.35 2,12A10,10 0 0,0 12,22C14.93,22 17.57,20.74 19.4,18.73C19.4,18.73 19.19,17.4 17.84,15.5C17.53,15.07 16.37,13.69 15.73,12.96Z" /></g><g id="xbox-controller"><path d="M8.75,15.75C6.75,15.75 6,18 4,19C2,19 0.5,16 4.5,7.5H4.75L5.19,6.67C5.19,6.67 8,5 9.33,6.23H14.67C16,5 18.81,6.67 18.81,6.67L19.25,7.5H19.5C23.5,16 22,19 20,19C18,18 17.25,15.75 15.25,15.75H8.75M12,7A1,1 0 0,0 11,8A1,1 0 0,0 12,9A1,1 0 0,0 13,8A1,1 0 0,0 12,7Z" /></g><g id="xbox-controller-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L12.5,15.75H8.75C6.75,15.75 6,18 4,19C2,19 0.5,16.04 4.42,7.69L2,5.27M9.33,6.23H14.67C16,5 18.81,6.67 18.81,6.67L19.25,7.5H19.5C23,15 22.28,18.2 20.69,18.87L7.62,5.8C8.25,5.73 8.87,5.81 9.33,6.23M12,7A1,1 0 0,0 11,8A1,1 0 0,0 12,9A1,1 0 0,0 13,8A1,1 0 0,0 12,7Z" /></g><g id="xda"><path d="M-0.05,16.79L3.19,12.97L-0.05,9.15L1.5,7.86L4.5,11.41L7.5,7.86L9.05,9.15L5.81,12.97L9.05,16.79L7.5,18.07L4.5,14.5L1.5,18.07L-0.05,16.79M24,17A1,1 0 0,1 23,18H20A2,2 0 0,1 18,16V14A2,2 0 0,1 20,12H22V10H18V8H23A1,1 0 0,1 24,9M22,14H20V16H22V14M16,17A1,1 0 0,1 15,18H12A2,2 0 0,1 10,16V10A2,2 0 0,1 12,8H14V5H16V17M14,16V10H12V16H14Z" /></g><g id="xing"><path d="M17.67,2C17.24,2 17.05,2.27 16.9,2.55C16.9,2.55 10.68,13.57 10.5,13.93L14.58,21.45C14.72,21.71 14.94,22 15.38,22H18.26C18.44,22 18.57,21.93 18.64,21.82C18.72,21.69 18.72,21.53 18.64,21.37L14.57,13.92L20.96,2.63C21.04,2.47 21.04,2.31 20.97,2.18C20.89,2.07 20.76,2 20.58,2M5.55,5.95C5.38,5.95 5.23,6 5.16,6.13C5.08,6.26 5.09,6.41 5.18,6.57L7.12,9.97L4.06,15.37C4,15.53 4,15.69 4.06,15.82C4.13,15.94 4.26,16 4.43,16H7.32C7.75,16 7.96,15.72 8.11,15.45C8.11,15.45 11.1,10.16 11.22,9.95L9.24,6.5C9.1,6.24 8.88,5.95 8.43,5.95" /></g><g id="xing-box"><path d="M4.8,3C3.8,3 3,3.8 3,4.8V19.2C3,20.2 3.8,21 4.8,21H19.2C20.2,21 21,20.2 21,19.2V4.8C21,3.8 20.2,3 19.2,3M16.07,5H18.11C18.23,5 18.33,5.04 18.37,5.13C18.43,5.22 18.43,5.33 18.37,5.44L13.9,13.36L16.75,18.56C16.81,18.67 16.81,18.78 16.75,18.87C16.7,18.95 16.61,19 16.5,19H14.47C14.16,19 14,18.79 13.91,18.61L11.04,13.35C11.18,13.1 15.53,5.39 15.53,5.39C15.64,5.19 15.77,5 16.07,5M7.09,7.76H9.1C9.41,7.76 9.57,7.96 9.67,8.15L11.06,10.57C10.97,10.71 8.88,14.42 8.88,14.42C8.77,14.61 8.63,14.81 8.32,14.81H6.3C6.18,14.81 6.09,14.76 6.04,14.67C6,14.59 6,14.47 6.04,14.36L8.18,10.57L6.82,8.2C6.77,8.09 6.75,8 6.81,7.89C6.86,7.81 6.96,7.76 7.09,7.76Z" /></g><g id="xing-circle"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M15.85,6H17.74C17.86,6 17.94,6.04 18,6.12C18.04,6.2 18.04,6.3 18,6.41L13.84,13.76L16.5,18.59C16.53,18.69 16.53,18.8 16.5,18.88C16.43,18.96 16.35,19 16.24,19H14.36C14.07,19 13.93,18.81 13.84,18.64L11.17,13.76C11.31,13.5 15.35,6.36 15.35,6.36C15.45,6.18 15.57,6 15.85,6M7.5,8.57H9.39C9.67,8.57 9.81,8.75 9.9,8.92L11.19,11.17C11.12,11.3 9.17,14.75 9.17,14.75C9.07,14.92 8.94,15.11 8.66,15.11H6.78C6.67,15.11 6.59,15.06 6.54,15C6.5,14.9 6.5,14.8 6.54,14.69L8.53,11.17L7.27,9C7.21,8.87 7.2,8.77 7.25,8.69C7.3,8.61 7.39,8.57 7.5,8.57Z" /></g><g id="xml"><path d="M12.89,3L14.85,3.4L11.11,21L9.15,20.6L12.89,3M19.59,12L16,8.41V5.58L22.42,12L16,18.41V15.58L19.59,12M1.58,12L8,5.58V8.41L4.41,12L8,15.58V18.41L1.58,12Z" /></g><g id="yeast"><path d="M18,14A4,4 0 0,1 22,18A4,4 0 0,1 18,22A4,4 0 0,1 14,18L14.09,17.15C14.05,16.45 13.92,15.84 13.55,15.5C13.35,15.3 13.07,15.19 12.75,15.13C11.79,15.68 10.68,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3A6.5,6.5 0 0,1 16,9.5C16,10.68 15.68,11.79 15.13,12.75C15.19,13.07 15.3,13.35 15.5,13.55C15.84,13.92 16.45,14.05 17.15,14.09L18,14M7.5,10A1.5,1.5 0 0,1 9,11.5A1.5,1.5 0 0,1 7.5,13A1.5,1.5 0 0,1 6,11.5A1.5,1.5 0 0,1 7.5,10M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z" /></g><g id="yelp"><path d="M10.59,2C11.23,2 11.5,2.27 11.58,2.97L11.79,6.14L12.03,10.29C12.05,10.64 12,11 11.86,11.32C11.64,11.77 11.14,11.89 10.73,11.58C10.5,11.39 10.31,11.14 10.15,10.87L6.42,4.55C6.06,3.94 6.17,3.54 6.77,3.16C7.5,2.68 9.73,2 10.59,2M14.83,14.85L15.09,14.91L18.95,16.31C19.61,16.55 19.79,16.92 19.5,17.57C19.06,18.7 18.34,19.66 17.42,20.45C16.96,20.85 16.5,20.78 16.21,20.28L13.94,16.32C13.55,15.61 14.03,14.8 14.83,14.85M4.5,14C4.5,13.26 4.5,12.55 4.75,11.87C4.97,11.2 5.33,11 6,11.27L9.63,12.81C10.09,13 10.35,13.32 10.33,13.84C10.3,14.36 9.97,14.58 9.53,14.73L5.85,15.94C5.15,16.17 4.79,15.96 4.64,15.25C4.55,14.83 4.47,14.4 4.5,14M11.97,21C11.95,21.81 11.6,22.12 10.81,22C9.77,21.8 8.81,21.4 7.96,20.76C7.54,20.44 7.45,19.95 7.76,19.53L10.47,15.97C10.7,15.67 11.03,15.6 11.39,15.74C11.77,15.88 11.97,16.18 11.97,16.59V21M14.45,13.32C13.73,13.33 13.23,12.5 13.64,11.91C14.47,10.67 15.35,9.46 16.23,8.26C16.5,7.85 16.94,7.82 17.31,8.16C18.24,9 18.91,10 19.29,11.22C19.43,11.67 19.25,12.08 18.83,12.2L15.09,13.17L14.45,13.32Z" /></g><g id="yin-yang"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A4,4 0 0,1 8,16A4,4 0 0,1 12,12A4,4 0 0,0 16,8A4,4 0 0,0 12,4M12,6.5A1.5,1.5 0 0,1 13.5,8A1.5,1.5 0 0,1 12,9.5A1.5,1.5 0 0,1 10.5,8A1.5,1.5 0 0,1 12,6.5M12,14.5A1.5,1.5 0 0,0 10.5,16A1.5,1.5 0 0,0 12,17.5A1.5,1.5 0 0,0 13.5,16A1.5,1.5 0 0,0 12,14.5Z" /></g><g id="youtube-play"><path d="M10,16.5V7.5L16,12M20,4.4C19.4,4.2 15.7,4 12,4C8.3,4 4.6,4.19 4,4.38C2.44,4.9 2,8.4 2,12C2,15.59 2.44,19.1 4,19.61C4.6,19.81 8.3,20 12,20C15.7,20 19.4,19.81 20,19.61C21.56,19.1 22,15.59 22,12C22,8.4 21.56,4.91 20,4.4Z" /></g><g id="zip-box"><path d="M14,17H12V15H10V13H12V15H14M14,9H12V11H14V13H12V11H10V9H12V7H10V5H12V7H14M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g></defs></svg></iron-iconset-svg> \ No newline at end of file +<iron-iconset-svg name="mdi" iconSize="24"><svg><defs><g id="access-point"><path d="M4.93,4.93C3.12,6.74 2,9.24 2,12C2,14.76 3.12,17.26 4.93,19.07L6.34,17.66C4.89,16.22 4,14.22 4,12C4,9.79 4.89,7.78 6.34,6.34L4.93,4.93M19.07,4.93L17.66,6.34C19.11,7.78 20,9.79 20,12C20,14.22 19.11,16.22 17.66,17.66L19.07,19.07C20.88,17.26 22,14.76 22,12C22,9.24 20.88,6.74 19.07,4.93M7.76,7.76C6.67,8.85 6,10.35 6,12C6,13.65 6.67,15.15 7.76,16.24L9.17,14.83C8.45,14.11 8,13.11 8,12C8,10.89 8.45,9.89 9.17,9.17L7.76,7.76M16.24,7.76L14.83,9.17C15.55,9.89 16,10.89 16,12C16,13.11 15.55,14.11 14.83,14.83L16.24,16.24C17.33,15.15 18,13.65 18,12C18,10.35 17.33,8.85 16.24,7.76M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z" /></g><g id="access-point-network"><path d="M4.93,2.93C3.12,4.74 2,7.24 2,10C2,12.76 3.12,15.26 4.93,17.07L6.34,15.66C4.89,14.22 4,12.22 4,10C4,7.79 4.89,5.78 6.34,4.34L4.93,2.93M19.07,2.93L17.66,4.34C19.11,5.78 20,7.79 20,10C20,12.22 19.11,14.22 17.66,15.66L19.07,17.07C20.88,15.26 22,12.76 22,10C22,7.24 20.88,4.74 19.07,2.93M7.76,5.76C6.67,6.85 6,8.35 6,10C6,11.65 6.67,13.15 7.76,14.24L9.17,12.83C8.45,12.11 8,11.11 8,10C8,8.89 8.45,7.89 9.17,7.17L7.76,5.76M16.24,5.76L14.83,7.17C15.55,7.89 16,8.89 16,10C16,11.11 15.55,12.11 14.83,12.83L16.24,14.24C17.33,13.15 18,11.65 18,10C18,8.35 17.33,6.85 16.24,5.76M12,8A2,2 0 0,0 10,10A2,2 0 0,0 12,12A2,2 0 0,0 14,10A2,2 0 0,0 12,8M11,14V18H10A1,1 0 0,0 9,19H2V21H9A1,1 0 0,0 10,22H14A1,1 0 0,0 15,21H22V19H15A1,1 0 0,0 14,18H13V14H11Z" /></g><g id="account"><path d="M12,4A4,4 0 0,1 16,8A4,4 0 0,1 12,12A4,4 0 0,1 8,8A4,4 0 0,1 12,4M12,14C16.42,14 20,15.79 20,18V20H4V18C4,15.79 7.58,14 12,14Z" /></g><g id="account-alert"><path d="M10,4A4,4 0 0,1 14,8A4,4 0 0,1 10,12A4,4 0 0,1 6,8A4,4 0 0,1 10,4M10,14C14.42,14 18,15.79 18,18V20H2V18C2,15.79 5.58,14 10,14M20,12V7H22V12H20M20,16V14H22V16H20Z" /></g><g id="account-box"><path d="M6,17C6,15 10,13.9 12,13.9C14,13.9 18,15 18,17V18H6M15,9A3,3 0 0,1 12,12A3,3 0 0,1 9,9A3,3 0 0,1 12,6A3,3 0 0,1 15,9M3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5C3.89,3 3,3.9 3,5Z" /></g><g id="account-box-outline"><path d="M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M16.5,16.25C16.5,14.75 13.5,14 12,14C10.5,14 7.5,14.75 7.5,16.25V17H16.5M12,12.25A2.25,2.25 0 0,0 14.25,10A2.25,2.25 0 0,0 12,7.75A2.25,2.25 0 0,0 9.75,10A2.25,2.25 0 0,0 12,12.25Z" /></g><g id="account-card-details"><path d="M2,3H22C23.05,3 24,3.95 24,5V19C24,20.05 23.05,21 22,21H2C0.95,21 0,20.05 0,19V5C0,3.95 0.95,3 2,3M14,6V7H22V6H14M14,8V9H21.5L22,9V8H14M14,10V11H21V10H14M8,13.91C6,13.91 2,15 2,17V18H14V17C14,15 10,13.91 8,13.91M8,6A3,3 0 0,0 5,9A3,3 0 0,0 8,12A3,3 0 0,0 11,9A3,3 0 0,0 8,6Z" /></g><g id="account-check"><path d="M9,5A3.5,3.5 0 0,1 12.5,8.5A3.5,3.5 0 0,1 9,12A3.5,3.5 0 0,1 5.5,8.5A3.5,3.5 0 0,1 9,5M9,13.75C12.87,13.75 16,15.32 16,17.25V19H2V17.25C2,15.32 5.13,13.75 9,13.75M17,12.66L14.25,9.66L15.41,8.5L17,10.09L20.59,6.5L21.75,7.91L17,12.66Z" /></g><g id="account-circle"><path d="M12,19.2C9.5,19.2 7.29,17.92 6,16C6.03,14 10,12.9 12,12.9C14,12.9 17.97,14 18,16C16.71,17.92 14.5,19.2 12,19.2M12,5A3,3 0 0,1 15,8A3,3 0 0,1 12,11A3,3 0 0,1 9,8A3,3 0 0,1 12,5M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z" /></g><g id="account-convert"><path d="M7.5,21.5L8.85,20.16L12.66,23.97L12,24C5.71,24 0.56,19.16 0.05,13H1.55C1.91,16.76 4.25,19.94 7.5,21.5M16.5,2.5L15.15,3.84L11.34,0.03L12,0C18.29,0 23.44,4.84 23.95,11H22.45C22.09,7.24 19.75,4.07 16.5,2.5M6,17C6,15 10,13.9 12,13.9C14,13.9 18,15 18,17V18H6V17M15,9A3,3 0 0,1 12,12A3,3 0 0,1 9,9A3,3 0 0,1 12,6A3,3 0 0,1 15,9Z" /></g><g id="account-key"><path d="M11,10V12H10V14H8V12H5.83C5.42,13.17 4.31,14 3,14A3,3 0 0,1 0,11A3,3 0 0,1 3,8C4.31,8 5.42,8.83 5.83,10H11M3,10A1,1 0 0,0 2,11A1,1 0 0,0 3,12A1,1 0 0,0 4,11A1,1 0 0,0 3,10M16,14C18.67,14 24,15.34 24,18V20H8V18C8,15.34 13.33,14 16,14M16,12A4,4 0 0,1 12,8A4,4 0 0,1 16,4A4,4 0 0,1 20,8A4,4 0 0,1 16,12Z" /></g><g id="account-location"><path d="M18,16H6V15.1C6,13.1 10,12 12,12C14,12 18,13.1 18,15.1M12,5.3C13.5,5.3 14.7,6.5 14.7,8C14.7,9.5 13.5,10.7 12,10.7C10.5,10.7 9.3,9.5 9.3,8C9.3,6.5 10.5,5.3 12,5.3M19,2H5C3.89,2 3,2.89 3,4V18A2,2 0 0,0 5,20H9L12,23L15,20H19A2,2 0 0,0 21,18V4C21,2.89 20.1,2 19,2Z" /></g><g id="account-minus"><path d="M15,14C12.33,14 7,15.33 7,18V20H23V18C23,15.33 17.67,14 15,14M1,10V12H9V10M15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12Z" /></g><g id="account-multiple"><path d="M16,13C15.71,13 15.38,13 15.03,13.05C16.19,13.89 17,15 17,16.5V19H23V16.5C23,14.17 18.33,13 16,13M8,13C5.67,13 1,14.17 1,16.5V19H15V16.5C15,14.17 10.33,13 8,13M8,11A3,3 0 0,0 11,8A3,3 0 0,0 8,5A3,3 0 0,0 5,8A3,3 0 0,0 8,11M16,11A3,3 0 0,0 19,8A3,3 0 0,0 16,5A3,3 0 0,0 13,8A3,3 0 0,0 16,11Z" /></g><g id="account-multiple-minus"><path d="M13,13C11,13 7,14 7,16V18H19V16C19,14 15,13 13,13M19.62,13.16C20.45,13.88 21,14.82 21,16V18H24V16C24,14.46 21.63,13.5 19.62,13.16M13,11A3,3 0 0,0 16,8A3,3 0 0,0 13,5A3,3 0 0,0 10,8A3,3 0 0,0 13,11M18,11A3,3 0 0,0 21,8A3,3 0 0,0 18,5C17.68,5 17.37,5.05 17.08,5.14C17.65,5.95 18,6.94 18,8C18,9.06 17.65,10.04 17.08,10.85C17.37,10.95 17.68,11 18,11M8,10H0V12H8V10Z" /></g><g id="account-multiple-outline"><path d="M16.5,6.5A2,2 0 0,1 18.5,8.5A2,2 0 0,1 16.5,10.5A2,2 0 0,1 14.5,8.5A2,2 0 0,1 16.5,6.5M16.5,12A3.5,3.5 0 0,0 20,8.5A3.5,3.5 0 0,0 16.5,5A3.5,3.5 0 0,0 13,8.5A3.5,3.5 0 0,0 16.5,12M7.5,6.5A2,2 0 0,1 9.5,8.5A2,2 0 0,1 7.5,10.5A2,2 0 0,1 5.5,8.5A2,2 0 0,1 7.5,6.5M7.5,12A3.5,3.5 0 0,0 11,8.5A3.5,3.5 0 0,0 7.5,5A3.5,3.5 0 0,0 4,8.5A3.5,3.5 0 0,0 7.5,12M21.5,17.5H14V16.25C14,15.79 13.8,15.39 13.5,15.03C14.36,14.73 15.44,14.5 16.5,14.5C18.94,14.5 21.5,15.71 21.5,16.25M12.5,17.5H2.5V16.25C2.5,15.71 5.06,14.5 7.5,14.5C9.94,14.5 12.5,15.71 12.5,16.25M16.5,13C15.3,13 13.43,13.34 12,14C10.57,13.33 8.7,13 7.5,13C5.33,13 1,14.08 1,16.25V19H23V16.25C23,14.08 18.67,13 16.5,13Z" /></g><g id="account-multiple-plus"><path d="M13,13C11,13 7,14 7,16V18H19V16C19,14 15,13 13,13M19.62,13.16C20.45,13.88 21,14.82 21,16V18H24V16C24,14.46 21.63,13.5 19.62,13.16M13,11A3,3 0 0,0 16,8A3,3 0 0,0 13,5A3,3 0 0,0 10,8A3,3 0 0,0 13,11M18,11A3,3 0 0,0 21,8A3,3 0 0,0 18,5C17.68,5 17.37,5.05 17.08,5.14C17.65,5.95 18,6.94 18,8C18,9.06 17.65,10.04 17.08,10.85C17.37,10.95 17.68,11 18,11M8,10H5V7H3V10H0V12H3V15H5V12H8V10Z" /></g><g id="account-network"><path d="M13,16V18H14A1,1 0 0,1 15,19H22V21H15A1,1 0 0,1 14,22H10A1,1 0 0,1 9,21H2V19H9A1,1 0 0,1 10,18H11V16H5V14.5C5,12.57 8.13,11 12,11C15.87,11 19,12.57 19,14.5V16H13M12,2A3.5,3.5 0 0,1 15.5,5.5A3.5,3.5 0 0,1 12,9A3.5,3.5 0 0,1 8.5,5.5A3.5,3.5 0 0,1 12,2Z" /></g><g id="account-off"><path d="M12,4A4,4 0 0,1 16,8C16,9.95 14.6,11.58 12.75,11.93L8.07,7.25C8.42,5.4 10.05,4 12,4M12.28,14L18.28,20L20,21.72L18.73,23L15.73,20H4V18C4,16.16 6.5,14.61 9.87,14.14L2.78,7.05L4.05,5.78L12.28,14M20,18V19.18L15.14,14.32C18,14.93 20,16.35 20,18Z" /></g><g id="account-outline"><path d="M12,13C9.33,13 4,14.33 4,17V20H20V17C20,14.33 14.67,13 12,13M12,4A4,4 0 0,0 8,8A4,4 0 0,0 12,12A4,4 0 0,0 16,8A4,4 0 0,0 12,4M12,14.9C14.97,14.9 18.1,16.36 18.1,17V18.1H5.9V17C5.9,16.36 9,14.9 12,14.9M12,5.9A2.1,2.1 0 0,1 14.1,8A2.1,2.1 0 0,1 12,10.1A2.1,2.1 0 0,1 9.9,8A2.1,2.1 0 0,1 12,5.9Z" /></g><g id="account-plus"><path d="M15,14C12.33,14 7,15.33 7,18V20H23V18C23,15.33 17.67,14 15,14M6,10V7H4V10H1V12H4V15H6V12H9V10M15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12Z" /></g><g id="account-remove"><path d="M15,14C17.67,14 23,15.33 23,18V20H7V18C7,15.33 12.33,14 15,14M15,12A4,4 0 0,1 11,8A4,4 0 0,1 15,4A4,4 0 0,1 19,8A4,4 0 0,1 15,12M5,9.59L7.12,7.46L8.54,8.88L6.41,11L8.54,13.12L7.12,14.54L5,12.41L2.88,14.54L1.46,13.12L3.59,11L1.46,8.88L2.88,7.46L5,9.59Z" /></g><g id="account-search"><path d="M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.43,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.43C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,14C11.11,14 12.5,13.15 13.32,11.88C12.5,10.75 11.11,10 9.5,10C7.89,10 6.5,10.75 5.68,11.88C6.5,13.15 7.89,14 9.5,14M9.5,5A1.75,1.75 0 0,0 7.75,6.75A1.75,1.75 0 0,0 9.5,8.5A1.75,1.75 0 0,0 11.25,6.75A1.75,1.75 0 0,0 9.5,5Z" /></g><g id="account-settings"><path d="M12,4A4,4 0 0,1 16,8A4,4 0 0,1 12,12A4,4 0 0,1 8,8A4,4 0 0,1 12,4M12,14C16.42,14 20,15.79 20,18V20H4V18C4,15.79 7.58,14 12,14M7,22H9V24H7V22M11,22H13V24H11V22M15,22H17V24H15V22Z" /></g><g id="account-settings-variant"><path d="M9,4A4,4 0 0,0 5,8A4,4 0 0,0 9,12A4,4 0 0,0 13,8A4,4 0 0,0 9,4M9,14C6.33,14 1,15.33 1,18V20H12.08C12.03,19.67 12,19.34 12,19C12,17.5 12.5,16 13.41,14.8C11.88,14.28 10.18,14 9,14M18,14C17.87,14 17.76,14.09 17.74,14.21L17.55,15.53C17.25,15.66 16.96,15.82 16.7,16L15.46,15.5C15.35,15.5 15.22,15.5 15.15,15.63L14.15,17.36C14.09,17.47 14.11,17.6 14.21,17.68L15.27,18.5C15.25,18.67 15.24,18.83 15.24,19C15.24,19.17 15.25,19.33 15.27,19.5L14.21,20.32C14.12,20.4 14.09,20.53 14.15,20.64L15.15,22.37C15.21,22.5 15.34,22.5 15.46,22.5L16.7,22C16.96,22.18 17.24,22.35 17.55,22.47L17.74,23.79C17.76,23.91 17.86,24 18,24H20C20.11,24 20.22,23.91 20.24,23.79L20.43,22.47C20.73,22.34 21,22.18 21.27,22L22.5,22.5C22.63,22.5 22.76,22.5 22.83,22.37L23.83,20.64C23.89,20.53 23.86,20.4 23.77,20.32L22.7,19.5C22.72,19.33 22.74,19.17 22.74,19C22.74,18.83 22.73,18.67 22.7,18.5L23.76,17.68C23.85,17.6 23.88,17.47 23.82,17.36L22.82,15.63C22.76,15.5 22.63,15.5 22.5,15.5L21.27,16C21,15.82 20.73,15.65 20.42,15.53L20.23,14.21C20.22,14.09 20.11,14 20,14M19,17.5A1.5,1.5 0 0,1 20.5,19A1.5,1.5 0 0,1 19,20.5C18.16,20.5 17.5,19.83 17.5,19A1.5,1.5 0 0,1 19,17.5Z" /></g><g id="account-star"><path d="M15,14C12.33,14 7,15.33 7,18V20H23V18C23,15.33 17.67,14 15,14M15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12M5,13.28L7.45,14.77L6.8,11.96L9,10.08L6.11,9.83L5,7.19L3.87,9.83L1,10.08L3.18,11.96L2.5,14.77L5,13.28Z" /></g><g id="account-star-variant"><path d="M9,14C11.67,14 17,15.33 17,18V20H1V18C1,15.33 6.33,14 9,14M9,12A4,4 0 0,1 5,8A4,4 0 0,1 9,4A4,4 0 0,1 13,8A4,4 0 0,1 9,12M19,13.28L16.54,14.77L17.2,11.96L15,10.08L17.89,9.83L19,7.19L20.13,9.83L23,10.08L20.82,11.96L21.5,14.77L19,13.28Z" /></g><g id="account-switch"><path d="M16,9C18.33,9 23,10.17 23,12.5V15H17V12.5C17,11 16.19,9.89 15.04,9.05L16,9M8,9C10.33,9 15,10.17 15,12.5V15H1V12.5C1,10.17 5.67,9 8,9M8,7A3,3 0 0,1 5,4A3,3 0 0,1 8,1A3,3 0 0,1 11,4A3,3 0 0,1 8,7M16,7A3,3 0 0,1 13,4A3,3 0 0,1 16,1A3,3 0 0,1 19,4A3,3 0 0,1 16,7M9,16.75V19H15V16.75L18.25,20L15,23.25V21H9V23.25L5.75,20L9,16.75Z" /></g><g id="adjust"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9A3,3 0 0,1 15,12Z" /></g><g id="air-conditioner"><path d="M6.59,0.66C8.93,-1.15 11.47,1.06 12.04,4.5C12.47,4.5 12.89,4.62 13.27,4.84C13.79,4.24 14.25,3.42 14.07,2.5C13.65,0.35 16.06,-1.39 18.35,1.58C20.16,3.92 17.95,6.46 14.5,7.03C14.5,7.46 14.39,7.89 14.16,8.27C14.76,8.78 15.58,9.24 16.5,9.06C18.63,8.64 20.38,11.04 17.41,13.34C15.07,15.15 12.53,12.94 11.96,9.5C11.53,9.5 11.11,9.37 10.74,9.15C10.22,9.75 9.75,10.58 9.93,11.5C10.35,13.64 7.94,15.39 5.65,12.42C3.83,10.07 6.05,7.53 9.5,6.97C9.5,6.54 9.63,6.12 9.85,5.74C9.25,5.23 8.43,4.76 7.5,4.94C5.37,5.36 3.62,2.96 6.59,0.66M5,16H7A2,2 0 0,1 9,18V24H7V22H5V24H3V18A2,2 0 0,1 5,16M5,18V20H7V18H5M12.93,16H15L12.07,24H10L12.93,16M18,16H21V18H18V22H21V24H18A2,2 0 0,1 16,22V18A2,2 0 0,1 18,16Z" /></g><g id="airballoon"><path d="M11,23A2,2 0 0,1 9,21V19H15V21A2,2 0 0,1 13,23H11M12,1C12.71,1 13.39,1.09 14.05,1.26C15.22,2.83 16,5.71 16,9C16,11.28 15.62,13.37 15,16A2,2 0 0,1 13,18H11A2,2 0 0,1 9,16C8.38,13.37 8,11.28 8,9C8,5.71 8.78,2.83 9.95,1.26C10.61,1.09 11.29,1 12,1M20,8C20,11.18 18.15,15.92 15.46,17.21C16.41,15.39 17,11.83 17,9C17,6.17 16.41,3.61 15.46,1.79C18.15,3.08 20,4.82 20,8M4,8C4,4.82 5.85,3.08 8.54,1.79C7.59,3.61 7,6.17 7,9C7,11.83 7.59,15.39 8.54,17.21C5.85,15.92 4,11.18 4,8Z" /></g><g id="airplane"><path d="M21,16V14L13,9V3.5A1.5,1.5 0 0,0 11.5,2A1.5,1.5 0 0,0 10,3.5V9L2,14V16L10,13.5V19L8,20.5V22L11.5,21L15,22V20.5L13,19V13.5L21,16Z" /></g><g id="airplane-landing"><path d="M2.5,19H21.5V21H2.5V19M9.68,13.27L14.03,14.43L19.34,15.85C20.14,16.06 20.96,15.59 21.18,14.79C21.39,14 20.92,13.17 20.12,12.95L14.81,11.53L12.05,2.5L10.12,2V10.28L5.15,8.95L4.22,6.63L2.77,6.24V11.41L4.37,11.84L9.68,13.27Z" /></g><g id="airplane-off"><path d="M3.15,5.27L8.13,10.26L2.15,14V16L10.15,13.5V19L8.15,20.5V22L11.65,21L15.15,22V20.5L13.15,19V15.27L18.87,21L20.15,19.73L4.42,4M13.15,9V3.5A1.5,1.5 0 0,0 11.65,2A1.5,1.5 0 0,0 10.15,3.5V7.18L17.97,15L21.15,16V14L13.15,9Z" /></g><g id="airplane-takeoff"><path d="M2.5,19H21.5V21H2.5V19M22.07,9.64C21.86,8.84 21.03,8.36 20.23,8.58L14.92,10L8,3.57L6.09,4.08L10.23,11.25L5.26,12.58L3.29,11.04L1.84,11.43L3.66,14.59L4.43,15.92L6.03,15.5L11.34,14.07L15.69,12.91L21,11.5C21.81,11.26 22.28,10.44 22.07,9.64Z" /></g><g id="airplay"><path d="M6,22H18L12,16M21,3H3A2,2 0 0,0 1,5V17A2,2 0 0,0 3,19H7V17H3V5H21V17H17V19H21A2,2 0 0,0 23,17V5A2,2 0 0,0 21,3Z" /></g><g id="alarm"><path d="M12,20A7,7 0 0,1 5,13A7,7 0 0,1 12,6A7,7 0 0,1 19,13A7,7 0 0,1 12,20M12,4A9,9 0 0,0 3,13A9,9 0 0,0 12,22A9,9 0 0,0 21,13A9,9 0 0,0 12,4M12.5,8H11V14L15.75,16.85L16.5,15.62L12.5,13.25V8M7.88,3.39L6.6,1.86L2,5.71L3.29,7.24L7.88,3.39M22,5.72L17.4,1.86L16.11,3.39L20.71,7.25L22,5.72Z" /></g><g id="alarm-check"><path d="M10.54,14.53L8.41,12.4L7.35,13.46L10.53,16.64L16.53,10.64L15.47,9.58L10.54,14.53M12,20A7,7 0 0,1 5,13A7,7 0 0,1 12,6A7,7 0 0,1 19,13A7,7 0 0,1 12,20M12,4A9,9 0 0,0 3,13A9,9 0 0,0 12,22A9,9 0 0,0 21,13A9,9 0 0,0 12,4M7.88,3.39L6.6,1.86L2,5.71L3.29,7.24L7.88,3.39M22,5.72L17.4,1.86L16.11,3.39L20.71,7.25L22,5.72Z" /></g><g id="alarm-multiple"><path d="M9.29,3.25L5.16,6.72L4,5.34L8.14,1.87L9.29,3.25M22,5.35L20.84,6.73L16.7,3.25L17.86,1.87L22,5.35M13,4A8,8 0 0,1 21,12A8,8 0 0,1 13,20A8,8 0 0,1 5,12A8,8 0 0,1 13,4M13,6A6,6 0 0,0 7,12A6,6 0 0,0 13,18A6,6 0 0,0 19,12A6,6 0 0,0 13,6M12,7.5H13.5V12.03L16.72,13.5L16.1,14.86L12,13V7.5M1,14C1,11.5 2.13,9.3 3.91,7.83C3.33,9.1 3,10.5 3,12L3.06,13.13L3,14C3,16.28 4.27,18.26 6.14,19.28C7.44,20.5 9.07,21.39 10.89,21.78C10.28,21.92 9.65,22 9,22A8,8 0 0,1 1,14Z" /></g><g id="alarm-off"><path d="M8,3.28L6.6,1.86L5.74,2.57L7.16,4M16.47,18.39C15.26,19.39 13.7,20 12,20A7,7 0 0,1 5,13C5,11.3 5.61,9.74 6.61,8.53M2.92,2.29L1.65,3.57L3,4.9L1.87,5.83L3.29,7.25L4.4,6.31L5.2,7.11C3.83,8.69 3,10.75 3,13A9,9 0 0,0 12,22C14.25,22 16.31,21.17 17.89,19.8L20.09,22L21.36,20.73L3.89,3.27L2.92,2.29M22,5.72L17.4,1.86L16.11,3.39L20.71,7.25L22,5.72M12,6A7,7 0 0,1 19,13C19,13.84 18.84,14.65 18.57,15.4L20.09,16.92C20.67,15.73 21,14.41 21,13A9,9 0 0,0 12,4C10.59,4 9.27,4.33 8.08,4.91L9.6,6.43C10.35,6.16 11.16,6 12,6Z" /></g><g id="alarm-plus"><path d="M13,9H11V12H8V14H11V17H13V14H16V12H13M12,20A7,7 0 0,1 5,13A7,7 0 0,1 12,6A7,7 0 0,1 19,13A7,7 0 0,1 12,20M12,4A9,9 0 0,0 3,13A9,9 0 0,0 12,22A9,9 0 0,0 21,13A9,9 0 0,0 12,4M22,5.72L17.4,1.86L16.11,3.39L20.71,7.25M7.88,3.39L6.6,1.86L2,5.71L3.29,7.24L7.88,3.39Z" /></g><g id="alarm-snooze"><path d="M7.88,3.39L6.6,1.86L2,5.71L3.29,7.24L7.88,3.39M22,5.72L17.4,1.86L16.11,3.39L20.71,7.25L22,5.72M12,4A9,9 0 0,0 3,13A9,9 0 0,0 12,22A9,9 0 0,0 21,13A9,9 0 0,0 12,4M12,20A7,7 0 0,1 5,13A7,7 0 0,1 12,6A7,7 0 0,1 19,13A7,7 0 0,1 12,20M9,11H12.63L9,15.2V17H15V15H11.37L15,10.8V9H9V11Z" /></g><g id="album"><path d="M12,11A1,1 0 0,0 11,12A1,1 0 0,0 12,13A1,1 0 0,0 13,12A1,1 0 0,0 12,11M12,16.5C9.5,16.5 7.5,14.5 7.5,12C7.5,9.5 9.5,7.5 12,7.5C14.5,7.5 16.5,9.5 16.5,12C16.5,14.5 14.5,16.5 12,16.5M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="alert"><path d="M13,14H11V10H13M13,18H11V16H13M1,21H23L12,2L1,21Z" /></g><g id="alert-box"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M13,13V7H11V13H13M13,17V15H11V17H13Z" /></g><g id="alert-circle"><path d="M13,13H11V7H13M13,17H11V15H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="alert-circle-outline"><path d="M11,15H13V17H11V15M11,7H13V13H11V7M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20Z" /></g><g id="alert-octagon"><path d="M13,13H11V7H13M12,17.3A1.3,1.3 0 0,1 10.7,16A1.3,1.3 0 0,1 12,14.7A1.3,1.3 0 0,1 13.3,16A1.3,1.3 0 0,1 12,17.3M15.73,3H8.27L3,8.27V15.73L8.27,21H15.73L21,15.73V8.27L15.73,3Z" /></g><g id="alert-outline"><path d="M12,2L1,21H23M12,6L19.53,19H4.47M11,10V14H13V10M11,16V18H13V16" /></g><g id="all-inclusive"><path d="M18.6,6.62C17.16,6.62 15.8,7.18 14.83,8.15L7.8,14.39C7.16,15.03 6.31,15.38 5.4,15.38C3.53,15.38 2,13.87 2,12C2,10.13 3.53,8.62 5.4,8.62C6.31,8.62 7.16,8.97 7.84,9.65L8.97,10.65L10.5,9.31L9.22,8.2C8.2,7.18 6.84,6.62 5.4,6.62C2.42,6.62 0,9.04 0,12C0,14.96 2.42,17.38 5.4,17.38C6.84,17.38 8.2,16.82 9.17,15.85L16.2,9.61C16.84,8.97 17.69,8.62 18.6,8.62C20.47,8.62 22,10.13 22,12C22,13.87 20.47,15.38 18.6,15.38C17.7,15.38 16.84,15.03 16.16,14.35L15,13.34L13.5,14.68L14.78,15.8C15.8,16.81 17.15,17.37 18.6,17.37C21.58,17.37 24,14.96 24,12C24,9 21.58,6.62 18.6,6.62Z" /></g><g id="alpha"><path d="M18.08,17.8C17.62,17.93 17.21,18 16.85,18C15.65,18 14.84,17.12 14.43,15.35H14.38C13.39,17.26 12,18.21 10.25,18.21C8.94,18.21 7.89,17.72 7.1,16.73C6.31,15.74 5.92,14.5 5.92,13C5.92,11.25 6.37,9.85 7.26,8.76C8.15,7.67 9.36,7.12 10.89,7.12C11.71,7.12 12.45,7.35 13.09,7.8C13.73,8.26 14.22,8.9 14.56,9.73H14.6L15.31,7.33H17.87L15.73,12.65C15.97,13.89 16.22,14.74 16.5,15.19C16.74,15.64 17.08,15.87 17.5,15.87C17.74,15.87 17.93,15.83 18.1,15.76L18.08,17.8M13.82,12.56C13.61,11.43 13.27,10.55 12.81,9.95C12.36,9.34 11.81,9.04 11.18,9.04C10.36,9.04 9.7,9.41 9.21,10.14C8.72,10.88 8.5,11.79 8.5,12.86C8.5,13.84 8.69,14.65 9.12,15.31C9.54,15.97 10.11,16.29 10.82,16.29C11.42,16.29 11.97,16 12.46,15.45C12.96,14.88 13.37,14.05 13.7,12.96L13.82,12.56Z" /></g><g id="alphabetical"><path d="M6,11A2,2 0 0,1 8,13V17H4A2,2 0 0,1 2,15V13A2,2 0 0,1 4,11H6M4,13V15H6V13H4M20,13V15H22V17H20A2,2 0 0,1 18,15V13A2,2 0 0,1 20,11H22V13H20M12,7V11H14A2,2 0 0,1 16,13V15A2,2 0 0,1 14,17H12A2,2 0 0,1 10,15V7H12M12,15H14V13H12V15Z" /></g><g id="altimeter"><path d="M7,3V5H17V3H7M9,7V9H15V7H9M2,7.96V16.04L6.03,12L2,7.96M22.03,7.96L18,12L22.03,16.04V7.96M7,11V13H17V11H7M9,15V17H15V15H9M7,19V21H17V19H7Z" /></g><g id="amazon"><path d="M15.93,17.09C15.75,17.25 15.5,17.26 15.3,17.15C14.41,16.41 14.25,16.07 13.76,15.36C12.29,16.86 11.25,17.31 9.34,17.31C7.09,17.31 5.33,15.92 5.33,13.14C5.33,10.96 6.5,9.5 8.19,8.76C9.65,8.12 11.68,8 13.23,7.83V7.5C13.23,6.84 13.28,6.09 12.9,5.54C12.58,5.05 11.95,4.84 11.4,4.84C10.38,4.84 9.47,5.37 9.25,6.45C9.2,6.69 9,6.93 8.78,6.94L6.18,6.66C5.96,6.61 5.72,6.44 5.78,6.1C6.38,2.95 9.23,2 11.78,2C13.08,2 14.78,2.35 15.81,3.33C17.11,4.55 17,6.18 17,7.95V12.12C17,13.37 17.5,13.93 18,14.6C18.17,14.85 18.21,15.14 18,15.31L15.94,17.09H15.93M13.23,10.56V10C11.29,10 9.24,10.39 9.24,12.67C9.24,13.83 9.85,14.62 10.87,14.62C11.63,14.62 12.3,14.15 12.73,13.4C13.25,12.47 13.23,11.6 13.23,10.56M20.16,19.54C18,21.14 14.82,22 12.1,22C8.29,22 4.85,20.59 2.25,18.24C2.05,18.06 2.23,17.81 2.5,17.95C5.28,19.58 8.75,20.56 12.33,20.56C14.74,20.56 17.4,20.06 19.84,19.03C20.21,18.87 20.5,19.27 20.16,19.54M21.07,18.5C20.79,18.14 19.22,18.33 18.5,18.42C18.31,18.44 18.28,18.26 18.47,18.12C19.71,17.24 21.76,17.5 22,17.79C22.24,18.09 21.93,20.14 20.76,21.11C20.58,21.27 20.41,21.18 20.5,21C20.76,20.33 21.35,18.86 21.07,18.5Z" /></g><g id="amazon-clouddrive"><path d="M4.94,11.12C5.23,11.12 5.5,11.16 5.76,11.23C5.77,9.09 7.5,7.35 9.65,7.35C11.27,7.35 12.67,8.35 13.24,9.77C13.83,9 14.74,8.53 15.76,8.53C17.5,8.53 18.94,9.95 18.94,11.71C18.94,11.95 18.91,12.2 18.86,12.43C19.1,12.34 19.37,12.29 19.65,12.29C20.95,12.29 22,13.35 22,14.65C22,15.95 20.95,17 19.65,17C18.35,17 6.36,17 4.94,17C3.32,17 2,15.68 2,14.06C2,12.43 3.32,11.12 4.94,11.12Z" /></g><g id="ambulance"><path d="M18,18.5A1.5,1.5 0 0,0 19.5,17A1.5,1.5 0 0,0 18,15.5A1.5,1.5 0 0,0 16.5,17A1.5,1.5 0 0,0 18,18.5M19.5,9.5H17V12H21.46L19.5,9.5M6,18.5A1.5,1.5 0 0,0 7.5,17A1.5,1.5 0 0,0 6,15.5A1.5,1.5 0 0,0 4.5,17A1.5,1.5 0 0,0 6,18.5M20,8L23,12V17H21A3,3 0 0,1 18,20A3,3 0 0,1 15,17H9A3,3 0 0,1 6,20A3,3 0 0,1 3,17H1V6C1,4.89 1.89,4 3,4H17V8H20M8,6V9H5V11H8V14H10V11H13V9H10V6H8Z" /></g><g id="amplifier"><path d="M10,2H14A1,1 0 0,1 15,3H21V21H19A1,1 0 0,1 18,22A1,1 0 0,1 17,21H7A1,1 0 0,1 6,22A1,1 0 0,1 5,21H3V3H9A1,1 0 0,1 10,2M5,5V9H19V5H5M7,6A1,1 0 0,1 8,7A1,1 0 0,1 7,8A1,1 0 0,1 6,7A1,1 0 0,1 7,6M12,6H14V7H12V6M15,6H16V8H15V6M17,6H18V8H17V6M12,11A4,4 0 0,0 8,15A4,4 0 0,0 12,19A4,4 0 0,0 16,15A4,4 0 0,0 12,11M10,6A1,1 0 0,1 11,7A1,1 0 0,1 10,8A1,1 0 0,1 9,7A1,1 0 0,1 10,6Z" /></g><g id="anchor"><path d="M12,2A3,3 0 0,0 9,5C9,6.27 9.8,7.4 11,7.83V10H8V12H11V18.92C9.16,18.63 7.53,17.57 6.53,16H8V14H3V19H5V17.3C6.58,19.61 9.2,21 12,21C14.8,21 17.42,19.61 19,17.31V19H21V14H16V16H17.46C16.46,17.56 14.83,18.63 13,18.92V12H16V10H13V7.82C14.2,7.4 15,6.27 15,5A3,3 0 0,0 12,2M12,4A1,1 0 0,1 13,5A1,1 0 0,1 12,6A1,1 0 0,1 11,5A1,1 0 0,1 12,4Z" /></g><g id="android"><path d="M15,5H14V4H15M10,5H9V4H10M15.53,2.16L16.84,0.85C17.03,0.66 17.03,0.34 16.84,0.14C16.64,-0.05 16.32,-0.05 16.13,0.14L14.65,1.62C13.85,1.23 12.95,1 12,1C11.04,1 10.14,1.23 9.34,1.63L7.85,0.14C7.66,-0.05 7.34,-0.05 7.15,0.14C6.95,0.34 6.95,0.66 7.15,0.85L8.46,2.16C6.97,3.26 6,5 6,7H18C18,5 17,3.25 15.53,2.16M20.5,8A1.5,1.5 0 0,0 19,9.5V16.5A1.5,1.5 0 0,0 20.5,18A1.5,1.5 0 0,0 22,16.5V9.5A1.5,1.5 0 0,0 20.5,8M3.5,8A1.5,1.5 0 0,0 2,9.5V16.5A1.5,1.5 0 0,0 3.5,18A1.5,1.5 0 0,0 5,16.5V9.5A1.5,1.5 0 0,0 3.5,8M6,18A1,1 0 0,0 7,19H8V22.5A1.5,1.5 0 0,0 9.5,24A1.5,1.5 0 0,0 11,22.5V19H13V22.5A1.5,1.5 0 0,0 14.5,24A1.5,1.5 0 0,0 16,22.5V19H17A1,1 0 0,0 18,18V8H6V18Z" /></g><g id="android-debug-bridge"><path d="M15,9A1,1 0 0,1 14,8A1,1 0 0,1 15,7A1,1 0 0,1 16,8A1,1 0 0,1 15,9M9,9A1,1 0 0,1 8,8A1,1 0 0,1 9,7A1,1 0 0,1 10,8A1,1 0 0,1 9,9M16.12,4.37L18.22,2.27L17.4,1.44L15.09,3.75C14.16,3.28 13.11,3 12,3C10.88,3 9.84,3.28 8.91,3.75L6.6,1.44L5.78,2.27L7.88,4.37C6.14,5.64 5,7.68 5,10V11H19V10C19,7.68 17.86,5.64 16.12,4.37M5,16C5,19.86 8.13,23 12,23A7,7 0 0,0 19,16V12H5V16Z" /></g><g id="android-studio"><path d="M11,2H13V4H13.5A1.5,1.5 0 0,1 15,5.5V9L14.56,9.44L16.2,12.28C17.31,11.19 18,9.68 18,8H20C20,10.42 18.93,12.59 17.23,14.06L20.37,19.5L20.5,21.72L18.63,20.5L15.56,15.17C14.5,15.7 13.28,16 12,16C10.72,16 9.5,15.7 8.44,15.17L5.37,20.5L3.5,21.72L3.63,19.5L9.44,9.44L9,9V5.5A1.5,1.5 0 0,1 10.5,4H11V2M9.44,13.43C10.22,13.8 11.09,14 12,14C12.91,14 13.78,13.8 14.56,13.43L13.1,10.9H13.09C12.47,11.5 11.53,11.5 10.91,10.9H10.9L9.44,13.43M12,6A1,1 0 0,0 11,7A1,1 0 0,0 12,8A1,1 0 0,0 13,7A1,1 0 0,0 12,6Z" /></g><g id="angular"><path d="M12,2.5L20.84,5.65L19.5,17.35L12,21.5L4.5,17.35L3.16,5.65L12,2.5M12,4.6L6.47,17H8.53L9.64,14.22H14.34L15.45,17H17.5L12,4.6M13.62,12.5H10.39L12,8.63L13.62,12.5Z" /></g><g id="angularjs"><path d="M12,2.5L20.84,5.65L19.5,17.35L12,21.5L4.5,17.35L3.16,5.65L12,2.5M12,4.5L5,7L6.08,16.22L12,19.5L17.92,16.22L19,7L12,4.5M12,5.72L16.58,16H14.87L13.94,13.72H10.04L9.12,16H7.41L12,5.72M13.34,12.3L12,9.07L10.66,12.3H13.34Z" /></g><g id="animation"><path d="M4,2C2.89,2 2,2.89 2,4V14H4V4H14V2H4M8,6C6.89,6 6,6.89 6,8V18H8V8H18V6H8M12,10C10.89,10 10,10.89 10,12V20C10,21.11 10.89,22 12,22H20C21.11,22 22,21.11 22,20V12C22,10.89 21.11,10 20,10H12Z" /></g><g id="apple"><path d="M18.71,19.5C17.88,20.74 17,21.95 15.66,21.97C14.32,22 13.89,21.18 12.37,21.18C10.84,21.18 10.37,21.95 9.1,22C7.79,22.05 6.8,20.68 5.96,19.47C4.25,17 2.94,12.45 4.7,9.39C5.57,7.87 7.13,6.91 8.82,6.88C10.1,6.86 11.32,7.75 12.11,7.75C12.89,7.75 14.37,6.68 15.92,6.84C16.57,6.87 18.39,7.1 19.56,8.82C19.47,8.88 17.39,10.1 17.41,12.63C17.44,15.65 20.06,16.66 20.09,16.67C20.06,16.74 19.67,18.11 18.71,19.5M13,3.5C13.73,2.67 14.94,2.04 15.94,2C16.07,3.17 15.6,4.35 14.9,5.19C14.21,6.04 13.07,6.7 11.95,6.61C11.8,5.46 12.36,4.26 13,3.5Z" /></g><g id="apple-finder"><path d="M4,4H11.89C12.46,2.91 13.13,1.88 13.93,1L15.04,2.11C14.61,2.7 14.23,3.34 13.89,4H20A2,2 0 0,1 22,6V19A2,2 0 0,1 20,21H14.93L15.26,22.23L13.43,22.95L12.93,21H4A2,2 0 0,1 2,19V6A2,2 0 0,1 4,4M4,6V19H12.54C12.5,18.67 12.44,18.34 12.4,18C12.27,18 12.13,18 12,18C9.25,18 6.78,17.5 5.13,16.76L6.04,15.12C7,15.64 9.17,16 12,16C12.08,16 12.16,16 12.24,16C12.21,15.33 12.22,14.66 12.27,14H9C9,14 9.4,9.97 11,6H4M20,19V6H13C12.1,8.22 11.58,10.46 11.3,12H14.17C14,13.28 13.97,14.62 14.06,15.93C15.87,15.8 17.25,15.5 17.96,15.12L18.87,16.76C17.69,17.3 16.1,17.7 14.29,17.89C14.35,18.27 14.41,18.64 14.5,19H20M6,8H8V11H6V8M16,8H18V11H16V8Z" /></g><g id="apple-ios"><path d="M20,9V7H16A2,2 0 0,0 14,9V11A2,2 0 0,0 16,13H18V15H14V17H18A2,2 0 0,0 20,15V13A2,2 0 0,0 18,11H16V9M11,15H9V9H11M11,7H9A2,2 0 0,0 7,9V15A2,2 0 0,0 9,17H11A2,2 0 0,0 13,15V9A2,2 0 0,0 11,7M4,17H6V11H4M4,9H6V7H4V9Z" /></g><g id="apple-keyboard-caps"><path d="M15,14V8H17.17L12,2.83L6.83,8H9V14H15M12,0L22,10H17V16H7V10H2L12,0M7,18H17V24H7V18M15,20H9V22H15V20Z" /></g><g id="apple-keyboard-command"><path d="M6,2A4,4 0 0,1 10,6V8H14V6A4,4 0 0,1 18,2A4,4 0 0,1 22,6A4,4 0 0,1 18,10H16V14H18A4,4 0 0,1 22,18A4,4 0 0,1 18,22A4,4 0 0,1 14,18V16H10V18A4,4 0 0,1 6,22A4,4 0 0,1 2,18A4,4 0 0,1 6,14H8V10H6A4,4 0 0,1 2,6A4,4 0 0,1 6,2M16,18A2,2 0 0,0 18,20A2,2 0 0,0 20,18A2,2 0 0,0 18,16H16V18M14,10H10V14H14V10M6,16A2,2 0 0,0 4,18A2,2 0 0,0 6,20A2,2 0 0,0 8,18V16H6M8,6A2,2 0 0,0 6,4A2,2 0 0,0 4,6A2,2 0 0,0 6,8H8V6M18,8A2,2 0 0,0 20,6A2,2 0 0,0 18,4A2,2 0 0,0 16,6V8H18Z" /></g><g id="apple-keyboard-control"><path d="M19.78,11.78L18.36,13.19L12,6.83L5.64,13.19L4.22,11.78L12,4L19.78,11.78Z" /></g><g id="apple-keyboard-option"><path d="M3,4H9.11L16.15,18H21V20H14.88L7.84,6H3V4M14,4H21V6H14V4Z" /></g><g id="apple-keyboard-shift"><path d="M15,18V12H17.17L12,6.83L6.83,12H9V18H15M12,4L22,14H17V20H7V14H2L12,4Z" /></g><g id="apple-mobileme"><path d="M22,15.04C22,17.23 20.24,19 18.07,19H5.93C3.76,19 2,17.23 2,15.04C2,13.07 3.43,11.44 5.31,11.14C5.28,11 5.27,10.86 5.27,10.71C5.27,9.33 6.38,8.2 7.76,8.2C8.37,8.2 8.94,8.43 9.37,8.8C10.14,7.05 11.13,5.44 13.91,5.44C17.28,5.44 18.87,8.06 18.87,10.83C18.87,10.94 18.87,11.06 18.86,11.17C20.65,11.54 22,13.13 22,15.04Z" /></g><g id="apple-safari"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12C4,14.09 4.8,16 6.11,17.41L9.88,9.88L17.41,6.11C16,4.8 14.09,4 12,4M12,20A8,8 0 0,0 20,12C20,9.91 19.2,8 17.89,6.59L14.12,14.12L6.59,17.89C8,19.2 9.91,20 12,20M12,12L11.23,11.23L9.7,14.3L12.77,12.77L12,12M12,17.5H13V19H12V17.5M15.88,15.89L16.59,15.18L17.65,16.24L16.94,16.95L15.88,15.89M17.5,12V11H19V12H17.5M12,6.5H11V5H12V6.5M8.12,8.11L7.41,8.82L6.35,7.76L7.06,7.05L8.12,8.11M6.5,12V13H5V12H6.5Z" /></g><g id="application"><path d="M19,4C20.11,4 21,4.9 21,6V18A2,2 0 0,1 19,20H5C3.89,20 3,19.1 3,18V6A2,2 0 0,1 5,4H19M19,18V8H5V18H19Z" /></g><g id="appnet"><path d="M14.47,9.14C15.07,7.69 16.18,4.28 16.35,3.68C16.5,3.09 16.95,3 17.2,3H19.25C19.59,3 19.78,3.26 19.7,3.68C17.55,11.27 16.09,13.5 16.09,14C16.09,15.28 17.46,17.67 18.74,17.67C19.5,17.67 19.34,16.56 20.19,16.56H21.81C22.07,16.56 22.32,16.82 22.32,17.25C22.32,17.67 21.85,21 18.61,21C15.36,21 14.15,17.08 14.15,17.08C13.73,17.93 11.23,21 8.16,21C2.7,21 1.68,15.2 1.68,11.79C1.68,8.37 3.3,3 7.91,3C12.5,3 14.47,9.14 14.47,9.14M4.5,11.53C4.5,13.5 4.41,17.59 8,17.67C10.04,17.76 11.91,15.2 12.81,13.15C11.57,8.89 10.72,6.33 8,6.33C4.32,6.41 4.5,11.53 4.5,11.53Z" /></g><g id="apps"><path d="M16,20H20V16H16M16,14H20V10H16M10,8H14V4H10M16,8H20V4H16M10,14H14V10H10M4,14H8V10H4M4,20H8V16H4M10,20H14V16H10M4,8H8V4H4V8Z" /></g><g id="archive"><path d="M3,3H21V7H3V3M4,8H20V21H4V8M9.5,11A0.5,0.5 0 0,0 9,11.5V13H15V11.5A0.5,0.5 0 0,0 14.5,11H9.5Z" /></g><g id="arrange-bring-forward"><path d="M2,2H16V16H2V2M22,8V22H8V18H10V20H20V10H18V8H22Z" /></g><g id="arrange-bring-to-front"><path d="M2,2H11V6H9V4H4V9H6V11H2V2M22,13V22H13V18H15V20H20V15H18V13H22M8,8H16V16H8V8Z" /></g><g id="arrange-send-backward"><path d="M2,2H16V16H2V2M22,8V22H8V18H18V8H22M4,4V14H14V4H4Z" /></g><g id="arrange-send-to-back"><path d="M2,2H11V11H2V2M9,4H4V9H9V4M22,13V22H13V13H22M15,20H20V15H15V20M16,8V11H13V8H16M11,16H8V13H11V16Z" /></g><g id="arrow-all"><path d="M13,11H18L16.5,9.5L17.92,8.08L21.84,12L17.92,15.92L16.5,14.5L18,13H13V18L14.5,16.5L15.92,17.92L12,21.84L8.08,17.92L9.5,16.5L11,18V13H6L7.5,14.5L6.08,15.92L2.16,12L6.08,8.08L7.5,9.5L6,11H11V6L9.5,7.5L8.08,6.08L12,2.16L15.92,6.08L14.5,7.5L13,6V11Z" /></g><g id="arrow-bottom-left"><path d="M19,6.41L17.59,5L7,15.59V9H5V19H15V17H8.41L19,6.41Z" /></g><g id="arrow-bottom-right"><path d="M5,6.41L6.41,5L17,15.59V9H19V19H9V17H15.59L5,6.41Z" /></g><g id="arrow-compress"><path d="M19.5,3.09L15,7.59V4H13V11H20V9H16.41L20.91,4.5L19.5,3.09M4,13V15H7.59L3.09,19.5L4.5,20.91L9,16.41V20H11V13H4Z" /></g><g id="arrow-compress-all"><path d="M19.5,3.09L20.91,4.5L16.41,9H20V11H13V4H15V7.59L19.5,3.09M20.91,19.5L19.5,20.91L15,16.41V20H13V13H20V15H16.41L20.91,19.5M4.5,3.09L9,7.59V4H11V11H4V9H7.59L3.09,4.5L4.5,3.09M3.09,19.5L7.59,15H4V13H11V20H9V16.41L4.5,20.91L3.09,19.5Z" /></g><g id="arrow-down"><path d="M11,4H13V16L18.5,10.5L19.92,11.92L12,19.84L4.08,11.92L5.5,10.5L11,16V4Z" /></g><g id="arrow-down-bold"><path d="M10,4H14V13L17.5,9.5L19.92,11.92L12,19.84L4.08,11.92L6.5,9.5L10,13V4Z" /></g><g id="arrow-down-bold-circle"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,17L17,12H14V8H10V12H7L12,17Z" /></g><g id="arrow-down-bold-circle-outline"><path d="M12,17L7,12H10V8H14V12H17L12,17M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z" /></g><g id="arrow-down-bold-hexagon-outline"><path d="M12,17L7,12H10V8H14V12H17L12,17M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15Z" /></g><g id="arrow-down-box"><path d="M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M11,6V14.5L7.5,11L6.08,12.42L12,18.34L17.92,12.42L16.5,11L13,14.5V6H11Z" /></g><g id="arrow-down-drop-circle"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M7,10L12,15L17,10H7Z" /></g><g id="arrow-down-drop-circle-outline"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4M7,10L12,15L17,10H7Z" /></g><g id="arrow-expand"><path d="M10,21V19H6.41L10.91,14.5L9.5,13.09L5,17.59V14H3V21H10M14.5,10.91L19,6.41V10H21V3H14V5H17.59L13.09,9.5L14.5,10.91Z" /></g><g id="arrow-expand-all"><path d="M9.5,13.09L10.91,14.5L6.41,19H10V21H3V14H5V17.59L9.5,13.09M10.91,9.5L9.5,10.91L5,6.41V10H3V3H10V5H6.41L10.91,9.5M14.5,13.09L19,17.59V14H21V21H14V19H17.59L13.09,14.5L14.5,13.09M13.09,9.5L17.59,5H14V3H21V10H19V6.41L14.5,10.91L13.09,9.5Z" /></g><g id="arrow-left"><path d="M20,11V13H8L13.5,18.5L12.08,19.92L4.16,12L12.08,4.08L13.5,5.5L8,11H20Z" /></g><g id="arrow-left-bold"><path d="M20,10V14H11L14.5,17.5L12.08,19.92L4.16,12L12.08,4.08L14.5,6.5L11,10H20Z" /></g><g id="arrow-left-bold-circle"><path d="M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M7,12L12,17V14H16V10H12V7L7,12Z" /></g><g id="arrow-left-bold-circle-outline"><path d="M7,12L12,7V10H16V14H12V17L7,12M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12Z" /></g><g id="arrow-left-bold-hexagon-outline"><path d="M7,12L12,7V10H16V14H12V17L7,12M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15Z" /></g><g id="arrow-left-box"><path d="M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5C3,3.89 3.9,3 5,3H19M18,11H9.5L13,7.5L11.58,6.08L5.66,12L11.58,17.92L13,16.5L9.5,13H18V11Z" /></g><g id="arrow-left-drop-circle"><path d="M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M14,7L9,12L14,17V7Z" /></g><g id="arrow-left-drop-circle-outline"><path d="M22,12A10,10 0 0,0 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12M20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12M14,7L9,12L14,17V7Z" /></g><g id="arrow-right"><path d="M4,11V13H16L10.5,18.5L11.92,19.92L19.84,12L11.92,4.08L10.5,5.5L16,11H4Z" /></g><g id="arrow-right-bold"><path d="M4,10V14H13L9.5,17.5L11.92,19.92L19.84,12L11.92,4.08L9.5,6.5L13,10H4Z" /></g><g id="arrow-right-bold-circle"><path d="M2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12M17,12L12,7V10H8V14H12V17L17,12Z" /></g><g id="arrow-right-bold-circle-outline"><path d="M17,12L12,17V14H8V10H12V7L17,12M2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12M4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12Z" /></g><g id="arrow-right-bold-hexagon-outline"><path d="M17,12L12,17V14H8V10H12V7L17,12M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15Z" /></g><g id="arrow-right-box"><path d="M5,21A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19C21,20.11 20.1,21 19,21H5M6,13H14.5L11,16.5L12.42,17.92L18.34,12L12.42,6.08L11,7.5L14.5,11H6V13Z" /></g><g id="arrow-right-drop-circle"><path d="M2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12M10,17L15,12L10,7V17Z" /></g><g id="arrow-right-drop-circle-outline"><path d="M2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2A10,10 0 0,0 2,12M4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12M10,17L15,12L10,7V17Z" /></g><g id="arrow-top-left"><path d="M19,17.59L17.59,19L7,8.41V15H5V5H15V7H8.41L19,17.59Z" /></g><g id="arrow-top-right"><path d="M5,17.59L15.59,7H9V5H19V15H17V8.41L6.41,19L5,17.59Z" /></g><g id="arrow-up"><path d="M13,20H11V8L5.5,13.5L4.08,12.08L12,4.16L19.92,12.08L18.5,13.5L13,8V20Z" /></g><g id="arrow-up-bold"><path d="M14,20H10V11L6.5,14.5L4.08,12.08L12,4.16L19.92,12.08L17.5,14.5L14,11V20Z" /></g><g id="arrow-up-bold-circle"><path d="M12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22M12,7L7,12H10V16H14V12H17L12,7Z" /></g><g id="arrow-up-bold-circle-outline"><path d="M12,7L17,12H14V16H10V12H7L12,7M12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20Z" /></g><g id="arrow-up-bold-hexagon-outline"><path d="M12,7L17,12H14V16H10V12H7L12,7M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15Z" /></g><g id="arrow-up-box"><path d="M21,19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19C20.11,3 21,3.9 21,5V19M13,18V9.5L16.5,13L17.92,11.58L12,5.66L6.08,11.58L7.5,13L11,9.5V18H13Z" /></g><g id="arrow-up-drop-circle"><path d="M12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22M17,14L12,9L7,14H17Z" /></g><g id="arrow-up-drop-circle-outline"><path d="M12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M17,14L12,9L7,14H17Z" /></g><g id="assistant"><path d="M19,2H5A2,2 0 0,0 3,4V18A2,2 0 0,0 5,20H9L12,23L15,20H19A2,2 0 0,0 21,18V4A2,2 0 0,0 19,2M13.88,12.88L12,17L10.12,12.88L6,11L10.12,9.12L12,5L13.88,9.12L18,11" /></g><g id="asterisk"><path d="M10,2H14L13.21,9.91L19.66,5.27L21.66,8.73L14.42,12L21.66,15.27L19.66,18.73L13.21,14.09L14,22H10L10.79,14.09L4.34,18.73L2.34,15.27L9.58,12L2.34,8.73L4.34,5.27L10.79,9.91L10,2Z" /></g><g id="at"><path d="M17.42,15C17.79,14.09 18,13.07 18,12C18,8.13 15.31,5 12,5C8.69,5 6,8.13 6,12C6,15.87 8.69,19 12,19C13.54,19 15,19 16,18.22V20.55C15,21 13.46,21 12,21C7.58,21 4,16.97 4,12C4,7.03 7.58,3 12,3C16.42,3 20,7.03 20,12C20,13.85 19.5,15.57 18.65,17H14V15.5C13.36,16.43 12.5,17 11.5,17C9.57,17 8,14.76 8,12C8,9.24 9.57,7 11.5,7C12.5,7 13.36,7.57 14,8.5V8H16V15H17.42M12,9C10.9,9 10,10.34 10,12C10,13.66 10.9,15 12,15C13.1,15 14,13.66 14,12C14,10.34 13.1,9 12,9Z" /></g><g id="attachment"><path d="M7.5,18A5.5,5.5 0 0,1 2,12.5A5.5,5.5 0 0,1 7.5,7H18A4,4 0 0,1 22,11A4,4 0 0,1 18,15H9.5A2.5,2.5 0 0,1 7,12.5A2.5,2.5 0 0,1 9.5,10H17V11.5H9.5A1,1 0 0,0 8.5,12.5A1,1 0 0,0 9.5,13.5H18A2.5,2.5 0 0,0 20.5,11A2.5,2.5 0 0,0 18,8.5H7.5A4,4 0 0,0 3.5,12.5A4,4 0 0,0 7.5,16.5H17V18H7.5Z" /></g><g id="audiobook"><path d="M18,22H6A2,2 0 0,1 4,20V4C4,2.89 4.9,2 6,2H7V9L9.5,7.5L12,9V2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22M13,15A2,2 0 0,0 11,17A2,2 0 0,0 13,19A2,2 0 0,0 15,17V12H18V10H14V15.27C13.71,15.1 13.36,15 13,15Z" /></g><g id="auto-fix"><path d="M7.5,5.6L5,7L6.4,4.5L5,2L7.5,3.4L10,2L8.6,4.5L10,7L7.5,5.6M19.5,15.4L22,14L20.6,16.5L22,19L19.5,17.6L17,19L18.4,16.5L17,14L19.5,15.4M22,2L20.6,4.5L22,7L19.5,5.6L17,7L18.4,4.5L17,2L19.5,3.4L22,2M13.34,12.78L15.78,10.34L13.66,8.22L11.22,10.66L13.34,12.78M14.37,7.29L16.71,9.63C17.1,10 17.1,10.65 16.71,11.04L5.04,22.71C4.65,23.1 4,23.1 3.63,22.71L1.29,20.37C0.9,20 0.9,19.35 1.29,18.96L12.96,7.29C13.35,6.9 14,6.9 14.37,7.29Z" /></g><g id="auto-upload"><path d="M5.35,12.65L6.5,9L7.65,12.65M5.5,7L2.3,16H4.2L4.9,14H8.1L8.8,16H10.7L7.5,7M11,20H22V18H11M14,16H19V11H22L16.5,5.5L11,11H14V16Z" /></g><g id="autorenew"><path d="M12,6V9L16,5L12,1V4A8,8 0 0,0 4,12C4,13.57 4.46,15.03 5.24,16.26L6.7,14.8C6.25,13.97 6,13 6,12A6,6 0 0,1 12,6M18.76,7.74L17.3,9.2C17.74,10.04 18,11 18,12A6,6 0 0,1 12,18V15L8,19L12,23V20A8,8 0 0,0 20,12C20,10.43 19.54,8.97 18.76,7.74Z" /></g><g id="av-timer"><path d="M11,17A1,1 0 0,0 12,18A1,1 0 0,0 13,17A1,1 0 0,0 12,16A1,1 0 0,0 11,17M11,3V7H13V5.08C16.39,5.57 19,8.47 19,12A7,7 0 0,1 12,19A7,7 0 0,1 5,12C5,10.32 5.59,8.78 6.58,7.58L12,13L13.41,11.59L6.61,4.79V4.81C4.42,6.45 3,9.05 3,12A9,9 0 0,0 12,21A9,9 0 0,0 21,12A9,9 0 0,0 12,3M18,12A1,1 0 0,0 17,11A1,1 0 0,0 16,12A1,1 0 0,0 17,13A1,1 0 0,0 18,12M6,12A1,1 0 0,0 7,13A1,1 0 0,0 8,12A1,1 0 0,0 7,11A1,1 0 0,0 6,12Z" /></g><g id="baby"><path d="M18.5,4A2.5,2.5 0 0,1 21,6.5A2.5,2.5 0 0,1 18.5,9A2.5,2.5 0 0,1 16,6.5A2.5,2.5 0 0,1 18.5,4M4.5,20A1.5,1.5 0 0,1 3,18.5A1.5,1.5 0 0,1 4.5,17H11.5A1.5,1.5 0 0,1 13,18.5A1.5,1.5 0 0,1 11.5,20H4.5M16.09,19L14.69,15H11L6.75,10.75C6.75,10.75 9,8.25 12.5,8.25C15.5,8.25 15.85,9.25 16.06,9.87L18.92,18C19.2,18.78 18.78,19.64 18,19.92C17.22,20.19 16.36,19.78 16.09,19Z" /></g><g id="baby-buggy"><path d="M13,2V10H21A8,8 0 0,0 13,2M19.32,15.89C20.37,14.54 21,12.84 21,11H6.44L5.5,9H2V11H4.22C4.22,11 6.11,15.07 6.34,15.42C5.24,16 4.5,17.17 4.5,18.5A3.5,3.5 0 0,0 8,22C9.76,22 11.22,20.7 11.46,19H13.54C13.78,20.7 15.24,22 17,22A3.5,3.5 0 0,0 20.5,18.5C20.5,17.46 20.04,16.53 19.32,15.89M8,20A1.5,1.5 0 0,1 6.5,18.5A1.5,1.5 0 0,1 8,17A1.5,1.5 0 0,1 9.5,18.5A1.5,1.5 0 0,1 8,20M17,20A1.5,1.5 0 0,1 15.5,18.5A1.5,1.5 0 0,1 17,17A1.5,1.5 0 0,1 18.5,18.5A1.5,1.5 0 0,1 17,20Z" /></g><g id="backburger"><path d="M5,13L9,17L7.6,18.42L1.18,12L7.6,5.58L9,7L5,11H21V13H5M21,6V8H11V6H21M21,16V18H11V16H21Z" /></g><g id="backspace"><path d="M22,3H7C6.31,3 5.77,3.35 5.41,3.88L0,12L5.41,20.11C5.77,20.64 6.31,21 7,21H22A2,2 0 0,0 24,19V5A2,2 0 0,0 22,3M19,15.59L17.59,17L14,13.41L10.41,17L9,15.59L12.59,12L9,8.41L10.41,7L14,10.59L17.59,7L19,8.41L15.41,12" /></g><g id="backup-restore"><path d="M12,3A9,9 0 0,0 3,12H0L4,16L8,12H5A7,7 0 0,1 12,5A7,7 0 0,1 19,12A7,7 0 0,1 12,19C10.5,19 9.09,18.5 7.94,17.7L6.5,19.14C8.04,20.3 9.94,21 12,21A9,9 0 0,0 21,12A9,9 0 0,0 12,3M14,12A2,2 0 0,0 12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12Z" /></g><g id="bandcamp"><path d="M22,6L15.5,18H2L8.5,6H22Z" /></g><g id="bank"><path d="M11.5,1L2,6V8H21V6M16,10V17H19V10M2,22H21V19H2M10,10V17H13V10M4,10V17H7V10H4Z" /></g><g id="barcode"><path d="M2,6H4V18H2V6M5,6H6V18H5V6M7,6H10V18H7V6M11,6H12V18H11V6M14,6H16V18H14V6M17,6H20V18H17V6M21,6H22V18H21V6Z" /></g><g id="barcode-scan"><path d="M4,6H6V18H4V6M7,6H8V18H7V6M9,6H12V18H9V6M13,6H14V18H13V6M16,6H18V18H16V6M19,6H20V18H19V6M2,4V8H0V4A2,2 0 0,1 2,2H6V4H2M22,2A2,2 0 0,1 24,4V8H22V4H18V2H22M2,16V20H6V22H2A2,2 0 0,1 0,20V16H2M22,20V16H24V20A2,2 0 0,1 22,22H18V20H22Z" /></g><g id="barley"><path d="M7.33,18.33C6.5,17.17 6.5,15.83 6.5,14.5C8.17,15.5 9.83,16.5 10.67,17.67L11,18.23V15.95C9.5,15.05 8.08,14.13 7.33,13.08C6.5,11.92 6.5,10.58 6.5,9.25C8.17,10.25 9.83,11.25 10.67,12.42L11,13V10.7C9.5,9.8 8.08,8.88 7.33,7.83C6.5,6.67 6.5,5.33 6.5,4C8.17,5 9.83,6 10.67,7.17C10.77,7.31 10.86,7.46 10.94,7.62C10.77,7 10.66,6.42 10.65,5.82C10.64,4.31 11.3,2.76 11.96,1.21C12.65,2.69 13.34,4.18 13.35,5.69C13.36,6.32 13.25,6.96 13.07,7.59C13.15,7.45 13.23,7.31 13.33,7.17C14.17,6 15.83,5 17.5,4C17.5,5.33 17.5,6.67 16.67,7.83C15.92,8.88 14.5,9.8 13,10.7V13L13.33,12.42C14.17,11.25 15.83,10.25 17.5,9.25C17.5,10.58 17.5,11.92 16.67,13.08C15.92,14.13 14.5,15.05 13,15.95V18.23L13.33,17.67C14.17,16.5 15.83,15.5 17.5,14.5C17.5,15.83 17.5,17.17 16.67,18.33C15.92,19.38 14.5,20.3 13,21.2V23H11V21.2C9.5,20.3 8.08,19.38 7.33,18.33Z" /></g><g id="barrel"><path d="M18,19H19V21H5V19H6V13H5V11H6V5H5V3H19V5H18V11H19V13H18V19M9,13A3,3 0 0,0 12,16A3,3 0 0,0 15,13C15,11 12,7.63 12,7.63C12,7.63 9,11 9,13Z" /></g><g id="basecamp"><path d="M3.39,15.64C3.4,15.55 3.42,15.45 3.45,15.36C3.5,15.18 3.54,15 3.6,14.84C3.82,14.19 4.16,13.58 4.5,13C4.7,12.7 4.89,12.41 5.07,12.12C5.26,11.83 5.45,11.54 5.67,11.26C6,10.81 6.45,10.33 7,10.15C7.79,9.9 8.37,10.71 8.82,11.22C9.08,11.5 9.36,11.8 9.71,11.97C9.88,12.04 10.06,12.08 10.24,12.07C10.5,12.05 10.73,11.87 10.93,11.71C11.46,11.27 11.9,10.7 12.31,10.15C12.77,9.55 13.21,8.93 13.73,8.38C13.95,8.15 14.18,7.85 14.5,7.75C14.62,7.71 14.77,7.72 14.91,7.78C15,7.82 15.05,7.87 15.1,7.92C15.17,8 15.25,8.04 15.32,8.09C15.88,8.5 16.4,9 16.89,9.5C17.31,9.93 17.72,10.39 18.1,10.86C18.5,11.32 18.84,11.79 19.15,12.3C19.53,12.93 19.85,13.58 20.21,14.21C20.53,14.79 20.86,15.46 20.53,16.12C20.5,16.15 20.5,16.19 20.5,16.22C19.91,17.19 18.88,17.79 17.86,18.18C16.63,18.65 15.32,18.88 14,18.97C12.66,19.07 11.3,19.06 9.95,18.94C8.73,18.82 7.5,18.6 6.36,18.16C5.4,17.79 4.5,17.25 3.84,16.43C3.69,16.23 3.56,16.03 3.45,15.81C3.43,15.79 3.42,15.76 3.41,15.74C3.39,15.7 3.38,15.68 3.39,15.64M2.08,16.5C2.22,16.73 2.38,16.93 2.54,17.12C2.86,17.5 3.23,17.85 3.62,18.16C4.46,18.81 5.43,19.28 6.44,19.61C7.6,20 8.82,20.19 10.04,20.29C11.45,20.41 12.89,20.41 14.3,20.26C15.6,20.12 16.91,19.85 18.13,19.37C19.21,18.94 20.21,18.32 21.08,17.54C21.31,17.34 21.53,17.13 21.7,16.88C21.86,16.67 22,16.44 22,16.18C22,15.88 22,15.57 21.92,15.27C21.85,14.94 21.76,14.62 21.68,14.3C21.65,14.18 21.62,14.06 21.59,13.94C21.27,12.53 20.78,11.16 20.12,9.87C19.56,8.79 18.87,7.76 18.06,6.84C17.31,6 16.43,5.22 15.43,4.68C14.9,4.38 14.33,4.15 13.75,4C13.44,3.88 13.12,3.81 12.8,3.74C12.71,3.73 12.63,3.71 12.55,3.71C12.44,3.71 12.33,3.71 12.23,3.71C12,3.71 11.82,3.71 11.61,3.71C11.5,3.71 11.43,3.7 11.33,3.71C11.25,3.72 11.16,3.74 11.08,3.75C10.91,3.78 10.75,3.81 10.59,3.85C10.27,3.92 9.96,4 9.65,4.14C9.04,4.38 8.47,4.7 7.93,5.08C6.87,5.8 5.95,6.73 5.18,7.75C4.37,8.83 3.71,10.04 3.21,11.3C2.67,12.64 2.3,14.04 2.07,15.47C2.04,15.65 2,15.84 2,16C2,16.12 2,16.22 2,16.32C2,16.37 2,16.4 2.03,16.44C2.04,16.46 2.06,16.5 2.08,16.5Z" /></g><g id="basket"><path d="M5.5,21C4.72,21 4.04,20.55 3.71,19.9V19.9L1.1,10.44L1,10A1,1 0 0,1 2,9H6.58L11.18,2.43C11.36,2.17 11.66,2 12,2C12.34,2 12.65,2.17 12.83,2.44L17.42,9H22A1,1 0 0,1 23,10L22.96,10.29L20.29,19.9C19.96,20.55 19.28,21 18.5,21H5.5M12,4.74L9,9H15L12,4.74M12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17A2,2 0 0,0 14,15A2,2 0 0,0 12,13Z" /></g><g id="basket-fill"><path d="M3,2H6V5H3V2M6,7H9V10H6V7M8,2H11V5H8V2M17,11L12,6H15V2H19V6H22L17,11M7.5,22C6.72,22 6.04,21.55 5.71,20.9V20.9L3.1,13.44L3,13A1,1 0 0,1 4,12H20A1,1 0 0,1 21,13L20.96,13.29L18.29,20.9C17.96,21.55 17.28,22 16.5,22H7.5M7.61,20H16.39L18.57,14H5.42L7.61,20Z" /></g><g id="basket-unfill"><path d="M3,10H6V7H3V10M5,5H8V2H5V5M8,10H11V7H8V10M17,1L12,6H15V10H19V6H22L17,1M7.5,22C6.72,22 6.04,21.55 5.71,20.9V20.9L3.1,13.44L3,13A1,1 0 0,1 4,12H20A1,1 0 0,1 21,13L20.96,13.29L18.29,20.9C17.96,21.55 17.28,22 16.5,22H7.5M7.61,20H16.39L18.57,14H5.42L7.61,20Z" /></g><g id="battery"><path d="M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z" /></g><g id="battery-10"><path d="M16,18H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z" /></g><g id="battery-20"><path d="M16,17H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z" /></g><g id="battery-30"><path d="M16,15H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z" /></g><g id="battery-40"><path d="M16,14H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z" /></g><g id="battery-50"><path d="M16,13H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z" /></g><g id="battery-60"><path d="M16,12H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z" /></g><g id="battery-70"><path d="M16,10H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z" /></g><g id="battery-80"><path d="M16,9H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z" /></g><g id="battery-90"><path d="M16,8H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z" /></g><g id="battery-alert"><path d="M13,14H11V9H13M13,18H11V16H13M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z" /></g><g id="battery-charging"><path d="M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.66C6,21.4 6.6,22 7.33,22H16.66C17.4,22 18,21.4 18,20.67V5.33C18,4.6 17.4,4 16.67,4M11,20V14.5H9L13,7V12.5H15" /></g><g id="battery-charging-100"><path d="M23,11H20V4L15,14H18V22M12.67,4H11V2H5V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4Z" /></g><g id="battery-charging-20"><path d="M23.05,11H20.05V4L15.05,14H18.05V22M12.05,17H4.05V6H12.05M12.72,4H11.05V2H5.05V4H3.38A1.33,1.33 0 0,0 2.05,5.33V20.67C2.05,21.4 2.65,22 3.38,22H12.72C13.45,22 14.05,21.4 14.05,20.67V5.33A1.33,1.33 0 0,0 12.72,4Z" /></g><g id="battery-charging-30"><path d="M12,15H4V6H12M12.67,4H11V2H5V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4M23,11H20V4L15,14H18V22L23,11Z" /></g><g id="battery-charging-40"><path d="M23,11H20V4L15,14H18V22M12,13H4V6H12M12.67,4H11V2H5V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4Z" /></g><g id="battery-charging-60"><path d="M12,11H4V6H12M12.67,4H11V2H5V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4M23,11H20V4L15,14H18V22L23,11Z" /></g><g id="battery-charging-80"><path d="M23,11H20V4L15,14H18V22M12,9H4V6H12M12.67,4H11V2H5V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4Z" /></g><g id="battery-charging-90"><path d="M23,11H20V4L15,14H18V22M12,8H4V6H12M12.67,4H11V2H5V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4Z" /></g><g id="battery-minus"><path d="M16.67,4C17.4,4 18,4.6 18,5.33V20.67A1.33,1.33 0 0,1 16.67,22H7.33C6.6,22 6,21.4 6,20.67V5.33A1.33,1.33 0 0,1 7.33,4H9V2H15V4H16.67M8,12V14H16V12" /></g><g id="battery-negative"><path d="M11.67,4A1.33,1.33 0 0,1 13,5.33V20.67C13,21.4 12.4,22 11.67,22H2.33C1.6,22 1,21.4 1,20.67V5.33A1.33,1.33 0 0,1 2.33,4H4V2H10V4H11.67M15,12H23V14H15V12M3,13H11V6H3V13Z" /></g><g id="battery-outline"><path d="M16,20H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z" /></g><g id="battery-plus"><path d="M16.67,4C17.4,4 18,4.6 18,5.33V20.67A1.33,1.33 0 0,1 16.67,22H7.33C6.6,22 6,21.4 6,20.67V5.33A1.33,1.33 0 0,1 7.33,4H9V2H15V4H16.67M16,14V12H13V9H11V12H8V14H11V17H13V14H16Z" /></g><g id="battery-positive"><path d="M11.67,4A1.33,1.33 0 0,1 13,5.33V20.67C13,21.4 12.4,22 11.67,22H2.33C1.6,22 1,21.4 1,20.67V5.33A1.33,1.33 0 0,1 2.33,4H4V2H10V4H11.67M23,14H20V17H18V14H15V12H18V9H20V12H23V14M3,13H11V6H3V13Z" /></g><g id="battery-unknown"><path d="M15.07,12.25L14.17,13.17C13.63,13.71 13.25,14.18 13.09,15H11.05C11.16,14.1 11.56,13.28 12.17,12.67L13.41,11.41C13.78,11.05 14,10.55 14,10C14,8.89 13.1,8 12,8A2,2 0 0,0 10,10H8A4,4 0 0,1 12,6A4,4 0 0,1 16,10C16,10.88 15.64,11.68 15.07,12.25M13,19H11V17H13M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.66C6,21.4 6.6,22 7.33,22H16.67C17.4,22 18,21.4 18,20.66V5.33C18,4.59 17.4,4 16.67,4Z" /></g><g id="beach"><path d="M15,18.54C17.13,18.21 19.5,18 22,18V22H5C5,21.35 8.2,19.86 13,18.9V12.4C12.16,12.65 11.45,13.21 11,13.95C10.39,12.93 9.27,12.25 8,12.25C6.73,12.25 5.61,12.93 5,13.95C5.03,10.37 8.5,7.43 13,7.04V7A1,1 0 0,1 14,6A1,1 0 0,1 15,7V7.04C19.5,7.43 22.96,10.37 23,13.95C22.39,12.93 21.27,12.25 20,12.25C18.73,12.25 17.61,12.93 17,13.95C16.55,13.21 15.84,12.65 15,12.39V18.54M7,2A5,5 0 0,1 2,7V2H7Z" /></g><g id="beaker"><path d="M3,3H21V5A2,2 0 0,0 19,7V19A2,2 0 0,1 17,21H7A2,2 0 0,1 5,19V7A2,2 0 0,0 3,5V3M7,5V7H12V8H7V9H10V10H7V11H10V12H7V13H12V14H7V15H10V16H7V19H17V5H7Z" /></g><g id="beats"><path d="M7,12A5,5 0 0,0 12,17A5,5 0 0,0 17,12A5,5 0 0,0 12,7C10.87,7 9.84,7.37 9,8V2.46C9.95,2.16 10.95,2 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12C2,8.3 4,5.07 7,3.34V12M14.5,12C14.5,12.37 14.3,12.68 14,12.86L12.11,14.29C11.94,14.42 11.73,14.5 11.5,14.5A1,1 0 0,1 10.5,13.5V10.5A1,1 0 0,1 11.5,9.5C11.73,9.5 11.94,9.58 12.11,9.71L14,11.14C14.3,11.32 14.5,11.63 14.5,12Z" /></g><g id="beer"><path d="M4,2H19L17,22H6L4,2M6.2,4L7.8,20H8.8L7.43,6.34C8.5,6 9.89,5.89 11,7C12.56,8.56 15.33,7.69 16.5,7.23L16.8,4H6.2Z" /></g><g id="behance"><path d="M19.58,12.27C19.54,11.65 19.33,11.18 18.96,10.86C18.59,10.54 18.13,10.38 17.58,10.38C17,10.38 16.5,10.55 16.19,10.89C15.86,11.23 15.65,11.69 15.57,12.27M21.92,12.04C22,12.45 22,13.04 22,13.81H15.5C15.55,14.71 15.85,15.33 16.44,15.69C16.79,15.92 17.22,16.03 17.73,16.03C18.26,16.03 18.69,15.89 19,15.62C19.2,15.47 19.36,15.27 19.5,15H21.88C21.82,15.54 21.53,16.07 21,16.62C20.22,17.5 19.1,17.92 17.66,17.92C16.47,17.92 15.43,17.55 14.5,16.82C13.62,16.09 13.16,14.9 13.16,13.25C13.16,11.7 13.57,10.5 14.39,9.7C15.21,8.87 16.27,8.46 17.58,8.46C18.35,8.46 19.05,8.6 19.67,8.88C20.29,9.16 20.81,9.59 21.21,10.2C21.58,10.73 21.81,11.34 21.92,12.04M9.58,14.07C9.58,13.42 9.31,12.97 8.79,12.73C8.5,12.6 8.08,12.53 7.54,12.5H4.87V15.84H7.5C8.04,15.84 8.46,15.77 8.76,15.62C9.31,15.35 9.58,14.83 9.58,14.07M4.87,10.46H7.5C8.04,10.46 8.5,10.36 8.82,10.15C9.16,9.95 9.32,9.58 9.32,9.06C9.32,8.5 9.1,8.1 8.66,7.91C8.27,7.78 7.78,7.72 7.19,7.72H4.87M11.72,12.42C12.04,12.92 12.2,13.53 12.2,14.24C12.2,15 12,15.64 11.65,16.23C11.41,16.62 11.12,16.94 10.77,17.21C10.37,17.5 9.9,17.72 9.36,17.83C8.82,17.94 8.24,18 7.61,18H2V5.55H8C9.53,5.58 10.6,6 11.23,6.88C11.61,7.41 11.8,8.04 11.8,8.78C11.8,9.54 11.61,10.15 11.23,10.61C11,10.87 10.7,11.11 10.28,11.32C10.91,11.55 11.39,11.92 11.72,12.42M20.06,7.32H15.05V6.07H20.06V7.32Z" /></g><g id="bell"><path d="M14,20A2,2 0 0,1 12,22A2,2 0 0,1 10,20H14M12,2A1,1 0 0,1 13,3V4.08C15.84,4.56 18,7.03 18,10V16L21,19H3L6,16V10C6,7.03 8.16,4.56 11,4.08V3A1,1 0 0,1 12,2Z" /></g><g id="bell-off"><path d="M14,20A2,2 0 0,1 12,22A2,2 0 0,1 10,20H14M19.74,21.57L17.17,19H3L6,16V10C6,9.35 6.1,8.72 6.3,8.13L3.47,5.3L4.89,3.89L7.29,6.29L21.15,20.15L19.74,21.57M11,4.08V3A1,1 0 0,1 12,2A1,1 0 0,1 13,3V4.08C15.84,4.56 18,7.03 18,10V14.17L8.77,4.94C9.44,4.5 10.19,4.22 11,4.08Z" /></g><g id="bell-outline"><path d="M16,17H7V10.5C7,8 9,6 11.5,6C14,6 16,8 16,10.5M18,16V10.5C18,7.43 15.86,4.86 13,4.18V3.5A1.5,1.5 0 0,0 11.5,2A1.5,1.5 0 0,0 10,3.5V4.18C7.13,4.86 5,7.43 5,10.5V16L3,18V19H20V18M11.5,22A2,2 0 0,0 13.5,20H9.5A2,2 0 0,0 11.5,22Z" /></g><g id="bell-plus"><path d="M10,21C10,22.11 10.9,23 12,23A2,2 0 0,0 14,21M18.88,16.82V11C18.88,7.75 16.63,5.03 13.59,4.31V3.59A1.59,1.59 0 0,0 12,2A1.59,1.59 0 0,0 10.41,3.59V4.31C7.37,5.03 5.12,7.75 5.12,11V16.82L3,18.94V20H21V18.94M16,13H13V16H11V13H8V11H11V8H13V11H16" /></g><g id="bell-ring"><path d="M11.5,22C11.64,22 11.77,22 11.9,21.96C12.55,21.82 13.09,21.38 13.34,20.78C13.44,20.54 13.5,20.27 13.5,20H9.5A2,2 0 0,0 11.5,22M18,10.5C18,7.43 15.86,4.86 13,4.18V3.5A1.5,1.5 0 0,0 11.5,2A1.5,1.5 0 0,0 10,3.5V4.18C7.13,4.86 5,7.43 5,10.5V16L3,18V19H20V18L18,16M19.97,10H21.97C21.82,6.79 20.24,3.97 17.85,2.15L16.42,3.58C18.46,5 19.82,7.35 19.97,10M6.58,3.58L5.15,2.15C2.76,3.97 1.18,6.79 1,10H3C3.18,7.35 4.54,5 6.58,3.58Z" /></g><g id="bell-ring-outline"><path d="M16,17V10.5C16,8 14,6 11.5,6C9,6 7,8 7,10.5V17H16M18,16L20,18V19H3V18L5,16V10.5C5,7.43 7.13,4.86 10,4.18V3.5A1.5,1.5 0 0,1 11.5,2A1.5,1.5 0 0,1 13,3.5V4.18C15.86,4.86 18,7.43 18,10.5V16M11.5,22A2,2 0 0,1 9.5,20H13.5A2,2 0 0,1 11.5,22M19.97,10C19.82,7.35 18.46,5 16.42,3.58L17.85,2.15C20.24,3.97 21.82,6.79 21.97,10H19.97M6.58,3.58C4.54,5 3.18,7.35 3,10H1C1.18,6.79 2.76,3.97 5.15,2.15L6.58,3.58Z" /></g><g id="bell-sleep"><path d="M14,9.8L11.2,13.2H14V15H9V13.2L11.8,9.8H9V8H14M18,16V10.5C18,7.43 15.86,4.86 13,4.18V3.5A1.5,1.5 0 0,0 11.5,2A1.5,1.5 0 0,0 10,3.5V4.18C7.13,4.86 5,7.43 5,10.5V16L3,18V19H20V18M11.5,22A2,2 0 0,0 13.5,20H9.5A2,2 0 0,0 11.5,22Z" /></g><g id="beta"><path d="M9.23,17.59V23.12H6.88V6.72C6.88,5.27 7.31,4.13 8.16,3.28C9,2.43 10.17,2 11.61,2C13,2 14.07,2.34 14.87,3C15.66,3.68 16.05,4.62 16.05,5.81C16.05,6.63 15.79,7.4 15.27,8.11C14.75,8.82 14.08,9.31 13.25,9.58V9.62C14.5,9.82 15.47,10.27 16.13,11C16.79,11.71 17.12,12.62 17.12,13.74C17.12,15.06 16.66,16.14 15.75,16.97C14.83,17.8 13.63,18.21 12.13,18.21C11.07,18.21 10.1,18 9.23,17.59M10.72,10.75V8.83C11.59,8.72 12.3,8.4 12.87,7.86C13.43,7.31 13.71,6.7 13.71,6C13.71,4.62 13,3.92 11.6,3.92C10.84,3.92 10.25,4.16 9.84,4.65C9.43,5.14 9.23,5.82 9.23,6.71V15.5C10.14,16.03 11.03,16.29 11.89,16.29C12.73,16.29 13.39,16.07 13.86,15.64C14.33,15.2 14.56,14.58 14.56,13.79C14.56,12 13.28,11 10.72,10.75Z" /></g><g id="bible"><path d="M5.81,2H7V9L9.5,7.5L12,9V2H18A2,2 0 0,1 20,4V20C20,21.05 19.05,22 18,22H6C4.95,22 4,21.05 4,20V4C4,3 4.83,2.09 5.81,2M13,10V13H10V15H13V20H15V15H18V13H15V10H13Z" /></g><g id="bike"><path d="M5,20.5A3.5,3.5 0 0,1 1.5,17A3.5,3.5 0 0,1 5,13.5A3.5,3.5 0 0,1 8.5,17A3.5,3.5 0 0,1 5,20.5M5,12A5,5 0 0,0 0,17A5,5 0 0,0 5,22A5,5 0 0,0 10,17A5,5 0 0,0 5,12M14.8,10H19V8.2H15.8L13.86,4.93C13.57,4.43 13,4.1 12.4,4.1C11.93,4.1 11.5,4.29 11.2,4.6L7.5,8.29C7.19,8.6 7,9 7,9.5C7,10.13 7.33,10.66 7.85,10.97L11.2,13V18H13V11.5L10.75,9.85L13.07,7.5M19,20.5A3.5,3.5 0 0,1 15.5,17A3.5,3.5 0 0,1 19,13.5A3.5,3.5 0 0,1 22.5,17A3.5,3.5 0 0,1 19,20.5M19,12A5,5 0 0,0 14,17A5,5 0 0,0 19,22A5,5 0 0,0 24,17A5,5 0 0,0 19,12M16,4.8C17,4.8 17.8,4 17.8,3C17.8,2 17,1.2 16,1.2C15,1.2 14.2,2 14.2,3C14.2,4 15,4.8 16,4.8Z" /></g><g id="bing"><path d="M5,3V19L8.72,21L18,15.82V11.73H18L9.77,8.95L11.38,12.84L13.94,14L8.7,16.92V4.27L5,3" /></g><g id="binoculars"><path d="M11,6H13V13H11V6M9,20A1,1 0 0,1 8,21H5A1,1 0 0,1 4,20V15L6,6H10V13A1,1 0 0,1 9,14V20M10,5H7V3H10V5M15,20V14A1,1 0 0,1 14,13V6H18L20,15V20A1,1 0 0,1 19,21H16A1,1 0 0,1 15,20M14,5V3H17V5H14Z" /></g><g id="bio"><path d="M17,12H20A2,2 0 0,1 22,14V17A2,2 0 0,1 20,19H17A2,2 0 0,1 15,17V14A2,2 0 0,1 17,12M17,14V17H20V14H17M2,7H7A2,2 0 0,1 9,9V11A2,2 0 0,1 7,13A2,2 0 0,1 9,15V17A2,2 0 0,1 7,19H2V13L2,7M4,9V12H7V9H4M4,17H7V14H4V17M11,13H13V19H11V13M11,9H13V11H11V9Z" /></g><g id="biohazard"><path d="M23,16.06C23,16.29 23,16.5 22.96,16.7C22.78,14.14 20.64,12.11 18,12.11C17.63,12.11 17.27,12.16 16.92,12.23C16.96,12.5 17,12.73 17,13C17,15.35 15.31,17.32 13.07,17.81C13.42,20.05 15.31,21.79 17.65,21.96C17.43,22 17.22,22 17,22C14.92,22 13.07,20.94 12,19.34C10.93,20.94 9.09,22 7,22C6.78,22 6.57,22 6.35,21.96C8.69,21.79 10.57,20.06 10.93,17.81C8.68,17.32 7,15.35 7,13C7,12.73 7.04,12.5 7.07,12.23C6.73,12.16 6.37,12.11 6,12.11C3.36,12.11 1.22,14.14 1.03,16.7C1,16.5 1,16.29 1,16.06C1,12.85 3.59,10.24 6.81,10.14C6.3,9.27 6,8.25 6,7.17C6,4.94 7.23,3 9.06,2C7.81,2.9 7,4.34 7,6C7,7.35 7.56,8.59 8.47,9.5C9.38,8.59 10.62,8.04 12,8.04C13.37,8.04 14.62,8.59 15.5,9.5C16.43,8.59 17,7.35 17,6C17,4.34 16.18,2.9 14.94,2C16.77,3 18,4.94 18,7.17C18,8.25 17.7,9.27 17.19,10.14C20.42,10.24 23,12.85 23,16.06M9.27,10.11C10.05,10.62 11,10.92 12,10.92C13,10.92 13.95,10.62 14.73,10.11C14,9.45 13.06,9.03 12,9.03C10.94,9.03 10,9.45 9.27,10.11M12,14.47C12.82,14.47 13.5,13.8 13.5,13A1.5,1.5 0 0,0 12,11.5A1.5,1.5 0 0,0 10.5,13C10.5,13.8 11.17,14.47 12,14.47M10.97,16.79C10.87,14.9 9.71,13.29 8.05,12.55C8.03,12.7 8,12.84 8,13C8,14.82 9.27,16.34 10.97,16.79M15.96,12.55C14.29,13.29 13.12,14.9 13,16.79C14.73,16.34 16,14.82 16,13C16,12.84 15.97,12.7 15.96,12.55Z" /></g><g id="bitbucket"><path d="M12,5.76C15.06,5.77 17.55,5.24 17.55,4.59C17.55,3.94 15.07,3.41 12,3.4C8.94,3.4 6.45,3.92 6.45,4.57C6.45,5.23 8.93,5.76 12,5.76M12,14.4C13.5,14.4 14.75,13.16 14.75,11.64A2.75,2.75 0 0,0 12,8.89C10.5,8.89 9.25,10.12 9.25,11.64C9.25,13.16 10.5,14.4 12,14.4M12,2C16.77,2 20.66,3.28 20.66,4.87C20.66,5.29 19.62,11.31 19.21,13.69C19.03,14.76 16.26,16.33 12,16.33V16.31L12,16.33C7.74,16.33 4.97,14.76 4.79,13.69C4.38,11.31 3.34,5.29 3.34,4.87C3.34,3.28 7.23,2 12,2M18.23,16.08C18.38,16.08 18.53,16.19 18.53,16.42V16.5C18.19,18.26 17.95,19.5 17.91,19.71C17.62,21 15.07,22 12,22V22C8.93,22 6.38,21 6.09,19.71C6.05,19.5 5.81,18.26 5.47,16.5V16.42C5.47,16.19 5.62,16.08 5.77,16.08C5.91,16.08 6,16.17 6,16.17C6,16.17 8.14,17.86 12,17.86C15.86,17.86 18,16.17 18,16.17C18,16.17 18.09,16.08 18.23,16.08M13.38,11.64C13.38,12.4 12.76,13 12,13C11.24,13 10.62,12.4 10.62,11.64A1.38,1.38 0 0,1 12,10.26A1.38,1.38 0 0,1 13.38,11.64Z" /></g><g id="black-mesa"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12C4,14.39 5.05,16.53 6.71,18H9V12H17L19.15,15.59C19.69,14.5 20,13.29 20,12A8,8 0 0,0 12,4Z" /></g><g id="blackberry"><path d="M5.45,10.28C6.4,10.28 7.5,11.05 7.5,12C7.5,12.95 6.4,13.72 5.45,13.72H2L2.69,10.28H5.45M6.14,4.76C7.09,4.76 8.21,5.53 8.21,6.5C8.21,7.43 7.09,8.21 6.14,8.21H2.69L3.38,4.76H6.14M13.03,4.76C14,4.76 15.1,5.53 15.1,6.5C15.1,7.43 14,8.21 13.03,8.21H9.41L10.1,4.76H13.03M12.34,10.28C13.3,10.28 14.41,11.05 14.41,12C14.41,12.95 13.3,13.72 12.34,13.72H8.72L9.41,10.28H12.34M10.97,15.79C11.92,15.79 13.03,16.57 13.03,17.5C13.03,18.47 11.92,19.24 10.97,19.24H7.5L8.21,15.79H10.97M18.55,13.72C19.5,13.72 20.62,14.5 20.62,15.45C20.62,16.4 19.5,17.17 18.55,17.17H15.1L15.79,13.72H18.55M19.93,8.21C20.88,8.21 22,9 22,9.93C22,10.88 20.88,11.66 19.93,11.66H16.5L17.17,8.21H19.93Z" /></g><g id="blender"><path d="M8,3C8,3.34 8.17,3.69 8.5,3.88L12,6H2.5A1.5,1.5 0 0,0 1,7.5A1.5,1.5 0 0,0 2.5,9H8.41L2,13C1.16,13.5 1,14.22 1,15C1,16 1.77,17 3,17C3.69,17 4.39,16.5 5,16L7,14.38C7.2,18.62 10.71,22 15,22A8,8 0 0,0 23,14C23,11.08 21.43,8.5 19.09,7.13C19.06,7.11 19.03,7.08 19,7.06C19,7.06 18.92,7 18.86,6.97C15.76,4.88 13.03,3.72 9.55,2.13C9.34,2.04 9.16,2 9,2C8.4,2 8,2.46 8,3M15,9A5,5 0 0,1 20,14A5,5 0 0,1 15,19A5,5 0 0,1 10,14A5,5 0 0,1 15,9M15,10.5A3.5,3.5 0 0,0 11.5,14A3.5,3.5 0 0,0 15,17.5A3.5,3.5 0 0,0 18.5,14A3.5,3.5 0 0,0 15,10.5Z" /></g><g id="blinds"><path d="M3,2H21A1,1 0 0,1 22,3V5A1,1 0 0,1 21,6H20V13A1,1 0 0,1 19,14H13V16.17C14.17,16.58 15,17.69 15,19A3,3 0 0,1 12,22A3,3 0 0,1 9,19C9,17.69 9.83,16.58 11,16.17V14H5A1,1 0 0,1 4,13V6H3A1,1 0 0,1 2,5V3A1,1 0 0,1 3,2M12,18A1,1 0 0,0 11,19A1,1 0 0,0 12,20A1,1 0 0,0 13,19A1,1 0 0,0 12,18Z" /></g><g id="block-helper"><path d="M12,0A12,12 0 0,1 24,12A12,12 0 0,1 12,24A12,12 0 0,1 0,12A12,12 0 0,1 12,0M12,2A10,10 0 0,0 2,12C2,14.4 2.85,16.6 4.26,18.33L18.33,4.26C16.6,2.85 14.4,2 12,2M12,22A10,10 0 0,0 22,12C22,9.6 21.15,7.4 19.74,5.67L5.67,19.74C7.4,21.15 9.6,22 12,22Z" /></g><g id="blogger"><path d="M14,13H9.95A1,1 0 0,0 8.95,14A1,1 0 0,0 9.95,15H14A1,1 0 0,0 15,14A1,1 0 0,0 14,13M9.95,10H12.55A1,1 0 0,0 13.55,9A1,1 0 0,0 12.55,8H9.95A1,1 0 0,0 8.95,9A1,1 0 0,0 9.95,10M16,9V10A1,1 0 0,0 17,11A1,1 0 0,1 18,12V15A3,3 0 0,1 15,18H9A3,3 0 0,1 6,15V8A3,3 0 0,1 9,5H13A3,3 0 0,1 16,8M20,2H4C2.89,2 2,2.89 2,4V20A2,2 0 0,0 4,22H20A2,2 0 0,0 22,20V4C22,2.89 21.1,2 20,2Z" /></g><g id="bluetooth"><path d="M14.88,16.29L13,18.17V14.41M13,5.83L14.88,7.71L13,9.58M17.71,7.71L12,2H11V9.58L6.41,5L5,6.41L10.59,12L5,17.58L6.41,19L11,14.41V22H12L17.71,16.29L13.41,12L17.71,7.71Z" /></g><g id="bluetooth-audio"><path d="M12.88,16.29L11,18.17V14.41M11,5.83L12.88,7.71L11,9.58M15.71,7.71L10,2H9V9.58L4.41,5L3,6.41L8.59,12L3,17.58L4.41,19L9,14.41V22H10L15.71,16.29L11.41,12M19.53,6.71L18.26,8C18.89,9.18 19.25,10.55 19.25,12C19.25,13.45 18.89,14.82 18.26,16L19.46,17.22C20.43,15.68 21,13.87 21,11.91C21,10 20.46,8.23 19.53,6.71M14.24,12L16.56,14.33C16.84,13.6 17,12.82 17,12C17,11.18 16.84,10.4 16.57,9.68L14.24,12Z" /></g><g id="bluetooth-connect"><path d="M19,10L17,12L19,14L21,12M14.88,16.29L13,18.17V14.41M13,5.83L14.88,7.71L13,9.58M17.71,7.71L12,2H11V9.58L6.41,5L5,6.41L10.59,12L5,17.58L6.41,19L11,14.41V22H12L17.71,16.29L13.41,12M7,12L5,10L3,12L5,14L7,12Z" /></g><g id="bluetooth-off"><path d="M13,5.83L14.88,7.71L13.28,9.31L14.69,10.72L17.71,7.7L12,2H11V7.03L13,9.03M5.41,4L4,5.41L10.59,12L5,17.59L6.41,19L11,14.41V22H12L16.29,17.71L18.59,20L20,18.59M13,18.17V14.41L14.88,16.29" /></g><g id="bluetooth-settings"><path d="M14.88,14.29L13,16.17V12.41L14.88,14.29M13,3.83L14.88,5.71L13,7.59M17.71,5.71L12,0H11V7.59L6.41,3L5,4.41L10.59,10L5,15.59L6.41,17L11,12.41V20H12L17.71,14.29L13.41,10L17.71,5.71M15,24H17V22H15M7,24H9V22H7M11,24H13V22H11V24Z" /></g><g id="bluetooth-transfer"><path d="M14.71,7.71L10.41,12L14.71,16.29L9,22H8V14.41L3.41,19L2,17.59L7.59,12L2,6.41L3.41,5L8,9.59V2H9L14.71,7.71M10,5.83V9.59L11.88,7.71L10,5.83M11.88,16.29L10,14.41V18.17L11.88,16.29M22,8H20V11H18V8H16L19,4L22,8M22,16L19,20L16,16H18V13H20V16H22Z" /></g><g id="blur"><path d="M14,8.5A1.5,1.5 0 0,0 12.5,10A1.5,1.5 0 0,0 14,11.5A1.5,1.5 0 0,0 15.5,10A1.5,1.5 0 0,0 14,8.5M14,12.5A1.5,1.5 0 0,0 12.5,14A1.5,1.5 0 0,0 14,15.5A1.5,1.5 0 0,0 15.5,14A1.5,1.5 0 0,0 14,12.5M10,17A1,1 0 0,0 9,18A1,1 0 0,0 10,19A1,1 0 0,0 11,18A1,1 0 0,0 10,17M10,8.5A1.5,1.5 0 0,0 8.5,10A1.5,1.5 0 0,0 10,11.5A1.5,1.5 0 0,0 11.5,10A1.5,1.5 0 0,0 10,8.5M14,20.5A0.5,0.5 0 0,0 13.5,21A0.5,0.5 0 0,0 14,21.5A0.5,0.5 0 0,0 14.5,21A0.5,0.5 0 0,0 14,20.5M14,17A1,1 0 0,0 13,18A1,1 0 0,0 14,19A1,1 0 0,0 15,18A1,1 0 0,0 14,17M21,13.5A0.5,0.5 0 0,0 20.5,14A0.5,0.5 0 0,0 21,14.5A0.5,0.5 0 0,0 21.5,14A0.5,0.5 0 0,0 21,13.5M18,5A1,1 0 0,0 17,6A1,1 0 0,0 18,7A1,1 0 0,0 19,6A1,1 0 0,0 18,5M18,9A1,1 0 0,0 17,10A1,1 0 0,0 18,11A1,1 0 0,0 19,10A1,1 0 0,0 18,9M18,17A1,1 0 0,0 17,18A1,1 0 0,0 18,19A1,1 0 0,0 19,18A1,1 0 0,0 18,17M18,13A1,1 0 0,0 17,14A1,1 0 0,0 18,15A1,1 0 0,0 19,14A1,1 0 0,0 18,13M10,12.5A1.5,1.5 0 0,0 8.5,14A1.5,1.5 0 0,0 10,15.5A1.5,1.5 0 0,0 11.5,14A1.5,1.5 0 0,0 10,12.5M10,7A1,1 0 0,0 11,6A1,1 0 0,0 10,5A1,1 0 0,0 9,6A1,1 0 0,0 10,7M10,3.5A0.5,0.5 0 0,0 10.5,3A0.5,0.5 0 0,0 10,2.5A0.5,0.5 0 0,0 9.5,3A0.5,0.5 0 0,0 10,3.5M10,20.5A0.5,0.5 0 0,0 9.5,21A0.5,0.5 0 0,0 10,21.5A0.5,0.5 0 0,0 10.5,21A0.5,0.5 0 0,0 10,20.5M3,13.5A0.5,0.5 0 0,0 2.5,14A0.5,0.5 0 0,0 3,14.5A0.5,0.5 0 0,0 3.5,14A0.5,0.5 0 0,0 3,13.5M14,3.5A0.5,0.5 0 0,0 14.5,3A0.5,0.5 0 0,0 14,2.5A0.5,0.5 0 0,0 13.5,3A0.5,0.5 0 0,0 14,3.5M14,7A1,1 0 0,0 15,6A1,1 0 0,0 14,5A1,1 0 0,0 13,6A1,1 0 0,0 14,7M21,10.5A0.5,0.5 0 0,0 21.5,10A0.5,0.5 0 0,0 21,9.5A0.5,0.5 0 0,0 20.5,10A0.5,0.5 0 0,0 21,10.5M6,5A1,1 0 0,0 5,6A1,1 0 0,0 6,7A1,1 0 0,0 7,6A1,1 0 0,0 6,5M3,9.5A0.5,0.5 0 0,0 2.5,10A0.5,0.5 0 0,0 3,10.5A0.5,0.5 0 0,0 3.5,10A0.5,0.5 0 0,0 3,9.5M6,9A1,1 0 0,0 5,10A1,1 0 0,0 6,11A1,1 0 0,0 7,10A1,1 0 0,0 6,9M6,17A1,1 0 0,0 5,18A1,1 0 0,0 6,19A1,1 0 0,0 7,18A1,1 0 0,0 6,17M6,13A1,1 0 0,0 5,14A1,1 0 0,0 6,15A1,1 0 0,0 7,14A1,1 0 0,0 6,13Z" /></g><g id="blur-linear"><path d="M13,17A1,1 0 0,0 14,16A1,1 0 0,0 13,15A1,1 0 0,0 12,16A1,1 0 0,0 13,17M13,13A1,1 0 0,0 14,12A1,1 0 0,0 13,11A1,1 0 0,0 12,12A1,1 0 0,0 13,13M13,9A1,1 0 0,0 14,8A1,1 0 0,0 13,7A1,1 0 0,0 12,8A1,1 0 0,0 13,9M17,12.5A0.5,0.5 0 0,0 17.5,12A0.5,0.5 0 0,0 17,11.5A0.5,0.5 0 0,0 16.5,12A0.5,0.5 0 0,0 17,12.5M17,8.5A0.5,0.5 0 0,0 17.5,8A0.5,0.5 0 0,0 17,7.5A0.5,0.5 0 0,0 16.5,8A0.5,0.5 0 0,0 17,8.5M3,3V5H21V3M17,16.5A0.5,0.5 0 0,0 17.5,16A0.5,0.5 0 0,0 17,15.5A0.5,0.5 0 0,0 16.5,16A0.5,0.5 0 0,0 17,16.5M9,17A1,1 0 0,0 10,16A1,1 0 0,0 9,15A1,1 0 0,0 8,16A1,1 0 0,0 9,17M5,13.5A1.5,1.5 0 0,0 6.5,12A1.5,1.5 0 0,0 5,10.5A1.5,1.5 0 0,0 3.5,12A1.5,1.5 0 0,0 5,13.5M5,9.5A1.5,1.5 0 0,0 6.5,8A1.5,1.5 0 0,0 5,6.5A1.5,1.5 0 0,0 3.5,8A1.5,1.5 0 0,0 5,9.5M3,21H21V19H3M9,9A1,1 0 0,0 10,8A1,1 0 0,0 9,7A1,1 0 0,0 8,8A1,1 0 0,0 9,9M9,13A1,1 0 0,0 10,12A1,1 0 0,0 9,11A1,1 0 0,0 8,12A1,1 0 0,0 9,13M5,17.5A1.5,1.5 0 0,0 6.5,16A1.5,1.5 0 0,0 5,14.5A1.5,1.5 0 0,0 3.5,16A1.5,1.5 0 0,0 5,17.5Z" /></g><g id="blur-off"><path d="M3,13.5A0.5,0.5 0 0,0 2.5,14A0.5,0.5 0 0,0 3,14.5A0.5,0.5 0 0,0 3.5,14A0.5,0.5 0 0,0 3,13.5M6,17A1,1 0 0,0 5,18A1,1 0 0,0 6,19A1,1 0 0,0 7,18A1,1 0 0,0 6,17M10,20.5A0.5,0.5 0 0,0 9.5,21A0.5,0.5 0 0,0 10,21.5A0.5,0.5 0 0,0 10.5,21A0.5,0.5 0 0,0 10,20.5M3,9.5A0.5,0.5 0 0,0 2.5,10A0.5,0.5 0 0,0 3,10.5A0.5,0.5 0 0,0 3.5,10A0.5,0.5 0 0,0 3,9.5M6,13A1,1 0 0,0 5,14A1,1 0 0,0 6,15A1,1 0 0,0 7,14A1,1 0 0,0 6,13M21,13.5A0.5,0.5 0 0,0 20.5,14A0.5,0.5 0 0,0 21,14.5A0.5,0.5 0 0,0 21.5,14A0.5,0.5 0 0,0 21,13.5M10,17A1,1 0 0,0 9,18A1,1 0 0,0 10,19A1,1 0 0,0 11,18A1,1 0 0,0 10,17M2.5,5.27L6.28,9.05L6,9A1,1 0 0,0 5,10A1,1 0 0,0 6,11A1,1 0 0,0 7,10C7,9.9 6.97,9.81 6.94,9.72L9.75,12.53C9.04,12.64 8.5,13.26 8.5,14A1.5,1.5 0 0,0 10,15.5C10.74,15.5 11.36,14.96 11.47,14.25L14.28,17.06C14.19,17.03 14.1,17 14,17A1,1 0 0,0 13,18A1,1 0 0,0 14,19A1,1 0 0,0 15,18C15,17.9 14.97,17.81 14.94,17.72L18.72,21.5L20,20.23L3.77,4L2.5,5.27M14,20.5A0.5,0.5 0 0,0 13.5,21A0.5,0.5 0 0,0 14,21.5A0.5,0.5 0 0,0 14.5,21A0.5,0.5 0 0,0 14,20.5M18,7A1,1 0 0,0 19,6A1,1 0 0,0 18,5A1,1 0 0,0 17,6A1,1 0 0,0 18,7M18,11A1,1 0 0,0 19,10A1,1 0 0,0 18,9A1,1 0 0,0 17,10A1,1 0 0,0 18,11M18,15A1,1 0 0,0 19,14A1,1 0 0,0 18,13A1,1 0 0,0 17,14A1,1 0 0,0 18,15M10,7A1,1 0 0,0 11,6A1,1 0 0,0 10,5A1,1 0 0,0 9,6A1,1 0 0,0 10,7M21,10.5A0.5,0.5 0 0,0 21.5,10A0.5,0.5 0 0,0 21,9.5A0.5,0.5 0 0,0 20.5,10A0.5,0.5 0 0,0 21,10.5M10,3.5A0.5,0.5 0 0,0 10.5,3A0.5,0.5 0 0,0 10,2.5A0.5,0.5 0 0,0 9.5,3A0.5,0.5 0 0,0 10,3.5M14,3.5A0.5,0.5 0 0,0 14.5,3A0.5,0.5 0 0,0 14,2.5A0.5,0.5 0 0,0 13.5,3A0.5,0.5 0 0,0 14,3.5M13.8,11.5H14A1.5,1.5 0 0,0 15.5,10A1.5,1.5 0 0,0 14,8.5A1.5,1.5 0 0,0 12.5,10V10.2C12.61,10.87 13.13,11.39 13.8,11.5M14,7A1,1 0 0,0 15,6A1,1 0 0,0 14,5A1,1 0 0,0 13,6A1,1 0 0,0 14,7Z" /></g><g id="blur-radial"><path d="M14,13A1,1 0 0,0 13,14A1,1 0 0,0 14,15A1,1 0 0,0 15,14A1,1 0 0,0 14,13M14,16.5A0.5,0.5 0 0,0 13.5,17A0.5,0.5 0 0,0 14,17.5A0.5,0.5 0 0,0 14.5,17A0.5,0.5 0 0,0 14,16.5M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M17,9.5A0.5,0.5 0 0,0 16.5,10A0.5,0.5 0 0,0 17,10.5A0.5,0.5 0 0,0 17.5,10A0.5,0.5 0 0,0 17,9.5M17,13.5A0.5,0.5 0 0,0 16.5,14A0.5,0.5 0 0,0 17,14.5A0.5,0.5 0 0,0 17.5,14A0.5,0.5 0 0,0 17,13.5M14,7.5A0.5,0.5 0 0,0 14.5,7A0.5,0.5 0 0,0 14,6.5A0.5,0.5 0 0,0 13.5,7A0.5,0.5 0 0,0 14,7.5M14,9A1,1 0 0,0 13,10A1,1 0 0,0 14,11A1,1 0 0,0 15,10A1,1 0 0,0 14,9M10,7.5A0.5,0.5 0 0,0 10.5,7A0.5,0.5 0 0,0 10,6.5A0.5,0.5 0 0,0 9.5,7A0.5,0.5 0 0,0 10,7.5M7,13.5A0.5,0.5 0 0,0 6.5,14A0.5,0.5 0 0,0 7,14.5A0.5,0.5 0 0,0 7.5,14A0.5,0.5 0 0,0 7,13.5M10,16.5A0.5,0.5 0 0,0 9.5,17A0.5,0.5 0 0,0 10,17.5A0.5,0.5 0 0,0 10.5,17A0.5,0.5 0 0,0 10,16.5M7,9.5A0.5,0.5 0 0,0 6.5,10A0.5,0.5 0 0,0 7,10.5A0.5,0.5 0 0,0 7.5,10A0.5,0.5 0 0,0 7,9.5M10,13A1,1 0 0,0 9,14A1,1 0 0,0 10,15A1,1 0 0,0 11,14A1,1 0 0,0 10,13M10,9A1,1 0 0,0 9,10A1,1 0 0,0 10,11A1,1 0 0,0 11,10A1,1 0 0,0 10,9Z" /></g><g id="bomb"><path d="M11.25,6A3.25,3.25 0 0,1 14.5,2.75A3.25,3.25 0 0,1 17.75,6C17.75,6.42 18.08,6.75 18.5,6.75C18.92,6.75 19.25,6.42 19.25,6V5.25H20.75V6A2.25,2.25 0 0,1 18.5,8.25A2.25,2.25 0 0,1 16.25,6A1.75,1.75 0 0,0 14.5,4.25A1.75,1.75 0 0,0 12.75,6H14V7.29C16.89,8.15 19,10.83 19,14A7,7 0 0,1 12,21A7,7 0 0,1 5,14C5,10.83 7.11,8.15 10,7.29V6H11.25M22,6H24V7H22V6M19,4V2H20V4H19M20.91,4.38L22.33,2.96L23.04,3.67L21.62,5.09L20.91,4.38Z" /></g><g id="bomb-off"><path d="M14.5,2.75C12.7,2.75 11.25,4.2 11.25,6H10V7.29C9.31,7.5 8.67,7.81 8.08,8.2L17.79,17.91C18.58,16.76 19,15.39 19,14C19,10.83 16.89,8.15 14,7.29V6H12.75A1.75,1.75 0 0,1 14.5,4.25A1.75,1.75 0 0,1 16.25,6A2.25,2.25 0 0,0 18.5,8.25C19.74,8.25 20.74,7.24 20.74,6V5.25H19.25V6C19.25,6.42 18.91,6.75 18.5,6.75C18.08,6.75 17.75,6.42 17.75,6C17.75,4.2 16.29,2.75 14.5,2.75M3.41,6.36L2,7.77L5.55,11.32C5.2,12.14 5,13.04 5,14C5,17.86 8.13,21 12,21C12.92,21 13.83,20.81 14.68,20.45L18.23,24L19.64,22.59L3.41,6.36Z" /></g><g id="bone"><path d="M8,14A3,3 0 0,1 5,17A3,3 0 0,1 2,14C2,13.23 2.29,12.53 2.76,12C2.29,11.47 2,10.77 2,10A3,3 0 0,1 5,7A3,3 0 0,1 8,10C9.33,10.08 10.67,10.17 12,10.17C13.33,10.17 14.67,10.08 16,10A3,3 0 0,1 19,7A3,3 0 0,1 22,10C22,10.77 21.71,11.47 21.24,12C21.71,12.53 22,13.23 22,14A3,3 0 0,1 19,17A3,3 0 0,1 16,14C14.67,13.92 13.33,13.83 12,13.83C10.67,13.83 9.33,13.92 8,14Z" /></g><g id="book"><path d="M18,22A2,2 0 0,0 20,20V4C20,2.89 19.1,2 18,2H12V9L9.5,7.5L7,9V2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18Z" /></g><g id="book-minus"><path d="M18,22H6A2,2 0 0,1 4,20V4C4,2.89 4.9,2 6,2H7V9L9.5,7.5L12,9V2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22M18,18V16H12V18H18Z" /></g><g id="book-multiple"><path d="M19,18H9A2,2 0 0,1 7,16V4A2,2 0 0,1 9,2H10V7L12,5.5L14,7V2H19A2,2 0 0,1 21,4V16A2,2 0 0,1 19,18M17,20V22H5A2,2 0 0,1 3,20V6H5V20H17Z" /></g><g id="book-multiple-variant"><path d="M19,18H9A2,2 0 0,1 7,16V4A2,2 0 0,1 9,2H19A2,2 0 0,1 21,4V16A2,2 0 0,1 19,18M10,9L12,7.5L14,9V4H10V9M17,20V22H5A2,2 0 0,1 3,20V6H5V20H17Z" /></g><g id="book-open"><path d="M13,12H20V13.5H13M13,9.5H20V11H13M13,14.5H20V16H13M21,4H3A2,2 0 0,0 1,6V19A2,2 0 0,0 3,21H21A2,2 0 0,0 23,19V6A2,2 0 0,0 21,4M21,19H12V6H21" /></g><g id="book-open-page-variant"><path d="M19,2L14,6.5V17.5L19,13V2M6.5,5C4.55,5 2.45,5.4 1,6.5V21.16C1,21.41 1.25,21.66 1.5,21.66C1.6,21.66 1.65,21.59 1.75,21.59C3.1,20.94 5.05,20.5 6.5,20.5C8.45,20.5 10.55,20.9 12,22C13.35,21.15 15.8,20.5 17.5,20.5C19.15,20.5 20.85,20.81 22.25,21.56C22.35,21.61 22.4,21.59 22.5,21.59C22.75,21.59 23,21.34 23,21.09V6.5C22.4,6.05 21.75,5.75 21,5.5V7.5L21,13V19C19.9,18.65 18.7,18.5 17.5,18.5C15.8,18.5 13.35,19.15 12,20V13L12,8.5V6.5C10.55,5.4 8.45,5 6.5,5V5Z" /></g><g id="book-open-variant"><path d="M21,5C19.89,4.65 18.67,4.5 17.5,4.5C15.55,4.5 13.45,4.9 12,6C10.55,4.9 8.45,4.5 6.5,4.5C4.55,4.5 2.45,4.9 1,6V20.65C1,20.9 1.25,21.15 1.5,21.15C1.6,21.15 1.65,21.1 1.75,21.1C3.1,20.45 5.05,20 6.5,20C8.45,20 10.55,20.4 12,21.5C13.35,20.65 15.8,20 17.5,20C19.15,20 20.85,20.3 22.25,21.05C22.35,21.1 22.4,21.1 22.5,21.1C22.75,21.1 23,20.85 23,20.6V6C22.4,5.55 21.75,5.25 21,5M21,18.5C19.9,18.15 18.7,18 17.5,18C15.8,18 13.35,18.65 12,19.5V8C13.35,7.15 15.8,6.5 17.5,6.5C18.7,6.5 19.9,6.65 21,7V18.5Z" /></g><g id="book-plus"><path d="M18,22H6A2,2 0 0,1 4,20V4C4,2.89 4.9,2 6,2H7V9L9.5,7.5L12,9V2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22M14,20H16V18H18V16H16V14H14V16H12V18H14V20Z" /></g><g id="book-variant"><path d="M6,4H11V12L8.5,10.5L6,12M18,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V4A2,2 0 0,0 18,2Z" /></g><g id="bookmark"><path d="M17,3H7A2,2 0 0,0 5,5V21L12,18L19,21V5C19,3.89 18.1,3 17,3Z" /></g><g id="bookmark-check"><path d="M17,3A2,2 0 0,1 19,5V21L12,18L5,21V5C5,3.89 5.9,3 7,3H17M11,14L17.25,7.76L15.84,6.34L11,11.18L8.41,8.59L7,10L11,14Z" /></g><g id="bookmark-music"><path d="M17,3A2,2 0 0,1 19,5V21L12,18L5,21V5C5,3.89 5.9,3 7,3H17M11,11A2,2 0 0,0 9,13A2,2 0 0,0 11,15A2,2 0 0,0 13,13V8H16V6H12V11.27C11.71,11.1 11.36,11 11,11Z" /></g><g id="bookmark-outline"><path d="M17,18L12,15.82L7,18V5H17M17,3H7A2,2 0 0,0 5,5V21L12,18L19,21V5C19,3.89 18.1,3 17,3Z" /></g><g id="bookmark-plus"><path d="M17,3A2,2 0 0,1 19,5V21L12,18L5,21V5C5,3.89 5.9,3 7,3H17M11,7V9H9V11H11V13H13V11H15V9H13V7H11Z" /></g><g id="bookmark-plus-outline"><path d="M17,18V5H7V18L12,15.82L17,18M17,3A2,2 0 0,1 19,5V21L12,18L5,21V5C5,3.89 5.9,3 7,3H17M11,7H13V9H15V11H13V13H11V11H9V9H11V7Z" /></g><g id="bookmark-remove"><path d="M17,3A2,2 0 0,1 19,5V21L12,18L5,21V5C5,3.89 5.9,3 7,3H17M8.17,8.58L10.59,11L8.17,13.41L9.59,14.83L12,12.41L14.41,14.83L15.83,13.41L13.41,11L15.83,8.58L14.41,7.17L12,9.58L9.59,7.17L8.17,8.58Z" /></g><g id="boombox"><path d="M7,5L5,7V8H3A1,1 0 0,0 2,9V17A1,1 0 0,0 3,18H21A1,1 0 0,0 22,17V9A1,1 0 0,0 21,8H19V7L17,5H7M7,7H17V8H7V7M11,9H13A0.5,0.5 0 0,1 13.5,9.5A0.5,0.5 0 0,1 13,10H11A0.5,0.5 0 0,1 10.5,9.5A0.5,0.5 0 0,1 11,9M7.5,10.5A3,3 0 0,1 10.5,13.5A3,3 0 0,1 7.5,16.5A3,3 0 0,1 4.5,13.5A3,3 0 0,1 7.5,10.5M16.5,10.5A3,3 0 0,1 19.5,13.5A3,3 0 0,1 16.5,16.5A3,3 0 0,1 13.5,13.5A3,3 0 0,1 16.5,10.5M7.5,12A1.5,1.5 0 0,0 6,13.5A1.5,1.5 0 0,0 7.5,15A1.5,1.5 0 0,0 9,13.5A1.5,1.5 0 0,0 7.5,12M16.5,12A1.5,1.5 0 0,0 15,13.5A1.5,1.5 0 0,0 16.5,15A1.5,1.5 0 0,0 18,13.5A1.5,1.5 0 0,0 16.5,12Z" /></g><g id="bootstrap"><path d="M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M7.5,6V18H12.5C14.75,18 16.5,16.75 16.5,14.5C16.5,12.5 14.77,11.5 13.25,11.5A2.75,2.75 0 0,0 16,8.75C16,7.23 14.27,6 12.75,6H7.5M10,11V8H11.5A1.5,1.5 0 0,1 13,9.5A1.5,1.5 0 0,1 11.5,11H10M10,13H12A1.5,1.5 0 0,1 13.5,14.5A1.5,1.5 0 0,1 12,16H10V13Z" /></g><g id="border-all"><path d="M19,11H13V5H19M19,19H13V13H19M11,11H5V5H11M11,19H5V13H11M3,21H21V3H3V21Z" /></g><g id="border-bottom"><path d="M5,15H3V17H5M3,21H21V19H3M5,11H3V13H5M19,9H21V7H19M19,5H21V3H19M5,7H3V9H5M19,17H21V15H19M19,13H21V11H19M17,3H15V5H17M13,3H11V5H13M17,11H15V13H17M13,7H11V9H13M5,3H3V5H5M13,11H11V13H13M9,3H7V5H9M13,15H11V17H13M9,11H7V13H9V11Z" /></g><g id="border-color"><path d="M20.71,4.04C21.1,3.65 21.1,3 20.71,2.63L18.37,0.29C18,-0.1 17.35,-0.1 16.96,0.29L15,2.25L18.75,6M17.75,7L14,3.25L4,13.25V17H7.75L17.75,7Z" /></g><g id="border-horizontal"><path d="M19,21H21V19H19M15,21H17V19H15M11,17H13V15H11M19,9H21V7H19M19,5H21V3H19M3,13H21V11H3M11,21H13V19H11M19,17H21V15H19M13,3H11V5H13M13,7H11V9H13M17,3H15V5H17M9,3H7V5H9M5,3H3V5H5M7,21H9V19H7M3,17H5V15H3M5,7H3V9H5M3,21H5V19H3V21Z" /></g><g id="border-inside"><path d="M19,17H21V15H19M19,21H21V19H19M13,3H11V11H3V13H11V21H13V13H21V11H13M15,21H17V19H15M19,5H21V3H19M19,9H21V7H19M17,3H15V5H17M5,3H3V5H5M9,3H7V5H9M3,17H5V15H3M5,7H3V9H5M7,21H9V19H7M3,21H5V19H3V21Z" /></g><g id="border-left"><path d="M15,5H17V3H15M15,13H17V11H15M19,21H21V19H19M19,13H21V11H19M19,5H21V3H19M19,17H21V15H19M15,21H17V19H15M19,9H21V7H19M3,21H5V3H3M7,13H9V11H7M7,5H9V3H7M7,21H9V19H7M11,13H13V11H11M11,9H13V7H11M11,5H13V3H11M11,17H13V15H11M11,21H13V19H11V21Z" /></g><g id="border-none"><path d="M15,5H17V3H15M15,13H17V11H15M15,21H17V19H15M11,5H13V3H11M19,5H21V3H19M11,9H13V7H11M19,9H21V7H19M19,21H21V19H19M19,13H21V11H19M19,17H21V15H19M11,13H13V11H11M3,5H5V3H3M3,9H5V7H3M3,13H5V11H3M3,17H5V15H3M3,21H5V19H3M11,21H13V19H11M11,17H13V15H11M7,21H9V19H7M7,13H9V11H7M7,5H9V3H7V5Z" /></g><g id="border-outside"><path d="M9,11H7V13H9M13,15H11V17H13M19,19H5V5H19M3,21H21V3H3M17,11H15V13H17M13,11H11V13H13M13,7H11V9H13V7Z" /></g><g id="border-right"><path d="M11,9H13V7H11M11,5H13V3H11M11,13H13V11H11M15,5H17V3H15M15,21H17V19H15M19,21H21V3H19M15,13H17V11H15M11,17H13V15H11M3,9H5V7H3M3,17H5V15H3M3,13H5V11H3M11,21H13V19H11M3,21H5V19H3M7,13H9V11H7M7,5H9V3H7M3,5H5V3H3M7,21H9V19H7V21Z" /></g><g id="border-style"><path d="M15,21H17V19H15M19,21H21V19H19M7,21H9V19H7M11,21H13V19H11M19,17H21V15H19M19,13H21V11H19M3,3V21H5V5H21V3M19,9H21V7H19" /></g><g id="border-top"><path d="M15,13H17V11H15M19,21H21V19H19M11,9H13V7H11M15,21H17V19H15M19,17H21V15H19M3,5H21V3H3M19,13H21V11H19M19,9H21V7H19M11,17H13V15H11M3,9H5V7H3M3,13H5V11H3M3,21H5V19H3M3,17H5V15H3M11,21H13V19H11M11,13H13V11H11M7,13H9V11H7M7,21H9V19H7V21Z" /></g><g id="border-vertical"><path d="M15,13H17V11H15M15,21H17V19H15M15,5H17V3H15M19,9H21V7H19M19,5H21V3H19M19,13H21V11H19M19,21H21V19H19M11,21H13V3H11M19,17H21V15H19M7,5H9V3H7M3,17H5V15H3M3,21H5V19H3M3,13H5V11H3M7,13H9V11H7M7,21H9V19H7M3,5H5V3H3M3,9H5V7H3V9Z" /></g><g id="bow-tie"><path d="M15,14L21,17V7L15,10V14M9,14L3,17V7L9,10V14M10,10H14V14H10V10Z" /></g><g id="bowl"><path d="M22,15A7,7 0 0,1 15,22H9A7,7 0 0,1 2,15V12H15.58L20.3,4.44L22,5.5L17.94,12H22V15Z" /></g><g id="bowling"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12.5,11A1.5,1.5 0 0,0 11,12.5A1.5,1.5 0 0,0 12.5,14A1.5,1.5 0 0,0 14,12.5A1.5,1.5 0 0,0 12.5,11M12,5A2,2 0 0,0 10,7A2,2 0 0,0 12,9A2,2 0 0,0 14,7A2,2 0 0,0 12,5M5.93,8.5C5.38,9.45 5.71,10.67 6.66,11.22C7.62,11.78 8.84,11.45 9.4,10.5C9.95,9.53 9.62,8.31 8.66,7.76C7.71,7.21 6.5,7.53 5.93,8.5Z" /></g><g id="box"><path d="M15.39,14.04V14.04C15.39,12.62 14.24,11.47 12.82,11.47C11.41,11.47 10.26,12.62 10.26,14.04V14.04C10.26,15.45 11.41,16.6 12.82,16.6C14.24,16.6 15.39,15.45 15.39,14.04M17.1,14.04C17.1,16.4 15.18,18.31 12.82,18.31C11.19,18.31 9.77,17.39 9.05,16.04C8.33,17.39 6.91,18.31 5.28,18.31C2.94,18.31 1.04,16.43 1,14.11V14.11H1V7H1V7C1,6.56 1.39,6.18 1.86,6.18C2.33,6.18 2.7,6.56 2.71,7V7H2.71V10.62C3.43,10.08 4.32,9.76 5.28,9.76C6.91,9.76 8.33,10.68 9.05,12.03C9.77,10.68 11.19,9.76 12.82,9.76C15.18,9.76 17.1,11.68 17.1,14.04V14.04M7.84,14.04V14.04C7.84,12.62 6.69,11.47 5.28,11.47C3.86,11.47 2.71,12.62 2.71,14.04V14.04C2.71,15.45 3.86,16.6 5.28,16.6C6.69,16.6 7.84,15.45 7.84,14.04M22.84,16.96V16.96C22.95,17.12 23,17.3 23,17.47C23,17.73 22.88,18 22.66,18.15C22.5,18.26 22.33,18.32 22.15,18.32C21.9,18.32 21.65,18.21 21.5,18L19.59,15.47L17.7,18V18C17.53,18.21 17.28,18.32 17.03,18.32C16.85,18.32 16.67,18.26 16.5,18.15C16.29,18 16.17,17.72 16.17,17.46C16.17,17.29 16.23,17.11 16.33,16.96V16.96H16.33V16.96L18.5,14.04L16.33,11.11V11.11H16.33V11.11C16.22,10.96 16.17,10.79 16.17,10.61C16.17,10.35 16.29,10.1 16.5,9.93C16.89,9.65 17.41,9.72 17.7,10.09V10.09L19.59,12.61L21.5,10.09C21.76,9.72 22.29,9.65 22.66,9.93C22.89,10.1 23,10.36 23,10.63C23,10.8 22.95,10.97 22.84,11.11V11.11H22.84V11.11L20.66,14.04L22.84,16.96V16.96H22.84Z" /></g><g id="box-cutter"><path d="M7.22,11.91C6.89,12.24 6.71,12.65 6.66,13.08L12.17,15.44L20.66,6.96C21.44,6.17 21.44,4.91 20.66,4.13L19.24,2.71C18.46,1.93 17.2,1.93 16.41,2.71L7.22,11.91M5,16V21.75L10.81,16.53L5.81,14.53L5,16M17.12,4.83C17.5,4.44 18.15,4.44 18.54,4.83C18.93,5.23 18.93,5.86 18.54,6.25C18.15,6.64 17.5,6.64 17.12,6.25C16.73,5.86 16.73,5.23 17.12,4.83Z" /></g><g id="box-shadow"><path d="M3,3H18V18H3V3M19,19H21V21H19V19M19,16H21V18H19V16M19,13H21V15H19V13M19,10H21V12H19V10M19,7H21V9H19V7M16,19H18V21H16V19M13,19H15V21H13V19M10,19H12V21H10V19M7,19H9V21H7V19Z" /></g><g id="bridge"><path d="M7,14V10.91C6.28,10.58 5.61,10.18 5,9.71V14H7M5,18H3V16H1V14H3V7H5V8.43C6.8,10 9.27,11 12,11C14.73,11 17.2,10 19,8.43V7H21V14H23V16H21V18H19V16H5V18M17,10.91V14H19V9.71C18.39,10.18 17.72,10.58 17,10.91M16,14V11.32C15.36,11.55 14.69,11.72 14,11.84V14H16M13,14V11.96L12,12L11,11.96V14H13M10,14V11.84C9.31,11.72 8.64,11.55 8,11.32V14H10Z" /></g><g id="briefcase"><path d="M14,6H10V4H14M20,6H16V4L14,2H10L8,4V6H4C2.89,6 2,6.89 2,8V19A2,2 0 0,0 4,21H20A2,2 0 0,0 22,19V8C22,6.89 21.1,6 20,6Z" /></g><g id="briefcase-check"><path d="M10.5,17.5L7,14L8.41,12.59L10.5,14.67L15.68,9.5L17.09,10.91M10,4H14V6H10M20,6H16V4L14,2H10L8,4V6H4C2.89,6 2,6.89 2,8V19C2,20.11 2.89,21 4,21H20C21.11,21 22,20.11 22,19V8C22,6.89 21.11,6 20,6Z" /></g><g id="briefcase-download"><path d="M12,19L7,14H10V10H14V14H17M10,4H14V6H10M20,6H16V4L14,2H10L8,4V6H4C2.89,6 2,6.89 2,8V19A2,2 0 0,0 4,21H20A2,2 0 0,0 22,19V8C22,6.89 21.1,6 20,6Z" /></g><g id="briefcase-upload"><path d="M20,6A2,2 0 0,1 22,8V19A2,2 0 0,1 20,21H4C2.89,21 2,20.1 2,19V8C2,6.89 2.89,6 4,6H8V4L10,2H14L16,4V6H20M10,4V6H14V4H10M12,9L7,14H10V18H14V14H17L12,9Z" /></g><g id="brightness-1"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z" /></g><g id="brightness-2"><path d="M10,2C8.18,2 6.47,2.5 5,3.35C8,5.08 10,8.3 10,12C10,15.7 8,18.92 5,20.65C6.47,21.5 8.18,22 10,22A10,10 0 0,0 20,12A10,10 0 0,0 10,2Z" /></g><g id="brightness-3"><path d="M9,2C7.95,2 6.95,2.16 6,2.46C10.06,3.73 13,7.5 13,12C13,16.5 10.06,20.27 6,21.54C6.95,21.84 7.95,22 9,22A10,10 0 0,0 19,12A10,10 0 0,0 9,2Z" /></g><g id="brightness-4"><path d="M12,18C11.11,18 10.26,17.8 9.5,17.45C11.56,16.5 13,14.42 13,12C13,9.58 11.56,7.5 9.5,6.55C10.26,6.2 11.11,6 12,6A6,6 0 0,1 18,12A6,6 0 0,1 12,18M20,8.69V4H15.31L12,0.69L8.69,4H4V8.69L0.69,12L4,15.31V20H8.69L12,23.31L15.31,20H20V15.31L23.31,12L20,8.69Z" /></g><g id="brightness-5"><path d="M12,18A6,6 0 0,1 6,12A6,6 0 0,1 12,6A6,6 0 0,1 18,12A6,6 0 0,1 12,18M20,15.31L23.31,12L20,8.69V4H15.31L12,0.69L8.69,4H4V8.69L0.69,12L4,15.31V20H8.69L12,23.31L15.31,20H20V15.31Z" /></g><g id="brightness-6"><path d="M12,18V6A6,6 0 0,1 18,12A6,6 0 0,1 12,18M20,15.31L23.31,12L20,8.69V4H15.31L12,0.69L8.69,4H4V8.69L0.69,12L4,15.31V20H8.69L12,23.31L15.31,20H20V15.31Z" /></g><g id="brightness-7"><path d="M12,8A4,4 0 0,0 8,12A4,4 0 0,0 12,16A4,4 0 0,0 16,12A4,4 0 0,0 12,8M12,18A6,6 0 0,1 6,12A6,6 0 0,1 12,6A6,6 0 0,1 18,12A6,6 0 0,1 12,18M20,8.69V4H15.31L12,0.69L8.69,4H4V8.69L0.69,12L4,15.31V20H8.69L12,23.31L15.31,20H20V15.31L23.31,12L20,8.69Z" /></g><g id="brightness-auto"><path d="M14.3,16L13.6,14H10.4L9.7,16H7.8L11,7H13L16.2,16H14.3M20,8.69V4H15.31L12,0.69L8.69,4H4V8.69L0.69,12L4,15.31V20H8.69L12,23.31L15.31,20H20V15.31L23.31,12L20,8.69M10.85,12.65H13.15L12,9L10.85,12.65Z" /></g><g id="broom"><path d="M19.36,2.72L20.78,4.14L15.06,9.85C16.13,11.39 16.28,13.24 15.38,14.44L9.06,8.12C10.26,7.22 12.11,7.37 13.65,8.44L19.36,2.72M5.93,17.57C3.92,15.56 2.69,13.16 2.35,10.92L7.23,8.83L14.67,16.27L12.58,21.15C10.34,20.81 7.94,19.58 5.93,17.57Z" /></g><g id="brush"><path d="M20.71,4.63L19.37,3.29C19,2.9 18.35,2.9 17.96,3.29L9,12.25L11.75,15L20.71,6.04C21.1,5.65 21.1,5 20.71,4.63M7,14A3,3 0 0,0 4,17C4,18.31 2.84,19 2,19C2.92,20.22 4.5,21 6,21A4,4 0 0,0 10,17A3,3 0 0,0 7,14Z" /></g><g id="buffer"><path d="M12.6,2.86C15.27,4.1 18,5.39 20.66,6.63C20.81,6.7 21,6.75 21,6.95C21,7.15 20.81,7.19 20.66,7.26C18,8.5 15.3,9.77 12.62,11C12.21,11.21 11.79,11.21 11.38,11C8.69,9.76 6,8.5 3.32,7.25C3.18,7.19 3,7.14 3,6.94C3,6.76 3.18,6.71 3.31,6.65C6,5.39 8.74,4.1 11.44,2.85C11.73,2.72 12.3,2.73 12.6,2.86M12,21.15C11.8,21.15 11.66,21.07 11.38,20.97C8.69,19.73 6,18.47 3.33,17.22C3.19,17.15 3,17.11 3,16.9C3,16.7 3.19,16.66 3.34,16.59C3.78,16.38 4.23,16.17 4.67,15.96C5.12,15.76 5.56,15.76 6,15.97C7.79,16.8 9.57,17.63 11.35,18.46C11.79,18.67 12.23,18.66 12.67,18.46C14.45,17.62 16.23,16.79 18,15.96C18.44,15.76 18.87,15.75 19.29,15.95C19.77,16.16 20.24,16.39 20.71,16.61C20.78,16.64 20.85,16.68 20.91,16.73C21.04,16.83 21.04,17 20.91,17.08C20.83,17.14 20.74,17.19 20.65,17.23C18,18.5 15.33,19.72 12.66,20.95C12.46,21.05 12.19,21.15 12,21.15M12,16.17C11.9,16.17 11.55,16.07 11.36,16C8.68,14.74 6,13.5 3.34,12.24C3.2,12.18 3,12.13 3,11.93C3,11.72 3.2,11.68 3.35,11.61C3.8,11.39 4.25,11.18 4.7,10.97C5.13,10.78 5.56,10.78 6,11C7.78,11.82 9.58,12.66 11.38,13.5C11.79,13.69 12.21,13.69 12.63,13.5C14.43,12.65 16.23,11.81 18.04,10.97C18.45,10.78 18.87,10.78 19.29,10.97C19.76,11.19 20.24,11.41 20.71,11.63C20.77,11.66 20.84,11.69 20.9,11.74C21.04,11.85 21.04,12 20.89,12.12C20.84,12.16 20.77,12.19 20.71,12.22C18,13.5 15.31,14.75 12.61,16C12.42,16.09 12.08,16.17 12,16.17Z" /></g><g id="bug"><path d="M14,12H10V10H14M14,16H10V14H14M20,8H17.19C16.74,7.22 16.12,6.55 15.37,6.04L17,4.41L15.59,3L13.42,5.17C12.96,5.06 12.5,5 12,5C11.5,5 11.04,5.06 10.59,5.17L8.41,3L7,4.41L8.62,6.04C7.88,6.55 7.26,7.22 6.81,8H4V10H6.09C6.04,10.33 6,10.66 6,11V12H4V14H6V15C6,15.34 6.04,15.67 6.09,16H4V18H6.81C7.85,19.79 9.78,21 12,21C14.22,21 16.15,19.79 17.19,18H20V16H17.91C17.96,15.67 18,15.34 18,15V14H20V12H18V11C18,10.66 17.96,10.33 17.91,10H20V8Z" /></g><g id="bulletin-board"><path d="M12.04,2.5L9.53,5H14.53L12.04,2.5M4,7V20H20V7H4M12,0L17,5V5H20A2,2 0 0,1 22,7V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V7A2,2 0 0,1 4,5H7V5L12,0M7,18V14H12V18H7M14,17V10H18V17H14M6,12V9H11V12H6Z" /></g><g id="bullhorn"><path d="M16,12V16A1,1 0 0,1 15,17C14.83,17 14.67,17 14.06,16.5C13.44,16 12.39,15 11.31,14.5C10.31,14.04 9.28,14 8.26,14L9.47,17.32L9.5,17.5A0.5,0.5 0 0,1 9,18H7C6.78,18 6.59,17.86 6.53,17.66L5.19,14H5A1,1 0 0,1 4,13A2,2 0 0,1 2,11A2,2 0 0,1 4,9A1,1 0 0,1 5,8H8C9.11,8 10.22,8 11.31,7.5C12.39,7 13.44,6 14.06,5.5C14.67,5 14.83,5 15,5A1,1 0 0,1 16,6V10A1,1 0 0,1 17,11A1,1 0 0,1 16,12M21,11C21,12.38 20.44,13.63 19.54,14.54L18.12,13.12C18.66,12.58 19,11.83 19,11C19,10.17 18.66,9.42 18.12,8.88L19.54,7.46C20.44,8.37 21,9.62 21,11Z" /></g><g id="bullseye"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4M12,6A6,6 0 0,0 6,12A6,6 0 0,0 12,18A6,6 0 0,0 18,12A6,6 0 0,0 12,6M12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z" /></g><g id="burst-mode"><path d="M1,5H3V19H1V5M5,5H7V19H5V5M22,5H10A1,1 0 0,0 9,6V18A1,1 0 0,0 10,19H22A1,1 0 0,0 23,18V6A1,1 0 0,0 22,5M11,17L13.5,13.85L15.29,16L17.79,12.78L21,17H11Z" /></g><g id="bus"><path d="M18,11H6V6H18M16.5,17A1.5,1.5 0 0,1 15,15.5A1.5,1.5 0 0,1 16.5,14A1.5,1.5 0 0,1 18,15.5A1.5,1.5 0 0,1 16.5,17M7.5,17A1.5,1.5 0 0,1 6,15.5A1.5,1.5 0 0,1 7.5,14A1.5,1.5 0 0,1 9,15.5A1.5,1.5 0 0,1 7.5,17M4,16C4,16.88 4.39,17.67 5,18.22V20A1,1 0 0,0 6,21H7A1,1 0 0,0 8,20V19H16V20A1,1 0 0,0 17,21H18A1,1 0 0,0 19,20V18.22C19.61,17.67 20,16.88 20,16V6C20,2.5 16.42,2 12,2C7.58,2 4,2.5 4,6V16Z" /></g><g id="cached"><path d="M19,8L15,12H18A6,6 0 0,1 12,18C11,18 10.03,17.75 9.2,17.3L7.74,18.76C8.97,19.54 10.43,20 12,20A8,8 0 0,0 20,12H23M6,12A6,6 0 0,1 12,6C13,6 13.97,6.25 14.8,6.7L16.26,5.24C15.03,4.46 13.57,4 12,4A8,8 0 0,0 4,12H1L5,16L9,12" /></g><g id="cake"><path d="M11.5,0.5C12,0.75 13,2.4 13,3.5C13,4.6 12.33,5 11.5,5C10.67,5 10,4.85 10,3.75C10,2.65 11,2 11.5,0.5M18.5,9C21,9 23,11 23,13.5C23,15.06 22.21,16.43 21,17.24V23H12L3,23V17.24C1.79,16.43 1,15.06 1,13.5C1,11 3,9 5.5,9H10V6H13V9H18.5M12,16A2.5,2.5 0 0,0 14.5,13.5H16A2.5,2.5 0 0,0 18.5,16A2.5,2.5 0 0,0 21,13.5A2.5,2.5 0 0,0 18.5,11H5.5A2.5,2.5 0 0,0 3,13.5A2.5,2.5 0 0,0 5.5,16A2.5,2.5 0 0,0 8,13.5H9.5A2.5,2.5 0 0,0 12,16Z" /></g><g id="cake-layered"><path d="M21,21V17C21,15.89 20.1,15 19,15H18V12C18,10.89 17.1,10 16,10H13V8H11V10H8C6.89,10 6,10.89 6,12V15H5C3.89,15 3,15.89 3,17V21H1V23H23V21M12,7A2,2 0 0,0 14,5C14,4.62 13.9,4.27 13.71,3.97L12,1L10.28,3.97C10.1,4.27 10,4.62 10,5A2,2 0 0,0 12,7Z" /></g><g id="cake-variant"><path d="M12,6C13.11,6 14,5.1 14,4C14,3.62 13.9,3.27 13.71,2.97L12,0L10.29,2.97C10.1,3.27 10,3.62 10,4A2,2 0 0,0 12,6M16.6,16L15.53,14.92L14.45,16C13.15,17.29 10.87,17.3 9.56,16L8.5,14.92L7.4,16C6.75,16.64 5.88,17 4.96,17C4.23,17 3.56,16.77 3,16.39V21A1,1 0 0,0 4,22H20A1,1 0 0,0 21,21V16.39C20.44,16.77 19.77,17 19.04,17C18.12,17 17.25,16.64 16.6,16M18,9H13V7H11V9H6A3,3 0 0,0 3,12V13.54C3,14.62 3.88,15.5 4.96,15.5C5.5,15.5 6,15.3 6.34,14.93L8.5,12.8L10.61,14.93C11.35,15.67 12.64,15.67 13.38,14.93L15.5,12.8L17.65,14.93C18,15.3 18.5,15.5 19.03,15.5C20.11,15.5 21,14.62 21,13.54V12A3,3 0 0,0 18,9Z" /></g><g id="calculator"><path d="M7,2H17A2,2 0 0,1 19,4V20A2,2 0 0,1 17,22H7A2,2 0 0,1 5,20V4A2,2 0 0,1 7,2M7,4V8H17V4H7M7,10V12H9V10H7M11,10V12H13V10H11M15,10V12H17V10H15M7,14V16H9V14H7M11,14V16H13V14H11M15,14V16H17V14H15M7,18V20H9V18H7M11,18V20H13V18H11M15,18V20H17V18H15Z" /></g><g id="calendar"><path d="M19,19H5V8H19M16,1V3H8V1H6V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H18V1M17,12H12V17H17V12Z" /></g><g id="calendar-blank"><path d="M19,19H5V8H19M16,1V3H8V1H6V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H18V1" /></g><g id="calendar-check"><path d="M19,19H5V8H19M19,3H18V1H16V3H8V1H6V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M16.53,11.06L15.47,10L10.59,14.88L8.47,12.76L7.41,13.82L10.59,17L16.53,11.06Z" /></g><g id="calendar-clock"><path d="M15,13H16.5V15.82L18.94,17.23L18.19,18.53L15,16.69V13M19,8H5V19H9.67C9.24,18.09 9,17.07 9,16A7,7 0 0,1 16,9C17.07,9 18.09,9.24 19,9.67V8M5,21C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H6V1H8V3H16V1H18V3H19A2,2 0 0,1 21,5V11.1C22.24,12.36 23,14.09 23,16A7,7 0 0,1 16,23C14.09,23 12.36,22.24 11.1,21H5M16,11.15A4.85,4.85 0 0,0 11.15,16C11.15,18.68 13.32,20.85 16,20.85A4.85,4.85 0 0,0 20.85,16C20.85,13.32 18.68,11.15 16,11.15Z" /></g><g id="calendar-multiple"><path d="M21,17V8H7V17H21M21,3A2,2 0 0,1 23,5V17A2,2 0 0,1 21,19H7C5.89,19 5,18.1 5,17V5A2,2 0 0,1 7,3H8V1H10V3H18V1H20V3H21M3,21H17V23H3C1.89,23 1,22.1 1,21V9H3V21M19,15H15V11H19V15Z" /></g><g id="calendar-multiple-check"><path d="M21,17V8H7V17H21M21,3A2,2 0 0,1 23,5V17A2,2 0 0,1 21,19H7C5.89,19 5,18.1 5,17V5A2,2 0 0,1 7,3H8V1H10V3H18V1H20V3H21M17.53,11.06L13.09,15.5L10.41,12.82L11.47,11.76L13.09,13.38L16.47,10L17.53,11.06M3,21H17V23H3C1.89,23 1,22.1 1,21V9H3V21Z" /></g><g id="calendar-plus"><path d="M19,19V7H5V19H19M16,1H18V3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H6V1H8V3H16V1M11,9H13V12H16V14H13V17H11V14H8V12H11V9Z" /></g><g id="calendar-question"><path d="M6,1V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H18V1H16V3H8V1H6M5,8H19V19H5V8M12.19,9C11.32,9 10.62,9.2 10.08,9.59C9.56,10 9.3,10.57 9.31,11.36L9.32,11.39H11.25C11.26,11.09 11.35,10.86 11.53,10.7C11.71,10.55 11.93,10.47 12.19,10.47C12.5,10.47 12.76,10.57 12.94,10.75C13.12,10.94 13.2,11.2 13.2,11.5C13.2,11.82 13.13,12.09 12.97,12.32C12.83,12.55 12.62,12.75 12.36,12.91C11.85,13.25 11.5,13.55 11.31,13.82C11.11,14.08 11,14.5 11,15H13C13,14.69 13.04,14.44 13.13,14.26C13.22,14.08 13.39,13.9 13.64,13.74C14.09,13.5 14.46,13.21 14.75,12.81C15.04,12.41 15.19,12 15.19,11.5C15.19,10.74 14.92,10.13 14.38,9.68C13.85,9.23 13.12,9 12.19,9M11,16V18H13V16H11Z" /></g><g id="calendar-range"><path d="M9,11H7V13H9V11M13,11H11V13H13V11M17,11H15V13H17V11M19,4H18V2H16V4H8V2H6V4H5C3.89,4 3,4.9 3,6V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V6A2,2 0 0,0 19,4M19,20H5V9H19V20Z" /></g><g id="calendar-remove"><path d="M19,19H5V8H19M19,3H18V1H16V3H8V1H6V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M9.31,17L11.75,14.56L14.19,17L15.25,15.94L12.81,13.5L15.25,11.06L14.19,10L11.75,12.44L9.31,10L8.25,11.06L10.69,13.5L8.25,15.94L9.31,17Z" /></g><g id="calendar-text"><path d="M14,14H7V16H14M19,19H5V8H19M19,3H18V1H16V3H8V1H6V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M17,10H7V12H17V10Z" /></g><g id="calendar-today"><path d="M7,10H12V15H7M19,19H5V8H19M19,3H18V1H16V3H8V1H6V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="call-made"><path d="M9,5V7H15.59L4,18.59L5.41,20L17,8.41V15H19V5" /></g><g id="call-merge"><path d="M17,20.41L18.41,19L15,15.59L13.59,17M7.5,8H11V13.59L5.59,19L7,20.41L13,14.41V8H16.5L12,3.5" /></g><g id="call-missed"><path d="M19.59,7L12,14.59L6.41,9H11V7H3V15H5V10.41L12,17.41L21,8.41" /></g><g id="call-received"><path d="M20,5.41L18.59,4L7,15.59V9H5V19H15V17H8.41" /></g><g id="call-split"><path d="M14,4L16.29,6.29L13.41,9.17L14.83,10.59L17.71,7.71L20,10V4M10,4H4V10L6.29,7.71L11,12.41V20H13V11.59L7.71,6.29" /></g><g id="camcorder"><path d="M17,10.5V7A1,1 0 0,0 16,6H4A1,1 0 0,0 3,7V17A1,1 0 0,0 4,18H16A1,1 0 0,0 17,17V13.5L21,17.5V6.5L17,10.5Z" /></g><g id="camcorder-box"><path d="M18,16L14,12.8V16H6V8H14V11.2L18,8M20,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z" /></g><g id="camcorder-box-off"><path d="M6,8H6.73L14,15.27V16H6M2.27,1L1,2.27L3,4.28C2.41,4.62 2,5.26 2,6V18A2,2 0 0,0 4,20H18.73L20.73,22L22,20.73M20,4H7.82L11.82,8H14V10.18L14.57,10.75L18,8V14.18L22,18.17C22,18.11 22,18.06 22,18V6A2,2 0 0,0 20,4Z" /></g><g id="camcorder-off"><path d="M3.27,2L2,3.27L4.73,6H4A1,1 0 0,0 3,7V17A1,1 0 0,0 4,18H16C16.2,18 16.39,17.92 16.54,17.82L19.73,21L21,19.73M21,6.5L17,10.5V7A1,1 0 0,0 16,6H9.82L21,17.18V6.5Z" /></g><g id="camera"><path d="M4,4H7L9,2H15L17,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4M12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17A5,5 0 0,0 17,12A5,5 0 0,0 12,7M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9Z" /></g><g id="camera-burst"><path d="M1,5H3V19H1V5M5,5H7V19H5V5M22,5H10A1,1 0 0,0 9,6V18A1,1 0 0,0 10,19H22A1,1 0 0,0 23,18V6A1,1 0 0,0 22,5M11,17L13.5,13.85L15.29,16L17.79,12.78L21,17H11Z" /></g><g id="camera-enhance"><path d="M9,3L7.17,5H4A2,2 0 0,0 2,7V19A2,2 0 0,0 4,21H20A2,2 0 0,0 22,19V7A2,2 0 0,0 20,5H16.83L15,3M12,18A5,5 0 0,1 7,13A5,5 0 0,1 12,8A5,5 0 0,1 17,13A5,5 0 0,1 12,18M12,17L13.25,14.25L16,13L13.25,11.75L12,9L10.75,11.75L8,13L10.75,14.25" /></g><g id="camera-front"><path d="M7,2H17V12.5C17,10.83 13.67,10 12,10C10.33,10 7,10.83 7,12.5M17,0H7A2,2 0 0,0 5,2V16A2,2 0 0,0 7,18H17A2,2 0 0,0 19,16V2A2,2 0 0,0 17,0M12,8A2,2 0 0,0 14,6A2,2 0 0,0 12,4A2,2 0 0,0 10,6A2,2 0 0,0 12,8M14,20V22H19V20M10,20H5V22H10V24L13,21L10,18V20Z" /></g><g id="camera-front-variant"><path d="M6,0H18A2,2 0 0,1 20,2V22A2,2 0 0,1 18,24H6A2,2 0 0,1 4,22V2A2,2 0 0,1 6,0M12,6A3,3 0 0,1 15,9A3,3 0 0,1 12,12A3,3 0 0,1 9,9A3,3 0 0,1 12,6M11,1V3H13V1H11M6,4V16.5C6,15.12 8.69,14 12,14C15.31,14 18,15.12 18,16.5V4H6M13,18H9V20H13V22L16,19L13,16V18Z" /></g><g id="camera-iris"><path d="M13.73,15L9.83,21.76C10.53,21.91 11.25,22 12,22C14.4,22 16.6,21.15 18.32,19.75L14.66,13.4M2.46,15C3.38,17.92 5.61,20.26 8.45,21.34L12.12,15M8.54,12L4.64,5.25C3,7 2,9.39 2,12C2,12.68 2.07,13.35 2.2,14H9.69M21.8,10H14.31L14.6,10.5L19.36,18.75C21,16.97 22,14.6 22,12C22,11.31 21.93,10.64 21.8,10M21.54,9C20.62,6.07 18.39,3.74 15.55,2.66L11.88,9M9.4,10.5L14.17,2.24C13.47,2.09 12.75,2 12,2C9.6,2 7.4,2.84 5.68,4.25L9.34,10.6L9.4,10.5Z" /></g><g id="camera-off"><path d="M1.2,4.47L2.5,3.2L20,20.72L18.73,22L16.73,20H4A2,2 0 0,1 2,18V6C2,5.78 2.04,5.57 2.1,5.37L1.2,4.47M7,4L9,2H15L17,4H20A2,2 0 0,1 22,6V18C22,18.6 21.74,19.13 21.32,19.5L16.33,14.5C16.76,13.77 17,12.91 17,12A5,5 0 0,0 12,7C11.09,7 10.23,7.24 9.5,7.67L5.82,4H7M7,12A5,5 0 0,0 12,17C12.5,17 13.03,16.92 13.5,16.77L11.72,15C10.29,14.85 9.15,13.71 9,12.28L7.23,10.5C7.08,10.97 7,11.5 7,12M12,9A3,3 0 0,1 15,12C15,12.35 14.94,12.69 14.83,13L11,9.17C11.31,9.06 11.65,9 12,9Z" /></g><g id="camera-party-mode"><path d="M12,17C10.37,17 8.94,16.21 8,15H12A3,3 0 0,0 15,12C15,11.65 14.93,11.31 14.82,11H16.9C16.96,11.32 17,11.66 17,12A5,5 0 0,1 12,17M12,7C13.63,7 15.06,7.79 16,9H12A3,3 0 0,0 9,12C9,12.35 9.07,12.68 9.18,13H7.1C7.03,12.68 7,12.34 7,12A5,5 0 0,1 12,7M20,4H16.83L15,2H9L7.17,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z" /></g><g id="camera-rear"><path d="M12,6C10.89,6 10,5.1 10,4A2,2 0 0,1 12,2C13.09,2 14,2.9 14,4A2,2 0 0,1 12,6M17,0H7A2,2 0 0,0 5,2V16A2,2 0 0,0 7,18H17A2,2 0 0,0 19,16V2A2,2 0 0,0 17,0M14,20V22H19V20M10,20H5V22H10V24L13,21L10,18V20Z" /></g><g id="camera-rear-variant"><path d="M6,0H18A2,2 0 0,1 20,2V22A2,2 0 0,1 18,24H6A2,2 0 0,1 4,22V2A2,2 0 0,1 6,0M12,2A2,2 0 0,0 10,4A2,2 0 0,0 12,6A2,2 0 0,0 14,4A2,2 0 0,0 12,2M13,18H9V20H13V22L16,19L13,16V18Z" /></g><g id="camera-switch"><path d="M15,15.5V13H9V15.5L5.5,12L9,8.5V11H15V8.5L18.5,12M20,4H16.83L15,2H9L7.17,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z" /></g><g id="camera-timer"><path d="M4.94,6.35C4.55,5.96 4.55,5.32 4.94,4.93C5.33,4.54 5.96,4.54 6.35,4.93L13.07,10.31L13.42,10.59C14.2,11.37 14.2,12.64 13.42,13.42C12.64,14.2 11.37,14.2 10.59,13.42L10.31,13.07L4.94,6.35M12,20A8,8 0 0,0 20,12C20,9.79 19.1,7.79 17.66,6.34L19.07,4.93C20.88,6.74 22,9.24 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12H4A8,8 0 0,0 12,20M12,1A2,2 0 0,1 14,3A2,2 0 0,1 12,5A2,2 0 0,1 10,3A2,2 0 0,1 12,1Z" /></g><g id="candle"><path d="M12.5,2C10.84,2 9.5,5.34 9.5,7A3,3 0 0,0 12.5,10A3,3 0 0,0 15.5,7C15.5,5.34 14.16,2 12.5,2M12.5,6.5A1,1 0 0,1 13.5,7.5A1,1 0 0,1 12.5,8.5A1,1 0 0,1 11.5,7.5A1,1 0 0,1 12.5,6.5M10,11A1,1 0 0,0 9,12V20H7A1,1 0 0,1 6,19V18A1,1 0 0,0 5,17A1,1 0 0,0 4,18V19A3,3 0 0,0 7,22H19A1,1 0 0,0 20,21A1,1 0 0,0 19,20H16V12A1,1 0 0,0 15,11H10Z" /></g><g id="candycane"><path d="M10,10A2,2 0 0,1 8,12A2,2 0 0,1 6,10V8C6,7.37 6.1,6.77 6.27,6.2L10,9.93V10M12,2C12.74,2 13.44,2.13 14.09,2.38L11.97,6C11.14,6 10.44,6.5 10.15,7.25L7.24,4.34C8.34,2.92 10.06,2 12,2M17.76,6.31L14,10.07V8C14,7.62 13.9,7.27 13.72,6.97L15.83,3.38C16.74,4.13 17.42,5.15 17.76,6.31M18,13.09L14,17.09V12.9L18,8.9V13.09M18,20A2,2 0 0,1 16,22A2,2 0 0,1 14,20V19.91L18,15.91V20Z" /></g><g id="car"><path d="M5,11L6.5,6.5H17.5L19,11M17.5,16A1.5,1.5 0 0,1 16,14.5A1.5,1.5 0 0,1 17.5,13A1.5,1.5 0 0,1 19,14.5A1.5,1.5 0 0,1 17.5,16M6.5,16A1.5,1.5 0 0,1 5,14.5A1.5,1.5 0 0,1 6.5,13A1.5,1.5 0 0,1 8,14.5A1.5,1.5 0 0,1 6.5,16M18.92,6C18.72,5.42 18.16,5 17.5,5H6.5C5.84,5 5.28,5.42 5.08,6L3,12V20A1,1 0 0,0 4,21H5A1,1 0 0,0 6,20V19H18V20A1,1 0 0,0 19,21H20A1,1 0 0,0 21,20V12L18.92,6Z" /></g><g id="car-battery"><path d="M4,3V6H1V20H23V6H20V3H14V6H10V3H4M3,8H21V18H3V8M15,10V12H13V14H15V16H17V14H19V12H17V10H15M5,12V14H11V12H5Z" /></g><g id="car-connected"><path d="M5,14H19L17.5,9.5H6.5L5,14M17.5,19A1.5,1.5 0 0,0 19,17.5A1.5,1.5 0 0,0 17.5,16A1.5,1.5 0 0,0 16,17.5A1.5,1.5 0 0,0 17.5,19M6.5,19A1.5,1.5 0 0,0 8,17.5A1.5,1.5 0 0,0 6.5,16A1.5,1.5 0 0,0 5,17.5A1.5,1.5 0 0,0 6.5,19M18.92,9L21,15V23A1,1 0 0,1 20,24H19A1,1 0 0,1 18,23V22H6V23A1,1 0 0,1 5,24H4A1,1 0 0,1 3,23V15L5.08,9C5.28,8.42 5.85,8 6.5,8H17.5C18.15,8 18.72,8.42 18.92,9M12,0C14.12,0 16.15,0.86 17.65,2.35L16.23,3.77C15.11,2.65 13.58,2 12,2C10.42,2 8.89,2.65 7.77,3.77L6.36,2.35C7.85,0.86 9.88,0 12,0M12,4C13.06,4 14.07,4.44 14.82,5.18L13.4,6.6C13.03,6.23 12.53,6 12,6C11.5,6 10.97,6.23 10.6,6.6L9.18,5.18C9.93,4.44 10.94,4 12,4Z" /></g><g id="car-wash"><path d="M5,13L6.5,8.5H17.5L19,13M17.5,18A1.5,1.5 0 0,1 16,16.5A1.5,1.5 0 0,1 17.5,15A1.5,1.5 0 0,1 19,16.5A1.5,1.5 0 0,1 17.5,18M6.5,18A1.5,1.5 0 0,1 5,16.5A1.5,1.5 0 0,1 6.5,15A1.5,1.5 0 0,1 8,16.5A1.5,1.5 0 0,1 6.5,18M18.92,8C18.72,7.42 18.16,7 17.5,7H6.5C5.84,7 5.28,7.42 5.08,8L3,14V22A1,1 0 0,0 4,23H5A1,1 0 0,0 6,22V21H18V22A1,1 0 0,0 19,23H20A1,1 0 0,0 21,22V14M7,5A1.5,1.5 0 0,0 8.5,3.5C8.5,2.5 7,0.8 7,0.8C7,0.8 5.5,2.5 5.5,3.5A1.5,1.5 0 0,0 7,5M12,5A1.5,1.5 0 0,0 13.5,3.5C13.5,2.5 12,0.8 12,0.8C12,0.8 10.5,2.5 10.5,3.5A1.5,1.5 0 0,0 12,5M17,5A1.5,1.5 0 0,0 18.5,3.5C18.5,2.5 17,0.8 17,0.8C17,0.8 15.5,2.5 15.5,3.5A1.5,1.5 0 0,0 17,5Z" /></g><g id="cards"><path d="M21.47,4.35L20.13,3.79V12.82L22.56,6.96C22.97,5.94 22.5,4.77 21.47,4.35M1.97,8.05L6.93,20C7.24,20.77 7.97,21.24 8.74,21.26C9,21.26 9.27,21.21 9.53,21.1L16.9,18.05C17.65,17.74 18.11,17 18.13,16.26C18.14,16 18.09,15.71 18,15.45L13,3.5C12.71,2.73 11.97,2.26 11.19,2.25C10.93,2.25 10.67,2.31 10.42,2.4L3.06,5.45C2.04,5.87 1.55,7.04 1.97,8.05M18.12,4.25A2,2 0 0,0 16.12,2.25H14.67L18.12,10.59" /></g><g id="cards-outline"><path d="M11.19,2.25C10.93,2.25 10.67,2.31 10.42,2.4L3.06,5.45C2.04,5.87 1.55,7.04 1.97,8.05L6.93,20C7.24,20.77 7.97,21.23 8.74,21.25C9,21.25 9.27,21.22 9.53,21.1L16.9,18.05C17.65,17.74 18.11,17 18.13,16.25C18.14,16 18.09,15.71 18,15.45L13,3.5C12.71,2.73 11.97,2.26 11.19,2.25M14.67,2.25L18.12,10.6V4.25A2,2 0 0,0 16.12,2.25M20.13,3.79V12.82L22.56,6.96C22.97,5.94 22.5,4.78 21.47,4.36M11.19,4.22L16.17,16.24L8.78,19.3L3.8,7.29" /></g><g id="cards-playing-outline"><path d="M11.19,2.25C11.97,2.26 12.71,2.73 13,3.5L18,15.45C18.09,15.71 18.14,16 18.13,16.25C18.11,17 17.65,17.74 16.9,18.05L9.53,21.1C9.27,21.22 9,21.25 8.74,21.25C7.97,21.23 7.24,20.77 6.93,20L1.97,8.05C1.55,7.04 2.04,5.87 3.06,5.45L10.42,2.4C10.67,2.31 10.93,2.25 11.19,2.25M14.67,2.25H16.12A2,2 0 0,1 18.12,4.25V10.6L14.67,2.25M20.13,3.79L21.47,4.36C22.5,4.78 22.97,5.94 22.56,6.96L20.13,12.82V3.79M11.19,4.22L3.8,7.29L8.77,19.3L16.17,16.24L11.19,4.22M8.65,8.54L11.88,10.95L11.44,14.96L8.21,12.54L8.65,8.54Z" /></g><g id="cards-variant"><path d="M5,2H19A1,1 0 0,1 20,3V13A1,1 0 0,1 19,14H5A1,1 0 0,1 4,13V3A1,1 0 0,1 5,2M6,4V12H18V4H6M20,17A1,1 0 0,1 19,18H5A1,1 0 0,1 4,17V16H20V17M20,21A1,1 0 0,1 19,22H5A1,1 0 0,1 4,21V20H20V21Z" /></g><g id="carrot"><path d="M16,10L15.8,11H13.5A0.5,0.5 0 0,0 13,11.5A0.5,0.5 0 0,0 13.5,12H15.6L14.6,17H12.5A0.5,0.5 0 0,0 12,17.5A0.5,0.5 0 0,0 12.5,18H14.4L14,20A2,2 0 0,1 12,22A2,2 0 0,1 10,20L9,15H10.5A0.5,0.5 0 0,0 11,14.5A0.5,0.5 0 0,0 10.5,14H8.8L8,10C8,8.8 8.93,7.77 10.29,7.29L8.9,5.28C8.59,4.82 8.7,4.2 9.16,3.89C9.61,3.57 10.23,3.69 10.55,4.14L11,4.8V3A1,1 0 0,1 12,2A1,1 0 0,1 13,3V5.28L14.5,3.54C14.83,3.12 15.47,3.07 15.89,3.43C16.31,3.78 16.36,4.41 16,4.84L13.87,7.35C15.14,7.85 16,8.85 16,10Z" /></g><g id="cart"><path d="M17,18C15.89,18 15,18.89 15,20A2,2 0 0,0 17,22A2,2 0 0,0 19,20C19,18.89 18.1,18 17,18M1,2V4H3L6.6,11.59L5.24,14.04C5.09,14.32 5,14.65 5,15A2,2 0 0,0 7,17H19V15H7.42A0.25,0.25 0 0,1 7.17,14.75C7.17,14.7 7.18,14.66 7.2,14.63L8.1,13H15.55C16.3,13 16.96,12.58 17.3,11.97L20.88,5.5C20.95,5.34 21,5.17 21,5A1,1 0 0,0 20,4H5.21L4.27,2M7,18C5.89,18 5,18.89 5,20A2,2 0 0,0 7,22A2,2 0 0,0 9,20C9,18.89 8.1,18 7,18Z" /></g><g id="cart-off"><path d="M22.73,22.73L1.27,1.27L0,2.54L4.39,6.93L6.6,11.59L5.25,14.04C5.09,14.32 5,14.65 5,15A2,2 0 0,0 7,17H14.46L15.84,18.38C15.34,18.74 15,19.33 15,20A2,2 0 0,0 17,22C17.67,22 18.26,21.67 18.62,21.16L21.46,24L22.73,22.73M7.42,15A0.25,0.25 0 0,1 7.17,14.75L7.2,14.63L8.1,13H10.46L12.46,15H7.42M15.55,13C16.3,13 16.96,12.59 17.3,11.97L20.88,5.5C20.96,5.34 21,5.17 21,5A1,1 0 0,0 20,4H6.54L15.55,13M7,18A2,2 0 0,0 5,20A2,2 0 0,0 7,22A2,2 0 0,0 9,20A2,2 0 0,0 7,18Z" /></g><g id="cart-outline"><path d="M17,18A2,2 0 0,1 19,20A2,2 0 0,1 17,22C15.89,22 15,21.1 15,20C15,18.89 15.89,18 17,18M1,2H4.27L5.21,4H20A1,1 0 0,1 21,5C21,5.17 20.95,5.34 20.88,5.5L17.3,11.97C16.96,12.58 16.3,13 15.55,13H8.1L7.2,14.63L7.17,14.75A0.25,0.25 0 0,0 7.42,15H19V17H7C5.89,17 5,16.1 5,15C5,14.65 5.09,14.32 5.24,14.04L6.6,11.59L3,4H1V2M7,18A2,2 0 0,1 9,20A2,2 0 0,1 7,22C5.89,22 5,21.1 5,20C5,18.89 5.89,18 7,18M16,11L18.78,6H6.14L8.5,11H16Z" /></g><g id="cart-plus"><path d="M11,9H13V6H16V4H13V1H11V4H8V6H11M7,18A2,2 0 0,0 5,20A2,2 0 0,0 7,22A2,2 0 0,0 9,20A2,2 0 0,0 7,18M17,18A2,2 0 0,0 15,20A2,2 0 0,0 17,22A2,2 0 0,0 19,20A2,2 0 0,0 17,18M7.17,14.75L7.2,14.63L8.1,13H15.55C16.3,13 16.96,12.59 17.3,11.97L21.16,4.96L19.42,4H19.41L18.31,6L15.55,11H8.53L8.4,10.73L6.16,6L5.21,4L4.27,2H1V4H3L6.6,11.59L5.25,14.04C5.09,14.32 5,14.65 5,15A2,2 0 0,0 7,17H19V15H7.42C7.29,15 7.17,14.89 7.17,14.75Z" /></g><g id="case-sensitive-alt"><path d="M20,14C20,12.5 19.5,12 18,12H16V11C16,10 16,10 14,10V15.4L14,19H16L18,19C19.5,19 20,18.47 20,17V14M12,12C12,10.5 11.47,10 10,10H6C4.5,10 4,10.5 4,12V19H6V16H10V19H12V12M10,7H14V5H10V7M22,9V20C22,21.11 21.11,22 20,22H4A2,2 0 0,1 2,20V9C2,7.89 2.89,7 4,7H8V5L10,3H14L16,5V7H20A2,2 0 0,1 22,9H22M16,17H18V14H16V17M6,12H10V14H6V12Z" /></g><g id="cash"><path d="M3,6H21V18H3V6M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9M7,8A2,2 0 0,1 5,10V14A2,2 0 0,1 7,16H17A2,2 0 0,1 19,14V10A2,2 0 0,1 17,8H7Z" /></g><g id="cash-100"><path d="M2,5H22V20H2V5M20,18V7H4V18H20M17,8A2,2 0 0,0 19,10V15A2,2 0 0,0 17,17H7A2,2 0 0,0 5,15V10A2,2 0 0,0 7,8H17M17,13V12C17,10.9 16.33,10 15.5,10C14.67,10 14,10.9 14,12V13C14,14.1 14.67,15 15.5,15C16.33,15 17,14.1 17,13M15.5,11A0.5,0.5 0 0,1 16,11.5V13.5A0.5,0.5 0 0,1 15.5,14A0.5,0.5 0 0,1 15,13.5V11.5A0.5,0.5 0 0,1 15.5,11M13,13V12C13,10.9 12.33,10 11.5,10C10.67,10 10,10.9 10,12V13C10,14.1 10.67,15 11.5,15C12.33,15 13,14.1 13,13M11.5,11A0.5,0.5 0 0,1 12,11.5V13.5A0.5,0.5 0 0,1 11.5,14A0.5,0.5 0 0,1 11,13.5V11.5A0.5,0.5 0 0,1 11.5,11M8,15H9V10H8L7,10.5V11.5L8,11V15Z" /></g><g id="cash-multiple"><path d="M5,6H23V18H5V6M14,9A3,3 0 0,1 17,12A3,3 0 0,1 14,15A3,3 0 0,1 11,12A3,3 0 0,1 14,9M9,8A2,2 0 0,1 7,10V14A2,2 0 0,1 9,16H19A2,2 0 0,1 21,14V10A2,2 0 0,1 19,8H9M1,10H3V20H19V22H1V10Z" /></g><g id="cash-usd"><path d="M20,18H4V6H20M20,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4M11,17H13V16H14A1,1 0 0,0 15,15V12A1,1 0 0,0 14,11H11V10H15V8H13V7H11V8H10A1,1 0 0,0 9,9V12A1,1 0 0,0 10,13H13V14H9V16H11V17Z" /></g><g id="cast"><path d="M1,10V12A9,9 0 0,1 10,21H12C12,14.92 7.07,10 1,10M1,14V16A5,5 0 0,1 6,21H8A7,7 0 0,0 1,14M1,18V21H4A3,3 0 0,0 1,18M21,3H3C1.89,3 1,3.89 1,5V8H3V5H21V19H14V21H21A2,2 0 0,0 23,19V5C23,3.89 22.1,3 21,3Z" /></g><g id="cast-connected"><path d="M21,3H3C1.89,3 1,3.89 1,5V8H3V5H21V19H14V21H21A2,2 0 0,0 23,19V5C23,3.89 22.1,3 21,3M1,10V12A9,9 0 0,1 10,21H12C12,14.92 7.07,10 1,10M19,7H5V8.63C8.96,9.91 12.09,13.04 13.37,17H19M1,14V16A5,5 0 0,1 6,21H8A7,7 0 0,0 1,14M1,18V21H4A3,3 0 0,0 1,18Z" /></g><g id="castle"><path d="M2,13H4V15H6V13H8V15H10V13H12V15H14V10L17,7V1H19L23,3L19,5V7L22,10V22H11V19A2,2 0 0,0 9,17A2,2 0 0,0 7,19V22H2V13M18,10C17.45,10 17,10.54 17,11.2V13H19V11.2C19,10.54 18.55,10 18,10Z" /></g><g id="cat"><path d="M12,8L10.67,8.09C9.81,7.07 7.4,4.5 5,4.5C5,4.5 3.03,7.46 4.96,11.41C4.41,12.24 4.07,12.67 4,13.66L2.07,13.95L2.28,14.93L4.04,14.67L4.18,15.38L2.61,16.32L3.08,17.21L4.53,16.32C5.68,18.76 8.59,20 12,20C15.41,20 18.32,18.76 19.47,16.32L20.92,17.21L21.39,16.32L19.82,15.38L19.96,14.67L21.72,14.93L21.93,13.95L20,13.66C19.93,12.67 19.59,12.24 19.04,11.41C20.97,7.46 19,4.5 19,4.5C16.6,4.5 14.19,7.07 13.33,8.09L12,8M9,11A1,1 0 0,1 10,12A1,1 0 0,1 9,13A1,1 0 0,1 8,12A1,1 0 0,1 9,11M15,11A1,1 0 0,1 16,12A1,1 0 0,1 15,13A1,1 0 0,1 14,12A1,1 0 0,1 15,11M11,14H13L12.3,15.39C12.5,16.03 13.06,16.5 13.75,16.5A1.5,1.5 0 0,0 15.25,15H15.75A2,2 0 0,1 13.75,17C13,17 12.35,16.59 12,16V16H12C11.65,16.59 11,17 10.25,17A2,2 0 0,1 8.25,15H8.75A1.5,1.5 0 0,0 10.25,16.5C10.94,16.5 11.5,16.03 11.7,15.39L11,14Z" /></g><g id="cellphone"><path d="M17,19H7V5H17M17,1H7C5.89,1 5,1.89 5,3V21A2,2 0 0,0 7,23H17A2,2 0 0,0 19,21V3C19,1.89 18.1,1 17,1Z" /></g><g id="cellphone-android"><path d="M17.25,18H6.75V4H17.25M14,21H10V20H14M16,1H8A3,3 0 0,0 5,4V20A3,3 0 0,0 8,23H16A3,3 0 0,0 19,20V4A3,3 0 0,0 16,1Z" /></g><g id="cellphone-basic"><path d="M15,2A1,1 0 0,0 14,3V6H10C8.89,6 8,6.89 8,8V20C8,21.11 8.89,22 10,22H15C16.11,22 17,21.11 17,20V8C17,7.26 16.6,6.62 16,6.28V3A1,1 0 0,0 15,2M10,8H15V13H10V8M10,15H11V16H10V15M12,15H13V16H12V15M14,15H15V16H14V15M10,17H11V18H10V17M12,17H13V18H12V17M14,17H15V18H14V17M10,19H11V20H10V19M12,19H13V20H12V19M14,19H15V20H14V19Z" /></g><g id="cellphone-dock"><path d="M16,15H8V5H16M16,1H8C6.89,1 6,1.89 6,3V17A2,2 0 0,0 8,19H16A2,2 0 0,0 18,17V3C18,1.89 17.1,1 16,1M8,23H16V21H8V23Z" /></g><g id="cellphone-iphone"><path d="M16,18H7V4H16M11.5,22A1.5,1.5 0 0,1 10,20.5A1.5,1.5 0 0,1 11.5,19A1.5,1.5 0 0,1 13,20.5A1.5,1.5 0 0,1 11.5,22M15.5,1H7.5A2.5,2.5 0 0,0 5,3.5V20.5A2.5,2.5 0 0,0 7.5,23H15.5A2.5,2.5 0 0,0 18,20.5V3.5A2.5,2.5 0 0,0 15.5,1Z" /></g><g id="cellphone-link"><path d="M22,17H18V10H22M23,8H17A1,1 0 0,0 16,9V19A1,1 0 0,0 17,20H23A1,1 0 0,0 24,19V9A1,1 0 0,0 23,8M4,6H22V4H4A2,2 0 0,0 2,6V17H0V20H14V17H4V6Z" /></g><g id="cellphone-link-off"><path d="M23,8H17A1,1 0 0,0 16,9V13.18L18,15.18V10H22V17H19.82L22.82,20H23A1,1 0 0,0 24,19V9A1,1 0 0,0 23,8M4,6.27L14.73,17H4V6.27M1.92,1.65L0.65,2.92L2.47,4.74C2.18,5.08 2,5.5 2,6V17H0V20H17.73L20.08,22.35L21.35,21.08L3.89,3.62L1.92,1.65M22,6V4H6.82L8.82,6H22Z" /></g><g id="cellphone-settings"><path d="M16,16H8V4H16M16,0H8A2,2 0 0,0 6,2V18A2,2 0 0,0 8,20H16A2,2 0 0,0 18,18V2A2,2 0 0,0 16,0M15,24H17V22H15M11,24H13V22H11M7,24H9V22H7V24Z" /></g><g id="certificate"><path d="M4,3C2.89,3 2,3.89 2,5V15A2,2 0 0,0 4,17H12V22L15,19L18,22V17H20A2,2 0 0,0 22,15V8L22,6V5A2,2 0 0,0 20,3H16V3H4M12,5L15,7L18,5V8.5L21,10L18,11.5V15L15,13L12,15V11.5L9,10L12,8.5V5M4,5H9V7H4V5M4,9H7V11H4V9M4,13H9V15H4V13Z" /></g><g id="chair-school"><path d="M22,5V7H17L13.53,12H16V14H14.46L18.17,22H15.97L15.04,20H6.38L5.35,22H3.1L7.23,14H7C6.55,14 6.17,13.7 6.04,13.3L2.87,3.84L3.82,3.5C4.34,3.34 4.91,3.63 5.08,4.15L7.72,12H12.1L15.57,7H12V5H22M9.5,14L7.42,18H14.11L12.26,14H9.5Z" /></g><g id="chart-arc"><path d="M16.18,19.6L14.17,16.12C15.15,15.4 15.83,14.28 15.97,13H20C19.83,15.76 18.35,18.16 16.18,19.6M13,7.03V3C17.3,3.26 20.74,6.7 21,11H16.97C16.74,8.91 15.09,7.26 13,7.03M7,12.5C7,13.14 7.13,13.75 7.38,14.3L3.9,16.31C3.32,15.16 3,13.87 3,12.5C3,7.97 6.54,4.27 11,4V8.03C8.75,8.28 7,10.18 7,12.5M11.5,21C8.53,21 5.92,19.5 4.4,17.18L7.88,15.17C8.7,16.28 10,17 11.5,17C12.14,17 12.75,16.87 13.3,16.62L15.31,20.1C14.16,20.68 12.87,21 11.5,21Z" /></g><g id="chart-areaspline"><path d="M17.45,15.18L22,7.31V19L22,21H2V3H4V15.54L9.5,6L16,9.78L20.24,2.45L21.97,3.45L16.74,12.5L10.23,8.75L4.31,19H6.57L10.96,11.44L17.45,15.18Z" /></g><g id="chart-bar"><path d="M22,21H2V3H4V19H6V10H10V19H12V6H16V19H18V14H22V21Z" /></g><g id="chart-bubble"><path d="M7.2,11.2C8.97,11.2 10.4,12.63 10.4,14.4C10.4,16.17 8.97,17.6 7.2,17.6C5.43,17.6 4,16.17 4,14.4C4,12.63 5.43,11.2 7.2,11.2M14.8,16A2,2 0 0,1 16.8,18A2,2 0 0,1 14.8,20A2,2 0 0,1 12.8,18A2,2 0 0,1 14.8,16M15.2,4A4.8,4.8 0 0,1 20,8.8C20,11.45 17.85,13.6 15.2,13.6A4.8,4.8 0 0,1 10.4,8.8C10.4,6.15 12.55,4 15.2,4Z" /></g><g id="chart-gantt"><path d="M2,5H10V2H12V22H10V18H6V15H10V13H4V10H10V8H2V5M14,5H17V8H14V5M14,10H19V13H14V10M14,15H22V18H14V15Z" /></g><g id="chart-histogram"><path d="M3,3H5V13H9V7H13V11H17V15H21V21H3V3Z" /></g><g id="chart-line"><path d="M16,11.78L20.24,4.45L21.97,5.45L16.74,14.5L10.23,10.75L5.46,19H22V21H2V3H4V17.54L9.5,8L16,11.78Z" /></g><g id="chart-pie"><path d="M21,11H13V3A8,8 0 0,1 21,11M19,13C19,15.78 17.58,18.23 15.43,19.67L11.58,13H19M11,21C8.22,21 5.77,19.58 4.33,17.43L10.82,13.68L14.56,20.17C13.5,20.7 12.28,21 11,21M3,13A8,8 0 0,1 11,5V12.42L3.83,16.56C3.3,15.5 3,14.28 3,13Z" /></g><g id="chart-scatterplot-hexbin"><path d="M2,2H4V20H22V22H2V2M14,14.5L12,18H7.94L5.92,14.5L7.94,11H12L14,14.5M14.08,6.5L12.06,10H8L6,6.5L8,3H12.06L14.08,6.5M21.25,10.5L19.23,14H15.19L13.17,10.5L15.19,7H19.23L21.25,10.5Z" /></g><g id="chart-timeline"><path d="M2,2H4V20H22V22H2V2M7,10H17V13H7V10M11,15H21V18H11V15M6,4H22V8H20V6H8V8H6V4Z" /></g><g id="check"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z" /></g><g id="check-all"><path d="M0.41,13.41L6,19L7.41,17.58L1.83,12M22.24,5.58L11.66,16.17L7.5,12L6.07,13.41L11.66,19L23.66,7M18,7L16.59,5.58L10.24,11.93L11.66,13.34L18,7Z" /></g><g id="check-circle"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M11,16.5L18,9.5L16.59,8.09L11,13.67L7.91,10.59L6.5,12L11,16.5Z" /></g><g id="check-circle-outline"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4M11,16.5L6.5,12L7.91,10.59L11,13.67L16.59,8.09L18,9.5L11,16.5Z" /></g><g id="checkbox-blank"><path d="M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="checkbox-blank-circle"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="checkbox-blank-circle-outline"><path d="M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="checkbox-blank-outline"><path d="M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M19,5V19H5V5H19Z" /></g><g id="checkbox-marked"><path d="M10,17L5,12L6.41,10.58L10,14.17L17.59,6.58L19,8M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="checkbox-marked-circle"><path d="M10,17L5,12L6.41,10.58L10,14.17L17.59,6.58L19,8M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="checkbox-marked-circle-outline"><path d="M20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4C12.76,4 13.5,4.11 14.2,4.31L15.77,2.74C14.61,2.26 13.34,2 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12M7.91,10.08L6.5,11.5L11,16L21,6L19.59,4.58L11,13.17L7.91,10.08Z" /></g><g id="checkbox-marked-outline"><path d="M19,19H5V5H15V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V11H19M7.91,10.08L6.5,11.5L11,16L21,6L19.59,4.58L11,13.17L7.91,10.08Z" /></g><g id="checkbox-multiple-blank"><path d="M22,16A2,2 0 0,1 20,18H8C6.89,18 6,17.1 6,16V4C6,2.89 6.89,2 8,2H20A2,2 0 0,1 22,4V16M16,20V22H4A2,2 0 0,1 2,20V7H4V20H16Z" /></g><g id="checkbox-multiple-blank-circle"><path d="M14,2A8,8 0 0,0 6,10A8,8 0 0,0 14,18A8,8 0 0,0 22,10A8,8 0 0,0 14,2M4.93,5.82C3.08,7.34 2,9.61 2,12A8,8 0 0,0 10,20C10.64,20 11.27,19.92 11.88,19.77C10.12,19.38 8.5,18.5 7.17,17.29C5.22,16.25 4,14.21 4,12C4,11.7 4.03,11.41 4.07,11.11C4.03,10.74 4,10.37 4,10C4,8.56 4.32,7.13 4.93,5.82Z" /></g><g id="checkbox-multiple-blank-circle-outline"><path d="M14,2A8,8 0 0,0 6,10A8,8 0 0,0 14,18A8,8 0 0,0 22,10A8,8 0 0,0 14,2M14,4C17.32,4 20,6.69 20,10C20,13.32 17.32,16 14,16A6,6 0 0,1 8,10A6,6 0 0,1 14,4M4.93,5.82C3.08,7.34 2,9.61 2,12A8,8 0 0,0 10,20C10.64,20 11.27,19.92 11.88,19.77C10.12,19.38 8.5,18.5 7.17,17.29C5.22,16.25 4,14.21 4,12C4,11.7 4.03,11.41 4.07,11.11C4.03,10.74 4,10.37 4,10C4,8.56 4.32,7.13 4.93,5.82Z" /></g><g id="checkbox-multiple-blank-outline"><path d="M20,16V4H8V16H20M22,16A2,2 0 0,1 20,18H8C6.89,18 6,17.1 6,16V4C6,2.89 6.89,2 8,2H20A2,2 0 0,1 22,4V16M16,20V22H4A2,2 0 0,1 2,20V7H4V20H16Z" /></g><g id="checkbox-multiple-marked"><path d="M22,16A2,2 0 0,1 20,18H8C6.89,18 6,17.1 6,16V4C6,2.89 6.89,2 8,2H20A2,2 0 0,1 22,4V16M16,20V22H4A2,2 0 0,1 2,20V7H4V20H16M13,14L20,7L18.59,5.59L13,11.17L9.91,8.09L8.5,9.5L13,14Z" /></g><g id="checkbox-multiple-marked-circle"><path d="M14,2A8,8 0 0,0 6,10A8,8 0 0,0 14,18A8,8 0 0,0 22,10A8,8 0 0,0 14,2M4.93,5.82C3.08,7.34 2,9.61 2,12A8,8 0 0,0 10,20C10.64,20 11.27,19.92 11.88,19.77C10.12,19.38 8.5,18.5 7.17,17.29C5.22,16.25 4,14.21 4,12C4,11.7 4.03,11.41 4.07,11.11C4.03,10.74 4,10.37 4,10C4,8.56 4.32,7.13 4.93,5.82M18.09,6.08L19.5,7.5L13,14L9.21,10.21L10.63,8.79L13,11.17" /></g><g id="checkbox-multiple-marked-circle-outline"><path d="M14,2A8,8 0 0,0 6,10A8,8 0 0,0 14,18A8,8 0 0,0 22,10H20C20,13.32 17.32,16 14,16A6,6 0 0,1 8,10A6,6 0 0,1 14,4C14.43,4 14.86,4.05 15.27,4.14L16.88,2.54C15.96,2.18 15,2 14,2M20.59,3.58L14,10.17L11.62,7.79L10.21,9.21L14,13L22,5M4.93,5.82C3.08,7.34 2,9.61 2,12A8,8 0 0,0 10,20C10.64,20 11.27,19.92 11.88,19.77C10.12,19.38 8.5,18.5 7.17,17.29C5.22,16.25 4,14.21 4,12C4,11.7 4.03,11.41 4.07,11.11C4.03,10.74 4,10.37 4,10C4,8.56 4.32,7.13 4.93,5.82Z" /></g><g id="checkbox-multiple-marked-outline"><path d="M20,16V10H22V16A2,2 0 0,1 20,18H8C6.89,18 6,17.1 6,16V4C6,2.89 6.89,2 8,2H16V4H8V16H20M10.91,7.08L14,10.17L20.59,3.58L22,5L14,13L9.5,8.5L10.91,7.08M16,20V22H4A2,2 0 0,1 2,20V7H4V20H16Z" /></g><g id="checkerboard"><path d="M3,3H21V21H3V3M5,5V12H12V19H19V12H12V5H5Z" /></g><g id="chemical-weapon"><path d="M11,7.83C9.83,7.42 9,6.3 9,5A3,3 0 0,1 12,2A3,3 0 0,1 15,5C15,6.31 14.16,7.42 13,7.83V10.64C12.68,10.55 12.35,10.5 12,10.5C11.65,10.5 11.32,10.55 11,10.64V7.83M18.3,21.1C17.16,20.45 16.62,19.18 16.84,17.96L14.4,16.55C14.88,16.09 15.24,15.5 15.4,14.82L17.84,16.23C18.78,15.42 20.16,15.26 21.29,15.91C22.73,16.74 23.22,18.57 22.39,20C21.56,21.44 19.73,21.93 18.3,21.1M2.7,15.9C3.83,15.25 5.21,15.42 6.15,16.22L8.6,14.81C8.76,15.5 9.11,16.08 9.6,16.54L7.15,17.95C7.38,19.17 6.83,20.45 5.7,21.1C4.26,21.93 2.43,21.44 1.6,20C0.77,18.57 1.26,16.73 2.7,15.9M14,14A2,2 0 0,1 12,16C10.89,16 10,15.1 10,14A2,2 0 0,1 12,12C13.11,12 14,12.9 14,14M17,14L16.97,14.57L15.5,13.71C15.4,12.64 14.83,11.71 14,11.12V9.41C15.77,10.19 17,11.95 17,14M14.97,18.03C14.14,18.64 13.11,19 12,19C10.89,19 9.86,18.64 9.03,18L10.5,17.17C10.96,17.38 11.47,17.5 12,17.5C12.53,17.5 13.03,17.38 13.5,17.17L14.97,18.03M7.03,14.56L7,14C7,11.95 8.23,10.19 10,9.42V11.13C9.17,11.71 8.6,12.64 8.5,13.7L7.03,14.56Z" /></g><g id="chevron-double-down"><path d="M16.59,5.59L18,7L12,13L6,7L7.41,5.59L12,10.17L16.59,5.59M16.59,11.59L18,13L12,19L6,13L7.41,11.59L12,16.17L16.59,11.59Z" /></g><g id="chevron-double-left"><path d="M18.41,7.41L17,6L11,12L17,18L18.41,16.59L13.83,12L18.41,7.41M12.41,7.41L11,6L5,12L11,18L12.41,16.59L7.83,12L12.41,7.41Z" /></g><g id="chevron-double-right"><path d="M5.59,7.41L7,6L13,12L7,18L5.59,16.59L10.17,12L5.59,7.41M11.59,7.41L13,6L19,12L13,18L11.59,16.59L16.17,12L11.59,7.41Z" /></g><g id="chevron-double-up"><path d="M7.41,18.41L6,17L12,11L18,17L16.59,18.41L12,13.83L7.41,18.41M7.41,12.41L6,11L12,5L18,11L16.59,12.41L12,7.83L7.41,12.41Z" /></g><g id="chevron-down"><path d="M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z" /></g><g id="chevron-left"><path d="M15.41,16.58L10.83,12L15.41,7.41L14,6L8,12L14,18L15.41,16.58Z" /></g><g id="chevron-right"><path d="M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z" /></g><g id="chevron-up"><path d="M7.41,15.41L12,10.83L16.59,15.41L18,14L12,8L6,14L7.41,15.41Z" /></g><g id="chip"><path d="M6,4H18V5H21V7H18V9H21V11H18V13H21V15H18V17H21V19H18V20H6V19H3V17H6V15H3V13H6V11H3V9H6V7H3V5H6V4M11,15V18H12V15H11M13,15V18H14V15H13M15,15V18H16V15H15Z" /></g><g id="church"><path d="M11,2H13V4H15V6H13V9.4L22,13V15L20,14.2V22H14V17A2,2 0 0,0 12,15A2,2 0 0,0 10,17V22H4V14.2L2,15V13L11,9.4V6H9V4H11V2M6,20H8V15L7,14L6,15V20M16,20H18V15L17,14L16,15V20Z" /></g><g id="cisco-webex"><path d="M12,3A9,9 0 0,1 21,12A9,9 0 0,1 12,21A9,9 0 0,1 3,12A9,9 0 0,1 12,3M5.94,8.5C4,11.85 5.15,16.13 8.5,18.06C11.85,20 18.85,7.87 15.5,5.94C12.15,4 7.87,5.15 5.94,8.5Z" /></g><g id="city"><path d="M19,15H17V13H19M19,19H17V17H19M13,7H11V5H13M13,11H11V9H13M13,15H11V13H13M13,19H11V17H13M7,11H5V9H7M7,15H5V13H7M7,19H5V17H7M15,11V5L12,2L9,5V7H3V21H21V11H15Z" /></g><g id="clipboard"><path d="M9,4A3,3 0 0,1 12,1A3,3 0 0,1 15,4H19A2,2 0 0,1 21,6V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V6A2,2 0 0,1 5,4H9M12,3A1,1 0 0,0 11,4A1,1 0 0,0 12,5A1,1 0 0,0 13,4A1,1 0 0,0 12,3Z" /></g><g id="clipboard-account"><path d="M18,19H6V17.6C6,15.6 10,14.5 12,14.5C14,14.5 18,15.6 18,17.6M12,7A3,3 0 0,1 15,10A3,3 0 0,1 12,13A3,3 0 0,1 9,10A3,3 0 0,1 12,7M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="clipboard-alert"><path d="M12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5M13,14H11V8H13M13,18H11V16H13M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="clipboard-arrow-down"><path d="M12,18L7,13H10V9H14V13H17M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="clipboard-arrow-left"><path d="M16,15H12V18L7,13L12,8V11H16M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="clipboard-check"><path d="M10,17L6,13L7.41,11.59L10,14.17L16.59,7.58L18,9M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="clipboard-flow"><path d="M19,4H14.82C14.25,2.44 12.53,1.64 11,2.2C10.14,2.5 9.5,3.16 9.18,4H5A2,2 0 0,0 3,6V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V6A2,2 0 0,0 19,4M12,4A1,1 0 0,1 13,5A1,1 0 0,1 12,6A1,1 0 0,1 11,5A1,1 0 0,1 12,4M10,17H8V10H5L9,6L13,10H10V17M15,20L11,16H14V9H16V16H19L15,20Z" /></g><g id="clipboard-outline"><path d="M7,8V6H5V19H19V6H17V8H7M9,4A3,3 0 0,1 12,1A3,3 0 0,1 15,4H19A2,2 0 0,1 21,6V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V6A2,2 0 0,1 5,4H9M12,3A1,1 0 0,0 11,4A1,1 0 0,0 12,5A1,1 0 0,0 13,4A1,1 0 0,0 12,3Z" /></g><g id="clipboard-text"><path d="M17,9H7V7H17M17,13H7V11H17M14,17H7V15H14M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="clippy"><path d="M15,15.5A2.5,2.5 0 0,1 12.5,18A2.5,2.5 0 0,1 10,15.5V13.75A0.75,0.75 0 0,1 10.75,13A0.75,0.75 0 0,1 11.5,13.75V15.5A1,1 0 0,0 12.5,16.5A1,1 0 0,0 13.5,15.5V11.89C12.63,11.61 12,10.87 12,10C12,8.9 13,8 14.25,8C15.5,8 16.5,8.9 16.5,10C16.5,10.87 15.87,11.61 15,11.89V15.5M8.25,8C9.5,8 10.5,8.9 10.5,10C10.5,10.87 9.87,11.61 9,11.89V17.25A3.25,3.25 0 0,0 12.25,20.5A3.25,3.25 0 0,0 15.5,17.25V13.75A0.75,0.75 0 0,1 16.25,13A0.75,0.75 0 0,1 17,13.75V17.25A4.75,4.75 0 0,1 12.25,22A4.75,4.75 0 0,1 7.5,17.25V11.89C6.63,11.61 6,10.87 6,10C6,8.9 7,8 8.25,8M10.06,6.13L9.63,7.59C9.22,7.37 8.75,7.25 8.25,7.25C7.34,7.25 6.53,7.65 6.03,8.27L4.83,7.37C5.46,6.57 6.41,6 7.5,5.81V5.75A3.75,3.75 0 0,1 11.25,2A3.75,3.75 0 0,1 15,5.75V5.81C16.09,6 17.04,6.57 17.67,7.37L16.47,8.27C15.97,7.65 15.16,7.25 14.25,7.25C13.75,7.25 13.28,7.37 12.87,7.59L12.44,6.13C12.77,6 13.13,5.87 13.5,5.81V5.75C13.5,4.5 12.5,3.5 11.25,3.5C10,3.5 9,4.5 9,5.75V5.81C9.37,5.87 9.73,6 10.06,6.13M14.25,9.25C13.7,9.25 13.25,9.59 13.25,10C13.25,10.41 13.7,10.75 14.25,10.75C14.8,10.75 15.25,10.41 15.25,10C15.25,9.59 14.8,9.25 14.25,9.25M8.25,9.25C7.7,9.25 7.25,9.59 7.25,10C7.25,10.41 7.7,10.75 8.25,10.75C8.8,10.75 9.25,10.41 9.25,10C9.25,9.59 8.8,9.25 8.25,9.25Z" /></g><g id="clock"><path d="M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22C6.47,22 2,17.5 2,12A10,10 0 0,1 12,2M12.5,7V12.25L17,14.92L16.25,16.15L11,13V7H12.5Z" /></g><g id="clock-alert"><path d="M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22C14.25,22 16.33,21.24 18,20V17.28C16.53,18.94 14.39,20 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4C15.36,4 18.23,6.07 19.41,9H21.54C20.27,4.94 16.5,2 12,2M11,7V13L16.25,16.15L17,14.92L12.5,12.25V7H11M20,11V18H22V11H20M20,20V22H22V20H20Z" /></g><g id="clock-end"><path d="M12,1C8.14,1 5,4.14 5,8A7,7 0 0,0 12,15C15.86,15 19,11.87 19,8C19,4.14 15.86,1 12,1M12,3.15C14.67,3.15 16.85,5.32 16.85,8C16.85,10.68 14.67,12.85 12,12.85A4.85,4.85 0 0,1 7.15,8A4.85,4.85 0 0,1 12,3.15M11,5V8.69L14.19,10.53L14.94,9.23L12.5,7.82V5M15,16V19H3V21H15V24L19,20M19,20V24H21V16H19" /></g><g id="clock-fast"><path d="M15,4A8,8 0 0,1 23,12A8,8 0 0,1 15,20A8,8 0 0,1 7,12A8,8 0 0,1 15,4M15,6A6,6 0 0,0 9,12A6,6 0 0,0 15,18A6,6 0 0,0 21,12A6,6 0 0,0 15,6M14,8H15.5V11.78L17.83,14.11L16.77,15.17L14,12.4V8M2,18A1,1 0 0,1 1,17A1,1 0 0,1 2,16H5.83C6.14,16.71 6.54,17.38 7,18H2M3,13A1,1 0 0,1 2,12A1,1 0 0,1 3,11H5.05L5,12L5.05,13H3M4,8A1,1 0 0,1 3,7A1,1 0 0,1 4,6H7C6.54,6.62 6.14,7.29 5.83,8H4Z" /></g><g id="clock-in"><path d="M2.21,0.79L0.79,2.21L4.8,6.21L3,8H8V3L6.21,4.8M12,8C8.14,8 5,11.13 5,15A7,7 0 0,0 12,22C15.86,22 19,18.87 19,15A7,7 0 0,0 12,8M12,10.15C14.67,10.15 16.85,12.32 16.85,15A4.85,4.85 0 0,1 12,19.85C9.32,19.85 7.15,17.68 7.15,15A4.85,4.85 0 0,1 12,10.15M11,12V15.69L14.19,17.53L14.94,16.23L12.5,14.82V12" /></g><g id="clock-out"><path d="M18,1L19.8,2.79L15.79,6.79L17.21,8.21L21.21,4.21L23,6V1M12,8C8.14,8 5,11.13 5,15A7,7 0 0,0 12,22C15.86,22 19,18.87 19,15A7,7 0 0,0 12,8M12,10.15C14.67,10.15 16.85,12.32 16.85,15A4.85,4.85 0 0,1 12,19.85C9.32,19.85 7.15,17.68 7.15,15A4.85,4.85 0 0,1 12,10.15M11,12V15.69L14.19,17.53L14.94,16.23L12.5,14.82V12" /></g><g id="clock-start"><path d="M12,1C8.14,1 5,4.14 5,8A7,7 0 0,0 12,15C15.86,15 19,11.87 19,8C19,4.14 15.86,1 12,1M12,3.15C14.67,3.15 16.85,5.32 16.85,8C16.85,10.68 14.67,12.85 12,12.85A4.85,4.85 0 0,1 7.15,8A4.85,4.85 0 0,1 12,3.15M11,5V8.69L14.19,10.53L14.94,9.23L12.5,7.82V5M4,16V24H6V21H18V24L22,20L18,16V19H6V16" /></g><g id="close"><path d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z" /></g><g id="close-box"><path d="M19,3H16.3H7.7H5A2,2 0 0,0 3,5V7.7V16.4V19A2,2 0 0,0 5,21H7.7H16.4H19A2,2 0 0,0 21,19V16.3V7.7V5A2,2 0 0,0 19,3M15.6,17L12,13.4L8.4,17L7,15.6L10.6,12L7,8.4L8.4,7L12,10.6L15.6,7L17,8.4L13.4,12L17,15.6L15.6,17Z" /></g><g id="close-box-outline"><path d="M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M19,19H5V5H19V19M17,8.4L13.4,12L17,15.6L15.6,17L12,13.4L8.4,17L7,15.6L10.6,12L7,8.4L8.4,7L12,10.6L15.6,7L17,8.4Z" /></g><g id="close-circle"><path d="M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M15.59,7L12,10.59L8.41,7L7,8.41L10.59,12L7,15.59L8.41,17L12,13.41L15.59,17L17,15.59L13.41,12L17,8.41L15.59,7Z" /></g><g id="close-circle-outline"><path d="M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22C17.53,22 22,17.53 22,12C22,6.47 17.53,2 12,2M14.59,8L12,10.59L9.41,8L8,9.41L10.59,12L8,14.59L9.41,16L12,13.41L14.59,16L16,14.59L13.41,12L16,9.41L14.59,8Z" /></g><g id="close-network"><path d="M14.59,6L12,8.59L9.41,6L8,7.41L10.59,10L8,12.59L9.41,14L12,11.41L14.59,14L16,12.59L13.41,10L16,7.41L14.59,6M17,3A2,2 0 0,1 19,5V15A2,2 0 0,1 17,17H13V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H7C5.89,17 5,16.1 5,15V5A2,2 0 0,1 7,3H17Z" /></g><g id="close-octagon"><path d="M8.27,3L3,8.27V15.73L8.27,21H15.73L21,15.73V8.27L15.73,3M8.41,7L12,10.59L15.59,7L17,8.41L13.41,12L17,15.59L15.59,17L12,13.41L8.41,17L7,15.59L10.59,12L7,8.41" /></g><g id="close-octagon-outline"><path d="M8.27,3L3,8.27V15.73L8.27,21H15.73C17.5,19.24 21,15.73 21,15.73V8.27L15.73,3M9.1,5H14.9L19,9.1V14.9L14.9,19H9.1L5,14.9V9.1M9.12,7.71L7.71,9.12L10.59,12L7.71,14.88L9.12,16.29L12,13.41L14.88,16.29L16.29,14.88L13.41,12L16.29,9.12L14.88,7.71L12,10.59" /></g><g id="close-outline"><path d="M3,16.74L7.76,12L3,7.26L7.26,3L12,7.76L16.74,3L21,7.26L16.24,12L21,16.74L16.74,21L12,16.24L7.26,21L3,16.74M12,13.41L16.74,18.16L18.16,16.74L13.41,12L18.16,7.26L16.74,5.84L12,10.59L7.26,5.84L5.84,7.26L10.59,12L5.84,16.74L7.26,18.16L12,13.41Z" /></g><g id="closed-caption"><path d="M18,11H16.5V10.5H14.5V13.5H16.5V13H18V14A1,1 0 0,1 17,15H14A1,1 0 0,1 13,14V10A1,1 0 0,1 14,9H17A1,1 0 0,1 18,10M11,11H9.5V10.5H7.5V13.5H9.5V13H11V14A1,1 0 0,1 10,15H7A1,1 0 0,1 6,14V10A1,1 0 0,1 7,9H10A1,1 0 0,1 11,10M19,4H5C3.89,4 3,4.89 3,6V18A2,2 0 0,0 5,20H19A2,2 0 0,0 21,18V6C21,4.89 20.1,4 19,4Z" /></g><g id="cloud"><path d="M19.35,10.03C18.67,6.59 15.64,4 12,4C9.11,4 6.6,5.64 5.35,8.03C2.34,8.36 0,10.9 0,14A6,6 0 0,0 6,20H19A5,5 0 0,0 24,15C24,12.36 21.95,10.22 19.35,10.03Z" /></g><g id="cloud-check"><path d="M10,17L6.5,13.5L7.91,12.08L10,14.17L15.18,9L16.59,10.41M19.35,10.03C18.67,6.59 15.64,4 12,4C9.11,4 6.6,5.64 5.35,8.03C2.34,8.36 0,10.9 0,14A6,6 0 0,0 6,20H19A5,5 0 0,0 24,15C24,12.36 21.95,10.22 19.35,10.03Z" /></g><g id="cloud-circle"><path d="M16.5,16H8A3,3 0 0,1 5,13A3,3 0 0,1 8,10C8.05,10 8.09,10 8.14,10C8.58,8.28 10.13,7 12,7A4,4 0 0,1 16,11H16.5A2.5,2.5 0 0,1 19,13.5A2.5,2.5 0 0,1 16.5,16M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="cloud-download"><path d="M17,13L12,18L7,13H10V9H14V13M19.35,10.03C18.67,6.59 15.64,4 12,4C9.11,4 6.6,5.64 5.35,8.03C2.34,8.36 0,10.9 0,14A6,6 0 0,0 6,20H19A5,5 0 0,0 24,15C24,12.36 21.95,10.22 19.35,10.03Z" /></g><g id="cloud-outline"><path d="M19,18H6A4,4 0 0,1 2,14A4,4 0 0,1 6,10H6.71C7.37,7.69 9.5,6 12,6A5.5,5.5 0 0,1 17.5,11.5V12H19A3,3 0 0,1 22,15A3,3 0 0,1 19,18M19.35,10.03C18.67,6.59 15.64,4 12,4C9.11,4 6.6,5.64 5.35,8.03C2.34,8.36 0,10.9 0,14A6,6 0 0,0 6,20H19A5,5 0 0,0 24,15C24,12.36 21.95,10.22 19.35,10.03Z" /></g><g id="cloud-outline-off"><path d="M7.73,10L15.73,18H6A4,4 0 0,1 2,14A4,4 0 0,1 6,10M3,5.27L5.75,8C2.56,8.15 0,10.77 0,14A6,6 0 0,0 6,20H17.73L19.73,22L21,20.73L4.27,4M19.35,10.03C18.67,6.59 15.64,4 12,4C10.5,4 9.15,4.43 8,5.17L9.45,6.63C10.21,6.23 11.08,6 12,6A5.5,5.5 0 0,1 17.5,11.5V12H19A3,3 0 0,1 22,15C22,16.13 21.36,17.11 20.44,17.62L21.89,19.07C23.16,18.16 24,16.68 24,15C24,12.36 21.95,10.22 19.35,10.03Z" /></g><g id="cloud-print"><path d="M12,2C9.11,2 6.6,3.64 5.35,6.04C2.34,6.36 0,8.91 0,12A6,6 0 0,0 6,18V22H18V18H19A5,5 0 0,0 24,13C24,10.36 21.95,8.22 19.35,8.04C18.67,4.59 15.64,2 12,2M8,13H16V20H8V13M9,14V15H15V14H9M9,16V17H15V16H9M9,18V19H15V18H9Z" /></g><g id="cloud-print-outline"><path d="M19,16A3,3 0 0,0 22,13A3,3 0 0,0 19,10H17.5V9.5A5.5,5.5 0 0,0 12,4C9.5,4 7.37,5.69 6.71,8H6A4,4 0 0,0 2,12A4,4 0 0,0 6,16V11H18V16H19M19.36,8.04C21.95,8.22 24,10.36 24,13A5,5 0 0,1 19,18H18V22H6V18A6,6 0 0,1 0,12C0,8.91 2.34,6.36 5.35,6.04C6.6,3.64 9.11,2 12,2C15.64,2 18.67,4.6 19.36,8.04M8,13V20H16V13H8M9,18H15V19H9V18M15,17H9V16H15V17M9,14H15V15H9V14Z" /></g><g id="cloud-sync"><path d="M12,4C15.64,4 18.67,6.59 19.35,10.04C21.95,10.22 24,12.36 24,15A5,5 0 0,1 19,20H6A6,6 0 0,1 0,14C0,10.91 2.34,8.36 5.35,8.04C6.6,5.64 9.11,4 12,4M7.5,9.69C6.06,11.5 6.2,14.06 7.82,15.68C8.66,16.5 9.81,17 11,17V18.86L13.83,16.04L11,13.21V15C10.34,15 9.7,14.74 9.23,14.27C8.39,13.43 8.26,12.11 8.92,11.12L7.5,9.69M9.17,8.97L10.62,10.42L12,11.79V10C12.66,10 13.3,10.26 13.77,10.73C14.61,11.57 14.74,12.89 14.08,13.88L15.5,15.31C16.94,13.5 16.8,10.94 15.18,9.32C14.34,8.5 13.19,8 12,8V6.14L9.17,8.97Z" /></g><g id="cloud-upload"><path d="M14,13V17H10V13H7L12,8L17,13M19.35,10.03C18.67,6.59 15.64,4 12,4C9.11,4 6.6,5.64 5.35,8.03C2.34,8.36 0,10.9 0,14A6,6 0 0,0 6,20H19A5,5 0 0,0 24,15C24,12.36 21.95,10.22 19.35,10.03Z" /></g><g id="code-array"><path d="M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M6,6V18H10V16H8V8H10V6H6M16,16H14V18H18V6H14V8H16V16Z" /></g><g id="code-braces"><path d="M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z" /></g><g id="code-brackets"><path d="M15,4V6H18V18H15V20H20V4M4,4V20H9V18H6V6H9V4H4Z" /></g><g id="code-equal"><path d="M6,13H11V15H6M13,13H18V15H13M13,9H18V11H13M6,9H11V11H6M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5Z" /></g><g id="code-greater-than"><path d="M10.41,7.41L15,12L10.41,16.6L9,15.18L12.18,12L9,8.82M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5Z" /></g><g id="code-greater-than-or-equal"><path d="M13,13H18V15H13M13,9H18V11H13M6.91,7.41L11.5,12L6.91,16.6L5.5,15.18L8.68,12L5.5,8.82M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5Z" /></g><g id="code-less-than"><path d="M13.59,7.41L9,12L13.59,16.6L15,15.18L11.82,12L15,8.82M19,3C20.11,3 21,3.9 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19Z" /></g><g id="code-less-than-or-equal"><path d="M13,13H18V15H13M13,9H18V11H13M10.09,7.41L11.5,8.82L8.32,12L11.5,15.18L10.09,16.6L5.5,12M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5Z" /></g><g id="code-not-equal"><path d="M6,15H8V17H6M11,13H18V15H11M11,9H18V11H11M6,7H8V13H6M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5Z" /></g><g id="code-not-equal-variant"><path d="M11,6.5V9.33L8.33,12L11,14.67V17.5L5.5,12M13,6.43L18.57,12L13,17.57V14.74L15.74,12L13,9.26M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5Z" /></g><g id="code-parentheses"><path d="M17.62,3C19.13,5.27 20,8.55 20,12C20,15.44 19.13,18.72 17.62,21L16,19.96C17.26,18.07 18,15.13 18,12C18,8.87 17.26,5.92 16,4.03L17.62,3M6.38,3L8,4.04C6.74,5.92 6,8.87 6,12C6,15.13 6.74,18.08 8,19.96L6.38,21C4.87,18.73 4,15.45 4,12C4,8.55 4.87,5.27 6.38,3Z" /></g><g id="code-string"><path d="M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M12.5,11H11.5A1.5,1.5 0 0,1 10,9.5A1.5,1.5 0 0,1 11.5,8H12.5A1.5,1.5 0 0,1 14,9.5H16A3.5,3.5 0 0,0 12.5,6H11.5A3.5,3.5 0 0,0 8,9.5A3.5,3.5 0 0,0 11.5,13H12.5A1.5,1.5 0 0,1 14,14.5A1.5,1.5 0 0,1 12.5,16H11.5A1.5,1.5 0 0,1 10,14.5H8A3.5,3.5 0 0,0 11.5,18H12.5A3.5,3.5 0 0,0 16,14.5A3.5,3.5 0 0,0 12.5,11Z" /></g><g id="code-tags"><path d="M14.6,16.6L19.2,12L14.6,7.4L16,6L22,12L16,18L14.6,16.6M9.4,16.6L4.8,12L9.4,7.4L8,6L2,12L8,18L9.4,16.6Z" /></g><g id="code-tags-check"><path d="M6.59,3.41L2,8L6.59,12.6L8,11.18L4.82,8L8,4.82L6.59,3.41M12.41,3.41L11,4.82L14.18,8L11,11.18L12.41,12.6L17,8L12.41,3.41M21.59,11.59L13.5,19.68L9.83,16L8.42,17.41L13.5,22.5L23,13L21.59,11.59Z" /></g><g id="codepen"><path d="M19.45,13.29L17.5,12L19.45,10.71M12.77,18.78V15.17L16.13,12.93L18.83,14.74M12,13.83L9.26,12L12,10.17L14.74,12M11.23,18.78L5.17,14.74L7.87,12.93L11.23,15.17M4.55,10.71L6.5,12L4.55,13.29M11.23,5.22V8.83L7.87,11.07L5.17,9.26M12.77,5.22L18.83,9.26L16.13,11.07L12.77,8.83M21,9.16C21,9.15 21,9.13 21,9.12C21,9.1 21,9.08 20.97,9.06C20.97,9.05 20.97,9.03 20.96,9C20.96,9 20.95,9 20.94,8.96C20.94,8.95 20.93,8.94 20.92,8.93C20.92,8.91 20.91,8.89 20.9,8.88C20.89,8.86 20.88,8.85 20.88,8.84C20.87,8.82 20.85,8.81 20.84,8.79C20.83,8.78 20.83,8.77 20.82,8.76A0.04,0.04 0 0,0 20.78,8.72C20.77,8.71 20.76,8.7 20.75,8.69C20.73,8.67 20.72,8.66 20.7,8.65C20.69,8.64 20.68,8.63 20.67,8.62C20.66,8.62 20.66,8.62 20.66,8.61L12.43,3.13C12.17,2.96 11.83,2.96 11.57,3.13L3.34,8.61C3.34,8.62 3.34,8.62 3.33,8.62C3.32,8.63 3.31,8.64 3.3,8.65C3.28,8.66 3.27,8.67 3.25,8.69C3.24,8.7 3.23,8.71 3.22,8.72C3.21,8.73 3.2,8.74 3.18,8.76C3.17,8.77 3.17,8.78 3.16,8.79C3.15,8.81 3.13,8.82 3.12,8.84C3.12,8.85 3.11,8.86 3.1,8.88C3.09,8.89 3.08,8.91 3.08,8.93C3.07,8.94 3.06,8.95 3.06,8.96C3.05,9 3.05,9 3.04,9C3.03,9.03 3.03,9.05 3.03,9.06C3,9.08 3,9.1 3,9.12C3,9.13 3,9.15 3,9.16C3,9.19 3,9.22 3,9.26V14.74C3,14.78 3,14.81 3,14.84C3,14.85 3,14.87 3,14.88C3,14.9 3,14.92 3.03,14.94C3.03,14.95 3.03,14.97 3.04,15C3.05,15 3.05,15 3.06,15.04C3.06,15.05 3.07,15.06 3.08,15.07C3.08,15.09 3.09,15.11 3.1,15.12C3.11,15.14 3.12,15.15 3.12,15.16C3.13,15.18 3.15,15.19 3.16,15.21C3.17,15.22 3.17,15.23 3.18,15.24C3.2,15.25 3.21,15.27 3.22,15.28C3.23,15.29 3.24,15.3 3.25,15.31C3.27,15.33 3.28,15.34 3.3,15.35C3.31,15.36 3.32,15.37 3.33,15.38C3.34,15.38 3.34,15.38 3.34,15.39L11.57,20.87C11.7,20.96 11.85,21 12,21C12.15,21 12.3,20.96 12.43,20.87L20.66,15.39C20.66,15.38 20.66,15.38 20.67,15.38C20.68,15.37 20.69,15.36 20.7,15.35C20.72,15.34 20.73,15.33 20.75,15.31C20.76,15.3 20.77,15.29 20.78,15.28C20.79,15.27 20.8,15.25 20.82,15.24C20.83,15.23 20.83,15.22 20.84,15.21C20.85,15.19 20.87,15.18 20.88,15.16C20.88,15.15 20.89,15.14 20.9,15.12C20.91,15.11 20.92,15.09 20.92,15.07C20.93,15.06 20.94,15.05 20.94,15.04C20.95,15 20.96,15 20.96,15C20.97,14.97 20.97,14.95 20.97,14.94C21,14.92 21,14.9 21,14.88C21,14.87 21,14.85 21,14.84C21,14.81 21,14.78 21,14.74V9.26C21,9.22 21,9.19 21,9.16Z" /></g><g id="coffee"><path d="M2,21H20V19H2M20,8H18V5H20M20,3H4V13A4,4 0 0,0 8,17H14A4,4 0 0,0 18,13V10H20A2,2 0 0,0 22,8V5C22,3.89 21.1,3 20,3Z" /></g><g id="coffee-outline"><path d="M2,21V19H20V21H2M20,8V5H18V8H20M20,3A2,2 0 0,1 22,5V8A2,2 0 0,1 20,10H18V13A4,4 0 0,1 14,17H8A4,4 0 0,1 4,13V3H20M16,5H6V13A2,2 0 0,0 8,15H14A2,2 0 0,0 16,13V5Z" /></g><g id="coffee-to-go"><path d="M3,19V17H17L15.26,15.24L16.67,13.83L20.84,18L16.67,22.17L15.26,20.76L17,19H3M17,8V5H15V8H17M17,3C18.11,3 19,3.9 19,5V8C19,9.11 18.11,10 17,10H15V11A4,4 0 0,1 11,15H7A4,4 0 0,1 3,11V3H17Z" /></g><g id="coin"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4M11,17V16H9V14H13V13H10A1,1 0 0,1 9,12V9A1,1 0 0,1 10,8H11V7H13V8H15V10H11V11H14A1,1 0 0,1 15,12V15A1,1 0 0,1 14,16H13V17H11Z" /></g><g id="coins"><path d="M15,4A8,8 0 0,1 23,12A8,8 0 0,1 15,20A8,8 0 0,1 7,12A8,8 0 0,1 15,4M15,18A6,6 0 0,0 21,12A6,6 0 0,0 15,6A6,6 0 0,0 9,12A6,6 0 0,0 15,18M3,12C3,14.61 4.67,16.83 7,17.65V19.74C3.55,18.85 1,15.73 1,12C1,8.27 3.55,5.15 7,4.26V6.35C4.67,7.17 3,9.39 3,12Z" /></g><g id="collage"><path d="M5,3C3.89,3 3,3.89 3,5V19C3,20.11 3.89,21 5,21H11V3M13,3V11H21V5C21,3.89 20.11,3 19,3M13,13V21H19C20.11,21 21,20.11 21,19V13" /></g><g id="color-helper"><path d="M0,24H24V20H0V24Z" /></g><g id="comment"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9Z" /></g><g id="comment-account"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M16,14V13C16,11.67 13.33,11 12,11C10.67,11 8,11.67 8,13V14H16M12,6A2,2 0 0,0 10,8A2,2 0 0,0 12,10A2,2 0 0,0 14,8A2,2 0 0,0 12,6Z" /></g><g id="comment-account-outline"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10M16,14H8V13C8,11.67 10.67,11 12,11C13.33,11 16,11.67 16,13V14M12,6A2,2 0 0,1 14,8A2,2 0 0,1 12,10A2,2 0 0,1 10,8A2,2 0 0,1 12,6Z" /></g><g id="comment-alert"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M13,10V6H11V10H13M13,14V12H11V14H13Z" /></g><g id="comment-alert-outline"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10M13,10H11V6H13V10M13,14H11V12H13V14Z" /></g><g id="comment-check"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,15L18,7L16.59,5.58L10,12.17L7.41,9.59L6,11L10,15Z" /></g><g id="comment-check-outline"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10M16.5,8L11,13.5L7.5,10L8.91,8.59L11,10.67L15.09,6.59L16.5,8Z" /></g><g id="comment-multiple-outline"><path d="M12,23A1,1 0 0,1 11,22V19H7A2,2 0 0,1 5,17V7C5,5.89 5.9,5 7,5H21A2,2 0 0,1 23,7V17A2,2 0 0,1 21,19H16.9L13.2,22.71C13,22.9 12.75,23 12.5,23V23H12M13,17V20.08L16.08,17H21V7H7V17H13M3,15H1V3A2,2 0 0,1 3,1H19V3H3V15Z" /></g><g id="comment-outline"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10Z" /></g><g id="comment-plus-outline"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10M11,6H13V9H16V11H13V14H11V11H8V9H11V6Z" /></g><g id="comment-processing"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M17,11V9H15V11H17M13,11V9H11V11H13M9,11V9H7V11H9Z" /></g><g id="comment-processing-outline"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10M17,11H15V9H17V11M13,11H11V9H13V11M9,11H7V9H9V11Z" /></g><g id="comment-question-outline"><path d="M4,2A2,2 0 0,0 2,4V16A2,2 0 0,0 4,18H8V21A1,1 0 0,0 9,22H9.5V22C9.75,22 10,21.9 10.2,21.71L13.9,18H20A2,2 0 0,0 22,16V4C22,2.89 21.1,2 20,2H4M4,4H20V16H13.08L10,19.08V16H4V4M12.19,5.5C11.3,5.5 10.59,5.68 10.05,6.04C9.5,6.4 9.22,7 9.27,7.69C0.21,7.69 6.57,7.69 11.24,7.69C11.24,7.41 11.34,7.2 11.5,7.06C11.7,6.92 11.92,6.85 12.19,6.85C12.5,6.85 12.77,6.93 12.95,7.11C13.13,7.28 13.22,7.5 13.22,7.8C13.22,8.08 13.14,8.33 13,8.54C12.83,8.76 12.62,8.94 12.36,9.08C11.84,9.4 11.5,9.68 11.29,9.92C11.1,10.16 11,10.5 11,11H13C13,10.72 13.05,10.5 13.14,10.32C13.23,10.15 13.4,10 13.66,9.85C14.12,9.64 14.5,9.36 14.79,9C15.08,8.63 15.23,8.24 15.23,7.8C15.23,7.1 14.96,6.54 14.42,6.12C13.88,5.71 13.13,5.5 12.19,5.5M11,12V14H13V12H11Z" /></g><g id="comment-remove-outline"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10M9.41,6L12,8.59L14.59,6L16,7.41L13.41,10L16,12.59L14.59,14L12,11.41L9.41,14L8,12.59L10.59,10L8,7.41L9.41,6Z" /></g><g id="comment-text"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M5,5V7H19V5H5M5,9V11H13V9H5M5,13V15H15V13H5Z" /></g><g id="comment-text-outline"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10M6,7H18V9H6V7M6,11H15V13H6V11Z" /></g><g id="compare"><path d="M19,3H14V5H19V18L14,12V21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M10,18H5L10,12M10,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H10V23H12V1H10V3Z" /></g><g id="compass"><path d="M14.19,14.19L6,18L9.81,9.81L18,6M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,10.9A1.1,1.1 0 0,0 10.9,12A1.1,1.1 0 0,0 12,13.1A1.1,1.1 0 0,0 13.1,12A1.1,1.1 0 0,0 12,10.9Z" /></g><g id="compass-outline"><path d="M7,17L10.2,10.2L17,7L13.8,13.8L7,17M12,11.1A0.9,0.9 0 0,0 11.1,12A0.9,0.9 0 0,0 12,12.9A0.9,0.9 0 0,0 12.9,12A0.9,0.9 0 0,0 12,11.1M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z" /></g><g id="console"><path d="M20,19V7H4V19H20M20,3A2,2 0 0,1 22,5V19A2,2 0 0,1 20,21H4A2,2 0 0,1 2,19V5C2,3.89 2.9,3 4,3H20M13,17V15H18V17H13M9.58,13L5.57,9H8.4L11.7,12.3C12.09,12.69 12.09,13.33 11.7,13.72L8.42,17H5.59L9.58,13Z" /></g><g id="contact-mail"><path d="M21,8V7L18,9L15,7V8L18,10M22,3H2A2,2 0 0,0 0,5V19A2,2 0 0,0 2,21H22A2,2 0 0,0 24,19V5A2,2 0 0,0 22,3M8,6A3,3 0 0,1 11,9A3,3 0 0,1 8,12A3,3 0 0,1 5,9A3,3 0 0,1 8,6M14,18H2V17C2,15 6,13.9 8,13.9C10,13.9 14,15 14,17M22,12H14V6H22" /></g><g id="contacts"><path d="M20,0H4V2H20V0M4,24H20V22H4V24M20,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6A2,2 0 0,0 20,4M12,6.75A2.25,2.25 0 0,1 14.25,9A2.25,2.25 0 0,1 12,11.25A2.25,2.25 0 0,1 9.75,9A2.25,2.25 0 0,1 12,6.75M17,17H7V15.5C7,13.83 10.33,13 12,13C13.67,13 17,13.83 17,15.5V17Z" /></g><g id="content-copy"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z" /></g><g id="content-cut"><path d="M19,3L13,9L15,11L22,4V3M12,12.5A0.5,0.5 0 0,1 11.5,12A0.5,0.5 0 0,1 12,11.5A0.5,0.5 0 0,1 12.5,12A0.5,0.5 0 0,1 12,12.5M6,20A2,2 0 0,1 4,18C4,16.89 4.9,16 6,16A2,2 0 0,1 8,18C8,19.11 7.1,20 6,20M6,8A2,2 0 0,1 4,6C4,4.89 4.9,4 6,4A2,2 0 0,1 8,6C8,7.11 7.1,8 6,8M9.64,7.64C9.87,7.14 10,6.59 10,6A4,4 0 0,0 6,2A4,4 0 0,0 2,6A4,4 0 0,0 6,10C6.59,10 7.14,9.87 7.64,9.64L10,12L7.64,14.36C7.14,14.13 6.59,14 6,14A4,4 0 0,0 2,18A4,4 0 0,0 6,22A4,4 0 0,0 10,18C10,17.41 9.87,16.86 9.64,16.36L12,14L19,21H22V20L9.64,7.64Z" /></g><g id="content-duplicate"><path d="M11,17H4A2,2 0 0,1 2,15V3A2,2 0 0,1 4,1H16V3H4V15H11V13L15,16L11,19V17M19,21V7H8V13H6V7A2,2 0 0,1 8,5H19A2,2 0 0,1 21,7V21A2,2 0 0,1 19,23H8A2,2 0 0,1 6,21V19H8V21H19Z" /></g><g id="content-paste"><path d="M19,20H5V4H7V7H17V4H19M12,2A1,1 0 0,1 13,3A1,1 0 0,1 12,4A1,1 0 0,1 11,3A1,1 0 0,1 12,2M19,2H14.82C14.4,0.84 13.3,0 12,0C10.7,0 9.6,0.84 9.18,2H5A2,2 0 0,0 3,4V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V4A2,2 0 0,0 19,2Z" /></g><g id="content-save"><path d="M15,9H5V5H15M12,19A3,3 0 0,1 9,16A3,3 0 0,1 12,13A3,3 0 0,1 15,16A3,3 0 0,1 12,19M17,3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V7L17,3Z" /></g><g id="content-save-all"><path d="M17,7V3H7V7H17M14,17A3,3 0 0,0 17,14A3,3 0 0,0 14,11A3,3 0 0,0 11,14A3,3 0 0,0 14,17M19,1L23,5V17A2,2 0 0,1 21,19H7C5.89,19 5,18.1 5,17V3A2,2 0 0,1 7,1H19M1,7H3V21H17V23H3A2,2 0 0,1 1,21V7Z" /></g><g id="content-save-settings"><path d="M15,8V4H5V8H15M12,18A3,3 0 0,0 15,15A3,3 0 0,0 12,12A3,3 0 0,0 9,15A3,3 0 0,0 12,18M17,2L21,6V18A2,2 0 0,1 19,20H5C3.89,20 3,19.1 3,18V4A2,2 0 0,1 5,2H17M11,22H13V24H11V22M7,22H9V24H7V22M15,22H17V24H15V22Z" /></g><g id="contrast"><path d="M4.38,20.9C3.78,20.71 3.3,20.23 3.1,19.63L19.63,3.1C20.23,3.3 20.71,3.78 20.9,4.38L4.38,20.9M20,16V18H13V16H20M3,6H6V3H8V6H11V8H8V11H6V8H3V6Z" /></g><g id="contrast-box"><path d="M17,15.5H12V17H17M19,19H5L19,5M5.5,7.5H7.5V5.5H9V7.5H11V9H9V11H7.5V9H5.5M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="contrast-circle"><path d="M12,20C9.79,20 7.79,19.1 6.34,17.66L17.66,6.34C19.1,7.79 20,9.79 20,12A8,8 0 0,1 12,20M6,8H8V6H9.5V8H11.5V9.5H9.5V11.5H8V9.5H6M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,16H17V14.5H12V16Z" /></g><g id="cookie"><path d="M12,3A9,9 0 0,0 3,12A9,9 0 0,0 12,21A9,9 0 0,0 21,12C21,11.5 20.96,11 20.87,10.5C20.6,10 20,10 20,10H18V9C18,8 17,8 17,8H15V7C15,6 14,6 14,6H13V4C13,3 12,3 12,3M9.5,6A1.5,1.5 0 0,1 11,7.5A1.5,1.5 0 0,1 9.5,9A1.5,1.5 0 0,1 8,7.5A1.5,1.5 0 0,1 9.5,6M6.5,10A1.5,1.5 0 0,1 8,11.5A1.5,1.5 0 0,1 6.5,13A1.5,1.5 0 0,1 5,11.5A1.5,1.5 0 0,1 6.5,10M11.5,11A1.5,1.5 0 0,1 13,12.5A1.5,1.5 0 0,1 11.5,14A1.5,1.5 0 0,1 10,12.5A1.5,1.5 0 0,1 11.5,11M16.5,13A1.5,1.5 0 0,1 18,14.5A1.5,1.5 0 0,1 16.5,16H16.5A1.5,1.5 0 0,1 15,14.5H15A1.5,1.5 0 0,1 16.5,13M11,16A1.5,1.5 0 0,1 12.5,17.5A1.5,1.5 0 0,1 11,19A1.5,1.5 0 0,1 9.5,17.5A1.5,1.5 0 0,1 11,16Z" /></g><g id="copyright"><path d="M10.08,10.86C10.13,10.53 10.24,10.24 10.38,10C10.5,9.74 10.72,9.53 10.97,9.37C11.21,9.22 11.5,9.15 11.88,9.14C12.11,9.15 12.32,9.19 12.5,9.27C12.71,9.36 12.89,9.5 13.03,9.63C13.17,9.78 13.28,9.96 13.37,10.16C13.46,10.36 13.5,10.58 13.5,10.8H15.3C15.28,10.33 15.19,9.9 15,9.5C14.85,9.12 14.62,8.78 14.32,8.5C14,8.22 13.66,8 13.24,7.84C12.82,7.68 12.36,7.61 11.85,7.61C11.2,7.61 10.63,7.72 10.15,7.95C9.67,8.18 9.27,8.5 8.95,8.87C8.63,9.26 8.39,9.71 8.24,10.23C8.09,10.75 8,11.29 8,11.87V12.14C8,12.72 8.08,13.26 8.23,13.78C8.38,14.3 8.62,14.75 8.94,15.13C9.26,15.5 9.66,15.82 10.14,16.04C10.62,16.26 11.19,16.38 11.84,16.38C12.31,16.38 12.75,16.3 13.16,16.15C13.57,16 13.93,15.79 14.24,15.5C14.55,15.25 14.8,14.94 15,14.58C15.16,14.22 15.27,13.84 15.28,13.43H13.5C13.5,13.64 13.43,13.83 13.34,14C13.25,14.19 13.13,14.34 13,14.47C12.83,14.6 12.66,14.7 12.46,14.77C12.27,14.84 12.07,14.86 11.86,14.87C11.5,14.86 11.2,14.79 10.97,14.64C10.72,14.5 10.5,14.27 10.38,14C10.24,13.77 10.13,13.47 10.08,13.14C10.03,12.81 10,12.47 10,12.14V11.87C10,11.5 10.03,11.19 10.08,10.86M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20Z" /></g><g id="counter"><path d="M4,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4M4,6V18H11V6H4M20,18V6H18.76C19,6.54 18.95,7.07 18.95,7.13C18.88,7.8 18.41,8.5 18.24,8.75L15.91,11.3L19.23,11.28L19.24,12.5L14.04,12.47L14,11.47C14,11.47 17.05,8.24 17.2,7.95C17.34,7.67 17.91,6 16.5,6C15.27,6.05 15.41,7.3 15.41,7.3L13.87,7.31C13.87,7.31 13.88,6.65 14.25,6H13V18H15.58L15.57,17.14L16.54,17.13C16.54,17.13 17.45,16.97 17.46,16.08C17.5,15.08 16.65,15.08 16.5,15.08C16.37,15.08 15.43,15.13 15.43,15.95H13.91C13.91,15.95 13.95,13.89 16.5,13.89C19.1,13.89 18.96,15.91 18.96,15.91C18.96,15.91 19,17.16 17.85,17.63L18.37,18H20M8.92,16H7.42V10.2L5.62,10.76V9.53L8.76,8.41H8.92V16Z" /></g><g id="cow"><path d="M10.5,18A0.5,0.5 0 0,1 11,18.5A0.5,0.5 0 0,1 10.5,19A0.5,0.5 0 0,1 10,18.5A0.5,0.5 0 0,1 10.5,18M13.5,18A0.5,0.5 0 0,1 14,18.5A0.5,0.5 0 0,1 13.5,19A0.5,0.5 0 0,1 13,18.5A0.5,0.5 0 0,1 13.5,18M10,11A1,1 0 0,1 11,12A1,1 0 0,1 10,13A1,1 0 0,1 9,12A1,1 0 0,1 10,11M14,11A1,1 0 0,1 15,12A1,1 0 0,1 14,13A1,1 0 0,1 13,12A1,1 0 0,1 14,11M18,18C18,20.21 15.31,22 12,22C8.69,22 6,20.21 6,18C6,17.1 6.45,16.27 7.2,15.6C6.45,14.6 6,13.35 6,12L6.12,10.78C5.58,10.93 4.93,10.93 4.4,10.78C3.38,10.5 1.84,9.35 2.07,8.55C2.3,7.75 4.21,7.6 5.23,7.9C5.82,8.07 6.45,8.5 6.82,8.96L7.39,8.15C6.79,7.05 7,4 10,3L9.91,3.14V3.14C9.63,3.58 8.91,4.97 9.67,6.47C10.39,6.17 11.17,6 12,6C12.83,6 13.61,6.17 14.33,6.47C15.09,4.97 14.37,3.58 14.09,3.14L14,3C17,4 17.21,7.05 16.61,8.15L17.18,8.96C17.55,8.5 18.18,8.07 18.77,7.9C19.79,7.6 21.7,7.75 21.93,8.55C22.16,9.35 20.62,10.5 19.6,10.78C19.07,10.93 18.42,10.93 17.88,10.78L18,12C18,13.35 17.55,14.6 16.8,15.6C17.55,16.27 18,17.1 18,18M12,16C9.79,16 8,16.9 8,18C8,19.1 9.79,20 12,20C14.21,20 16,19.1 16,18C16,16.9 14.21,16 12,16M12,14C13.12,14 14.17,14.21 15.07,14.56C15.65,13.87 16,13 16,12A4,4 0 0,0 12,8A4,4 0 0,0 8,12C8,13 8.35,13.87 8.93,14.56C9.83,14.21 10.88,14 12,14M14.09,3.14V3.14Z" /></g><g id="creation"><path d="M19,1L17.74,3.75L15,5L17.74,6.26L19,9L20.25,6.26L23,5L20.25,3.75M9,4L6.5,9.5L1,12L6.5,14.5L9,20L11.5,14.5L17,12L11.5,9.5M19,15L17.74,17.74L15,19L17.74,20.25L19,23L20.25,20.25L23,19L20.25,17.74" /></g><g id="credit-card"><path d="M20,8H4V6H20M20,18H4V12H20M20,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z" /></g><g id="credit-card-multiple"><path d="M21,8V6H7V8H21M21,16V11H7V16H21M21,4A2,2 0 0,1 23,6V16A2,2 0 0,1 21,18H7C5.89,18 5,17.1 5,16V6C5,4.89 5.89,4 7,4H21M3,20H18V22H3A2,2 0 0,1 1,20V9H3V20Z" /></g><g id="credit-card-off"><path d="M0.93,4.2L2.21,2.93L20,20.72L18.73,22L16.73,20H4C2.89,20 2,19.1 2,18V6C2,5.78 2.04,5.57 2.11,5.38L0.93,4.2M20,8V6H7.82L5.82,4H20A2,2 0 0,1 22,6V18C22,18.6 21.74,19.13 21.32,19.5L19.82,18H20V12H13.82L9.82,8H20M4,8H4.73L4,7.27V8M4,12V18H14.73L8.73,12H4Z" /></g><g id="credit-card-plus"><path d="M21,18H24V20H21V23H19V20H16V18H19V15H21V18M19,8V6H3V8H19M19,12H3V18H14V20H3C1.89,20 1,19.1 1,18V6C1,4.89 1.89,4 3,4H19A2,2 0 0,1 21,6V13H19V12Z" /></g><g id="credit-card-scan"><path d="M2,4H6V2H2A2,2 0 0,0 0,4V8H2V4M22,2H18V4H22V8H24V4A2,2 0 0,0 22,2M2,16H0V20A2,2 0 0,0 2,22H6V20H2V16M22,20H18V22H22A2,2 0 0,0 24,20V16H22V20M4,8V16A2,2 0 0,0 6,18H18A2,2 0 0,0 20,16V8A2,2 0 0,0 18,6H6A2,2 0 0,0 4,8M6,16V12H18V16H6M18,8V10H6V8H18Z" /></g><g id="crop"><path d="M7,17V1H5V5H1V7H5V17A2,2 0 0,0 7,19H17V23H19V19H23V17M17,15H19V7C19,5.89 18.1,5 17,5H9V7H17V15Z" /></g><g id="crop-free"><path d="M19,3H15V5H19V9H21V5C21,3.89 20.1,3 19,3M19,19H15V21H19A2,2 0 0,0 21,19V15H19M5,15H3V19A2,2 0 0,0 5,21H9V19H5M3,5V9H5V5H9V3H5A2,2 0 0,0 3,5Z" /></g><g id="crop-landscape"><path d="M19,17H5V7H19M19,5H5A2,2 0 0,0 3,7V17A2,2 0 0,0 5,19H19A2,2 0 0,0 21,17V7C21,5.89 20.1,5 19,5Z" /></g><g id="crop-portrait"><path d="M17,19H7V5H17M17,3H7A2,2 0 0,0 5,5V19A2,2 0 0,0 7,21H17A2,2 0 0,0 19,19V5C19,3.89 18.1,3 17,3Z" /></g><g id="crop-rotate"><path d="M7.47,21.5C4.2,19.93 1.86,16.76 1.5,13H0C0.5,19.16 5.66,24 11.95,24C12.18,24 12.39,24 12.61,23.97L8.8,20.15L7.47,21.5M12.05,0C11.82,0 11.61,0 11.39,0.04L15.2,3.85L16.53,2.5C19.8,4.07 22.14,7.24 22.5,11H24C23.5,4.84 18.34,0 12.05,0M16,14H18V8C18,6.89 17.1,6 16,6H10V8H16V14M8,16V4H6V6H4V8H6V16A2,2 0 0,0 8,18H16V20H18V18H20V16H8Z" /></g><g id="crop-square"><path d="M18,18H6V6H18M18,4H6A2,2 0 0,0 4,6V18A2,2 0 0,0 6,20H18A2,2 0 0,0 20,18V6C20,4.89 19.1,4 18,4Z" /></g><g id="crosshairs"><path d="M3.05,13H1V11H3.05C3.5,6.83 6.83,3.5 11,3.05V1H13V3.05C17.17,3.5 20.5,6.83 20.95,11H23V13H20.95C20.5,17.17 17.17,20.5 13,20.95V23H11V20.95C6.83,20.5 3.5,17.17 3.05,13M12,5A7,7 0 0,0 5,12A7,7 0 0,0 12,19A7,7 0 0,0 19,12A7,7 0 0,0 12,5Z" /></g><g id="crosshairs-gps"><path d="M12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8M3.05,13H1V11H3.05C3.5,6.83 6.83,3.5 11,3.05V1H13V3.05C17.17,3.5 20.5,6.83 20.95,11H23V13H20.95C20.5,17.17 17.17,20.5 13,20.95V23H11V20.95C6.83,20.5 3.5,17.17 3.05,13M12,5A7,7 0 0,0 5,12A7,7 0 0,0 12,19A7,7 0 0,0 19,12A7,7 0 0,0 12,5Z" /></g><g id="crown"><path d="M5,16L3,5L8.5,12L12,5L15.5,12L21,5L19,16H5M19,19A1,1 0 0,1 18,20H6A1,1 0 0,1 5,19V18H19V19Z" /></g><g id="cube"><path d="M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L6.04,7.5L12,10.85L17.96,7.5L12,4.15Z" /></g><g id="cube-outline"><path d="M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L6.04,7.5L12,10.85L17.96,7.5L12,4.15M5,15.91L11,19.29V12.58L5,9.21V15.91M19,15.91V9.21L13,12.58V19.29L19,15.91Z" /></g><g id="cube-send"><path d="M16,4L9,8.04V15.96L16,20L23,15.96V8.04M16,6.31L19.8,8.5L16,10.69L12.21,8.5M0,7V9H7V7M11,10.11L15,12.42V17.11L11,14.81M21,10.11V14.81L17,17.11V12.42M2,11V13H7V11M4,15V17H7V15" /></g><g id="cube-unfolded"><path d="M6,9V4H13V9H23V16H18V21H11V16H1V9H6M16,16H13V19H16V16M8,9H11V6H8V9M6,14V11H3V14H6M18,11V14H21V11H18M13,11V14H16V11H13M8,11V14H11V11H8Z" /></g><g id="cup"><path d="M18.32,8H5.67L5.23,4H18.77M3,2L5,20.23C5.13,21.23 5.97,22 7,22H17C18,22 18.87,21.23 19,20.23L21,2H3Z" /></g><g id="cup-off"><path d="M1,4.27L2.28,3L21,21.72L19.73,23L18.27,21.54C17.93,21.83 17.5,22 17,22H7C5.97,22 5.13,21.23 5,20.23L3.53,6.8L1,4.27M18.32,8L18.77,4H5.82L3.82,2H21L19.29,17.47L9.82,8H18.32Z" /></g><g id="cup-water"><path d="M18.32,8H5.67L5.23,4H18.77M12,19A3,3 0 0,1 9,16C9,14 12,10.6 12,10.6C12,10.6 15,14 15,16A3,3 0 0,1 12,19M3,2L5,20.23C5.13,21.23 5.97,22 7,22H17C18,22 18.87,21.23 19,20.23L21,2H3Z" /></g><g id="currency-btc"><path d="M4.5,5H8V2H10V5H11.5V2H13.5V5C19,5 19,11 16,11.25C20,11 21,19 13.5,19V22H11.5V19H10V22H8V19H4.5L5,17H6A1,1 0 0,0 7,16V8A1,1 0 0,0 6,7H4.5V5M10,7V11C10,11 14.5,11.25 14.5,9C14.5,6.75 10,7 10,7M10,12.5V17C10,17 15.5,17 15.5,14.75C15.5,12.5 10,12.5 10,12.5Z" /></g><g id="currency-eur"><path d="M7.07,11L7,12L7.07,13H17.35L16.5,15H7.67C8.8,17.36 11.21,19 14,19C16.23,19 18.22,17.96 19.5,16.33V19.12C18,20.3 16.07,21 14,21C10.08,21 6.75,18.5 5.5,15H2L3,13H5.05L5,12L5.05,11H2L3,9H5.5C6.75,5.5 10.08,3 14,3C16.5,3 18.8,4.04 20.43,5.71L19.57,7.75C18.29,6.08 16.27,5 14,5C11.21,5 8.8,6.64 7.67,9H19.04L18.19,11H7.07Z" /></g><g id="currency-gbp"><path d="M6.5,21V19.75C7.44,19.29 8.24,18.57 8.81,17.7C9.38,16.83 9.67,15.85 9.68,14.75L9.66,13.77L9.57,13H7V11H9.4C9.25,10.17 9.16,9.31 9.13,8.25C9.16,6.61 9.64,5.33 10.58,4.41C11.5,3.5 12.77,3 14.32,3C15.03,3 15.64,3.07 16.13,3.2C16.63,3.32 17,3.47 17.31,3.65L16.76,5.39C16.5,5.25 16.19,5.12 15.79,5C15.38,4.9 14.89,4.85 14.32,4.84C13.25,4.86 12.5,5.19 12,5.83C11.5,6.46 11.29,7.28 11.3,8.28L11.4,9.77L11.6,11H15.5V13H11.79C11.88,14 11.84,15 11.65,15.96C11.35,17.16 10.74,18.18 9.83,19H18V21H6.5Z" /></g><g id="currency-inr"><path d="M8,3H18L17,5H13.74C14.22,5.58 14.58,6.26 14.79,7H18L17,9H15C14.75,11.57 12.74,13.63 10.2,13.96V14H9.5L15.5,21H13L7,14V12H9.5V12C11.26,12 12.72,10.7 12.96,9H7L8,7H12.66C12.1,5.82 10.9,5 9.5,5H7L8,3Z" /></g><g id="currency-ngn"><path d="M4,9H6V3H8L11.42,9H16V3H18V9H20V11H18V13H20V15H18V21H16L12.57,15H8V21H6V15H4V13H6V11H4V9M8,9H9.13L8,7.03V9M8,11V13H11.42L10.28,11H8M16,17V15H14.85L16,17M12.56,11L13.71,13H16V11H12.56Z" /></g><g id="currency-rub"><path d="M6,10H7V3H14.5C17,3 19,5 19,7.5C19,10 17,12 14.5,12H9V14H15V16H9V21H7V16H6V14H7V12H6V10M14.5,5H9V10H14.5A2.5,2.5 0 0,0 17,7.5A2.5,2.5 0 0,0 14.5,5Z" /></g><g id="currency-try"><path d="M19,12A9,9 0 0,1 10,21H8V12.77L5,13.87V11.74L8,10.64V8.87L5,9.96V7.84L8,6.74V3H10V6L15,4.2V6.32L10,8.14V9.92L15,8.1V10.23L10,12.05V19A7,7 0 0,0 17,12H19Z" /></g><g id="currency-usd"><path d="M11.8,10.9C9.53,10.31 8.8,9.7 8.8,8.75C8.8,7.66 9.81,6.9 11.5,6.9C13.28,6.9 13.94,7.75 14,9H16.21C16.14,7.28 15.09,5.7 13,5.19V3H10V5.16C8.06,5.58 6.5,6.84 6.5,8.77C6.5,11.08 8.41,12.23 11.2,12.9C13.7,13.5 14.2,14.38 14.2,15.31C14.2,16 13.71,17.1 11.5,17.1C9.44,17.1 8.63,16.18 8.5,15H6.32C6.44,17.19 8.08,18.42 10,18.83V21H13V18.85C14.95,18.5 16.5,17.35 16.5,15.3C16.5,12.46 14.07,11.5 11.8,10.9Z" /></g><g id="currency-usd-off"><path d="M12.5,6.9C14.28,6.9 14.94,7.75 15,9H17.21C17.14,7.28 16.09,5.7 14,5.19V3H11V5.16C10.47,5.28 9.97,5.46 9.5,5.7L11,7.17C11.4,7 11.9,6.9 12.5,6.9M5.33,4.06L4.06,5.33L7.5,8.77C7.5,10.85 9.06,12 11.41,12.68L14.92,16.19C14.58,16.67 13.87,17.1 12.5,17.1C10.44,17.1 9.63,16.18 9.5,15H7.32C7.44,17.19 9.08,18.42 11,18.83V21H14V18.85C14.96,18.67 15.82,18.3 16.45,17.73L18.67,19.95L19.94,18.68L5.33,4.06Z" /></g><g id="cursor-default"><path d="M13.64,21.97C13.14,22.21 12.54,22 12.31,21.5L10.13,16.76L7.62,18.78C7.45,18.92 7.24,19 7,19A1,1 0 0,1 6,18V3A1,1 0 0,1 7,2C7.24,2 7.47,2.09 7.64,2.23L7.65,2.22L19.14,11.86C19.57,12.22 19.62,12.85 19.27,13.27C19.12,13.45 18.91,13.57 18.7,13.61L15.54,14.23L17.74,18.96C18,19.46 17.76,20.05 17.26,20.28L13.64,21.97Z" /></g><g id="cursor-default-outline"><path d="M10.07,14.27C10.57,14.03 11.16,14.25 11.4,14.75L13.7,19.74L15.5,18.89L13.19,13.91C12.95,13.41 13.17,12.81 13.67,12.58L13.95,12.5L16.25,12.05L8,5.12V15.9L9.82,14.43L10.07,14.27M13.64,21.97C13.14,22.21 12.54,22 12.31,21.5L10.13,16.76L7.62,18.78C7.45,18.92 7.24,19 7,19A1,1 0 0,1 6,18V3A1,1 0 0,1 7,2C7.24,2 7.47,2.09 7.64,2.23L7.65,2.22L19.14,11.86C19.57,12.22 19.62,12.85 19.27,13.27C19.12,13.45 18.91,13.57 18.7,13.61L15.54,14.23L17.74,18.96C18,19.46 17.76,20.05 17.26,20.28L13.64,21.97Z" /></g><g id="cursor-move"><path d="M13,6V11H18V7.75L22.25,12L18,16.25V13H13V18H16.25L12,22.25L7.75,18H11V13H6V16.25L1.75,12L6,7.75V11H11V6H7.75L12,1.75L16.25,6H13Z" /></g><g id="cursor-pointer"><path d="M10,2A2,2 0 0,1 12,4V8.5C12,8.5 14,8.25 14,9.25C14,9.25 16,9 16,10C16,10 18,9.75 18,10.75C18,10.75 20,10.5 20,11.5V15C20,16 17,21 17,22H9C9,22 7,15 4,13C4,13 3,7 8,12V4A2,2 0 0,1 10,2Z" /></g><g id="cursor-text"><path d="M13,19A1,1 0 0,0 14,20H16V22H13.5C12.95,22 12,21.55 12,21C12,21.55 11.05,22 10.5,22H8V20H10A1,1 0 0,0 11,19V5A1,1 0 0,0 10,4H8V2H10.5C11.05,2 12,2.45 12,3C12,2.45 12.95,2 13.5,2H16V4H14A1,1 0 0,0 13,5V19Z" /></g><g id="database"><path d="M12,3C7.58,3 4,4.79 4,7C4,9.21 7.58,11 12,11C16.42,11 20,9.21 20,7C20,4.79 16.42,3 12,3M4,9V12C4,14.21 7.58,16 12,16C16.42,16 20,14.21 20,12V9C20,11.21 16.42,13 12,13C7.58,13 4,11.21 4,9M4,14V17C4,19.21 7.58,21 12,21C16.42,21 20,19.21 20,17V14C20,16.21 16.42,18 12,18C7.58,18 4,16.21 4,14Z" /></g><g id="database-minus"><path d="M9,3C4.58,3 1,4.79 1,7C1,9.21 4.58,11 9,11C13.42,11 17,9.21 17,7C17,4.79 13.42,3 9,3M1,9V12C1,14.21 4.58,16 9,16C13.42,16 17,14.21 17,12V9C17,11.21 13.42,13 9,13C4.58,13 1,11.21 1,9M1,14V17C1,19.21 4.58,21 9,21C10.41,21 11.79,20.81 13,20.46V17.46C11.79,17.81 10.41,18 9,18C4.58,18 1,16.21 1,14M15,17V19H23V17" /></g><g id="database-plus"><path d="M9,3C4.58,3 1,4.79 1,7C1,9.21 4.58,11 9,11C13.42,11 17,9.21 17,7C17,4.79 13.42,3 9,3M1,9V12C1,14.21 4.58,16 9,16C13.42,16 17,14.21 17,12V9C17,11.21 13.42,13 9,13C4.58,13 1,11.21 1,9M1,14V17C1,19.21 4.58,21 9,21C10.41,21 11.79,20.81 13,20.46V17.46C11.79,17.81 10.41,18 9,18C4.58,18 1,16.21 1,14M18,14V17H15V19H18V22H20V19H23V17H20V14" /></g><g id="debug-step-into"><path d="M12,22A2,2 0 0,1 10,20A2,2 0 0,1 12,18A2,2 0 0,1 14,20A2,2 0 0,1 12,22M13,2V13L17.5,8.5L18.92,9.92L12,16.84L5.08,9.92L6.5,8.5L11,13V2H13Z" /></g><g id="debug-step-out"><path d="M12,22A2,2 0 0,1 10,20A2,2 0 0,1 12,18A2,2 0 0,1 14,20A2,2 0 0,1 12,22M13,16H11V6L6.5,10.5L5.08,9.08L12,2.16L18.92,9.08L17.5,10.5L13,6V16Z" /></g><g id="debug-step-over"><path d="M12,14A2,2 0 0,1 14,16A2,2 0 0,1 12,18A2,2 0 0,1 10,16A2,2 0 0,1 12,14M23.46,8.86L21.87,15.75L15,14.16L18.8,11.78C17.39,9.5 14.87,8 12,8C8.05,8 4.77,10.86 4.12,14.63L2.15,14.28C2.96,9.58 7.06,6 12,6C15.58,6 18.73,7.89 20.5,10.72L23.46,8.86Z" /></g><g id="decimal-decrease"><path d="M12,17L15,20V18H21V16H15V14L12,17M9,5A3,3 0 0,1 12,8V11A3,3 0 0,1 9,14A3,3 0 0,1 6,11V8A3,3 0 0,1 9,5M9,7A1,1 0 0,0 8,8V11A1,1 0 0,0 9,12A1,1 0 0,0 10,11V8A1,1 0 0,0 9,7M4,12A1,1 0 0,1 5,13A1,1 0 0,1 4,14A1,1 0 0,1 3,13A1,1 0 0,1 4,12Z" /></g><g id="decimal-increase"><path d="M22,17L19,20V18H13V16H19V14L22,17M9,5A3,3 0 0,1 12,8V11A3,3 0 0,1 9,14A3,3 0 0,1 6,11V8A3,3 0 0,1 9,5M9,7A1,1 0 0,0 8,8V11A1,1 0 0,0 9,12A1,1 0 0,0 10,11V8A1,1 0 0,0 9,7M16,5A3,3 0 0,1 19,8V11A3,3 0 0,1 16,14A3,3 0 0,1 13,11V8A3,3 0 0,1 16,5M16,7A1,1 0 0,0 15,8V11A1,1 0 0,0 16,12A1,1 0 0,0 17,11V8A1,1 0 0,0 16,7M4,12A1,1 0 0,1 5,13A1,1 0 0,1 4,14A1,1 0 0,1 3,13A1,1 0 0,1 4,12Z" /></g><g id="delete"><path d="M19,4H15.5L14.5,3H9.5L8.5,4H5V6H19M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19Z" /></g><g id="delete-circle"><path d="M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M17,7H14.5L13.5,6H10.5L9.5,7H7V9H17V7M9,18H15A1,1 0 0,0 16,17V10H8V17A1,1 0 0,0 9,18Z" /></g><g id="delete-empty"><path d="M20.37,8.91L19.37,10.64L7.24,3.64L8.24,1.91L11.28,3.66L12.64,3.29L16.97,5.79L17.34,7.16L20.37,8.91M6,19V7H11.07L18,11V19A2,2 0 0,1 16,21H8A2,2 0 0,1 6,19Z" /></g><g id="delete-forever"><path d="M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19M8.46,11.88L9.87,10.47L12,12.59L14.12,10.47L15.53,11.88L13.41,14L15.53,16.12L14.12,17.53L12,15.41L9.88,17.53L8.47,16.12L10.59,14L8.46,11.88M15.5,4L14.5,3H9.5L8.5,4H5V6H19V4H15.5Z" /></g><g id="delete-sweep"><path d="M15,16H19V18H15V16M15,8H22V10H15V8M15,12H21V14H15V12M3,18A2,2 0 0,0 5,20H11A2,2 0 0,0 13,18V8H3V18M14,5H11L10,4H6L5,5H2V7H14V5Z" /></g><g id="delete-variant"><path d="M21.03,3L18,20.31C17.83,21.27 17,22 16,22H8C7,22 6.17,21.27 6,20.31L2.97,3H21.03M5.36,5L8,20H16L18.64,5H5.36M9,18V14H13V18H9M13,13.18L9.82,10L13,6.82L16.18,10L13,13.18Z" /></g><g id="delta"><path d="M12,7.77L18.39,18H5.61L12,7.77M12,4L2,20H22" /></g><g id="deskphone"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M15,5V19H19V5H15M5,5V9H13V5H5M5,11V13H7V11H5M8,11V13H10V11H8M11,11V13H13V11H11M5,14V16H7V14H5M8,14V16H10V14H8M11,14V16H13V14H11M11,17V19H13V17H11M8,17V19H10V17H8M5,17V19H7V17H5Z" /></g><g id="desktop-mac"><path d="M21,14H3V4H21M21,2H3C1.89,2 1,2.89 1,4V16A2,2 0 0,0 3,18H10L8,21V22H16V21L14,18H21A2,2 0 0,0 23,16V4C23,2.89 22.1,2 21,2Z" /></g><g id="desktop-tower"><path d="M8,2H16A2,2 0 0,1 18,4V20A2,2 0 0,1 16,22H8A2,2 0 0,1 6,20V4A2,2 0 0,1 8,2M8,4V6H16V4H8M16,8H8V10H16V8M16,18H14V20H16V18Z" /></g><g id="details"><path d="M6.38,6H17.63L12,16L6.38,6M3,4L12,20L21,4H3Z" /></g><g id="developer-board"><path d="M22,9V7H20V5A2,2 0 0,0 18,3H4A2,2 0 0,0 2,5V19A2,2 0 0,0 4,21H18A2,2 0 0,0 20,19V17H22V15H20V13H22V11H20V9H22M18,19H4V5H18V19M6,13H11V17H6V13M12,7H16V10H12V7M6,7H11V12H6V7M12,11H16V17H12V11Z" /></g><g id="deviantart"><path d="M6,6H12L14,2H18V6L14.5,13H18V18H12L10,22H6V18L9.5,11H6V6Z" /></g><g id="dialpad"><path d="M12,19A2,2 0 0,0 10,21A2,2 0 0,0 12,23A2,2 0 0,0 14,21A2,2 0 0,0 12,19M6,1A2,2 0 0,0 4,3A2,2 0 0,0 6,5A2,2 0 0,0 8,3A2,2 0 0,0 6,1M6,7A2,2 0 0,0 4,9A2,2 0 0,0 6,11A2,2 0 0,0 8,9A2,2 0 0,0 6,7M6,13A2,2 0 0,0 4,15A2,2 0 0,0 6,17A2,2 0 0,0 8,15A2,2 0 0,0 6,13M18,5A2,2 0 0,0 20,3A2,2 0 0,0 18,1A2,2 0 0,0 16,3A2,2 0 0,0 18,5M12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17A2,2 0 0,0 14,15A2,2 0 0,0 12,13M18,13A2,2 0 0,0 16,15A2,2 0 0,0 18,17A2,2 0 0,0 20,15A2,2 0 0,0 18,13M18,7A2,2 0 0,0 16,9A2,2 0 0,0 18,11A2,2 0 0,0 20,9A2,2 0 0,0 18,7M12,7A2,2 0 0,0 10,9A2,2 0 0,0 12,11A2,2 0 0,0 14,9A2,2 0 0,0 12,7M12,1A2,2 0 0,0 10,3A2,2 0 0,0 12,5A2,2 0 0,0 14,3A2,2 0 0,0 12,1Z" /></g><g id="diamond"><path d="M16,9H19L14,16M10,9H14L12,17M5,9H8L10,16M15,4H17L19,7H16M11,4H13L14,7H10M7,4H9L8,7H5M6,2L2,8L12,22L22,8L18,2H6Z" /></g><g id="dice-1"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z" /></g><g id="dice-2"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M7,5A2,2 0 0,0 5,7A2,2 0 0,0 7,9A2,2 0 0,0 9,7A2,2 0 0,0 7,5M17,15A2,2 0 0,0 15,17A2,2 0 0,0 17,19A2,2 0 0,0 19,17A2,2 0 0,0 17,15Z" /></g><g id="dice-3"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10M7,5A2,2 0 0,0 5,7A2,2 0 0,0 7,9A2,2 0 0,0 9,7A2,2 0 0,0 7,5M17,15A2,2 0 0,0 15,17A2,2 0 0,0 17,19A2,2 0 0,0 19,17A2,2 0 0,0 17,15Z" /></g><g id="dice-4"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M7,5A2,2 0 0,0 5,7A2,2 0 0,0 7,9A2,2 0 0,0 9,7A2,2 0 0,0 7,5M17,15A2,2 0 0,0 15,17A2,2 0 0,0 17,19A2,2 0 0,0 19,17A2,2 0 0,0 17,15M17,5A2,2 0 0,0 15,7A2,2 0 0,0 17,9A2,2 0 0,0 19,7A2,2 0 0,0 17,5M7,15A2,2 0 0,0 5,17A2,2 0 0,0 7,19A2,2 0 0,0 9,17A2,2 0 0,0 7,15Z" /></g><g id="dice-5"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M7,5A2,2 0 0,0 5,7A2,2 0 0,0 7,9A2,2 0 0,0 9,7A2,2 0 0,0 7,5M17,15A2,2 0 0,0 15,17A2,2 0 0,0 17,19A2,2 0 0,0 19,17A2,2 0 0,0 17,15M17,5A2,2 0 0,0 15,7A2,2 0 0,0 17,9A2,2 0 0,0 19,7A2,2 0 0,0 17,5M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10M7,15A2,2 0 0,0 5,17A2,2 0 0,0 7,19A2,2 0 0,0 9,17A2,2 0 0,0 7,15Z" /></g><g id="dice-6"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M7,5A2,2 0 0,0 5,7A2,2 0 0,0 7,9A2,2 0 0,0 9,7A2,2 0 0,0 7,5M17,15A2,2 0 0,0 15,17A2,2 0 0,0 17,19A2,2 0 0,0 19,17A2,2 0 0,0 17,15M17,10A2,2 0 0,0 15,12A2,2 0 0,0 17,14A2,2 0 0,0 19,12A2,2 0 0,0 17,10M17,5A2,2 0 0,0 15,7A2,2 0 0,0 17,9A2,2 0 0,0 19,7A2,2 0 0,0 17,5M7,10A2,2 0 0,0 5,12A2,2 0 0,0 7,14A2,2 0 0,0 9,12A2,2 0 0,0 7,10M7,15A2,2 0 0,0 5,17A2,2 0 0,0 7,19A2,2 0 0,0 9,17A2,2 0 0,0 7,15Z" /></g><g id="dice-d20"><path d="M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15M14.93,8.27A2.57,2.57 0 0,1 17.5,10.84V13.5C17.5,14.9 16.35,16.05 14.93,16.05C13.5,16.05 12.36,14.9 12.36,13.5V10.84A2.57,2.57 0 0,1 14.93,8.27M14.92,9.71C14.34,9.71 13.86,10.18 13.86,10.77V13.53C13.86,14.12 14.34,14.6 14.92,14.6C15.5,14.6 16,14.12 16,13.53V10.77C16,10.18 15.5,9.71 14.92,9.71M11.45,14.76V15.96L6.31,15.93V14.91C6.31,14.91 9.74,11.58 9.75,10.57C9.75,9.33 8.73,9.46 8.73,9.46C8.73,9.46 7.75,9.5 7.64,10.71L6.14,10.76C6.14,10.76 6.18,8.26 8.83,8.26C11.2,8.26 11.23,10.04 11.23,10.5C11.23,12.18 8.15,14.77 8.15,14.77L11.45,14.76Z" /></g><g id="dice-d4"><path d="M13.43,15.15H14.29V16.36H13.43V18H11.92V16.36H8.82L8.75,15.41L11.91,10.42H13.43V15.15M10.25,15.15H11.92V12.47L10.25,15.15M22,21H2C1.64,21 1.31,20.81 1.13,20.5C0.95,20.18 0.96,19.79 1.15,19.5L11.15,3C11.5,2.38 12.5,2.38 12.86,3L22.86,19.5C23.04,19.79 23.05,20.18 22.87,20.5C22.69,20.81 22.36,21 22,21M3.78,19H20.23L12,5.43L3.78,19Z" /></g><g id="dice-d6"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5M13.39,9.53C10.89,9.5 10.86,11.53 10.86,11.53C10.86,11.53 11.41,10.87 12.53,10.87C13.19,10.87 14.5,11.45 14.55,13.41C14.61,15.47 12.77,16 12.77,16C12.77,16 9.27,16.86 9.3,12.66C9.33,7.94 13.39,8.33 13.39,8.33V9.53M11.95,12.1C11.21,12 10.83,12.78 10.83,12.78L10.85,13.5C10.85,14.27 11.39,14.83 12,14.83C12.61,14.83 13.05,14.27 13.05,13.5C13.05,12.73 12.56,12.1 11.95,12.1Z" /></g><g id="dice-d8"><path d="M12,23C11.67,23 11.37,22.84 11.18,22.57L4.18,12.57C3.94,12.23 3.94,11.77 4.18,11.43L11.18,1.43C11.55,0.89 12.45,0.89 12.82,1.43L19.82,11.43C20.06,11.77 20.06,12.23 19.82,12.57L12.82,22.57C12.63,22.84 12.33,23 12,23M6.22,12L12,20.26L17.78,12L12,3.74L6.22,12M12,8.25C13.31,8.25 14.38,9.2 14.38,10.38C14.38,11.07 14,11.68 13.44,12.07C14.14,12.46 14.6,13.13 14.6,13.9C14.6,15.12 13.44,16.1 12,16.1C10.56,16.1 9.4,15.12 9.4,13.9C9.4,13.13 9.86,12.46 10.56,12.07C10,11.68 9.63,11.07 9.63,10.38C9.63,9.2 10.69,8.25 12,8.25M12,12.65A1.1,1.1 0 0,0 10.9,13.75A1.1,1.1 0 0,0 12,14.85A1.1,1.1 0 0,0 13.1,13.75A1.1,1.1 0 0,0 12,12.65M12,9.5C11.5,9.5 11.1,9.95 11.1,10.5C11.1,11.05 11.5,11.5 12,11.5C12.5,11.5 12.9,11.05 12.9,10.5C12.9,9.95 12.5,9.5 12,9.5Z" /></g><g id="dictionary"><path d="M5.81,2C4.83,2.09 4,3 4,4V20C4,21.05 4.95,22 6,22H18C19.05,22 20,21.05 20,20V4C20,2.89 19.1,2 18,2H12V9L9.5,7.5L7,9V2H6C5.94,2 5.87,2 5.81,2M12,13H13A1,1 0 0,1 14,14V18H13V16H12V18H11V14A1,1 0 0,1 12,13M12,14V15H13V14H12M15,15H18V16L16,19H18V20H15V19L17,16H15V15Z" /></g><g id="directions"><path d="M14,14.5V12H10V15H8V11A1,1 0 0,1 9,10H14V7.5L17.5,11M21.71,11.29L12.71,2.29H12.7C12.31,1.9 11.68,1.9 11.29,2.29L2.29,11.29C1.9,11.68 1.9,12.32 2.29,12.71L11.29,21.71C11.68,22.09 12.31,22.1 12.71,21.71L21.71,12.71C22.1,12.32 22.1,11.68 21.71,11.29Z" /></g><g id="directions-fork"><path d="M3,4V12.5L6,9.5L9,13C10,14 10,15 10,15V21H14V14C14,14 14,13 13.47,12C12.94,11 12,10 12,10L9,6.58L11.5,4M18,4L13.54,8.47L14,9C14,9 14.93,10 15.47,11C15.68,11.4 15.8,11.79 15.87,12.13L21,7" /></g><g id="discord"><path d="M22,24L16.75,19L17.38,21H4.5A2.5,2.5 0 0,1 2,18.5V3.5A2.5,2.5 0 0,1 4.5,1H19.5A2.5,2.5 0 0,1 22,3.5V24M12,6.8C9.32,6.8 7.44,7.95 7.44,7.95C8.47,7.03 10.27,6.5 10.27,6.5L10.1,6.33C8.41,6.36 6.88,7.53 6.88,7.53C5.16,11.12 5.27,14.22 5.27,14.22C6.67,16.03 8.75,15.9 8.75,15.9L9.46,15C8.21,14.73 7.42,13.62 7.42,13.62C7.42,13.62 9.3,14.9 12,14.9C14.7,14.9 16.58,13.62 16.58,13.62C16.58,13.62 15.79,14.73 14.54,15L15.25,15.9C15.25,15.9 17.33,16.03 18.73,14.22C18.73,14.22 18.84,11.12 17.12,7.53C17.12,7.53 15.59,6.36 13.9,6.33L13.73,6.5C13.73,6.5 15.53,7.03 16.56,7.95C16.56,7.95 14.68,6.8 12,6.8M9.93,10.59C10.58,10.59 11.11,11.16 11.1,11.86C11.1,12.55 10.58,13.13 9.93,13.13C9.29,13.13 8.77,12.55 8.77,11.86C8.77,11.16 9.28,10.59 9.93,10.59M14.1,10.59C14.75,10.59 15.27,11.16 15.27,11.86C15.27,12.55 14.75,13.13 14.1,13.13C13.46,13.13 12.94,12.55 12.94,11.86C12.94,11.16 13.45,10.59 14.1,10.59Z" /></g><g id="disk"><path d="M12,14C10.89,14 10,13.1 10,12C10,10.89 10.89,10 12,10C13.11,10 14,10.89 14,12A2,2 0 0,1 12,14M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z" /></g><g id="disk-alert"><path d="M10,14C8.89,14 8,13.1 8,12C8,10.89 8.89,10 10,10A2,2 0 0,1 12,12A2,2 0 0,1 10,14M10,4A8,8 0 0,0 2,12A8,8 0 0,0 10,20A8,8 0 0,0 18,12A8,8 0 0,0 10,4M20,12H22V7H20M20,16H22V14H20V16Z" /></g><g id="disqus"><path d="M12.08,22C9.63,22 7.39,21.11 5.66,19.63L1.41,20.21L3.05,16.15C2.5,14.88 2.16,13.5 2.16,12C2.16,6.5 6.6,2 12.08,2C17.56,2 22,6.5 22,12C22,17.5 17.56,22 12.08,22M17.5,11.97V11.94C17.5,9.06 15.46,7 11.95,7H8.16V17H11.9C15.43,17 17.5,14.86 17.5,11.97M12,14.54H10.89V9.46H12C13.62,9.46 14.7,10.39 14.7,12V12C14.7,13.63 13.62,14.54 12,14.54Z" /></g><g id="disqus-outline"><path d="M11.9,14.5H10.8V9.5H11.9C13.5,9.5 14.6,10.4 14.6,12C14.6,13.6 13.5,14.5 11.9,14.5M11.9,7H8.1V17H11.8C15.3,17 17.4,14.9 17.4,12V12C17.4,9.1 15.4,7 11.9,7M12,20C10.1,20 8.3,19.3 6.9,18.1L6.2,17.5L4.5,17.7L5.2,16.1L4.9,15.3C4.4,14.2 4.2,13.1 4.2,11.9C4.2,7.5 7.8,3.9 12.1,3.9C16.4,3.9 19.9,7.6 19.9,12C19.9,16.4 16.3,20 12,20M12,2C6.5,2 2.1,6.5 2.1,12C2.1,13.5 2.4,14.9 3,16.2L1.4,20.3L5.7,19.7C7.4,21.2 9.7,22.1 12.1,22.1C17.6,22.1 22,17.6 22,12.1C22,6.6 17.5,2 12,2Z" /></g><g id="division"><path d="M19,13H5V11H19V13M12,5A2,2 0 0,1 14,7A2,2 0 0,1 12,9A2,2 0 0,1 10,7A2,2 0 0,1 12,5M12,15A2,2 0 0,1 14,17A2,2 0 0,1 12,19A2,2 0 0,1 10,17A2,2 0 0,1 12,15Z" /></g><g id="division-box"><path d="M17,13V11H7V13H17M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19M12,7A1,1 0 0,0 11,8A1,1 0 0,0 12,9A1,1 0 0,0 13,8A1,1 0 0,0 12,7M12,15A1,1 0 0,0 11,16A1,1 0 0,0 12,17A1,1 0 0,0 13,16A1,1 0 0,0 12,15Z" /></g><g id="dna"><path d="M4,2H6V4C6,5.44 6.68,6.61 7.88,7.78C8.74,8.61 9.89,9.41 11.09,10.2L9.26,11.39C8.27,10.72 7.31,10 6.5,9.21C5.07,7.82 4,6.1 4,4V2M18,2H20V4C20,6.1 18.93,7.82 17.5,9.21C16.09,10.59 14.29,11.73 12.54,12.84C10.79,13.96 9.09,15.05 7.88,16.22C6.68,17.39 6,18.56 6,20V22H4V20C4,17.9 5.07,16.18 6.5,14.79C7.91,13.41 9.71,12.27 11.46,11.16C13.21,10.04 14.91,8.95 16.12,7.78C17.32,6.61 18,5.44 18,4V2M14.74,12.61C15.73,13.28 16.69,14 17.5,14.79C18.93,16.18 20,17.9 20,20V22H18V20C18,18.56 17.32,17.39 16.12,16.22C15.26,15.39 14.11,14.59 12.91,13.8L14.74,12.61M7,3H17V4L16.94,4.5H7.06L7,4V3M7.68,6H16.32C16.08,6.34 15.8,6.69 15.42,7.06L14.91,7.5H9.07L8.58,7.06C8.2,6.69 7.92,6.34 7.68,6M9.09,16.5H14.93L15.42,16.94C15.8,17.31 16.08,17.66 16.32,18H7.68C7.92,17.66 8.2,17.31 8.58,16.94L9.09,16.5M7.06,19.5H16.94L17,20V21H7V20L7.06,19.5Z" /></g><g id="dns"><path d="M7,9A2,2 0 0,1 5,7A2,2 0 0,1 7,5A2,2 0 0,1 9,7A2,2 0 0,1 7,9M20,3H4A1,1 0 0,0 3,4V10A1,1 0 0,0 4,11H20A1,1 0 0,0 21,10V4A1,1 0 0,0 20,3M7,19A2,2 0 0,1 5,17A2,2 0 0,1 7,15A2,2 0 0,1 9,17A2,2 0 0,1 7,19M20,13H4A1,1 0 0,0 3,14V20A1,1 0 0,0 4,21H20A1,1 0 0,0 21,20V14A1,1 0 0,0 20,13Z" /></g><g id="do-not-disturb"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M17,13H7V11H17V13Z" /></g><g id="do-not-disturb-off"><path d="M17,11V13H15.54L20.22,17.68C21.34,16.07 22,14.11 22,12A10,10 0 0,0 12,2C9.89,2 7.93,2.66 6.32,3.78L13.54,11H17M2.27,2.27L1,3.54L3.78,6.32C2.66,7.93 2,9.89 2,12A10,10 0 0,0 12,22C14.11,22 16.07,21.34 17.68,20.22L20.46,23L21.73,21.73L2.27,2.27M7,13V11H8.46L10.46,13H7Z" /></g><g id="dolby"><path d="M2,5V19H22V5H2M6,17H4V7H6C8.86,7.09 11.1,9.33 11,12C11.1,14.67 8.86,16.91 6,17M20,17H18C15.14,16.91 12.9,14.67 13,12C12.9,9.33 15.14,7.09 18,7H20V17Z" /></g><g id="domain"><path d="M18,15H16V17H18M18,11H16V13H18M20,19H12V17H14V15H12V13H14V11H12V9H20M10,7H8V5H10M10,11H8V9H10M10,15H8V13H10M10,19H8V17H10M6,7H4V5H6M6,11H4V9H6M6,15H4V13H6M6,19H4V17H6M12,7V3H2V21H22V7H12Z" /></g><g id="dots-horizontal"><path d="M16,12A2,2 0 0,1 18,10A2,2 0 0,1 20,12A2,2 0 0,1 18,14A2,2 0 0,1 16,12M10,12A2,2 0 0,1 12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12M4,12A2,2 0 0,1 6,10A2,2 0 0,1 8,12A2,2 0 0,1 6,14A2,2 0 0,1 4,12Z" /></g><g id="dots-vertical"><path d="M12,16A2,2 0 0,1 14,18A2,2 0 0,1 12,20A2,2 0 0,1 10,18A2,2 0 0,1 12,16M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M12,4A2,2 0 0,1 14,6A2,2 0 0,1 12,8A2,2 0 0,1 10,6A2,2 0 0,1 12,4Z" /></g><g id="douban"><path d="M20,6H4V4H20V6M20,18V20H4V18H7.33L6.26,14H5V8H19V14H17.74L16.67,18H20M7,12H17V10H7V12M9.4,18H14.6L15.67,14H8.33L9.4,18Z" /></g><g id="download"><path d="M5,20H19V18H5M19,9H15V3H9V9H5L12,16L19,9Z" /></g><g id="drag"><path d="M7,19V17H9V19H7M11,19V17H13V19H11M15,19V17H17V19H15M7,15V13H9V15H7M11,15V13H13V15H11M15,15V13H17V15H15M7,11V9H9V11H7M11,11V9H13V11H11M15,11V9H17V11H15M7,7V5H9V7H7M11,7V5H13V7H11M15,7V5H17V7H15Z" /></g><g id="drag-horizontal"><path d="M3,15V13H5V15H3M3,11V9H5V11H3M7,15V13H9V15H7M7,11V9H9V11H7M11,15V13H13V15H11M11,11V9H13V11H11M15,15V13H17V15H15M15,11V9H17V11H15M19,15V13H21V15H19M19,11V9H21V11H19Z" /></g><g id="drag-vertical"><path d="M9,3H11V5H9V3M13,3H15V5H13V3M9,7H11V9H9V7M13,7H15V9H13V7M9,11H11V13H9V11M13,11H15V13H13V11M9,15H11V17H9V15M13,15H15V17H13V15M9,19H11V21H9V19M13,19H15V21H13V19Z" /></g><g id="drawing"><path d="M8.5,3A5.5,5.5 0 0,1 14,8.5C14,9.83 13.53,11.05 12.74,12H21V21H12V12.74C11.05,13.53 9.83,14 8.5,14A5.5,5.5 0 0,1 3,8.5A5.5,5.5 0 0,1 8.5,3Z" /></g><g id="drawing-box"><path d="M18,18H12V12.21C11.34,12.82 10.47,13.2 9.5,13.2C7.46,13.2 5.8,11.54 5.8,9.5A3.7,3.7 0 0,1 9.5,5.8C11.54,5.8 13.2,7.46 13.2,9.5C13.2,10.47 12.82,11.34 12.21,12H18M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="dribbble"><path d="M16.42,18.42C16,16.5 15.5,14.73 15,13.17C15.5,13.1 16,13.06 16.58,13.06H16.6V13.06H16.6C17.53,13.06 18.55,13.18 19.66,13.43C19.28,15.5 18.08,17.27 16.42,18.42M12,19.8C10.26,19.8 8.66,19.23 7.36,18.26C7.64,17.81 8.23,16.94 9.18,16.04C10.14,15.11 11.5,14.15 13.23,13.58C13.82,15.25 14.36,17.15 14.77,19.29C13.91,19.62 13,19.8 12,19.8M4.2,12C4.2,11.96 4.2,11.93 4.2,11.89C4.42,11.9 4.71,11.9 5.05,11.9H5.06C6.62,11.89 9.36,11.76 12.14,10.89C12.29,11.22 12.44,11.56 12.59,11.92C10.73,12.54 9.27,13.53 8.19,14.5C7.16,15.46 6.45,16.39 6.04,17C4.9,15.66 4.2,13.91 4.2,12M8.55,5C9.1,5.65 10.18,7.06 11.34,9.25C9,9.96 6.61,10.12 5.18,10.12C5.14,10.12 5.1,10.12 5.06,10.12H5.05C4.81,10.12 4.6,10.12 4.43,10.11C5,7.87 6.5,6 8.55,5M12,4.2C13.84,4.2 15.53,4.84 16.86,5.91C15.84,7.14 14.5,8 13.03,8.65C12,6.67 11,5.25 10.34,4.38C10.88,4.27 11.43,4.2 12,4.2M18.13,7.18C19.1,8.42 19.71,9.96 19.79,11.63C18.66,11.39 17.6,11.28 16.6,11.28V11.28H16.59C15.79,11.28 15.04,11.35 14.33,11.47C14.16,11.05 14,10.65 13.81,10.26C15.39,9.57 16.9,8.58 18.13,7.18M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="dribbble-box"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M15.09,16.5C14.81,15.14 14.47,13.91 14.08,12.82L15.2,12.74H15.22V12.74C15.87,12.74 16.59,12.82 17.36,13C17.09,14.44 16.26,15.69 15.09,16.5M12,17.46C10.79,17.46 9.66,17.06 8.76,16.39C8.95,16.07 9.36,15.46 10,14.83C10.7,14.18 11.64,13.5 12.86,13.11C13.28,14.27 13.65,15.6 13.94,17.1C13.33,17.33 12.68,17.46 12,17.46M6.54,12V11.92L7.14,11.93V11.93C8.24,11.93 10.15,11.83 12.1,11.22L12.41,11.94C11.11,12.38 10.09,13.07 9.34,13.76C8.61,14.42 8.12,15.08 7.83,15.5C7.03,14.56 6.54,13.34 6.54,12M9.59,7.11C9.97,7.56 10.73,8.54 11.54,10.08C9.89,10.57 8.23,10.68 7.22,10.68H7.14V10.68H6.7C7.09,9.11 8.17,7.81 9.59,7.11M12,6.54C13.29,6.54 14.47,7 15.41,7.74C14.69,8.6 13.74,9.22 12.72,9.66C12,8.27 11.31,7.28 10.84,6.67C11.21,6.59 11.6,6.54 12,6.54M16.29,8.63C16.97,9.5 17.4,10.57 17.45,11.74C16.66,11.58 15.92,11.5 15.22,11.5V11.5C14.66,11.5 14.13,11.54 13.63,11.63L13.27,10.78C14.37,10.3 15.43,9.61 16.29,8.63M12,5A7,7 0 0,0 5,12A7,7 0 0,0 12,19A7,7 0 0,0 19,12A7,7 0 0,0 12,5Z" /></g><g id="drone"><path d="M22,11H21L20,9H13.75L16,12.5H14L10.75,9H4C3.45,9 2,8.55 2,8C2,7.45 3.5,5.5 5.5,5.5C7.5,5.5 7.67,6.5 9,7H21A1,1 0 0,1 22,8V9L22,11M10.75,6.5L14,3H16L13.75,6.5H10.75M18,11V9.5H19.75L19,11H18M3,19A1,1 0 0,1 2,18A1,1 0 0,1 3,17A4,4 0 0,1 7,21A1,1 0 0,1 6,22A1,1 0 0,1 5,21A2,2 0 0,0 3,19M11,21A1,1 0 0,1 10,22A1,1 0 0,1 9,21A6,6 0 0,0 3,15A1,1 0 0,1 2,14A1,1 0 0,1 3,13A8,8 0 0,1 11,21Z" /></g><g id="dropbox"><path d="M12,14.56L16.35,18.16L18.2,16.95V18.3L12,22L5.82,18.3V16.95L7.68,18.16L12,14.56M7.68,2.5L12,6.09L16.32,2.5L22.5,6.5L18.23,9.94L22.5,13.36L16.32,17.39L12,13.78L7.68,17.39L1.5,13.36L5.77,9.94L1.5,6.5L7.68,2.5M12,13.68L18.13,9.94L12,6.19L5.87,9.94L12,13.68Z" /></g><g id="drupal"><path d="M20.47,14.65C20.47,15.29 20.25,16.36 19.83,17.1C19.4,17.85 19.08,18.06 18.44,18.06C17.7,17.95 16.31,15.82 15.36,15.72C14.18,15.72 11.73,18.17 9.71,18.17C8.54,18.17 8.11,17.95 7.79,17.74C7.15,17.31 6.94,16.67 6.94,15.82C6.94,14.22 8.43,12.84 10.24,12.84C12.59,12.84 14.18,15.18 15.36,15.08C16.31,15.08 18.23,13.16 19.19,13.16C20.15,12.95 20.47,14 20.47,14.65M16.63,5.28C15.57,4.64 14.61,4.32 13.54,3.68C12.91,3.25 12.05,2.3 11.31,1.44C11,2.83 10.78,3.36 10.24,3.79C9.18,4.53 8.64,4.85 7.69,5.28C6.94,5.7 3,8.05 3,13.16C3,18.27 7.37,22 12.05,22C16.85,22 21,18.5 21,13.27C21.21,8.05 17.27,5.7 16.63,5.28Z" /></g><g id="duck"><path d="M8.5,5A1.5,1.5 0 0,0 7,6.5A1.5,1.5 0 0,0 8.5,8A1.5,1.5 0 0,0 10,6.5A1.5,1.5 0 0,0 8.5,5M10,2A5,5 0 0,1 15,7C15,8.7 14.15,10.2 12.86,11.1C14.44,11.25 16.22,11.61 18,12.5C21,14 22,12 22,12C22,12 21,21 15,21H9C9,21 4,21 4,16C4,13 7,12 6,10C2,10 2,6.5 2,6.5C3,7 4.24,7 5,6.65C5.19,4.05 7.36,2 10,2Z" /></g><g id="dumbbell"><path d="M4.22,14.12L3.5,13.41C2.73,12.63 2.73,11.37 3.5,10.59C4.3,9.8 5.56,9.8 6.34,10.59L8.92,13.16L13.16,8.92L10.59,6.34C9.8,5.56 9.8,4.3 10.59,3.5C11.37,2.73 12.63,2.73 13.41,3.5L14.12,4.22L19.78,9.88L20.5,10.59C21.27,11.37 21.27,12.63 20.5,13.41C19.7,14.2 18.44,14.2 17.66,13.41L15.08,10.84L10.84,15.08L13.41,17.66C14.2,18.44 14.2,19.7 13.41,20.5C12.63,21.27 11.37,21.27 10.59,20.5L9.88,19.78L4.22,14.12M3.16,19.42L4.22,18.36L2.81,16.95C2.42,16.56 2.42,15.93 2.81,15.54C3.2,15.15 3.83,15.15 4.22,15.54L8.46,19.78C8.85,20.17 8.85,20.8 8.46,21.19C8.07,21.58 7.44,21.58 7.05,21.19L5.64,19.78L4.58,20.84L3.16,19.42M19.42,3.16L20.84,4.58L19.78,5.64L21.19,7.05C21.58,7.44 21.58,8.07 21.19,8.46C20.8,8.86 20.17,8.86 19.78,8.46L15.54,4.22C15.15,3.83 15.15,3.2 15.54,2.81C15.93,2.42 16.56,2.42 16.95,2.81L18.36,4.22L19.42,3.16Z" /></g><g id="earth"><path d="M17.9,17.39C17.64,16.59 16.89,16 16,16H15V13A1,1 0 0,0 14,12H8V10H10A1,1 0 0,0 11,9V7H13A2,2 0 0,0 15,5V4.59C17.93,5.77 20,8.64 20,12C20,14.08 19.2,15.97 17.9,17.39M11,19.93C7.05,19.44 4,16.08 4,12C4,11.38 4.08,10.78 4.21,10.21L9,15V16A2,2 0 0,0 11,18M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="earth-box"><path d="M5,3C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H5M15.78,5H19V17.18C18.74,16.38 17.69,15.79 16.8,15.79H15.8V12.79A1,1 0 0,0 14.8,11.79H8.8V9.79H10.8A1,1 0 0,0 11.8,8.79V6.79H13.8C14.83,6.79 15.67,6 15.78,5M5,10.29L9.8,14.79V15.79C9.8,16.9 10.7,17.79 11.8,17.79V19H5V10.29Z" /></g><g id="earth-box-off"><path d="M23,4.27L21,6.27V19A2,2 0 0,1 19,21H6.27L4.27,23L3,21.72L21.72,3L23,4.27M5,3H19.18L17.18,5H15.78C15.67,6 14.83,6.79 13.8,6.79H11.8V8.79C11.8,9.35 11.35,9.79 10.8,9.79H8.8V11.79H10.38L8.55,13.62L5,10.29V17.18L3,19.18V5C3,3.89 3.89,3 5,3M11.8,19V17.79C11.17,17.79 10.6,17.5 10.23,17.04L8.27,19H11.8M15.8,12.79V15.79H16.8C17.69,15.79 18.74,16.38 19,17.18V8.27L15.33,11.94C15.61,12.12 15.8,12.43 15.8,12.79Z" /></g><g id="earth-off"><path d="M22,5.27L20.5,6.75C21.46,8.28 22,10.07 22,12A10,10 0 0,1 12,22C10.08,22 8.28,21.46 6.75,20.5L5.27,22L4,20.72L20.72,4L22,5.27M17.9,17.39C19.2,15.97 20,14.08 20,12C20,10.63 19.66,9.34 19.05,8.22L14.83,12.44C14.94,12.6 15,12.79 15,13V16H16C16.89,16 17.64,16.59 17.9,17.39M11,19.93V18C10.5,18 10.07,17.83 9.73,17.54L8.22,19.05C9.07,19.5 10,19.8 11,19.93M15,4.59V5A2,2 0 0,1 13,7H11V9A1,1 0 0,1 10,10H8V12H10.18L8.09,14.09L4.21,10.21C4.08,10.78 4,11.38 4,12C4,13.74 4.56,15.36 5.5,16.67L4.08,18.1C2.77,16.41 2,14.3 2,12A10,10 0 0,1 12,2C14.3,2 16.41,2.77 18.1,4.08L16.67,5.5C16.16,5.14 15.6,4.83 15,4.59Z" /></g><g id="edge"><path d="M2.74,10.81C3.83,-1.36 22.5,-1.36 21.2,13.56H8.61C8.61,17.85 14.42,19.21 19.54,16.31V20.53C13.25,23.88 5,21.43 5,14.09C5,8.58 9.97,6.81 9.97,6.81C9.97,6.81 8.58,8.58 8.54,10.05H15.7C15.7,2.93 5.9,5.57 2.74,10.81Z" /></g><g id="eject"><path d="M12,5L5.33,15H18.67M5,17H19V19H5V17Z" /></g><g id="elevation-decline"><path d="M21,21H3V11.25L9.45,15L13.22,12.8L21,17.29V21M3,8.94V6.75L9.45,10.5L13.22,8.3L21,12.79V15L13.22,10.5L9.45,12.67L3,8.94Z" /></g><g id="elevation-rise"><path d="M3,21V17.29L10.78,12.8L14.55,15L21,11.25V21H3M21,8.94L14.55,12.67L10.78,10.5L3,15V12.79L10.78,8.3L14.55,10.5L21,6.75V8.94Z" /></g><g id="elevator"><path d="M7,2L11,6H8V10H6V6H3L7,2M17,10L13,6H16V2H18V6H21L17,10M7,12H17A2,2 0 0,1 19,14V20A2,2 0 0,1 17,22H7A2,2 0 0,1 5,20V14A2,2 0 0,1 7,12M7,14V20H17V14H7Z" /></g><g id="email"><path d="M20,8L12,13L4,8V6L12,11L20,6M20,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z" /></g><g id="email-alert"><path d="M16,9V7L10,11L4,7V9L10,13L16,9M16,5A2,2 0 0,1 18,7V16A2,2 0 0,1 16,18H4C2.89,18 2,17.1 2,16V7A2,2 0 0,1 4,5H16M20,12V7H22V12H20M20,16V14H22V16H20Z" /></g><g id="email-open"><path d="M4,8L12,13L20,8V8L12,3L4,8V8M22,8V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V8C2,7.27 2.39,6.64 2.97,6.29L12,0.64L21.03,6.29C21.61,6.64 22,7.27 22,8Z" /></g><g id="email-open-outline"><path d="M12,15.36L4,10.36V18H20V10.36L12,15.36M4,8L12,13L20,8V8L12,3L4,8V8M22,8V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V8C2,7.27 2.39,6.64 2.97,6.29L12,0.64L21.03,6.29C21.61,6.64 22,7.27 22,8Z" /></g><g id="email-outline"><path d="M20,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6A2,2 0 0,0 20,4M20,18H4V8L12,13L20,8V18M20,6L12,11L4,6V6H20V6Z" /></g><g id="email-secure"><path d="M20.5,0A2.5,2.5 0 0,1 23,2.5V3A1,1 0 0,1 24,4V8A1,1 0 0,1 23,9H18A1,1 0 0,1 17,8V4A1,1 0 0,1 18,3V2.5A2.5,2.5 0 0,1 20.5,0M12,11L4,6V8L12,13L16.18,10.39C16.69,10.77 17.32,11 18,11H22V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H15V8C15,8.36 15.06,8.7 15.18,9L12,11M20.5,1A1.5,1.5 0 0,0 19,2.5V3H22V2.5A1.5,1.5 0 0,0 20.5,1Z" /></g><g id="email-variant"><path d="M12,13L2,6.76V6C2,4.89 2.89,4 4,4H20A2,2 0 0,1 22,6V6.75L12,13M22,18A2,2 0 0,1 20,20H4C2.89,20 2,19.1 2,18V9.11L4,10.36V18H20V10.36L22,9.11V18Z" /></g><g id="emby"><path d="M11,2L6,7L7,8L2,13L7,18L8,17L13,22L18,17L17,16L22,11L17,6L16,7L11,2M10,8.5L16,12L10,15.5V8.5Z" /></g><g id="emoticon"><path d="M12,17.5C14.33,17.5 16.3,16.04 17.11,14H6.89C7.69,16.04 9.67,17.5 12,17.5M8.5,11A1.5,1.5 0 0,0 10,9.5A1.5,1.5 0 0,0 8.5,8A1.5,1.5 0 0,0 7,9.5A1.5,1.5 0 0,0 8.5,11M15.5,11A1.5,1.5 0 0,0 17,9.5A1.5,1.5 0 0,0 15.5,8A1.5,1.5 0 0,0 14,9.5A1.5,1.5 0 0,0 15.5,11M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="emoticon-cool"><path d="M19,10C19,11.38 16.88,12.5 15.5,12.5C14.12,12.5 12.75,11.38 12.75,10H11.25C11.25,11.38 9.88,12.5 8.5,12.5C7.12,12.5 5,11.38 5,10H4.25C4.09,10.64 4,11.31 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12C20,11.31 19.91,10.64 19.75,10H19M12,4C9.04,4 6.45,5.61 5.07,8H18.93C17.55,5.61 14.96,4 12,4M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M12,17.23C10.25,17.23 8.71,16.5 7.81,15.42L9.23,14C9.68,14.72 10.75,15.23 12,15.23C13.25,15.23 14.32,14.72 14.77,14L16.19,15.42C15.29,16.5 13.75,17.23 12,17.23Z" /></g><g id="emoticon-dead"><path d="M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M16.18,7.76L15.12,8.82L14.06,7.76L13,8.82L14.06,9.88L13,10.94L14.06,12L15.12,10.94L16.18,12L17.24,10.94L16.18,9.88L17.24,8.82L16.18,7.76M7.82,12L8.88,10.94L9.94,12L11,10.94L9.94,9.88L11,8.82L9.94,7.76L8.88,8.82L7.82,7.76L6.76,8.82L7.82,9.88L6.76,10.94L7.82,12M12,14C9.67,14 7.69,15.46 6.89,17.5H17.11C16.31,15.46 14.33,14 12,14Z" /></g><g id="emoticon-devil"><path d="M1.5,2.09C2.4,3 3.87,3.73 5.69,4.25C7.41,2.84 9.61,2 12,2C14.39,2 16.59,2.84 18.31,4.25C20.13,3.73 21.6,3 22.5,2.09C22.47,3.72 21.65,5.21 20.28,6.4C21.37,8 22,9.92 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12C2,9.92 2.63,8 3.72,6.4C2.35,5.21 1.53,3.72 1.5,2.09M20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12M10.5,10C10.5,10.8 9.8,11.5 9,11.5C8.2,11.5 7.5,10.8 7.5,10V8.5L10.5,10M16.5,10C16.5,10.8 15.8,11.5 15,11.5C14.2,11.5 13.5,10.8 13.5,10L16.5,8.5V10M12,17.23C10.25,17.23 8.71,16.5 7.81,15.42L9.23,14C9.68,14.72 10.75,15.23 12,15.23C13.25,15.23 14.32,14.72 14.77,14L16.19,15.42C15.29,16.5 13.75,17.23 12,17.23Z" /></g><g id="emoticon-excited"><path d="M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M13,9.94L14.06,11L15.12,9.94L16.18,11L17.24,9.94L15.12,7.82L13,9.94M8.88,9.94L9.94,11L11,9.94L8.88,7.82L6.76,9.94L7.82,11L8.88,9.94M12,17.5C14.33,17.5 16.31,16.04 17.11,14H6.89C7.69,16.04 9.67,17.5 12,17.5Z" /></g><g id="emoticon-happy"><path d="M20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M10,9.5C10,10.3 9.3,11 8.5,11C7.7,11 7,10.3 7,9.5C7,8.7 7.7,8 8.5,8C9.3,8 10,8.7 10,9.5M17,9.5C17,10.3 16.3,11 15.5,11C14.7,11 14,10.3 14,9.5C14,8.7 14.7,8 15.5,8C16.3,8 17,8.7 17,9.5M12,17.23C10.25,17.23 8.71,16.5 7.81,15.42L9.23,14C9.68,14.72 10.75,15.23 12,15.23C13.25,15.23 14.32,14.72 14.77,14L16.19,15.42C15.29,16.5 13.75,17.23 12,17.23Z" /></g><g id="emoticon-neutral"><path d="M8.5,11A1.5,1.5 0 0,1 7,9.5A1.5,1.5 0 0,1 8.5,8A1.5,1.5 0 0,1 10,9.5A1.5,1.5 0 0,1 8.5,11M15.5,11A1.5,1.5 0 0,1 14,9.5A1.5,1.5 0 0,1 15.5,8A1.5,1.5 0 0,1 17,9.5A1.5,1.5 0 0,1 15.5,11M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22C6.47,22 2,17.5 2,12A10,10 0 0,1 12,2M9,14H15A1,1 0 0,1 16,15A1,1 0 0,1 15,16H9A1,1 0 0,1 8,15A1,1 0 0,1 9,14Z" /></g><g id="emoticon-poop"><path d="M9,11C9.55,11 10,11.9 10,13C10,14.1 9.55,15 9,15C8.45,15 8,14.1 8,13C8,11.9 8.45,11 9,11M15,11C15.55,11 16,11.9 16,13C16,14.1 15.55,15 15,15C14.45,15 14,14.1 14,13C14,11.9 14.45,11 15,11M9.75,1.75C9.75,1.75 16,4 15,8C15,8 19,8 17.25,11.5C17.25,11.5 21.46,11.94 20.28,15.34C19,16.53 18.7,16.88 17.5,17.75L20.31,16.14C21.35,16.65 24.37,18.47 21,21C17,24 11,21.25 9,21.25C7,21.25 5,22 4,22C3,22 2,21 2,19C2,17 4,16 5,16C5,16 2,13 7,11C7,11 5,8 9,7C9,7 8,6 9,5C10,4 9.75,2.75 9.75,1.75M8,17C9.33,18.17 10.67,19.33 12,19.33C13.33,19.33 14.67,18.17 16,17H8M9,10C7.9,10 7,11.34 7,13C7,14.66 7.9,16 9,16C10.1,16 11,14.66 11,13C11,11.34 10.1,10 9,10M15,10C13.9,10 13,11.34 13,13C13,14.66 13.9,16 15,16C16.1,16 17,14.66 17,13C17,11.34 16.1,10 15,10Z" /></g><g id="emoticon-sad"><path d="M20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M15.5,8C16.3,8 17,8.7 17,9.5C17,10.3 16.3,11 15.5,11C14.7,11 14,10.3 14,9.5C14,8.7 14.7,8 15.5,8M10,9.5C10,10.3 9.3,11 8.5,11C7.7,11 7,10.3 7,9.5C7,8.7 7.7,8 8.5,8C9.3,8 10,8.7 10,9.5M12,14C13.75,14 15.29,14.72 16.19,15.81L14.77,17.23C14.32,16.5 13.25,16 12,16C10.75,16 9.68,16.5 9.23,17.23L7.81,15.81C8.71,14.72 10.25,14 12,14Z" /></g><g id="emoticon-tongue"><path d="M9,8A2,2 0 0,1 11,10C11,10.36 10.9,10.71 10.73,11C10.39,10.4 9.74,10 9,10C8.26,10 7.61,10.4 7.27,11C7.1,10.71 7,10.36 7,10A2,2 0 0,1 9,8M15,8A2,2 0 0,1 17,10C17,10.36 16.9,10.71 16.73,11C16.39,10.4 15.74,10 15,10C14.26,10 13.61,10.4 13.27,11C13.1,10.71 13,10.36 13,10A2,2 0 0,1 15,8M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22C6.47,22 2,17.5 2,12A10,10 0 0,1 12,2M9,13H15A1,1 0 0,1 16,14A1,1 0 0,1 15,15C15,17 14.1,18 13,18C11.9,18 11,17 11,15H9A1,1 0 0,1 8,14A1,1 0 0,1 9,13Z" /></g><g id="engine"><path d="M7,4V6H10V8H7L5,10V13H3V10H1V18H3V15H5V18H8L10,20H18V16H20V19H23V9H20V12H18V8H12V6H15V4H7Z" /></g><g id="engine-outline"><path d="M8,10H16V18H11L9,16H7V11M7,4V6H10V8H7L5,10V13H3V10H1V18H3V15H5V18H8L10,20H18V16H20V19H23V9H20V12H18V8H12V6H15V4H7Z" /></g><g id="equal"><path d="M19,10H5V8H19V10M19,16H5V14H19V16Z" /></g><g id="equal-box"><path d="M17,16V14H7V16H17M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19M17,10V8H7V10H17Z" /></g><g id="eraser"><path d="M16.24,3.56L21.19,8.5C21.97,9.29 21.97,10.55 21.19,11.34L12,20.53C10.44,22.09 7.91,22.09 6.34,20.53L2.81,17C2.03,16.21 2.03,14.95 2.81,14.16L13.41,3.56C14.2,2.78 15.46,2.78 16.24,3.56M4.22,15.58L7.76,19.11C8.54,19.9 9.8,19.9 10.59,19.11L14.12,15.58L9.17,10.63L4.22,15.58Z" /></g><g id="eraser-variant"><path d="M15.14,3C14.63,3 14.12,3.2 13.73,3.59L2.59,14.73C1.81,15.5 1.81,16.77 2.59,17.56L5.03,20H12.69L21.41,11.27C22.2,10.5 22.2,9.23 21.41,8.44L16.56,3.59C16.17,3.2 15.65,3 15.14,3M17,18L15,20H22V18" /></g><g id="escalator"><path d="M20,8H18.95L6.95,20H4A2,2 0 0,1 2,18A2,2 0 0,1 4,16H5.29L7,14.29V10A1,1 0 0,1 8,9H9A1,1 0 0,1 10,10V11.29L17.29,4H20A2,2 0 0,1 22,6A2,2 0 0,1 20,8M8.5,5A1.5,1.5 0 0,1 10,6.5A1.5,1.5 0 0,1 8.5,8A1.5,1.5 0 0,1 7,6.5A1.5,1.5 0 0,1 8.5,5Z" /></g><g id="ethernet"><path d="M7,15H9V18H11V15H13V18H15V15H17V18H19V9H15V6H9V9H5V18H7V15M4.38,3H19.63C20.94,3 22,4.06 22,5.38V19.63A2.37,2.37 0 0,1 19.63,22H4.38C3.06,22 2,20.94 2,19.63V5.38C2,4.06 3.06,3 4.38,3Z" /></g><g id="ethernet-cable"><path d="M11,3V7H13V3H11M8,4V11H16V4H14V8H10V4H8M10,12V22H14V12H10Z" /></g><g id="ethernet-cable-off"><path d="M11,3H13V7H11V3M8,4H10V8H14V4H16V11H12.82L8,6.18V4M20,20.72L18.73,22L14,17.27V22H10V13.27L2,5.27L3.28,4L20,20.72Z" /></g><g id="etsy"><path d="M6.72,20.78C8.23,20.71 10.07,20.78 11.87,20.78C13.72,20.78 15.62,20.66 17.12,20.78C17.72,20.83 18.28,21.19 18.77,20.87C19.16,20.38 18.87,19.71 18.96,19.05C19.12,17.78 20.28,16.27 18.59,15.95C17.87,16.61 18.35,17.23 17.95,18.05C17.45,19.03 15.68,19.37 14,19.5C12.54,19.62 10,19.76 9.5,18.77C9.04,17.94 9.29,16.65 9.29,15.58C9.29,14.38 9.16,13.22 9.5,12.3C11.32,12.43 13.7,11.69 15,12.5C15.87,13 15.37,14.06 16.38,14.4C17.07,14.21 16.7,13.32 16.66,12.5C16.63,11.94 16.63,11.19 16.66,10.57C16.69,9.73 17,8.76 16.1,8.74C15.39,9.3 15.93,10.23 15.18,10.75C14.95,10.92 14.43,11 14.08,11C12.7,11.17 10.54,11.05 9.38,10.84C9.23,9.16 9.24,6.87 9.38,5.19C10,4.57 11.45,4.54 12.42,4.55C14.13,4.55 16.79,4.7 17.3,5.55C17.58,6 17.36,7 17.85,7.1C18.85,7.33 18.36,5.55 18.41,4.73C18.44,4.11 18.71,3.72 18.59,3.27C18.27,2.83 17.79,3.05 17.5,3.09C14.35,3.5 9.6,3.27 6.26,3.27C5.86,3.27 5.16,3.07 4.88,3.54C4.68,4.6 6.12,4.16 6.62,4.73C6.79,4.91 7.03,5.73 7.08,6.28C7.23,7.74 7.08,9.97 7.08,12.12C7.08,14.38 7.26,16.67 7.08,18.05C7,18.53 6.73,19.3 6.62,19.41C6,20.04 4.34,19.35 4.5,20.69C5.09,21.08 5.93,20.82 6.72,20.78Z" /></g><g id="ev-station"><path d="M19.77,7.23L19.78,7.22L16.06,3.5L15,4.56L17.11,6.67C16.17,7.03 15.5,7.93 15.5,9A2.5,2.5 0 0,0 18,11.5C18.36,11.5 18.69,11.42 19,11.29V18.5A1,1 0 0,1 18,19.5A1,1 0 0,1 17,18.5V14A2,2 0 0,0 15,12H14V5A2,2 0 0,0 12,3H6A2,2 0 0,0 4,5V21H14V13.5H15.5V18.5A2.5,2.5 0 0,0 18,21A2.5,2.5 0 0,0 20.5,18.5V9C20.5,8.31 20.22,7.68 19.77,7.23M18,10A1,1 0 0,1 17,9A1,1 0 0,1 18,8A1,1 0 0,1 19,9A1,1 0 0,1 18,10M8,18V13.5H6L10,6V11H12L8,18Z" /></g><g id="evernote"><path d="M15.09,11.63C15.09,11.63 15.28,10.35 16,10.35C16.76,10.35 17.78,12.06 17.78,12.06C17.78,12.06 15.46,11.63 15.09,11.63M19,4.69C18.64,4.09 16.83,3.41 15.89,3.41C14.96,3.41 13.5,3.41 13.5,3.41C13.5,3.41 12.7,2 10.88,2C9.05,2 9.17,2.81 9.17,3.5V6.32L8.34,7.19H4.5C4.5,7.19 3.44,7.91 3.44,9.44C3.44,11 3.92,16.35 7.13,16.85C10.93,17.43 11.58,15.67 11.58,15.46C11.58,14.56 11.6,13.21 11.6,13.21C11.6,13.21 12.71,15.33 14.39,15.33C16.07,15.33 17.04,16.3 17.04,17.29C17.04,18.28 17.04,19.13 17.04,19.13C17.04,19.13 17,20.28 16,20.28C15,20.28 13.89,20.28 13.89,20.28C13.89,20.28 13.2,19.74 13.2,19C13.2,18.25 13.53,18.05 13.93,18.05C14.32,18.05 14.65,18.09 14.65,18.09V16.53C14.65,16.53 11.47,16.5 11.47,18.94C11.47,21.37 13.13,22 14.46,22C15.8,22 16.63,22 16.63,22C16.63,22 20.56,21.5 20.56,13.75C20.56,6 19.33,5.28 19,4.69M7.5,6.31H4.26L8.32,2.22V5.5L7.5,6.31Z" /></g><g id="exclamation"><path d="M11,4.5H13V15.5H11V4.5M13,17.5V19.5H11V17.5H13Z" /></g><g id="exit-to-app"><path d="M19,3H5C3.89,3 3,3.89 3,5V9H5V5H19V19H5V15H3V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M10.08,15.58L11.5,17L16.5,12L11.5,7L10.08,8.41L12.67,11H3V13H12.67L10.08,15.58Z" /></g><g id="export"><path d="M23,12L19,8V11H10V13H19V16M1,18V6C1,4.89 1.9,4 3,4H15A2,2 0 0,1 17,6V9H15V6H3V18H15V15H17V18A2,2 0 0,1 15,20H3A2,2 0 0,1 1,18Z" /></g><g id="eye"><path d="M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17M12,4.5C7,4.5 2.73,7.61 1,12C2.73,16.39 7,19.5 12,19.5C17,19.5 21.27,16.39 23,12C21.27,7.61 17,4.5 12,4.5Z" /></g><g id="eye-off"><path d="M11.83,9L15,12.16C15,12.11 15,12.05 15,12A3,3 0 0,0 12,9C11.94,9 11.89,9 11.83,9M7.53,9.8L9.08,11.35C9.03,11.56 9,11.77 9,12A3,3 0 0,0 12,15C12.22,15 12.44,14.97 12.65,14.92L14.2,16.47C13.53,16.8 12.79,17 12,17A5,5 0 0,1 7,12C7,11.21 7.2,10.47 7.53,9.8M2,4.27L4.28,6.55L4.73,7C3.08,8.3 1.78,10 1,12C2.73,16.39 7,19.5 12,19.5C13.55,19.5 15.03,19.2 16.38,18.66L16.81,19.08L19.73,22L21,20.73L3.27,3M12,7A5,5 0 0,1 17,12C17,12.64 16.87,13.26 16.64,13.82L19.57,16.75C21.07,15.5 22.27,13.86 23,12C21.27,7.61 17,4.5 12,4.5C10.6,4.5 9.26,4.75 8,5.2L10.17,7.35C10.74,7.13 11.35,7 12,7Z" /></g><g id="eye-outline"><path d="M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9M3.93,12C5.5,14.97 8.58,16.83 12,16.83C15.42,16.83 18.5,14.97 20.07,12C18.5,9.03 15.42,7.17 12,7.17C8.58,7.17 5.5,9.03 3.93,12M12,4.5C17,4.5 21.27,7.61 23,12C21.27,16.39 17,19.5 12,19.5C7,19.5 2.73,16.39 1,12C2.73,7.61 7,4.5 12,4.5Z" /></g><g id="eye-outline-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L15.65,18.92C14.5,19.3 13.28,19.5 12,19.5C7,19.5 2.73,16.39 1,12C1.69,10.24 2.79,8.69 4.19,7.46L2,5.27M12,9A3,3 0 0,1 15,12C15,12.35 14.94,12.69 14.83,13L11,9.17C11.31,9.06 11.65,9 12,9M3.93,12C5.5,14.97 8.58,16.83 12,16.83C12.5,16.83 13,16.79 13.45,16.72L11.72,15C10.29,14.85 9.15,13.71 9,12.28L6.07,9.34C5.21,10.07 4.5,10.97 3.93,12M20.07,12C18.5,9.03 15.42,7.17 12,7.17C11.09,7.17 10.21,7.3 9.37,7.55L7.3,5.47C8.74,4.85 10.33,4.5 12,4.5C17,4.5 21.27,7.61 23,12C22.18,14.08 20.79,15.88 19,17.19L17.11,15.29C18.33,14.46 19.35,13.35 20.07,12Z" /></g><g id="eyedropper"><path d="M19.35,11.72L17.22,13.85L15.81,12.43L8.1,20.14L3.5,22L2,20.5L3.86,15.9L11.57,8.19L10.15,6.78L12.28,4.65L19.35,11.72M16.76,3C17.93,1.83 19.83,1.83 21,3C22.17,4.17 22.17,6.07 21,7.24L19.08,9.16L14.84,4.92L16.76,3M5.56,17.03L4.5,19.5L6.97,18.44L14.4,11L13,9.6L5.56,17.03Z" /></g><g id="eyedropper-variant"><path d="M6.92,19L5,17.08L13.06,9L15,10.94M20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L13.84,6.41L11.91,4.5L10.5,5.91L11.92,7.33L3,16.25V21H7.75L16.67,12.08L18.09,13.5L19.5,12.09L17.58,10.17L20.7,7.05C21.1,6.65 21.1,6 20.71,5.63Z" /></g><g id="face"><path d="M9,11.75A1.25,1.25 0 0,0 7.75,13A1.25,1.25 0 0,0 9,14.25A1.25,1.25 0 0,0 10.25,13A1.25,1.25 0 0,0 9,11.75M15,11.75A1.25,1.25 0 0,0 13.75,13A1.25,1.25 0 0,0 15,14.25A1.25,1.25 0 0,0 16.25,13A1.25,1.25 0 0,0 15,11.75M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20C7.59,20 4,16.41 4,12C4,11.71 4,11.42 4.05,11.14C6.41,10.09 8.28,8.16 9.26,5.77C11.07,8.33 14.05,10 17.42,10C18.2,10 18.95,9.91 19.67,9.74C19.88,10.45 20,11.21 20,12C20,16.41 16.41,20 12,20Z" /></g><g id="face-profile"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,8.39C13.57,9.4 15.42,10 17.42,10C18.2,10 18.95,9.91 19.67,9.74C19.88,10.45 20,11.21 20,12C20,16.41 16.41,20 12,20C9,20 6.39,18.34 5,15.89L6.75,14V13A1.25,1.25 0 0,1 8,11.75A1.25,1.25 0 0,1 9.25,13V14H12M16,11.75A1.25,1.25 0 0,0 14.75,13A1.25,1.25 0 0,0 16,14.25A1.25,1.25 0 0,0 17.25,13A1.25,1.25 0 0,0 16,11.75Z" /></g><g id="facebook"><path d="M17,2V2H17V6H15C14.31,6 14,6.81 14,7.5V10H14L17,10V14H14V22H10V14H7V10H10V6A4,4 0 0,1 14,2H17Z" /></g><g id="facebook-box"><path d="M19,4V7H17A1,1 0 0,0 16,8V10H19V13H16V20H13V13H11V10H13V7.5C13,5.56 14.57,4 16.5,4M20,2H4A2,2 0 0,0 2,4V20A2,2 0 0,0 4,22H20A2,2 0 0,0 22,20V4C22,2.89 21.1,2 20,2Z" /></g><g id="facebook-messenger"><path d="M12,2C6.5,2 2,6.14 2,11.25C2,14.13 3.42,16.7 5.65,18.4L5.71,22L9.16,20.12L9.13,20.11C10.04,20.36 11,20.5 12,20.5C17.5,20.5 22,16.36 22,11.25C22,6.14 17.5,2 12,2M13.03,14.41L10.54,11.78L5.5,14.41L10.88,8.78L13.46,11.25L18.31,8.78L13.03,14.41Z" /></g><g id="factory"><path d="M4,18V20H8V18H4M4,14V16H14V14H4M10,18V20H14V18H10M16,14V16H20V14H16M16,18V20H20V18H16M2,22V8L7,12V8L12,12V8L17,12L18,2H21L22,12V22H2Z" /></g><g id="fan"><path d="M12,11A1,1 0 0,0 11,12A1,1 0 0,0 12,13A1,1 0 0,0 13,12A1,1 0 0,0 12,11M12.5,2C17,2 17.11,5.57 14.75,6.75C13.76,7.24 13.32,8.29 13.13,9.22C13.61,9.42 14.03,9.73 14.35,10.13C18.05,8.13 22.03,8.92 22.03,12.5C22.03,17 18.46,17.1 17.28,14.73C16.78,13.74 15.72,13.3 14.79,13.11C14.59,13.59 14.28,14 13.88,14.34C15.87,18.03 15.08,22 11.5,22C7,22 6.91,18.42 9.27,17.24C10.25,16.75 10.69,15.71 10.89,14.79C10.4,14.59 9.97,14.27 9.65,13.87C5.96,15.85 2,15.07 2,11.5C2,7 5.56,6.89 6.74,9.26C7.24,10.25 8.29,10.68 9.22,10.87C9.41,10.39 9.73,9.97 10.14,9.65C8.15,5.96 8.94,2 12.5,2Z" /></g><g id="fast-forward"><path d="M13,6V18L21.5,12M4,18L12.5,12L4,6V18Z" /></g><g id="fast-forward-outline"><path d="M15,9.9L18,12L15,14.1V9.9M6,9.9L9,12L6,14.1V9.9M13,6V18L21.5,12L13,6M4,6V18L12.5,12L4,6Z" /></g><g id="fax"><path d="M6,2A1,1 0 0,0 5,3V7H6V5H8V4H6V3H8V2H6M11,2A1,1 0 0,0 10,3V7H11V5H12V7H13V3A1,1 0 0,0 12,2H11M15,2L16.42,4.5L15,7H16.13L17,5.5L17.87,7H19L17.58,4.5L19,2H17.87L17,3.5L16.13,2H15M11,3H12V4H11V3M5,9A3,3 0 0,0 2,12V18H6V22H18V18H22V12A3,3 0 0,0 19,9H5M19,11A1,1 0 0,1 20,12A1,1 0 0,1 19,13A1,1 0 0,1 18,12A1,1 0 0,1 19,11M8,15H16V20H8V15Z" /></g><g id="feather"><path d="M22,2C22,2 14.36,1.63 8.34,9.88C3.72,16.21 2,22 2,22L3.94,21C5.38,18.5 6.13,17.47 7.54,16C10.07,16.74 12.71,16.65 15,14C13,13.44 11.4,13.57 9.04,13.81C11.69,12 13.5,11.6 16,12L17,10C15.2,9.66 14,9.63 12.22,10.04C14.19,8.65 15.56,7.87 18,8L19.21,6.07C17.65,5.96 16.71,6.13 14.92,6.57C16.53,5.11 18,4.45 20.14,4.32C20.14,4.32 21.19,2.43 22,2Z" /></g><g id="ferry"><path d="M6,6H18V9.96L12,8L6,9.96M3.94,19H4C5.6,19 7,18.12 8,17C9,18.12 10.4,19 12,19C13.6,19 15,18.12 16,17C17,18.12 18.4,19 20,19H20.05L21.95,12.31C22.03,12.06 22,11.78 21.89,11.54C21.76,11.3 21.55,11.12 21.29,11.04L20,10.62V6C20,4.89 19.1,4 18,4H15V1H9V4H6A2,2 0 0,0 4,6V10.62L2.71,11.04C2.45,11.12 2.24,11.3 2.11,11.54C2,11.78 1.97,12.06 2.05,12.31M20,21C18.61,21 17.22,20.53 16,19.67C13.56,21.38 10.44,21.38 8,19.67C6.78,20.53 5.39,21 4,21H2V23H4C5.37,23 6.74,22.65 8,22C10.5,23.3 13.5,23.3 16,22C17.26,22.65 18.62,23 20,23H22V21H20Z" /></g><g id="file"><path d="M13,9V3.5L18.5,9M6,2C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6Z" /></g><g id="file-chart"><path d="M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M7,20H9V14H7V20M11,20H13V12H11V20M15,20H17V16H15V20Z" /></g><g id="file-check"><path d="M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M10.45,18.46L15.2,13.71L14.03,12.3L10.45,15.88L8.86,14.3L7.7,15.46L10.45,18.46Z" /></g><g id="file-cloud"><path d="M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M15.68,15C15.34,13.3 13.82,12 12,12C10.55,12 9.3,12.82 8.68,14C7.17,14.18 6,15.45 6,17A3,3 0 0,0 9,20H15.5A2.5,2.5 0 0,0 18,17.5C18,16.18 16.97,15.11 15.68,15Z" /></g><g id="file-delimited"><path d="M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M14,15V11H10V15H12.3C12.6,17 12,18 9.7,19.38L10.85,20.2C13,19 14,16 14,15Z" /></g><g id="file-document"><path d="M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M15,18V16H6V18H15M18,14V12H6V14H18Z" /></g><g id="file-document-box"><path d="M14,17H7V15H14M17,13H7V11H17M17,9H7V7H17M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="file-excel"><path d="M6,2H14L20,8V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M13,3.5V9H18.5L13,3.5M17,11H13V13H14L12,14.67L10,13H11V11H7V13H8L11,15.5L8,18H7V20H11V18H10L12,16.33L14,18H13V20H17V18H16L13,15.5L16,13H17V11Z" /></g><g id="file-excel-box"><path d="M16.2,17H14.2L12,13.2L9.8,17H7.8L11,12L7.8,7H9.8L12,10.8L14.2,7H16.2L13,12M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="file-export"><path d="M6,2C4.89,2 4,2.9 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M13,3.5L18.5,9H13M8.93,12.22H16V19.29L13.88,17.17L11.05,20L8.22,17.17L11.05,14.35" /></g><g id="file-find"><path d="M9,13A3,3 0 0,0 12,16A3,3 0 0,0 15,13A3,3 0 0,0 12,10A3,3 0 0,0 9,13M20,19.59V8L14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18C18.45,22 18.85,21.85 19.19,21.6L14.76,17.17C13.96,17.69 13,18 12,18A5,5 0 0,1 7,13A5,5 0 0,1 12,8A5,5 0 0,1 17,13C17,14 16.69,14.96 16.17,15.75L20,19.59Z" /></g><g id="file-hidden"><path d="M13,9H14V11H11V7H13V9M18.5,9L16.38,6.88L17.63,5.63L20,8V10H18V11H15V9H18.5M13,3.5V2H12V4H13V6H11V4H9V2H8V4H6V5H4V4C4,2.89 4.89,2 6,2H14L16.36,4.36L15.11,5.61L13,3.5M20,20A2,2 0 0,1 18,22H16V20H18V19H20V20M18,15H20V18H18V15M12,22V20H15V22H12M8,22V20H11V22H8M6,22C4.89,22 4,21.1 4,20V18H6V20H7V22H6M4,14H6V17H4V14M4,10H6V13H4V10M18,11H20V14H18V11M4,6H6V9H4V6Z" /></g><g id="file-image"><path d="M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M6,20H15L18,20V12L14,16L12,14L6,20M8,9A2,2 0 0,0 6,11A2,2 0 0,0 8,13A2,2 0 0,0 10,11A2,2 0 0,0 8,9Z" /></g><g id="file-import"><path d="M6,2C4.89,2 4,2.9 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M13,3.5L18.5,9H13M10.05,11.22L12.88,14.05L15,11.93V19H7.93L10.05,16.88L7.22,14.05" /></g><g id="file-lock"><path d="M6,2C4.89,2 4,2.9 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6M13,3.5L18.5,9H13V3.5M12,11A3,3 0 0,1 15,14V15H16V19H8V15H9V14C9,12.36 10.34,11 12,11M12,13A1,1 0 0,0 11,14V15H13V14C13,13.47 12.55,13 12,13Z" /></g><g id="file-multiple"><path d="M15,7H20.5L15,1.5V7M8,0H16L22,6V18A2,2 0 0,1 20,20H8C6.89,20 6,19.1 6,18V2A2,2 0 0,1 8,0M4,4V22H20V24H4A2,2 0 0,1 2,22V4H4Z" /></g><g id="file-music"><path d="M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M9,16A2,2 0 0,0 7,18A2,2 0 0,0 9,20A2,2 0 0,0 11,18V13H14V11H10V16.27C9.71,16.1 9.36,16 9,16Z" /></g><g id="file-outline"><path d="M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M11,4H6V20H11L18,20V11H11V4Z" /></g><g id="file-pdf"><path d="M14,9H19.5L14,3.5V9M7,2H15L21,8V20A2,2 0 0,1 19,22H7C5.89,22 5,21.1 5,20V4A2,2 0 0,1 7,2M11.93,12.44C12.34,13.34 12.86,14.08 13.46,14.59L13.87,14.91C13,15.07 11.8,15.35 10.53,15.84V15.84L10.42,15.88L10.92,14.84C11.37,13.97 11.7,13.18 11.93,12.44M18.41,16.25C18.59,16.07 18.68,15.84 18.69,15.59C18.72,15.39 18.67,15.2 18.57,15.04C18.28,14.57 17.53,14.35 16.29,14.35L15,14.42L14.13,13.84C13.5,13.32 12.93,12.41 12.53,11.28L12.57,11.14C12.9,9.81 13.21,8.2 12.55,7.54C12.39,7.38 12.17,7.3 11.94,7.3H11.7C11.33,7.3 11,7.69 10.91,8.07C10.54,9.4 10.76,10.13 11.13,11.34V11.35C10.88,12.23 10.56,13.25 10.05,14.28L9.09,16.08L8.2,16.57C7,17.32 6.43,18.16 6.32,18.69C6.28,18.88 6.3,19.05 6.37,19.23L6.4,19.28L6.88,19.59L7.32,19.7C8.13,19.7 9.05,18.75 10.29,16.63L10.47,16.56C11.5,16.23 12.78,16 14.5,15.81C15.53,16.32 16.74,16.55 17.5,16.55C17.94,16.55 18.24,16.44 18.41,16.25M18,15.54L18.09,15.65C18.08,15.75 18.05,15.76 18,15.78H17.96L17.77,15.8C17.31,15.8 16.6,15.61 15.87,15.29C15.96,15.19 16,15.19 16.1,15.19C17.5,15.19 17.9,15.44 18,15.54M8.83,17C8.18,18.19 7.59,18.85 7.14,19C7.19,18.62 7.64,17.96 8.35,17.31L8.83,17M11.85,10.09C11.62,9.19 11.61,8.46 11.78,8.04L11.85,7.92L12,7.97C12.17,8.21 12.19,8.53 12.09,9.07L12.06,9.23L11.9,10.05L11.85,10.09Z" /></g><g id="file-pdf-box"><path d="M11.43,10.94C11.2,11.68 10.87,12.47 10.42,13.34C10.22,13.72 10,14.08 9.92,14.38L10.03,14.34V14.34C11.3,13.85 12.5,13.57 13.37,13.41C13.22,13.31 13.08,13.2 12.96,13.09C12.36,12.58 11.84,11.84 11.43,10.94M17.91,14.75C17.74,14.94 17.44,15.05 17,15.05C16.24,15.05 15,14.82 14,14.31C12.28,14.5 11,14.73 9.97,15.06C9.92,15.08 9.86,15.1 9.79,15.13C8.55,17.25 7.63,18.2 6.82,18.2C6.66,18.2 6.5,18.16 6.38,18.09L5.9,17.78L5.87,17.73C5.8,17.55 5.78,17.38 5.82,17.19C5.93,16.66 6.5,15.82 7.7,15.07C7.89,14.93 8.19,14.77 8.59,14.58C8.89,14.06 9.21,13.45 9.55,12.78C10.06,11.75 10.38,10.73 10.63,9.85V9.84C10.26,8.63 10.04,7.9 10.41,6.57C10.5,6.19 10.83,5.8 11.2,5.8H11.44C11.67,5.8 11.89,5.88 12.05,6.04C12.71,6.7 12.4,8.31 12.07,9.64C12.05,9.7 12.04,9.75 12.03,9.78C12.43,10.91 13,11.82 13.63,12.34C13.89,12.54 14.18,12.74 14.5,12.92C14.95,12.87 15.38,12.85 15.79,12.85C17.03,12.85 17.78,13.07 18.07,13.54C18.17,13.7 18.22,13.89 18.19,14.09C18.18,14.34 18.09,14.57 17.91,14.75M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M17.5,14.04C17.4,13.94 17,13.69 15.6,13.69C15.53,13.69 15.46,13.69 15.37,13.79C16.1,14.11 16.81,14.3 17.27,14.3C17.34,14.3 17.4,14.29 17.46,14.28H17.5C17.55,14.26 17.58,14.25 17.59,14.15C17.57,14.12 17.55,14.08 17.5,14.04M8.33,15.5C8.12,15.62 7.95,15.73 7.85,15.81C7.14,16.46 6.69,17.12 6.64,17.5C7.09,17.35 7.68,16.69 8.33,15.5M11.35,8.59L11.4,8.55C11.47,8.23 11.5,7.95 11.56,7.73L11.59,7.57C11.69,7 11.67,6.71 11.5,6.47L11.35,6.42C11.33,6.45 11.3,6.5 11.28,6.54C11.11,6.96 11.12,7.69 11.35,8.59Z" /></g><g id="file-powerpoint"><path d="M6,2H14L20,8V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M13,3.5V9H18.5L13,3.5M8,11V13H9V19H8V20H12V19H11V17H13A3,3 0 0,0 16,14A3,3 0 0,0 13,11H8M13,13A1,1 0 0,1 14,14A1,1 0 0,1 13,15H11V13H13Z" /></g><g id="file-powerpoint-box"><path d="M9.8,13.4H12.3C13.8,13.4 14.46,13.12 15.1,12.58C15.74,12.03 16,11.25 16,10.23C16,9.26 15.75,8.5 15.1,7.88C14.45,7.29 13.83,7 12.3,7H8V17H9.8V13.4M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5C3,3.89 3.9,3 5,3H19M9.8,12V8.4H12.1C12.76,8.4 13.27,8.65 13.6,9C13.93,9.35 14.1,9.72 14.1,10.24C14.1,10.8 13.92,11.19 13.6,11.5C13.28,11.81 12.9,12 12.22,12H9.8Z" /></g><g id="file-presentation-box"><path d="M19,16H5V8H19M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="file-restore"><path d="M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M12,18C9.95,18 8.19,16.76 7.42,15H9.13C9.76,15.9 10.81,16.5 12,16.5A3.5,3.5 0 0,0 15.5,13A3.5,3.5 0 0,0 12,9.5C10.65,9.5 9.5,10.28 8.9,11.4L10.5,13H6.5V9L7.8,10.3C8.69,8.92 10.23,8 12,8A5,5 0 0,1 17,13A5,5 0 0,1 12,18Z" /></g><g id="file-send"><path d="M14,2H6C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M12.54,19.37V17.37H8.54V15.38H12.54V13.38L15.54,16.38L12.54,19.37M13,9V3.5L18.5,9H13Z" /></g><g id="file-tree"><path d="M3,3H9V7H3V3M15,10H21V14H15V10M15,17H21V21H15V17M13,13H7V18H13V20H7L5,20V9H7V11H13V13Z" /></g><g id="file-video"><path d="M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M17,19V13L14,15.2V13H7V19H14V16.8L17,19Z" /></g><g id="file-word"><path d="M6,2H14L20,8V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M13,3.5V9H18.5L13,3.5M7,13L8.5,20H10.5L12,17L13.5,20H15.5L17,13H18V11H14V13H15L14.1,17.2L13,15V15H11V15L9.9,17.2L9,13H10V11H6V13H7Z" /></g><g id="file-word-box"><path d="M15.5,17H14L12,9.5L10,17H8.5L6.1,7H7.8L9.34,14.5L11.3,7H12.7L14.67,14.5L16.2,7H17.9M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="file-xml"><path d="M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M6.12,15.5L9.86,19.24L11.28,17.83L8.95,15.5L11.28,13.17L9.86,11.76L6.12,15.5M17.28,15.5L13.54,11.76L12.12,13.17L14.45,15.5L12.12,17.83L13.54,19.24L17.28,15.5Z" /></g><g id="film"><path d="M3.5,3H5V1.8C5,1.36 5.36,1 5.8,1H10.2C10.64,1 11,1.36 11,1.8V3H12.5A1.5,1.5 0 0,1 14,4.5V5H22V20H14V20.5A1.5,1.5 0 0,1 12.5,22H3.5A1.5,1.5 0 0,1 2,20.5V4.5A1.5,1.5 0 0,1 3.5,3M18,7V9H20V7H18M14,7V9H16V7H14M10,7V9H12V7H10M14,16V18H16V16H14M18,16V18H20V16H18M10,16V18H12V16H10Z" /></g><g id="filmstrip"><path d="M18,9H16V7H18M18,13H16V11H18M18,17H16V15H18M8,9H6V7H8M8,13H6V11H8M8,17H6V15H8M18,3V5H16V3H8V5H6V3H4V21H6V19H8V21H16V19H18V21H20V3H18Z" /></g><g id="filmstrip-off"><path d="M1,4.27L2.28,3L21,21.72L19.73,23L16,19.27V21H8V19H6V21H4V7.27L1,4.27M18,9V7H16V9H18M18,13V11H16V13H18M18,15H16.82L6.82,5H8V3H16V5H18V3H20V18.18L18,16.18V15M8,13V11.27L7.73,11H6V13H8M8,17V15H6V17H8M6,3V4.18L4.82,3H6Z" /></g><g id="filter"><path d="M3,2H21V2H21V4H20.92L14,10.92V22.91L10,18.91V10.91L3.09,4H3V2Z" /></g><g id="filter-outline"><path d="M3,2H21V2H21V4H20.92L15,9.92V22.91L9,16.91V9.91L3.09,4H3V2M11,16.08L13,18.08V9H13.09L18.09,4H5.92L10.92,9H11V16.08Z" /></g><g id="filter-remove"><path d="M14.76,20.83L17.6,18L14.76,15.17L16.17,13.76L19,16.57L21.83,13.76L23.24,15.17L20.43,18L23.24,20.83L21.83,22.24L19,19.4L16.17,22.24L14.76,20.83M2,2H20V2H20V4H19.92L13,10.92V22.91L9,18.91V10.91L2.09,4H2V2Z" /></g><g id="filter-remove-outline"><path d="M14.73,20.83L17.58,18L14.73,15.17L16.15,13.76L19,16.57L21.8,13.76L23.22,15.17L20.41,18L23.22,20.83L21.8,22.24L19,19.4L16.15,22.24L14.73,20.83M2,2H20V2H20V4H19.92L14,9.92V22.91L8,16.91V9.91L2.09,4H2V2M10,16.08L12,18.08V9H12.09L17.09,4H4.92L9.92,9H10V16.08Z" /></g><g id="filter-variant"><path d="M6,13H18V11H6M3,6V8H21V6M10,18H14V16H10V18Z" /></g><g id="fingerprint"><path d="M11.83,1.73C8.43,1.79 6.23,3.32 6.23,3.32C5.95,3.5 5.88,3.91 6.07,4.19C6.27,4.5 6.66,4.55 6.96,4.34C6.96,4.34 11.27,1.15 17.46,4.38C17.75,4.55 18.14,4.45 18.31,4.15C18.5,3.85 18.37,3.47 18.03,3.28C16.36,2.4 14.78,1.96 13.36,1.8C12.83,1.74 12.32,1.72 11.83,1.73M12.22,4.34C6.26,4.26 3.41,9.05 3.41,9.05C3.22,9.34 3.3,9.72 3.58,9.91C3.87,10.1 4.26,10 4.5,9.68C4.5,9.68 6.92,5.5 12.2,5.59C17.5,5.66 19.82,9.65 19.82,9.65C20,9.94 20.38,10.04 20.68,9.87C21,9.69 21.07,9.31 20.9,9C20.9,9 18.15,4.42 12.22,4.34M11.5,6.82C9.82,6.94 8.21,7.55 7,8.56C4.62,10.53 3.1,14.14 4.77,19C4.88,19.33 5.24,19.5 5.57,19.39C5.89,19.28 6.07,18.92 5.95,18.6V18.6C4.41,14.13 5.78,11.2 7.8,9.5C9.77,7.89 13.25,7.5 15.84,9.1C17.11,9.9 18.1,11.28 18.6,12.64C19.11,14 19.08,15.32 18.67,15.94C18.25,16.59 17.4,16.83 16.65,16.64C15.9,16.45 15.29,15.91 15.26,14.77C15.23,13.06 13.89,12 12.5,11.84C11.16,11.68 9.61,12.4 9.21,14C8.45,16.92 10.36,21.07 14.78,22.45C15.11,22.55 15.46,22.37 15.57,22.04C15.67,21.71 15.5,21.35 15.15,21.25C11.32,20.06 9.87,16.43 10.42,14.29C10.66,13.33 11.5,13 12.38,13.08C13.25,13.18 14,13.7 14,14.79C14.05,16.43 15.12,17.54 16.34,17.85C17.56,18.16 18.97,17.77 19.72,16.62C20.5,15.45 20.37,13.8 19.78,12.21C19.18,10.61 18.07,9.03 16.5,8.04C14.96,7.08 13.19,6.7 11.5,6.82M11.86,9.25V9.26C10.08,9.32 8.3,10.24 7.28,12.18C5.96,14.67 6.56,17.21 7.44,19.04C8.33,20.88 9.54,22.1 9.54,22.1C9.78,22.35 10.17,22.35 10.42,22.11C10.67,21.87 10.67,21.5 10.43,21.23C10.43,21.23 9.36,20.13 8.57,18.5C7.78,16.87 7.3,14.81 8.38,12.77C9.5,10.67 11.5,10.16 13.26,10.67C15.04,11.19 16.53,12.74 16.5,15.03C16.46,15.38 16.71,15.68 17.06,15.7C17.4,15.73 17.7,15.47 17.73,15.06C17.79,12.2 15.87,10.13 13.61,9.47C13.04,9.31 12.45,9.23 11.86,9.25M12.08,14.25C11.73,14.26 11.46,14.55 11.47,14.89C11.47,14.89 11.5,16.37 12.31,17.8C13.15,19.23 14.93,20.59 18.03,20.3C18.37,20.28 18.64,20 18.62,19.64C18.6,19.29 18.3,19.03 17.91,19.06C15.19,19.31 14.04,18.28 13.39,17.17C12.74,16.07 12.72,14.88 12.72,14.88C12.72,14.53 12.44,14.25 12.08,14.25Z" /></g><g id="fire"><path d="M11.71,19C9.93,19 8.5,17.59 8.5,15.86C8.5,14.24 9.53,13.1 11.3,12.74C13.07,12.38 14.9,11.53 15.92,10.16C16.31,11.45 16.5,12.81 16.5,14.2C16.5,16.84 14.36,19 11.71,19M13.5,0.67C13.5,0.67 14.24,3.32 14.24,5.47C14.24,7.53 12.89,9.2 10.83,9.2C8.76,9.2 7.2,7.53 7.2,5.47L7.23,5.1C5.21,7.5 4,10.61 4,14A8,8 0 0,0 12,22A8,8 0 0,0 20,14C20,8.6 17.41,3.8 13.5,0.67Z" /></g><g id="firefox"><path d="M21,11.7C21,11.3 20.9,10.7 20.8,10.3C20.5,8.6 19.6,7.1 18.5,5.9C18.3,5.6 17.9,5.3 17.5,5C16.4,4.1 15.1,3.5 13.6,3.2C10.6,2.7 7.6,3.7 5.6,5.8C5.6,5.8 5.6,5.7 5.6,5.7C5.5,5.5 5.5,5.5 5.4,5.5C5.4,5.5 5.4,5.5 5.4,5.5C5.3,5.3 5.3,5.2 5.2,5.1C5.2,5.1 5.2,5.1 5.2,5.1C5.2,4.9 5.1,4.7 5.1,4.5C4.8,4.6 4.8,4.9 4.7,5.1C4.7,5.1 4.7,5.1 4.7,5.1C4.5,5.3 4.3,5.6 4.3,5.9C4.3,5.9 4.3,5.9 4.3,5.9C4.2,6.1 4,7 4.2,7.1C4.2,7.1 4.2,7.1 4.3,7.1C4.3,7.2 4.3,7.3 4.3,7.4C4.1,7.6 4,7.7 4,7.8C3.7,8.4 3.4,8.9 3.3,9.5C3.3,9.7 3.3,9.8 3.3,9.9C3.3,9.9 3.3,9.9 3.3,9.9C3.3,9.9 3.3,9.8 3.3,9.8C3.1,10 3.1,10.3 3,10.5C3.1,10.5 3.1,10.4 3.2,10.4C2.7,13 3.4,15.7 5,17.7C7.4,20.6 11.5,21.8 15.1,20.5C18.6,19.2 21,15.8 21,12C21,11.9 21,11.8 21,11.7M13.5,4.1C15,4.4 16.4,5.1 17.5,6.1C17.6,6.2 17.7,6.4 17.7,6.4C17.4,6.1 16.7,5.6 16.3,5.8C16.4,6.1 17.6,7.6 17.7,7.7C17.7,7.7 18,9 18.1,9.1C18.1,9.1 18.1,9.1 18.1,9.1C18.1,9.1 18.1,9.1 18.1,9.1C18.1,9.3 17.4,11.9 17.4,12.3C17.4,12.4 16.5,14.2 16.6,14.2C16.3,14.9 16,14.9 15.9,15C15.8,15 15.2,15.2 14.5,15.4C13.9,15.5 13.2,15.7 12.7,15.6C12.4,15.6 12,15.6 11.7,15.4C11.6,15.3 10.8,14.9 10.6,14.8C10.3,14.7 10.1,14.5 9.9,14.3C10.2,14.3 10.8,14.3 11,14.3C11.6,14.2 14.2,13.3 14.1,12.9C14.1,12.6 13.6,12.4 13.4,12.2C13.1,12.1 11.9,12.3 11.4,12.5C11.4,12.5 9.5,12 9,11.6C9,11.5 8.9,10.9 8.9,10.8C8.8,10.7 9.2,10.4 9.2,10.4C9.2,10.4 10.2,9.4 10.2,9.3C10.4,9.3 10.6,9.1 10.7,9C10.6,9 10.8,8.9 11.1,8.7C11.1,8.7 11.1,8.7 11.1,8.7C11.4,8.5 11.6,8.5 11.6,8.2C11.6,8.2 12.1,7.3 11.5,7.4C11.5,7.4 10.6,7.3 10.3,7.3C10,7.5 9.9,7.4 9.6,7.3C9.6,7.3 9.4,7.1 9.4,7C9.5,6.8 10.2,5.3 10.5,5.2C10.3,4.8 9.3,5.1 9.1,5.4C9.1,5.4 8.3,6 7.9,6.1C7.9,6.1 7.9,6.1 7.9,6.1C7.9,6 7.4,5.9 6.9,5.9C8.7,4.4 11.1,3.7 13.5,4.1Z" /></g><g id="fish"><path d="M12,20L12.76,17C9.5,16.79 6.59,15.4 5.75,13.58C5.66,14.06 5.53,14.5 5.33,14.83C4.67,16 3.33,16 2,16C3.1,16 3.5,14.43 3.5,12.5C3.5,10.57 3.1,9 2,9C3.33,9 4.67,9 5.33,10.17C5.53,10.5 5.66,10.94 5.75,11.42C6.4,10 8.32,8.85 10.66,8.32L9,5C11,5 13,5 14.33,5.67C15.46,6.23 16.11,7.27 16.69,8.38C19.61,9.08 22,10.66 22,12.5C22,14.38 19.5,16 16.5,16.66C15.67,17.76 14.86,18.78 14.17,19.33C13.33,20 12.67,20 12,20M17,11A1,1 0 0,0 16,12A1,1 0 0,0 17,13A1,1 0 0,0 18,12A1,1 0 0,0 17,11Z" /></g><g id="flag"><path d="M14.4,6L14,4H5V21H7V14H12.6L13,16H20V6H14.4Z" /></g><g id="flag-checkered"><path d="M14.4,6H20V16H13L12.6,14H7V21H5V4H14L14.4,6M14,14H16V12H18V10H16V8H14V10L13,8V6H11V8H9V6H7V8H9V10H7V12H9V10H11V12H13V10L14,12V14M11,10V8H13V10H11M14,10H16V12H14V10Z" /></g><g id="flag-outline"><path d="M14.5,6H20V16H13L12.5,14H7V21H5V4H14L14.5,6M7,6V12H13L13.5,14H18V8H14L13.5,6H7Z" /></g><g id="flag-outline-variant"><path d="M6,3A1,1 0 0,1 7,4V4.88C8.06,4.44 9.5,4 11,4C14,4 14,6 16,6C19,6 20,4 20,4V12C20,12 19,14 16,14C13,14 13,12 11,12C8,12 7,14 7,14V21H5V4A1,1 0 0,1 6,3M7,7.25V11.5C7,11.5 9,10 11,10C13,10 14,12 16,12C18,12 18,11 18,11V7.5C18,7.5 17,8 16,8C14,8 13,6 11,6C9,6 7,7.25 7,7.25Z" /></g><g id="flag-triangle"><path d="M7,2H9V22H7V2M19,9L11,14.6V3.4L19,9Z" /></g><g id="flag-variant"><path d="M6,3A1,1 0 0,1 7,4V4.88C8.06,4.44 9.5,4 11,4C14,4 14,6 16,6C19,6 20,4 20,4V12C20,12 19,14 16,14C13,14 13,12 11,12C8,12 7,14 7,14V21H5V4A1,1 0 0,1 6,3Z" /></g><g id="flash"><path d="M7,2V13H10V22L17,10H13L17,2H7Z" /></g><g id="flash-auto"><path d="M16.85,7.65L18,4L19.15,7.65M19,2H17L13.8,11H15.7L16.4,9H19.6L20.3,11H22.2M3,2V14H6V23L13,11H9L13,2H3Z" /></g><g id="flash-off"><path d="M17,10H13L17,2H7V4.18L15.46,12.64M3.27,3L2,4.27L7,9.27V13H10V22L13.58,15.86L17.73,20L19,18.73L3.27,3Z" /></g><g id="flash-outline"><path d="M7,2H17L13.5,9H17L10,22V14H7V2M9,4V12H12V14.66L14,11H10.24L13.76,4H9Z" /></g><g id="flash-red-eye"><path d="M16,5C15.44,5 15,5.44 15,6C15,6.56 15.44,7 16,7C16.56,7 17,6.56 17,6C17,5.44 16.56,5 16,5M16,2C13.27,2 10.94,3.66 10,6C10.94,8.34 13.27,10 16,10C18.73,10 21.06,8.34 22,6C21.06,3.66 18.73,2 16,2M16,3.5A2.5,2.5 0 0,1 18.5,6A2.5,2.5 0 0,1 16,8.5A2.5,2.5 0 0,1 13.5,6A2.5,2.5 0 0,1 16,3.5M3,2V14H6V23L13,11H9L10.12,8.5C9.44,7.76 8.88,6.93 8.5,6C9.19,4.29 10.5,2.88 12.11,2H3Z" /></g><g id="flashlight"><path d="M9,10L6,5H18L15,10H9M18,4H6V2H18V4M9,22V11H15V22H9M12,13A1,1 0 0,0 11,14A1,1 0 0,0 12,15A1,1 0 0,0 13,14A1,1 0 0,0 12,13Z" /></g><g id="flashlight-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L15,18.27V22H9V12.27L2,5.27M18,5L15,10H11.82L6.82,5H18M18,4H6V2H18V4M15,11V13.18L12.82,11H15Z" /></g><g id="flask"><path d="M6,22A3,3 0 0,1 3,19C3,18.4 3.18,17.84 3.5,17.37L9,7.81V6A1,1 0 0,1 8,5V4A2,2 0 0,1 10,2H14A2,2 0 0,1 16,4V5A1,1 0 0,1 15,6V7.81L20.5,17.37C20.82,17.84 21,18.4 21,19A3,3 0 0,1 18,22H6M5,19A1,1 0 0,0 6,20H18A1,1 0 0,0 19,19C19,18.79 18.93,18.59 18.82,18.43L16.53,14.47L14,17L8.93,11.93L5.18,18.43C5.07,18.59 5,18.79 5,19M13,10A1,1 0 0,0 12,11A1,1 0 0,0 13,12A1,1 0 0,0 14,11A1,1 0 0,0 13,10Z" /></g><g id="flask-empty"><path d="M6,22A3,3 0 0,1 3,19C3,18.4 3.18,17.84 3.5,17.37L9,7.81V6A1,1 0 0,1 8,5V4A2,2 0 0,1 10,2H14A2,2 0 0,1 16,4V5A1,1 0 0,1 15,6V7.81L20.5,17.37C20.82,17.84 21,18.4 21,19A3,3 0 0,1 18,22H6Z" /></g><g id="flask-empty-outline"><path d="M5,19A1,1 0 0,0 6,20H18A1,1 0 0,0 19,19C19,18.79 18.93,18.59 18.82,18.43L13,8.35V4H11V8.35L5.18,18.43C5.07,18.59 5,18.79 5,19M6,22A3,3 0 0,1 3,19C3,18.4 3.18,17.84 3.5,17.37L9,7.81V6A1,1 0 0,1 8,5V4A2,2 0 0,1 10,2H14A2,2 0 0,1 16,4V5A1,1 0 0,1 15,6V7.81L20.5,17.37C20.82,17.84 21,18.4 21,19A3,3 0 0,1 18,22H6Z" /></g><g id="flask-outline"><path d="M5,19A1,1 0 0,0 6,20H18A1,1 0 0,0 19,19C19,18.79 18.93,18.59 18.82,18.43L13,8.35V4H11V8.35L5.18,18.43C5.07,18.59 5,18.79 5,19M6,22A3,3 0 0,1 3,19C3,18.4 3.18,17.84 3.5,17.37L9,7.81V6A1,1 0 0,1 8,5V4A2,2 0 0,1 10,2H14A2,2 0 0,1 16,4V5A1,1 0 0,1 15,6V7.81L20.5,17.37C20.82,17.84 21,18.4 21,19A3,3 0 0,1 18,22H6M13,16L14.34,14.66L16.27,18H7.73L10.39,13.39L13,16M12.5,12A0.5,0.5 0 0,1 13,12.5A0.5,0.5 0 0,1 12.5,13A0.5,0.5 0 0,1 12,12.5A0.5,0.5 0 0,1 12.5,12Z" /></g><g id="flattr"><path d="M21,9V15A6,6 0 0,1 15,21H4.41L11.07,14.35C11.38,14.04 11.69,13.73 11.84,13.75C12,13.78 12,14.14 12,14.5V17H14A3,3 0 0,0 17,14V8.41L21,4.41V9M3,15V9A6,6 0 0,1 9,3H19.59L12.93,9.65C12.62,9.96 12.31,10.27 12.16,10.25C12,10.22 12,9.86 12,9.5V7H10A3,3 0 0,0 7,10V15.59L3,19.59V15Z" /></g><g id="flip-to-back"><path d="M15,17H17V15H15M15,5H17V3H15M5,7H3V19A2,2 0 0,0 5,21H17V19H5M19,17A2,2 0 0,0 21,15H19M19,9H21V7H19M19,13H21V11H19M9,17V15H7A2,2 0 0,0 9,17M13,3H11V5H13M19,3V5H21C21,3.89 20.1,3 19,3M13,15H11V17H13M9,3C7.89,3 7,3.89 7,5H9M9,11H7V13H9M9,7H7V9H9V7Z" /></g><g id="flip-to-front"><path d="M7,21H9V19H7M11,21H13V19H11M19,15H9V5H19M19,3H9C7.89,3 7,3.89 7,5V15A2,2 0 0,0 9,17H14L18,17H19A2,2 0 0,0 21,15V5C21,3.89 20.1,3 19,3M15,21H17V19H15M3,9H5V7H3M5,21V19H3A2,2 0 0,0 5,21M3,17H5V15H3M3,13H5V11H3V13Z" /></g><g id="floppy"><path d="M4.5,22L2,19.5V4A2,2 0 0,1 4,2H20A2,2 0 0,1 22,4V20A2,2 0 0,1 20,22H17V15A1,1 0 0,0 16,14H7A1,1 0 0,0 6,15V22H4.5M5,4V10A1,1 0 0,0 6,11H18A1,1 0 0,0 19,10V4H5M8,16H11V20H8V16M20,4V5H21V4H20Z" /></g><g id="flower"><path d="M3,13A9,9 0 0,0 12,22C12,17 7.97,13 3,13M12,5.5A2.5,2.5 0 0,1 14.5,8A2.5,2.5 0 0,1 12,10.5A2.5,2.5 0 0,1 9.5,8A2.5,2.5 0 0,1 12,5.5M5.6,10.25A2.5,2.5 0 0,0 8.1,12.75C8.63,12.75 9.12,12.58 9.5,12.31C9.5,12.37 9.5,12.43 9.5,12.5A2.5,2.5 0 0,0 12,15A2.5,2.5 0 0,0 14.5,12.5C14.5,12.43 14.5,12.37 14.5,12.31C14.88,12.58 15.37,12.75 15.9,12.75C17.28,12.75 18.4,11.63 18.4,10.25C18.4,9.25 17.81,8.4 16.97,8C17.81,7.6 18.4,6.74 18.4,5.75C18.4,4.37 17.28,3.25 15.9,3.25C15.37,3.25 14.88,3.41 14.5,3.69C14.5,3.63 14.5,3.56 14.5,3.5A2.5,2.5 0 0,0 12,1A2.5,2.5 0 0,0 9.5,3.5C9.5,3.56 9.5,3.63 9.5,3.69C9.12,3.41 8.63,3.25 8.1,3.25A2.5,2.5 0 0,0 5.6,5.75C5.6,6.74 6.19,7.6 7.03,8C6.19,8.4 5.6,9.25 5.6,10.25M12,22A9,9 0 0,0 21,13C16,13 12,17 12,22Z" /></g><g id="folder"><path d="M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z" /></g><g id="folder-account"><path d="M19,17H11V16C11,14.67 13.67,14 15,14C16.33,14 19,14.67 19,16M15,9A2,2 0 0,1 17,11A2,2 0 0,1 15,13A2,2 0 0,1 13,11C13,9.89 13.9,9 15,9M20,6H12L10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6Z" /></g><g id="folder-download"><path d="M20,6A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10L12,6H20M19.25,13H16V9H14V13H10.75L15,17.25" /></g><g id="folder-google-drive"><path d="M13.75,9H16.14L19,14H16.05L13.5,9.46M18.3,17H12.75L14.15,14.5H19.27L19.53,14.96M11.5,17L10.4,14.86L13.24,9.9L14.74,12.56L12.25,17M20,6H12L10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6Z" /></g><g id="folder-image"><path d="M5,17L9.5,11L13,15.5L15.5,12.5L19,17M20,6H12L10,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8A2,2 0 0,0 20,6Z" /></g><g id="folder-lock"><path d="M20,6A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10L12,6H20M19,17V13H18V12A3,3 0 0,0 15,9A3,3 0 0,0 12,12V13H11V17H19M15,11A1,1 0 0,1 16,12V13H14V12A1,1 0 0,1 15,11Z" /></g><g id="folder-lock-open"><path d="M20,6A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10L12,6H20M19,17V13H18L16,13H14V11A1,1 0 0,1 15,10A1,1 0 0,1 16,11H18A3,3 0 0,0 15,8A3,3 0 0,0 12,11V13H11V17H19Z" /></g><g id="folder-move"><path d="M9,18V15H5V11H9V8L14,13M20,6H12L10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6Z" /></g><g id="folder-multiple"><path d="M22,4H14L12,2H6A2,2 0 0,0 4,4V16A2,2 0 0,0 6,18H22A2,2 0 0,0 24,16V6A2,2 0 0,0 22,4M2,6H0V11H0V20A2,2 0 0,0 2,22H20V20H2V6Z" /></g><g id="folder-multiple-image"><path d="M7,15L11.5,9L15,13.5L17.5,10.5L21,15M22,4H14L12,2H6A2,2 0 0,0 4,4V16A2,2 0 0,0 6,18H22A2,2 0 0,0 24,16V6A2,2 0 0,0 22,4M2,6H0V11H0V20A2,2 0 0,0 2,22H20V20H2V6Z" /></g><g id="folder-multiple-outline"><path d="M22,4A2,2 0 0,1 24,6V16A2,2 0 0,1 22,18H6A2,2 0 0,1 4,16V4A2,2 0 0,1 6,2H12L14,4H22M2,6V20H20V22H2A2,2 0 0,1 0,20V11H0V6H2M6,6V16H22V6H6Z" /></g><g id="folder-outline"><path d="M20,18H4V8H20M20,6H12L10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6Z" /></g><g id="folder-plus"><path d="M10,4L12,6H20A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10M15,9V12H12V14H15V17H17V14H20V12H17V9H15Z" /></g><g id="folder-remove"><path d="M10,4L12,6H20A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10M12.46,10.88L14.59,13L12.46,15.12L13.88,16.54L16,14.41L18.12,16.54L19.54,15.12L17.41,13L19.54,10.88L18.12,9.46L16,11.59L13.88,9.46L12.46,10.88Z" /></g><g id="folder-star"><path d="M20,6H12L10,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8A2,2 0 0,0 20,6M17.94,17L15,15.28L12.06,17L12.84,13.67L10.25,11.43L13.66,11.14L15,8L16.34,11.14L19.75,11.43L17.16,13.67L17.94,17Z" /></g><g id="folder-upload"><path d="M20,6A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H10L12,6H20M10.75,13H14V17H16V13H19.25L15,8.75" /></g><g id="food"><path d="M15.5,21L14,8H16.23L15.1,3.46L16.84,3L18.09,8H22L20.5,21H15.5M5,11H10A3,3 0 0,1 13,14H2A3,3 0 0,1 5,11M13,18A3,3 0 0,1 10,21H5A3,3 0 0,1 2,18H13M3,15H8L9.5,16.5L11,15H12A1,1 0 0,1 13,16A1,1 0 0,1 12,17H3A1,1 0 0,1 2,16A1,1 0 0,1 3,15Z" /></g><g id="food-apple"><path d="M20,10C22,13 17,22 15,22C13,22 13,21 12,21C11,21 11,22 9,22C7,22 2,13 4,10C6,7 9,7 11,8V5C5.38,8.07 4.11,3.78 4.11,3.78C4.11,3.78 6.77,0.19 11,5V3H13V8C15,7 18,7 20,10Z" /></g><g id="food-fork-drink"><path d="M3,3A1,1 0 0,0 2,4V8L2,9.5C2,11.19 3.03,12.63 4.5,13.22V19.5A1.5,1.5 0 0,0 6,21A1.5,1.5 0 0,0 7.5,19.5V13.22C8.97,12.63 10,11.19 10,9.5V8L10,4A1,1 0 0,0 9,3A1,1 0 0,0 8,4V8A0.5,0.5 0 0,1 7.5,8.5A0.5,0.5 0 0,1 7,8V4A1,1 0 0,0 6,3A1,1 0 0,0 5,4V8A0.5,0.5 0 0,1 4.5,8.5A0.5,0.5 0 0,1 4,8V4A1,1 0 0,0 3,3M19.88,3C19.75,3 19.62,3.09 19.5,3.16L16,5.25V9H12V11H13L14,21H20L21,11H22V9H18V6.34L20.5,4.84C21,4.56 21.13,4 20.84,3.5C20.63,3.14 20.26,2.95 19.88,3Z" /></g><g id="food-off"><path d="M2,5.27L3.28,4L21,21.72L19.73,23L17.73,21H15.5L15.21,18.5L12.97,16.24C12.86,16.68 12.47,17 12,17H3A1,1 0 0,1 2,16A1,1 0 0,1 3,15H8L9.5,16.5L11,15H11.73L10.73,14H2A3,3 0 0,1 5,11H7.73L2,5.27M14,8H16.23L15.1,3.46L16.84,3L18.09,8H22L20.74,18.92L14.54,12.72L14,8M13,18A3,3 0 0,1 10,21H5A3,3 0 0,1 2,18H13Z" /></g><g id="food-variant"><path d="M22,18A4,4 0 0,1 18,22H15A4,4 0 0,1 11,18V16H17.79L20.55,11.23L22.11,12.13L19.87,16H22V18M9,22H2C2,19 2,16 2.33,12.83C2.6,10.3 3.08,7.66 3.6,5H3V3H4L7,3H8V5H7.4C7.92,7.66 8.4,10.3 8.67,12.83C9,16 9,19 9,22Z" /></g><g id="football"><path d="M7.5,7.5C9.17,5.87 11.29,4.69 13.37,4.18C15.46,3.67 17.5,3.83 18.6,4C19.71,4.15 19.87,4.31 20.03,5.41C20.18,6.5 20.33,8.55 19.82,10.63C19.31,12.71 18.13,14.83 16.5,16.5C14.83,18.13 12.71,19.31 10.63,19.82C8.55,20.33 6.5,20.18 5.41,20.03C4.31,19.87 4.15,19.71 4,18.6C3.83,17.5 3.67,15.46 4.18,13.37C4.69,11.29 5.87,9.17 7.5,7.5M7.3,15.79L8.21,16.7L9.42,15.5L10.63,16.7L11.54,15.79L10.34,14.58L12,12.91L13.21,14.12L14.12,13.21L12.91,12L14.58,10.34L15.79,11.54L16.7,10.63L15.5,9.42L16.7,8.21L15.79,7.3L14.58,8.5L13.37,7.3L12.46,8.21L13.66,9.42L12,11.09L10.79,9.88L9.88,10.79L11.09,12L9.42,13.66L8.21,12.46L7.3,13.37L8.5,14.58L7.3,15.79Z" /></g><g id="football-australian"><path d="M7.5,7.5C9.17,5.87 11.29,4.69 13.37,4.18C18,3 21,6 19.82,10.63C19.31,12.71 18.13,14.83 16.5,16.5C14.83,18.13 12.71,19.31 10.63,19.82C6,21 3,18 4.18,13.37C4.69,11.29 5.87,9.17 7.5,7.5M10.62,11.26L10.26,11.62L12.38,13.74L12.74,13.38L10.62,11.26M11.62,10.26L11.26,10.62L13.38,12.74L13.74,12.38L11.62,10.26M9.62,12.26L9.26,12.62L11.38,14.74L11.74,14.38L9.62,12.26M12.63,9.28L12.28,9.63L14.4,11.75L14.75,11.4L12.63,9.28M8.63,13.28L8.28,13.63L10.4,15.75L10.75,15.4L8.63,13.28M13.63,8.28L13.28,8.63L15.4,10.75L15.75,10.4L13.63,8.28Z" /></g><g id="football-helmet"><path d="M13.5,12A1.5,1.5 0 0,0 12,13.5A1.5,1.5 0 0,0 13.5,15A1.5,1.5 0 0,0 15,13.5A1.5,1.5 0 0,0 13.5,12M13.5,3C18.19,3 22,6.58 22,11C22,12.62 22,14 21.09,16C17,16 16,20 12.5,20C10.32,20 9.27,18.28 9.05,16H9L8.24,16L6.96,20.3C6.81,20.79 6.33,21.08 5.84,21H3A1,1 0 0,1 2,20A1,1 0 0,1 3,19V16A1,1 0 0,1 2,15A1,1 0 0,1 3,14H6.75L7.23,12.39C6.72,12.14 6.13,12 5.5,12H5.07L5,11C5,6.58 8.81,3 13.5,3M5,16V19H5.26L6.15,16H5Z" /></g><g id="format-align-center"><path d="M3,3H21V5H3V3M7,7H17V9H7V7M3,11H21V13H3V11M7,15H17V17H7V15M3,19H21V21H3V19Z" /></g><g id="format-align-justify"><path d="M3,3H21V5H3V3M3,7H21V9H3V7M3,11H21V13H3V11M3,15H21V17H3V15M3,19H21V21H3V19Z" /></g><g id="format-align-left"><path d="M3,3H21V5H3V3M3,7H15V9H3V7M3,11H21V13H3V11M3,15H15V17H3V15M3,19H21V21H3V19Z" /></g><g id="format-align-right"><path d="M3,3H21V5H3V3M9,7H21V9H9V7M3,11H21V13H3V11M9,15H21V17H9V15M3,19H21V21H3V19Z" /></g><g id="format-annotation-plus"><path d="M8.5,7H10.5L16,21H13.6L12.5,18H6.3L5.2,21H3L8.5,7M7.1,16H11.9L9.5,9.7L7.1,16M22,5V7H19V10H17V7H14V5H17V2H19V5H22Z" /></g><g id="format-bold"><path d="M13.5,15.5H10V12.5H13.5A1.5,1.5 0 0,1 15,14A1.5,1.5 0 0,1 13.5,15.5M10,6.5H13A1.5,1.5 0 0,1 14.5,8A1.5,1.5 0 0,1 13,9.5H10M15.6,10.79C16.57,10.11 17.25,9 17.25,8C17.25,5.74 15.5,4 13.25,4H7V18H14.04C16.14,18 17.75,16.3 17.75,14.21C17.75,12.69 16.89,11.39 15.6,10.79Z" /></g><g id="format-clear"><path d="M6,5V5.18L8.82,8H11.22L10.5,9.68L12.6,11.78L14.21,8H20V5H6M3.27,5L2,6.27L8.97,13.24L6.5,19H9.5L11.07,15.34L16.73,21L18,19.73L3.55,5.27L3.27,5Z" /></g><g id="format-color-fill"><path d="M19,11.5C19,11.5 17,13.67 17,15A2,2 0 0,0 19,17A2,2 0 0,0 21,15C21,13.67 19,11.5 19,11.5M5.21,10L10,5.21L14.79,10M16.56,8.94L7.62,0L6.21,1.41L8.59,3.79L3.44,8.94C2.85,9.5 2.85,10.47 3.44,11.06L8.94,16.56C9.23,16.85 9.62,17 10,17C10.38,17 10.77,16.85 11.06,16.56L16.56,11.06C17.15,10.47 17.15,9.5 16.56,8.94Z" /></g><g id="format-color-text"><path d="M9.62,12L12,5.67L14.37,12M11,3L5.5,17H7.75L8.87,14H15.12L16.25,17H18.5L13,3H11Z" /></g><g id="format-float-center"><path d="M9,7H15V13H9V7M3,3H21V5H3V3M3,15H21V17H3V15M3,19H17V21H3V19Z" /></g><g id="format-float-left"><path d="M3,7H9V13H3V7M3,3H21V5H3V3M21,7V9H11V7H21M21,11V13H11V11H21M3,15H17V17H3V15M3,19H21V21H3V19Z" /></g><g id="format-float-none"><path d="M3,7H9V13H3V7M3,3H21V5H3V3M21,11V13H11V11H21M3,15H17V17H3V15M3,19H21V21H3V19Z" /></g><g id="format-float-right"><path d="M15,7H21V13H15V7M3,3H21V5H3V3M13,7V9H3V7H13M9,11V13H3V11H9M3,15H17V17H3V15M3,19H21V21H3V19Z" /></g><g id="format-header-1"><path d="M3,4H5V10H9V4H11V18H9V12H5V18H3V4M14,18V16H16V6.31L13.5,7.75V5.44L16,4H18V16H20V18H14Z" /></g><g id="format-header-2"><path d="M3,4H5V10H9V4H11V18H9V12H5V18H3V4M21,18H15A2,2 0 0,1 13,16C13,15.47 13.2,15 13.54,14.64L18.41,9.41C18.78,9.05 19,8.55 19,8A2,2 0 0,0 17,6A2,2 0 0,0 15,8H13A4,4 0 0,1 17,4A4,4 0 0,1 21,8C21,9.1 20.55,10.1 19.83,10.83L15,16H21V18Z" /></g><g id="format-header-3"><path d="M3,4H5V10H9V4H11V18H9V12H5V18H3V4M15,4H19A2,2 0 0,1 21,6V16A2,2 0 0,1 19,18H15A2,2 0 0,1 13,16V15H15V16H19V12H15V10H19V6H15V7H13V6A2,2 0 0,1 15,4Z" /></g><g id="format-header-4"><path d="M3,4H5V10H9V4H11V18H9V12H5V18H3V4M18,18V13H13V11L18,4H20V11H21V13H20V18H18M18,11V7.42L15.45,11H18Z" /></g><g id="format-header-5"><path d="M3,4H5V10H9V4H11V18H9V12H5V18H3V4M15,4H20V6H15V10H17A4,4 0 0,1 21,14A4,4 0 0,1 17,18H15A2,2 0 0,1 13,16V15H15V16H17A2,2 0 0,0 19,14A2,2 0 0,0 17,12H15A2,2 0 0,1 13,10V6A2,2 0 0,1 15,4Z" /></g><g id="format-header-6"><path d="M3,4H5V10H9V4H11V18H9V12H5V18H3V4M15,4H19A2,2 0 0,1 21,6V7H19V6H15V10H19A2,2 0 0,1 21,12V16A2,2 0 0,1 19,18H15A2,2 0 0,1 13,16V6A2,2 0 0,1 15,4M15,12V16H19V12H15Z" /></g><g id="format-header-decrease"><path d="M4,4H6V10H10V4H12V18H10V12H6V18H4V4M20.42,7.41L16.83,11L20.42,14.59L19,16L14,11L19,6L20.42,7.41Z" /></g><g id="format-header-equal"><path d="M4,4H6V10H10V4H12V18H10V12H6V18H4V4M14,10V8H21V10H14M14,12H21V14H14V12Z" /></g><g id="format-header-increase"><path d="M4,4H6V10H10V4H12V18H10V12H6V18H4V4M14.59,7.41L18.17,11L14.59,14.59L16,16L21,11L16,6L14.59,7.41Z" /></g><g id="format-header-pound"><path d="M3,4H5V10H9V4H11V18H9V12H5V18H3V4M13,8H15.31L15.63,5H17.63L17.31,8H19.31L19.63,5H21.63L21.31,8H23V10H21.1L20.9,12H23V14H20.69L20.37,17H18.37L18.69,14H16.69L16.37,17H14.37L14.69,14H13V12H14.9L15.1,10H13V8M17.1,10L16.9,12H18.9L19.1,10H17.1Z" /></g><g id="format-horizontal-align-center"><path d="M19,16V13H23V11H19V8L15,12L19,16M5,8V11H1V13H5V16L9,12L5,8M11,20H13V4H11V20Z" /></g><g id="format-horizontal-align-left"><path d="M11,16V13H21V11H11V8L7,12L11,16M3,20H5V4H3V20Z" /></g><g id="format-horizontal-align-right"><path d="M13,8V11H3V13H13V16L17,12L13,8M19,20H21V4H19V20Z" /></g><g id="format-indent-decrease"><path d="M11,13H21V11H11M11,9H21V7H11M3,3V5H21V3M3,21H21V19H3M3,12L7,16V8M11,17H21V15H11V17Z" /></g><g id="format-indent-increase"><path d="M11,13H21V11H11M11,9H21V7H11M3,3V5H21V3M11,17H21V15H11M3,8V16L7,12M3,21H21V19H3V21Z" /></g><g id="format-italic"><path d="M10,4V7H12.21L8.79,15H6V18H14V15H11.79L15.21,7H18V4H10Z" /></g><g id="format-line-spacing"><path d="M10,13H22V11H10M10,19H22V17H10M10,7H22V5H10M6,7H8.5L5,3.5L1.5,7H4V17H1.5L5,20.5L8.5,17H6V7Z" /></g><g id="format-line-style"><path d="M3,16H8V14H3V16M9.5,16H14.5V14H9.5V16M16,16H21V14H16V16M3,20H5V18H3V20M7,20H9V18H7V20M11,20H13V18H11V20M15,20H17V18H15V20M19,20H21V18H19V20M3,12H11V10H3V12M13,12H21V10H13V12M3,4V8H21V4H3Z" /></g><g id="format-line-weight"><path d="M3,17H21V15H3V17M3,20H21V19H3V20M3,13H21V10H3V13M3,4V8H21V4H3Z" /></g><g id="format-list-bulleted"><path d="M7,5H21V7H7V5M7,13V11H21V13H7M4,4.5A1.5,1.5 0 0,1 5.5,6A1.5,1.5 0 0,1 4,7.5A1.5,1.5 0 0,1 2.5,6A1.5,1.5 0 0,1 4,4.5M4,10.5A1.5,1.5 0 0,1 5.5,12A1.5,1.5 0 0,1 4,13.5A1.5,1.5 0 0,1 2.5,12A1.5,1.5 0 0,1 4,10.5M7,19V17H21V19H7M4,16.5A1.5,1.5 0 0,1 5.5,18A1.5,1.5 0 0,1 4,19.5A1.5,1.5 0 0,1 2.5,18A1.5,1.5 0 0,1 4,16.5Z" /></g><g id="format-list-bulleted-type"><path d="M5,9.5L7.5,14H2.5L5,9.5M3,4H7V8H3V4M5,20A2,2 0 0,0 7,18A2,2 0 0,0 5,16A2,2 0 0,0 3,18A2,2 0 0,0 5,20M9,5V7H21V5H9M9,19H21V17H9V19M9,13H21V11H9V13Z" /></g><g id="format-list-numbers"><path d="M7,13H21V11H7M7,19H21V17H7M7,7H21V5H7M2,11H3.8L2,13.1V14H5V13H3.2L5,10.9V10H2M3,8H4V4H2V5H3M2,17H4V17.5H3V18.5H4V19H2V20H5V16H2V17Z" /></g><g id="format-page-break"><path d="M7,11H9V13H7V11M11,11H13V13H11V11M19,17H15V11.17L21,17.17V22H3V13H5V20H19V17M3,2H21V11H19V4H5V11H3V2Z" /></g><g id="format-paint"><path d="M18,4V3A1,1 0 0,0 17,2H5A1,1 0 0,0 4,3V7A1,1 0 0,0 5,8H17A1,1 0 0,0 18,7V6H19V10H9V21A1,1 0 0,0 10,22H12A1,1 0 0,0 13,21V12H21V4H18Z" /></g><g id="format-paragraph"><path d="M13,4A4,4 0 0,1 17,8A4,4 0 0,1 13,12H11V18H9V4H13M13,10A2,2 0 0,0 15,8A2,2 0 0,0 13,6H11V10H13Z" /></g><g id="format-pilcrow"><path d="M10,11A4,4 0 0,1 6,7A4,4 0 0,1 10,3H18V5H16V21H14V5H12V21H10V11Z" /></g><g id="format-quote"><path d="M14,17H17L19,13V7H13V13H16M6,17H9L11,13V7H5V13H8L6,17Z" /></g><g id="format-rotate-90"><path d="M7.34,6.41L0.86,12.9L7.35,19.38L13.84,12.9L7.34,6.41M3.69,12.9L7.35,9.24L11,12.9L7.34,16.56L3.69,12.9M19.36,6.64C17.61,4.88 15.3,4 13,4V0.76L8.76,5L13,9.24V6C14.79,6 16.58,6.68 17.95,8.05C20.68,10.78 20.68,15.22 17.95,17.95C16.58,19.32 14.79,20 13,20C12.03,20 11.06,19.79 10.16,19.39L8.67,20.88C10,21.62 11.5,22 13,22C15.3,22 17.61,21.12 19.36,19.36C22.88,15.85 22.88,10.15 19.36,6.64Z" /></g><g id="format-section"><path d="M15.67,4.42C14.7,3.84 13.58,3.54 12.45,3.56C10.87,3.56 9.66,4.34 9.66,5.56C9.66,6.96 11,7.47 13,8.14C15.5,8.95 17.4,9.97 17.4,12.38C17.36,13.69 16.69,14.89 15.6,15.61C16.25,16.22 16.61,17.08 16.6,17.97C16.6,20.79 14,21.97 11.5,21.97C10.04,22.03 8.59,21.64 7.35,20.87L8,19.34C9.04,20.05 10.27,20.43 11.53,20.44C13.25,20.44 14.53,19.66 14.53,18.24C14.53,17 13.75,16.31 11.25,15.45C8.5,14.5 6.6,13.5 6.6,11.21C6.67,9.89 7.43,8.69 8.6,8.07C7.97,7.5 7.61,6.67 7.6,5.81C7.6,3.45 9.77,2 12.53,2C13.82,2 15.09,2.29 16.23,2.89L15.67,4.42M11.35,13.42C12.41,13.75 13.44,14.18 14.41,14.71C15.06,14.22 15.43,13.45 15.41,12.64C15.41,11.64 14.77,10.76 13,10.14C11.89,9.77 10.78,9.31 9.72,8.77C8.97,9.22 8.5,10.03 8.5,10.91C8.5,11.88 9.23,12.68 11.35,13.42Z" /></g><g id="format-size"><path d="M3,12H6V19H9V12H12V9H3M9,4V7H14V19H17V7H22V4H9Z" /></g><g id="format-strikethrough"><path d="M3,14H21V12H3M5,4V7H10V10H14V7H19V4M10,19H14V16H10V19Z" /></g><g id="format-strikethrough-variant"><path d="M23,12V14H18.61C19.61,16.14 19.56,22 12.38,22C4.05,22.05 4.37,15.5 4.37,15.5L8.34,15.55C8.37,18.92 11.5,18.92 12.12,18.88C12.76,18.83 15.15,18.84 15.34,16.5C15.42,15.41 14.32,14.58 13.12,14H1V12H23M19.41,7.89L15.43,7.86C15.43,7.86 15.6,5.09 12.15,5.08C8.7,5.06 9,7.28 9,7.56C9.04,7.84 9.34,9.22 12,9.88H5.71C5.71,9.88 2.22,3.15 10.74,2C19.45,0.8 19.43,7.91 19.41,7.89Z" /></g><g id="format-subscript"><path d="M16,7.41L11.41,12L16,16.59L14.59,18L10,13.41L5.41,18L4,16.59L8.59,12L4,7.41L5.41,6L10,10.59L14.59,6L16,7.41M21.85,21.03H16.97V20.03L17.86,19.23C18.62,18.58 19.18,18.04 19.56,17.6C19.93,17.16 20.12,16.75 20.13,16.36C20.14,16.08 20.05,15.85 19.86,15.66C19.68,15.5 19.39,15.38 19,15.38C18.69,15.38 18.42,15.44 18.16,15.56L17.5,15.94L17.05,14.77C17.32,14.56 17.64,14.38 18.03,14.24C18.42,14.1 18.85,14 19.32,14C20.1,14.04 20.7,14.25 21.1,14.66C21.5,15.07 21.72,15.59 21.72,16.23C21.71,16.79 21.53,17.31 21.18,17.78C20.84,18.25 20.42,18.7 19.91,19.14L19.27,19.66V19.68H21.85V21.03Z" /></g><g id="format-superscript"><path d="M16,7.41L11.41,12L16,16.59L14.59,18L10,13.41L5.41,18L4,16.59L8.59,12L4,7.41L5.41,6L10,10.59L14.59,6L16,7.41M21.85,9H16.97V8L17.86,7.18C18.62,6.54 19.18,6 19.56,5.55C19.93,5.11 20.12,4.7 20.13,4.32C20.14,4.04 20.05,3.8 19.86,3.62C19.68,3.43 19.39,3.34 19,3.33C18.69,3.34 18.42,3.4 18.16,3.5L17.5,3.89L17.05,2.72C17.32,2.5 17.64,2.33 18.03,2.19C18.42,2.05 18.85,2 19.32,2C20.1,2 20.7,2.2 21.1,2.61C21.5,3 21.72,3.54 21.72,4.18C21.71,4.74 21.53,5.26 21.18,5.73C20.84,6.21 20.42,6.66 19.91,7.09L19.27,7.61V7.63H21.85V9Z" /></g><g id="format-text"><path d="M18.5,4L19.66,8.35L18.7,8.61C18.25,7.74 17.79,6.87 17.26,6.43C16.73,6 16.11,6 15.5,6H13V16.5C13,17 13,17.5 13.33,17.75C13.67,18 14.33,18 15,18V19H9V18C9.67,18 10.33,18 10.67,17.75C11,17.5 11,17 11,16.5V6H8.5C7.89,6 7.27,6 6.74,6.43C6.21,6.87 5.75,7.74 5.3,8.61L4.34,8.35L5.5,4H18.5Z" /></g><g id="format-textdirection-l-to-r"><path d="M21,18L17,14V17H5V19H17V22M9,10V15H11V4H13V15H15V4H17V2H9A4,4 0 0,0 5,6A4,4 0 0,0 9,10Z" /></g><g id="format-textdirection-r-to-l"><path d="M8,17V14L4,18L8,22V19H20V17M10,10V15H12V4H14V15H16V4H18V2H10A4,4 0 0,0 6,6A4,4 0 0,0 10,10Z" /></g><g id="format-title"><path d="M5,4V7H10.5V19H13.5V7H19V4H5Z" /></g><g id="format-underline"><path d="M5,21H19V19H5V21M12,17A6,6 0 0,0 18,11V3H15.5V11A3.5,3.5 0 0,1 12,14.5A3.5,3.5 0 0,1 8.5,11V3H6V11A6,6 0 0,0 12,17Z" /></g><g id="format-vertical-align-bottom"><path d="M16,13H13V3H11V13H8L12,17L16,13M4,19V21H20V19H4Z" /></g><g id="format-vertical-align-center"><path d="M8,19H11V23H13V19H16L12,15L8,19M16,5H13V1H11V5H8L12,9L16,5M4,11V13H20V11H4Z" /></g><g id="format-vertical-align-top"><path d="M8,11H11V21H13V11H16L12,7L8,11M4,3V5H20V3H4Z" /></g><g id="format-wrap-inline"><path d="M8,7L13,17H3L8,7M3,3H21V5H3V3M21,15V17H14V15H21M3,19H21V21H3V19Z" /></g><g id="format-wrap-square"><path d="M12,7L17,17H7L12,7M3,3H21V5H3V3M3,7H6V9H3V7M21,7V9H18V7H21M3,11H6V13H3V11M21,11V13H18V11H21M3,15H6V17H3V15M21,15V17H18V15H21M3,19H21V21H3V19Z" /></g><g id="format-wrap-tight"><path d="M12,7L17,17H7L12,7M3,3H21V5H3V3M3,7H9V9H3V7M21,7V9H15V7H21M3,11H7V13H3V11M21,11V13H17V11H21M3,15H6V17H3V15M21,15V17H18V15H21M3,19H21V21H3V19Z" /></g><g id="format-wrap-top-bottom"><path d="M12,7L17,17H7L12,7M3,3H21V5H3V3M3,19H21V21H3V19Z" /></g><g id="forum"><path d="M17,12V3A1,1 0 0,0 16,2H3A1,1 0 0,0 2,3V17L6,13H16A1,1 0 0,0 17,12M21,6H19V15H6V17A1,1 0 0,0 7,18H18L22,22V7A1,1 0 0,0 21,6Z" /></g><g id="forward"><path d="M12,8V4L20,12L12,20V16H4V8H12Z" /></g><g id="foursquare"><path d="M17,5L16.57,7.5C16.5,7.73 16.2,8 15.91,8C15.61,8 12,8 12,8C11.53,8 10.95,8.32 10.95,8.79V9.2C10.95,9.67 11.53,10 12,10C12,10 14.95,10 15.28,10C15.61,10 15.93,10.36 15.86,10.71C15.79,11.07 14.94,13.28 14.9,13.5C14.86,13.67 14.64,14 14.25,14C13.92,14 11.37,14 11.37,14C10.85,14 10.69,14.07 10.34,14.5C10,14.94 7.27,18.1 7.27,18.1C7.24,18.13 7,18.04 7,18V5C7,4.7 7.61,4 8,4C8,4 16.17,4 16.5,4C16.82,4 17.08,4.61 17,5M17,14.45C17.11,13.97 18.78,6.72 19.22,4.55M17.58,2C17.58,2 8.38,2 6.91,2C5.43,2 5,3.11 5,3.8C5,4.5 5,20.76 5,20.76C5,21.54 5.42,21.84 5.66,21.93C5.9,22.03 6.55,22.11 6.94,21.66C6.94,21.66 11.65,16.22 11.74,16.13C11.87,16 11.87,16 12,16C12.26,16 14.2,16 15.26,16C16.63,16 16.85,15 17,14.45C17.11,13.97 18.78,6.72 19.22,4.55C19.56,2.89 19.14,2 17.58,2Z" /></g><g id="fridge"><path d="M9,21V22H7V21A2,2 0 0,1 5,19V4A2,2 0 0,1 7,2H17A2,2 0 0,1 19,4V19A2,2 0 0,1 17,21V22H15V21H9M7,4V9H17V4H7M7,19H17V11H7V19M8,12H10V15H8V12M8,6H10V8H8V6Z" /></g><g id="fridge-filled"><path d="M7,2H17A2,2 0 0,1 19,4V9H5V4A2,2 0 0,1 7,2M19,19A2,2 0 0,1 17,21V22H15V21H9V22H7V21A2,2 0 0,1 5,19V10H19V19M8,5V7H10V5H8M8,12V15H10V12H8Z" /></g><g id="fridge-filled-bottom"><path d="M8,8V6H10V8H8M7,2H17A2,2 0 0,1 19,4V19A2,2 0 0,1 17,21V22H15V21H9V22H7V21A2,2 0 0,1 5,19V4A2,2 0 0,1 7,2M7,4V9H17V4H7M8,12V15H10V12H8Z" /></g><g id="fridge-filled-top"><path d="M7,2A2,2 0 0,0 5,4V19A2,2 0 0,0 7,21V22H9V21H15V22H17V21A2,2 0 0,0 19,19V4A2,2 0 0,0 17,2H7M8,6H10V8H8V6M7,11H17V19H7V11M8,12V15H10V12H8Z" /></g><g id="fullscreen"><path d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z" /></g><g id="fullscreen-exit"><path d="M14,14H19V16H16V19H14V14M5,14H10V19H8V16H5V14M8,5H10V10H5V8H8V5M19,8V10H14V5H16V8H19Z" /></g><g id="function"><path d="M15.6,5.29C14.5,5.19 13.53,6 13.43,7.11L13.18,10H16V12H13L12.56,17.07C12.37,19.27 10.43,20.9 8.23,20.7C6.92,20.59 5.82,19.86 5.17,18.83L6.67,17.33C6.91,18.07 7.57,18.64 8.4,18.71C9.5,18.81 10.47,18 10.57,16.89L11,12H8V10H11.17L11.44,6.93C11.63,4.73 13.57,3.1 15.77,3.3C17.08,3.41 18.18,4.14 18.83,5.17L17.33,6.67C17.09,5.93 16.43,5.36 15.6,5.29Z" /></g><g id="gamepad"><path d="M16.5,9L13.5,12L16.5,15H22V9M9,16.5V22H15V16.5L12,13.5M7.5,9H2V15H7.5L10.5,12M15,7.5V2H9V7.5L12,10.5L15,7.5Z" /></g><g id="gamepad-variant"><path d="M7,6H17A6,6 0 0,1 23,12A6,6 0 0,1 17,18C15.22,18 13.63,17.23 12.53,16H11.47C10.37,17.23 8.78,18 7,18A6,6 0 0,1 1,12A6,6 0 0,1 7,6M6,9V11H4V13H6V15H8V13H10V11H8V9H6M15.5,12A1.5,1.5 0 0,0 14,13.5A1.5,1.5 0 0,0 15.5,15A1.5,1.5 0 0,0 17,13.5A1.5,1.5 0 0,0 15.5,12M18.5,9A1.5,1.5 0 0,0 17,10.5A1.5,1.5 0 0,0 18.5,12A1.5,1.5 0 0,0 20,10.5A1.5,1.5 0 0,0 18.5,9Z" /></g><g id="garage"><path d="M19,20H17V11H7V20H5V9L12,5L19,9V20M8,12H16V14H8V12M8,15H16V17H8V15M16,18V20H8V18H16Z" /></g><g id="garage-open"><path d="M19,20H17V11H7V20H5V9L12,5L19,9V20M8,12H16V14H8V12Z" /></g><g id="gas-cylinder"><path d="M16,9V14L16,20A2,2 0 0,1 14,22H10A2,2 0 0,1 8,20V14L8,9C8,7.14 9.27,5.57 11,5.13V4H9V2H15V4H13V5.13C14.73,5.57 16,7.14 16,9Z" /></g><g id="gas-station"><path d="M18,10A1,1 0 0,1 17,9A1,1 0 0,1 18,8A1,1 0 0,1 19,9A1,1 0 0,1 18,10M12,10H6V5H12M19.77,7.23L19.78,7.22L16.06,3.5L15,4.56L17.11,6.67C16.17,7 15.5,7.93 15.5,9A2.5,2.5 0 0,0 18,11.5C18.36,11.5 18.69,11.42 19,11.29V18.5A1,1 0 0,1 18,19.5A1,1 0 0,1 17,18.5V14C17,12.89 16.1,12 15,12H14V5C14,3.89 13.1,3 12,3H6C4.89,3 4,3.89 4,5V21H14V13.5H15.5V18.5A2.5,2.5 0 0,0 18,21A2.5,2.5 0 0,0 20.5,18.5V9C20.5,8.31 20.22,7.68 19.77,7.23Z" /></g><g id="gate"><path d="M9,5V10H7V6H5V10H3V8H1V20H3V18H5V20H7V18H9V20H11V18H13V20H15V18H17V20H19V18H21V20H23V8H21V10H19V6H17V10H15V5H13V10H11V5H9M3,12H5V16H3V12M7,12H9V16H7V12M11,12H13V16H11V12M15,12H17V16H15V12M19,12H21V16H19V12Z" /></g><g id="gauge"><path d="M17.3,18C19,16.5 20,14.4 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12C4,14.4 5,16.5 6.7,18C8.2,16.7 10,16 12,16C14,16 15.9,16.7 17.3,18M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M7,9A1,1 0 0,1 8,10A1,1 0 0,1 7,11A1,1 0 0,1 6,10A1,1 0 0,1 7,9M10,6A1,1 0 0,1 11,7A1,1 0 0,1 10,8A1,1 0 0,1 9,7A1,1 0 0,1 10,6M17,9A1,1 0 0,1 18,10A1,1 0 0,1 17,11A1,1 0 0,1 16,10A1,1 0 0,1 17,9M14.4,6.1C14.9,6.3 15.1,6.9 15,7.4L13.6,10.8C13.8,11.1 14,11.5 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12C10,11 10.7,10.1 11.7,10L13.1,6.7C13.3,6.1 13.9,5.9 14.4,6.1Z" /></g><g id="gavel"><path d="M2.3,20.28L11.9,10.68L10.5,9.26L9.78,9.97C9.39,10.36 8.76,10.36 8.37,9.97L7.66,9.26C7.27,8.87 7.27,8.24 7.66,7.85L13.32,2.19C13.71,1.8 14.34,1.8 14.73,2.19L15.44,2.9C15.83,3.29 15.83,3.92 15.44,4.31L14.73,5L16.15,6.43C16.54,6.04 17.17,6.04 17.56,6.43C17.95,6.82 17.95,7.46 17.56,7.85L18.97,9.26L19.68,8.55C20.07,8.16 20.71,8.16 21.1,8.55L21.8,9.26C22.19,9.65 22.19,10.29 21.8,10.68L16.15,16.33C15.76,16.72 15.12,16.72 14.73,16.33L14.03,15.63C13.63,15.24 13.63,14.6 14.03,14.21L14.73,13.5L13.32,12.09L3.71,21.7C3.32,22.09 2.69,22.09 2.3,21.7C1.91,21.31 1.91,20.67 2.3,20.28M20,19A2,2 0 0,1 22,21V22H12V21A2,2 0 0,1 14,19H20Z" /></g><g id="gender-female"><path d="M12,4A6,6 0 0,1 18,10C18,12.97 15.84,15.44 13,15.92V18H15V20H13V22H11V20H9V18H11V15.92C8.16,15.44 6,12.97 6,10A6,6 0 0,1 12,4M12,6A4,4 0 0,0 8,10A4,4 0 0,0 12,14A4,4 0 0,0 16,10A4,4 0 0,0 12,6Z" /></g><g id="gender-male"><path d="M9,9C10.29,9 11.5,9.41 12.47,10.11L17.58,5H13V3H21V11H19V6.41L13.89,11.5C14.59,12.5 15,13.7 15,15A6,6 0 0,1 9,21A6,6 0 0,1 3,15A6,6 0 0,1 9,9M9,11A4,4 0 0,0 5,15A4,4 0 0,0 9,19A4,4 0 0,0 13,15A4,4 0 0,0 9,11Z" /></g><g id="gender-male-female"><path d="M17.58,4H14V2H21V9H19V5.41L15.17,9.24C15.69,10.03 16,11 16,12C16,14.42 14.28,16.44 12,16.9V19H14V21H12V23H10V21H8V19H10V16.9C7.72,16.44 6,14.42 6,12A5,5 0 0,1 11,7C12,7 12.96,7.3 13.75,7.83L17.58,4M11,9A3,3 0 0,0 8,12A3,3 0 0,0 11,15A3,3 0 0,0 14,12A3,3 0 0,0 11,9Z" /></g><g id="gender-transgender"><path d="M19.58,3H15V1H23V9H21V4.41L16.17,9.24C16.69,10.03 17,11 17,12C17,14.42 15.28,16.44 13,16.9V19H15V21H13V23H11V21H9V19H11V16.9C8.72,16.44 7,14.42 7,12C7,11 7.3,10.04 7.82,9.26L6.64,8.07L5.24,9.46L3.83,8.04L5.23,6.65L3,4.42V8H1V1H8V3H4.41L6.64,5.24L8.08,3.81L9.5,5.23L8.06,6.66L9.23,7.84C10,7.31 11,7 12,7C13,7 13.96,7.3 14.75,7.83L19.58,3M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9Z" /></g><g id="ghost"><path d="M12,2A9,9 0 0,0 3,11V22L6,19L9,22L12,19L15,22L18,19L21,22V11A9,9 0 0,0 12,2M9,8A2,2 0 0,1 11,10A2,2 0 0,1 9,12A2,2 0 0,1 7,10A2,2 0 0,1 9,8M15,8A2,2 0 0,1 17,10A2,2 0 0,1 15,12A2,2 0 0,1 13,10A2,2 0 0,1 15,8Z" /></g><g id="gift"><path d="M22,12V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V12A1,1 0 0,1 1,11V8A2,2 0 0,1 3,6H6.17C6.06,5.69 6,5.35 6,5A3,3 0 0,1 9,2C10,2 10.88,2.5 11.43,3.24V3.23L12,4L12.57,3.23V3.24C13.12,2.5 14,2 15,2A3,3 0 0,1 18,5C18,5.35 17.94,5.69 17.83,6H21A2,2 0 0,1 23,8V11A1,1 0 0,1 22,12M4,20H11V12H4V20M20,20V12H13V20H20M9,4A1,1 0 0,0 8,5A1,1 0 0,0 9,6A1,1 0 0,0 10,5A1,1 0 0,0 9,4M15,4A1,1 0 0,0 14,5A1,1 0 0,0 15,6A1,1 0 0,0 16,5A1,1 0 0,0 15,4M3,8V10H11V8H3M13,8V10H21V8H13Z" /></g><g id="git"><path d="M2.6,10.59L8.38,4.8L10.07,6.5C9.83,7.35 10.22,8.28 11,8.73V14.27C10.4,14.61 10,15.26 10,16A2,2 0 0,0 12,18A2,2 0 0,0 14,16C14,15.26 13.6,14.61 13,14.27V9.41L15.07,11.5C15,11.65 15,11.82 15,12A2,2 0 0,0 17,14A2,2 0 0,0 19,12A2,2 0 0,0 17,10C16.82,10 16.65,10 16.5,10.07L13.93,7.5C14.19,6.57 13.71,5.55 12.78,5.16C12.35,5 11.9,4.96 11.5,5.07L9.8,3.38L10.59,2.6C11.37,1.81 12.63,1.81 13.41,2.6L21.4,10.59C22.19,11.37 22.19,12.63 21.4,13.41L13.41,21.4C12.63,22.19 11.37,22.19 10.59,21.4L2.6,13.41C1.81,12.63 1.81,11.37 2.6,10.59Z" /></g><g id="github-box"><path d="M4,2H20A2,2 0 0,1 22,4V20A2,2 0 0,1 20,22H14.85C14.5,21.92 14.5,21.24 14.5,21V18.26C14.5,17.33 14.17,16.72 13.81,16.41C16.04,16.16 18.38,15.32 18.38,11.5C18.38,10.39 18,9.5 17.35,8.79C17.45,8.54 17.8,7.5 17.25,6.15C17.25,6.15 16.41,5.88 14.5,7.17C13.71,6.95 12.85,6.84 12,6.84C11.15,6.84 10.29,6.95 9.5,7.17C7.59,5.88 6.75,6.15 6.75,6.15C6.2,7.5 6.55,8.54 6.65,8.79C6,9.5 5.62,10.39 5.62,11.5C5.62,15.31 7.95,16.17 10.17,16.42C9.89,16.67 9.63,17.11 9.54,17.76C8.97,18 7.5,18.45 6.63,16.93C6.63,16.93 6.1,15.97 5.1,15.9C5.1,15.9 4.12,15.88 5,16.5C5,16.5 5.68,16.81 6.14,17.97C6.14,17.97 6.73,19.91 9.5,19.31V21C9.5,21.24 9.5,21.92 9.14,22H4A2,2 0 0,1 2,20V4A2,2 0 0,1 4,2Z" /></g><g id="github-circle"><path d="M12,2A10,10 0 0,0 2,12C2,16.42 4.87,20.17 8.84,21.5C9.34,21.58 9.5,21.27 9.5,21C9.5,20.77 9.5,20.14 9.5,19.31C6.73,19.91 6.14,17.97 6.14,17.97C5.68,16.81 5.03,16.5 5.03,16.5C4.12,15.88 5.1,15.9 5.1,15.9C6.1,15.97 6.63,16.93 6.63,16.93C7.5,18.45 8.97,18 9.54,17.76C9.63,17.11 9.89,16.67 10.17,16.42C7.95,16.17 5.62,15.31 5.62,11.5C5.62,10.39 6,9.5 6.65,8.79C6.55,8.54 6.2,7.5 6.75,6.15C6.75,6.15 7.59,5.88 9.5,7.17C10.29,6.95 11.15,6.84 12,6.84C12.85,6.84 13.71,6.95 14.5,7.17C16.41,5.88 17.25,6.15 17.25,6.15C17.8,7.5 17.45,8.54 17.35,8.79C18,9.5 18.38,10.39 18.38,11.5C18.38,15.32 16.04,16.16 13.81,16.41C14.17,16.72 14.5,17.33 14.5,18.26C14.5,19.6 14.5,20.68 14.5,21C14.5,21.27 14.66,21.59 15.17,21.5C19.14,20.16 22,16.42 22,12A10,10 0 0,0 12,2Z" /></g><g id="github-face"><path d="M20.38,8.53C20.54,8.13 21.06,6.54 20.21,4.39C20.21,4.39 18.9,4 15.91,6C14.66,5.67 13.33,5.62 12,5.62C10.68,5.62 9.34,5.67 8.09,6C5.1,3.97 3.79,4.39 3.79,4.39C2.94,6.54 3.46,8.13 3.63,8.53C2.61,9.62 2,11 2,12.72C2,19.16 6.16,20.61 12,20.61C17.79,20.61 22,19.16 22,12.72C22,11 21.39,9.62 20.38,8.53M12,19.38C7.88,19.38 4.53,19.19 4.53,15.19C4.53,14.24 5,13.34 5.8,12.61C7.14,11.38 9.43,12.03 12,12.03C14.59,12.03 16.85,11.38 18.2,12.61C19,13.34 19.5,14.23 19.5,15.19C19.5,19.18 16.13,19.38 12,19.38M8.86,13.12C8.04,13.12 7.36,14.12 7.36,15.34C7.36,16.57 8.04,17.58 8.86,17.58C9.69,17.58 10.36,16.58 10.36,15.34C10.36,14.11 9.69,13.12 8.86,13.12M15.14,13.12C14.31,13.12 13.64,14.11 13.64,15.34C13.64,16.58 14.31,17.58 15.14,17.58C15.96,17.58 16.64,16.58 16.64,15.34C16.64,14.11 16,13.12 15.14,13.12Z" /></g><g id="glass-flute"><path d="M8,2H16C15.67,5 15.33,8 14.75,9.83C14.17,11.67 13.33,12.33 12.92,14.08C12.5,15.83 12.5,18.67 13.08,20C13.67,21.33 14.83,21.17 15.42,21.25C16,21.33 16,21.67 16,22H8C8,21.67 8,21.33 8.58,21.25C9.17,21.17 10.33,21.33 10.92,20C11.5,18.67 11.5,15.83 11.08,14.08C10.67,12.33 9.83,11.67 9.25,9.83C8.67,8 8.33,5 8,2M10,4C10.07,5.03 10.15,6.07 10.24,7H13.76C13.85,6.07 13.93,5.03 14,4H10Z" /></g><g id="glass-mug"><path d="M10,4V7H18V4H10M8,2H20L21,2V3L20,4V20L21,21V22H20L8,22H7V21L8,20V18.6L4.2,16.83C3.5,16.5 3,15.82 3,15V8A2,2 0 0,1 5,6H8V4L7,3V2H8M5,15L8,16.39V8H5V15Z" /></g><g id="glass-stange"><path d="M8,2H16V22H8V2M10,4V7H14V4H10Z" /></g><g id="glass-tulip"><path d="M8,2H16C15.67,2.67 15.33,3.33 15.58,5C15.83,6.67 16.67,9.33 16.25,10.74C15.83,12.14 14.17,12.28 13.33,13.86C12.5,15.44 12.5,18.47 13.08,19.9C13.67,21.33 14.83,21.17 15.42,21.25C16,21.33 16,21.67 16,22H8C8,21.67 8,21.33 8.58,21.25C9.17,21.17 10.33,21.33 10.92,19.9C11.5,18.47 11.5,15.44 10.67,13.86C9.83,12.28 8.17,12.14 7.75,10.74C7.33,9.33 8.17,6.67 8.42,5C8.67,3.33 8.33,2.67 8,2M10,4C10,5.19 9.83,6.17 9.64,7H14.27C14.13,6.17 14,5.19 14,4H10Z" /></g><g id="glassdoor"><path d="M18,6H16V15C16,16 15.82,16.64 15,16.95L9.5,19V6C9.5,5.3 9.74,4.1 11,4.24L18,5V3.79L9,2.11C8.64,2.04 8.36,2 8,2C6.72,2 6,2.78 6,4V20.37C6,21.95 7.37,22.26 8,22L17,18.32C18,17.91 18,17 18,16V6Z" /></g><g id="glasses"><path d="M3,10C2.76,10 2.55,10.09 2.41,10.25C2.27,10.4 2.21,10.62 2.24,10.86L2.74,13.85C2.82,14.5 3.4,15 4,15H7C7.64,15 8.36,14.44 8.5,13.82L9.56,10.63C9.6,10.5 9.57,10.31 9.5,10.19C9.39,10.07 9.22,10 9,10H3M7,17H4C2.38,17 0.96,15.74 0.76,14.14L0.26,11.15C0.15,10.3 0.39,9.5 0.91,8.92C1.43,8.34 2.19,8 3,8H9C9.83,8 10.58,8.35 11.06,8.96C11.17,9.11 11.27,9.27 11.35,9.45C11.78,9.36 12.22,9.36 12.64,9.45C12.72,9.27 12.82,9.11 12.94,8.96C13.41,8.35 14.16,8 15,8H21C21.81,8 22.57,8.34 23.09,8.92C23.6,9.5 23.84,10.3 23.74,11.11L23.23,14.18C23.04,15.74 21.61,17 20,17H17C15.44,17 13.92,15.81 13.54,14.3L12.64,11.59C12.26,11.31 11.73,11.31 11.35,11.59L10.43,14.37C10.07,15.82 8.56,17 7,17M15,10C14.78,10 14.61,10.07 14.5,10.19C14.42,10.31 14.4,10.5 14.45,10.7L15.46,13.75C15.64,14.44 16.36,15 17,15H20C20.59,15 21.18,14.5 21.25,13.89L21.76,10.82C21.79,10.62 21.73,10.4 21.59,10.25C21.45,10.09 21.24,10 21,10H15Z" /></g><g id="gmail"><path d="M20,18H18V9.25L12,13L6,9.25V18H4V6H5.2L12,10.25L18.8,6H20M20,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z" /></g><g id="gnome"><path d="M18.42,2C14.26,2 13.5,7.93 15.82,7.93C18.16,7.93 22.58,2 18.42,2M12,2.73C11.92,2.73 11.85,2.73 11.78,2.74C9.44,3.04 10.26,7.12 11.5,7.19C12.72,7.27 14.04,2.73 12,2.73M7.93,4.34C7.81,4.34 7.67,4.37 7.53,4.43C5.65,5.21 7.24,8.41 8.3,8.2C9.27,8 9.39,4.3 7.93,4.34M4.93,6.85C4.77,6.84 4.59,6.9 4.41,7.03C2.9,8.07 4.91,10.58 5.8,10.19C6.57,9.85 6.08,6.89 4.93,6.85M13.29,8.77C10.1,8.8 6.03,10.42 5.32,13.59C4.53,17.11 8.56,22 12.76,22C14.83,22 17.21,20.13 17.66,17.77C18,15.97 13.65,16.69 13.81,17.88C14,19.31 12.76,20 11.55,19.1C7.69,16.16 17.93,14.7 17.25,10.69C17.03,9.39 15.34,8.76 13.29,8.77Z" /></g><g id="gondola"><path d="M18,10H13V7.59L22.12,6.07L21.88,4.59L16.41,5.5C16.46,5.35 16.5,5.18 16.5,5A1.5,1.5 0 0,0 15,3.5A1.5,1.5 0 0,0 13.5,5C13.5,5.35 13.63,5.68 13.84,5.93L13,6.07V5H11V6.41L10.41,6.5C10.46,6.35 10.5,6.18 10.5,6A1.5,1.5 0 0,0 9,4.5A1.5,1.5 0 0,0 7.5,6C7.5,6.36 7.63,6.68 7.83,6.93L1.88,7.93L2.12,9.41L11,7.93V10H6C4.89,10 4,10.9 4,12V18A2,2 0 0,0 6,20H18A2,2 0 0,0 20,18V12A2,2 0 0,0 18,10M6,12H8.25V16H6V12M9.75,16V12H14.25V16H9.75M18,16H15.75V12H18V16Z" /></g><g id="google"><path d="M21.35,11.1H12.18V13.83H18.69C18.36,17.64 15.19,19.27 12.19,19.27C8.36,19.27 5,16.25 5,12C5,7.9 8.2,4.73 12.2,4.73C15.29,4.73 17.1,6.7 17.1,6.7L19,4.72C19,4.72 16.56,2 12.1,2C6.42,2 2.03,6.8 2.03,12C2.03,17.05 6.16,22 12.25,22C17.6,22 21.5,18.33 21.5,12.91C21.5,11.76 21.35,11.1 21.35,11.1V11.1Z" /></g><g id="google-cardboard"><path d="M20.74,6H3.2C2.55,6 2,6.57 2,7.27V17.73C2,18.43 2.55,19 3.23,19H8C8.54,19 9,18.68 9.16,18.21L10.55,14.74C10.79,14.16 11.35,13.75 12,13.75C12.65,13.75 13.21,14.16 13.45,14.74L14.84,18.21C15.03,18.68 15.46,19 15.95,19H20.74C21.45,19 22,18.43 22,17.73V7.27C22,6.57 21.45,6 20.74,6M7.22,14.58C6,14.58 5,13.55 5,12.29C5,11 6,10 7.22,10C8.44,10 9.43,11 9.43,12.29C9.43,13.55 8.44,14.58 7.22,14.58M16.78,14.58C15.56,14.58 14.57,13.55 14.57,12.29C14.57,11.03 15.56,10 16.78,10C18,10 19,11.03 19,12.29C19,13.55 18,14.58 16.78,14.58Z" /></g><g id="google-chrome"><path d="M12,20L15.46,14H15.45C15.79,13.4 16,12.73 16,12C16,10.8 15.46,9.73 14.62,9H19.41C19.79,9.93 20,10.94 20,12A8,8 0 0,1 12,20M4,12C4,10.54 4.39,9.18 5.07,8L8.54,14H8.55C9.24,15.19 10.5,16 12,16C12.45,16 12.88,15.91 13.29,15.77L10.89,19.91C7,19.37 4,16.04 4,12M15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9A3,3 0 0,1 15,12M12,4C14.96,4 17.54,5.61 18.92,8H12C10.06,8 8.45,9.38 8.08,11.21L5.7,7.08C7.16,5.21 9.44,4 12,4M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="google-circles"><path d="M16.66,15H17C18,15 19,14.8 19.87,14.46C19.17,18.73 15.47,22 11,22C6,22 2,17.97 2,13C2,8.53 5.27,4.83 9.54,4.13C9.2,5 9,6 9,7V7.34C6.68,8.16 5,10.38 5,13A6,6 0 0,0 11,19C13.62,19 15.84,17.32 16.66,15M17,10A3,3 0 0,0 20,7A3,3 0 0,0 17,4A3,3 0 0,0 14,7A3,3 0 0,0 17,10M17,1A6,6 0 0,1 23,7A6,6 0 0,1 17,13A6,6 0 0,1 11,7C11,3.68 13.69,1 17,1Z" /></g><g id="google-circles-communities"><path d="M15,12C13.89,12 13,12.89 13,14A2,2 0 0,0 15,16A2,2 0 0,0 17,14C17,12.89 16.1,12 15,12M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M14,9C14,7.89 13.1,7 12,7C10.89,7 10,7.89 10,9A2,2 0 0,0 12,11A2,2 0 0,0 14,9M9,12A2,2 0 0,0 7,14A2,2 0 0,0 9,16A2,2 0 0,0 11,14C11,12.89 10.1,12 9,12Z" /></g><g id="google-circles-extended"><path d="M18,19C16.89,19 16,18.1 16,17C16,15.89 16.89,15 18,15A2,2 0 0,1 20,17A2,2 0 0,1 18,19M18,13A4,4 0 0,0 14,17A4,4 0 0,0 18,21A4,4 0 0,0 22,17A4,4 0 0,0 18,13M12,11.1A1.9,1.9 0 0,0 10.1,13A1.9,1.9 0 0,0 12,14.9A1.9,1.9 0 0,0 13.9,13A1.9,1.9 0 0,0 12,11.1M6,19C4.89,19 4,18.1 4,17C4,15.89 4.89,15 6,15A2,2 0 0,1 8,17A2,2 0 0,1 6,19M6,13A4,4 0 0,0 2,17A4,4 0 0,0 6,21A4,4 0 0,0 10,17A4,4 0 0,0 6,13M12,4A2,2 0 0,1 14,6A2,2 0 0,1 12,8C10.89,8 10,7.1 10,6C10,4.89 10.89,4 12,4M12,10A4,4 0 0,0 16,6A4,4 0 0,0 12,2A4,4 0 0,0 8,6A4,4 0 0,0 12,10Z" /></g><g id="google-circles-group"><path d="M5,10A2,2 0 0,0 3,12C3,13.11 3.9,14 5,14C6.11,14 7,13.11 7,12A2,2 0 0,0 5,10M5,16A4,4 0 0,1 1,12A4,4 0 0,1 5,8A4,4 0 0,1 9,12A4,4 0 0,1 5,16M10.5,11H14V8L18,12L14,16V13H10.5V11M5,6C4.55,6 4.11,6.05 3.69,6.14C5.63,3.05 9.08,1 13,1C19.08,1 24,5.92 24,12C24,18.08 19.08,23 13,23C9.08,23 5.63,20.95 3.69,17.86C4.11,17.95 4.55,18 5,18C5.8,18 6.56,17.84 7.25,17.56C8.71,19.07 10.74,20 13,20A8,8 0 0,0 21,12A8,8 0 0,0 13,4C10.74,4 8.71,4.93 7.25,6.44C6.56,6.16 5.8,6 5,6Z" /></g><g id="google-controller"><path d="M7.97,16L5,19C4.67,19.3 4.23,19.5 3.75,19.5A1.75,1.75 0 0,1 2,17.75V17.5L3,10.12C3.21,7.81 5.14,6 7.5,6H16.5C18.86,6 20.79,7.81 21,10.12L22,17.5V17.75A1.75,1.75 0 0,1 20.25,19.5C19.77,19.5 19.33,19.3 19,19L16.03,16H7.97M7,8V10H5V11H7V13H8V11H10V10H8V8H7M16.5,8A0.75,0.75 0 0,0 15.75,8.75A0.75,0.75 0 0,0 16.5,9.5A0.75,0.75 0 0,0 17.25,8.75A0.75,0.75 0 0,0 16.5,8M14.75,9.75A0.75,0.75 0 0,0 14,10.5A0.75,0.75 0 0,0 14.75,11.25A0.75,0.75 0 0,0 15.5,10.5A0.75,0.75 0 0,0 14.75,9.75M18.25,9.75A0.75,0.75 0 0,0 17.5,10.5A0.75,0.75 0 0,0 18.25,11.25A0.75,0.75 0 0,0 19,10.5A0.75,0.75 0 0,0 18.25,9.75M16.5,11.5A0.75,0.75 0 0,0 15.75,12.25A0.75,0.75 0 0,0 16.5,13A0.75,0.75 0 0,0 17.25,12.25A0.75,0.75 0 0,0 16.5,11.5Z" /></g><g id="google-controller-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L12.73,16H7.97L5,19C4.67,19.3 4.23,19.5 3.75,19.5A1.75,1.75 0 0,1 2,17.75V17.5L3,10.12C3.1,9.09 3.53,8.17 4.19,7.46L2,5.27M5,10V11H7V13H8V11.27L6.73,10H5M16.5,6C18.86,6 20.79,7.81 21,10.12L22,17.5V17.75C22,18.41 21.64,19 21.1,19.28L7.82,6H16.5M16.5,8A0.75,0.75 0 0,0 15.75,8.75A0.75,0.75 0 0,0 16.5,9.5A0.75,0.75 0 0,0 17.25,8.75A0.75,0.75 0 0,0 16.5,8M14.75,9.75A0.75,0.75 0 0,0 14,10.5A0.75,0.75 0 0,0 14.75,11.25A0.75,0.75 0 0,0 15.5,10.5A0.75,0.75 0 0,0 14.75,9.75M18.25,9.75A0.75,0.75 0 0,0 17.5,10.5A0.75,0.75 0 0,0 18.25,11.25A0.75,0.75 0 0,0 19,10.5A0.75,0.75 0 0,0 18.25,9.75M16.5,11.5A0.75,0.75 0 0,0 15.75,12.25A0.75,0.75 0 0,0 16.5,13A0.75,0.75 0 0,0 17.25,12.25A0.75,0.75 0 0,0 16.5,11.5Z" /></g><g id="google-drive"><path d="M7.71,3.5L1.15,15L4.58,21L11.13,9.5M9.73,15L6.3,21H19.42L22.85,15M22.28,14L15.42,2H8.58L8.57,2L15.43,14H22.28Z" /></g><g id="google-earth"><path d="M12.4,7.56C9.6,4.91 7.3,5.65 6.31,6.1C7.06,5.38 7.94,4.8 8.92,4.4C11.7,4.3 14.83,4.84 16.56,7.31C16.56,7.31 19,11.5 19.86,9.65C20.08,10.4 20.2,11.18 20.2,12C20.2,12.3 20.18,12.59 20.15,12.88C18.12,12.65 15.33,10.32 12.4,7.56M19.1,16.1C18.16,16.47 17,17.1 15.14,17.1C13.26,17.1 11.61,16.35 9.56,15.7C7.7,15.11 7,14.2 5.72,14.2C5.06,14.2 4.73,14.86 4.55,15.41C4.07,14.37 3.8,13.22 3.8,12C3.8,11.19 3.92,10.42 4.14,9.68C5.4,8.1 7.33,7.12 10.09,9.26C10.09,9.26 16.32,13.92 19.88,14.23C19.7,14.89 19.43,15.5 19.1,16.1M12,20.2C10.88,20.2 9.81,19.97 8.83,19.56C8.21,18.08 8.22,16.92 9.95,17.5C9.95,17.5 13.87,19 18,17.58C16.5,19.19 14.37,20.2 12,20.2M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z" /></g><g id="google-glass"><path d="M13,11V13.5H18.87C18.26,17 15.5,19.5 12,19.5A7.5,7.5 0 0,1 4.5,12A7.5,7.5 0 0,1 12,4.5C14.09,4.5 15.9,5.39 17.16,6.84L18.93,5.06C17.24,3.18 14.83,2 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22C17.5,22 21.5,17.5 21.5,12V11H13Z" /></g><g id="google-keep"><path d="M4,2H20A2,2 0 0,1 22,4V17.33L17.33,22H4A2,2 0 0,1 2,20V4A2,2 0 0,1 4,2M17,17V20.25L20.25,17H17M10,19H14V18H15V13C16.21,12.09 17,10.64 17,9A5,5 0 0,0 12,4A5,5 0 0,0 7,9C7,10.64 7.79,12.09 9,13V18H10V19M14,17H10V16H14V17M14,15H10V14H14V15M12,5A4,4 0 0,1 16,9C16,10.5 15.2,11.77 14,12.46V13H10V12.46C8.8,11.77 8,10.5 8,9A4,4 0 0,1 12,5Z" /></g><g id="google-maps"><path d="M5,4A2,2 0 0,0 3,6V16.29L11.18,8.11C11.06,7.59 11,7.07 11,6.53C11,5.62 11.2,4.76 11.59,4H5M18,21A2,2 0 0,0 20,19V11.86C19.24,13 18.31,14.21 17.29,15.5L16.5,16.5L15.72,15.5C14.39,13.85 13.22,12.32 12.39,10.91C12.05,10.33 11.76,9.76 11.53,9.18L7.46,13.25L15.21,21H18M3,19A2,2 0 0,0 5,21H13.79L6.75,13.96L3,17.71V19M16.5,15C19.11,11.63 21,9.1 21,6.57C21,4.05 19,2 16.5,2C14,2 12,4.05 12,6.57C12,9.1 13.87,11.63 16.5,15M18.5,6.5A2,2 0 0,1 16.5,8.5A2,2 0 0,1 14.5,6.5A2,2 0 0,1 16.5,4.5A2,2 0 0,1 18.5,6.5Z" /></g><g id="google-nearby"><path d="M4.2,3C3.57,3 3.05,3.5 3,4.11C3,8.66 3,13.24 3,17.8C3,18.46 3.54,19 4.2,19C4.31,19 4.42,19 4.53,18.95C8.5,16.84 12.56,14.38 16.5,12.08C16.94,11.89 17.21,11.46 17.21,11C17.21,10.57 17,10.17 16.6,9.96C12.5,7.56 8.21,5.07 4.53,3.05C4.42,3 4.31,3 4.2,3M19.87,6C19.76,6 19.65,6 19.54,6.05C18.6,6.57 17.53,7.18 16.5,7.75C16.85,7.95 17.19,8.14 17.5,8.33C18.5,8.88 19.07,9.9 19.07,11V11C19.07,12.18 18.38,13.27 17.32,13.77C15.92,14.59 12.92,16.36 11.32,17.29C14.07,18.89 16.82,20.5 19.54,21.95C19.65,22 19.76,22 19.87,22C20.54,22 21.07,21.46 21.07,20.8C21.07,16.24 21.08,11.66 21.07,7.11C21,6.5 20.5,6 19.87,6Z" /></g><g id="google-pages"><path d="M19,3H13V8L17,7L16,11H21V5C21,3.89 20.1,3 19,3M17,17L13,16V21H19A2,2 0 0,0 21,19V13H16M8,13H3V19A2,2 0 0,0 5,21H11V16L7,17M3,5V11H8L7,7L11,8V3H5C3.89,3 3,3.89 3,5Z" /></g><g id="google-photos"><path d="M17,12V7L12,2V7H7L2,12H7V17L12,22V17H17L22,12H17M12.88,12.88L12,15.53L11.12,12.88L8.47,12L11.12,11.12L12,8.46L12.88,11.11L15.53,12L12.88,12.88Z" /></g><g id="google-physical-web"><path d="M12,1.5A9,9 0 0,1 21,10.5C21,13.11 19.89,15.47 18.11,17.11L17.05,16.05C18.55,14.68 19.5,12.7 19.5,10.5A7.5,7.5 0 0,0 12,3A7.5,7.5 0 0,0 4.5,10.5C4.5,12.7 5.45,14.68 6.95,16.05L5.89,17.11C4.11,15.47 3,13.11 3,10.5A9,9 0 0,1 12,1.5M12,4.5A6,6 0 0,1 18,10.5C18,12.28 17.22,13.89 16,15L14.92,13.92C15.89,13.1 16.5,11.87 16.5,10.5C16.5,8 14.5,6 12,6C9.5,6 7.5,8 7.5,10.5C7.5,11.87 8.11,13.1 9.08,13.92L8,15C6.78,13.89 6,12.28 6,10.5A6,6 0 0,1 12,4.5M8.11,17.65L11.29,14.46C11.68,14.07 12.32,14.07 12.71,14.46L15.89,17.65C16.28,18.04 16.28,18.67 15.89,19.06L12.71,22.24C12.32,22.63 11.68,22.63 11.29,22.24L8.11,19.06C7.72,18.67 7.72,18.04 8.11,17.65Z" /></g><g id="google-play"><path d="M3,20.5V3.5C3,2.91 3.34,2.39 3.84,2.15L13.69,12L3.84,21.85C3.34,21.6 3,21.09 3,20.5M16.81,15.12L6.05,21.34L14.54,12.85L16.81,15.12M20.16,10.81C20.5,11.08 20.75,11.5 20.75,12C20.75,12.5 20.53,12.9 20.18,13.18L17.89,14.5L15.39,12L17.89,9.5L20.16,10.81M6.05,2.66L16.81,8.88L14.54,11.15L6.05,2.66Z" /></g><g id="google-plus"><path d="M23,11H21V9H19V11H17V13H19V15H21V13H23M8,11V13.4H12C11.8,14.4 10.8,16.4 8,16.4C5.6,16.4 3.7,14.4 3.7,12C3.7,9.6 5.6,7.6 8,7.6C9.4,7.6 10.3,8.2 10.8,8.7L12.7,6.9C11.5,5.7 9.9,5 8,5C4.1,5 1,8.1 1,12C1,15.9 4.1,19 8,19C12,19 14.7,16.2 14.7,12.2C14.7,11.7 14.7,11.4 14.6,11H8Z" /></g><g id="google-plus-box"><path d="M20,2A2,2 0 0,1 22,4V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V4C2,2.89 2.9,2 4,2H20M20,12H18V10H17V12H15V13H17V15H18V13H20V12M9,11.29V13H11.86C11.71,13.71 11,15.14 9,15.14C7.29,15.14 5.93,13.71 5.93,12C5.93,10.29 7.29,8.86 9,8.86C10,8.86 10.64,9.29 11,9.64L12.36,8.36C11.5,7.5 10.36,7 9,7C6.21,7 4,9.21 4,12C4,14.79 6.21,17 9,17C11.86,17 13.79,15 13.79,12.14C13.79,11.79 13.79,11.57 13.71,11.29H9Z" /></g><g id="google-translate"><path d="M3,1C1.89,1 1,1.89 1,3V17C1,18.11 1.89,19 3,19H15L9,1H3M12.34,5L13,7H21V21H12.38L13.03,23H21C22.11,23 23,22.11 23,21V7C23,5.89 22.11,5 21,5H12.34M7.06,5.91C8.16,5.91 9.09,6.31 9.78,7L8.66,8.03C8.37,7.74 7.87,7.41 7.06,7.41C5.67,7.41 4.56,8.55 4.56,9.94C4.56,11.33 5.67,12.5 7.06,12.5C8.68,12.5 9.26,11.33 9.38,10.75H7.06V9.38H10.88C10.93,9.61 10.94,9.77 10.94,10.06C10.94,12.38 9.38,14 7.06,14C4.81,14 3,12.19 3,9.94C3,7.68 4.81,5.91 7.06,5.91M16,10V11H14.34L14.66,12H18C17.73,12.61 17.63,13.17 16.81,14.13C16.41,13.66 16.09,13.25 16,13H15C15.12,13.43 15.62,14.1 16.22,14.78C16.09,14.91 15.91,15.08 15.75,15.22L16.03,16.06C16.28,15.84 16.53,15.61 16.78,15.38C17.8,16.45 18.88,17.44 18.88,17.44L19.44,16.84C19.44,16.84 18.37,15.79 17.41,14.75C18.04,14.05 18.6,13.2 19,12H20V11H17V10H16Z" /></g><g id="google-wallet"><path d="M9.89,11.08C9.76,9.91 9.39,8.77 8.77,7.77C8.5,7.29 8.46,6.7 8.63,6.25C8.71,6 8.83,5.8 9.03,5.59C9.24,5.38 9.46,5.26 9.67,5.18C9.88,5.09 10,5.06 10.31,5.06C10.66,5.06 11,5.17 11.28,5.35L11.72,5.76L11.83,5.92C12.94,7.76 13.53,9.86 13.53,12L13.5,12.79C13.38,14.68 12.8,16.5 11.82,18.13C11.5,18.67 10.92,19 10.29,19L9.78,18.91L9.37,18.73C8.86,18.43 8.57,17.91 8.5,17.37C8.5,17.05 8.54,16.72 8.69,16.41L8.77,16.28C9.54,15 9.95,13.53 9.95,12L9.89,11.08M20.38,7.88C20.68,9.22 20.84,10.62 20.84,12C20.84,13.43 20.68,14.82 20.38,16.16L20.11,17.21C19.78,18.4 19.4,19.32 19,20C18.7,20.62 18.06,21 17.38,21C17.1,21 16.83,20.94 16.58,20.82C16,20.55 15.67,20.07 15.55,19.54L15.5,19.11C15.5,18.7 15.67,18.35 15.68,18.32C16.62,16.34 17.09,14.23 17.09,12C17.09,9.82 16.62,7.69 15.67,5.68C15.22,4.75 15.62,3.63 16.55,3.18C16.81,3.06 17.08,3 17.36,3C18.08,3 18.75,3.42 19.05,4.07C19.63,5.29 20.08,6.57 20.38,7.88M16.12,9.5C16.26,10.32 16.34,11.16 16.34,12C16.34,14 15.95,15.92 15.2,17.72C15.11,16.21 14.75,14.76 14.16,13.44L14.22,12.73L14.25,11.96C14.25,9.88 13.71,7.85 12.67,6.07C14,7.03 15.18,8.21 16.12,9.5M4,10.5C3.15,10.03 2.84,9 3.28,8.18C3.58,7.63 4.15,7.28 4.78,7.28C5.06,7.28 5.33,7.35 5.58,7.5C6.87,8.17 8.03,9.1 8.97,10.16L9.12,11.05L9.18,12C9.18,13.43 8.81,14.84 8.1,16.07C7.6,13.66 6.12,11.62 4,10.5Z" /></g><g id="gradient"><path d="M11,9H13V11H11V9M9,11H11V13H9V11M13,11H15V13H13V11M15,9H17V11H15V9M7,9H9V11H7V9M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M9,18H7V16H9V18M13,18H11V16H13V18M17,18H15V16H17V18M19,11H17V13H19V15H17V13H15V15H13V13H11V15H9V13H7V15H5V13H7V11H5V5H19V11Z" /></g><g id="grease-pencil"><path d="M18.62,1.5C18.11,1.5 17.6,1.69 17.21,2.09L10.75,8.55L14.95,12.74L21.41,6.29C22.2,5.5 22.2,4.24 21.41,3.46L20.04,2.09C19.65,1.69 19.14,1.5 18.62,1.5M9.8,9.5L3.23,16.07L3.93,16.77C3.4,17.24 2.89,17.78 2.38,18.29C1.6,19.08 1.6,20.34 2.38,21.12C3.16,21.9 4.42,21.9 5.21,21.12C5.72,20.63 6.25,20.08 6.73,19.58L7.43,20.27L14,13.7" /></g><g id="grid"><path d="M10,4V8H14V4H10M16,4V8H20V4H16M16,10V14H20V10H16M16,16V20H20V16H16M14,20V16H10V20H14M8,20V16H4V20H8M8,14V10H4V14H8M8,8V4H4V8H8M10,14H14V10H10V14M4,2H20A2,2 0 0,1 22,4V20A2,2 0 0,1 20,22H4C2.92,22 2,21.1 2,20V4A2,2 0 0,1 4,2Z" /></g><g id="grid-off"><path d="M0,2.77L1.28,1.5L22.5,22.72L21.23,24L19.23,22H4C2.92,22 2,21.1 2,20V4.77L0,2.77M10,4V7.68L8,5.68V4H6.32L4.32,2H20A2,2 0 0,1 22,4V19.7L20,17.7V16H18.32L16.32,14H20V10H16V13.68L14,11.68V10H12.32L10.32,8H14V4H10M16,4V8H20V4H16M16,20H17.23L16,18.77V20M4,8H5.23L4,6.77V8M10,14H11.23L10,12.77V14M14,20V16.77L13.23,16H10V20H14M8,20V16H4V20H8M8,14V10.77L7.23,10H4V14H8Z" /></g><g id="group"><path d="M8,8V12H13V8H8M1,1H5V2H19V1H23V5H22V19H23V23H19V22H5V23H1V19H2V5H1V1M5,19V20H19V19H20V5H19V4H5V5H4V19H5M6,6H15V10H18V18H8V14H6V6M15,14H10V16H16V12H15V14Z" /></g><g id="guitar-electric"><path d="M20.5,2L18.65,4.08L18.83,4.26L10.45,12.16C10.23,12.38 9.45,12.75 9.26,12.28C8.81,11.12 10.23,11 10,10.8C8.94,10.28 7.73,11.18 7.67,11.23C6.94,11.78 6.5,12.43 6.26,13.13C5.96,14.04 5.17,14.15 4.73,14.17C3.64,14.24 3,14.53 2.5,15.23C2.27,15.54 1.9,16 2,16.96C2.16,18 2.95,19.33 3.56,20C4.21,20.69 5.05,21.38 5.81,21.75C6.35,22 6.68,22.08 7.47,21.88C8.17,21.7 8.86,21.14 9.15,20.4C9.39,19.76 9.42,19.3 9.53,18.78C9.67,18.11 9.76,18 10.47,17.68C11.14,17.39 11.5,17.35 12.05,16.78C12.44,16.37 12.64,15.93 12.76,15.46C12.86,15.06 12.93,14.56 12.74,14.5C12.57,14.35 12.27,15.31 11.56,14.86C11.05,14.54 11.11,13.74 11.55,13.29C14.41,10.38 16.75,8 19.63,5.09L19.86,5.32L22,3.5Z" /></g><g id="guitar-pick"><path d="M19,4.1C18.1,3.3 17,2.8 15.8,2.5C15.5,2.4 13.6,2 12.2,2C12.2,2 12.1,2 12,2C12,2 11.9,2 11.8,2C10.4,2 8.4,2.4 8.1,2.5C7,2.8 5.9,3.3 5,4.1C3,5.9 3,8.7 4,11C5,13.5 6.1,15.7 7.6,17.9C8.8,19.6 10.1,22 12,22C13.9,22 15.2,19.6 16.5,17.9C18,15.8 19.1,13.5 20.1,11C21,8.7 21,5.9 19,4.1Z" /></g><g id="guitar-pick-outline"><path d="M19,4.1C18.1,3.3 17,2.8 15.8,2.5C15.5,2.4 13.6,2 12.2,2C12.2,2 12.1,2 12,2C12,2 11.9,2 11.8,2C10.4,2 8.4,2.4 8.1,2.5C7,2.8 5.9,3.3 5,4.1C3,5.9 3,8.7 4,11C5,13.5 6.1,15.7 7.6,17.9C8.8,19.6 10.1,22 12,22C13.9,22 15.2,19.6 16.5,17.9C18,15.8 19.1,13.5 20.1,11C21,8.7 21,5.9 19,4.1M18.2,10.2C17.1,12.9 16.1,14.9 14.8,16.7C14.6,16.9 14.5,17.2 14.3,17.4C13.8,18.2 12.6,20 12,20C12,20 12,20 12,20C11.3,20 10.2,18.3 9.6,17.4C9.4,17.2 9.3,16.9 9.1,16.7C7.9,14.9 6.8,12.9 5.7,10.2C5.5,9.5 4.7,7 6.3,5.5C6.8,5 7.6,4.7 8.6,4.4C9,4.4 10.7,4 11.8,4C11.8,4 12.1,4 12.1,4C13.2,4 14.9,4.3 15.3,4.4C16.3,4.7 17.1,5 17.6,5.5C19.3,7 18.5,9.5 18.2,10.2Z" /></g><g id="hackernews"><path d="M2,2H22V22H2V2M11.25,17.5H12.75V13.06L16,7H14.5L12,11.66L9.5,7H8L11.25,13.06V17.5Z" /></g><g id="hamburger"><path d="M2,16H22V18C22,19.11 21.11,20 20,20H4C2.89,20 2,19.11 2,18V16M6,4H18C20.22,4 22,5.78 22,8V10H2V8C2,5.78 3.78,4 6,4M4,11H15L17,13L19,11H20C21.11,11 22,11.89 22,13C22,14.11 21.11,15 20,15H4C2.89,15 2,14.11 2,13C2,11.89 2.89,11 4,11Z" /></g><g id="hand-pointing-right"><path d="M21,9A1,1 0 0,1 22,10A1,1 0 0,1 21,11H16.53L16.4,12.21L14.2,17.15C14,17.65 13.47,18 12.86,18H8.5C7.7,18 7,17.27 7,16.5V10C7,9.61 7.16,9.26 7.43,9L11.63,4.1L12.4,4.84C12.6,5.03 12.72,5.29 12.72,5.58L12.69,5.8L11,9H21M2,18V10H5V18H2Z" /></g><g id="hanger"><path d="M20.76,16.34H20.75C21.5,16.77 22,17.58 22,18.5A2.5,2.5 0 0,1 19.5,21H4.5A2.5,2.5 0 0,1 2,18.5C2,17.58 2.5,16.77 3.25,16.34H3.24L11,11.86C11,11.86 11,11 12,10C13,10 14,9.1 14,8A2,2 0 0,0 12,6A2,2 0 0,0 10,8H8A4,4 0 0,1 12,4A4,4 0 0,1 16,8C16,9.86 14.73,11.42 13,11.87L20.76,16.34M4.5,19V19H19.5V19C19.67,19 19.84,18.91 19.93,18.75C20.07,18.5 20,18.21 19.75,18.07L12,13.59L4.25,18.07C4,18.21 3.93,18.5 4.07,18.75C4.16,18.91 4.33,19 4.5,19Z" /></g><g id="hangouts"><path d="M15,11L14,13H12.5L13.5,11H12V8H15M11,11L10,13H8.5L9.5,11H8V8H11M11.5,2A8.5,8.5 0 0,0 3,10.5A8.5,8.5 0 0,0 11.5,19H12V22.5C16.86,20.15 20,15 20,10.5C20,5.8 16.19,2 11.5,2Z" /></g><g id="harddisk"><path d="M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M12,4A6,6 0 0,0 6,10C6,13.31 8.69,16 12.1,16L11.22,13.77C10.95,13.29 11.11,12.68 11.59,12.4L12.45,11.9C12.93,11.63 13.54,11.79 13.82,12.27L15.74,14.69C17.12,13.59 18,11.9 18,10A6,6 0 0,0 12,4M12,9A1,1 0 0,1 13,10A1,1 0 0,1 12,11A1,1 0 0,1 11,10A1,1 0 0,1 12,9M7,18A1,1 0 0,0 6,19A1,1 0 0,0 7,20A1,1 0 0,0 8,19A1,1 0 0,0 7,18M12.09,13.27L14.58,19.58L17.17,18.08L12.95,12.77L12.09,13.27Z" /></g><g id="headphones"><path d="M12,1C7,1 3,5 3,10V17A3,3 0 0,0 6,20H9V12H5V10A7,7 0 0,1 12,3A7,7 0 0,1 19,10V12H15V20H18A3,3 0 0,0 21,17V10C21,5 16.97,1 12,1Z" /></g><g id="headphones-box"><path d="M7.2,18C6.54,18 6,17.46 6,16.8V13.2L6,12A6,6 0 0,1 12,6A6,6 0 0,1 18,12V13.2L18,16.8A1.2,1.2 0 0,1 16.8,18H14V14H16V12A4,4 0 0,0 12,8A4,4 0 0,0 8,12V14H10V18M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="headphones-settings"><path d="M12,1A9,9 0 0,1 21,10V17A3,3 0 0,1 18,20H15V12H19V10A7,7 0 0,0 12,3A7,7 0 0,0 5,10V12H9V20H6A3,3 0 0,1 3,17V10A9,9 0 0,1 12,1M15,24V22H17V24H15M11,24V22H13V24H11M7,24V22H9V24H7Z" /></g><g id="headset"><path d="M12,1C7,1 3,5 3,10V17A3,3 0 0,0 6,20H9V12H5V10A7,7 0 0,1 12,3A7,7 0 0,1 19,10V12H15V20H19V21H12V23H18A3,3 0 0,0 21,20V10C21,5 16.97,1 12,1Z" /></g><g id="headset-dock"><path d="M2,18H9V6.13C7.27,6.57 6,8.14 6,10V11H8V17H6A2,2 0 0,1 4,15V10A6,6 0 0,1 10,4H11A6,6 0 0,1 17,10V12H18V9H20V12A2,2 0 0,1 18,14H17V15A2,2 0 0,1 15,17H13V11H15V10C15,8.14 13.73,6.57 12,6.13V18H22V20H2V18Z" /></g><g id="headset-off"><path d="M22.5,4.77L20.43,6.84C20.8,7.82 21,8.89 21,10V20A3,3 0 0,1 18,23H12V21H19V20H15V12.27L9,18.27V20H7.27L4.77,22.5L3.5,21.22L21.22,3.5L22.5,4.77M12,1C14.53,1 16.82,2.04 18.45,3.72L17.04,5.14C15.77,3.82 14,3 12,3A7,7 0 0,0 5,10V12H9V13.18L3.5,18.67C3.19,18.19 3,17.62 3,17V10A9,9 0 0,1 12,1M19,12V10C19,9.46 18.94,8.94 18.83,8.44L15.27,12H19Z" /></g><g id="heart"><path d="M12,21.35L10.55,20.03C5.4,15.36 2,12.27 2,8.5C2,5.41 4.42,3 7.5,3C9.24,3 10.91,3.81 12,5.08C13.09,3.81 14.76,3 16.5,3C19.58,3 22,5.41 22,8.5C22,12.27 18.6,15.36 13.45,20.03L12,21.35Z" /></g><g id="heart-box"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M12,17L12.72,16.34C15.3,14 17,12.46 17,10.57C17,9.03 15.79,7.82 14.25,7.82C13.38,7.82 12.55,8.23 12,8.87C11.45,8.23 10.62,7.82 9.75,7.82C8.21,7.82 7,9.03 7,10.57C7,12.46 8.7,14 11.28,16.34L12,17Z" /></g><g id="heart-box-outline"><path d="M12,17L11.28,16.34C8.7,14 7,12.46 7,10.57C7,9.03 8.21,7.82 9.75,7.82C10.62,7.82 11.45,8.23 12,8.87C12.55,8.23 13.38,7.82 14.25,7.82C15.79,7.82 17,9.03 17,10.57C17,12.46 15.3,14 12.72,16.34L12,17M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z" /></g><g id="heart-broken"><path d="M12,21.35L10.55,20.03C5.4,15.36 2,12.27 2,8.5C2,5.41 4.42,3 7.5,3C8.17,3 8.82,3.12 9.44,3.33L13,9.35L9,14.35L12,21.35V21.35M16.5,3C19.58,3 22,5.41 22,8.5C22,12.27 18.6,15.36 13.45,20.03L12,21.35L11,14.35L15.5,9.35L12.85,4.27C13.87,3.47 15.17,3 16.5,3Z" /></g><g id="heart-half-outline"><path d="M16.5,5C15,5 13.58,5.91 13,7.2V17.74C17.25,13.87 20,11.2 20,8.5C20,6.5 18.5,5 16.5,5M16.5,3C19.58,3 22,5.41 22,8.5C22,12.27 18.6,15.36 13.45,20.03L12,21.35L10.55,20.03C5.4,15.36 2,12.27 2,8.5C2,5.41 4.42,3 7.5,3C9.24,3 10.91,3.81 12,5.08C13.09,3.81 14.76,3 16.5,3Z" /></g><g id="heart-half-part"><path d="M13,7.2V17.74L13,20.44L12,21.35L10.55,20.03C5.4,15.36 2,12.27 2,8.5C2,5.41 4.42,3 7.5,3C10,3 13,5 13,7.2Z" /></g><g id="heart-half-part-outline"><path d="M4,8.5C4,11.2 6.75,13.87 11,17.74V7.2C10.42,5.91 9,5 7.5,5C5.5,5 4,6.5 4,8.5M13,7.2V17.74L13,20.44L12,21.35L10.55,20.03C5.4,15.36 2,12.27 2,8.5C2,5.41 4.42,3 7.5,3C10,3 13,5 13,7.2Z" /></g><g id="heart-outline"><path d="M12.1,18.55L12,18.65L11.89,18.55C7.14,14.24 4,11.39 4,8.5C4,6.5 5.5,5 7.5,5C9.04,5 10.54,6 11.07,7.36H12.93C13.46,6 14.96,5 16.5,5C18.5,5 20,6.5 20,8.5C20,11.39 16.86,14.24 12.1,18.55M16.5,3C14.76,3 13.09,3.81 12,5.08C10.91,3.81 9.24,3 7.5,3C4.42,3 2,5.41 2,8.5C2,12.27 5.4,15.36 10.55,20.03L12,21.35L13.45,20.03C18.6,15.36 22,12.27 22,8.5C22,5.41 19.58,3 16.5,3Z" /></g><g id="heart-pulse"><path d="M7.5,4A5.5,5.5 0 0,0 2,9.5C2,10 2.09,10.5 2.22,11H6.3L7.57,7.63C7.87,6.83 9.05,6.75 9.43,7.63L11.5,13L12.09,11.58C12.22,11.25 12.57,11 13,11H21.78C21.91,10.5 22,10 22,9.5A5.5,5.5 0 0,0 16.5,4C14.64,4 13,4.93 12,6.34C11,4.93 9.36,4 7.5,4V4M3,12.5A1,1 0 0,0 2,13.5A1,1 0 0,0 3,14.5H5.44L11,20C12,20.9 12,20.9 13,20L18.56,14.5H21A1,1 0 0,0 22,13.5A1,1 0 0,0 21,12.5H13.4L12.47,14.8C12.07,15.81 10.92,15.67 10.55,14.83L8.5,9.5L7.54,11.83C7.39,12.21 7.05,12.5 6.6,12.5H3Z" /></g><g id="help"><path d="M10,19H13V22H10V19M12,2C17.35,2.22 19.68,7.62 16.5,11.67C15.67,12.67 14.33,13.33 13.67,14.17C13,15 13,16 13,17H10C10,15.33 10,13.92 10.67,12.92C11.33,11.92 12.67,11.33 13.5,10.67C15.92,8.43 15.32,5.26 12,5A3,3 0 0,0 9,8H6A6,6 0 0,1 12,2Z" /></g><g id="help-circle"><path d="M15.07,11.25L14.17,12.17C13.45,12.89 13,13.5 13,15H11V14.5C11,13.39 11.45,12.39 12.17,11.67L13.41,10.41C13.78,10.05 14,9.55 14,9C14,7.89 13.1,7 12,7A2,2 0 0,0 10,9H8A4,4 0 0,1 12,5A4,4 0 0,1 16,9C16,9.88 15.64,10.67 15.07,11.25M13,19H11V17H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z" /></g><g id="help-circle-outline"><path d="M11,18H13V16H11V18M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,6A4,4 0 0,0 8,10H10A2,2 0 0,1 12,8A2,2 0 0,1 14,10C14,12 11,11.75 11,15H13C13,12.75 16,12.5 16,10A4,4 0 0,0 12,6Z" /></g><g id="hexagon"><path d="M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5Z" /></g><g id="hexagon-outline"><path d="M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15Z" /></g><g id="highway"><path d="M10,2L8,8H11V2H10M13,2V8H16L14,2H13M2,9V10H4V11H6V10H18L18.06,11H20V10H22V9H2M7,11L3.34,22H11V11H7M13,11V22H20.66L17,11H13Z" /></g><g id="history"><path d="M11,7V12.11L15.71,14.9L16.5,13.62L12.5,11.25V7M12.5,2C8.97,2 5.91,3.92 4.27,6.77L2,4.5V11H8.5L5.75,8.25C6.96,5.73 9.5,4 12.5,4A7.5,7.5 0 0,1 20,11.5A7.5,7.5 0 0,1 12.5,19C9.23,19 6.47,16.91 5.44,14H3.34C4.44,18.03 8.11,21 12.5,21C17.74,21 22,16.75 22,11.5A9.5,9.5 0 0,0 12.5,2Z" /></g><g id="hololens"><path d="M12,8C12,8 22,8 22,11C22,11 22.09,14.36 21.75,14.25C21,11 12,11 12,11C12,11 3,11 2.25,14.25C1.91,14.36 2,11 2,11C2,8 12,8 12,8M12,12C20,12 20.75,14.25 20.75,14.25C19.75,17.25 19,18 15,18C12,18 13,16.5 12,16.5C11,16.5 12,18 9,18C5,18 4.25,17.25 3.25,14.25C3.25,14.25 4,12 12,12Z" /></g><g id="home"><path d="M10,20V14H14V20H19V12H22L12,3L2,12H5V20H10Z" /></g><g id="home-map-marker"><path d="M12,3L2,12H5V20H19V12H22L12,3M12,7.7C14.1,7.7 15.8,9.4 15.8,11.5C15.8,14.5 12,18 12,18C12,18 8.2,14.5 8.2,11.5C8.2,9.4 9.9,7.7 12,7.7M12,10A1.5,1.5 0 0,0 10.5,11.5A1.5,1.5 0 0,0 12,13A1.5,1.5 0 0,0 13.5,11.5A1.5,1.5 0 0,0 12,10Z" /></g><g id="home-modern"><path d="M6,21V8A2,2 0 0,1 8,6L16,3V6A2,2 0 0,1 18,8V21H12V16H8V21H6M14,19H16V16H14V19M8,13H10V9H8V13M12,13H16V9H12V13Z" /></g><g id="home-outline"><path d="M9,19V13H11L13,13H15V19H18V10.91L12,4.91L6,10.91V19H9M12,2.09L21.91,12H20V21H13V15H11V21H4V12H2.09L12,2.09Z" /></g><g id="home-variant"><path d="M8,20H5V12H2L12,3L22,12H19V20H12V14H8V20M14,14V17H17V14H14Z" /></g><g id="hook"><path d="M18,6C18,7.82 16.76,9.41 15,9.86V17A5,5 0 0,1 10,22A5,5 0 0,1 5,17V12L10,17H7A3,3 0 0,0 10,20A3,3 0 0,0 13,17V9.86C11.23,9.4 10,7.8 10,5.97C10,3.76 11.8,2 14,2C16.22,2 18,3.79 18,6M14,8A2,2 0 0,0 16,6A2,2 0 0,0 14,4A2,2 0 0,0 12,6A2,2 0 0,0 14,8Z" /></g><g id="hook-off"><path d="M13,9.86V11.18L15,13.18V9.86C17.14,9.31 18.43,7.13 17.87,5C17.32,2.85 15.14,1.56 13,2.11C10.86,2.67 9.57,4.85 10.13,7C10.5,8.4 11.59,9.5 13,9.86M14,4A2,2 0 0,1 16,6A2,2 0 0,1 14,8A2,2 0 0,1 12,6A2,2 0 0,1 14,4M18.73,22L14.86,18.13C14.21,20.81 11.5,22.46 8.83,21.82C6.6,21.28 5,19.29 5,17V12L10,17H7A3,3 0 0,0 10,20A3,3 0 0,0 13,17V16.27L2,5.27L3.28,4L13,13.72L15,15.72L20,20.72L18.73,22Z" /></g><g id="hops"><path d="M21,12C21,12 12.5,10 12.5,2C12.5,2 21,2 21,12M3,12C3,2 11.5,2 11.5,2C11.5,10 3,12 3,12M12,6.5C12,6.5 13,8.66 15,10.5C14.76,14.16 12,16 12,16C12,16 9.24,14.16 9,10.5C11,8.66 12,6.5 12,6.5M20.75,13.25C20.75,13.25 20,17 18,19C18,19 15.53,17.36 14.33,14.81C15.05,13.58 15.5,12.12 15.75,11.13C17.13,12.18 18.75,13 20.75,13.25M15.5,18.25C14.5,20.25 12,21.75 12,21.75C12,21.75 9.5,20.25 8.5,18.25C8.5,18.25 9.59,17.34 10.35,15.8C10.82,16.35 11.36,16.79 12,17C12.64,16.79 13.18,16.35 13.65,15.8C14.41,17.34 15.5,18.25 15.5,18.25M3.25,13.25C5.25,13 6.87,12.18 8.25,11.13C8.5,12.12 8.95,13.58 9.67,14.81C8.47,17.36 6,19 6,19C4,17 3.25,13.25 3.25,13.25Z" /></g><g id="hospital"><path d="M18,14H14V18H10V14H6V10H10V6H14V10H18M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="hospital-building"><path d="M2,22V7A1,1 0 0,1 3,6H7V2H17V6H21A1,1 0 0,1 22,7V22H14V17H10V22H2M9,4V10H11V8H13V10H15V4H13V6H11V4H9M4,20H8V17H4V20M4,15H8V12H4V15M16,20H20V17H16V20M16,15H20V12H16V15M10,15H14V12H10V15Z" /></g><g id="hospital-marker"><path d="M12,2C15.86,2 19,5.13 19,9C19,14.25 12,22 12,22C12,22 5,14.25 5,9A7,7 0 0,1 12,2M9,6V12H11V10H13V12H15V6H13V8H11V6H9Z" /></g><g id="hotel"><path d="M19,7H11V14H3V5H1V20H3V17H21V20H23V11A4,4 0 0,0 19,7M7,13A3,3 0 0,0 10,10A3,3 0 0,0 7,7A3,3 0 0,0 4,10A3,3 0 0,0 7,13Z" /></g><g id="houzz"><path d="M12,24V16L5.1,20V12H5.1V4L12,0V8L5.1,12L12,16V8L18.9,4V12H18.9V20L12,24Z" /></g><g id="houzz-box"><path d="M12,4L7.41,6.69V12L12,9.3V4M12,9.3V14.7L12,20L16.59,17.31V12L16.59,6.6L12,9.3M12,14.7L7.41,12V17.4L12,14.7M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z" /></g><g id="human"><path d="M21,9H15V22H13V16H11V22H9V9H3V7H21M12,2A2,2 0 0,1 14,4A2,2 0 0,1 12,6C10.89,6 10,5.1 10,4C10,2.89 10.89,2 12,2Z" /></g><g id="human-child"><path d="M12,2A3,3 0 0,1 15,5A3,3 0 0,1 12,8A3,3 0 0,1 9,5A3,3 0 0,1 12,2M11,22H8V16H6V9H18V16H16V22H13V18H11V22Z" /></g><g id="human-female"><path d="M12,2A2,2 0 0,1 14,4A2,2 0 0,1 12,6A2,2 0 0,1 10,4A2,2 0 0,1 12,2M10.5,22V16H7.5L10.09,8.41C10.34,7.59 11.1,7 12,7C12.9,7 13.66,7.59 13.91,8.41L16.5,16H13.5V22H10.5Z" /></g><g id="human-greeting"><path d="M1.5,4V5.5C1.5,9.65 3.71,13.28 7,15.3V20H22V18C22,15.34 16.67,14 14,14C14,14 13.83,14 13.75,14C9,14 5,10 5,5.5V4M14,4A4,4 0 0,0 10,8A4,4 0 0,0 14,12A4,4 0 0,0 18,8A4,4 0 0,0 14,4Z" /></g><g id="human-handsdown"><path d="M12,1C10.89,1 10,1.9 10,3C10,4.11 10.89,5 12,5C13.11,5 14,4.11 14,3A2,2 0 0,0 12,1M10,6C9.73,6 9.5,6.11 9.31,6.28H9.3L4,11.59L5.42,13L9,9.41V22H11V15H13V22H15V9.41L18.58,13L20,11.59L14.7,6.28C14.5,6.11 14.27,6 14,6" /></g><g id="human-handsup"><path d="M5,1C5,3.7 6.56,6.16 9,7.32V22H11V15H13V22H15V7.31C17.44,6.16 19,3.7 19,1H17A5,5 0 0,1 12,6A5,5 0 0,1 7,1M12,1C10.89,1 10,1.89 10,3C10,4.11 10.89,5 12,5C13.11,5 14,4.11 14,3C14,1.89 13.11,1 12,1Z" /></g><g id="human-male"><path d="M12,2A2,2 0 0,1 14,4A2,2 0 0,1 12,6A2,2 0 0,1 10,4A2,2 0 0,1 12,2M10.5,7H13.5A2,2 0 0,1 15.5,9V14.5H14V22H10V14.5H8.5V9A2,2 0 0,1 10.5,7Z" /></g><g id="human-male-female"><path d="M7.5,2A2,2 0 0,1 9.5,4A2,2 0 0,1 7.5,6A2,2 0 0,1 5.5,4A2,2 0 0,1 7.5,2M6,7H9A2,2 0 0,1 11,9V14.5H9.5V22H5.5V14.5H4V9A2,2 0 0,1 6,7M16.5,2A2,2 0 0,1 18.5,4A2,2 0 0,1 16.5,6A2,2 0 0,1 14.5,4A2,2 0 0,1 16.5,2M15,22V16H12L14.59,8.41C14.84,7.59 15.6,7 16.5,7C17.4,7 18.16,7.59 18.41,8.41L21,16H18V22H15Z" /></g><g id="human-pregnant"><path d="M9,4C9,2.89 9.89,2 11,2C12.11,2 13,2.89 13,4C13,5.11 12.11,6 11,6C9.89,6 9,5.11 9,4M16,13C16,11.66 15.17,10.5 14,10A3,3 0 0,0 11,7A3,3 0 0,0 8,10V17H10V22H13V17H16V13Z" /></g><g id="image"><path d="M8.5,13.5L11,16.5L14.5,12L19,18H5M21,19V5C21,3.89 20.1,3 19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19Z" /></g><g id="image-album"><path d="M6,19L9,15.14L11.14,17.72L14.14,13.86L18,19H6M6,4H11V12L8.5,10.5L6,12M18,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V4A2,2 0 0,0 18,2Z" /></g><g id="image-area"><path d="M20,5A2,2 0 0,1 22,7V17A2,2 0 0,1 20,19H4C2.89,19 2,18.1 2,17V7C2,5.89 2.89,5 4,5H20M5,16H19L14.5,10L11,14.5L8.5,11.5L5,16Z" /></g><g id="image-area-close"><path d="M12,23L8,19H16L12,23M20,3A2,2 0 0,1 22,5V15A2,2 0 0,1 20,17H4A2,2 0 0,1 2,15V5A2,2 0 0,1 4,3H20M5,14H19L14.5,8L11,12.5L8.5,9.5L5,14Z" /></g><g id="image-broken"><path d="M19,3A2,2 0 0,1 21,5V11H19V13H19L17,13V15H15V17H13V19H11V21H5C3.89,21 3,20.1 3,19V5A2,2 0 0,1 5,3H19M21,15V19A2,2 0 0,1 19,21H19L15,21V19H17V17H19V15H21M19,8.5A0.5,0.5 0 0,0 18.5,8H5.5A0.5,0.5 0 0,0 5,8.5V15.5A0.5,0.5 0 0,0 5.5,16H11V15H13V13H15V11H17V9H19V8.5Z" /></g><g id="image-broken-variant"><path d="M21,5V11.59L18,8.58L14,12.59L10,8.59L6,12.59L3,9.58V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5M18,11.42L21,14.43V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V12.42L6,15.41L10,11.41L14,15.41" /></g><g id="image-filter"><path d="M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M3,5H1V21A2,2 0 0,0 3,23H19V21H3M15.96,10.29L13.21,13.83L11.25,11.47L8.5,15H19.5L15.96,10.29Z" /></g><g id="image-filter-black-white"><path d="M19,19L12,11V19H5L12,11V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="image-filter-center-focus"><path d="M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M19,19H15V21H19A2,2 0 0,0 21,19V15H19M19,3H15V5H19V9H21V5A2,2 0 0,0 19,3M5,5H9V3H5A2,2 0 0,0 3,5V9H5M5,15H3V19A2,2 0 0,0 5,21H9V19H5V15Z" /></g><g id="image-filter-center-focus-weak"><path d="M5,15H3V19A2,2 0 0,0 5,21H9V19H5M5,5H9V3H5A2,2 0 0,0 3,5V9H5M19,3H15V5H19V9H21V5A2,2 0 0,0 19,3M19,19H15V21H19A2,2 0 0,0 21,19V15H19M12,8A4,4 0 0,0 8,12A4,4 0 0,0 12,16A4,4 0 0,0 16,12A4,4 0 0,0 12,8M12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14Z" /></g><g id="image-filter-drama"><path d="M19,18H6A4,4 0 0,1 2,14A4,4 0 0,1 6,10A4,4 0 0,1 10,14H12C12,11.24 10.14,8.92 7.6,8.22C8.61,6.88 10.2,6 12,6C15.03,6 17.5,8.47 17.5,11.5V12H19A3,3 0 0,1 22,15A3,3 0 0,1 19,18M19.35,10.04C18.67,6.59 15.64,4 12,4C9.11,4 6.61,5.64 5.36,8.04C2.35,8.36 0,10.9 0,14A6,6 0 0,0 6,20H19A5,5 0 0,0 24,15C24,12.36 21.95,10.22 19.35,10.04Z" /></g><g id="image-filter-frames"><path d="M18,8H6V18H18M20,20H4V6H8.5L12.04,2.5L15.5,6H20M20,4H16L12,0L8,4H4A2,2 0 0,0 2,6V20A2,2 0 0,0 4,22H20A2,2 0 0,0 22,20V6A2,2 0 0,0 20,4Z" /></g><g id="image-filter-hdr"><path d="M14,6L10.25,11L13.1,14.8L11.5,16C9.81,13.75 7,10 7,10L1,18H23L14,6Z" /></g><g id="image-filter-none"><path d="M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z" /></g><g id="image-filter-tilt-shift"><path d="M5.68,19.74C7.16,20.95 9,21.75 11,21.95V19.93C9.54,19.75 8.21,19.17 7.1,18.31M13,19.93V21.95C15,21.75 16.84,20.95 18.32,19.74L16.89,18.31C15.79,19.17 14.46,19.75 13,19.93M18.31,16.9L19.74,18.33C20.95,16.85 21.75,15 21.95,13H19.93C19.75,14.46 19.17,15.79 18.31,16.9M15,12A3,3 0 0,0 12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12M4.07,13H2.05C2.25,15 3.05,16.84 4.26,18.32L5.69,16.89C4.83,15.79 4.25,14.46 4.07,13M5.69,7.1L4.26,5.68C3.05,7.16 2.25,9 2.05,11H4.07C4.25,9.54 4.83,8.21 5.69,7.1M19.93,11H21.95C21.75,9 20.95,7.16 19.74,5.68L18.31,7.1C19.17,8.21 19.75,9.54 19.93,11M18.32,4.26C16.84,3.05 15,2.25 13,2.05V4.07C14.46,4.25 15.79,4.83 16.9,5.69M11,4.07V2.05C9,2.25 7.16,3.05 5.68,4.26L7.1,5.69C8.21,4.83 9.54,4.25 11,4.07Z" /></g><g id="image-filter-vintage"><path d="M12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16M18.7,12.4C18.42,12.24 18.13,12.11 17.84,12C18.13,11.89 18.42,11.76 18.7,11.6C20.62,10.5 21.69,8.5 21.7,6.41C19.91,5.38 17.63,5.3 15.7,6.41C15.42,6.57 15.16,6.76 14.92,6.95C14.97,6.64 15,6.32 15,6C15,3.78 13.79,1.85 12,0.81C10.21,1.85 9,3.78 9,6C9,6.32 9.03,6.64 9.08,6.95C8.84,6.75 8.58,6.56 8.3,6.4C6.38,5.29 4.1,5.37 2.3,6.4C2.3,8.47 3.37,10.5 5.3,11.59C5.58,11.75 5.87,11.88 6.16,12C5.87,12.1 5.58,12.23 5.3,12.39C3.38,13.5 2.31,15.5 2.3,17.58C4.09,18.61 6.37,18.69 8.3,17.58C8.58,17.42 8.84,17.23 9.08,17.04C9.03,17.36 9,17.68 9,18C9,20.22 10.21,22.15 12,23.19C13.79,22.15 15,20.22 15,18C15,17.68 14.97,17.36 14.92,17.05C15.16,17.25 15.42,17.43 15.7,17.59C17.62,18.7 19.9,18.62 21.7,17.59C21.69,15.5 20.62,13.5 18.7,12.4Z" /></g><g id="image-multiple"><path d="M22,16V4A2,2 0 0,0 20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16M11,12L13.03,14.71L16,11L20,16H8M2,6V20A2,2 0 0,0 4,22H18V20H4V6" /></g><g id="import"><path d="M14,12L10,8V11H2V13H10V16M20,18V6C20,4.89 19.1,4 18,4H6A2,2 0 0,0 4,6V9H6V6H18V18H6V15H4V18A2,2 0 0,0 6,20H18A2,2 0 0,0 20,18Z" /></g><g id="inbox"><path d="M19,15H15A3,3 0 0,1 12,18A3,3 0 0,1 9,15H5V5H19M19,3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="inbox-arrow-down"><path d="M16,10H14V7H10V10H8L12,14M19,15H15A3,3 0 0,1 12,18A3,3 0 0,1 9,15H5V5H19M19,3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="inbox-arrow-up"><path d="M14,14H10V11H8L12,7L16,11H14V14M16,11M5,15V5H19V15H15A3,3 0 0,1 12,18A3,3 0 0,1 9,15H5M19,3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3" /></g><g id="incognito"><path d="M12,3C9.31,3 7.41,4.22 7.41,4.22L6,9H18L16.59,4.22C16.59,4.22 14.69,3 12,3M12,11C9.27,11 5.39,11.54 5.13,11.59C4.09,11.87 3.25,12.15 2.59,12.41C1.58,12.75 1,13 1,13H23C23,13 22.42,12.75 21.41,12.41C20.75,12.15 19.89,11.87 18.84,11.59C18.84,11.59 14.82,11 12,11M7.5,14A3.5,3.5 0 0,0 4,17.5A3.5,3.5 0 0,0 7.5,21A3.5,3.5 0 0,0 11,17.5C11,17.34 11,17.18 10.97,17.03C11.29,16.96 11.63,16.9 12,16.91C12.37,16.91 12.71,16.96 13.03,17.03C13,17.18 13,17.34 13,17.5A3.5,3.5 0 0,0 16.5,21A3.5,3.5 0 0,0 20,17.5A3.5,3.5 0 0,0 16.5,14C15.03,14 13.77,14.9 13.25,16.19C12.93,16.09 12.55,16 12,16C11.45,16 11.07,16.09 10.75,16.19C10.23,14.9 8.97,14 7.5,14M7.5,15A2.5,2.5 0 0,1 10,17.5A2.5,2.5 0 0,1 7.5,20A2.5,2.5 0 0,1 5,17.5A2.5,2.5 0 0,1 7.5,15M16.5,15A2.5,2.5 0 0,1 19,17.5A2.5,2.5 0 0,1 16.5,20A2.5,2.5 0 0,1 14,17.5A2.5,2.5 0 0,1 16.5,15Z" /></g><g id="infinity"><path d="M18.6,6.62C21.58,6.62 24,9 24,12C24,14.96 21.58,17.37 18.6,17.37C17.15,17.37 15.8,16.81 14.78,15.8L12,13.34L9.17,15.85C8.2,16.82 6.84,17.38 5.4,17.38C2.42,17.38 0,14.96 0,12C0,9.04 2.42,6.62 5.4,6.62C6.84,6.62 8.2,7.18 9.22,8.2L12,10.66L14.83,8.15C15.8,7.18 17.16,6.62 18.6,6.62M7.8,14.39L10.5,12L7.84,9.65C7.16,8.97 6.31,8.62 5.4,8.62C3.53,8.62 2,10.13 2,12C2,13.87 3.53,15.38 5.4,15.38C6.31,15.38 7.16,15.03 7.8,14.39M16.2,9.61L13.5,12L16.16,14.35C16.84,15.03 17.7,15.38 18.6,15.38C20.47,15.38 22,13.87 22,12C22,10.13 20.47,8.62 18.6,8.62C17.69,8.62 16.84,8.97 16.2,9.61Z" /></g><g id="information"><path d="M13,9H11V7H13M13,17H11V11H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="information-outline"><path d="M11,9H13V7H11M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M11,17H13V11H11V17Z" /></g><g id="information-variant"><path d="M13.5,4A1.5,1.5 0 0,0 12,5.5A1.5,1.5 0 0,0 13.5,7A1.5,1.5 0 0,0 15,5.5A1.5,1.5 0 0,0 13.5,4M13.14,8.77C11.95,8.87 8.7,11.46 8.7,11.46C8.5,11.61 8.56,11.6 8.72,11.88C8.88,12.15 8.86,12.17 9.05,12.04C9.25,11.91 9.58,11.7 10.13,11.36C12.25,10 10.47,13.14 9.56,18.43C9.2,21.05 11.56,19.7 12.17,19.3C12.77,18.91 14.38,17.8 14.54,17.69C14.76,17.54 14.6,17.42 14.43,17.17C14.31,17 14.19,17.12 14.19,17.12C13.54,17.55 12.35,18.45 12.19,17.88C12,17.31 13.22,13.4 13.89,10.71C14,10.07 14.3,8.67 13.14,8.77Z" /></g><g id="instagram"><path d="M7.8,2H16.2C19.4,2 22,4.6 22,7.8V16.2A5.8,5.8 0 0,1 16.2,22H7.8C4.6,22 2,19.4 2,16.2V7.8A5.8,5.8 0 0,1 7.8,2M7.6,4A3.6,3.6 0 0,0 4,7.6V16.4C4,18.39 5.61,20 7.6,20H16.4A3.6,3.6 0 0,0 20,16.4V7.6C20,5.61 18.39,4 16.4,4H7.6M17.25,5.5A1.25,1.25 0 0,1 18.5,6.75A1.25,1.25 0 0,1 17.25,8A1.25,1.25 0 0,1 16,6.75A1.25,1.25 0 0,1 17.25,5.5M12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9Z" /></g><g id="instapaper"><path d="M10,5A1,1 0 0,0 9,4H8V2H16V4H15A1,1 0 0,0 14,5V19A1,1 0 0,0 15,20H16V22H8V20H9A1,1 0 0,0 10,19V5Z" /></g><g id="internet-explorer"><path d="M13,3L14,3.06C16.8,1.79 19.23,1.64 20.5,2.92C21.5,3.93 21.58,5.67 20.92,7.72C21.61,9 22,10.45 22,12L21.95,13H9.08C9.45,15.28 11.06,17 13,17C14.31,17 15.47,16.21 16.2,15H21.5C20.25,18.5 16.92,21 13,21C11.72,21 10.5,20.73 9.41,20.25C6.5,21.68 3.89,21.9 2.57,20.56C1,18.96 1.68,15.57 4,12C4.93,10.54 6.14,9.06 7.57,7.65L8.38,6.88C7.21,7.57 5.71,8.62 4.19,10.17C5.03,6.08 8.66,3 13,3M13,7C11.21,7 9.69,8.47 9.18,10.5H16.82C16.31,8.47 14.79,7 13,7M20.06,4.06C19.4,3.39 18.22,3.35 16.74,3.81C18.22,4.5 19.5,5.56 20.41,6.89C20.73,5.65 20.64,4.65 20.06,4.06M3.89,20C4.72,20.84 6.4,20.69 8.44,19.76C6.59,18.67 5.17,16.94 4.47,14.88C3.27,17.15 3,19.07 3.89,20Z" /></g><g id="invert-colors"><path d="M12,19.58V19.58C10.4,19.58 8.89,18.96 7.76,17.83C6.62,16.69 6,15.19 6,13.58C6,12 6.62,10.47 7.76,9.34L12,5.1M17.66,7.93L12,2.27V2.27L6.34,7.93C3.22,11.05 3.22,16.12 6.34,19.24C7.9,20.8 9.95,21.58 12,21.58C14.05,21.58 16.1,20.8 17.66,19.24C20.78,16.12 20.78,11.05 17.66,7.93Z" /></g><g id="itunes"><path d="M7.85,17.07C7.03,17.17 3.5,17.67 4.06,20.26C4.69,23.3 9.87,22.59 9.83,19C9.81,16.57 9.83,9.2 9.83,9.2C9.83,9.2 9.76,8.53 10.43,8.39L18.19,6.79C18.19,6.79 18.83,6.65 18.83,7.29C18.83,7.89 18.83,14.2 18.83,14.2C18.83,14.2 18.9,14.83 18.12,15C17.34,15.12 13.91,15.4 14.19,18C14.5,21.07 20,20.65 20,17.07V2.61C20,2.61 20.04,1.62 18.9,1.87L9.5,3.78C9.5,3.78 8.66,3.96 8.66,4.77C8.66,5.5 8.66,16.11 8.66,16.11C8.66,16.11 8.66,16.96 7.85,17.07Z" /></g><g id="jeepney"><path d="M19,13V7H20V4H4V7H5V13H2C2,13.93 2.5,14.71 3.5,14.93V20A1,1 0 0,0 4.5,21H5.5A1,1 0 0,0 6.5,20V19H17.5V20A1,1 0 0,0 18.5,21H19.5A1,1 0 0,0 20.5,20V14.93C21.5,14.7 22,13.93 22,13H19M8,15A1.5,1.5 0 0,1 6.5,13.5A1.5,1.5 0 0,1 8,12A1.5,1.5 0 0,1 9.5,13.5A1.5,1.5 0 0,1 8,15M16,15A1.5,1.5 0 0,1 14.5,13.5A1.5,1.5 0 0,1 16,12A1.5,1.5 0 0,1 17.5,13.5A1.5,1.5 0 0,1 16,15M17.5,10.5C15.92,10.18 14.03,10 12,10C9.97,10 8,10.18 6.5,10.5V7H17.5V10.5Z" /></g><g id="jira"><path d="M12,2A1.58,1.58 0 0,1 13.58,3.58A1.58,1.58 0 0,1 12,5.16A1.58,1.58 0 0,1 10.42,3.58A1.58,1.58 0 0,1 12,2M7.79,3.05C8.66,3.05 9.37,3.76 9.37,4.63C9.37,5.5 8.66,6.21 7.79,6.21A1.58,1.58 0 0,1 6.21,4.63A1.58,1.58 0 0,1 7.79,3.05M16.21,3.05C17.08,3.05 17.79,3.76 17.79,4.63C17.79,5.5 17.08,6.21 16.21,6.21A1.58,1.58 0 0,1 14.63,4.63A1.58,1.58 0 0,1 16.21,3.05M11.8,10.95C9.7,8.84 10.22,7.79 10.22,7.79H13.91C13.91,9.37 11.8,10.95 11.8,10.95M13.91,21.47C13.91,21.47 13.91,19.37 9.7,15.16C5.5,10.95 4.96,9.89 4.43,6.74C4.43,6.74 4.83,6.21 5.36,6.74C5.88,7.26 7.07,7.66 8.12,7.66C8.12,7.66 9.17,10.95 12.07,13.05C12.07,13.05 15.88,9.11 15.88,7.53C15.88,7.53 17.07,7.79 18.5,6.74C18.5,6.74 19.5,6.21 19.57,6.74C19.7,7.79 18.64,11.47 14.3,15.16C14.3,15.16 17.07,18.32 16.8,21.47H13.91M9.17,16.21L11.41,18.71C10.36,19.76 10.22,22 10.22,22H7.07C7.59,17.79 9.17,16.21 9.17,16.21Z" /></g><g id="jsfiddle"><path d="M20.33,10.79C21.9,11.44 23,12.96 23,14.73C23,17.09 21.06,19 18.67,19H5.4C3,18.96 1,17 1,14.62C1,13.03 1.87,11.63 3.17,10.87C3.08,10.59 3.04,10.29 3.04,10C3.04,8.34 4.39,7 6.06,7C6.75,7 7.39,7.25 7.9,7.64C8.96,5.47 11.2,3.96 13.81,3.96C17.42,3.96 20.35,6.85 20.35,10.41C20.35,10.54 20.34,10.67 20.33,10.79M9.22,10.85C7.45,10.85 6,12.12 6,13.67C6,15.23 7.45,16.5 9.22,16.5C10.25,16.5 11.17,16.06 11.76,15.39L10.75,14.25C10.42,14.68 9.77,15 9.22,15C8.43,15 7.79,14.4 7.79,13.67C7.79,12.95 8.43,12.36 9.22,12.36C9.69,12.36 10.12,12.59 10.56,12.88C11,13.16 11.73,14.17 12.31,14.82C13.77,16.29 14.53,16.42 15.4,16.42C17.17,16.42 18.6,15.15 18.6,13.6C18.6,12.04 17.17,10.78 15.4,10.78C14.36,10.78 13.44,11.21 12.85,11.88L13.86,13C14.19,12.59 14.84,12.28 15.4,12.28C16.19,12.28 16.83,12.87 16.83,13.6C16.83,14.32 16.19,14.91 15.4,14.91C14.93,14.91 14.5,14.68 14.05,14.39C13.61,14.11 12.88,13.1 12.31,12.45C10.84,11 10.08,10.85 9.22,10.85Z" /></g><g id="json"><path d="M5,3H7V5H5V10A2,2 0 0,1 3,12A2,2 0 0,1 5,14V19H7V21H5C3.93,20.73 3,20.1 3,19V15A2,2 0 0,0 1,13H0V11H1A2,2 0 0,0 3,9V5A2,2 0 0,1 5,3M19,3A2,2 0 0,1 21,5V9A2,2 0 0,0 23,11H24V13H23A2,2 0 0,0 21,15V19A2,2 0 0,1 19,21H17V19H19V14A2,2 0 0,1 21,12A2,2 0 0,1 19,10V5H17V3H19M12,15A1,1 0 0,1 13,16A1,1 0 0,1 12,17A1,1 0 0,1 11,16A1,1 0 0,1 12,15M8,15A1,1 0 0,1 9,16A1,1 0 0,1 8,17A1,1 0 0,1 7,16A1,1 0 0,1 8,15M16,15A1,1 0 0,1 17,16A1,1 0 0,1 16,17A1,1 0 0,1 15,16A1,1 0 0,1 16,15Z" /></g><g id="keg"><path d="M5,22V20H6V16H5V14H6V11H5V7H11V3H10V2H11L13,2H14V3H13V7H19V11H18V14H19V16H18V20H19V22H5M17,9A1,1 0 0,0 16,8H14A1,1 0 0,0 13,9A1,1 0 0,0 14,10H16A1,1 0 0,0 17,9Z" /></g><g id="kettle"><path d="M12.5,3C7.81,3 4,5.69 4,9V9C4,10.19 4.5,11.34 5.44,12.33C4.53,13.5 4,14.96 4,16.5C4,17.64 4,18.83 4,20C4,21.11 4.89,22 6,22H19C20.11,22 21,21.11 21,20C21,18.85 21,17.61 21,16.5C21,15.28 20.66,14.07 20,13L22,11L19,8L16.9,10.1C15.58,9.38 14.05,9 12.5,9C10.65,9 8.95,9.53 7.55,10.41C7.19,9.97 7,9.5 7,9C7,7.21 9.46,5.75 12.5,5.75V5.75C13.93,5.75 15.3,6.08 16.33,6.67L18.35,4.65C16.77,3.59 14.68,3 12.5,3M12.5,11C12.84,11 13.17,11.04 13.5,11.09C10.39,11.57 8,14.25 8,17.5V20H6V17.5A6.5,6.5 0 0,1 12.5,11Z" /></g><g id="key"><path d="M7,14A2,2 0 0,1 5,12A2,2 0 0,1 7,10A2,2 0 0,1 9,12A2,2 0 0,1 7,14M12.65,10C11.83,7.67 9.61,6 7,6A6,6 0 0,0 1,12A6,6 0 0,0 7,18C9.61,18 11.83,16.33 12.65,14H17V18H21V14H23V10H12.65Z" /></g><g id="key-change"><path d="M6.5,2C8.46,2 10.13,3.25 10.74,5H22V8H18V11H15V8H10.74C10.13,9.75 8.46,11 6.5,11C4,11 2,9 2,6.5C2,4 4,2 6.5,2M6.5,5A1.5,1.5 0 0,0 5,6.5A1.5,1.5 0 0,0 6.5,8A1.5,1.5 0 0,0 8,6.5A1.5,1.5 0 0,0 6.5,5M6.5,13C8.46,13 10.13,14.25 10.74,16H22V19H20V22H18V19H16V22H13V19H10.74C10.13,20.75 8.46,22 6.5,22C4,22 2,20 2,17.5C2,15 4,13 6.5,13M6.5,16A1.5,1.5 0 0,0 5,17.5A1.5,1.5 0 0,0 6.5,19A1.5,1.5 0 0,0 8,17.5A1.5,1.5 0 0,0 6.5,16Z" /></g><g id="key-minus"><path d="M6.5,3C8.46,3 10.13,4.25 10.74,6H22V9H18V12H15V9H10.74C10.13,10.75 8.46,12 6.5,12C4,12 2,10 2,7.5C2,5 4,3 6.5,3M6.5,6A1.5,1.5 0 0,0 5,7.5A1.5,1.5 0 0,0 6.5,9A1.5,1.5 0 0,0 8,7.5A1.5,1.5 0 0,0 6.5,6M8,17H16V19H8V17Z" /></g><g id="key-plus"><path d="M6.5,3C8.46,3 10.13,4.25 10.74,6H22V9H18V12H15V9H10.74C10.13,10.75 8.46,12 6.5,12C4,12 2,10 2,7.5C2,5 4,3 6.5,3M6.5,6A1.5,1.5 0 0,0 5,7.5A1.5,1.5 0 0,0 6.5,9A1.5,1.5 0 0,0 8,7.5A1.5,1.5 0 0,0 6.5,6M8,17H11V14H13V17H16V19H13V22H11V19H8V17Z" /></g><g id="key-remove"><path d="M6.5,3C8.46,3 10.13,4.25 10.74,6H22V9H18V12H15V9H10.74C10.13,10.75 8.46,12 6.5,12C4,12 2,10 2,7.5C2,5 4,3 6.5,3M6.5,6A1.5,1.5 0 0,0 5,7.5A1.5,1.5 0 0,0 6.5,9A1.5,1.5 0 0,0 8,7.5A1.5,1.5 0 0,0 6.5,6M14.59,14L16,15.41L13.41,18L16,20.59L14.59,22L12,19.41L9.41,22L8,20.59L10.59,18L8,15.41L9.41,14L12,16.59L14.59,14Z" /></g><g id="key-variant"><path d="M22,18V22H18V19H15V16H12L9.74,13.74C9.19,13.91 8.61,14 8,14A6,6 0 0,1 2,8A6,6 0 0,1 8,2A6,6 0 0,1 14,8C14,8.61 13.91,9.19 13.74,9.74L22,18M7,5A2,2 0 0,0 5,7A2,2 0 0,0 7,9A2,2 0 0,0 9,7A2,2 0 0,0 7,5Z" /></g><g id="keyboard"><path d="M19,10H17V8H19M19,13H17V11H19M16,10H14V8H16M16,13H14V11H16M16,17H8V15H16M7,10H5V8H7M7,13H5V11H7M8,11H10V13H8M8,8H10V10H8M11,11H13V13H11M11,8H13V10H11M20,5H4C2.89,5 2,5.89 2,7V17A2,2 0 0,0 4,19H20A2,2 0 0,0 22,17V7C22,5.89 21.1,5 20,5Z" /></g><g id="keyboard-backspace"><path d="M21,11H6.83L10.41,7.41L9,6L3,12L9,18L10.41,16.58L6.83,13H21V11Z" /></g><g id="keyboard-caps"><path d="M6,18H18V16H6M12,8.41L16.59,13L18,11.58L12,5.58L6,11.58L7.41,13L12,8.41Z" /></g><g id="keyboard-close"><path d="M12,23L16,19H8M19,8H17V6H19M19,11H17V9H19M16,8H14V6H16M16,11H14V9H16M16,15H8V13H16M7,8H5V6H7M7,11H5V9H7M8,9H10V11H8M8,6H10V8H8M11,9H13V11H11M11,6H13V8H11M20,3H4C2.89,3 2,3.89 2,5V15A2,2 0 0,0 4,17H20A2,2 0 0,0 22,15V5C22,3.89 21.1,3 20,3Z" /></g><g id="keyboard-off"><path d="M1,4.27L2.28,3L20,20.72L18.73,22L15.73,19H4C2.89,19 2,18.1 2,17V7C2,6.5 2.18,6.07 2.46,5.73L1,4.27M19,10V8H17V10H19M19,13V11H17V13H19M16,10V8H14V10H16M16,13V11H14V12.18L11.82,10H13V8H11V9.18L9.82,8L6.82,5H20A2,2 0 0,1 22,7V17C22,17.86 21.46,18.59 20.7,18.87L14.82,13H16M8,15V17H13.73L11.73,15H8M5,10H6.73L5,8.27V10M7,13V11H5V13H7M8,13H9.73L8,11.27V13Z" /></g><g id="keyboard-return"><path d="M19,7V11H5.83L9.41,7.41L8,6L2,12L8,18L9.41,16.58L5.83,13H21V7H19Z" /></g><g id="keyboard-tab"><path d="M20,18H22V6H20M11.59,7.41L15.17,11H1V13H15.17L11.59,16.58L13,18L19,12L13,6L11.59,7.41Z" /></g><g id="keyboard-variant"><path d="M6,16H18V18H6V16M6,13V15H2V13H6M7,15V13H10V15H7M11,15V13H13V15H11M14,15V13H17V15H14M18,15V13H22V15H18M2,10H5V12H2V10M19,12V10H22V12H19M18,12H16V10H18V12M8,12H6V10H8V12M12,12H9V10H12V12M15,12H13V10H15V12M2,9V7H4V9H2M5,9V7H7V9H5M8,9V7H10V9H8M11,9V7H13V9H11M14,9V7H16V9H14M17,9V7H22V9H17Z" /></g><g id="kodi"><path d="M12.03,1C11.82,1 11.6,1.11 11.41,1.31C10.56,2.16 9.72,3 8.88,3.84C8.66,4.06 8.6,4.18 8.38,4.38C8.09,4.62 7.96,4.91 7.97,5.28C8,6.57 8,7.84 8,9.13C8,10.46 8,11.82 8,13.16C8,13.26 8,13.34 8.03,13.44C8.11,13.75 8.31,13.82 8.53,13.59C9.73,12.39 10.8,11.3 12,10.09C13.36,8.73 14.73,7.37 16.09,6C16.5,5.6 16.5,5.15 16.09,4.75C14.94,3.6 13.77,2.47 12.63,1.31C12.43,1.11 12.24,1 12.03,1M18.66,7.66C18.45,7.66 18.25,7.75 18.06,7.94C16.91,9.1 15.75,10.24 14.59,11.41C14.2,11.8 14.2,12.23 14.59,12.63C15.74,13.78 16.88,14.94 18.03,16.09C18.43,16.5 18.85,16.5 19.25,16.09C20.36,15 21.5,13.87 22.59,12.75C22.76,12.58 22.93,12.42 23,12.19V11.88C22.93,11.64 22.76,11.5 22.59,11.31C21.47,10.19 20.37,9.06 19.25,7.94C19.06,7.75 18.86,7.66 18.66,7.66M4.78,8.09C4.65,8.04 4.58,8.14 4.5,8.22C3.35,9.39 2.34,10.43 1.19,11.59C0.93,11.86 0.93,12.24 1.19,12.5C1.81,13.13 2.44,13.75 3.06,14.38C3.6,14.92 4,15.33 4.56,15.88C4.72,16.03 4.86,16 4.94,15.81C5,15.71 5,15.58 5,15.47C5,14.29 5,13.37 5,12.19C5,11 5,9.81 5,8.63C5,8.55 5,8.45 4.97,8.38C4.95,8.25 4.9,8.14 4.78,8.09M12.09,14.25C11.89,14.25 11.66,14.34 11.47,14.53C10.32,15.69 9.18,16.87 8.03,18.03C7.63,18.43 7.63,18.85 8.03,19.25C9.14,20.37 10.26,21.47 11.38,22.59C11.54,22.76 11.71,22.93 11.94,23H12.22C12.44,22.94 12.62,22.79 12.78,22.63C13.9,21.5 15.03,20.38 16.16,19.25C16.55,18.85 16.5,18.4 16.13,18C14.97,16.84 13.84,15.69 12.69,14.53C12.5,14.34 12.3,14.25 12.09,14.25Z" /></g><g id="label"><path d="M17.63,5.84C17.27,5.33 16.67,5 16,5H5A2,2 0 0,0 3,7V17A2,2 0 0,0 5,19H16C16.67,19 17.27,18.66 17.63,18.15L22,12L17.63,5.84Z" /></g><g id="label-outline"><path d="M16,17H5V7H16L19.55,12M17.63,5.84C17.27,5.33 16.67,5 16,5H5A2,2 0 0,0 3,7V17A2,2 0 0,0 5,19H16C16.67,19 17.27,18.66 17.63,18.15L22,12L17.63,5.84Z" /></g><g id="lambda"><path d="M6,20L10.16,7.91L9.34,6H8V4H10C10.42,4 10.78,4.26 10.93,4.63L16.66,18H18V20H16C15.57,20 15.21,19.73 15.07,19.36L11.33,10.65L8.12,20H6Z" /></g><g id="lamp"><path d="M8,2H16L20,14H4L8,2M11,15H13V20H18V22H6V20H11V15Z" /></g><g id="lan"><path d="M10,2C8.89,2 8,2.89 8,4V7C8,8.11 8.89,9 10,9H11V11H2V13H6V15H5C3.89,15 3,15.89 3,17V20C3,21.11 3.89,22 5,22H9C10.11,22 11,21.11 11,20V17C11,15.89 10.11,15 9,15H8V13H16V15H15C13.89,15 13,15.89 13,17V20C13,21.11 13.89,22 15,22H19C20.11,22 21,21.11 21,20V17C21,15.89 20.11,15 19,15H18V13H22V11H13V9H14C15.11,9 16,8.11 16,7V4C16,2.89 15.11,2 14,2H10M10,4H14V7H10V4M5,17H9V20H5V17M15,17H19V20H15V17Z" /></g><g id="lan-connect"><path d="M4,1C2.89,1 2,1.89 2,3V7C2,8.11 2.89,9 4,9H1V11H13V9H10C11.11,9 12,8.11 12,7V3C12,1.89 11.11,1 10,1H4M4,3H10V7H4V3M3,13V18L3,20H10V18H5V13H3M14,13C12.89,13 12,13.89 12,15V19C12,20.11 12.89,21 14,21H11V23H23V21H20C21.11,21 22,20.11 22,19V15C22,13.89 21.11,13 20,13H14M14,15H20V19H14V15Z" /></g><g id="lan-disconnect"><path d="M4,1C2.89,1 2,1.89 2,3V7C2,8.11 2.89,9 4,9H1V11H13V9H10C11.11,9 12,8.11 12,7V3C12,1.89 11.11,1 10,1H4M4,3H10V7H4V3M14,13C12.89,13 12,13.89 12,15V19C12,20.11 12.89,21 14,21H11V23H23V21H20C21.11,21 22,20.11 22,19V15C22,13.89 21.11,13 20,13H14M3.88,13.46L2.46,14.88L4.59,17L2.46,19.12L3.88,20.54L6,18.41L8.12,20.54L9.54,19.12L7.41,17L9.54,14.88L8.12,13.46L6,15.59L3.88,13.46M14,15H20V19H14V15Z" /></g><g id="lan-pending"><path d="M4,1C2.89,1 2,1.89 2,3V7C2,8.11 2.89,9 4,9H1V11H13V9H10C11.11,9 12,8.11 12,7V3C12,1.89 11.11,1 10,1H4M4,3H10V7H4V3M3,12V14H5V12H3M14,13C12.89,13 12,13.89 12,15V19C12,20.11 12.89,21 14,21H11V23H23V21H20C21.11,21 22,20.11 22,19V15C22,13.89 21.11,13 20,13H14M3,15V17H5V15H3M14,15H20V19H14V15M3,18V20H5V18H3M6,18V20H8V18H6M9,18V20H11V18H9Z" /></g><g id="language-c"><path d="M15.45,15.97L15.87,18.41C15.61,18.55 15.19,18.68 14.63,18.8C14.06,18.93 13.39,19 12.62,19C10.41,18.96 8.75,18.3 7.64,17.04C6.5,15.77 5.96,14.16 5.96,12.21C6,9.9 6.68,8.13 8,6.89C9.28,5.64 10.92,5 12.9,5C13.65,5 14.3,5.07 14.84,5.19C15.38,5.31 15.78,5.44 16.04,5.59L15.44,8.08L14.4,7.74C14,7.64 13.53,7.59 13,7.59C11.85,7.58 10.89,7.95 10.14,8.69C9.38,9.42 9,10.54 8.96,12.03C8.97,13.39 9.33,14.45 10.04,15.23C10.75,16 11.74,16.4 13.03,16.41L14.36,16.29C14.79,16.21 15.15,16.1 15.45,15.97Z" /></g><g id="language-cpp"><path d="M10.5,15.97L10.91,18.41C10.65,18.55 10.23,18.68 9.67,18.8C9.1,18.93 8.43,19 7.66,19C5.45,18.96 3.79,18.3 2.68,17.04C1.56,15.77 1,14.16 1,12.21C1.05,9.9 1.72,8.13 3,6.89C4.32,5.64 5.96,5 7.94,5C8.69,5 9.34,5.07 9.88,5.19C10.42,5.31 10.82,5.44 11.08,5.59L10.5,8.08L9.44,7.74C9.04,7.64 8.58,7.59 8.05,7.59C6.89,7.58 5.93,7.95 5.18,8.69C4.42,9.42 4.03,10.54 4,12.03C4,13.39 4.37,14.45 5.08,15.23C5.79,16 6.79,16.4 8.07,16.41L9.4,16.29C9.83,16.21 10.19,16.1 10.5,15.97M11,11H13V9H15V11H17V13H15V15H13V13H11V11M18,11H20V9H22V11H24V13H22V15H20V13H18V11Z" /></g><g id="language-csharp"><path d="M11.5,15.97L11.91,18.41C11.65,18.55 11.23,18.68 10.67,18.8C10.1,18.93 9.43,19 8.66,19C6.45,18.96 4.79,18.3 3.68,17.04C2.56,15.77 2,14.16 2,12.21C2.05,9.9 2.72,8.13 4,6.89C5.32,5.64 6.96,5 8.94,5C9.69,5 10.34,5.07 10.88,5.19C11.42,5.31 11.82,5.44 12.08,5.59L11.5,8.08L10.44,7.74C10.04,7.64 9.58,7.59 9.05,7.59C7.89,7.58 6.93,7.95 6.18,8.69C5.42,9.42 5.03,10.54 5,12.03C5,13.39 5.37,14.45 6.08,15.23C6.79,16 7.79,16.4 9.07,16.41L10.4,16.29C10.83,16.21 11.19,16.1 11.5,15.97M13.89,19L14.5,15H13L13.34,13H14.84L15.16,11H13.66L14,9H15.5L16.11,5H18.11L17.5,9H18.5L19.11,5H21.11L20.5,9H22L21.66,11H20.16L19.84,13H21.34L21,15H19.5L18.89,19H16.89L17.5,15H16.5L15.89,19H13.89M16.84,13H17.84L18.16,11H17.16L16.84,13Z" /></g><g id="language-css3"><path d="M5,3L4.35,6.34H17.94L17.5,8.5H3.92L3.26,11.83H16.85L16.09,15.64L10.61,17.45L5.86,15.64L6.19,14H2.85L2.06,18L9.91,21L18.96,18L20.16,11.97L20.4,10.76L21.94,3H5Z" /></g><g id="language-html5"><path d="M12,17.56L16.07,16.43L16.62,10.33H9.38L9.2,8.3H16.8L17,6.31H7L7.56,12.32H14.45L14.22,14.9L12,15.5L9.78,14.9L9.64,13.24H7.64L7.93,16.43L12,17.56M4.07,3H19.93L18.5,19.2L12,21L5.5,19.2L4.07,3Z" /></g><g id="language-javascript"><path d="M3,3H21V21H3V3M7.73,18.04C8.13,18.89 8.92,19.59 10.27,19.59C11.77,19.59 12.8,18.79 12.8,17.04V11.26H11.1V17C11.1,17.86 10.75,18.08 10.2,18.08C9.62,18.08 9.38,17.68 9.11,17.21L7.73,18.04M13.71,17.86C14.21,18.84 15.22,19.59 16.8,19.59C18.4,19.59 19.6,18.76 19.6,17.23C19.6,15.82 18.79,15.19 17.35,14.57L16.93,14.39C16.2,14.08 15.89,13.87 15.89,13.37C15.89,12.96 16.2,12.64 16.7,12.64C17.18,12.64 17.5,12.85 17.79,13.37L19.1,12.5C18.55,11.54 17.77,11.17 16.7,11.17C15.19,11.17 14.22,12.13 14.22,13.4C14.22,14.78 15.03,15.43 16.25,15.95L16.67,16.13C17.45,16.47 17.91,16.68 17.91,17.26C17.91,17.74 17.46,18.09 16.76,18.09C15.93,18.09 15.45,17.66 15.09,17.06L13.71,17.86Z" /></g><g id="language-php"><path d="M12,18.08C5.37,18.08 0,15.36 0,12C0,8.64 5.37,5.92 12,5.92C18.63,5.92 24,8.64 24,12C24,15.36 18.63,18.08 12,18.08M6.81,10.13C7.35,10.13 7.72,10.23 7.9,10.44C8.08,10.64 8.12,11 8.03,11.47C7.93,12 7.74,12.34 7.45,12.56C7.17,12.78 6.74,12.89 6.16,12.89H5.29L5.82,10.13H6.81M3.31,15.68H4.75L5.09,13.93H6.32C6.86,13.93 7.3,13.87 7.65,13.76C8,13.64 8.32,13.45 8.61,13.18C8.85,12.96 9.04,12.72 9.19,12.45C9.34,12.19 9.45,11.89 9.5,11.57C9.66,10.79 9.55,10.18 9.17,9.75C8.78,9.31 8.18,9.1 7.35,9.1H4.59L3.31,15.68M10.56,7.35L9.28,13.93H10.7L11.44,10.16H12.58C12.94,10.16 13.18,10.22 13.29,10.34C13.4,10.46 13.42,10.68 13.36,11L12.79,13.93H14.24L14.83,10.86C14.96,10.24 14.86,9.79 14.56,9.5C14.26,9.23 13.71,9.1 12.91,9.1H11.64L12,7.35H10.56M18,10.13C18.55,10.13 18.91,10.23 19.09,10.44C19.27,10.64 19.31,11 19.22,11.47C19.12,12 18.93,12.34 18.65,12.56C18.36,12.78 17.93,12.89 17.35,12.89H16.5L17,10.13H18M14.5,15.68H15.94L16.28,13.93H17.5C18.05,13.93 18.5,13.87 18.85,13.76C19.2,13.64 19.5,13.45 19.8,13.18C20.04,12.96 20.24,12.72 20.38,12.45C20.53,12.19 20.64,11.89 20.7,11.57C20.85,10.79 20.74,10.18 20.36,9.75C20,9.31 19.37,9.1 18.54,9.1H15.79L14.5,15.68Z" /></g><g id="language-python"><path d="M19.14,7.5A2.86,2.86 0 0,1 22,10.36V14.14A2.86,2.86 0 0,1 19.14,17H12C12,17.39 12.32,17.96 12.71,17.96H17V19.64A2.86,2.86 0 0,1 14.14,22.5H9.86A2.86,2.86 0 0,1 7,19.64V15.89C7,14.31 8.28,13.04 9.86,13.04H15.11C16.69,13.04 17.96,11.76 17.96,10.18V7.5H19.14M14.86,19.29C14.46,19.29 14.14,19.59 14.14,20.18C14.14,20.77 14.46,20.89 14.86,20.89A0.71,0.71 0 0,0 15.57,20.18C15.57,19.59 15.25,19.29 14.86,19.29M4.86,17.5C3.28,17.5 2,16.22 2,14.64V10.86C2,9.28 3.28,8 4.86,8H12C12,7.61 11.68,7.04 11.29,7.04H7V5.36C7,3.78 8.28,2.5 9.86,2.5H14.14C15.72,2.5 17,3.78 17,5.36V9.11C17,10.69 15.72,11.96 14.14,11.96H8.89C7.31,11.96 6.04,13.24 6.04,14.82V17.5H4.86M9.14,5.71C9.54,5.71 9.86,5.41 9.86,4.82C9.86,4.23 9.54,4.11 9.14,4.11C8.75,4.11 8.43,4.23 8.43,4.82C8.43,5.41 8.75,5.71 9.14,5.71Z" /></g><g id="language-python-text"><path d="M2,5.69C8.92,1.07 11.1,7 11.28,10.27C11.46,13.53 8.29,17.64 4.31,14.92V20.3L2,18.77V5.69M4.22,7.4V12.78C7.84,14.95 9.08,13.17 9.08,10.09C9.08,5.74 6.57,5.59 4.22,7.4M15.08,4.15C15.08,4.15 14.9,7.64 15.08,11.07C15.44,14.5 19.69,11.84 19.69,11.84V4.92L22,5.2V14.44C22,20.6 15.85,20.3 15.85,20.3L15.08,18C20.46,18 19.78,14.43 19.78,14.43C13.27,16.97 12.77,12.61 12.77,12.61V5.69L15.08,4.15Z" /></g><g id="language-swift"><path d="M17.09,19.72C14.73,21.08 11.5,21.22 8.23,19.82C5.59,18.7 3.4,16.74 2,14.5C2.67,15.05 3.46,15.5 4.3,15.9C7.67,17.47 11.03,17.36 13.4,15.9C10.03,13.31 7.16,9.94 5.03,7.19C4.58,6.74 4.25,6.18 3.91,5.68C12.19,11.73 11.83,13.27 6.32,4.67C11.21,9.61 15.75,12.41 15.75,12.41C15.91,12.5 16,12.57 16.11,12.63C16.21,12.38 16.3,12.12 16.37,11.85C17.16,9 16.26,5.73 14.29,3.04C18.84,5.79 21.54,10.95 20.41,15.28C20.38,15.39 20.35,15.5 20.36,15.67C22.6,18.5 22,21.45 21.71,20.89C20.5,18.5 18.23,19.24 17.09,19.72V19.72Z" /></g><g id="language-typescript"><path d="M3,3H21V21H3V3M13.71,17.86C14.21,18.84 15.22,19.59 16.8,19.59C18.4,19.59 19.6,18.76 19.6,17.23C19.6,15.82 18.79,15.19 17.35,14.57L16.93,14.39C16.2,14.08 15.89,13.87 15.89,13.37C15.89,12.96 16.2,12.64 16.7,12.64C17.18,12.64 17.5,12.85 17.79,13.37L19.1,12.5C18.55,11.54 17.77,11.17 16.7,11.17C15.19,11.17 14.22,12.13 14.22,13.4C14.22,14.78 15.03,15.43 16.25,15.95L16.67,16.13C17.45,16.47 17.91,16.68 17.91,17.26C17.91,17.74 17.46,18.09 16.76,18.09C15.93,18.09 15.45,17.66 15.09,17.06L13.71,17.86M13,11.25H8V12.75H9.5V20H11.25V12.75H13V11.25Z" /></g><g id="laptop"><path d="M4,6H20V16H4M20,18A2,2 0 0,0 22,16V6C22,4.89 21.1,4 20,4H4C2.89,4 2,4.89 2,6V16A2,2 0 0,0 4,18H0V20H24V18H20Z" /></g><g id="laptop-chromebook"><path d="M20,15H4V5H20M14,18H10V17H14M22,18V3H2V18H0V20H24V18H22Z" /></g><g id="laptop-mac"><path d="M12,19A1,1 0 0,1 11,18A1,1 0 0,1 12,17A1,1 0 0,1 13,18A1,1 0 0,1 12,19M4,5H20V16H4M20,18A2,2 0 0,0 22,16V5C22,3.89 21.1,3 20,3H4C2.89,3 2,3.89 2,5V16A2,2 0 0,0 4,18H0A2,2 0 0,0 2,20H22A2,2 0 0,0 24,18H20Z" /></g><g id="laptop-off"><path d="M1,4.27L2.28,3L20,20.72L18.73,22L16.73,20H0V18H4C2.89,18 2,17.1 2,16V6C2,5.78 2.04,5.57 2.1,5.37L1,4.27M4,16H12.73L4,7.27V16M20,16V6H7.82L5.82,4H20A2,2 0 0,1 22,6V16A2,2 0 0,1 20,18H24V20H21.82L17.82,16H20Z" /></g><g id="laptop-windows"><path d="M3,4H21A1,1 0 0,1 22,5V16A1,1 0 0,1 21,17H22L24,20V21H0V20L2,17H3A1,1 0 0,1 2,16V5A1,1 0 0,1 3,4M4,6V15H20V6H4Z" /></g><g id="lastfm"><path d="M18,17.93C15.92,17.92 14.81,16.9 14.04,15.09L13.82,14.6L11.92,10.23C11.29,8.69 9.72,7.64 7.96,7.64C5.57,7.64 3.63,9.59 3.63,12C3.63,14.41 5.57,16.36 7.96,16.36C9.62,16.36 11.08,15.41 11.8,14L12.57,15.81C11.5,17.15 9.82,18 7.96,18C4.67,18 2,15.32 2,12C2,8.69 4.67,6 7.96,6C10.44,6 12.45,7.34 13.47,9.7C13.54,9.89 14.54,12.24 15.42,14.24C15.96,15.5 16.42,16.31 17.91,16.36C19.38,16.41 20.39,15.5 20.39,14.37C20.39,13.26 19.62,13 18.32,12.56C16,11.79 14.79,11 14.79,9.15C14.79,7.33 16,6.12 18,6.12C19.31,6.12 20.24,6.7 20.89,7.86L19.62,8.5C19.14,7.84 18.61,7.57 17.94,7.57C17,7.57 16.33,8.23 16.33,9.1C16.33,10.34 17.43,10.53 18.97,11.03C21.04,11.71 22,12.5 22,14.42C22,16.45 20.27,17.93 18,17.93Z" /></g><g id="launch"><path d="M14,3V5H17.59L7.76,14.83L9.17,16.24L19,6.41V10H21V3M19,19H5V5H12V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V12H19V19Z" /></g><g id="layers"><path d="M12,16L19.36,10.27L21,9L12,2L3,9L4.63,10.27M12,18.54L4.62,12.81L3,14.07L12,21.07L21,14.07L19.37,12.8L12,18.54Z" /></g><g id="layers-off"><path d="M3.27,1L2,2.27L6.22,6.5L3,9L4.63,10.27L12,16L14.1,14.37L15.53,15.8L12,18.54L4.63,12.81L3,14.07L12,21.07L16.95,17.22L20.73,21L22,19.73L3.27,1M19.36,10.27L21,9L12,2L9.09,4.27L16.96,12.15L19.36,10.27M19.81,15L21,14.07L19.57,12.64L18.38,13.56L19.81,15Z" /></g><g id="lead-pencil"><path d="M16.84,2.73C16.45,2.73 16.07,2.88 15.77,3.17L13.65,5.29L18.95,10.6L21.07,8.5C21.67,7.89 21.67,6.94 21.07,6.36L17.9,3.17C17.6,2.88 17.22,2.73 16.84,2.73M12.94,6L4.84,14.11L7.4,14.39L7.58,16.68L9.86,16.85L10.15,19.41L18.25,11.3M4.25,15.04L2.5,21.73L9.2,19.94L8.96,17.78L6.65,17.61L6.47,15.29" /></g><g id="leaf"><path d="M17,8C8,10 5.9,16.17 3.82,21.34L5.71,22L6.66,19.7C7.14,19.87 7.64,20 8,20C19,20 22,3 22,3C21,5 14,5.25 9,6.25C4,7.25 2,11.5 2,13.5C2,15.5 3.75,17.25 3.75,17.25C7,8 17,8 17,8Z" /></g><g id="led-off"><path d="M12,6A4,4 0 0,0 8,10V16H6V18H9V23H11V18H13V23H15V18H18V16H16V10A4,4 0 0,0 12,6Z" /></g><g id="led-on"><path d="M11,0V4H13V0H11M18.3,2.29L15.24,5.29L16.64,6.71L19.7,3.71L18.3,2.29M5.71,2.29L4.29,3.71L7.29,6.71L8.71,5.29L5.71,2.29M12,6A4,4 0 0,0 8,10V16H6V18H9V23H11V18H13V23H15V18H18V16H16V10A4,4 0 0,0 12,6M2,9V11H6V9H2M18,9V11H22V9H18Z" /></g><g id="led-outline"><path d="M12,6A4,4 0 0,0 8,10V16H6V18H9V23H11V18H13V23H15V18H18V16H16V10A4,4 0 0,0 12,6M12,8A2,2 0 0,1 14,10V15H10V10A2,2 0 0,1 12,8Z" /></g><g id="led-variant-off"><path d="M12,3C10.05,3 8.43,4.4 8.08,6.25L16.82,15H18V13H16V7A4,4 0 0,0 12,3M3.28,4L2,5.27L8,11.27V13H6V15H9V21H11V15H11.73L13,16.27V21H15V18.27L18.73,22L20,20.72L15,15.72L8,8.72L3.28,4Z" /></g><g id="led-variant-on"><path d="M12,3A4,4 0 0,0 8,7V13H6V15H9V21H11V15H13V21H15V15H18V13H16V7A4,4 0 0,0 12,3Z" /></g><g id="led-variant-outline"><path d="M12,3A4,4 0 0,0 8,7V13H6V15H9V21H11V15H13V21H15V15H18V13H16V7A4,4 0 0,0 12,3M12,5A2,2 0 0,1 14,7V12H10V7A2,2 0 0,1 12,5Z" /></g><g id="library"><path d="M12,8A3,3 0 0,0 15,5A3,3 0 0,0 12,2A3,3 0 0,0 9,5A3,3 0 0,0 12,8M12,11.54C9.64,9.35 6.5,8 3,8V19C6.5,19 9.64,20.35 12,22.54C14.36,20.35 17.5,19 21,19V8C17.5,8 14.36,9.35 12,11.54Z" /></g><g id="library-books"><path d="M19,7H9V5H19M15,15H9V13H15M19,11H9V9H19M20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M4,6H2V20A2,2 0 0,0 4,22H18V20H4V6Z" /></g><g id="library-music"><path d="M4,6H2V20A2,2 0 0,0 4,22H18V20H4M18,7H15V12.5A2.5,2.5 0 0,1 12.5,15A2.5,2.5 0 0,1 10,12.5A2.5,2.5 0 0,1 12.5,10C13.07,10 13.58,10.19 14,10.5V5H18M20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2Z" /></g><g id="library-plus"><path d="M19,11H15V15H13V11H9V9H13V5H15V9H19M20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M4,6H2V20A2,2 0 0,0 4,22H18V20H4V6Z" /></g><g id="lightbulb"><path d="M12,2A7,7 0 0,0 5,9C5,11.38 6.19,13.47 8,14.74V17A1,1 0 0,0 9,18H15A1,1 0 0,0 16,17V14.74C17.81,13.47 19,11.38 19,9A7,7 0 0,0 12,2M9,21A1,1 0 0,0 10,22H14A1,1 0 0,0 15,21V20H9V21Z" /></g><g id="lightbulb-on"><path d="M12,6A6,6 0 0,1 18,12C18,14.22 16.79,16.16 15,17.2V19A1,1 0 0,1 14,20H10A1,1 0 0,1 9,19V17.2C7.21,16.16 6,14.22 6,12A6,6 0 0,1 12,6M14,21V22A1,1 0 0,1 13,23H11A1,1 0 0,1 10,22V21H14M20,11H23V13H20V11M1,11H4V13H1V11M13,1V4H11V1H13M4.92,3.5L7.05,5.64L5.63,7.05L3.5,4.93L4.92,3.5M16.95,5.63L19.07,3.5L20.5,4.93L18.37,7.05L16.95,5.63Z" /></g><g id="lightbulb-on-outline"><path d="M20,11H23V13H20V11M1,11H4V13H1V11M13,1V4H11V1H13M4.92,3.5L7.05,5.64L5.63,7.05L3.5,4.93L4.92,3.5M16.95,5.63L19.07,3.5L20.5,4.93L18.37,7.05L16.95,5.63M12,6A6,6 0 0,1 18,12C18,14.22 16.79,16.16 15,17.2V19A1,1 0 0,1 14,20H10A1,1 0 0,1 9,19V17.2C7.21,16.16 6,14.22 6,12A6,6 0 0,1 12,6M14,21V22A1,1 0 0,1 13,23H11A1,1 0 0,1 10,22V21H14M11,18H13V15.87C14.73,15.43 16,13.86 16,12A4,4 0 0,0 12,8A4,4 0 0,0 8,12C8,13.86 9.27,15.43 11,15.87V18Z" /></g><g id="lightbulb-outline"><path d="M12,2A7,7 0 0,1 19,9C19,11.38 17.81,13.47 16,14.74V17A1,1 0 0,1 15,18H9A1,1 0 0,1 8,17V14.74C6.19,13.47 5,11.38 5,9A7,7 0 0,1 12,2M9,21V20H15V21A1,1 0 0,1 14,22H10A1,1 0 0,1 9,21M12,4A5,5 0 0,0 7,9C7,11.05 8.23,12.81 10,13.58V16H14V13.58C15.77,12.81 17,11.05 17,9A5,5 0 0,0 12,4Z" /></g><g id="link"><path d="M16,6H13V7.9H16C18.26,7.9 20.1,9.73 20.1,12A4.1,4.1 0 0,1 16,16.1H13V18H16A6,6 0 0,0 22,12C22,8.68 19.31,6 16,6M3.9,12C3.9,9.73 5.74,7.9 8,7.9H11V6H8A6,6 0 0,0 2,12A6,6 0 0,0 8,18H11V16.1H8C5.74,16.1 3.9,14.26 3.9,12M8,13H16V11H8V13Z" /></g><g id="link-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L14.73,18H13V16.27L9.73,13H8V11.27L5.5,8.76C4.5,9.5 3.9,10.68 3.9,12C3.9,14.26 5.74,16.1 8,16.1H11V18H8A6,6 0 0,1 2,12C2,10.16 2.83,8.5 4.14,7.41L2,5.27M16,6A6,6 0 0,1 22,12C22,14.21 20.8,16.15 19,17.19L17.6,15.77C19.07,15.15 20.1,13.7 20.1,12C20.1,9.73 18.26,7.9 16,7.9H13V6H16M8,6H11V7.9H9.72L7.82,6H8M16,11V13H14.82L12.82,11H16Z" /></g><g id="link-variant"><path d="M10.59,13.41C11,13.8 11,14.44 10.59,14.83C10.2,15.22 9.56,15.22 9.17,14.83C7.22,12.88 7.22,9.71 9.17,7.76V7.76L12.71,4.22C14.66,2.27 17.83,2.27 19.78,4.22C21.73,6.17 21.73,9.34 19.78,11.29L18.29,12.78C18.3,11.96 18.17,11.14 17.89,10.36L18.36,9.88C19.54,8.71 19.54,6.81 18.36,5.64C17.19,4.46 15.29,4.46 14.12,5.64L10.59,9.17C9.41,10.34 9.41,12.24 10.59,13.41M13.41,9.17C13.8,8.78 14.44,8.78 14.83,9.17C16.78,11.12 16.78,14.29 14.83,16.24V16.24L11.29,19.78C9.34,21.73 6.17,21.73 4.22,19.78C2.27,17.83 2.27,14.66 4.22,12.71L5.71,11.22C5.7,12.04 5.83,12.86 6.11,13.65L5.64,14.12C4.46,15.29 4.46,17.19 5.64,18.36C6.81,19.54 8.71,19.54 9.88,18.36L13.41,14.83C14.59,13.66 14.59,11.76 13.41,10.59C13,10.2 13,9.56 13.41,9.17Z" /></g><g id="link-variant-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L13.9,17.17L11.29,19.78C9.34,21.73 6.17,21.73 4.22,19.78C2.27,17.83 2.27,14.66 4.22,12.71L5.71,11.22C5.7,12.04 5.83,12.86 6.11,13.65L5.64,14.12C4.46,15.29 4.46,17.19 5.64,18.36C6.81,19.54 8.71,19.54 9.88,18.36L12.5,15.76L10.88,14.15C10.87,14.39 10.77,14.64 10.59,14.83C10.2,15.22 9.56,15.22 9.17,14.83C8.12,13.77 7.63,12.37 7.72,11L2,5.27M12.71,4.22C14.66,2.27 17.83,2.27 19.78,4.22C21.73,6.17 21.73,9.34 19.78,11.29L18.29,12.78C18.3,11.96 18.17,11.14 17.89,10.36L18.36,9.88C19.54,8.71 19.54,6.81 18.36,5.64C17.19,4.46 15.29,4.46 14.12,5.64L10.79,8.97L9.38,7.55L12.71,4.22M13.41,9.17C13.8,8.78 14.44,8.78 14.83,9.17C16.2,10.54 16.61,12.5 16.06,14.23L14.28,12.46C14.23,11.78 13.94,11.11 13.41,10.59C13,10.2 13,9.56 13.41,9.17Z" /></g><g id="linkedin"><path d="M21,21H17V14.25C17,13.19 15.81,12.31 14.75,12.31C13.69,12.31 13,13.19 13,14.25V21H9V9H13V11C13.66,9.93 15.36,9.24 16.5,9.24C19,9.24 21,11.28 21,13.75V21M7,21H3V9H7V21M5,3A2,2 0 0,1 7,5A2,2 0 0,1 5,7A2,2 0 0,1 3,5A2,2 0 0,1 5,3Z" /></g><g id="linkedin-box"><path d="M19,19H16V13.7A1.5,1.5 0 0,0 14.5,12.2A1.5,1.5 0 0,0 13,13.7V19H10V10H13V11.2C13.5,10.36 14.59,9.8 15.5,9.8A3.5,3.5 0 0,1 19,13.3M6.5,8.31C5.5,8.31 4.69,7.5 4.69,6.5A1.81,1.81 0 0,1 6.5,4.69C7.5,4.69 8.31,5.5 8.31,6.5A1.81,1.81 0 0,1 6.5,8.31M8,19H5V10H8M20,2H4C2.89,2 2,2.89 2,4V20A2,2 0 0,0 4,22H20A2,2 0 0,0 22,20V4C22,2.89 21.1,2 20,2Z" /></g><g id="linux"><path d="M13.18,14.5C12.53,15.26 11.47,15.26 10.82,14.5L7.44,10.5C7.16,11.28 7,12.12 7,13C7,14.67 7.57,16.18 8.5,17.27C10,17.37 11.29,17.96 11.78,19C11.85,19 11.93,19 12.22,19C12.71,18 13.95,17.44 15.46,17.33C16.41,16.24 17,14.7 17,13C17,12.12 16.84,11.28 16.56,10.5L13.18,14.5M20,20.75C20,21.3 19.3,22 18.75,22H13.25C12.7,22 12,21.3 12,20.75C12,21.3 11.3,22 10.75,22H5.25C4.7,22 4,21.3 4,20.75C4,19.45 4.94,18.31 6.3,17.65C5.5,16.34 5,14.73 5,13C4,15 2.7,15.56 2.09,15C1.5,14.44 1.79,12.83 3.1,11.41C3.84,10.6 5,9.62 5.81,9.25C6.13,8.56 6.54,7.93 7,7.38V7A5,5 0 0,1 12,2A5,5 0 0,1 17,7V7.38C17.46,7.93 17.87,8.56 18.19,9.25C19,9.62 20.16,10.6 20.9,11.41C22.21,12.83 22.5,14.44 21.91,15C21.3,15.56 20,15 19,13C19,14.75 18.5,16.37 17.67,17.69C19.05,18.33 20,19.44 20,20.75M9.88,9C9.46,9.5 9.46,10.27 9.88,10.75L11.13,12.25C11.54,12.73 12.21,12.73 12.63,12.25L13.88,10.75C14.29,10.27 14.29,9.5 13.88,9H9.88M10,5.25C9.45,5.25 9,5.9 9,7C9,8.1 9.45,8.75 10,8.75C10.55,8.75 11,8.1 11,7C11,5.9 10.55,5.25 10,5.25M14,5.25C13.45,5.25 13,5.9 13,7C13,8.1 13.45,8.75 14,8.75C14.55,8.75 15,8.1 15,7C15,5.9 14.55,5.25 14,5.25Z" /></g><g id="lock"><path d="M12,17A2,2 0 0,0 14,15C14,13.89 13.1,13 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V10C4,8.89 4.9,8 6,8H7V6A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,3A3,3 0 0,0 9,6V8H15V6A3,3 0 0,0 12,3Z" /></g><g id="lock-open"><path d="M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V10A2,2 0 0,1 6,8H15V6A3,3 0 0,0 12,3A3,3 0 0,0 9,6H7A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,17A2,2 0 0,0 14,15A2,2 0 0,0 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17Z" /></g><g id="lock-open-outline"><path d="M18,20V10H6V20H18M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V10A2,2 0 0,1 6,8H15V6A3,3 0 0,0 12,3A3,3 0 0,0 9,6H7A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,17A2,2 0 0,1 10,15A2,2 0 0,1 12,13A2,2 0 0,1 14,15A2,2 0 0,1 12,17Z" /></g><g id="lock-outline"><path d="M12,17C10.89,17 10,16.1 10,15C10,13.89 10.89,13 12,13A2,2 0 0,1 14,15A2,2 0 0,1 12,17M18,20V10H6V20H18M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V10C4,8.89 4.89,8 6,8H7V6A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,3A3,3 0 0,0 9,6V8H15V6A3,3 0 0,0 12,3Z" /></g><g id="lock-pattern"><path d="M7,3A4,4 0 0,1 11,7C11,8.86 9.73,10.43 8,10.87V13.13C8.37,13.22 8.72,13.37 9.04,13.56L13.56,9.04C13.2,8.44 13,7.75 13,7A4,4 0 0,1 17,3A4,4 0 0,1 21,7A4,4 0 0,1 17,11C16.26,11 15.57,10.8 15,10.45L10.45,15C10.8,15.57 11,16.26 11,17A4,4 0 0,1 7,21A4,4 0 0,1 3,17C3,15.14 4.27,13.57 6,13.13V10.87C4.27,10.43 3,8.86 3,7A4,4 0 0,1 7,3M17,13A4,4 0 0,1 21,17A4,4 0 0,1 17,21A4,4 0 0,1 13,17A4,4 0 0,1 17,13M17,15A2,2 0 0,0 15,17A2,2 0 0,0 17,19A2,2 0 0,0 19,17A2,2 0 0,0 17,15Z" /></g><g id="lock-plus"><path d="M18,8H17V6A5,5 0 0,0 12,1A5,5 0 0,0 7,6V8H6A2,2 0 0,0 4,10V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V10A2,2 0 0,0 18,8M8.9,6C8.9,4.29 10.29,2.9 12,2.9C13.71,2.9 15.1,4.29 15.1,6V8H8.9V6M16,16H13V19H11V16H8V14H11V11H13V14H16V16Z" /></g><g id="login"><path d="M10,17.25V14H3V10H10V6.75L15.25,12L10,17.25M8,2H17A2,2 0 0,1 19,4V20A2,2 0 0,1 17,22H8A2,2 0 0,1 6,20V16H8V20H17V4H8V8H6V4A2,2 0 0,1 8,2Z" /></g><g id="login-variant"><path d="M19,3H5C3.89,3 3,3.89 3,5V9H5V5H19V19H5V15H3V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M10.08,15.58L11.5,17L16.5,12L11.5,7L10.08,8.41L12.67,11H3V13H12.67L10.08,15.58Z" /></g><g id="logout"><path d="M17,17.25V14H10V10H17V6.75L22.25,12L17,17.25M13,2A2,2 0 0,1 15,4V8H13V4H4V20H13V16H15V20A2,2 0 0,1 13,22H4A2,2 0 0,1 2,20V4A2,2 0 0,1 4,2H13Z" /></g><g id="logout-variant"><path d="M14.08,15.59L16.67,13H7V11H16.67L14.08,8.41L15.5,7L20.5,12L15.5,17L14.08,15.59M19,3A2,2 0 0,1 21,5V9.67L19,7.67V5H5V19H19V16.33L21,14.33V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19Z" /></g><g id="looks"><path d="M12,6A11,11 0 0,0 1,17H3C3,12.04 7.04,8 12,8C16.96,8 21,12.04 21,17H23A11,11 0 0,0 12,6M12,10C8.14,10 5,13.14 5,17H7A5,5 0 0,1 12,12A5,5 0 0,1 17,17H19C19,13.14 15.86,10 12,10Z" /></g><g id="loop"><path d="M9,14V21H2V19H5.57C4,17.3 3,15 3,12.5A9.5,9.5 0 0,1 12.5,3A9.5,9.5 0 0,1 22,12.5A9.5,9.5 0 0,1 12.5,22H12V20H12.5A7.5,7.5 0 0,0 20,12.5A7.5,7.5 0 0,0 12.5,5A7.5,7.5 0 0,0 5,12.5C5,14.47 5.76,16.26 7,17.6V14H9Z" /></g><g id="loupe"><path d="M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22H20A2,2 0 0,0 22,20V12A10,10 0 0,0 12,2M13,7H11V11H7V13H11V17H13V13H17V11H13V7Z" /></g><g id="lumx"><path d="M12.35,1.75L20.13,9.53L13.77,15.89L12.35,14.47L17.3,9.53L10.94,3.16L12.35,1.75M15.89,9.53L14.47,10.94L10.23,6.7L5.28,11.65L3.87,10.23L10.23,3.87L15.89,9.53M10.23,8.11L11.65,9.53L6.7,14.47L13.06,20.84L11.65,22.25L3.87,14.47L10.23,8.11M8.11,14.47L9.53,13.06L13.77,17.3L18.72,12.35L20.13,13.77L13.77,20.13L8.11,14.47Z" /></g><g id="magnet"><path d="M3,7V13A9,9 0 0,0 12,22A9,9 0 0,0 21,13V7H17V13A5,5 0 0,1 12,18A5,5 0 0,1 7,13V7M17,5H21V2H17M3,5H7V2H3" /></g><g id="magnet-on"><path d="M3,7V13A9,9 0 0,0 12,22A9,9 0 0,0 21,13V7H17V13A5,5 0 0,1 12,18A5,5 0 0,1 7,13V7M17,5H21V2H17M3,5H7V2H3M13,1.5L9,9H11V14.5L15,7H13V1.5Z" /></g><g id="magnify"><path d="M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z" /></g><g id="magnify-minus"><path d="M9,2A7,7 0 0,1 16,9C16,10.57 15.5,12 14.61,13.19L15.41,14H16L22,20L20,22L14,16V15.41L13.19,14.61C12,15.5 10.57,16 9,16A7,7 0 0,1 2,9A7,7 0 0,1 9,2M5,8V10H13V8H5Z" /></g><g id="magnify-plus"><path d="M9,2A7,7 0 0,1 16,9C16,10.57 15.5,12 14.61,13.19L15.41,14H16L22,20L20,22L14,16V15.41L13.19,14.61C12,15.5 10.57,16 9,16A7,7 0 0,1 2,9A7,7 0 0,1 9,2M8,5V8H5V10H8V13H10V10H13V8H10V5H8Z" /></g><g id="mail-ru"><path d="M15.45,11.91C15.34,9.7 13.7,8.37 11.72,8.37H11.64C9.35,8.37 8.09,10.17 8.09,12.21C8.09,14.5 9.62,15.95 11.63,15.95C13.88,15.95 15.35,14.3 15.46,12.36M11.65,6.39C13.18,6.39 14.62,7.07 15.67,8.13V8.13C15.67,7.62 16,7.24 16.5,7.24H16.61C17.35,7.24 17.5,7.94 17.5,8.16V16.06C17.46,16.58 18.04,16.84 18.37,16.5C19.64,15.21 21.15,9.81 17.58,6.69C14.25,3.77 9.78,4.25 7.4,5.89C4.88,7.63 3.26,11.5 4.83,15.11C6.54,19.06 11.44,20.24 14.35,19.06C15.83,18.47 16.5,20.46 15,21.11C12.66,22.1 6.23,22 3.22,16.79C1.19,13.27 1.29,7.08 6.68,3.87C10.81,1.42 16.24,2.1 19.5,5.5C22.95,9.1 22.75,15.8 19.4,18.41C17.89,19.59 15.64,18.44 15.66,16.71L15.64,16.15C14.59,17.2 13.18,17.81 11.65,17.81C8.63,17.81 6,15.15 6,12.13C6,9.08 8.63,6.39 11.65,6.39Z" /></g><g id="mailbox"><path d="M20,6H10V12H8V4H14V0H6V6H4A2,2 0 0,0 2,8V20A2,2 0 0,0 4,22H20A2,2 0 0,0 22,20V8A2,2 0 0,0 20,6Z" /></g><g id="map"><path d="M15,19L9,16.89V5L15,7.11M20.5,3C20.44,3 20.39,3 20.34,3L15,5.1L9,3L3.36,4.9C3.15,4.97 3,5.15 3,5.38V20.5A0.5,0.5 0 0,0 3.5,21C3.55,21 3.61,21 3.66,20.97L9,18.9L15,21L20.64,19.1C20.85,19 21,18.85 21,18.62V3.5A0.5,0.5 0 0,0 20.5,3Z" /></g><g id="map-marker"><path d="M12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5M12,2A7,7 0 0,0 5,9C5,14.25 12,22 12,22C12,22 19,14.25 19,9A7,7 0 0,0 12,2Z" /></g><g id="map-marker-circle"><path d="M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,12.5A1.5,1.5 0 0,1 10.5,11A1.5,1.5 0 0,1 12,9.5A1.5,1.5 0 0,1 13.5,11A1.5,1.5 0 0,1 12,12.5M12,7.2C9.9,7.2 8.2,8.9 8.2,11C8.2,14 12,17.5 12,17.5C12,17.5 15.8,14 15.8,11C15.8,8.9 14.1,7.2 12,7.2Z" /></g><g id="map-marker-minus"><path d="M9,11.5A2.5,2.5 0 0,0 11.5,9A2.5,2.5 0 0,0 9,6.5A2.5,2.5 0 0,0 6.5,9A2.5,2.5 0 0,0 9,11.5M9,2C12.86,2 16,5.13 16,9C16,14.25 9,22 9,22C9,22 2,14.25 2,9A7,7 0 0,1 9,2M15,17H23V19H15V17Z" /></g><g id="map-marker-multiple"><path d="M14,11.5A2.5,2.5 0 0,0 16.5,9A2.5,2.5 0 0,0 14,6.5A2.5,2.5 0 0,0 11.5,9A2.5,2.5 0 0,0 14,11.5M14,2C17.86,2 21,5.13 21,9C21,14.25 14,22 14,22C14,22 7,14.25 7,9A7,7 0 0,1 14,2M5,9C5,13.5 10.08,19.66 11,20.81L10,22C10,22 3,14.25 3,9C3,5.83 5.11,3.15 8,2.29C6.16,3.94 5,6.33 5,9Z" /></g><g id="map-marker-off"><path d="M16.37,16.1L11.75,11.47L11.64,11.36L3.27,3L2,4.27L5.18,7.45C5.06,7.95 5,8.46 5,9C5,14.25 12,22 12,22C12,22 13.67,20.15 15.37,17.65L18.73,21L20,19.72M12,6.5A2.5,2.5 0 0,1 14.5,9C14.5,9.73 14.17,10.39 13.67,10.85L17.3,14.5C18.28,12.62 19,10.68 19,9A7,7 0 0,0 12,2C10,2 8.24,2.82 6.96,4.14L10.15,7.33C10.61,6.82 11.26,6.5 12,6.5Z" /></g><g id="map-marker-plus"><path d="M9,11.5A2.5,2.5 0 0,0 11.5,9A2.5,2.5 0 0,0 9,6.5A2.5,2.5 0 0,0 6.5,9A2.5,2.5 0 0,0 9,11.5M9,2C12.86,2 16,5.13 16,9C16,14.25 9,22 9,22C9,22 2,14.25 2,9A7,7 0 0,1 9,2M15,17H18V14H20V17H23V19H20V22H18V19H15V17Z" /></g><g id="map-marker-radius"><path d="M12,2C15.31,2 18,4.66 18,7.95C18,12.41 12,19 12,19C12,19 6,12.41 6,7.95C6,4.66 8.69,2 12,2M12,6A2,2 0 0,0 10,8A2,2 0 0,0 12,10A2,2 0 0,0 14,8A2,2 0 0,0 12,6M20,19C20,21.21 16.42,23 12,23C7.58,23 4,21.21 4,19C4,17.71 5.22,16.56 7.11,15.83L7.75,16.74C6.67,17.19 6,17.81 6,18.5C6,19.88 8.69,21 12,21C15.31,21 18,19.88 18,18.5C18,17.81 17.33,17.19 16.25,16.74L16.89,15.83C18.78,16.56 20,17.71 20,19Z" /></g><g id="margin"><path d="M14.63,6.78L12.9,5.78L18.5,2.08L18.1,8.78L16.37,7.78L8.73,21H6.42L14.63,6.78M17.5,12C19.43,12 21,13.74 21,16.5C21,19.26 19.43,21 17.5,21C15.57,21 14,19.26 14,16.5C14,13.74 15.57,12 17.5,12M17.5,14C16.67,14 16,14.84 16,16.5C16,18.16 16.67,19 17.5,19C18.33,19 19,18.16 19,16.5C19,14.84 18.33,14 17.5,14M7.5,5C9.43,5 11,6.74 11,9.5C11,12.26 9.43,14 7.5,14C5.57,14 4,12.26 4,9.5C4,6.74 5.57,5 7.5,5M7.5,7C6.67,7 6,7.84 6,9.5C6,11.16 6.67,12 7.5,12C8.33,12 9,11.16 9,9.5C9,7.84 8.33,7 7.5,7Z" /></g><g id="markdown"><path d="M2,16V8H4L7,11L10,8H12V16H10V10.83L7,13.83L4,10.83V16H2M16,8H19V12H21.5L17.5,16.5L13.5,12H16V8Z" /></g><g id="marker"><path d="M18.5,1.15C17.97,1.15 17.46,1.34 17.07,1.73L11.26,7.55L16.91,13.2L22.73,7.39C23.5,6.61 23.5,5.35 22.73,4.56L19.89,1.73C19.5,1.34 19,1.15 18.5,1.15M10.3,8.5L4.34,14.46C3.56,15.24 3.56,16.5 4.36,17.31C3.14,18.54 1.9,19.77 0.67,21H6.33L7.19,20.14C7.97,20.9 9.22,20.89 10,20.12L15.95,14.16" /></g><g id="marker-check"><path d="M10,16L5,11L6.41,9.58L10,13.17L17.59,5.58L19,7M19,1H5C3.89,1 3,1.89 3,3V15.93C3,16.62 3.35,17.23 3.88,17.59L12,23L20.11,17.59C20.64,17.23 21,16.62 21,15.93V3C21,1.89 20.1,1 19,1Z" /></g><g id="martini"><path d="M7.5,7L5.5,5H18.5L16.5,7M11,13V19H6V21H18V19H13V13L21,5V3H3V5L11,13Z" /></g><g id="material-ui"><path d="M8,16.61V15.37L14,11.91V7.23L9,10.12L4,7.23V13L3,13.58L2,13V5L3.07,4.38L9,7.81L12.93,5.54L14.93,4.38L16,5V13.06L10.92,16L14.97,18.33L20,15.43V11L21,10.42L22,11V16.58L14.97,20.64L8,16.61M22,9.75L21,10.33L20,9.75V8.58L21,8L22,8.58V9.75Z" /></g><g id="math-compass"><path d="M13,4.2V3C13,2.4 12.6,2 12,2V4.2C9.8,4.6 9,5.7 9,7C9,7.8 9.3,8.5 9.8,9L4,19.9V22L6.2,20L11.6,10C11.7,10 11.9,10 12,10C13.7,10 15,8.7 15,7C15,5.7 14.2,4.6 13,4.2M12.9,7.5C12.7,7.8 12.4,8 12,8C11.4,8 11,7.6 11,7C11,6.8 11.1,6.7 11.1,6.5C11.3,6.2 11.6,6 12,6C12.6,6 13,6.4 13,7C13,7.2 12.9,7.3 12.9,7.5M20,19.9V22H20L17.8,20L13.4,11.8C14.1,11.6 14.7,11.3 15.2,10.9L20,19.9Z" /></g><g id="matrix"><path d="M2,2H6V4H4V20H6V22H2V2M20,4H18V2H22V22H18V20H20V4M9,5H10V10H11V11H8V10H9V6L8,6.5V5.5L9,5M15,13H16V18H17V19H14V18H15V14L14,14.5V13.5L15,13M9,13C10.1,13 11,14.34 11,16C11,17.66 10.1,19 9,19C7.9,19 7,17.66 7,16C7,14.34 7.9,13 9,13M9,14C8.45,14 8,14.9 8,16C8,17.1 8.45,18 9,18C9.55,18 10,17.1 10,16C10,14.9 9.55,14 9,14M15,5C16.1,5 17,6.34 17,8C17,9.66 16.1,11 15,11C13.9,11 13,9.66 13,8C13,6.34 13.9,5 15,5M15,6C14.45,6 14,6.9 14,8C14,9.1 14.45,10 15,10C15.55,10 16,9.1 16,8C16,6.9 15.55,6 15,6Z" /></g><g id="maxcdn"><path d="M20.6,6.69C19.73,5.61 18.38,5 16.9,5H2.95L4.62,8.57L2.39,19H6.05L8.28,8.57H11.4L9.17,19H12.83L15.06,8.57H16.9C17.3,8.57 17.63,8.7 17.82,8.94C18,9.17 18.07,9.5 18,9.9L16.04,19H19.69L21.5,10.65C21.78,9.21 21.46,7.76 20.6,6.69Z" /></g><g id="medical-bag"><path d="M10,3L8,5V7H5C3.85,7 3.12,8 3,9L2,19C1.88,20 2.54,21 4,21H20C21.46,21 22.12,20 22,19L21,9C20.88,8 20.06,7 19,7H16V5L14,3H10M10,5H14V7H10V5M11,10H13V13H16V15H13V18H11V15H8V13H11V10Z" /></g><g id="medium"><path d="M21.93,6.62L15.89,16.47L11.57,9.43L15,3.84C15.17,3.58 15.5,3.47 15.78,3.55L21.93,6.62M22,19.78C22,20.35 21.5,20.57 20.89,20.26L16.18,17.91L22,8.41V19.78M9,19.94C9,20.5 8.57,20.76 8.07,20.5L2.55,17.76C2.25,17.6 2,17.2 2,16.86V4.14C2,3.69 2.33,3.5 2.74,3.68L8.7,6.66L9,7.12V19.94M15.29,17.46L10,14.81V8.81L15.29,17.46Z" /></g><g id="memory"><path d="M17,17H7V7H17M21,11V9H19V7C19,5.89 18.1,5 17,5H15V3H13V5H11V3H9V5H7C5.89,5 5,5.89 5,7V9H3V11H5V13H3V15H5V17A2,2 0 0,0 7,19H9V21H11V19H13V21H15V19H17A2,2 0 0,0 19,17V15H21V13H19V11M13,13H11V11H13M15,9H9V15H15V9Z" /></g><g id="menu"><path d="M3,6H21V8H3V6M3,11H21V13H3V11M3,16H21V18H3V16Z" /></g><g id="menu-down"><path d="M7,10L12,15L17,10H7Z" /></g><g id="menu-down-outline"><path d="M18,9V10.5L12,16.5L6,10.5V9H18M12,13.67L14.67,11H9.33L12,13.67Z" /></g><g id="menu-left"><path d="M14,7L9,12L14,17V7Z" /></g><g id="menu-right"><path d="M10,17L15,12L10,7V17Z" /></g><g id="menu-up"><path d="M7,15L12,10L17,15H7Z" /></g><g id="menu-up-outline"><path d="M18,16V14.5L12,8.5L6,14.5V16H18M12,11.33L14.67,14H9.33L12,11.33Z" /></g><g id="message"><path d="M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4C22,2.89 21.1,2 20,2Z" /></g><g id="message-alert"><path d="M13,10H11V6H13M13,14H11V12H13M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4C22,2.89 21.1,2 20,2Z" /></g><g id="message-bulleted"><path d="M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M8,14H6V12H8V14M8,11H6V9H8V11M8,8H6V6H8V8M15,14H10V12H15V14M18,11H10V9H18V11M18,8H10V6H18V8Z" /></g><g id="message-bulleted-off"><path d="M1.27,1.73L0,3L2,5V22L6,18H15L20.73,23.73L22,22.46L1.27,1.73M8,14H6V12H8V14M6,11V9L8,11H6M20,2H4.08L10,7.92V6H18V8H10.08L11.08,9H18V11H13.08L20.07,18C21.14,17.95 22,17.08 22,16V4A2,2 0 0,0 20,2Z" /></g><g id="message-draw"><path d="M18,14H10.5L12.5,12H18M6,14V11.5L12.88,4.64C13.07,4.45 13.39,4.45 13.59,4.64L15.35,6.41C15.55,6.61 15.55,6.92 15.35,7.12L8.47,14M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4C22,2.89 21.1,2 20,2Z" /></g><g id="message-image"><path d="M5,14L8.5,9.5L11,12.5L14.5,8L19,14M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4C22,2.89 21.1,2 20,2Z" /></g><g id="message-outline"><path d="M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M20,16H6L4,18V4H20" /></g><g id="message-plus"><path d="M20,2A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H6L2,22V4C2,2.89 2.9,2 4,2H20M11,6V9H8V11H11V14H13V11H16V9H13V6H11Z" /></g><g id="message-processing"><path d="M17,11H15V9H17M13,11H11V9H13M9,11H7V9H9M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4C22,2.89 21.1,2 20,2Z" /></g><g id="message-reply"><path d="M22,4C22,2.89 21.1,2 20,2H4A2,2 0 0,0 2,4V16A2,2 0 0,0 4,18H18L22,22V4Z" /></g><g id="message-reply-text"><path d="M18,8H6V6H18V8M18,11H6V9H18V11M18,14H6V12H18V14M22,4A2,2 0 0,0 20,2H4A2,2 0 0,0 2,4V16A2,2 0 0,0 4,18H18L22,22V4Z" /></g><g id="message-settings"><path d="M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M11,24H13V22H11V24M7,24H9V22H7V24M15,24H17V22H15V24Z" /></g><g id="message-settings-variant"><path d="M13.5,10A1.5,1.5 0 0,1 12,11.5C11.16,11.5 10.5,10.83 10.5,10A1.5,1.5 0 0,1 12,8.5A1.5,1.5 0 0,1 13.5,10M22,4V16A2,2 0 0,1 20,18H6L2,22V4A2,2 0 0,1 4,2H20A2,2 0 0,1 22,4M16.77,11.32L15.7,10.5C15.71,10.33 15.71,10.16 15.7,10C15.72,9.84 15.72,9.67 15.7,9.5L16.76,8.68C16.85,8.6 16.88,8.47 16.82,8.36L15.82,6.63C15.76,6.5 15.63,6.47 15.5,6.5L14.27,7C14,6.8 13.73,6.63 13.42,6.5L13.23,5.19C13.21,5.08 13.11,5 13,5H11C10.88,5 10.77,5.09 10.75,5.21L10.56,6.53C10.26,6.65 9.97,6.81 9.7,7L8.46,6.5C8.34,6.46 8.21,6.5 8.15,6.61L7.15,8.34C7.09,8.45 7.11,8.58 7.21,8.66L8.27,9.5C8.23,9.82 8.23,10.16 8.27,10.5L7.21,11.32C7.12,11.4 7.09,11.53 7.15,11.64L8.15,13.37C8.21,13.5 8.34,13.53 8.46,13.5L9.7,13C9.96,13.2 10.24,13.37 10.55,13.5L10.74,14.81C10.77,14.93 10.88,15 11,15H13C13.12,15 13.23,14.91 13.25,14.79L13.44,13.47C13.74,13.34 14,13.18 14.28,13L15.53,13.5C15.65,13.5 15.78,13.5 15.84,13.37L16.84,11.64C16.9,11.53 16.87,11.4 16.77,11.32Z" /></g><g id="message-text"><path d="M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M6,9H18V11H6M14,14H6V12H14M18,8H6V6H18" /></g><g id="message-text-outline"><path d="M20,2A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H6L2,22V4C2,2.89 2.9,2 4,2H20M4,4V17.17L5.17,16H20V4H4M6,7H18V9H6V7M6,11H15V13H6V11Z" /></g><g id="message-video"><path d="M18,14L14,10.8V14H6V6H14V9.2L18,6M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4C22,2.89 21.1,2 20,2Z" /></g><g id="meteor"><path d="M2.8,3L19.67,18.82C19.67,18.82 20,19.27 19.58,19.71C19.17,20.15 18.63,19.77 18.63,19.77L2.8,3M7.81,4.59L20.91,16.64C20.91,16.64 21.23,17.08 20.82,17.5C20.4,17.97 19.86,17.59 19.86,17.59L7.81,4.59M4.29,8L17.39,20.03C17.39,20.03 17.71,20.47 17.3,20.91C16.88,21.36 16.34,21 16.34,21L4.29,8M12.05,5.96L21.2,14.37C21.2,14.37 21.42,14.68 21.13,15C20.85,15.3 20.47,15.03 20.47,15.03L12.05,5.96M5.45,11.91L14.6,20.33C14.6,20.33 14.82,20.64 14.54,20.95C14.25,21.26 13.87,21 13.87,21L5.45,11.91M16.38,7.92L20.55,11.74C20.55,11.74 20.66,11.88 20.5,12.03C20.38,12.17 20.19,12.05 20.19,12.05L16.38,7.92M7.56,16.1L11.74,19.91C11.74,19.91 11.85,20.06 11.7,20.2C11.56,20.35 11.37,20.22 11.37,20.22L7.56,16.1Z" /></g><g id="microphone"><path d="M12,2A3,3 0 0,1 15,5V11A3,3 0 0,1 12,14A3,3 0 0,1 9,11V5A3,3 0 0,1 12,2M19,11C19,14.53 16.39,17.44 13,17.93V21H11V17.93C7.61,17.44 5,14.53 5,11H7A5,5 0 0,0 12,16A5,5 0 0,0 17,11H19Z" /></g><g id="microphone-off"><path d="M19,11C19,12.19 18.66,13.3 18.1,14.28L16.87,13.05C17.14,12.43 17.3,11.74 17.3,11H19M15,11.16L9,5.18V5A3,3 0 0,1 12,2A3,3 0 0,1 15,5V11L15,11.16M4.27,3L21,19.73L19.73,21L15.54,16.81C14.77,17.27 13.91,17.58 13,17.72V21H11V17.72C7.72,17.23 5,14.41 5,11H6.7C6.7,14 9.24,16.1 12,16.1C12.81,16.1 13.6,15.91 14.31,15.58L12.65,13.92L12,14A3,3 0 0,1 9,11V10.28L3,4.27L4.27,3Z" /></g><g id="microphone-outline"><path d="M17.3,11C17.3,14 14.76,16.1 12,16.1C9.24,16.1 6.7,14 6.7,11H5C5,14.41 7.72,17.23 11,17.72V21H13V17.72C16.28,17.23 19,14.41 19,11M10.8,4.9C10.8,4.24 11.34,3.7 12,3.7C12.66,3.7 13.2,4.24 13.2,4.9L13.19,11.1C13.19,11.76 12.66,12.3 12,12.3C11.34,12.3 10.8,11.76 10.8,11.1M12,14A3,3 0 0,0 15,11V5A3,3 0 0,0 12,2A3,3 0 0,0 9,5V11A3,3 0 0,0 12,14Z" /></g><g id="microphone-settings"><path d="M19,10H17.3C17.3,13 14.76,15.1 12,15.1C9.24,15.1 6.7,13 6.7,10H5C5,13.41 7.72,16.23 11,16.72V20H13V16.72C16.28,16.23 19,13.41 19,10M15,24H17V22H15M11,24H13V22H11M12,13A3,3 0 0,0 15,10V4A3,3 0 0,0 12,1A3,3 0 0,0 9,4V10A3,3 0 0,0 12,13M7,24H9V22H7V24Z" /></g><g id="microphone-variant"><path d="M9,3A4,4 0 0,1 13,7H5A4,4 0 0,1 9,3M11.84,9.82L11,18H10V19A2,2 0 0,0 12,21A2,2 0 0,0 14,19V14A4,4 0 0,1 18,10H20L19,11L20,12H18A2,2 0 0,0 16,14V19A4,4 0 0,1 12,23A4,4 0 0,1 8,19V18H7L6.16,9.82C5.67,9.32 5.31,8.7 5.13,8H12.87C12.69,8.7 12.33,9.32 11.84,9.82M9,11A1,1 0 0,0 8,12A1,1 0 0,0 9,13A1,1 0 0,0 10,12A1,1 0 0,0 9,11Z" /></g><g id="microphone-variant-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L16,19.26C15.86,21.35 14.12,23 12,23A4,4 0 0,1 8,19V18H7L6.16,9.82C5.82,9.47 5.53,9.06 5.33,8.6L2,5.27M9,3A4,4 0 0,1 13,7H8.82L6.08,4.26C6.81,3.5 7.85,3 9,3M11.84,9.82L11.82,10L9.82,8H12.87C12.69,8.7 12.33,9.32 11.84,9.82M11,18H10V19A2,2 0 0,0 12,21A2,2 0 0,0 14,19V17.27L11.35,14.62L11,18M18,10H20L19,11L20,12H18A2,2 0 0,0 16,14V14.18L14.3,12.5C14.9,11 16.33,10 18,10M8,12A1,1 0 0,0 9,13C9.21,13 9.4,12.94 9.56,12.83L8.17,11.44C8.06,11.6 8,11.79 8,12Z" /></g><g id="microscope"><path d="M9.46,6.28L11.05,9C8.47,9.26 6.5,11.41 6.5,14A5,5 0 0,0 11.5,19C13.55,19 15.31,17.77 16.08,16H13.5V14H21.5V16H19.25C18.84,17.57 17.97,18.96 16.79,20H19.5V22H3.5V20H6.21C4.55,18.53 3.5,16.39 3.5,14C3.5,10.37 5.96,7.2 9.46,6.28M12.74,2.07L13.5,3.37L14.36,2.87L17.86,8.93L14.39,10.93L10.89,4.87L11.76,4.37L11,3.07L12.74,2.07Z" /></g><g id="microsoft"><path d="M2,3H11V12H2V3M11,22H2V13H11V22M21,3V12H12V3H21M21,22H12V13H21V22Z" /></g><g id="minecraft"><path d="M4,2H20A2,2 0 0,1 22,4V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V4A2,2 0 0,1 4,2M6,6V10H10V12H8V18H10V16H14V18H16V12H14V10H18V6H14V10H10V6H6Z" /></g><g id="minus"><path d="M19,13H5V11H19V13Z" /></g><g id="minus-box"><path d="M17,13H7V11H17M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="minus-box-outline"><path d="M19,19V5H5V19H19M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5C3,3.89 3.9,3 5,3H19M17,11V13H7V11H17Z" /></g><g id="minus-circle"><path d="M17,13H7V11H17M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="minus-circle-outline"><path d="M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M7,13H17V11H7" /></g><g id="minus-network"><path d="M16,11V9H8V11H16M17,3A2,2 0 0,1 19,5V15A2,2 0 0,1 17,17H13V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H7C5.89,17 5,16.1 5,15V5A2,2 0 0,1 7,3H17Z" /></g><g id="mixcloud"><path d="M21.11,18.5C20.97,18.5 20.83,18.44 20.71,18.36C20.37,18.13 20.28,17.68 20.5,17.34C21.18,16.34 21.54,15.16 21.54,13.93C21.54,12.71 21.18,11.53 20.5,10.5C20.28,10.18 20.37,9.73 20.71,9.5C21.04,9.28 21.5,9.37 21.72,9.7C22.56,10.95 23,12.41 23,13.93C23,15.45 22.56,16.91 21.72,18.16C21.58,18.37 21.35,18.5 21.11,18.5M19,17.29C18.88,17.29 18.74,17.25 18.61,17.17C18.28,16.94 18.19,16.5 18.42,16.15C18.86,15.5 19.1,14.73 19.1,13.93C19.1,13.14 18.86,12.37 18.42,11.71C18.19,11.37 18.28,10.92 18.61,10.69C18.95,10.47 19.4,10.55 19.63,10.89C20.24,11.79 20.56,12.84 20.56,13.93C20.56,15 20.24,16.07 19.63,16.97C19.5,17.18 19.25,17.29 19,17.29M14.9,15.73C15.89,15.73 16.7,14.92 16.7,13.93C16.7,13.17 16.22,12.5 15.55,12.25C15.5,12.55 15.43,12.85 15.34,13.14C15.23,13.44 14.95,13.64 14.64,13.64C14.57,13.64 14.5,13.62 14.41,13.6C14.03,13.47 13.82,13.06 13.95,12.67C14.09,12.24 14.17,11.78 14.17,11.32C14.17,8.93 12.22,7 9.82,7C8.1,7 6.56,8 5.87,9.5C6.54,9.7 7.16,10.04 7.66,10.54C7.95,10.83 7.95,11.29 7.66,11.58C7.38,11.86 6.91,11.86 6.63,11.58C6.17,11.12 5.56,10.86 4.9,10.86C3.56,10.86 2.46,11.96 2.46,13.3C2.46,14.64 3.56,15.73 4.9,15.73H14.9M15.6,10.75C17.06,11.07 18.17,12.37 18.17,13.93C18.17,15.73 16.7,17.19 14.9,17.19H4.9C2.75,17.19 1,15.45 1,13.3C1,11.34 2.45,9.73 4.33,9.45C5.12,7.12 7.33,5.5 9.82,5.5C12.83,5.5 15.31,7.82 15.6,10.75Z" /></g><g id="monitor"><path d="M21,16H3V4H21M21,2H3C1.89,2 1,2.89 1,4V16A2,2 0 0,0 3,18H10V20H8V22H16V20H14V18H21A2,2 0 0,0 23,16V4C23,2.89 22.1,2 21,2Z" /></g><g id="monitor-multiple"><path d="M22,17V7H6V17H22M22,5A2,2 0 0,1 24,7V17C24,18.11 23.1,19 22,19H16V21H18V23H10V21H12V19H6C4.89,19 4,18.11 4,17V7A2,2 0 0,1 6,5H22M2,3V15H0V3A2,2 0 0,1 2,1H20V3H2Z" /></g><g id="more"><path d="M19,13.5A1.5,1.5 0 0,1 17.5,12A1.5,1.5 0 0,1 19,10.5A1.5,1.5 0 0,1 20.5,12A1.5,1.5 0 0,1 19,13.5M14,13.5A1.5,1.5 0 0,1 12.5,12A1.5,1.5 0 0,1 14,10.5A1.5,1.5 0 0,1 15.5,12A1.5,1.5 0 0,1 14,13.5M9,13.5A1.5,1.5 0 0,1 7.5,12A1.5,1.5 0 0,1 9,10.5A1.5,1.5 0 0,1 10.5,12A1.5,1.5 0 0,1 9,13.5M22,3H7C6.31,3 5.77,3.35 5.41,3.88L0,12L5.41,20.11C5.77,20.64 6.37,21 7.06,21H22A2,2 0 0,0 24,19V5C24,3.89 23.1,3 22,3Z" /></g><g id="motorbike"><path d="M16.36,4.27H18.55V2.13H16.36V1.07H18.22C17.89,0.43 17.13,0 16.36,0C15.16,0 14.18,0.96 14.18,2.13C14.18,3.31 15.16,4.27 16.36,4.27M10.04,9.39L13,6.93L17.45,9.6H10.25M19.53,12.05L21.05,10.56C21.93,9.71 21.93,8.43 21.05,7.57L19.2,9.39L13.96,4.27C13.64,3.73 13,3.41 12.33,3.41C11.78,3.41 11.35,3.63 11,3.95L7,7.89C6.65,8.21 6.44,8.64 6.44,9.17V9.71H5.13C4.04,9.71 3.16,10.67 3.16,11.84V12.27C3.5,12.16 3.93,12.16 4.25,12.16C7.09,12.16 9.5,14.4 9.5,17.28C9.5,17.6 9.5,18.03 9.38,18.35H14.5C14.4,18.03 14.4,17.6 14.4,17.28C14.4,14.29 16.69,12.05 19.53,12.05M4.36,19.73C2.84,19.73 1.64,18.56 1.64,17.07C1.64,15.57 2.84,14.4 4.36,14.4C5.89,14.4 7.09,15.57 7.09,17.07C7.09,18.56 5.89,19.73 4.36,19.73M4.36,12.8C1.96,12.8 0,14.72 0,17.07C0,19.41 1.96,21.33 4.36,21.33C6.76,21.33 8.73,19.41 8.73,17.07C8.73,14.72 6.76,12.8 4.36,12.8M19.64,19.73C18.11,19.73 16.91,18.56 16.91,17.07C16.91,15.57 18.11,14.4 19.64,14.4C21.16,14.4 22.36,15.57 22.36,17.07C22.36,18.56 21.16,19.73 19.64,19.73M19.64,12.8C17.24,12.8 15.27,14.72 15.27,17.07C15.27,19.41 17.24,21.33 19.64,21.33C22.04,21.33 24,19.41 24,17.07C24,14.72 22.04,12.8 19.64,12.8Z" /></g><g id="mouse"><path d="M11,1.07C7.05,1.56 4,4.92 4,9H11M4,15A8,8 0 0,0 12,23A8,8 0 0,0 20,15V11H4M13,1.07V9H20C20,4.92 16.94,1.56 13,1.07Z" /></g><g id="mouse-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L17.5,20.79C16.08,22.16 14.14,23 12,23A8,8 0 0,1 4,15V11H7.73L5.73,9H4C4,8.46 4.05,7.93 4.15,7.42L2,5.27M11,1.07V9H10.82L5.79,3.96C7.05,2.4 8.9,1.33 11,1.07M20,11V15C20,15.95 19.83,16.86 19.53,17.71L12.82,11H20M13,1.07C16.94,1.56 20,4.92 20,9H13V1.07Z" /></g><g id="mouse-variant"><path d="M14,7H10V2.1C12.28,2.56 14,4.58 14,7M4,7C4,4.58 5.72,2.56 8,2.1V7H4M14,12C14,14.42 12.28,16.44 10,16.9V18A3,3 0 0,0 13,21A3,3 0 0,0 16,18V13A4,4 0 0,1 20,9H22L21,10L22,11H20A2,2 0 0,0 18,13H18V18A5,5 0 0,1 13,23A5,5 0 0,1 8,18V16.9C5.72,16.44 4,14.42 4,12V9H14V12Z" /></g><g id="mouse-variant-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L17.29,20.56C16.42,22 14.82,23 13,23A5,5 0 0,1 8,18V16.9C5.72,16.44 4,14.42 4,12V9H5.73L2,5.27M14,7H10V2.1C12.28,2.56 14,4.58 14,7M8,2.1V6.18L5.38,3.55C6.07,2.83 7,2.31 8,2.1M14,12V12.17L10.82,9H14V12M10,16.9V18A3,3 0 0,0 13,21C14.28,21 15.37,20.2 15.8,19.07L12.4,15.67C11.74,16.28 10.92,16.71 10,16.9M16,13A4,4 0 0,1 20,9H22L21,10L22,11H20A2,2 0 0,0 18,13V16.18L16,14.18V13Z" /></g><g id="move-resize"><path d="M9,1V2H10V5H9V6H12V5H11V2H12V1M9,7C7.89,7 7,7.89 7,9V21C7,22.11 7.89,23 9,23H21C22.11,23 23,22.11 23,21V9C23,7.89 22.11,7 21,7M1,9V12H2V11H5V12H6V9H5V10H2V9M9,9H21V21H9M14,10V11H15V16H11V15H10V18H11V17H15V19H14V20H17V19H16V17H19V18H20V15H19V16H16V11H17V10" /></g><g id="move-resize-variant"><path d="M1.88,0.46L0.46,1.88L5.59,7H2V9H9V2H7V5.59M11,7V9H21V15H23V9A2,2 0 0,0 21,7M7,11V21A2,2 0 0,0 9,23H15V21H9V11M15.88,14.46L14.46,15.88L19.6,21H17V23H23V17H21V19.59" /></g><g id="movie"><path d="M18,4L20,8H17L15,4H13L15,8H12L10,4H8L10,8H7L5,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V4H18Z" /></g><g id="multiplication"><path d="M11,3H13V10.27L19.29,6.64L20.29,8.37L14,12L20.3,15.64L19.3,17.37L13,13.72V21H11V13.73L4.69,17.36L3.69,15.63L10,12L3.72,8.36L4.72,6.63L11,10.26V3Z" /></g><g id="multiplication-box"><path d="M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19M11,17H13V13.73L15.83,15.36L16.83,13.63L14,12L16.83,10.36L15.83,8.63L13,10.27V7H11V10.27L8.17,8.63L7.17,10.36L10,12L7.17,13.63L8.17,15.36L11,13.73V17Z" /></g><g id="music-box"><path d="M16,9H13V14.5A2.5,2.5 0 0,1 10.5,17A2.5,2.5 0 0,1 8,14.5A2.5,2.5 0 0,1 10.5,12C11.07,12 11.58,12.19 12,12.5V7H16M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="music-box-outline"><path d="M16,9H13V14.5A2.5,2.5 0 0,1 10.5,17A2.5,2.5 0 0,1 8,14.5A2.5,2.5 0 0,1 10.5,12C11.07,12 11.58,12.19 12,12.5V7H16V9M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M5,5V19H19V5H5Z" /></g><g id="music-circle"><path d="M16,9V7H12V12.5C11.58,12.19 11.07,12 10.5,12A2.5,2.5 0 0,0 8,14.5A2.5,2.5 0 0,0 10.5,17A2.5,2.5 0 0,0 13,14.5V9H16M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z" /></g><g id="music-note"><path d="M12,3V12.26C11.5,12.09 11,12 10.5,12C8,12 6,14 6,16.5C6,19 8,21 10.5,21C13,21 15,19 15,16.5V6H19V3H12Z" /></g><g id="music-note-bluetooth"><path d="M10,3V12.26C9.5,12.09 9,12 8.5,12C6,12 4,14 4,16.5C4,19 6,21 8.5,21C11,21 13,19 13,16.5V6H17V3H10M20,7V10.79L17.71,8.5L17,9.21L19.79,12L17,14.79L17.71,15.5L20,13.21V17H20.5L23.35,14.15L21.21,12L23.36,9.85L20.5,7H20M21,8.91L21.94,9.85L21,10.79V8.91M21,13.21L21.94,14.15L21,15.09V13.21Z" /></g><g id="music-note-bluetooth-off"><path d="M10,3V8.68L13,11.68V6H17V3H10M3.28,4.5L2,5.77L8.26,12.03C5.89,12.15 4,14.1 4,16.5C4,19 6,21 8.5,21C10.9,21 12.85,19.11 12.97,16.74L17.68,21.45L18.96,20.18L13,14.22L10,11.22L3.28,4.5M20,7V10.79L17.71,8.5L17,9.21L19.79,12L17,14.79L17.71,15.5L20,13.21V17H20.5L23.35,14.15L21.21,12L23.36,9.85L20.5,7H20M21,8.91L21.94,9.85L21,10.79V8.91M21,13.21L21.94,14.15L21,15.09V13.21Z" /></g><g id="music-note-eighth"><path d="M12,3V12.26C11.5,12.09 11,12 10.5,12C8.54,12 6.9,13.26 6.28,15H3V18H6.28C6.9,19.74 8.54,21 10.5,21C12.46,21 14.1,19.74 14.72,18H19V15H15V6H19V3H12Z" /></g><g id="music-note-half"><path d="M12,3V12.26C11.5,12.09 11,12 10.5,12C8.54,12 6.9,13.26 6.28,15H3V18H6.28C6.9,19.74 8.54,21 10.5,21C12.46,21 14.1,19.74 14.72,18H19V15H15V9L15,6V3H12M10.5,14.5A2,2 0 0,1 12.5,16.5A2,2 0 0,1 10.5,18.5A2,2 0 0,1 8.5,16.5A2,2 0 0,1 10.5,14.5Z" /></g><g id="music-note-off"><path d="M12,3V8.68L15,11.68V6H19V3H12M5.28,4.5L4,5.77L10.26,12.03C7.89,12.15 6,14.1 6,16.5C6,19 8,21 10.5,21C12.9,21 14.85,19.11 14.97,16.74L19.68,21.45L20.96,20.18L15,14.22L12,11.22L5.28,4.5Z" /></g><g id="music-note-quarter"><path d="M12,3H15V15H19V18H14.72C14.1,19.74 12.46,21 10.5,21C8.54,21 6.9,19.74 6.28,18H3V15H6.28C6.9,13.26 8.54,12 10.5,12C11,12 11.5,12.09 12,12.26V3Z" /></g><g id="music-note-sixteenth"><path d="M12,3V12.26C11.5,12.09 11,12 10.5,12C8.54,12 6.9,13.26 6.28,15H3V18H6.28C6.9,19.74 8.54,21 10.5,21C12.46,21 14.1,19.74 14.72,18H19V15H15V10H19V7H15V6H19V3H12Z" /></g><g id="music-note-whole"><path d="M10.5,12C8.6,12 6.9,13.2 6.26,15H3V18H6.26C6.9,19.8 8.6,21 10.5,21C12.4,21 14.1,19.8 14.74,18H19V15H14.74C14.1,13.2 12.4,12 10.5,12M10.5,14.5A2,2 0 0,1 12.5,16.5A2,2 0 0,1 10.5,18.5A2,2 0 0,1 8.5,16.5A2,2 0 0,1 10.5,14.5Z" /></g><g id="nature"><path d="M13,16.12C16.47,15.71 19.17,12.76 19.17,9.17C19.17,5.3 16.04,2.17 12.17,2.17A7,7 0 0,0 5.17,9.17C5.17,12.64 7.69,15.5 11,16.06V20H5V22H19V20H13V16.12Z" /></g><g id="nature-people"><path d="M4.5,11A1.5,1.5 0 0,0 6,9.5A1.5,1.5 0 0,0 4.5,8A1.5,1.5 0 0,0 3,9.5A1.5,1.5 0 0,0 4.5,11M22.17,9.17C22.17,5.3 19.04,2.17 15.17,2.17A7,7 0 0,0 8.17,9.17C8.17,12.64 10.69,15.5 14,16.06V20H6V17H7V13A1,1 0 0,0 6,12H3A1,1 0 0,0 2,13V17H3V22H19V20H16V16.12C19.47,15.71 22.17,12.76 22.17,9.17Z" /></g><g id="navigation"><path d="M12,2L4.5,20.29L5.21,21L12,18L18.79,21L19.5,20.29L12,2Z" /></g><g id="near-me"><path d="M21,3L3,10.53V11.5L9.84,14.16L12.5,21H13.46L21,3Z" /></g><g id="needle"><path d="M11.15,15.18L9.73,13.77L11.15,12.35L12.56,13.77L13.97,12.35L12.56,10.94L13.97,9.53L15.39,10.94L16.8,9.53L13.97,6.7L6.9,13.77L9.73,16.6L11.15,15.18M3.08,19L6.2,15.89L4.08,13.77L13.97,3.87L16.1,6L17.5,4.58L16.1,3.16L17.5,1.75L21.75,6L20.34,7.4L18.92,6L17.5,7.4L19.63,9.53L9.73,19.42L7.61,17.3L3.08,21.84V19Z" /></g><g id="nest-protect"><path d="M12,18A6,6 0 0,0 18,12C18,8.68 15.31,6 12,6C8.68,6 6,8.68 6,12A6,6 0 0,0 12,18M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19M8,12A4,4 0 0,1 12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12Z" /></g><g id="nest-thermostat"><path d="M16.95,16.95L14.83,14.83C15.55,14.1 16,13.1 16,12C16,11.26 15.79,10.57 15.43,10L17.6,7.81C18.5,9 19,10.43 19,12C19,13.93 18.22,15.68 16.95,16.95M12,5C13.57,5 15,5.5 16.19,6.4L14,8.56C13.43,8.21 12.74,8 12,8A4,4 0 0,0 8,12C8,13.1 8.45,14.1 9.17,14.83L7.05,16.95C5.78,15.68 5,13.93 5,12A7,7 0 0,1 12,5M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z" /></g><g id="new-box"><path d="M20,4C21.11,4 22,4.89 22,6V18C22,19.11 21.11,20 20,20H4C2.89,20 2,19.11 2,18V6C2,4.89 2.89,4 4,4H20M8.5,15V9H7.25V12.5L4.75,9H3.5V15H4.75V11.5L7.3,15H8.5M13.5,10.26V9H9.5V15H13.5V13.75H11V12.64H13.5V11.38H11V10.26H13.5M20.5,14V9H19.25V13.5H18.13V10H16.88V13.5H15.75V9H14.5V14A1,1 0 0,0 15.5,15H19.5A1,1 0 0,0 20.5,14Z" /></g><g id="newspaper"><path d="M20,11H4V8H20M20,15H13V13H20M20,19H13V17H20M11,19H4V13H11M20.33,4.67L18.67,3L17,4.67L15.33,3L13.67,4.67L12,3L10.33,4.67L8.67,3L7,4.67L5.33,3L3.67,4.67L2,3V19A2,2 0 0,0 4,21H20A2,2 0 0,0 22,19V3L20.33,4.67Z" /></g><g id="nfc"><path d="M10.59,7.66C10.59,7.66 11.19,7.39 11.57,7.82C11.95,8.26 12.92,9.94 12.92,11.62C12.92,13.3 12.5,15.09 12.05,15.68C11.62,16.28 11.19,16.28 10.86,16.06C10.54,15.85 5.5,12 5.23,11.89C4.95,11.78 4.85,12.05 5.12,13.5C5.39,15 4.95,15.41 4.57,15.47C4.2,15.5 3.06,15.2 3,12.16C2.95,9.13 3.76,8.64 4.14,8.64C4.85,8.64 10.27,13.5 10.64,13.46C10.97,13.41 11.13,11.35 10.5,9.72C9.78,7.96 10.59,7.66 10.59,7.66M19.3,4.63C21.12,8.24 21,11.66 21,12C21,12.34 21.12,15.76 19.3,19.37C19.3,19.37 18.83,19.92 18.12,19.59C17.42,19.26 17.66,18.4 17.66,18.4C17.66,18.4 19.14,15.55 19.1,12.05V12C19.14,8.5 17.66,5.6 17.66,5.6C17.66,5.6 17.42,4.74 18.12,4.41C18.83,4.08 19.3,4.63 19.3,4.63M15.77,6.25C17.26,8.96 17.16,11.66 17.14,12C17.16,12.34 17.26,14.92 15.77,17.85C15.77,17.85 15.3,18.4 14.59,18.07C13.89,17.74 14.13,16.88 14.13,16.88C14.13,16.88 15.09,15.5 15.24,12.05V12C15.14,8.53 14.13,7.23 14.13,7.23C14.13,7.23 13.89,6.36 14.59,6.04C15.3,5.71 15.77,6.25 15.77,6.25Z" /></g><g id="nfc-tap"><path d="M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M4,4H11A2,2 0 0,1 13,6V9H11V6H4V11H6V9L9,12L6,15V13H4A2,2 0 0,1 2,11V6A2,2 0 0,1 4,4M20,20H13A2,2 0 0,1 11,18V15H13V18H20V13H18V15L15,12L18,9V11H20A2,2 0 0,1 22,13V18A2,2 0 0,1 20,20Z" /></g><g id="nfc-variant"><path d="M18,6H13A2,2 0 0,0 11,8V10.28C10.41,10.62 10,11.26 10,12A2,2 0 0,0 12,14C13.11,14 14,13.1 14,12C14,11.26 13.6,10.62 13,10.28V8H16V16H8V8H10V6H8L6,6V18H18M20,20H4V4H20M20,2H4A2,2 0 0,0 2,4V20A2,2 0 0,0 4,22H20C21.11,22 22,21.1 22,20V4C22,2.89 21.11,2 20,2Z" /></g><g id="nodejs"><path d="M12,1.85C11.73,1.85 11.45,1.92 11.22,2.05L3.78,6.35C3.3,6.63 3,7.15 3,7.71V16.29C3,16.85 3.3,17.37 3.78,17.65L5.73,18.77C6.68,19.23 7,19.24 7.44,19.24C8.84,19.24 9.65,18.39 9.65,16.91V8.44C9.65,8.32 9.55,8.22 9.43,8.22H8.5C8.37,8.22 8.27,8.32 8.27,8.44V16.91C8.27,17.57 7.59,18.22 6.5,17.67L4.45,16.5C4.38,16.45 4.34,16.37 4.34,16.29V7.71C4.34,7.62 4.38,7.54 4.45,7.5L11.89,3.21C11.95,3.17 12.05,3.17 12.11,3.21L19.55,7.5C19.62,7.54 19.66,7.62 19.66,7.71V16.29C19.66,16.37 19.62,16.45 19.55,16.5L12.11,20.79C12.05,20.83 11.95,20.83 11.88,20.79L10,19.65C9.92,19.62 9.84,19.61 9.79,19.64C9.26,19.94 9.16,20 8.67,20.15C8.55,20.19 8.36,20.26 8.74,20.47L11.22,21.94C11.46,22.08 11.72,22.15 12,22.15C12.28,22.15 12.54,22.08 12.78,21.94L20.22,17.65C20.7,17.37 21,16.85 21,16.29V7.71C21,7.15 20.7,6.63 20.22,6.35L12.78,2.05C12.55,1.92 12.28,1.85 12,1.85M14,8C11.88,8 10.61,8.89 10.61,10.39C10.61,12 11.87,12.47 13.91,12.67C16.34,12.91 16.53,13.27 16.53,13.75C16.53,14.58 15.86,14.93 14.3,14.93C12.32,14.93 11.9,14.44 11.75,13.46C11.73,13.36 11.64,13.28 11.53,13.28H10.57C10.45,13.28 10.36,13.37 10.36,13.5C10.36,14.74 11.04,16.24 14.3,16.24C16.65,16.24 18,15.31 18,13.69C18,12.08 16.92,11.66 14.63,11.35C12.32,11.05 12.09,10.89 12.09,10.35C12.09,9.9 12.29,9.3 14,9.3C15.5,9.3 16.09,9.63 16.32,10.66C16.34,10.76 16.43,10.83 16.53,10.83H17.5C17.55,10.83 17.61,10.81 17.65,10.76C17.69,10.72 17.72,10.66 17.7,10.6C17.56,8.82 16.38,8 14,8Z" /></g><g id="note"><path d="M14,10V4.5L19.5,10M5,3C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V9L15,3H5Z" /></g><g id="note-multiple"><path d="M16,9H21.5L16,3.5V9M7,2H17L23,8V18A2,2 0 0,1 21,20H7C5.89,20 5,19.1 5,18V4A2,2 0 0,1 7,2M3,6V22H21V24H3A2,2 0 0,1 1,22V6H3Z" /></g><g id="note-multiple-outline"><path d="M3,6V22H21V24H3A2,2 0 0,1 1,22V6H3M16,9H21.5L16,3.5V9M7,2H17L23,8V18A2,2 0 0,1 21,20H7C5.89,20 5,19.1 5,18V4A2,2 0 0,1 7,2M7,4V18H21V11H14V4H7Z" /></g><g id="note-outline"><path d="M14,10H19.5L14,4.5V10M5,3H15L21,9V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3M5,5V19H19V12H12V5H5Z" /></g><g id="note-plus"><path d="M14,10H19.5L14,4.5V10M5,3H15L21,9V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3M9,18H11V15H14V13H11V10H9V13H6V15H9V18Z" /></g><g id="note-plus-outline"><path d="M15,10H20.5L15,4.5V10M4,3H16L22,9V19A2,2 0 0,1 20,21H4C2.89,21 2,20.1 2,19V5C2,3.89 2.89,3 4,3M4,5V19H20V12H13V5H4M8,17V15H6V13H8V11H10V13H12V15H10V17H8Z" /></g><g id="note-text"><path d="M14,10H19.5L14,4.5V10M5,3H15L21,9V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3M5,12V14H19V12H5M5,16V18H14V16H5Z" /></g><g id="notification-clear-all"><path d="M5,13H19V11H5M3,17H17V15H3M7,7V9H21V7" /></g><g id="npm"><path d="M4,10V14H6V11H7V14H8V10H4M9,10V15H11V14H13V10H9M12,11V13H11V11H12M14,10V14H16V11H17V14H18V11H19V14H20V10H14M3,9H21V15H12V16H8V15H3V9Z" /></g><g id="nuke"><path d="M14.04,12H10V11H5.5A3.5,3.5 0 0,1 2,7.5A3.5,3.5 0 0,1 5.5,4C6.53,4 7.45,4.44 8.09,5.15C8.5,3.35 10.08,2 12,2C13.92,2 15.5,3.35 15.91,5.15C16.55,4.44 17.47,4 18.5,4A3.5,3.5 0 0,1 22,7.5A3.5,3.5 0 0,1 18.5,11H14.04V12M10,16.9V15.76H5V13.76H19V15.76H14.04V16.92L20,19.08C20.58,19.29 21,19.84 21,20.5A1.5,1.5 0 0,1 19.5,22H4.5A1.5,1.5 0 0,1 3,20.5C3,19.84 3.42,19.29 4,19.08L10,16.9Z" /></g><g id="numeric"><path d="M4,17V9H2V7H6V17H4M22,15C22,16.11 21.1,17 20,17H16V15H20V13H18V11H20V9H16V7H20A2,2 0 0,1 22,9V10.5A1.5,1.5 0 0,1 20.5,12A1.5,1.5 0 0,1 22,13.5V15M14,15V17H8V13C8,11.89 8.9,11 10,11H12V9H8V7H12A2,2 0 0,1 14,9V11C14,12.11 13.1,13 12,13H10V15H14Z" /></g><g id="numeric-0-box"><path d="M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H11M11,9H13V15H11V9Z" /></g><g id="numeric-0-box-multiple-outline"><path d="M21,17V3H7V17H21M21,1A2,2 0 0,1 23,3V17A2,2 0 0,1 21,19H7A2,2 0 0,1 5,17V3A2,2 0 0,1 7,1H21M3,5V21H19V23H3A2,2 0 0,1 1,21V5H3M13,5H15A2,2 0 0,1 17,7V13A2,2 0 0,1 15,15H13A2,2 0 0,1 11,13V7A2,2 0 0,1 13,5M13,7V13H15V7H13Z" /></g><g id="numeric-0-box-outline"><path d="M19,19V5H5V19H19M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M11,7H13A2,2 0 0,1 15,9V15A2,2 0 0,1 13,17H11A2,2 0 0,1 9,15V9A2,2 0 0,1 11,7M11,9V15H13V9H11Z" /></g><g id="numeric-1-box"><path d="M14,17H12V9H10V7H14M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="numeric-1-box-multiple-outline"><path d="M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M14,15H16V5H12V7H14M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z" /></g><g id="numeric-1-box-outline"><path d="M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,17H14V7H10V9H12" /></g><g id="numeric-2-box"><path d="M15,11C15,12.11 14.1,13 13,13H11V15H15V17H9V13C9,11.89 9.9,11 11,11H13V9H9V7H13A2,2 0 0,1 15,9M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="numeric-2-box-multiple-outline"><path d="M17,13H13V11H15A2,2 0 0,0 17,9V7C17,5.89 16.1,5 15,5H11V7H15V9H13A2,2 0 0,0 11,11V15H17M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z" /></g><g id="numeric-2-box-outline"><path d="M15,15H11V13H13A2,2 0 0,0 15,11V9C15,7.89 14.1,7 13,7H9V9H13V11H11A2,2 0 0,0 9,13V17H15M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="numeric-3-box"><path d="M15,10.5A1.5,1.5 0 0,1 13.5,12C14.34,12 15,12.67 15,13.5V15C15,16.11 14.11,17 13,17H9V15H13V13H11V11H13V9H9V7H13C14.11,7 15,7.89 15,9M19,3H5C3.91,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19C20.11,21 21,20.1 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="numeric-3-box-multiple-outline"><path d="M17,13V11.5A1.5,1.5 0 0,0 15.5,10A1.5,1.5 0 0,0 17,8.5V7C17,5.89 16.1,5 15,5H11V7H15V9H13V11H15V13H11V15H15A2,2 0 0,0 17,13M3,5H1V21A2,2 0 0,0 3,23H19V21H3M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1Z" /></g><g id="numeric-3-box-outline"><path d="M15,15V13.5A1.5,1.5 0 0,0 13.5,12A1.5,1.5 0 0,0 15,10.5V9C15,7.89 14.1,7 13,7H9V9H13V11H11V13H13V15H9V17H13A2,2 0 0,0 15,15M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="numeric-4-box"><path d="M15,17H13V13H9V7H11V11H13V7H15M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="numeric-4-box-multiple-outline"><path d="M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M15,15H17V5H15V9H13V5H11V11H15M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z" /></g><g id="numeric-4-box-outline"><path d="M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M13,17H15V7H13V11H11V7H9V13H13" /></g><g id="numeric-5-box"><path d="M15,9H11V11H13A2,2 0 0,1 15,13V15C15,16.11 14.1,17 13,17H9V15H13V13H9V7H15M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="numeric-5-box-multiple-outline"><path d="M17,13V11C17,9.89 16.1,9 15,9H13V7H17V5H11V11H15V13H11V15H15A2,2 0 0,0 17,13M3,5H1V21A2,2 0 0,0 3,23H19V21H3M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1Z" /></g><g id="numeric-5-box-outline"><path d="M15,15V13C15,11.89 14.1,11 13,11H11V9H15V7H9V13H13V15H9V17H13A2,2 0 0,0 15,15M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="numeric-6-box"><path d="M15,9H11V11H13A2,2 0 0,1 15,13V15C15,16.11 14.1,17 13,17H11A2,2 0 0,1 9,15V9C9,7.89 9.9,7 11,7H15M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M11,15H13V13H11V15Z" /></g><g id="numeric-6-box-multiple-outline"><path d="M13,11H15V13H13M13,15H15A2,2 0 0,0 17,13V11C17,9.89 16.1,9 15,9H13V7H17V5H13A2,2 0 0,0 11,7V13C11,14.11 11.9,15 13,15M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z" /></g><g id="numeric-6-box-outline"><path d="M11,13H13V15H11M11,17H13A2,2 0 0,0 15,15V13C15,11.89 14.1,11 13,11H11V9H15V7H11A2,2 0 0,0 9,9V15C9,16.11 9.9,17 11,17M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="numeric-7-box"><path d="M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M11,17L15,9V7H9V9H13L9,17H11Z" /></g><g id="numeric-7-box-multiple-outline"><path d="M13,15L17,7V5H11V7H15L11,15M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z" /></g><g id="numeric-7-box-outline"><path d="M11,17L15,9V7H9V9H13L9,17M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="numeric-8-box"><path d="M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M11,17H13A2,2 0 0,0 15,15V13.5A1.5,1.5 0 0,0 13.5,12A1.5,1.5 0 0,0 15,10.5V9C15,7.89 14.1,7 13,7H11A2,2 0 0,0 9,9V10.5A1.5,1.5 0 0,0 10.5,12A1.5,1.5 0 0,0 9,13.5V15C9,16.11 9.9,17 11,17M11,13H13V15H11V13M11,9H13V11H11V9Z" /></g><g id="numeric-8-box-multiple-outline"><path d="M13,11H15V13H13M13,7H15V9H13M13,15H15A2,2 0 0,0 17,13V11.5A1.5,1.5 0 0,0 15.5,10A1.5,1.5 0 0,0 17,8.5V7C17,5.89 16.1,5 15,5H13A2,2 0 0,0 11,7V8.5A1.5,1.5 0 0,0 12.5,10A1.5,1.5 0 0,0 11,11.5V13C11,14.11 11.9,15 13,15M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z" /></g><g id="numeric-8-box-outline"><path d="M11,13H13V15H11M11,9H13V11H11M11,17H13A2,2 0 0,0 15,15V13.5A1.5,1.5 0 0,0 13.5,12A1.5,1.5 0 0,0 15,10.5V9C15,7.89 14.1,7 13,7H11A2,2 0 0,0 9,9V10.5A1.5,1.5 0 0,0 10.5,12A1.5,1.5 0 0,0 9,13.5V15C9,16.11 9.9,17 11,17M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="numeric-9-box"><path d="M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M13,11H11V9H13V11M13,7H11A2,2 0 0,0 9,9V11C9,12.11 9.9,13 11,13H13V15H9V17H13A2,2 0 0,0 15,15V9C15,7.89 14.1,7 13,7Z" /></g><g id="numeric-9-box-multiple-outline"><path d="M15,9H13V7H15M15,5H13A2,2 0 0,0 11,7V9C11,10.11 11.9,11 13,11H15V13H11V15H15A2,2 0 0,0 17,13V7C17,5.89 16.1,5 15,5M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z" /></g><g id="numeric-9-box-outline"><path d="M13,11H11V9H13M13,7H11A2,2 0 0,0 9,9V11C9,12.11 9.9,13 11,13H13V15H9V17H13A2,2 0 0,0 15,15V9C15,7.89 14.1,7 13,7M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="numeric-9-plus-box"><path d="M21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5M19,11H17V9H15V11H13V13H15V15H17V13H19V11M10,7H8A2,2 0 0,0 6,9V11C6,12.11 6.9,13 8,13H10V15H6V17H10A2,2 0 0,0 12,15V9C12,7.89 11.1,7 10,7M8,9H10V11H8V9Z" /></g><g id="numeric-9-plus-box-multiple-outline"><path d="M21,9H19V7H17V9H15V11H17V13H19V11H21V17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M11,9V8H12V9M14,12V8C14,6.89 13.1,6 12,6H11A2,2 0 0,0 9,8V9C9,10.11 9.9,11 11,11H12V12H9V14H12A2,2 0 0,0 14,12M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z" /></g><g id="numeric-9-plus-box-outline"><path d="M19,11H17V9H15V11H13V13H15V15H17V13H19V19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M9,11V10H10V11M12,14V10C12,8.89 11.1,8 10,8H9A2,2 0 0,0 7,10V11C7,12.11 7.9,13 9,13H10V14H7V16H10A2,2 0 0,0 12,14Z" /></g><g id="nutrition"><path d="M22,18A4,4 0 0,1 18,22H14A4,4 0 0,1 10,18V16H22V18M4,3H14A2,2 0 0,1 16,5V14H8V19H4A2,2 0 0,1 2,17V5A2,2 0 0,1 4,3M4,6V8H6V6H4M14,8V6H8V8H14M4,10V12H6V10H4M8,10V12H14V10H8M4,14V16H6V14H4Z" /></g><g id="oar"><path d="M20.23,15.21C18.77,13.75 14.97,10.2 12.77,11.27L4.5,3L3,4.5L11.28,12.79C10.3,15 13.88,18.62 15.35,20.08C17.11,21.84 18.26,20.92 19.61,19.57C21.1,18.08 21.61,16.61 20.23,15.21Z" /></g><g id="octagon"><path d="M15.73,3H8.27L3,8.27V15.73L8.27,21H15.73L21,15.73V8.27" /></g><g id="octagon-outline"><path d="M8.27,3L3,8.27V15.73L8.27,21H15.73C17.5,19.24 21,15.73 21,15.73V8.27L15.73,3M9.1,5H14.9L19,9.1V14.9L14.9,19H9.1L5,14.9V9.1" /></g><g id="odnoklassniki"><path d="M17.83,12.74C17.55,12.17 16.76,11.69 15.71,12.5C14.28,13.64 12,13.64 12,13.64C12,13.64 9.72,13.64 8.29,12.5C7.24,11.69 6.45,12.17 6.17,12.74C5.67,13.74 6.23,14.23 7.5,15.04C8.59,15.74 10.08,16 11.04,16.1L10.24,16.9C9.1,18.03 8,19.12 7.25,19.88C6.8,20.34 6.8,21.07 7.25,21.5L7.39,21.66C7.84,22.11 8.58,22.11 9.03,21.66L12,18.68C13.15,19.81 14.24,20.9 15,21.66C15.45,22.11 16.18,22.11 16.64,21.66L16.77,21.5C17.23,21.07 17.23,20.34 16.77,19.88L13.79,16.9L13,16.09C13.95,16 15.42,15.73 16.5,15.04C17.77,14.23 18.33,13.74 17.83,12.74M12,4.57C13.38,4.57 14.5,5.69 14.5,7.06C14.5,8.44 13.38,9.55 12,9.55C10.62,9.55 9.5,8.44 9.5,7.06C9.5,5.69 10.62,4.57 12,4.57M12,12.12C14.8,12.12 17.06,9.86 17.06,7.06C17.06,4.27 14.8,2 12,2C9.2,2 6.94,4.27 6.94,7.06C6.94,9.86 9.2,12.12 12,12.12Z" /></g><g id="office"><path d="M3,18L7,16.75V7L14,5V19.5L3.5,18.25L14,22L20,20.75V3.5L13.95,2L3,5.75V18Z" /></g><g id="oil"><path d="M22,12.5C22,12.5 24,14.67 24,16A2,2 0 0,1 22,18A2,2 0 0,1 20,16C20,14.67 22,12.5 22,12.5M6,6H10A1,1 0 0,1 11,7A1,1 0 0,1 10,8H9V10H11C11.74,10 12.39,10.4 12.73,11L19.24,7.24L22.5,9.13C23,9.4 23.14,10 22.87,10.5C22.59,10.97 22,11.14 21.5,10.86L19.4,9.65L15.75,15.97C15.41,16.58 14.75,17 14,17H5A2,2 0 0,1 3,15V12A2,2 0 0,1 5,10H7V8H6A1,1 0 0,1 5,7A1,1 0 0,1 6,6M5,12V15H14L16.06,11.43L12.6,13.43L11.69,12H5M0.38,9.21L2.09,7.5C2.5,7.11 3.11,7.11 3.5,7.5C3.89,7.89 3.89,8.5 3.5,8.91L1.79,10.62C1.4,11 0.77,11 0.38,10.62C0,10.23 0,9.6 0.38,9.21Z" /></g><g id="oil-temperature"><path d="M11.5,1A1.5,1.5 0 0,0 10,2.5V14.5C9.37,14.97 9,15.71 9,16.5A2.5,2.5 0 0,0 11.5,19A2.5,2.5 0 0,0 14,16.5C14,15.71 13.63,15 13,14.5V13H17V11H13V9H17V7H13V5H17V3H13V2.5A1.5,1.5 0 0,0 11.5,1M0,15V17C0.67,17 0.79,17.21 1.29,17.71C1.79,18.21 2.67,19 4,19C5.33,19 6.21,18.21 6.71,17.71C6.82,17.59 6.91,17.5 7,17.41V15.16C6.21,15.42 5.65,15.93 5.29,16.29C4.79,16.79 4.67,17 4,17C3.33,17 3.21,16.79 2.71,16.29C2.21,15.79 1.33,15 0,15M16,15V17C16.67,17 16.79,17.21 17.29,17.71C17.79,18.21 18.67,19 20,19C21.33,19 22.21,18.21 22.71,17.71C23.21,17.21 23.33,17 24,17V15C22.67,15 21.79,15.79 21.29,16.29C20.79,16.79 20.67,17 20,17C19.33,17 19.21,16.79 18.71,16.29C18.21,15.79 17.33,15 16,15M8,20C6.67,20 5.79,20.79 5.29,21.29C4.79,21.79 4.67,22 4,22C3.33,22 3.21,21.79 2.71,21.29C2.35,20.93 1.79,20.42 1,20.16V22.41C1.09,22.5 1.18,22.59 1.29,22.71C1.79,23.21 2.67,24 4,24C5.33,24 6.21,23.21 6.71,22.71C7.21,22.21 7.33,22 8,22C8.67,22 8.79,22.21 9.29,22.71C9.73,23.14 10.44,23.8 11.5,23.96C11.66,24 11.83,24 12,24C13.33,24 14.21,23.21 14.71,22.71C15.21,22.21 15.33,22 16,22C16.67,22 16.79,22.21 17.29,22.71C17.79,23.21 18.67,24 20,24C21.33,24 22.21,23.21 22.71,22.71C22.82,22.59 22.91,22.5 23,22.41V20.16C22.21,20.42 21.65,20.93 21.29,21.29C20.79,21.79 20.67,22 20,22C19.33,22 19.21,21.79 18.71,21.29C18.21,20.79 17.33,20 16,20C14.67,20 13.79,20.79 13.29,21.29C12.79,21.79 12.67,22 12,22C11.78,22 11.63,21.97 11.5,21.92C11.22,21.82 11.05,21.63 10.71,21.29C10.21,20.79 9.33,20 8,20Z" /></g><g id="omega"><path d="M19.15,19H13.39V16.87C15.5,15.25 16.59,13.24 16.59,10.84C16.59,9.34 16.16,8.16 15.32,7.29C14.47,6.42 13.37,6 12.03,6C10.68,6 9.57,6.42 8.71,7.3C7.84,8.17 7.41,9.37 7.41,10.88C7.41,13.26 8.5,15.26 10.61,16.87V19H4.85V16.87H8.41C6.04,15.32 4.85,13.23 4.85,10.6C4.85,8.5 5.5,6.86 6.81,5.66C8.12,4.45 9.84,3.85 11.97,3.85C14.15,3.85 15.89,4.45 17.19,5.64C18.5,6.83 19.15,8.5 19.15,10.58C19.15,13.21 17.95,15.31 15.55,16.87H19.15V19Z" /></g><g id="onedrive"><path d="M20.08,13.64C21.17,13.81 22,14.75 22,15.89C22,16.78 21.5,17.55 20.75,17.92L20.58,18H9.18L9.16,18V18C7.71,18 6.54,16.81 6.54,15.36C6.54,13.9 7.72,12.72 9.18,12.72L9.4,12.73L9.39,12.53A3.3,3.3 0 0,1 12.69,9.23C13.97,9.23 15.08,9.96 15.63,11C16.08,10.73 16.62,10.55 17.21,10.55A2.88,2.88 0 0,1 20.09,13.43L20.08,13.64M8.82,12.16C7.21,12.34 5.96,13.7 5.96,15.36C5.96,16.04 6.17,16.66 6.5,17.18H4.73A2.73,2.73 0 0,1 2,14.45C2,13 3.12,11.83 4.53,11.73L4.46,11.06C4.46,9.36 5.84,8 7.54,8C8.17,8 8.77,8.18 9.26,8.5C9.95,7.11 11.4,6.15 13.07,6.15C15.27,6.15 17.08,7.83 17.3,9.97H17.21C16.73,9.97 16.27,10.07 15.84,10.25C15.12,9.25 13.96,8.64 12.69,8.64C10.67,8.64 9,10.19 8.82,12.16Z" /></g><g id="opacity"><path d="M17.66,8L12,2.35L6.34,8C4.78,9.56 4,11.64 4,13.64C4,15.64 4.78,17.75 6.34,19.31C7.9,20.87 9.95,21.66 12,21.66C14.05,21.66 16.1,20.87 17.66,19.31C19.22,17.75 20,15.64 20,13.64C20,11.64 19.22,9.56 17.66,8M6,14C6,12 6.62,10.73 7.76,9.6L12,5.27L16.24,9.65C17.38,10.77 18,12 18,14H6Z" /></g><g id="open-in-app"><path d="M12,10L8,14H11V20H13V14H16M19,4H5C3.89,4 3,4.9 3,6V18A2,2 0 0,0 5,20H9V18H5V8H19V18H15V20H19A2,2 0 0,0 21,18V6A2,2 0 0,0 19,4Z" /></g><g id="open-in-new"><path d="M14,3V5H17.59L7.76,14.83L9.17,16.24L19,6.41V10H21V3M19,19H5V5H12V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V12H19V19Z" /></g><g id="openid"><path d="M14,2L11,3.5V19.94C7,19.5 4,17.46 4,15C4,12.75 6.5,10.85 10,10.22V8.19C4.86,8.88 1,11.66 1,15C1,18.56 5.36,21.5 11,21.94C11.03,21.94 11.06,21.94 11.09,21.94L14,20.5V2M15,8.19V10.22C16.15,10.43 17.18,10.77 18.06,11.22L16.5,12L23,13.5L22.5,9L20.5,10C19,9.12 17.12,8.47 15,8.19Z" /></g><g id="opera"><path d="M17.33,3.57C15.86,2.56 14.05,2 12,2C10.13,2 8.46,2.47 7.06,3.32C4.38,4.95 2.72,8 2.72,11.9C2.72,17.19 6.43,22 12,22C17.57,22 21.28,17.19 21.28,11.9C21.28,8.19 19.78,5.25 17.33,3.57M12,3.77C15,3.77 15.6,7.93 15.6,11.72C15.6,15.22 15.26,19.91 12.04,19.91C8.82,19.91 8.4,15.17 8.4,11.67C8.4,7.89 9,3.77 12,3.77Z" /></g><g id="ornament"><path d="M12,1A3,3 0 0,1 15,4V5A1,1 0 0,1 16,6V7.07C18.39,8.45 20,11.04 20,14A8,8 0 0,1 12,22A8,8 0 0,1 4,14C4,11.04 5.61,8.45 8,7.07V6A1,1 0 0,1 9,5V4A3,3 0 0,1 12,1M12,3A1,1 0 0,0 11,4V5H13V4A1,1 0 0,0 12,3M12,8C10.22,8 8.63,8.77 7.53,10H16.47C15.37,8.77 13.78,8 12,8M6.34,16H7.59L6,14.43C6.05,15 6.17,15.5 6.34,16M12.59,16L8.59,12H6.41L10.41,16H12.59M17.66,12H16.41L18,13.57C17.95,13 17.83,12.5 17.66,12M11.41,12L15.41,16H17.59L13.59,12H11.41M12,20C13.78,20 15.37,19.23 16.47,18H7.53C8.63,19.23 10.22,20 12,20Z" /></g><g id="ornament-variant"><path d="M12,1A3,3 0 0,1 15,4V5A1,1 0 0,1 16,6V7.07C18.39,8.45 20,11.04 20,14A8,8 0 0,1 12,22A8,8 0 0,1 4,14C4,11.04 5.61,8.45 8,7.07V6A1,1 0 0,1 9,5V4A3,3 0 0,1 12,1M12,3A1,1 0 0,0 11,4V5H13V4A1,1 0 0,0 12,3M12,8C10.22,8 8.63,8.77 7.53,10H16.47C15.37,8.77 13.78,8 12,8M12,20C13.78,20 15.37,19.23 16.47,18H7.53C8.63,19.23 10.22,20 12,20M12,12A2,2 0 0,0 10,14A2,2 0 0,0 12,16A2,2 0 0,0 14,14A2,2 0 0,0 12,12M18,14C18,13.31 17.88,12.65 17.67,12C16.72,12.19 16,13 16,14C16,15 16.72,15.81 17.67,15.97C17.88,15.35 18,14.69 18,14M6,14C6,14.69 6.12,15.35 6.33,15.97C7.28,15.81 8,15 8,14C8,13 7.28,12.19 6.33,12C6.12,12.65 6,13.31 6,14Z" /></g><g id="owl"><path d="M12,16C12.56,16.84 13.31,17.53 14.2,18L12,20.2L9.8,18C10.69,17.53 11.45,16.84 12,16M17,11.2A2,2 0 0,0 15,13.2A2,2 0 0,0 17,15.2A2,2 0 0,0 19,13.2C19,12.09 18.1,11.2 17,11.2M7,11.2A2,2 0 0,0 5,13.2A2,2 0 0,0 7,15.2A2,2 0 0,0 9,13.2C9,12.09 8.1,11.2 7,11.2M17,8.7A4,4 0 0,1 21,12.7A4,4 0 0,1 17,16.7A4,4 0 0,1 13,12.7A4,4 0 0,1 17,8.7M7,8.7A4,4 0 0,1 11,12.7A4,4 0 0,1 7,16.7A4,4 0 0,1 3,12.7A4,4 0 0,1 7,8.7M2.24,1C4,4.7 2.73,7.46 1.55,10.2C1.19,11 1,11.83 1,12.7A6,6 0 0,0 7,18.7C7.21,18.69 7.42,18.68 7.63,18.65L10.59,21.61L12,23L13.41,21.61L16.37,18.65C16.58,18.68 16.79,18.69 17,18.7A6,6 0 0,0 23,12.7C23,11.83 22.81,11 22.45,10.2C21.27,7.46 20,4.7 21.76,1C19.12,3.06 15.36,4.69 12,4.7C8.64,4.69 4.88,3.06 2.24,1Z" /></g><g id="package"><path d="M5.12,5H18.87L17.93,4H5.93L5.12,5M20.54,5.23C20.83,5.57 21,6 21,6.5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V6.5C3,6 3.17,5.57 3.46,5.23L4.84,3.55C5.12,3.21 5.53,3 6,3H18C18.47,3 18.88,3.21 19.15,3.55L20.54,5.23M6,18H12V15H6V18Z" /></g><g id="package-down"><path d="M5.12,5L5.93,4H17.93L18.87,5M12,17.5L6.5,12H10V10H14V12H17.5L12,17.5M20.54,5.23L19.15,3.55C18.88,3.21 18.47,3 18,3H6C5.53,3 5.12,3.21 4.84,3.55L3.46,5.23C3.17,5.57 3,6 3,6.5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V6.5C21,6 20.83,5.57 20.54,5.23Z" /></g><g id="package-up"><path d="M20.54,5.23C20.83,5.57 21,6 21,6.5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V6.5C3,6 3.17,5.57 3.46,5.23L4.84,3.55C5.12,3.21 5.53,3 6,3H18C18.47,3 18.88,3.21 19.15,3.55L20.54,5.23M5.12,5H18.87L17.93,4H5.93L5.12,5M12,9.5L6.5,15H10V17H14V15H17.5L12,9.5Z" /></g><g id="package-variant"><path d="M2,10.96C1.5,10.68 1.35,10.07 1.63,9.59L3.13,7C3.24,6.8 3.41,6.66 3.6,6.58L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.66,6.72 20.82,6.88 20.91,7.08L22.36,9.6C22.64,10.08 22.47,10.69 22,10.96L21,11.54V16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V10.96C2.7,11.13 2.32,11.14 2,10.96M12,4.15V4.15L12,10.85V10.85L17.96,7.5L12,4.15M5,15.91L11,19.29V12.58L5,9.21V15.91M19,15.91V12.69L14,15.59C13.67,15.77 13.3,15.76 13,15.6V19.29L19,15.91M13.85,13.36L20.13,9.73L19.55,8.72L13.27,12.35L13.85,13.36Z" /></g><g id="package-variant-closed"><path d="M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L10.11,5.22L16,8.61L17.96,7.5L12,4.15M6.04,7.5L12,10.85L13.96,9.75L8.08,6.35L6.04,7.5M5,15.91L11,19.29V12.58L5,9.21V15.91M19,15.91V9.21L13,12.58V19.29L19,15.91Z" /></g><g id="page-first"><path d="M18.41,16.59L13.82,12L18.41,7.41L17,6L11,12L17,18L18.41,16.59M6,6H8V18H6V6Z" /></g><g id="page-last"><path d="M5.59,7.41L10.18,12L5.59,16.59L7,18L13,12L7,6L5.59,7.41M16,6H18V18H16V6Z" /></g><g id="palette"><path d="M17.5,12A1.5,1.5 0 0,1 16,10.5A1.5,1.5 0 0,1 17.5,9A1.5,1.5 0 0,1 19,10.5A1.5,1.5 0 0,1 17.5,12M14.5,8A1.5,1.5 0 0,1 13,6.5A1.5,1.5 0 0,1 14.5,5A1.5,1.5 0 0,1 16,6.5A1.5,1.5 0 0,1 14.5,8M9.5,8A1.5,1.5 0 0,1 8,6.5A1.5,1.5 0 0,1 9.5,5A1.5,1.5 0 0,1 11,6.5A1.5,1.5 0 0,1 9.5,8M6.5,12A1.5,1.5 0 0,1 5,10.5A1.5,1.5 0 0,1 6.5,9A1.5,1.5 0 0,1 8,10.5A1.5,1.5 0 0,1 6.5,12M12,3A9,9 0 0,0 3,12A9,9 0 0,0 12,21A1.5,1.5 0 0,0 13.5,19.5C13.5,19.11 13.35,18.76 13.11,18.5C12.88,18.23 12.73,17.88 12.73,17.5A1.5,1.5 0 0,1 14.23,16H16A5,5 0 0,0 21,11C21,6.58 16.97,3 12,3Z" /></g><g id="palette-advanced"><path d="M22,22H10V20H22V22M2,22V20H9V22H2M18,18V10H22V18H18M18,3H22V9H18V3M2,18V3H16V18H2M9,14.56A3,3 0 0,0 12,11.56C12,9.56 9,6.19 9,6.19C9,6.19 6,9.56 6,11.56A3,3 0 0,0 9,14.56Z" /></g><g id="panda"><path d="M12,3C13.74,3 15.36,3.5 16.74,4.35C17.38,3.53 18.38,3 19.5,3A3.5,3.5 0 0,1 23,6.5C23,8 22.05,9.28 20.72,9.78C20.9,10.5 21,11.23 21,12A9,9 0 0,1 12,21A9,9 0 0,1 3,12C3,11.23 3.1,10.5 3.28,9.78C1.95,9.28 1,8 1,6.5A3.5,3.5 0 0,1 4.5,3C5.62,3 6.62,3.53 7.26,4.35C8.64,3.5 10.26,3 12,3M12,5A7,7 0 0,0 5,12A7,7 0 0,0 12,19A7,7 0 0,0 19,12A7,7 0 0,0 12,5M16.19,10.3C16.55,11.63 16.08,12.91 15.15,13.16C14.21,13.42 13.17,12.54 12.81,11.2C12.45,9.87 12.92,8.59 13.85,8.34C14.79,8.09 15.83,8.96 16.19,10.3M7.81,10.3C8.17,8.96 9.21,8.09 10.15,8.34C11.08,8.59 11.55,9.87 11.19,11.2C10.83,12.54 9.79,13.42 8.85,13.16C7.92,12.91 7.45,11.63 7.81,10.3M12,14C12.6,14 13.13,14.19 13.5,14.5L12.5,15.5C12.5,15.92 12.84,16.25 13.25,16.25A0.75,0.75 0 0,0 14,15.5A0.5,0.5 0 0,1 14.5,15A0.5,0.5 0 0,1 15,15.5A1.75,1.75 0 0,1 13.25,17.25C12.76,17.25 12.32,17.05 12,16.72C11.68,17.05 11.24,17.25 10.75,17.25A1.75,1.75 0 0,1 9,15.5A0.5,0.5 0 0,1 9.5,15A0.5,0.5 0 0,1 10,15.5A0.75,0.75 0 0,0 10.75,16.25A0.75,0.75 0 0,0 11.5,15.5L10.5,14.5C10.87,14.19 11.4,14 12,14Z" /></g><g id="pandora"><path d="M16.87,7.73C16.87,9.9 15.67,11.7 13.09,11.7H10.45V3.66H13.09C15.67,3.66 16.87,5.5 16.87,7.73M10.45,15.67V13.41H13.09C17.84,13.41 20.5,10.91 20.5,7.73C20.5,4.45 17.84,2 13.09,2H3.5V2.92C6.62,2.92 7.17,3.66 7.17,8.28V15.67C7.17,20.29 6.62,21.08 3.5,21.08V22H14.1V21.08C11,21.08 10.45,20.29 10.45,15.67Z" /></g><g id="panorama"><path d="M8.5,12.5L11,15.5L14.5,11L19,17H5M23,18V6A2,2 0 0,0 21,4H3A2,2 0 0,0 1,6V18A2,2 0 0,0 3,20H21A2,2 0 0,0 23,18Z" /></g><g id="panorama-fisheye"><path d="M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22C17.53,22 22,17.53 22,12C22,6.47 17.53,2 12,2Z" /></g><g id="panorama-horizontal"><path d="M21.43,4C21.33,4 21.23,4 21.12,4.06C18.18,5.16 15.09,5.7 12,5.7C8.91,5.7 5.82,5.15 2.88,4.06C2.77,4 2.66,4 2.57,4C2.23,4 2,4.23 2,4.63V19.38C2,19.77 2.23,20 2.57,20C2.67,20 2.77,20 2.88,19.94C5.82,18.84 8.91,18.3 12,18.3C15.09,18.3 18.18,18.85 21.12,19.94C21.23,20 21.33,20 21.43,20C21.76,20 22,19.77 22,19.37V4.63C22,4.23 21.76,4 21.43,4M20,6.54V17.45C17.4,16.68 14.72,16.29 12,16.29C9.28,16.29 6.6,16.68 4,17.45V6.54C6.6,7.31 9.28,7.7 12,7.7C14.72,7.71 17.4,7.32 20,6.54Z" /></g><g id="panorama-vertical"><path d="M6.54,20C7.31,17.4 7.7,14.72 7.7,12C7.7,9.28 7.31,6.6 6.54,4H17.45C16.68,6.6 16.29,9.28 16.29,12C16.29,14.72 16.68,17.4 17.45,20M19.94,21.12C18.84,18.18 18.3,15.09 18.3,12C18.3,8.91 18.85,5.82 19.94,2.88C20,2.77 20,2.66 20,2.57C20,2.23 19.77,2 19.37,2H4.63C4.23,2 4,2.23 4,2.57C4,2.67 4,2.77 4.06,2.88C5.16,5.82 5.71,8.91 5.71,12C5.71,15.09 5.16,18.18 4.07,21.12C4,21.23 4,21.34 4,21.43C4,21.76 4.23,22 4.63,22H19.38C19.77,22 20,21.76 20,21.43C20,21.33 20,21.23 19.94,21.12Z" /></g><g id="panorama-wide-angle"><path d="M12,4C9.27,4 6.78,4.24 4.05,4.72L3.12,4.88L2.87,5.78C2.29,7.85 2,9.93 2,12C2,14.07 2.29,16.15 2.87,18.22L3.12,19.11L4.05,19.27C6.78,19.76 9.27,20 12,20C14.73,20 17.22,19.76 19.95,19.28L20.88,19.12L21.13,18.23C21.71,16.15 22,14.07 22,12C22,9.93 21.71,7.85 21.13,5.78L20.88,4.89L19.95,4.73C17.22,4.24 14.73,4 12,4M12,6C14.45,6 16.71,6.2 19.29,6.64C19.76,8.42 20,10.22 20,12C20,13.78 19.76,15.58 19.29,17.36C16.71,17.8 14.45,18 12,18C9.55,18 7.29,17.8 4.71,17.36C4.24,15.58 4,13.78 4,12C4,10.22 4.24,8.42 4.71,6.64C7.29,6.2 9.55,6 12,6Z" /></g><g id="paper-cut-vertical"><path d="M11.43,3.23L12,4L12.57,3.23V3.24C13.12,2.5 14,2 15,2A3,3 0 0,1 18,5C18,5.35 17.94,5.69 17.83,6H20A2,2 0 0,1 22,8V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V8A2,2 0 0,1 4,6H6.17C6.06,5.69 6,5.35 6,5A3,3 0 0,1 9,2C10,2 10.88,2.5 11.43,3.24V3.23M4,8V20H11A1,1 0 0,1 12,19A1,1 0 0,1 13,20H20V8H15L14.9,8L17,10.92L15.4,12.1L12.42,8H11.58L8.6,12.1L7,10.92L9.1,8H9L4,8M9,4A1,1 0 0,0 8,5A1,1 0 0,0 9,6A1,1 0 0,0 10,5A1,1 0 0,0 9,4M15,4A1,1 0 0,0 14,5A1,1 0 0,0 15,6A1,1 0 0,0 16,5A1,1 0 0,0 15,4M12,16A1,1 0 0,1 13,17A1,1 0 0,1 12,18A1,1 0 0,1 11,17A1,1 0 0,1 12,16M12,13A1,1 0 0,1 13,14A1,1 0 0,1 12,15A1,1 0 0,1 11,14A1,1 0 0,1 12,13M12,10A1,1 0 0,1 13,11A1,1 0 0,1 12,12A1,1 0 0,1 11,11A1,1 0 0,1 12,10Z" /></g><g id="paperclip"><path d="M16.5,6V17.5A4,4 0 0,1 12.5,21.5A4,4 0 0,1 8.5,17.5V5A2.5,2.5 0 0,1 11,2.5A2.5,2.5 0 0,1 13.5,5V15.5A1,1 0 0,1 12.5,16.5A1,1 0 0,1 11.5,15.5V6H10V15.5A2.5,2.5 0 0,0 12.5,18A2.5,2.5 0 0,0 15,15.5V5A4,4 0 0,0 11,1A4,4 0 0,0 7,5V17.5A5.5,5.5 0 0,0 12.5,23A5.5,5.5 0 0,0 18,17.5V6H16.5Z" /></g><g id="parking"><path d="M13.2,11H10V7H13.2A2,2 0 0,1 15.2,9A2,2 0 0,1 13.2,11M13,3H6V21H10V15H13A6,6 0 0,0 19,9C19,5.68 16.31,3 13,3Z" /></g><g id="pause"><path d="M14,19H18V5H14M6,19H10V5H6V19Z" /></g><g id="pause-circle"><path d="M15,16H13V8H15M11,16H9V8H11M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="pause-circle-outline"><path d="M13,16V8H15V16H13M9,16V8H11V16H9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z" /></g><g id="pause-octagon"><path d="M15.73,3L21,8.27V15.73L15.73,21H8.27L3,15.73V8.27L8.27,3H15.73M15,16V8H13V16H15M11,16V8H9V16H11Z" /></g><g id="pause-octagon-outline"><path d="M15,16H13V8H15V16M11,16H9V8H11V16M15.73,3L21,8.27V15.73L15.73,21H8.27L3,15.73V8.27L8.27,3H15.73M14.9,5H9.1L5,9.1V14.9L9.1,19H14.9L19,14.9V9.1L14.9,5Z" /></g><g id="paw"><path d="M8.35,3C9.53,2.83 10.78,4.12 11.14,5.9C11.5,7.67 10.85,9.25 9.67,9.43C8.5,9.61 7.24,8.32 6.87,6.54C6.5,4.77 7.17,3.19 8.35,3M15.5,3C16.69,3.19 17.35,4.77 17,6.54C16.62,8.32 15.37,9.61 14.19,9.43C13,9.25 12.35,7.67 12.72,5.9C13.08,4.12 14.33,2.83 15.5,3M3,7.6C4.14,7.11 5.69,8 6.5,9.55C7.26,11.13 7,12.79 5.87,13.28C4.74,13.77 3.2,12.89 2.41,11.32C1.62,9.75 1.9,8.08 3,7.6M21,7.6C22.1,8.08 22.38,9.75 21.59,11.32C20.8,12.89 19.26,13.77 18.13,13.28C17,12.79 16.74,11.13 17.5,9.55C18.31,8 19.86,7.11 21,7.6M19.33,18.38C19.37,19.32 18.65,20.36 17.79,20.75C16,21.57 13.88,19.87 11.89,19.87C9.9,19.87 7.76,21.64 6,20.75C5,20.26 4.31,18.96 4.44,17.88C4.62,16.39 6.41,15.59 7.47,14.5C8.88,13.09 9.88,10.44 11.89,10.44C13.89,10.44 14.95,13.05 16.3,14.5C17.41,15.72 19.26,16.75 19.33,18.38Z" /></g><g id="paw-off"><path d="M2,4.27L3.28,3L21.5,21.22L20.23,22.5L18.23,20.5C18.09,20.6 17.94,20.68 17.79,20.75C16,21.57 13.88,19.87 11.89,19.87C9.9,19.87 7.76,21.64 6,20.75C5,20.26 4.31,18.96 4.44,17.88C4.62,16.39 6.41,15.59 7.47,14.5C8.21,13.77 8.84,12.69 9.55,11.82L2,4.27M8.35,3C9.53,2.83 10.78,4.12 11.14,5.9C11.32,6.75 11.26,7.56 11,8.19L7.03,4.2C7.29,3.55 7.75,3.1 8.35,3M15.5,3C16.69,3.19 17.35,4.77 17,6.54C16.62,8.32 15.37,9.61 14.19,9.43C13,9.25 12.35,7.67 12.72,5.9C13.08,4.12 14.33,2.83 15.5,3M3,7.6C4.14,7.11 5.69,8 6.5,9.55C7.26,11.13 7,12.79 5.87,13.28C4.74,13.77 3.2,12.89 2.41,11.32C1.62,9.75 1.9,8.08 3,7.6M21,7.6C22.1,8.08 22.38,9.75 21.59,11.32C20.8,12.89 19.26,13.77 18.13,13.28C17,12.79 16.74,11.13 17.5,9.55C18.31,8 19.86,7.11 21,7.6Z" /></g><g id="pen"><path d="M20.71,7.04C20.37,7.38 20.04,7.71 20.03,8.04C20,8.36 20.34,8.69 20.66,9C21.14,9.5 21.61,9.95 21.59,10.44C21.57,10.93 21.06,11.44 20.55,11.94L16.42,16.08L15,14.66L19.25,10.42L18.29,9.46L16.87,10.87L13.12,7.12L16.96,3.29C17.35,2.9 18,2.9 18.37,3.29L20.71,5.63C21.1,6 21.1,6.65 20.71,7.04M3,17.25L12.56,7.68L16.31,11.43L6.75,21H3V17.25Z" /></g><g id="pencil"><path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z" /></g><g id="pencil-box"><path d="M19,3A2,2 0 0,1 21,5V19C21,20.11 20.1,21 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M16.7,9.35C16.92,9.14 16.92,8.79 16.7,8.58L15.42,7.3C15.21,7.08 14.86,7.08 14.65,7.3L13.65,8.3L15.7,10.35L16.7,9.35M7,14.94V17H9.06L15.12,10.94L13.06,8.88L7,14.94Z" /></g><g id="pencil-box-outline"><path d="M19,19V5H5V19H19M19,3A2,2 0 0,1 21,5V19C21,20.11 20.1,21 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M16.7,9.35L15.7,10.35L13.65,8.3L14.65,7.3C14.86,7.08 15.21,7.08 15.42,7.3L16.7,8.58C16.92,8.79 16.92,9.14 16.7,9.35M7,14.94L13.06,8.88L15.12,10.94L9.06,17H7V14.94Z" /></g><g id="pencil-circle"><path d="M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22C17.53,22 22,17.53 22,12C22,6.47 17.53,2 12,2M15.1,7.07C15.24,7.07 15.38,7.12 15.5,7.23L16.77,8.5C17,8.72 17,9.07 16.77,9.28L15.77,10.28L13.72,8.23L14.72,7.23C14.82,7.12 14.96,7.07 15.1,7.07M13.13,8.81L15.19,10.87L9.13,16.93H7.07V14.87L13.13,8.81Z" /></g><g id="pencil-lock"><path d="M5.5,2A2.5,2.5 0 0,0 3,4.5V5A1,1 0 0,0 2,6V10A1,1 0 0,0 3,11H8A1,1 0 0,0 9,10V6A1,1 0 0,0 8,5V4.5A2.5,2.5 0 0,0 5.5,2M5.5,3A1.5,1.5 0 0,1 7,4.5V5H4V4.5A1.5,1.5 0 0,1 5.5,3M19.66,3C19.4,3 19.16,3.09 18.97,3.28L17.13,5.13L20.88,8.88L22.72,7.03C23.11,6.64 23.11,6 22.72,5.63L20.38,3.28C20.18,3.09 19.91,3 19.66,3M16.06,6.19L5,17.25V21H8.75L19.81,9.94L16.06,6.19Z" /></g><g id="pencil-off"><path d="M18.66,2C18.4,2 18.16,2.09 17.97,2.28L16.13,4.13L19.88,7.88L21.72,6.03C22.11,5.64 22.11,5 21.72,4.63L19.38,2.28C19.18,2.09 18.91,2 18.66,2M3.28,4L2,5.28L8.5,11.75L4,16.25V20H7.75L12.25,15.5L18.72,22L20,20.72L13.5,14.25L9.75,10.5L3.28,4M15.06,5.19L11.03,9.22L14.78,12.97L18.81,8.94L15.06,5.19Z" /></g><g id="pentagon"><path d="M12,2.5L2,9.8L5.8,21.5H18.2L22,9.8L12,2.5Z" /></g><g id="pentagon-outline"><path d="M12,5L19.6,10.5L16.7,19.4H7.3L4.4,10.5L12,5M12,2.5L2,9.8L5.8,21.5H18.1L22,9.8L12,2.5Z" /></g><g id="percent"><path d="M7,4A3,3 0 0,1 10,7A3,3 0 0,1 7,10A3,3 0 0,1 4,7A3,3 0 0,1 7,4M17,14A3,3 0 0,1 20,17A3,3 0 0,1 17,20A3,3 0 0,1 14,17A3,3 0 0,1 17,14M20,5.41L5.41,20L4,18.59L18.59,4L20,5.41Z" /></g><g id="pharmacy"><path d="M16,14H13V17H11V14H8V12H11V9H13V12H16M21,5H18.35L19.5,1.85L17.15,1L15.69,5H3V7L5,13L3,19V21H21V19L19,13L21,7V5Z" /></g><g id="phone"><path d="M6.62,10.79C8.06,13.62 10.38,15.94 13.21,17.38L15.41,15.18C15.69,14.9 16.08,14.82 16.43,14.93C17.55,15.3 18.75,15.5 20,15.5A1,1 0 0,1 21,16.5V20A1,1 0 0,1 20,21A17,17 0 0,1 3,4A1,1 0 0,1 4,3H7.5A1,1 0 0,1 8.5,4C8.5,5.25 8.7,6.45 9.07,7.57C9.18,7.92 9.1,8.31 8.82,8.59L6.62,10.79Z" /></g><g id="phone-bluetooth"><path d="M20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.06,13.62 6.62,10.79L8.82,8.59C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5M18,7.21L18.94,8.14L18,9.08M18,2.91L18.94,3.85L18,4.79M14.71,9.5L17,7.21V11H17.5L20.35,8.14L18.21,6L20.35,3.85L17.5,1H17V4.79L14.71,2.5L14,3.21L16.79,6L14,8.79L14.71,9.5Z" /></g><g id="phone-classic"><path d="M12,3C7.46,3 3.34,4.78 0.29,7.67C0.11,7.85 0,8.1 0,8.38C0,8.66 0.11,8.91 0.29,9.09L2.77,11.57C2.95,11.75 3.2,11.86 3.5,11.86C3.75,11.86 4,11.75 4.18,11.58C4.97,10.84 5.87,10.22 6.84,9.73C7.17,9.57 7.4,9.23 7.4,8.83V5.73C8.85,5.25 10.39,5 12,5C13.59,5 15.14,5.25 16.59,5.72V8.82C16.59,9.21 16.82,9.56 17.15,9.72C18.13,10.21 19,10.84 19.82,11.57C20,11.75 20.25,11.85 20.5,11.85C20.8,11.85 21.05,11.74 21.23,11.56L23.71,9.08C23.89,8.9 24,8.65 24,8.37C24,8.09 23.88,7.85 23.7,7.67C20.65,4.78 16.53,3 12,3M9,7V10C9,10 3,15 3,18V22H21V18C21,15 15,10 15,10V7H13V9H11V7H9M12,12A4,4 0 0,1 16,16A4,4 0 0,1 12,20A4,4 0 0,1 8,16A4,4 0 0,1 12,12M12,13.5A2.5,2.5 0 0,0 9.5,16A2.5,2.5 0 0,0 12,18.5A2.5,2.5 0 0,0 14.5,16A2.5,2.5 0 0,0 12,13.5Z" /></g><g id="phone-forward"><path d="M20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.06,13.62 6.62,10.79L8.82,8.59C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5M18,11L23,6L18,1V4H14V8H18V11Z" /></g><g id="phone-hangup"><path d="M12,9C10.4,9 8.85,9.25 7.4,9.72V12.82C7.4,13.22 7.17,13.56 6.84,13.72C5.86,14.21 4.97,14.84 4.17,15.57C4,15.75 3.75,15.86 3.5,15.86C3.2,15.86 2.95,15.74 2.77,15.56L0.29,13.08C0.11,12.9 0,12.65 0,12.38C0,12.1 0.11,11.85 0.29,11.67C3.34,8.77 7.46,7 12,7C16.54,7 20.66,8.77 23.71,11.67C23.89,11.85 24,12.1 24,12.38C24,12.65 23.89,12.9 23.71,13.08L21.23,15.56C21.05,15.74 20.8,15.86 20.5,15.86C20.25,15.86 20,15.75 19.82,15.57C19.03,14.84 18.14,14.21 17.16,13.72C16.83,13.56 16.6,13.22 16.6,12.82V9.72C15.15,9.25 13.6,9 12,9Z" /></g><g id="phone-in-talk"><path d="M15,12H17A5,5 0 0,0 12,7V9A3,3 0 0,1 15,12M19,12H21C21,7 16.97,3 12,3V5C15.86,5 19,8.13 19,12M20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.06,13.62 6.62,10.79L8.82,8.59C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5Z" /></g><g id="phone-incoming"><path d="M4,3A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.17L13.21,17.37C10.38,15.93 8.06,13.62 6.62,10.78L8.82,8.57C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4M19,11V9.5H15.5L21,4L20,3L14.5,8.5V5H13V11H19Z" /></g><g id="phone-locked"><path d="M19.2,4H15.8V3.5C15.8,2.56 16.56,1.8 17.5,1.8C18.44,1.8 19.2,2.56 19.2,3.5M20,4V3.5A2.5,2.5 0 0,0 17.5,1A2.5,2.5 0 0,0 15,3.5V4A1,1 0 0,0 14,5V9A1,1 0 0,0 15,10H20A1,1 0 0,0 21,9V5A1,1 0 0,0 20,4M20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.06,13.62 6.62,10.79L8.82,8.59C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5Z" /></g><g id="phone-log"><path d="M20,15.5A1,1 0 0,1 21,16.5V20A1,1 0 0,1 20,21A17,17 0 0,1 3,4A1,1 0 0,1 4,3H7.5A1,1 0 0,1 8.5,4C8.5,5.24 8.7,6.45 9.07,7.57C9.18,7.92 9.1,8.31 8.82,8.58L6.62,10.79C8.06,13.62 10.38,15.94 13.21,17.38L15.41,15.18C15.69,14.9 16.08,14.82 16.43,14.93C17.55,15.3 18.75,15.5 20,15.5M12,3H14V5H12M15,3H21V5H15M12,6H14V8H12M15,6H21V8H15M12,9H14V11H12M15,9H21V11H15" /></g><g id="phone-minus"><path d="M4,3A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5C18.76,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.07,13.62 6.62,10.79L8.82,8.58C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.24 8.5,4A1,1 0 0,0 7.5,3M13,6V8H21V6" /></g><g id="phone-missed"><path d="M23.71,16.67C20.66,13.77 16.54,12 12,12C7.46,12 3.34,13.77 0.29,16.67C0.11,16.85 0,17.1 0,17.38C0,17.65 0.11,17.9 0.29,18.08L2.77,20.56C2.95,20.74 3.2,20.86 3.5,20.86C3.75,20.86 4,20.75 4.18,20.57C4.97,19.83 5.86,19.21 6.84,18.72C7.17,18.56 7.4,18.22 7.4,17.82V14.72C8.85,14.25 10.39,14 12,14C13.6,14 15.15,14.25 16.6,14.72V17.82C16.6,18.22 16.83,18.56 17.16,18.72C18.14,19.21 19.03,19.83 19.82,20.57C20,20.75 20.25,20.86 20.5,20.86C20.8,20.86 21.05,20.74 21.23,20.56L23.71,18.08C23.89,17.9 24,17.65 24,17.38C24,17.1 23.89,16.85 23.71,16.67M6.5,5.5L12,11L19,4L18,3L12,9L7.5,4.5H11V3H5V9H6.5V5.5Z" /></g><g id="phone-outgoing"><path d="M4,3A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.17L13.21,17.37C10.38,15.93 8.06,13.62 6.62,10.78L8.82,8.57C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4M15,3V4.5H18.5L13,10L14,11L19.5,5.5V9H21V3H15Z" /></g><g id="phone-paused"><path d="M19,10H21V3H19M20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.06,13.62 6.62,10.79L8.82,8.59C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5M17,3H15V10H17V3Z" /></g><g id="phone-plus"><path d="M4,3A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5C18.76,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.07,13.62 6.62,10.79L8.82,8.58C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.24 8.5,4A1,1 0 0,0 7.5,3M16,3V6H13V8H16V11H18V8H21V6H18V3" /></g><g id="phone-settings"><path d="M19,11H21V9H19M20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.06,13.62 6.62,10.79L8.82,8.59C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5M17,9H15V11H17M13,9H11V11H13V9Z" /></g><g id="phone-voip"><path d="M13,17V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H13M23.7,7.67C23.88,7.85 24,8.09 24,8.37C24,8.65 23.89,8.9 23.71,9.08L21.23,11.56C21.05,11.74 20.8,11.85 20.5,11.85C20.25,11.85 20,11.75 19.82,11.57C19,10.84 18.13,10.21 17.15,9.72C16.82,9.56 16.59,9.21 16.59,8.82V5.72C15.14,5.25 13.59,5 12,5C10.4,5 8.85,5.25 7.4,5.73V8.83C7.4,9.23 7.17,9.57 6.84,9.73C5.87,10.22 4.97,10.84 4.18,11.58C4,11.75 3.75,11.86 3.5,11.86C3.2,11.86 2.95,11.75 2.77,11.57L0.29,9.09C0.11,8.91 0,8.66 0,8.38C0,8.1 0.11,7.85 0.29,7.67C3.34,4.78 7.46,3 12,3C16.53,3 20.65,4.78 23.7,7.67M11,10V15H10V10H11M12,10H15V13H13V15H12V10M14,12V11H13V12H14Z" /></g><g id="pi"><path d="M4,5V7H6V19H8V7H14V16A3,3 0 0,0 17,19A3,3 0 0,0 20,16H18A1,1 0 0,1 17,17A1,1 0 0,1 16,16V7H18V5" /></g><g id="pi-box"><path d="M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M6,7H17V9H15V14A1,1 0 0,0 16,15A1,1 0 0,0 17,14H19A3,3 0 0,1 16,17A3,3 0 0,1 13,14V9H10V17H8V9H6" /></g><g id="piano"><path d="M4,3H20A2,2 0 0,1 22,5V19A2,2 0 0,1 20,21H4A2,2 0 0,1 2,19V5A2,2 0 0,1 4,3M4,5V19H8V13H6.75V5H4M9,19H15V13H13.75V5H10.25V13H9V19M16,19H20V5H17.25V13H16V19Z" /></g><g id="pig"><path d="M9.5,9A1.5,1.5 0 0,0 8,10.5A1.5,1.5 0 0,0 9.5,12A1.5,1.5 0 0,0 11,10.5A1.5,1.5 0 0,0 9.5,9M14.5,9A1.5,1.5 0 0,0 13,10.5A1.5,1.5 0 0,0 14.5,12A1.5,1.5 0 0,0 16,10.5A1.5,1.5 0 0,0 14.5,9M12,4L12.68,4.03C13.62,3.24 14.82,2.59 15.72,2.35C17.59,1.85 20.88,2.23 21.31,3.83C21.62,5 20.6,6.45 19.03,7.38C20.26,8.92 21,10.87 21,13A9,9 0 0,1 12,22A9,9 0 0,1 3,13C3,10.87 3.74,8.92 4.97,7.38C3.4,6.45 2.38,5 2.69,3.83C3.12,2.23 6.41,1.85 8.28,2.35C9.18,2.59 10.38,3.24 11.32,4.03L12,4M10,16A1,1 0 0,1 11,17A1,1 0 0,1 10,18A1,1 0 0,1 9,17A1,1 0 0,1 10,16M14,16A1,1 0 0,1 15,17A1,1 0 0,1 14,18A1,1 0 0,1 13,17A1,1 0 0,1 14,16M12,13C9.24,13 7,15.34 7,17C7,18.66 9.24,20 12,20C14.76,20 17,18.66 17,17C17,15.34 14.76,13 12,13M7.76,4.28C7.31,4.16 4.59,4.35 4.59,4.35C4.59,4.35 6.8,6.1 7.24,6.22C7.69,6.34 9.77,6.43 9.91,5.9C10.06,5.36 8.2,4.4 7.76,4.28M16.24,4.28C15.8,4.4 13.94,5.36 14.09,5.9C14.23,6.43 16.31,6.34 16.76,6.22C17.2,6.1 19.41,4.35 19.41,4.35C19.41,4.35 16.69,4.16 16.24,4.28Z" /></g><g id="pill"><path d="M4.22,11.29L11.29,4.22C13.64,1.88 17.43,1.88 19.78,4.22C22.12,6.56 22.12,10.36 19.78,12.71L12.71,19.78C10.36,22.12 6.56,22.12 4.22,19.78C1.88,17.43 1.88,13.64 4.22,11.29M5.64,12.71C4.59,13.75 4.24,15.24 4.6,16.57L10.59,10.59L14.83,14.83L18.36,11.29C19.93,9.73 19.93,7.2 18.36,5.64C16.8,4.07 14.27,4.07 12.71,5.64L5.64,12.71Z" /></g><g id="pillar"><path d="M6,5H18A1,1 0 0,1 19,6A1,1 0 0,1 18,7H6A1,1 0 0,1 5,6A1,1 0 0,1 6,5M21,2V4H3V2H21M15,8H17V22H15V8M7,8H9V22H7V8M11,8H13V22H11V8Z" /></g><g id="pin"><path d="M16,12V4H17V2H7V4H8V12L6,14V16H11.2V22H12.8V16H18V14L16,12Z" /></g><g id="pin-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L12.8,16.07V22H11.2V16H6V14L8,12V11.27L2,5.27M16,12L18,14V16H17.82L8,6.18V4H7V2H17V4H16V12Z" /></g><g id="pine-tree"><path d="M10,21V18H3L8,13H5L10,8H7L12,3L17,8H14L19,13H16L21,18H14V21H10Z" /></g><g id="pine-tree-box"><path d="M4,2H20A2,2 0 0,1 22,4V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V4A2,2 0 0,1 4,2M11,19H13V17H18L14,13H17L13,9H16L12,5L8,9H11L7,13H10L6,17H11V19Z" /></g><g id="pinterest"><path d="M13.25,17.25C12.25,17.25 11.29,16.82 10.6,16.1L9.41,20.1L9.33,20.36L9.29,20.34C9.04,20.75 8.61,21 8.12,21C7.37,21 6.75,20.38 6.75,19.62C6.75,19.56 6.76,19.5 6.77,19.44L6.75,19.43L6.81,19.21L9.12,12.26C9.12,12.26 8.87,11.5 8.87,10.42C8.87,8.27 10.03,7.62 10.95,7.62C11.88,7.62 12.73,7.95 12.73,9.26C12.73,10.94 11.61,11.8 11.61,13C11.61,13.94 12.37,14.69 13.29,14.69C16.21,14.69 17.25,12.5 17.25,10.44C17.25,7.71 14.89,5.5 12,5.5C9.1,5.5 6.75,7.71 6.75,10.44C6.75,11.28 7,12.12 7.43,12.85C7.54,13.05 7.6,13.27 7.6,13.5A1.25,1.25 0 0,1 6.35,14.75C5.91,14.75 5.5,14.5 5.27,14.13C4.6,13 4.25,11.73 4.25,10.44C4.25,6.33 7.73,3 12,3C16.27,3 19.75,6.33 19.75,10.44C19.75,13.72 17.71,17.25 13.25,17.25Z" /></g><g id="pinterest-box"><path d="M13,16.2C12.2,16.2 11.43,15.86 10.88,15.28L9.93,18.5L9.86,18.69L9.83,18.67C9.64,19 9.29,19.2 8.9,19.2C8.29,19.2 7.8,18.71 7.8,18.1C7.8,18.05 7.81,18 7.81,17.95H7.8L7.85,17.77L9.7,12.21C9.7,12.21 9.5,11.59 9.5,10.73C9.5,9 10.42,8.5 11.16,8.5C11.91,8.5 12.58,8.76 12.58,9.81C12.58,11.15 11.69,11.84 11.69,12.81C11.69,13.55 12.29,14.16 13.03,14.16C15.37,14.16 16.2,12.4 16.2,10.75C16.2,8.57 14.32,6.8 12,6.8C9.68,6.8 7.8,8.57 7.8,10.75C7.8,11.42 8,12.09 8.34,12.68C8.43,12.84 8.5,13 8.5,13.2A1,1 0 0,1 7.5,14.2C7.13,14.2 6.79,14 6.62,13.7C6.08,12.81 5.8,11.79 5.8,10.75C5.8,7.47 8.58,4.8 12,4.8C15.42,4.8 18.2,7.47 18.2,10.75C18.2,13.37 16.57,16.2 13,16.2M20,2H4C2.89,2 2,2.89 2,4V20A2,2 0 0,0 4,22H20A2,2 0 0,0 22,20V4C22,2.89 21.1,2 20,2Z" /></g><g id="pistol"><path d="M7,5H23V9H22V10H16A1,1 0 0,0 15,11V12A2,2 0 0,1 13,14H9.62C9.24,14 8.89,14.22 8.72,14.56L6.27,19.45C6.1,19.79 5.76,20 5.38,20H2C2,20 -1,20 3,14C3,14 6,10 2,10V5H3L3.5,4H6.5L7,5M14,12V11A1,1 0 0,0 13,10H12C12,10 11,11 12,12A2,2 0 0,1 10,10A1,1 0 0,0 9,11V12A1,1 0 0,0 10,13H13A1,1 0 0,0 14,12Z" /></g><g id="pizza"><path d="M12,15A2,2 0 0,1 10,13C10,11.89 10.9,11 12,11A2,2 0 0,1 14,13A2,2 0 0,1 12,15M7,7C7,5.89 7.89,5 9,5A2,2 0 0,1 11,7A2,2 0 0,1 9,9C7.89,9 7,8.1 7,7M12,2C8.43,2 5.23,3.54 3,6L12,22L21,6C18.78,3.54 15.57,2 12,2Z" /></g><g id="plane-shield"><path d="M12,1L3,5V11C3,16.55 6.84,21.74 12,23C17.16,21.74 21,16.55 21,11V5L12,1M12,5.68C12.5,5.68 12.95,6.11 12.95,6.63V10.11L18,13.26V14.53L12.95,12.95V16.42L14.21,17.37V18.32L12,17.68L9.79,18.32V17.37L11.05,16.42V12.95L6,14.53V13.26L11.05,10.11V6.63C11.05,6.11 11.5,5.68 12,5.68Z" /></g><g id="play"><path d="M8,5.14V19.14L19,12.14L8,5.14Z" /></g><g id="play-box-outline"><path d="M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M10,8V16L15,12L10,8Z" /></g><g id="play-circle"><path d="M10,16.5V7.5L16,12M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="play-circle-outline"><path d="M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M10,16.5L16,12L10,7.5V16.5Z" /></g><g id="play-pause"><path d="M3,5V19L11,12M13,19H16V5H13M18,5V19H21V5" /></g><g id="play-protected-content"><path d="M2,5V18H11V16H4V7H17V11H19V5H2M9,9V14L12.5,11.5L9,9M21.04,11.67L16.09,16.62L13.96,14.5L12.55,15.91L16.09,19.45L22.45,13.09L21.04,11.67Z" /></g><g id="playlist-check"><path d="M14,10H2V12H14V10M14,6H2V8H14V6M2,16H10V14H2V16M21.5,11.5L23,13L16,20L11.5,15.5L13,14L16,17L21.5,11.5Z" /></g><g id="playlist-minus"><path d="M2,16H10V14H2M12,14V16H22V14M14,6H2V8H14M14,10H2V12H14V10Z" /></g><g id="playlist-play"><path d="M19,9H2V11H19V9M19,5H2V7H19V5M2,15H15V13H2V15M17,13V19L22,16L17,13Z" /></g><g id="playlist-plus"><path d="M2,16H10V14H2M18,14V10H16V14H12V16H16V20H18V16H22V14M14,6H2V8H14M14,10H2V12H14V10Z" /></g><g id="playlist-remove"><path d="M2,6V8H14V6H2M2,10V12H10V10H2M14.17,10.76L12.76,12.17L15.59,15L12.76,17.83L14.17,19.24L17,16.41L19.83,19.24L21.24,17.83L18.41,15L21.24,12.17L19.83,10.76L17,13.59L14.17,10.76M2,14V16H10V14H2Z" /></g><g id="playstation"><path d="M9.5,4.27C10.88,4.53 12.9,5.14 14,5.5C16.75,6.45 17.69,7.63 17.69,10.29C17.69,12.89 16.09,13.87 14.05,12.89V8.05C14.05,7.5 13.95,6.97 13.41,6.82C13,6.69 12.76,7.07 12.76,7.63V19.73L9.5,18.69V4.27M13.37,17.62L18.62,15.75C19.22,15.54 19.31,15.24 18.83,15.08C18.34,14.92 17.47,14.97 16.87,15.18L13.37,16.41V14.45L13.58,14.38C13.58,14.38 14.59,14 16,13.87C17.43,13.71 19.17,13.89 20.53,14.4C22.07,14.89 22.25,15.61 21.86,16.1C21.46,16.6 20.5,16.95 20.5,16.95L13.37,19.5V17.62M3.5,17.42C1.93,17 1.66,16.05 2.38,15.5C3.05,15 4.18,14.65 4.18,14.65L8.86,13V14.88L5.5,16.09C4.9,16.3 4.81,16.6 5.29,16.76C5.77,16.92 6.65,16.88 7.24,16.66L8.86,16.08V17.77L8.54,17.83C6.92,18.09 5.2,18 3.5,17.42Z" /></g><g id="plex"><path d="M4,2C2.89,2 2,2.89 2,4V20C2,21.11 2.89,22 4,22H20C21.11,22 22,21.11 22,20V4C22,2.89 21.11,2 20,2H4M8.56,6H12.06L15.5,12L12.06,18H8.56L12,12L8.56,6Z" /></g><g id="plus"><path d="M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z" /></g><g id="plus-box"><path d="M17,13H13V17H11V13H7V11H11V7H13V11H17M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="plus-box-outline"><path d="M19,19V5H5V19H19M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5C3,3.89 3.9,3 5,3H19M11,7H13V11H17V13H13V17H11V13H7V11H11V7Z" /></g><g id="plus-circle"><path d="M17,13H13V17H11V13H7V11H11V7H13V11H17M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="plus-circle-multiple-outline"><path d="M16,8H14V11H11V13H14V16H16V13H19V11H16M2,12C2,9.21 3.64,6.8 6,5.68V3.5C2.5,4.76 0,8.09 0,12C0,15.91 2.5,19.24 6,20.5V18.32C3.64,17.2 2,14.79 2,12M15,3C10.04,3 6,7.04 6,12C6,16.96 10.04,21 15,21C19.96,21 24,16.96 24,12C24,7.04 19.96,3 15,3M15,19C11.14,19 8,15.86 8,12C8,8.14 11.14,5 15,5C18.86,5 22,8.14 22,12C22,15.86 18.86,19 15,19Z" /></g><g id="plus-circle-outline"><path d="M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M13,7H11V11H7V13H11V17H13V13H17V11H13V7Z" /></g><g id="plus-network"><path d="M16,11V9H13V6H11V9H8V11H11V14H13V11H16M17,3A2,2 0 0,1 19,5V15A2,2 0 0,1 17,17H13V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H7C5.89,17 5,16.1 5,15V5A2,2 0 0,1 7,3H17Z" /></g><g id="plus-one"><path d="M10,8V12H14V14H10V18H8V14H4V12H8V8H10M14.5,6.08L19,5V18H17V7.4L14.5,7.9V6.08Z" /></g><g id="plus-outline"><path d="M4,9H9V4H15V9H20V15H15V20H9V15H4V9M11,13V18H13V13H18V11H13V6H11V11H6V13H11Z" /></g><g id="pocket"><path d="M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12V4.5A2.5,2.5 0 0,1 4.5,2H19.5A2.5,2.5 0 0,1 22,4.5V12M15.88,8.25L12,12.13L8.12,8.24C7.53,7.65 6.58,7.65 6,8.24C5.41,8.82 5.41,9.77 6,10.36L10.93,15.32C11.5,15.9 12.47,15.9 13.06,15.32L18,10.37C18.59,9.78 18.59,8.83 18,8.25C17.42,7.66 16.47,7.66 15.88,8.25Z" /></g><g id="pokeball"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4C7.92,4 4.55,7.05 4.06,11H8.13C8.57,9.27 10.14,8 12,8C13.86,8 15.43,9.27 15.87,11H19.94C19.45,7.05 16.08,4 12,4M12,20C16.08,20 19.45,16.95 19.94,13H15.87C15.43,14.73 13.86,16 12,16C10.14,16 8.57,14.73 8.13,13H4.06C4.55,16.95 7.92,20 12,20M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z" /></g><g id="polaroid"><path d="M6,3H18A2,2 0 0,1 20,5V19A2,2 0 0,1 18,21H6A2,2 0 0,1 4,19V5A2,2 0 0,1 6,3M6,5V17H18V5H6Z" /></g><g id="poll"><path d="M3,22V8H7V22H3M10,22V2H14V22H10M17,22V14H21V22H17Z" /></g><g id="poll-box"><path d="M17,17H15V13H17M13,17H11V7H13M9,17H7V10H9M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="polymer"><path d="M19,4H15L7.1,16.63L4.5,12L9,4H5L0.5,12L5,20H9L16.89,7.37L19.5,12L15,20H19L23.5,12L19,4Z" /></g><g id="pool"><path d="M2,15C3.67,14.25 5.33,13.5 7,13.17V5A3,3 0 0,1 10,2C11.31,2 12.42,2.83 12.83,4H10A1,1 0 0,0 9,5V6H14V5A3,3 0 0,1 17,2C18.31,2 19.42,2.83 19.83,4H17A1,1 0 0,0 16,5V14.94C18,14.62 20,13 22,13V15C19.78,15 17.56,17 15.33,17C13.11,17 10.89,15 8.67,15C6.44,15 4.22,16 2,17V15M14,8H9V10H14V8M14,12H9V13C10.67,13.16 12.33,14.31 14,14.79V12M2,19C4.22,18 6.44,17 8.67,17C10.89,17 13.11,19 15.33,19C17.56,19 19.78,17 22,17V19C19.78,19 17.56,21 15.33,21C13.11,21 10.89,19 8.67,19C6.44,19 4.22,20 2,21V19Z" /></g><g id="popcorn"><path d="M7,22H4.75C4.75,22 4,22 3.81,20.65L2.04,3.81L2,3.5C2,2.67 2.9,2 4,2C5.1,2 6,2.67 6,3.5C6,2.67 6.9,2 8,2C9.1,2 10,2.67 10,3.5C10,2.67 10.9,2 12,2C13.09,2 14,2.66 14,3.5V3.5C14,2.67 14.9,2 16,2C17.1,2 18,2.67 18,3.5C18,2.67 18.9,2 20,2C21.1,2 22,2.67 22,3.5L21.96,3.81L20.19,20.65C20,22 19.25,22 19.25,22H17L16.5,22H13.75L10.25,22H7.5L7,22M17.85,4.93C17.55,4.39 16.84,4 16,4C15.19,4 14.36,4.36 14,4.87L13.78,20H16.66L17.85,4.93M10,4.87C9.64,4.36 8.81,4 8,4C7.16,4 6.45,4.39 6.15,4.93L7.34,20H10.22L10,4.87Z" /></g><g id="pot"><path d="M19,19A2,2 0 0,1 17,21H7A2,2 0 0,1 5,19V13H3V10H21V13H19V19M6,6H8V8H6V6M11,6H13V8H11V6M16,6H18V8H16V6M18,3H20V5H18V3M13,3H15V5H13V3M8,3H10V5H8V3Z" /></g><g id="pot-mix"><path d="M19,19A2,2 0 0,1 17,21H7A2,2 0 0,1 5,19V13H3V10H14L18,3.07L19.73,4.07L16.31,10H21V13H19V19Z" /></g><g id="pound"><path d="M5.41,21L6.12,17H2.12L2.47,15H6.47L7.53,9H3.53L3.88,7H7.88L8.59,3H10.59L9.88,7H15.88L16.59,3H18.59L17.88,7H21.88L21.53,9H17.53L16.47,15H20.47L20.12,17H16.12L15.41,21H13.41L14.12,17H8.12L7.41,21H5.41M9.53,9L8.47,15H14.47L15.53,9H9.53Z" /></g><g id="pound-box"><path d="M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M7,18H9L9.35,16H13.35L13,18H15L15.35,16H17.35L17.71,14H15.71L16.41,10H18.41L18.76,8H16.76L17.12,6H15.12L14.76,8H10.76L11.12,6H9.12L8.76,8H6.76L6.41,10H8.41L7.71,14H5.71L5.35,16H7.35L7,18M10.41,10H14.41L13.71,14H9.71L10.41,10Z" /></g><g id="power"><path d="M16.56,5.44L15.11,6.89C16.84,7.94 18,9.83 18,12A6,6 0 0,1 12,18A6,6 0 0,1 6,12C6,9.83 7.16,7.94 8.88,6.88L7.44,5.44C5.36,6.88 4,9.28 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12C20,9.28 18.64,6.88 16.56,5.44M13,3H11V13H13" /></g><g id="power-plug"><path d="M16,7V3H14V7H10V3H8V7H8C7,7 6,8 6,9V14.5L9.5,18V21H14.5V18L18,14.5V9C18,8 17,7 16,7Z" /></g><g id="power-plug-off"><path d="M8,3V6.18C11.1,9.23 14.1,12.3 17.2,15.3C17.4,15 17.8,14.8 18,14.4V8.8C18,7.68 16.7,7.16 16,6.84V3H14V7H10V3H8M3.28,4C2.85,4.42 2.43,4.85 2,5.27L6,9.27V14.5C7.17,15.65 8.33,16.83 9.5,18V21H14.5V18C14.72,17.73 14.95,18.33 15.17,18.44C16.37,19.64 17.47,20.84 18.67,22.04C19.17,21.64 19.57,21.14 19.97,20.74C14.37,15.14 8.77,9.64 3.27,4.04L3.28,4Z" /></g><g id="power-settings"><path d="M15,24H17V22H15M16.56,4.44L15.11,5.89C16.84,6.94 18,8.83 18,11A6,6 0 0,1 12,17A6,6 0 0,1 6,11C6,8.83 7.16,6.94 8.88,5.88L7.44,4.44C5.36,5.88 4,8.28 4,11A8,8 0 0,0 12,19A8,8 0 0,0 20,11C20,8.28 18.64,5.88 16.56,4.44M13,2H11V12H13M11,24H13V22H11M7,24H9V22H7V24Z" /></g><g id="power-socket"><path d="M15,15H17V11H15M7,15H9V11H7M11,13H13V9H11M8.83,7H15.2L19,10.8V17H5V10.8M8,5L3,10V19H21V10L16,5H8Z" /></g><g id="prescription"><path d="M4,4V10L4,14H6V10H8L13.41,15.41L9.83,19L11.24,20.41L14.83,16.83L18.41,20.41L19.82,19L16.24,15.41L19.82,11.83L18.41,10.41L14.83,14L10.83,10H11A3,3 0 0,0 14,7A3,3 0 0,0 11,4H4M6,6H11A1,1 0 0,1 12,7A1,1 0 0,1 11,8H6V6Z" /></g><g id="presentation"><path d="M2,3H10A2,2 0 0,1 12,1A2,2 0 0,1 14,3H22V5H21V16H15.25L17,22H15L13.25,16H10.75L9,22H7L8.75,16H3V5H2V3M5,5V14H19V5H5Z" /></g><g id="presentation-play"><path d="M2,3H10A2,2 0 0,1 12,1A2,2 0 0,1 14,3H22V5H21V16H15.25L17,22H15L13.25,16H10.75L9,22H7L8.75,16H3V5H2V3M5,5V14H19V5H5M11.85,11.85C11.76,11.94 11.64,12 11.5,12A0.5,0.5 0 0,1 11,11.5V7.5A0.5,0.5 0 0,1 11.5,7C11.64,7 11.76,7.06 11.85,7.15L13.25,8.54C13.57,8.86 13.89,9.18 13.89,9.5C13.89,9.82 13.57,10.14 13.25,10.46L11.85,11.85Z" /></g><g id="printer"><path d="M18,3H6V7H18M19,12A1,1 0 0,1 18,11A1,1 0 0,1 19,10A1,1 0 0,1 20,11A1,1 0 0,1 19,12M16,19H8V14H16M19,8H5A3,3 0 0,0 2,11V17H6V21H18V17H22V11A3,3 0 0,0 19,8Z" /></g><g id="printer-3d"><path d="M19,6A1,1 0 0,0 20,5A1,1 0 0,0 19,4A1,1 0 0,0 18,5A1,1 0 0,0 19,6M19,2A3,3 0 0,1 22,5V11H18V7H6V11H2V5A3,3 0 0,1 5,2H19M18,18.25C18,18.63 17.79,18.96 17.47,19.13L12.57,21.82C12.4,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L6.53,19.13C6.21,18.96 6,18.63 6,18.25V13C6,12.62 6.21,12.29 6.53,12.12L11.43,9.68C11.59,9.56 11.79,9.5 12,9.5C12.21,9.5 12.4,9.56 12.57,9.68L17.47,12.12C17.79,12.29 18,12.62 18,13V18.25M12,11.65L9.04,13L12,14.6L14.96,13L12,11.65M8,17.66L11,19.29V16.33L8,14.71V17.66M16,17.66V14.71L13,16.33V19.29L16,17.66Z" /></g><g id="printer-alert"><path d="M14,4V8H6V4H14M15,13A1,1 0 0,0 16,12A1,1 0 0,0 15,11A1,1 0 0,0 14,12A1,1 0 0,0 15,13M13,19V15H7V19H13M15,9A3,3 0 0,1 18,12V17H15V21H5V17H2V12A3,3 0 0,1 5,9H15M22,7V12H20V7H22M22,14V16H20V14H22Z" /></g><g id="printer-settings"><path d="M18,2V6H6V2H18M19,11A1,1 0 0,0 20,10A1,1 0 0,0 19,9A1,1 0 0,0 18,10A1,1 0 0,0 19,11M16,18V13H8V18H16M19,7A3,3 0 0,1 22,10V16H18V20H6V16H2V10A3,3 0 0,1 5,7H19M15,24V22H17V24H15M11,24V22H13V24H11M7,24V22H9V24H7Z" /></g><g id="priority-high"><path d="M14,19H22V17H14V19M14,13.5H22V11.5H14V13.5M14,8H22V6H14V8M2,12.5C2,8.92 4.92,6 8.5,6H9V4L12,7L9,10V8H8.5C6,8 4,10 4,12.5C4,15 6,17 8.5,17H12V19H8.5C4.92,19 2,16.08 2,12.5Z" /></g><g id="priority-low"><path d="M14,5H22V7H14V5M14,10.5H22V12.5H14V10.5M14,16H22V18H14V16M2,11.5C2,15.08 4.92,18 8.5,18H9V20L12,17L9,14V16H8.5C6,16 4,14 4,11.5C4,9 6,7 8.5,7H12V5H8.5C4.92,5 2,7.92 2,11.5Z" /></g><g id="professional-hexagon"><path d="M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M5,9V15H6.25V13H7A2,2 0 0,0 9,11A2,2 0 0,0 7,9H5M6.25,12V10H6.75A1,1 0 0,1 7.75,11A1,1 0 0,1 6.75,12H6.25M9.75,9V15H11V13H11.75L12.41,15H13.73L12.94,12.61C13.43,12.25 13.75,11.66 13.75,11A2,2 0 0,0 11.75,9H9.75M11,12V10H11.5A1,1 0 0,1 12.5,11A1,1 0 0,1 11.5,12H11M17,9C15.62,9 14.5,10.34 14.5,12C14.5,13.66 15.62,15 17,15C18.38,15 19.5,13.66 19.5,12C19.5,10.34 18.38,9 17,9M17,10.25C17.76,10.25 18.38,11.03 18.38,12C18.38,12.97 17.76,13.75 17,13.75C16.24,13.75 15.63,12.97 15.63,12C15.63,11.03 16.24,10.25 17,10.25Z" /></g><g id="projector"><path d="M16,6C14.87,6 13.77,6.35 12.84,7H4C2.89,7 2,7.89 2,9V15C2,16.11 2.89,17 4,17H5V18A1,1 0 0,0 6,19H8A1,1 0 0,0 9,18V17H15V18A1,1 0 0,0 16,19H18A1,1 0 0,0 19,18V17H20C21.11,17 22,16.11 22,15V9C22,7.89 21.11,7 20,7H19.15C18.23,6.35 17.13,6 16,6M16,7.5A3.5,3.5 0 0,1 19.5,11A3.5,3.5 0 0,1 16,14.5A3.5,3.5 0 0,1 12.5,11A3.5,3.5 0 0,1 16,7.5M4,9H8V10H4V9M16,9A2,2 0 0,0 14,11A2,2 0 0,0 16,13A2,2 0 0,0 18,11A2,2 0 0,0 16,9M4,11H8V12H4V11M4,13H8V14H4V13Z" /></g><g id="projector-screen"><path d="M4,2A1,1 0 0,0 3,3V4A1,1 0 0,0 4,5H5V14H11V16.59L6.79,20.79L8.21,22.21L11,19.41V22H13V19.41L15.79,22.21L17.21,20.79L13,16.59V14H19V5H20A1,1 0 0,0 21,4V3A1,1 0 0,0 20,2H4Z" /></g><g id="publish"><path d="M5,4V6H19V4H5M5,14H9V20H15V14H19L12,7L5,14Z" /></g><g id="pulse"><path d="M3,13H5.79L10.1,4.79L11.28,13.75L14.5,9.66L17.83,13H21V15H17L14.67,12.67L9.92,18.73L8.94,11.31L7,15H3V13Z" /></g><g id="puzzle"><path d="M20.5,11H19V7C19,5.89 18.1,5 17,5H13V3.5A2.5,2.5 0 0,0 10.5,1A2.5,2.5 0 0,0 8,3.5V5H4A2,2 0 0,0 2,7V10.8H3.5C5,10.8 6.2,12 6.2,13.5C6.2,15 5,16.2 3.5,16.2H2V20A2,2 0 0,0 4,22H7.8V20.5C7.8,19 9,17.8 10.5,17.8C12,17.8 13.2,19 13.2,20.5V22H17A2,2 0 0,0 19,20V16H20.5A2.5,2.5 0 0,0 23,13.5A2.5,2.5 0 0,0 20.5,11Z" /></g><g id="qqchat"><path d="M3.18,13.54C3.76,12.16 4.57,11.14 5.17,10.92C5.16,10.12 5.31,9.62 5.56,9.22C5.56,9.19 5.5,8.86 5.72,8.45C5.87,4.85 8.21,2 12,2C15.79,2 18.13,4.85 18.28,8.45C18.5,8.86 18.44,9.19 18.44,9.22C18.69,9.62 18.84,10.12 18.83,10.92C19.43,11.14 20.24,12.16 20.82,13.55C21.57,15.31 21.69,17 21.09,17.3C20.68,17.5 20.03,17 19.42,16.12C19.18,17.1 18.58,18 17.73,18.71C18.63,19.04 19.21,19.58 19.21,20.19C19.21,21.19 17.63,22 15.69,22C13.93,22 12.5,21.34 12.21,20.5H11.79C11.5,21.34 10.07,22 8.31,22C6.37,22 4.79,21.19 4.79,20.19C4.79,19.58 5.37,19.04 6.27,18.71C5.42,18 4.82,17.1 4.58,16.12C3.97,17 3.32,17.5 2.91,17.3C2.31,17 2.43,15.31 3.18,13.54Z" /></g><g id="qrcode"><path d="M3,11H5V13H3V11M11,5H13V9H11V5M9,11H13V15H11V13H9V11M15,11H17V13H19V11H21V13H19V15H21V19H19V21H17V19H13V21H11V17H15V15H17V13H15V11M19,19V15H17V19H19M15,3H21V9H15V3M17,5V7H19V5H17M3,3H9V9H3V3M5,5V7H7V5H5M3,15H9V21H3V15M5,17V19H7V17H5Z" /></g><g id="qrcode-scan"><path d="M4,4H10V10H4V4M20,4V10H14V4H20M14,15H16V13H14V11H16V13H18V11H20V13H18V15H20V18H18V20H16V18H13V20H11V16H14V15M16,15V18H18V15H16M4,20V14H10V20H4M6,6V8H8V6H6M16,6V8H18V6H16M6,16V18H8V16H6M4,11H6V13H4V11M9,11H13V15H11V13H9V11M11,6H13V10H11V6M2,2V6H0V2A2,2 0 0,1 2,0H6V2H2M22,0A2,2 0 0,1 24,2V6H22V2H18V0H22M2,18V22H6V24H2A2,2 0 0,1 0,22V18H2M22,22V18H24V22A2,2 0 0,1 22,24H18V22H22Z" /></g><g id="quadcopter"><path d="M5.5,1C8,1 10,3 10,5.5C10,6.38 9.75,7.2 9.31,7.9L9.41,8H14.59L14.69,7.9C14.25,7.2 14,6.38 14,5.5C14,3 16,1 18.5,1C21,1 23,3 23,5.5C23,8 21,10 18.5,10C17.62,10 16.8,9.75 16.1,9.31L15,10.41V13.59L16.1,14.69C16.8,14.25 17.62,14 18.5,14C21,14 23,16 23,18.5C23,21 21,23 18.5,23C16,23 14,21 14,18.5C14,17.62 14.25,16.8 14.69,16.1L14.59,16H9.41L9.31,16.1C9.75,16.8 10,17.62 10,18.5C10,21 8,23 5.5,23C3,23 1,21 1,18.5C1,16 3,14 5.5,14C6.38,14 7.2,14.25 7.9,14.69L9,13.59V10.41L7.9,9.31C7.2,9.75 6.38,10 5.5,10C3,10 1,8 1,5.5C1,3 3,1 5.5,1M5.5,3A2.5,2.5 0 0,0 3,5.5A2.5,2.5 0 0,0 5.5,8A2.5,2.5 0 0,0 8,5.5A2.5,2.5 0 0,0 5.5,3M5.5,16A2.5,2.5 0 0,0 3,18.5A2.5,2.5 0 0,0 5.5,21A2.5,2.5 0 0,0 8,18.5A2.5,2.5 0 0,0 5.5,16M18.5,3A2.5,2.5 0 0,0 16,5.5A2.5,2.5 0 0,0 18.5,8A2.5,2.5 0 0,0 21,5.5A2.5,2.5 0 0,0 18.5,3M18.5,16A2.5,2.5 0 0,0 16,18.5A2.5,2.5 0 0,0 18.5,21A2.5,2.5 0 0,0 21,18.5A2.5,2.5 0 0,0 18.5,16M3.91,17.25L5.04,17.91C5.17,17.81 5.33,17.75 5.5,17.75A0.75,0.75 0 0,1 6.25,18.5L6.24,18.6L7.37,19.25L7.09,19.75L5.96,19.09C5.83,19.19 5.67,19.25 5.5,19.25A0.75,0.75 0 0,1 4.75,18.5L4.76,18.4L3.63,17.75L3.91,17.25M3.63,6.25L4.76,5.6L4.75,5.5A0.75,0.75 0 0,1 5.5,4.75C5.67,4.75 5.83,4.81 5.96,4.91L7.09,4.25L7.37,4.75L6.24,5.4L6.25,5.5A0.75,0.75 0 0,1 5.5,6.25C5.33,6.25 5.17,6.19 5.04,6.09L3.91,6.75L3.63,6.25M16.91,4.25L18.04,4.91C18.17,4.81 18.33,4.75 18.5,4.75A0.75,0.75 0 0,1 19.25,5.5L19.24,5.6L20.37,6.25L20.09,6.75L18.96,6.09C18.83,6.19 18.67,6.25 18.5,6.25A0.75,0.75 0 0,1 17.75,5.5L17.76,5.4L16.63,4.75L16.91,4.25M16.63,19.25L17.75,18.5A0.75,0.75 0 0,1 18.5,17.75C18.67,17.75 18.83,17.81 18.96,17.91L20.09,17.25L20.37,17.75L19.25,18.5A0.75,0.75 0 0,1 18.5,19.25C18.33,19.25 18.17,19.19 18.04,19.09L16.91,19.75L16.63,19.25Z" /></g><g id="quality-high"><path d="M14.5,13.5H16.5V10.5H14.5M18,14A1,1 0 0,1 17,15H16.25V16.5H14.75V15H14A1,1 0 0,1 13,14V10A1,1 0 0,1 14,9H17A1,1 0 0,1 18,10M11,15H9.5V13H7.5V15H6V9H7.5V11.5H9.5V9H11M19,4H5C3.89,4 3,4.89 3,6V18A2,2 0 0,0 5,20H19A2,2 0 0,0 21,18V6C21,4.89 20.1,4 19,4Z" /></g><g id="quicktime"><path d="M12,3A9,9 0 0,1 21,12C21,13.76 20.5,15.4 19.62,16.79L21,18.17V20A1,1 0 0,1 20,21H18.18L16.79,19.62C15.41,20.5 13.76,21 12,21A9,9 0 0,1 3,12A9,9 0 0,1 12,3M12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17C12.65,17 13.26,16.88 13.83,16.65L10.95,13.77C10.17,13 10.17,11.72 10.95,10.94C11.73,10.16 13,10.16 13.78,10.94L16.66,13.82C16.88,13.26 17,12.64 17,12A5,5 0 0,0 12,7Z" /></g><g id="radar"><path d="M19.07,4.93L17.66,6.34C19.1,7.79 20,9.79 20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12C4,7.92 7.05,4.56 11,4.07V6.09C8.16,6.57 6,9.03 6,12A6,6 0 0,0 12,18A6,6 0 0,0 18,12C18,10.34 17.33,8.84 16.24,7.76L14.83,9.17C15.55,9.9 16,10.9 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12C8,10.14 9.28,8.59 11,8.14V10.28C10.4,10.63 10,11.26 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12C14,11.26 13.6,10.62 13,10.28V2H12A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,9.24 20.88,6.74 19.07,4.93Z" /></g><g id="radiator"><path d="M7.95,3L6.53,5.19L7.95,7.4H7.94L5.95,10.5L4.22,9.6L5.64,7.39L4.22,5.19L6.22,2.09L7.95,3M13.95,2.89L12.53,5.1L13.95,7.3L13.94,7.31L11.95,10.4L10.22,9.5L11.64,7.3L10.22,5.1L12.22,2L13.95,2.89M20,2.89L18.56,5.1L20,7.3V7.31L18,10.4L16.25,9.5L17.67,7.3L16.25,5.1L18.25,2L20,2.89M2,22V14A2,2 0 0,1 4,12H20A2,2 0 0,1 22,14V22H20V20H4V22H2M6,14A1,1 0 0,0 5,15V17A1,1 0 0,0 6,18A1,1 0 0,0 7,17V15A1,1 0 0,0 6,14M10,14A1,1 0 0,0 9,15V17A1,1 0 0,0 10,18A1,1 0 0,0 11,17V15A1,1 0 0,0 10,14M14,14A1,1 0 0,0 13,15V17A1,1 0 0,0 14,18A1,1 0 0,0 15,17V15A1,1 0 0,0 14,14M18,14A1,1 0 0,0 17,15V17A1,1 0 0,0 18,18A1,1 0 0,0 19,17V15A1,1 0 0,0 18,14Z" /></g><g id="radio"><path d="M20,6A2,2 0 0,1 22,8V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V8C2,7.15 2.53,6.42 3.28,6.13L15.71,1L16.47,2.83L8.83,6H20M20,8H4V12H16V10H18V12H20V8M7,14A3,3 0 0,0 4,17A3,3 0 0,0 7,20A3,3 0 0,0 10,17A3,3 0 0,0 7,14Z" /></g><g id="radio-handheld"><path d="M9,2A1,1 0 0,0 8,3C8,8.67 8,14.33 8,20C8,21.11 8.89,22 10,22H15C16.11,22 17,21.11 17,20V9C17,7.89 16.11,7 15,7H10V3A1,1 0 0,0 9,2M10,9H15V13H10V9Z" /></g><g id="radio-tower"><path d="M12,10A2,2 0 0,1 14,12C14,12.5 13.82,12.94 13.53,13.29L16.7,22H14.57L12,14.93L9.43,22H7.3L10.47,13.29C10.18,12.94 10,12.5 10,12A2,2 0 0,1 12,10M12,8A4,4 0 0,0 8,12C8,12.5 8.1,13 8.28,13.46L7.4,15.86C6.53,14.81 6,13.47 6,12A6,6 0 0,1 12,6A6,6 0 0,1 18,12C18,13.47 17.47,14.81 16.6,15.86L15.72,13.46C15.9,13 16,12.5 16,12A4,4 0 0,0 12,8M12,4A8,8 0 0,0 4,12C4,14.36 5,16.5 6.64,17.94L5.92,19.94C3.54,18.11 2,15.23 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12C22,15.23 20.46,18.11 18.08,19.94L17.36,17.94C19,16.5 20,14.36 20,12A8,8 0 0,0 12,4Z" /></g><g id="radioactive"><path d="M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M12,22C10.05,22 8.22,21.44 6.69,20.47L10,15.47C10.6,15.81 11.28,16 12,16C12.72,16 13.4,15.81 14,15.47L17.31,20.47C15.78,21.44 13.95,22 12,22M2,12C2,7.86 4.5,4.3 8.11,2.78L10.34,8.36C8.96,9 8,10.38 8,12H2M16,12C16,10.38 15.04,9 13.66,8.36L15.89,2.78C19.5,4.3 22,7.86 22,12H16Z" /></g><g id="radiobox-blank"><path d="M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="radiobox-marked"><path d="M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17A5,5 0 0,0 17,12A5,5 0 0,0 12,7Z" /></g><g id="raspberrypi"><path d="M20,8H22V10H20V8M4,5H20A2,2 0 0,1 22,7H19V9H5V13H8V16H19V17H22A2,2 0 0,1 20,19H16V20H14V19H11V20H7V19H4A2,2 0 0,1 2,17V7A2,2 0 0,1 4,5M19,15H9V10H19V11H22V13H19V15M13,12V14H15V12H13M5,6V8H6V6H5M7,6V8H8V6H7M9,6V8H10V6H9M11,6V8H12V6H11M13,6V8H14V6H13M15,6V8H16V6H15M20,14H22V16H20V14Z" /></g><g id="ray-end"><path d="M20,9C18.69,9 17.58,9.83 17.17,11H2V13H17.17C17.58,14.17 18.69,15 20,15A3,3 0 0,0 23,12A3,3 0 0,0 20,9Z" /></g><g id="ray-end-arrow"><path d="M1,12L5,16V13H17.17C17.58,14.17 18.69,15 20,15A3,3 0 0,0 23,12A3,3 0 0,0 20,9C18.69,9 17.58,9.83 17.17,11H5V8L1,12Z" /></g><g id="ray-start"><path d="M4,9C5.31,9 6.42,9.83 6.83,11H22V13H6.83C6.42,14.17 5.31,15 4,15A3,3 0 0,1 1,12A3,3 0 0,1 4,9Z" /></g><g id="ray-start-arrow"><path d="M23,12L19,16V13H6.83C6.42,14.17 5.31,15 4,15A3,3 0 0,1 1,12A3,3 0 0,1 4,9C5.31,9 6.42,9.83 6.83,11H19V8L23,12Z" /></g><g id="ray-start-end"><path d="M4,9C5.31,9 6.42,9.83 6.83,11H17.17C17.58,9.83 18.69,9 20,9A3,3 0 0,1 23,12A3,3 0 0,1 20,15C18.69,15 17.58,14.17 17.17,13H6.83C6.42,14.17 5.31,15 4,15A3,3 0 0,1 1,12A3,3 0 0,1 4,9Z" /></g><g id="ray-vertex"><path d="M2,11H9.17C9.58,9.83 10.69,9 12,9C13.31,9 14.42,9.83 14.83,11H22V13H14.83C14.42,14.17 13.31,15 12,15C10.69,15 9.58,14.17 9.17,13H2V11Z" /></g><g id="rdio"><path d="M19.29,10.84C19.35,11.22 19.38,11.61 19.38,12C19.38,16.61 15.5,20.35 10.68,20.35C5.87,20.35 2,16.61 2,12C2,7.39 5.87,3.65 10.68,3.65C11.62,3.65 12.53,3.79 13.38,4.06V9.11C13.38,9.11 10.79,7.69 8.47,9.35C6.15,11 6.59,12.76 6.59,12.76C6.59,12.76 6.7,15.5 9.97,15.5C13.62,15.5 14.66,12.19 14.66,12.19V4.58C15.36,4.93 16,5.36 16.65,5.85C18.2,6.82 19.82,7.44 21.67,7.39C21.67,7.39 22,7.31 22,8C22,8.4 21.88,8.83 21.5,9.25C21.5,9.25 20.78,10.33 19.29,10.84Z" /></g><g id="react"><path d="M12,10.11C13.03,10.11 13.87,10.95 13.87,12C13.87,13 13.03,13.85 12,13.85C10.97,13.85 10.13,13 10.13,12C10.13,10.95 10.97,10.11 12,10.11M7.37,20C8,20.38 9.38,19.8 10.97,18.3C10.45,17.71 9.94,17.07 9.46,16.4C8.64,16.32 7.83,16.2 7.06,16.04C6.55,18.18 6.74,19.65 7.37,20M8.08,14.26L7.79,13.75C7.68,14.04 7.57,14.33 7.5,14.61C7.77,14.67 8.07,14.72 8.38,14.77C8.28,14.6 8.18,14.43 8.08,14.26M14.62,13.5L15.43,12L14.62,10.5C14.32,9.97 14,9.5 13.71,9.03C13.17,9 12.6,9 12,9C11.4,9 10.83,9 10.29,9.03C10,9.5 9.68,9.97 9.38,10.5L8.57,12L9.38,13.5C9.68,14.03 10,14.5 10.29,14.97C10.83,15 11.4,15 12,15C12.6,15 13.17,15 13.71,14.97C14,14.5 14.32,14.03 14.62,13.5M12,6.78C11.81,7 11.61,7.23 11.41,7.5C11.61,7.5 11.8,7.5 12,7.5C12.2,7.5 12.39,7.5 12.59,7.5C12.39,7.23 12.19,7 12,6.78M12,17.22C12.19,17 12.39,16.77 12.59,16.5C12.39,16.5 12.2,16.5 12,16.5C11.8,16.5 11.61,16.5 11.41,16.5C11.61,16.77 11.81,17 12,17.22M16.62,4C16,3.62 14.62,4.2 13.03,5.7C13.55,6.29 14.06,6.93 14.54,7.6C15.36,7.68 16.17,7.8 16.94,7.96C17.45,5.82 17.26,4.35 16.62,4M15.92,9.74L16.21,10.25C16.32,9.96 16.43,9.67 16.5,9.39C16.23,9.33 15.93,9.28 15.62,9.23C15.72,9.4 15.82,9.57 15.92,9.74M17.37,2.69C18.84,3.53 19,5.74 18.38,8.32C20.92,9.07 22.75,10.31 22.75,12C22.75,13.69 20.92,14.93 18.38,15.68C19,18.26 18.84,20.47 17.37,21.31C15.91,22.15 13.92,21.19 12,19.36C10.08,21.19 8.09,22.15 6.62,21.31C5.16,20.47 5,18.26 5.62,15.68C3.08,14.93 1.25,13.69 1.25,12C1.25,10.31 3.08,9.07 5.62,8.32C5,5.74 5.16,3.53 6.62,2.69C8.09,1.85 10.08,2.81 12,4.64C13.92,2.81 15.91,1.85 17.37,2.69M17.08,12C17.42,12.75 17.72,13.5 17.97,14.26C20.07,13.63 21.25,12.73 21.25,12C21.25,11.27 20.07,10.37 17.97,9.74C17.72,10.5 17.42,11.25 17.08,12M6.92,12C6.58,11.25 6.28,10.5 6.03,9.74C3.93,10.37 2.75,11.27 2.75,12C2.75,12.73 3.93,13.63 6.03,14.26C6.28,13.5 6.58,12.75 6.92,12M15.92,14.26C15.82,14.43 15.72,14.6 15.62,14.77C15.93,14.72 16.23,14.67 16.5,14.61C16.43,14.33 16.32,14.04 16.21,13.75L15.92,14.26M13.03,18.3C14.62,19.8 16,20.38 16.62,20C17.26,19.65 17.45,18.18 16.94,16.04C16.17,16.2 15.36,16.32 14.54,16.4C14.06,17.07 13.55,17.71 13.03,18.3M8.08,9.74C8.18,9.57 8.28,9.4 8.38,9.23C8.07,9.28 7.77,9.33 7.5,9.39C7.57,9.67 7.68,9.96 7.79,10.25L8.08,9.74M10.97,5.7C9.38,4.2 8,3.62 7.37,4C6.74,4.35 6.55,5.82 7.06,7.96C7.83,7.8 8.64,7.68 9.46,7.6C9.94,6.93 10.45,6.29 10.97,5.7Z" /></g><g id="read"><path d="M21.59,11.59L23,13L13.5,22.5L8.42,17.41L9.83,16L13.5,19.68L21.59,11.59M4,16V3H6L9,3A4,4 0 0,1 13,7C13,8.54 12.13,9.88 10.85,10.55L14,16H12L9.11,11H6V16H4M6,9H9A2,2 0 0,0 11,7A2,2 0 0,0 9,5H6V9Z" /></g><g id="readability"><path d="M12,4C15.15,4 17.81,6.38 18.69,9.65C18,10.15 17.58,10.93 17.5,11.81L17.32,13.91C15.55,13 13.78,12.17 12,12.17C10.23,12.17 8.45,13 6.68,13.91L6.5,11.77C6.42,10.89 6,10.12 5.32,9.61C6.21,6.36 8.86,4 12,4M17.05,17H6.95L6.73,14.47C8.5,13.59 10.24,12.75 12,12.75C13.76,12.75 15.5,13.59 17.28,14.47L17.05,17M5,19V18L3.72,14.5H3.5A2.5,2.5 0 0,1 1,12A2.5,2.5 0 0,1 3.5,9.5C4.82,9.5 5.89,10.5 6,11.81L6.5,18V19H5M19,19H17.5V18L18,11.81C18.11,10.5 19.18,9.5 20.5,9.5A2.5,2.5 0 0,1 23,12A2.5,2.5 0 0,1 20.5,14.5H20.28L19,18V19Z" /></g><g id="receipt"><path d="M3,22L4.5,20.5L6,22L7.5,20.5L9,22L10.5,20.5L12,22L13.5,20.5L15,22L16.5,20.5L18,22L19.5,20.5L21,22V2L19.5,3.5L18,2L16.5,3.5L15,2L13.5,3.5L12,2L10.5,3.5L9,2L7.5,3.5L6,2L4.5,3.5L3,2M18,9H6V7H18M18,13H6V11H18M18,17H6V15H18V17Z" /></g><g id="record"><path d="M19,12C19,15.86 15.86,19 12,19C8.14,19 5,15.86 5,12C5,8.14 8.14,5 12,5C15.86,5 19,8.14 19,12Z" /></g><g id="record-rec"><path d="M12.5,5A7.5,7.5 0 0,0 5,12.5A7.5,7.5 0 0,0 12.5,20A7.5,7.5 0 0,0 20,12.5A7.5,7.5 0 0,0 12.5,5M7,10H9A1,1 0 0,1 10,11V12C10,12.5 9.62,12.9 9.14,12.97L10.31,15H9.15L8,13V15H7M12,10H14V11H12V12H14V13H12V14H14V15H12A1,1 0 0,1 11,14V11A1,1 0 0,1 12,10M16,10H18V11H16V14H18V15H16A1,1 0 0,1 15,14V11A1,1 0 0,1 16,10M8,11V12H9V11" /></g><g id="recycle"><path d="M21.82,15.42L19.32,19.75C18.83,20.61 17.92,21.06 17,21H15V23L12.5,18.5L15,14V16H17.82L15.6,12.15L19.93,9.65L21.73,12.77C22.25,13.54 22.32,14.57 21.82,15.42M9.21,3.06H14.21C15.19,3.06 16.04,3.63 16.45,4.45L17.45,6.19L19.18,5.19L16.54,9.6L11.39,9.69L13.12,8.69L11.71,6.24L9.5,10.09L5.16,7.59L6.96,4.47C7.37,3.64 8.22,3.06 9.21,3.06M5.05,19.76L2.55,15.43C2.06,14.58 2.13,13.56 2.64,12.79L3.64,11.06L1.91,10.06L7.05,10.14L9.7,14.56L7.97,13.56L6.56,16H11V21H7.4C6.47,21.07 5.55,20.61 5.05,19.76Z" /></g><g id="reddit"><path d="M22,11.5C22,10.1 20.9,9 19.5,9C18.9,9 18.3,9.2 17.9,9.6C16.4,8.7 14.6,8.1 12.5,8L13.6,4L17,5A2,2 0 0,0 19,7A2,2 0 0,0 21,5A2,2 0 0,0 19,3C18.3,3 17.6,3.4 17.3,4L13.3,3C13,2.9 12.8,3.1 12.7,3.4L11.5,8C9.5,8.1 7.6,8.7 6.1,9.6C5.7,9.2 5.1,9 4.5,9C3.1,9 2,10.1 2,11.5C2,12.4 2.4,13.1 3.1,13.6L3,14.5C3,18.1 7,21 12,21C17,21 21,18.1 21,14.5L20.9,13.6C21.6,13.1 22,12.4 22,11.5M9,11.8C9.7,11.8 10.2,12.4 10.2,13C10.2,13.6 9.7,14.2 9,14.2C8.3,14.2 7.8,13.7 7.8,13C7.8,12.3 8.3,11.8 9,11.8M15.8,17.2C14,18.3 10,18.3 8.2,17.2C8,17 7.9,16.7 8.1,16.5C8.3,16.3 8.6,16.2 8.8,16.4C10,17.3 14,17.3 15.2,16.4C15.4,16.2 15.7,16.3 15.9,16.5C16.1,16.7 16,17 15.8,17.2M15,14.2C14.3,14.2 13.8,13.6 13.8,13C13.8,12.3 14.4,11.8 15,11.8C15.7,11.8 16.2,12.4 16.2,13C16.2,13.7 15.7,14.2 15,14.2Z" /></g><g id="redo"><path d="M18.4,10.6C16.55,9 14.15,8 11.5,8C6.85,8 2.92,11.03 1.54,15.22L3.9,16C4.95,12.81 7.95,10.5 11.5,10.5C13.45,10.5 15.23,11.22 16.62,12.38L13,16H22V7L18.4,10.6Z" /></g><g id="redo-variant"><path d="M10.5,7A6.5,6.5 0 0,0 4,13.5A6.5,6.5 0 0,0 10.5,20H14V18H10.5C8,18 6,16 6,13.5C6,11 8,9 10.5,9H16.17L13.09,12.09L14.5,13.5L20,8L14.5,2.5L13.08,3.91L16.17,7H10.5M18,18H16V20H18V18Z" /></g><g id="refresh"><path d="M17.65,6.35C16.2,4.9 14.21,4 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20C15.73,20 18.84,17.45 19.73,14H17.65C16.83,16.33 14.61,18 12,18A6,6 0 0,1 6,12A6,6 0 0,1 12,6C13.66,6 15.14,6.69 16.22,7.78L13,11H20V4L17.65,6.35Z" /></g><g id="regex"><path d="M16,16.92C15.67,16.97 15.34,17 15,17C14.66,17 14.33,16.97 14,16.92V13.41L11.5,15.89C11,15.5 10.5,15 10.11,14.5L12.59,12H9.08C9.03,11.67 9,11.34 9,11C9,10.66 9.03,10.33 9.08,10H12.59L10.11,7.5C10.3,7.25 10.5,7 10.76,6.76V6.76C11,6.5 11.25,6.3 11.5,6.11L14,8.59V5.08C14.33,5.03 14.66,5 15,5C15.34,5 15.67,5.03 16,5.08V8.59L18.5,6.11C19,6.5 19.5,7 19.89,7.5L17.41,10H20.92C20.97,10.33 21,10.66 21,11C21,11.34 20.97,11.67 20.92,12H17.41L19.89,14.5C19.7,14.75 19.5,15 19.24,15.24V15.24C19,15.5 18.75,15.7 18.5,15.89L16,13.41V16.92H16V16.92M5,19A2,2 0 0,1 7,17A2,2 0 0,1 9,19A2,2 0 0,1 7,21A2,2 0 0,1 5,19H5Z" /></g><g id="relative-scale"><path d="M20,18H4V6H20M20,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4M12,10H10V12H12M8,10H6V12H8M16,14H14V16H16M16,10H14V12H16V10Z" /></g><g id="reload"><path d="M19,12H22.32L17.37,16.95L12.42,12H16.97C17,10.46 16.42,8.93 15.24,7.75C12.9,5.41 9.1,5.41 6.76,7.75C4.42,10.09 4.42,13.9 6.76,16.24C8.6,18.08 11.36,18.47 13.58,17.41L15.05,18.88C12,20.69 8,20.29 5.34,17.65C2.22,14.53 2.23,9.47 5.35,6.35C8.5,3.22 13.53,3.21 16.66,6.34C18.22,7.9 19,9.95 19,12Z" /></g><g id="remote"><path d="M12,0C8.96,0 6.21,1.23 4.22,3.22L5.63,4.63C7.26,3 9.5,2 12,2C14.5,2 16.74,3 18.36,4.64L19.77,3.23C17.79,1.23 15.04,0 12,0M7.05,6.05L8.46,7.46C9.37,6.56 10.62,6 12,6C13.38,6 14.63,6.56 15.54,7.46L16.95,6.05C15.68,4.78 13.93,4 12,4C10.07,4 8.32,4.78 7.05,6.05M12,15A2,2 0 0,1 10,13A2,2 0 0,1 12,11A2,2 0 0,1 14,13A2,2 0 0,1 12,15M15,9H9A1,1 0 0,0 8,10V22A1,1 0 0,0 9,23H15A1,1 0 0,0 16,22V10A1,1 0 0,0 15,9Z" /></g><g id="rename-box"><path d="M18,17H10.5L12.5,15H18M6,17V14.5L13.88,6.65C14.07,6.45 14.39,6.45 14.59,6.65L16.35,8.41C16.55,8.61 16.55,8.92 16.35,9.12L8.47,17M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="reorder-horizontal"><path d="M3,15H21V13H3V15M3,19H21V17H3V19M3,11H21V9H3V11M3,5V7H21V5H3Z" /></g><g id="reorder-vertical"><path d="M9,3V21H11V3H9M5,3V21H7V3H5M13,3V21H15V3H13M19,3H17V21H19V3Z" /></g><g id="repeat"><path d="M17,17H7V14L3,18L7,22V19H19V13H17M7,7H17V10L21,6L17,2V5H5V11H7V7Z" /></g><g id="repeat-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L15.73,19H7V22L3,18L7,14V17H13.73L7,10.27V11H5V8.27L2,5.27M17,13H19V17.18L17,15.18V13M17,5V2L21,6L17,10V7H8.82L6.82,5H17Z" /></g><g id="repeat-once"><path d="M13,15V9H12L10,10V11H11.5V15M17,17H7V14L3,18L7,22V19H19V13H17M7,7H17V10L21,6L17,2V5H5V11H7V7Z" /></g><g id="replay"><path d="M12,5V1L7,6L12,11V7A6,6 0 0,1 18,13A6,6 0 0,1 12,19A6,6 0 0,1 6,13H4A8,8 0 0,0 12,21A8,8 0 0,0 20,13A8,8 0 0,0 12,5Z" /></g><g id="reply"><path d="M10,9V5L3,12L10,19V14.9C15,14.9 18.5,16.5 21,20C20,15 17,10 10,9Z" /></g><g id="reply-all"><path d="M13,9V5L6,12L13,19V14.9C18,14.9 21.5,16.5 24,20C23,15 20,10 13,9M7,8V5L0,12L7,19V16L3,12L7,8Z" /></g><g id="reproduction"><path d="M12.72,13.15L13.62,12.26C13.6,11 14.31,9.44 15.62,8.14C17.57,6.18 20.11,5.55 21.28,6.72C22.45,7.89 21.82,10.43 19.86,12.38C18.56,13.69 17,14.4 15.74,14.38L14.85,15.28C14.5,15.61 14,15.66 13.6,15.41C12.76,15.71 12,16.08 11.56,16.8C11.03,17.68 11.03,19.1 10.47,19.95C9.91,20.81 8.79,21.1 7.61,21.1C6.43,21.1 5,21 3.95,19.5L6.43,19.92C7,20 8.5,19.39 9.05,18.54C9.61,17.68 9.61,16.27 10.14,15.38C10.61,14.6 11.5,14.23 12.43,13.91C12.42,13.64 12.5,13.36 12.72,13.15M7,2A5,5 0 0,1 12,7A5,5 0 0,1 7,12A5,5 0 0,1 2,7A5,5 0 0,1 7,2M7,4A3,3 0 0,0 4,7A3,3 0 0,0 7,10A3,3 0 0,0 10,7A3,3 0 0,0 7,4Z" /></g><g id="resize-bottom-right"><path d="M22,22H20V20H22V22M22,18H20V16H22V18M18,22H16V20H18V22M18,18H16V16H18V18M14,22H12V20H14V22M22,14H20V12H22V14Z" /></g><g id="responsive"><path d="M4,6V16H9V12A2,2 0 0,1 11,10H16A2,2 0 0,1 18,12V16H20V6H4M0,20V18H4A2,2 0 0,1 2,16V6A2,2 0 0,1 4,4H20A2,2 0 0,1 22,6V16A2,2 0 0,1 20,18H24V20H18V20C18,21.11 17.1,22 16,22H11A2,2 0 0,1 9,20H9L0,20M11.5,20A0.5,0.5 0 0,0 11,20.5A0.5,0.5 0 0,0 11.5,21A0.5,0.5 0 0,0 12,20.5A0.5,0.5 0 0,0 11.5,20M15.5,20A0.5,0.5 0 0,0 15,20.5A0.5,0.5 0 0,0 15.5,21A0.5,0.5 0 0,0 16,20.5A0.5,0.5 0 0,0 15.5,20M13,20V21H14V20H13M11,12V19H16V12H11Z" /></g><g id="restore"><path d="M13,3A9,9 0 0,0 4,12H1L4.89,15.89L4.96,16.03L9,12H6A7,7 0 0,1 13,5A7,7 0 0,1 20,12A7,7 0 0,1 13,19C11.07,19 9.32,18.21 8.06,16.94L6.64,18.36C8.27,20 10.5,21 13,21A9,9 0 0,0 22,12A9,9 0 0,0 13,3M12,8V13L16.28,15.54L17,14.33L13.5,12.25V8H12Z" /></g><g id="rewind"><path d="M11.5,12L20,18V6M11,18V6L2.5,12L11,18Z" /></g><g id="rewind-outline"><path d="M10,9.9L7,12L10,14.1V9.9M19,9.9L16,12L19,14.1V9.9M12,6V18L3.5,12L12,6M21,6V18L12.5,12L21,6Z" /></g><g id="rhombus"><path d="M21.5,10.8L13.2,2.5C12.5,1.8 11.5,1.8 10.8,2.5L2.5,10.8C1.8,11.5 1.8,12.5 2.5,13.2L10.8,21.5C11.5,22.2 12.5,22.2 13.2,21.5L21.5,13.2C22.1,12.5 22.1,11.5 21.5,10.8Z" /></g><g id="rhombus-outline"><path d="M21.5,10.8L13.2,2.5C12.5,1.8 11.5,1.8 10.8,2.5L2.5,10.8C1.8,11.5 1.8,12.5 2.5,13.2L10.8,21.5C11.5,22.2 12.5,22.2 13.2,21.5L21.5,13.2C22.1,12.5 22.1,11.5 21.5,10.8M20.3,12L12,20.3L3.7,12L12,3.7L20.3,12Z" /></g><g id="ribbon"><path d="M13.41,19.31L16.59,22.5L18,21.07L14.83,17.9M15.54,11.53H15.53L12,15.07L8.47,11.53H8.46V11.53C7.56,10.63 7,9.38 7,8A5,5 0 0,1 12,3A5,5 0 0,1 17,8C17,9.38 16.44,10.63 15.54,11.53M16.9,13C18.2,11.73 19,9.96 19,8A7,7 0 0,0 12,1A7,7 0 0,0 5,8C5,9.96 5.81,11.73 7.1,13V13L10.59,16.5L6,21.07L7.41,22.5L16.9,13Z" /></g><g id="road"><path d="M11,16H13V20H11M11,10H13V14H11M11,4H13V8H11M4,22H20V2H4V22Z" /></g><g id="road-variant"><path d="M18.1,4.8C18,4.3 17.6,4 17.1,4H13L13.2,7H10.8L11,4H6.8C6.3,4 5.9,4.4 5.8,4.8L3.1,18.8C3,19.4 3.5,20 4.1,20H10L10.3,15H13.7L14,20H19.8C20.4,20 20.9,19.4 20.8,18.8L18.1,4.8M10.4,13L10.6,9H13.2L13.4,13H10.4Z" /></g><g id="robot"><path d="M12,2A2,2 0 0,1 14,4C14,4.74 13.6,5.39 13,5.73V7H14A7,7 0 0,1 21,14H22A1,1 0 0,1 23,15V18A1,1 0 0,1 22,19H21V20A2,2 0 0,1 19,22H5A2,2 0 0,1 3,20V19H2A1,1 0 0,1 1,18V15A1,1 0 0,1 2,14H3A7,7 0 0,1 10,7H11V5.73C10.4,5.39 10,4.74 10,4A2,2 0 0,1 12,2M7.5,13A2.5,2.5 0 0,0 5,15.5A2.5,2.5 0 0,0 7.5,18A2.5,2.5 0 0,0 10,15.5A2.5,2.5 0 0,0 7.5,13M16.5,13A2.5,2.5 0 0,0 14,15.5A2.5,2.5 0 0,0 16.5,18A2.5,2.5 0 0,0 19,15.5A2.5,2.5 0 0,0 16.5,13Z" /></g><g id="rocket"><path d="M2.81,14.12L5.64,11.29L8.17,10.79C11.39,6.41 17.55,4.22 19.78,4.22C19.78,6.45 17.59,12.61 13.21,15.83L12.71,18.36L9.88,21.19L9.17,17.66C7.76,17.66 7.76,17.66 7.05,16.95C6.34,16.24 6.34,16.24 6.34,14.83L2.81,14.12M5.64,16.95L7.05,18.36L4.39,21.03H2.97V19.61L5.64,16.95M4.22,15.54L5.46,15.71L3,18.16V16.74L4.22,15.54M8.29,18.54L8.46,19.78L7.26,21H5.84L8.29,18.54M13,9.5A1.5,1.5 0 0,0 11.5,11A1.5,1.5 0 0,0 13,12.5A1.5,1.5 0 0,0 14.5,11A1.5,1.5 0 0,0 13,9.5Z" /></g><g id="roomba"><path d="M12,2C14.65,2 17.19,3.06 19.07,4.93L17.65,6.35C16.15,4.85 14.12,4 12,4C9.88,4 7.84,4.84 6.35,6.35L4.93,4.93C6.81,3.06 9.35,2 12,2M3.66,6.5L5.11,7.94C4.39,9.17 4,10.57 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12C20,10.57 19.61,9.17 18.88,7.94L20.34,6.5C21.42,8.12 22,10.04 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12C2,10.04 2.58,8.12 3.66,6.5M12,6A6,6 0 0,1 18,12C18,13.59 17.37,15.12 16.24,16.24L14.83,14.83C14.08,15.58 13.06,16 12,16C10.94,16 9.92,15.58 9.17,14.83L7.76,16.24C6.63,15.12 6,13.59 6,12A6,6 0 0,1 12,6M12,8A1,1 0 0,0 11,9A1,1 0 0,0 12,10A1,1 0 0,0 13,9A1,1 0 0,0 12,8Z" /></g><g id="rotate-3d"><path d="M12,5C16.97,5 21,7.69 21,11C21,12.68 19.96,14.2 18.29,15.29C19.36,14.42 20,13.32 20,12.13C20,9.29 16.42,7 12,7V10L8,6L12,2V5M12,19C7.03,19 3,16.31 3,13C3,11.32 4.04,9.8 5.71,8.71C4.64,9.58 4,10.68 4,11.88C4,14.71 7.58,17 12,17V14L16,18L12,22V19Z" /></g><g id="rotate-left"><path d="M13,4.07V1L8.45,5.55L13,10V6.09C15.84,6.57 18,9.03 18,12C18,14.97 15.84,17.43 13,17.91V19.93C16.95,19.44 20,16.08 20,12C20,7.92 16.95,4.56 13,4.07M7.1,18.32C8.26,19.22 9.61,19.76 11,19.93V17.9C10.13,17.75 9.29,17.41 8.54,16.87L7.1,18.32M6.09,13H4.07C4.24,14.39 4.79,15.73 5.69,16.89L7.1,15.47C6.58,14.72 6.23,13.88 6.09,13M7.11,8.53L5.7,7.11C4.8,8.27 4.24,9.61 4.07,11H6.09C6.23,10.13 6.58,9.28 7.11,8.53Z" /></g><g id="rotate-left-variant"><path d="M4,2H7A2,2 0 0,1 9,4V20A2,2 0 0,1 7,22H4A2,2 0 0,1 2,20V4A2,2 0 0,1 4,2M20,15A2,2 0 0,1 22,17V20A2,2 0 0,1 20,22H11V15H20M14,4A8,8 0 0,1 22,12L21.94,13H19.92L20,12A6,6 0 0,0 14,6V9L10,5L14,1V4Z" /></g><g id="rotate-right"><path d="M16.89,15.5L18.31,16.89C19.21,15.73 19.76,14.39 19.93,13H17.91C17.77,13.87 17.43,14.72 16.89,15.5M13,17.9V19.92C14.39,19.75 15.74,19.21 16.9,18.31L15.46,16.87C14.71,17.41 13.87,17.76 13,17.9M19.93,11C19.76,9.61 19.21,8.27 18.31,7.11L16.89,8.53C17.43,9.28 17.77,10.13 17.91,11M15.55,5.55L11,1V4.07C7.06,4.56 4,7.92 4,12C4,16.08 7.05,19.44 11,19.93V17.91C8.16,17.43 6,14.97 6,12C6,9.03 8.16,6.57 11,6.09V10L15.55,5.55Z" /></g><g id="rotate-right-variant"><path d="M10,4V1L14,5L10,9V6A6,6 0 0,0 4,12L4.08,13H2.06L2,12A8,8 0 0,1 10,4M17,2H20A2,2 0 0,1 22,4V20A2,2 0 0,1 20,22H17A2,2 0 0,1 15,20V4A2,2 0 0,1 17,2M4,15H13V22H4A2,2 0 0,1 2,20V17A2,2 0 0,1 4,15Z" /></g><g id="rounded-corner"><path d="M19,19H21V21H19V19M19,17H21V15H19V17M3,13H5V11H3V13M3,17H5V15H3V17M3,9H5V7H3V9M3,5H5V3H3V5M7,5H9V3H7V5M15,21H17V19H15V21M11,21H13V19H11V21M15,21H17V19H15V21M7,21H9V19H7V21M3,21H5V19H3V21M21,8A5,5 0 0,0 16,3H11V5H16A3,3 0 0,1 19,8V13H21V8Z" /></g><g id="router-wireless"><path d="M4,13H20A1,1 0 0,1 21,14V18A1,1 0 0,1 20,19H4A1,1 0 0,1 3,18V14A1,1 0 0,1 4,13M9,17H10V15H9V17M5,15V17H7V15H5M19,6.93L17.6,8.34C16.15,6.89 14.15,6 11.93,6C9.72,6 7.72,6.89 6.27,8.34L4.87,6.93C6.68,5.12 9.18,4 11.93,4C14.69,4 17.19,5.12 19,6.93M16.17,9.76L14.77,11.17C14.04,10.45 13.04,10 11.93,10C10.82,10 9.82,10.45 9.1,11.17L7.7,9.76C8.78,8.67 10.28,8 11.93,8C13.58,8 15.08,8.67 16.17,9.76Z" /></g><g id="routes"><path d="M11,10H5L3,8L5,6H11V3L12,2L13,3V4H19L21,6L19,8H13V10H19L21,12L19,14H13V20A2,2 0 0,1 15,22H9A2,2 0 0,1 11,20V10Z" /></g><g id="rowing"><path d="M8.5,14.5L4,19L5.5,20.5L9,17H11L8.5,14.5M15,1A2,2 0 0,0 13,3A2,2 0 0,0 15,5A2,2 0 0,0 17,3A2,2 0 0,0 15,1M21,21L18,24L15,21V19.5L7.91,12.41C7.6,12.46 7.3,12.5 7,12.5V10.32C8.66,10.35 10.61,9.45 11.67,8.28L13.07,6.73C13.26,6.5 13.5,6.35 13.76,6.23C14.05,6.09 14.38,6 14.72,6H14.75C16,6 17,7 17,8.26V14C17,14.85 16.65,15.62 16.08,16.17L12.5,12.59V10.32C11.87,10.84 11.07,11.34 10.21,11.71L16.5,18H18L21,21Z" /></g><g id="rss"><path d="M6.18,15.64A2.18,2.18 0 0,1 8.36,17.82C8.36,19 7.38,20 6.18,20C5,20 4,19 4,17.82A2.18,2.18 0 0,1 6.18,15.64M4,4.44A15.56,15.56 0 0,1 19.56,20H16.73A12.73,12.73 0 0,0 4,7.27V4.44M4,10.1A9.9,9.9 0 0,1 13.9,20H11.07A7.07,7.07 0 0,0 4,12.93V10.1Z" /></g><g id="rss-box"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M7.5,15A1.5,1.5 0 0,0 6,16.5A1.5,1.5 0 0,0 7.5,18A1.5,1.5 0 0,0 9,16.5A1.5,1.5 0 0,0 7.5,15M6,10V12A6,6 0 0,1 12,18H14A8,8 0 0,0 6,10M6,6V8A10,10 0 0,1 16,18H18A12,12 0 0,0 6,6Z" /></g><g id="ruler"><path d="M1.39,18.36L3.16,16.6L4.58,18L5.64,16.95L4.22,15.54L5.64,14.12L8.11,16.6L9.17,15.54L6.7,13.06L8.11,11.65L9.53,13.06L10.59,12L9.17,10.59L10.59,9.17L13.06,11.65L14.12,10.59L11.65,8.11L13.06,6.7L14.47,8.11L15.54,7.05L14.12,5.64L15.54,4.22L18,6.7L19.07,5.64L16.6,3.16L18.36,1.39L22.61,5.64L5.64,22.61L1.39,18.36Z" /></g><g id="run"><path d="M17.12,10L16.04,8.18L15.31,11.05L17.8,15.59V22H16V17L13.67,13.89L12.07,18.4L7.25,20.5L6.2,19L10.39,16.53L12.91,6.67L10.8,7.33V11H9V5.8L14.42,4.11L14.92,4.03C15.54,4.03 16.08,4.37 16.38,4.87L18.38,8.2H22V10H17.12M17,3.8C16,3.8 15.2,3 15.2,2C15.2,1 16,0.2 17,0.2C18,0.2 18.8,1 18.8,2C18.8,3 18,3.8 17,3.8M7,9V11H4A1,1 0 0,1 3,10A1,1 0 0,1 4,9H7M9.25,13L8.75,15H5A1,1 0 0,1 4,14A1,1 0 0,1 5,13H9.25M7,5V7H3A1,1 0 0,1 2,6A1,1 0 0,1 3,5H7Z" /></g><g id="sale"><path d="M18.65,2.85L19.26,6.71L22.77,8.5L21,12L22.78,15.5L19.24,17.29L18.63,21.15L14.74,20.54L11.97,23.3L9.19,20.5L5.33,21.14L4.71,17.25L1.22,15.47L3,11.97L1.23,8.5L4.74,6.69L5.35,2.86L9.22,3.5L12,0.69L14.77,3.46L18.65,2.85M9.5,7A1.5,1.5 0 0,0 8,8.5A1.5,1.5 0 0,0 9.5,10A1.5,1.5 0 0,0 11,8.5A1.5,1.5 0 0,0 9.5,7M14.5,14A1.5,1.5 0 0,0 13,15.5A1.5,1.5 0 0,0 14.5,17A1.5,1.5 0 0,0 16,15.5A1.5,1.5 0 0,0 14.5,14M8.41,17L17,8.41L15.59,7L7,15.59L8.41,17Z" /></g><g id="satellite"><path d="M5,18L8.5,13.5L11,16.5L14.5,12L19,18M5,12V10A5,5 0 0,0 10,5H12A7,7 0 0,1 5,12M5,5H8A3,3 0 0,1 5,8M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="satellite-variant"><path d="M11.62,1L17.28,6.67L15.16,8.79L13.04,6.67L11.62,8.09L13.95,10.41L12.79,11.58L13.24,12.04C14.17,11.61 15.31,11.77 16.07,12.54L12.54,16.07C11.77,15.31 11.61,14.17 12.04,13.24L11.58,12.79L10.41,13.95L8.09,11.62L6.67,13.04L8.79,15.16L6.67,17.28L1,11.62L3.14,9.5L5.26,11.62L6.67,10.21L3.84,7.38C3.06,6.6 3.06,5.33 3.84,4.55L4.55,3.84C5.33,3.06 6.6,3.06 7.38,3.84L10.21,6.67L11.62,5.26L9.5,3.14L11.62,1M18,14A4,4 0 0,1 14,18V16A2,2 0 0,0 16,14H18M22,14A8,8 0 0,1 14,22V20A6,6 0 0,0 20,14H22Z" /></g><g id="saxophone"><path d="M4,2A1,1 0 0,0 3,3A1,1 0 0,0 4,4A3,3 0 0,1 7,7V8.66L7,15.5C7,19.1 9.9,22 13.5,22C17.1,22 20,19.1 20,15.5V13A1,1 0 0,0 21,12A1,1 0 0,0 20,11H14A1,1 0 0,0 13,12A1,1 0 0,0 14,13V15A1,1 0 0,1 13,16A1,1 0 0,1 12,15V11A1,1 0 0,0 13,10A1,1 0 0,0 12,9V8A1,1 0 0,0 13,7A1,1 0 0,0 12,6V5.5A3.5,3.5 0 0,0 8.5,2H4Z" /></g><g id="scale"><path d="M8.46,15.06L7.05,16.47L5.68,15.1C4.82,16.21 4.24,17.54 4.06,19H6V21H2V20C2,15.16 5.44,11.13 10,10.2V8.2L2,5V3H22V5L14,8.2V10.2C18.56,11.13 22,15.16 22,20V21H18V19H19.94C19.76,17.54 19.18,16.21 18.32,15.1L16.95,16.47L15.54,15.06L16.91,13.68C15.8,12.82 14.46,12.24 13,12.06V14H11V12.06C9.54,12.24 8.2,12.82 7.09,13.68L8.46,15.06M12,18A2,2 0 0,1 14,20A2,2 0 0,1 12,22C11.68,22 11.38,21.93 11.12,21.79L7.27,20L11.12,18.21C11.38,18.07 11.68,18 12,18Z" /></g><g id="scale-balance"><path d="M12,3C10.73,3 9.6,3.8 9.18,5H3V7H4.95L2,14C1.53,16 3,17 5.5,17C8,17 9.56,16 9,14L6.05,7H9.17C9.5,7.85 10.15,8.5 11,8.83V20H2V22H22V20H13V8.82C13.85,8.5 14.5,7.85 14.82,7H17.95L15,14C14.53,16 16,17 18.5,17C21,17 22.56,16 22,14L19.05,7H21V5H14.83C14.4,3.8 13.27,3 12,3M12,5A1,1 0 0,1 13,6A1,1 0 0,1 12,7A1,1 0 0,1 11,6A1,1 0 0,1 12,5M5.5,10.25L7,14H4L5.5,10.25M18.5,10.25L20,14H17L18.5,10.25Z" /></g><g id="scale-bathroom"><path d="M5,2H19A2,2 0 0,1 21,4V20A2,2 0 0,1 19,22H5A2,2 0 0,1 3,20V4A2,2 0 0,1 5,2M12,4A4,4 0 0,0 8,8H11.26L10.85,5.23L12.9,8H16A4,4 0 0,0 12,4M5,10V20H19V10H5Z" /></g><g id="scanner"><path d="M19.8,10.7L4.2,5L3.5,6.9L17.6,12H5A2,2 0 0,0 3,14V18A2,2 0 0,0 5,20H19A2,2 0 0,0 21,18V12.5C21,11.7 20.5,10.9 19.8,10.7M7,17H5V15H7V17M19,17H9V15H19V17Z" /></g><g id="school"><path d="M12,3L1,9L12,15L21,10.09V17H23V9M5,13.18V17.18L12,21L19,17.18V13.18L12,17L5,13.18Z" /></g><g id="screen-rotation"><path d="M7.5,21.5C4.25,19.94 1.91,16.76 1.55,13H0.05C0.56,19.16 5.71,24 12,24L12.66,23.97L8.85,20.16M14.83,21.19L2.81,9.17L9.17,2.81L21.19,14.83M10.23,1.75C9.64,1.16 8.69,1.16 8.11,1.75L1.75,8.11C1.16,8.7 1.16,9.65 1.75,10.23L13.77,22.25C14.36,22.84 15.31,22.84 15.89,22.25L22.25,15.89C22.84,15.3 22.84,14.35 22.25,13.77L10.23,1.75M16.5,2.5C19.75,4.07 22.09,7.24 22.45,11H23.95C23.44,4.84 18.29,0 12,0L11.34,0.03L15.15,3.84L16.5,2.5Z" /></g><g id="screen-rotation-lock"><path d="M16.8,2.5C16.8,1.56 17.56,0.8 18.5,0.8C19.44,0.8 20.2,1.56 20.2,2.5V3H16.8V2.5M16,9H21A1,1 0 0,0 22,8V4A1,1 0 0,0 21,3V2.5A2.5,2.5 0 0,0 18.5,0A2.5,2.5 0 0,0 16,2.5V3A1,1 0 0,0 15,4V8A1,1 0 0,0 16,9M8.47,20.5C5.2,18.94 2.86,15.76 2.5,12H1C1.5,18.16 6.66,23 12.95,23L13.61,22.97L9.8,19.15L8.47,20.5M23.25,12.77L20.68,10.2L19.27,11.61L21.5,13.83L15.83,19.5L4.5,8.17L10.17,2.5L12.27,4.61L13.68,3.2L11.23,0.75C10.64,0.16 9.69,0.16 9.11,0.75L2.75,7.11C2.16,7.7 2.16,8.65 2.75,9.23L14.77,21.25C15.36,21.84 16.31,21.84 16.89,21.25L23.25,14.89C23.84,14.3 23.84,13.35 23.25,12.77Z" /></g><g id="screwdriver"><path d="M18,1.83C17.5,1.83 17,2 16.59,2.41C13.72,5.28 8,11 8,11L9.5,12.5L6,16H4L2,20L4,22L8,20V18L11.5,14.5L13,16C13,16 18.72,10.28 21.59,7.41C22.21,6.5 22.37,5.37 21.59,4.59L19.41,2.41C19,2 18.5,1.83 18,1.83M18,4L20,6L13,13L11,11L18,4Z" /></g><g id="script"><path d="M14,20A2,2 0 0,0 16,18V5H9A1,1 0 0,0 8,6V16H5V5A3,3 0 0,1 8,2H19A3,3 0 0,1 22,5V6H18V18L18,19A3,3 0 0,1 15,22H5A3,3 0 0,1 2,19V18H12A2,2 0 0,0 14,20Z" /></g><g id="sd"><path d="M18,8H16V4H18M15,8H13V4H15M12,8H10V4H12M18,2H10L4,8V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V4A2,2 0 0,0 18,2Z" /></g><g id="seal"><path d="M20.39,19.37L16.38,18L15,22L11.92,16L9,22L7.62,18L3.61,19.37L6.53,13.37C5.57,12.17 5,10.65 5,9A7,7 0 0,1 12,2A7,7 0 0,1 19,9C19,10.65 18.43,12.17 17.47,13.37L20.39,19.37M7,9L9.69,10.34L9.5,13.34L12,11.68L14.5,13.33L14.33,10.34L17,9L14.32,7.65L14.5,4.67L12,6.31L9.5,4.65L9.67,7.66L7,9Z" /></g><g id="seat-flat"><path d="M22,11V13H9V7H18A4,4 0 0,1 22,11M2,14V16H8V18H16V16H22V14M7.14,12.1C8.3,10.91 8.28,9 7.1,7.86C5.91,6.7 4,6.72 2.86,7.9C1.7,9.09 1.72,11 2.9,12.14C4.09,13.3 6,13.28 7.14,12.1Z" /></g><g id="seat-flat-angled"><path d="M22.25,14.29L21.56,16.18L9.2,11.71L11.28,6.05L19.84,9.14C21.94,9.9 23,12.2 22.25,14.29M1.5,12.14L8,14.5V19H16V17.37L20.5,19L21.21,17.11L2.19,10.25M7.3,10.2C8.79,9.5 9.42,7.69 8.71,6.2C8,4.71 6.2,4.08 4.7,4.8C3.21,5.5 2.58,7.3 3.3,8.8C4,10.29 5.8,10.92 7.3,10.2Z" /></g><g id="seat-individual-suite"><path d="M7,13A3,3 0 0,0 10,10A3,3 0 0,0 7,7A3,3 0 0,0 4,10A3,3 0 0,0 7,13M19,7H11V14H3V7H1V17H23V11A4,4 0 0,0 19,7Z" /></g><g id="seat-legroom-extra"><path d="M4,12V3H2V12A5,5 0 0,0 7,17H13V15H7A3,3 0 0,1 4,12M22.83,17.24C22.45,16.5 21.54,16.27 20.8,16.61L19.71,17.11L16.3,10.13C15.96,9.45 15.27,9 14.5,9H11V3H5V11A3,3 0 0,0 8,14H15L18.41,21L22.13,19.3C22.9,18.94 23.23,18 22.83,17.24Z" /></g><g id="seat-legroom-normal"><path d="M5,12V3H3V12A5,5 0 0,0 8,17H14V15H8A3,3 0 0,1 5,12M20.5,18H19V11A2,2 0 0,0 17,9H12V3H6V11A3,3 0 0,0 9,14H16V21H20.5A1.5,1.5 0 0,0 22,19.5A1.5,1.5 0 0,0 20.5,18Z" /></g><g id="seat-legroom-reduced"><path d="M19.97,19.2C20.15,20.16 19.42,21 18.5,21H14V18L15,14H9A3,3 0 0,1 6,11V3H12V9H17A2,2 0 0,1 19,11L17,18H18.44C19.17,18 19.83,18.5 19.97,19.2M5,12V3H3V12A5,5 0 0,0 8,17H12V15H8A3,3 0 0,1 5,12Z" /></g><g id="seat-recline-extra"><path d="M5.35,5.64C4.45,5 4.23,3.76 4.86,2.85C5.5,1.95 6.74,1.73 7.65,2.36C8.55,3 8.77,4.24 8.14,5.15C7.5,6.05 6.26,6.27 5.35,5.64M16,19H8.93C7.45,19 6.19,17.92 5.97,16.46L4,7H2L4,16.76C4.37,19.2 6.47,21 8.94,21H16M16.23,15H11.35L10.32,10.9C11.9,11.79 13.6,12.44 15.47,12.12V10C13.84,10.3 12.03,9.72 10.78,8.74L9.14,7.47C8.91,7.29 8.65,7.17 8.38,7.09C8.06,7 7.72,6.97 7.39,7.03H7.37C6.14,7.25 5.32,8.42 5.53,9.64L6.88,15.56C7.16,17 8.39,18 9.83,18H16.68L20.5,21L22,19.5" /></g><g id="seat-recline-normal"><path d="M7.59,5.41C6.81,4.63 6.81,3.36 7.59,2.58C8.37,1.8 9.64,1.8 10.42,2.58C11.2,3.36 11.2,4.63 10.42,5.41C9.63,6.2 8.37,6.2 7.59,5.41M6,16V7H4V16A5,5 0 0,0 9,21H15V19H9A3,3 0 0,1 6,16M20,20.07L14.93,15H11.5V11.32C12.9,12.47 15.1,13.5 17,13.5V11.32C15.34,11.34 13.39,10.45 12.33,9.28L10.93,7.73C10.74,7.5 10.5,7.35 10.24,7.23C9.95,7.09 9.62,7 9.28,7H9.25C8,7 7,8 7,9.25V15A3,3 0 0,0 10,18H15.07L18.57,21.5" /></g><g id="security"><path d="M12,12H19C18.47,16.11 15.72,19.78 12,20.92V12H5V6.3L12,3.19M12,1L3,5V11C3,16.55 6.84,21.73 12,23C17.16,21.73 21,16.55 21,11V5L12,1Z" /></g><g id="security-home"><path d="M11,13H13V16H16V11H18L12,6L6,11H8V16H11V13M12,1L21,5V11C21,16.55 17.16,21.74 12,23C6.84,21.74 3,16.55 3,11V5L12,1Z" /></g><g id="security-network"><path d="M13,18H14A1,1 0 0,1 15,19H22V21H15A1,1 0 0,1 14,22H10A1,1 0 0,1 9,21H2V19H9A1,1 0 0,1 10,18H11V16.34C8.07,15.13 6,12 6,8.67V4.67L12,2L18,4.67V8.67C18,12 15.93,15.13 13,16.34V18M12,4L8,5.69V9H12V4M12,9V15C13.91,14.53 16,12.06 16,10V9H12Z" /></g><g id="select"><path d="M4,3H5V5H3V4A1,1 0 0,1 4,3M20,3A1,1 0 0,1 21,4V5H19V3H20M15,5V3H17V5H15M11,5V3H13V5H11M7,5V3H9V5H7M21,20A1,1 0 0,1 20,21H19V19H21V20M15,21V19H17V21H15M11,21V19H13V21H11M7,21V19H9V21H7M4,21A1,1 0 0,1 3,20V19H5V21H4M3,15H5V17H3V15M21,15V17H19V15H21M3,11H5V13H3V11M21,11V13H19V11H21M3,7H5V9H3V7M21,7V9H19V7H21Z" /></g><g id="select-all"><path d="M9,9H15V15H9M7,17H17V7H7M15,5H17V3H15M15,21H17V19H15M19,17H21V15H19M19,9H21V7H19M19,21A2,2 0 0,0 21,19H19M19,13H21V11H19M11,21H13V19H11M9,3H7V5H9M3,17H5V15H3M5,21V19H3A2,2 0 0,0 5,21M19,3V5H21A2,2 0 0,0 19,3M13,3H11V5H13M3,9H5V7H3M7,21H9V19H7M3,13H5V11H3M3,5H5V3A2,2 0 0,0 3,5Z" /></g><g id="select-inverse"><path d="M5,3H7V5H9V3H11V5H13V3H15V5H17V3H19V5H21V7H19V9H21V11H19V13H21V15H19V17H21V19H19V21H17V19H15V21H13V19H11V21H9V19H7V21H5V19H3V17H5V15H3V13H5V11H3V9H5V7H3V5H5V3Z" /></g><g id="select-off"><path d="M1,4.27L2.28,3L21,21.72L19.73,23L17,20.27V21H15V19H15.73L5,8.27V9H3V7H3.73L1,4.27M20,3A1,1 0 0,1 21,4V5H19V3H20M15,5V3H17V5H15M11,5V3H13V5H11M7,5V3H9V5H7M11,21V19H13V21H11M7,21V19H9V21H7M4,21A1,1 0 0,1 3,20V19H5V21H4M3,15H5V17H3V15M21,15V17H19V15H21M3,11H5V13H3V11M21,11V13H19V11H21M21,7V9H19V7H21Z" /></g><g id="selection"><path d="M2,4V7H4V4H2M7,4H4C4,4 4,4 4,4H2C2,2.89 2.9,2 4,2H7V4M22,4V7H20V4H22M17,4H20C20,4 20,4 20,4H22C22,2.89 21.1,2 20,2H17V4M22,20V17H20V20H22M17,20H20C20,20 20,20 20,20H22C22,21.11 21.1,22 20,22H17V20M2,20V17H4V20H2M7,20H4C4,20 4,20 4,20H2C2,21.11 2.9,22 4,22H7V20M10,2H14V4H10V2M10,20H14V22H10V20M20,10H22V14H20V10M2,10H4V14H2V10Z" /></g><g id="send"><path d="M2,21L23,12L2,3V10L17,12L2,14V21Z" /></g><g id="serial-port"><path d="M7,3H17V5H19V8H16V14H8V8H5V5H7V3M17,9H19V14H17V9M11,15H13V22H11V15M5,9H7V14H5V9Z" /></g><g id="server"><path d="M4,1H20A1,1 0 0,1 21,2V6A1,1 0 0,1 20,7H4A1,1 0 0,1 3,6V2A1,1 0 0,1 4,1M4,9H20A1,1 0 0,1 21,10V14A1,1 0 0,1 20,15H4A1,1 0 0,1 3,14V10A1,1 0 0,1 4,9M4,17H20A1,1 0 0,1 21,18V22A1,1 0 0,1 20,23H4A1,1 0 0,1 3,22V18A1,1 0 0,1 4,17M9,5H10V3H9V5M9,13H10V11H9V13M9,21H10V19H9V21M5,3V5H7V3H5M5,11V13H7V11H5M5,19V21H7V19H5Z" /></g><g id="server-minus"><path d="M4,4H20A1,1 0 0,1 21,5V9A1,1 0 0,1 20,10H4A1,1 0 0,1 3,9V5A1,1 0 0,1 4,4M9,8H10V6H9V8M5,6V8H7V6H5M8,16H16V18H8V16Z" /></g><g id="server-network"><path d="M13,18H14A1,1 0 0,1 15,19H22V21H15A1,1 0 0,1 14,22H10A1,1 0 0,1 9,21H2V19H9A1,1 0 0,1 10,18H11V16H4A1,1 0 0,1 3,15V11A1,1 0 0,1 4,10H20A1,1 0 0,1 21,11V15A1,1 0 0,1 20,16H13V18M4,2H20A1,1 0 0,1 21,3V7A1,1 0 0,1 20,8H4A1,1 0 0,1 3,7V3A1,1 0 0,1 4,2M9,6H10V4H9V6M9,14H10V12H9V14M5,4V6H7V4H5M5,12V14H7V12H5Z" /></g><g id="server-network-off"><path d="M13,18H14A1,1 0 0,1 15,19H15.73L13,16.27V18M22,19V20.18L20.82,19H22M21,21.72L19.73,23L17.73,21H15A1,1 0 0,1 14,22H10A1,1 0 0,1 9,21H2V19H9A1,1 0 0,1 10,18H11V16H4A1,1 0 0,1 3,15V11A1,1 0 0,1 4,10H6.73L4.73,8H4A1,1 0 0,1 3,7V6.27L1,4.27L2.28,3L21,21.72M4,2H20A1,1 0 0,1 21,3V7A1,1 0 0,1 20,8H9.82L7,5.18V4H5.82L3.84,2C3.89,2 3.94,2 4,2M20,10A1,1 0 0,1 21,11V15A1,1 0 0,1 20,16H17.82L11.82,10H20M9,6H10V4H9V6M9,14H10V13.27L9,12.27V14M5,12V14H7V12H5Z" /></g><g id="server-off"><path d="M4,1H20A1,1 0 0,1 21,2V6A1,1 0 0,1 20,7H8.82L6.82,5H7V3H5V3.18L3.21,1.39C3.39,1.15 3.68,1 4,1M22,22.72L20.73,24L19.73,23H4A1,1 0 0,1 3,22V18A1,1 0 0,1 4,17H13.73L11.73,15H4A1,1 0 0,1 3,14V10A1,1 0 0,1 4,9H5.73L3.68,6.95C3.38,6.85 3.15,6.62 3.05,6.32L1,4.27L2.28,3L22,22.72M20,9A1,1 0 0,1 21,10V14A1,1 0 0,1 20,15H16.82L10.82,9H20M20,17A1,1 0 0,1 21,18V19.18L18.82,17H20M9,5H10V3H9V5M9,13H9.73L9,12.27V13M9,21H10V19H9V21M5,11V13H7V11H5M5,19V21H7V19H5Z" /></g><g id="server-plus"><path d="M4,4H20A1,1 0 0,1 21,5V9A1,1 0 0,1 20,10H4A1,1 0 0,1 3,9V5A1,1 0 0,1 4,4M9,8H10V6H9V8M5,6V8H7V6H5M8,16H11V13H13V16H16V18H13V21H11V18H8V16Z" /></g><g id="server-remove"><path d="M4,4H20A1,1 0 0,1 21,5V9A1,1 0 0,1 20,10H4A1,1 0 0,1 3,9V5A1,1 0 0,1 4,4M9,8H10V6H9V8M5,6V8H7V6H5M10.59,17L8,14.41L9.41,13L12,15.59L14.59,13L16,14.41L13.41,17L16,19.59L14.59,21L12,18.41L9.41,21L8,19.59L10.59,17Z" /></g><g id="server-security"><path d="M3,1H19A1,1 0 0,1 20,2V6A1,1 0 0,1 19,7H3A1,1 0 0,1 2,6V2A1,1 0 0,1 3,1M3,9H19A1,1 0 0,1 20,10V10.67L17.5,9.56L11,12.44V15H3A1,1 0 0,1 2,14V10A1,1 0 0,1 3,9M3,17H11C11.06,19.25 12,21.4 13.46,23H3A1,1 0 0,1 2,22V18A1,1 0 0,1 3,17M8,5H9V3H8V5M8,13H9V11H8V13M8,21H9V19H8V21M4,3V5H6V3H4M4,11V13H6V11H4M4,19V21H6V19H4M17.5,12L22,14V17C22,19.78 20.08,22.37 17.5,23C14.92,22.37 13,19.78 13,17V14L17.5,12M17.5,13.94L15,15.06V17.72C15,19.26 16.07,20.7 17.5,21.06V13.94Z" /></g><g id="settings"><path d="M12,15.5A3.5,3.5 0 0,1 8.5,12A3.5,3.5 0 0,1 12,8.5A3.5,3.5 0 0,1 15.5,12A3.5,3.5 0 0,1 12,15.5M19.43,12.97C19.47,12.65 19.5,12.33 19.5,12C19.5,11.67 19.47,11.34 19.43,11L21.54,9.37C21.73,9.22 21.78,8.95 21.66,8.73L19.66,5.27C19.54,5.05 19.27,4.96 19.05,5.05L16.56,6.05C16.04,5.66 15.5,5.32 14.87,5.07L14.5,2.42C14.46,2.18 14.25,2 14,2H10C9.75,2 9.54,2.18 9.5,2.42L9.13,5.07C8.5,5.32 7.96,5.66 7.44,6.05L4.95,5.05C4.73,4.96 4.46,5.05 4.34,5.27L2.34,8.73C2.21,8.95 2.27,9.22 2.46,9.37L4.57,11C4.53,11.34 4.5,11.67 4.5,12C4.5,12.33 4.53,12.65 4.57,12.97L2.46,14.63C2.27,14.78 2.21,15.05 2.34,15.27L4.34,18.73C4.46,18.95 4.73,19.03 4.95,18.95L7.44,17.94C7.96,18.34 8.5,18.68 9.13,18.93L9.5,21.58C9.54,21.82 9.75,22 10,22H14C14.25,22 14.46,21.82 14.5,21.58L14.87,18.93C15.5,18.67 16.04,18.34 16.56,17.94L19.05,18.95C19.27,19.03 19.54,18.95 19.66,18.73L21.66,15.27C21.78,15.05 21.73,14.78 21.54,14.63L19.43,12.97Z" /></g><g id="settings-box"><path d="M17.25,12C17.25,12.23 17.23,12.46 17.2,12.68L18.68,13.84C18.81,13.95 18.85,14.13 18.76,14.29L17.36,16.71C17.27,16.86 17.09,16.92 16.93,16.86L15.19,16.16C14.83,16.44 14.43,16.67 14,16.85L13.75,18.7C13.72,18.87 13.57,19 13.4,19H10.6C10.43,19 10.28,18.87 10.25,18.7L10,16.85C9.56,16.67 9.17,16.44 8.81,16.16L7.07,16.86C6.91,16.92 6.73,16.86 6.64,16.71L5.24,14.29C5.15,14.13 5.19,13.95 5.32,13.84L6.8,12.68C6.77,12.46 6.75,12.23 6.75,12C6.75,11.77 6.77,11.54 6.8,11.32L5.32,10.16C5.19,10.05 5.15,9.86 5.24,9.71L6.64,7.29C6.73,7.13 6.91,7.07 7.07,7.13L8.81,7.84C9.17,7.56 9.56,7.32 10,7.15L10.25,5.29C10.28,5.13 10.43,5 10.6,5H13.4C13.57,5 13.72,5.13 13.75,5.29L14,7.15C14.43,7.32 14.83,7.56 15.19,7.84L16.93,7.13C17.09,7.07 17.27,7.13 17.36,7.29L18.76,9.71C18.85,9.86 18.81,10.05 18.68,10.16L17.2,11.32C17.23,11.54 17.25,11.77 17.25,12M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M12,10C10.89,10 10,10.89 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12C14,10.89 13.1,10 12,10Z" /></g><g id="shape-circle-plus"><path d="M11,19A6,6 0 0,0 17,13H19A8,8 0 0,1 11,21A8,8 0 0,1 3,13A8,8 0 0,1 11,5V7A6,6 0 0,0 5,13A6,6 0 0,0 11,19M19,5H22V7H19V10H17V7H14V5H17V2H19V5Z" /></g><g id="shape-plus"><path d="M2,2H11V11H2V2M17.5,2C20,2 22,4 22,6.5C22,9 20,11 17.5,11C15,11 13,9 13,6.5C13,4 15,2 17.5,2M6.5,14L11,22H2L6.5,14M19,17H22V19H19V22H17V19H14V17H17V14H19V17Z" /></g><g id="shape-polygon-plus"><path d="M17,15.7V13H19V17L10,21L3,14L7,5H11V7H8.3L5.4,13.6L10.4,18.6L17,15.7M22,5V7H19V10H17V7H14V5H17V2H19V5H22Z" /></g><g id="shape-rectangle-plus"><path d="M19,6H22V8H19V11H17V8H14V6H17V3H19V6M17,17V14H19V19H3V6H11V8H5V17H17Z" /></g><g id="shape-square-plus"><path d="M19,5H22V7H19V10H17V7H14V5H17V2H19V5M17,19V13H19V21H3V5H11V7H5V19H17Z" /></g><g id="share"><path d="M21,11L14,4V8C7,9 4,14 3,19C5.5,15.5 9,13.9 14,13.9V18L21,11Z" /></g><g id="share-variant"><path d="M18,16.08C17.24,16.08 16.56,16.38 16.04,16.85L8.91,12.7C8.96,12.47 9,12.24 9,12C9,11.76 8.96,11.53 8.91,11.3L15.96,7.19C16.5,7.69 17.21,8 18,8A3,3 0 0,0 21,5A3,3 0 0,0 18,2A3,3 0 0,0 15,5C15,5.24 15.04,5.47 15.09,5.7L8.04,9.81C7.5,9.31 6.79,9 6,9A3,3 0 0,0 3,12A3,3 0 0,0 6,15C6.79,15 7.5,14.69 8.04,14.19L15.16,18.34C15.11,18.55 15.08,18.77 15.08,19C15.08,20.61 16.39,21.91 18,21.91C19.61,21.91 20.92,20.61 20.92,19A2.92,2.92 0 0,0 18,16.08Z" /></g><g id="shield"><path d="M12,1L3,5V11C3,16.55 6.84,21.74 12,23C17.16,21.74 21,16.55 21,11V5L12,1Z" /></g><g id="shield-outline"><path d="M21,11C21,16.55 17.16,21.74 12,23C6.84,21.74 3,16.55 3,11V5L12,1L21,5V11M12,21C15.75,20 19,15.54 19,11.22V6.3L12,3.18L5,6.3V11.22C5,15.54 8.25,20 12,21Z" /></g><g id="shopping"><path d="M12,13A5,5 0 0,1 7,8H9A3,3 0 0,0 12,11A3,3 0 0,0 15,8H17A5,5 0 0,1 12,13M12,3A3,3 0 0,1 15,6H9A3,3 0 0,1 12,3M19,6H17A5,5 0 0,0 12,1A5,5 0 0,0 7,6H5C3.89,6 3,6.89 3,8V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V8C21,6.89 20.1,6 19,6Z" /></g><g id="shopping-music"><path d="M12,3A3,3 0 0,0 9,6H15A3,3 0 0,0 12,3M19,6A2,2 0 0,1 21,8V20A2,2 0 0,1 19,22H5C3.89,22 3,21.1 3,20V8C3,6.89 3.89,6 5,6H7A5,5 0 0,1 12,1A5,5 0 0,1 17,6H19M9,19L16.5,14L9,10V19Z" /></g><g id="shovel"><path d="M15.1,1.81L12.27,4.64C11.5,5.42 11.5,6.69 12.27,7.47L13.68,8.88L9.13,13.43L6.31,10.6L4.89,12C-0.06,17 3.5,20.5 3.5,20.5C3.5,20.5 7,24 12,19.09L13.41,17.68L10.61,14.88L15.15,10.34L16.54,11.73C17.32,12.5 18.59,12.5 19.37,11.73L22.2,8.9L15.1,1.81M17.93,10.28L16.55,8.9L15.11,7.46L13.71,6.06L15.12,4.65L19.35,8.88L17.93,10.28Z" /></g><g id="shovel-off"><path d="M15.1,1.81L12.27,4.65C11.5,5.43 11.5,6.69 12.27,7.47L13.68,8.89L13,9.62L14.44,11.06L15.17,10.33L16.56,11.72C17.34,12.5 18.61,12.5 19.39,11.72L22.22,8.88L15.1,1.81M17.93,10.28L13.7,6.06L15.11,4.65L19.34,8.88L17.93,10.28M20.7,20.24L19.29,21.65L11.5,13.88L10.5,14.88L13.33,17.69L12,19.09C7,24 3.5,20.5 3.5,20.5C3.5,20.5 -0.06,17 4.89,12L6.31,10.6L9.13,13.43L10.13,12.43L2.35,4.68L3.77,3.26L20.7,20.24Z" /></g><g id="shredder"><path d="M6,3V7H8V5H16V7H18V3H6M5,8A3,3 0 0,0 2,11V17H5V14H19V17H22V11A3,3 0 0,0 19,8H5M18,10A1,1 0 0,1 19,11A1,1 0 0,1 18,12A1,1 0 0,1 17,11A1,1 0 0,1 18,10M7,16V21H9V16H7M11,16V20H13V16H11M15,16V21H17V16H15Z" /></g><g id="shuffle"><path d="M14.83,13.41L13.42,14.82L16.55,17.95L14.5,20H20V14.5L17.96,16.54L14.83,13.41M14.5,4L16.54,6.04L4,18.59L5.41,20L17.96,7.46L20,9.5V4M10.59,9.17L5.41,4L4,5.41L9.17,10.58L10.59,9.17Z" /></g><g id="shuffle-disabled"><path d="M16,4.5V7H5V9H16V11.5L19.5,8M16,12.5V15H5V17H16V19.5L19.5,16" /></g><g id="shuffle-variant"><path d="M17,3L22.25,7.5L17,12L22.25,16.5L17,21V18H14.26L11.44,15.18L13.56,13.06L15.5,15H17V12L17,9H15.5L6.5,18H2V15H5.26L14.26,6H17V3M2,6H6.5L9.32,8.82L7.2,10.94L5.26,9H2V6Z" /></g><g id="sigma"><path d="M5,4H18V9H17L16,6H10.06L13.65,11.13L9.54,17H16L17,15H18V20H5L10.6,12L5,4Z" /></g><g id="sigma-lower"><path d="M19,12C19,16.42 15.64,20 11.5,20C7.36,20 4,16.42 4,12C4,7.58 7.36,4 11.5,4H20V6H16.46C18,7.47 19,9.61 19,12M11.5,6C8.46,6 6,8.69 6,12C6,15.31 8.46,18 11.5,18C14.54,18 17,15.31 17,12C17,8.69 14.54,6 11.5,6Z" /></g><g id="sign-caution"><path d="M2,3H22V13H18V21H16V13H8V21H6V13H2V3M18.97,11L20,9.97V7.15L16.15,11H18.97M13.32,11L19.32,5H16.5L10.5,11H13.32M7.66,11L13.66,5H10.83L4.83,11H7.66M5.18,5L4,6.18V9L8,5H5.18Z" /></g><g id="signal"><path d="M3,21H6V18H3M8,21H11V14H8M13,21H16V9H13M18,21H21V3H18V21Z" /></g><g id="signal-2g"><path d="M11,19.5H2V13.5A3,3 0 0,1 5,10.5H8V7.5H2V4.5H8A3,3 0 0,1 11,7.5V10.5A3,3 0 0,1 8,13.5H5V16.5H11M22,10.5H17.5V13.5H19V16.5H16V7.5H22V4.5H16A3,3 0 0,0 13,7.5V16.5A3,3 0 0,0 16,19.5H19A3,3 0 0,0 22,16.5" /></g><g id="signal-3g"><path d="M11,16.5V14.25C11,13 10,12 8.75,12C10,12 11,11 11,9.75V7.5A3,3 0 0,0 8,4.5H2V7.5H8V10.5H5V13.5H8V16.5H2V19.5H8A3,3 0 0,0 11,16.5M22,16.5V10.5H17.5V13.5H19V16.5H16V7.5H22V4.5H16A3,3 0 0,0 13,7.5V16.5A3,3 0 0,0 16,19.5H19A3,3 0 0,0 22,16.5Z" /></g><g id="signal-4g"><path d="M22,16.5V10.5H17.5V13.5H19V16.5H16V7.5H22V4.5H16A3,3 0 0,0 13,7.5V16.5A3,3 0 0,0 16,19.5H19A3,3 0 0,0 22,16.5M8,19.5H11V4.5H8V10.5H5V4.5H2V13.5H8V19.5Z" /></g><g id="signal-hspa"><path d="M10.5,10.5H13.5V4.5H16.5V19.5H13.5V13.5H10.5V19.5H7.5V4.5H10.5V10.5Z" /></g><g id="signal-hspa-plus"><path d="M19,8V11H22V14H19V17H16V14H13V11H16V8H19M5,10.5H8V4.5H11V19.5H8V13.5H5V19.5H2V4.5H5V10.5Z" /></g><g id="signal-variant"><path d="M4,6V4H4.1C12.9,4 20,11.1 20,19.9V20H18V19.9C18,12.2 11.8,6 4,6M4,10V8A12,12 0 0,1 16,20H14A10,10 0 0,0 4,10M4,14V12A8,8 0 0,1 12,20H10A6,6 0 0,0 4,14M4,16A4,4 0 0,1 8,20H4V16Z" /></g><g id="silverware"><path d="M8.1,13.34L3.91,9.16C2.35,7.59 2.35,5.06 3.91,3.5L10.93,10.5L8.1,13.34M14.88,11.53L13.41,13L20.29,19.88L18.88,21.29L12,14.41L5.12,21.29L3.71,19.88L13.47,10.12C12.76,8.59 13.26,6.44 14.85,4.85C16.76,2.93 19.5,2.57 20.96,4.03C22.43,5.5 22.07,8.24 20.15,10.15C18.56,11.74 16.41,12.24 14.88,11.53Z" /></g><g id="silverware-fork"><path d="M5.12,21.29L3.71,19.88L13.36,10.22L13.16,10C12.38,9.23 12.38,7.97 13.16,7.19L17.5,2.82L18.43,3.74L15.19,7L16.15,7.94L19.39,4.69L20.31,5.61L17.06,8.85L18,9.81L21.26,6.56L22.18,7.5L17.81,11.84C17.03,12.62 15.77,12.62 15,11.84L14.78,11.64L5.12,21.29Z" /></g><g id="silverware-spoon"><path d="M14.88,11.53L5.12,21.29L3.71,19.88L13.47,10.12C12.76,8.59 13.26,6.44 14.85,4.85C16.76,2.93 19.5,2.57 20.96,4.03C22.43,5.5 22.07,8.24 20.15,10.15C18.56,11.74 16.41,12.24 14.88,11.53Z" /></g><g id="silverware-variant"><path d="M8.1,13.34L3.91,9.16C2.35,7.59 2.35,5.06 3.91,3.5L10.93,10.5L8.1,13.34M13.41,13L20.29,19.88L18.88,21.29L12,14.41L5.12,21.29L3.71,19.88L13.36,10.22L13.16,10C12.38,9.23 12.38,7.97 13.16,7.19L17.5,2.82L18.43,3.74L15.19,7L16.15,7.94L19.39,4.69L20.31,5.61L17.06,8.85L18,9.81L21.26,6.56L22.18,7.5L17.81,11.84C17.03,12.62 15.77,12.62 15,11.84L14.78,11.64L13.41,13Z" /></g><g id="sim"><path d="M20,4A2,2 0 0,0 18,2H10L4,8V20A2,2 0 0,0 6,22H18C19.11,22 20,21.1 20,20V4M9,19H7V17H9V19M17,19H15V17H17V19M9,15H7V11H9V15M13,19H11V15H13V19M13,13H11V11H13V13M17,15H15V11H17V15Z" /></g><g id="sim-alert"><path d="M13,13H11V8H13M13,17H11V15H13M18,2H10L4,8V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V4A2,2 0 0,0 18,2Z" /></g><g id="sim-off"><path d="M19,5A2,2 0 0,0 17,3H10L7.66,5.34L19,16.68V5M3.65,3.88L2.38,5.15L5,7.77V19A2,2 0 0,0 7,21H17C17.36,21 17.68,20.9 17.97,20.74L19.85,22.62L21.12,21.35L3.65,3.88Z" /></g><g id="sitemap"><path d="M9,2V8H11V11H5C3.89,11 3,11.89 3,13V16H1V22H7V16H5V13H11V16H9V22H15V16H13V13H19V16H17V22H23V16H21V13C21,11.89 20.11,11 19,11H13V8H15V2H9Z" /></g><g id="skip-backward"><path d="M20,5V19L13,12M6,5V19H4V5M13,5V19L6,12" /></g><g id="skip-forward"><path d="M4,5V19L11,12M18,5V19H20V5M11,5V19L18,12" /></g><g id="skip-next"><path d="M16,18H18V6H16M6,18L14.5,12L6,6V18Z" /></g><g id="skip-next-circle"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M8,8L13,12L8,16M14,8H16V16H14" /></g><g id="skip-next-circle-outline"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4M8,8V16L13,12M14,8V16H16V8" /></g><g id="skip-previous"><path d="M6,18V6H8V18H6M9.5,12L18,6V18L9.5,12Z" /></g><g id="skip-previous-circle"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M8,8H10V16H8M16,8V16L11,12" /></g><g id="skip-previous-circle-outline"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4C7.59,4 4,7.59 4,12C4,16.41 7.59,20 12,20C16.41,20 20,16.41 20,12C20,7.59 16.41,4 12,4M16,8V16L11,12M10,8V16H8V8" /></g><g id="skull"><path d="M12,2A9,9 0 0,0 3,11C3,14.03 4.53,16.82 7,18.47V22H9V19H11V22H13V19H15V22H17V18.46C19.47,16.81 21,14 21,11A9,9 0 0,0 12,2M8,11A2,2 0 0,1 10,13A2,2 0 0,1 8,15A2,2 0 0,1 6,13A2,2 0 0,1 8,11M16,11A2,2 0 0,1 18,13A2,2 0 0,1 16,15A2,2 0 0,1 14,13A2,2 0 0,1 16,11M12,14L13.5,17H10.5L12,14Z" /></g><g id="skype"><path d="M18,6C20.07,8.04 20.85,10.89 20.36,13.55C20.77,14.27 21,15.11 21,16A5,5 0 0,1 16,21C15.11,21 14.27,20.77 13.55,20.36C10.89,20.85 8.04,20.07 6,18C3.93,15.96 3.15,13.11 3.64,10.45C3.23,9.73 3,8.89 3,8A5,5 0 0,1 8,3C8.89,3 9.73,3.23 10.45,3.64C13.11,3.15 15.96,3.93 18,6M12.04,17.16C14.91,17.16 16.34,15.78 16.34,13.92C16.34,12.73 15.78,11.46 13.61,10.97L11.62,10.53C10.86,10.36 10,10.13 10,9.42C10,8.7 10.6,8.2 11.7,8.2C13.93,8.2 13.72,9.73 14.83,9.73C15.41,9.73 15.91,9.39 15.91,8.8C15.91,7.43 13.72,6.4 11.86,6.4C9.85,6.4 7.7,7.26 7.7,9.54C7.7,10.64 8.09,11.81 10.25,12.35L12.94,13.03C13.75,13.23 13.95,13.68 13.95,14.1C13.95,14.78 13.27,15.45 12.04,15.45C9.63,15.45 9.96,13.6 8.67,13.6C8.09,13.6 7.67,14 7.67,14.57C7.67,15.68 9,17.16 12.04,17.16Z" /></g><g id="skype-business"><path d="M12.03,16.53C9.37,16.53 8.18,15.22 8.18,14.24C8.18,13.74 8.55,13.38 9.06,13.38C10.2,13.38 9.91,15 12.03,15C13.12,15 13.73,14.43 13.73,13.82C13.73,13.46 13.55,13.06 12.83,12.88L10.46,12.29C8.55,11.81 8.2,10.78 8.2,9.81C8.2,7.79 10.1,7.03 11.88,7.03C13.5,7.03 15.46,7.94 15.46,9.15C15.46,9.67 15,9.97 14.5,9.97C13.5,9.97 13.7,8.62 11.74,8.62C10.77,8.62 10.23,9.06 10.23,9.69C10.23,10.32 11,10.5 11.66,10.68L13.42,11.07C15.34,11.5 15.83,12.62 15.83,13.67C15.83,15.31 14.57,16.53 12.03,16.53M18,6C20.07,8.04 20.85,10.89 20.36,13.55C20.77,14.27 21,15.11 21,16A5,5 0 0,1 16,21C15.11,21 14.27,20.77 13.55,20.36C10.89,20.85 8.04,20.07 6,18C3.93,15.96 3.15,13.11 3.64,10.45C3.23,9.73 3,8.89 3,8A5,5 0 0,1 8,3C8.89,3 9.73,3.23 10.45,3.64C13.11,3.15 15.96,3.93 18,6M8,5A3,3 0 0,0 5,8C5,8.79 5.3,9.5 5.8,10.04C5.1,12.28 5.63,14.82 7.4,16.6C9.18,18.37 11.72,18.9 13.96,18.2C14.5,18.7 15.21,19 16,19A3,3 0 0,0 19,16C19,15.21 18.7,14.5 18.2,13.96C18.9,11.72 18.37,9.18 16.6,7.4C14.82,5.63 12.28,5.1 10.04,5.8C9.5,5.3 8.79,5 8,5Z" /></g><g id="slack"><path d="M10.23,11.16L12.91,10.27L13.77,12.84L11.09,13.73L10.23,11.16M17.69,13.71C18.23,13.53 18.5,12.94 18.34,12.4C18.16,11.86 17.57,11.56 17.03,11.75L15.73,12.18L14.87,9.61L16.17,9.17C16.71,9 17,8.4 16.82,7.86C16.64,7.32 16.05,7 15.5,7.21L14.21,7.64L13.76,6.3C13.58,5.76 13,5.46 12.45,5.65C11.91,5.83 11.62,6.42 11.8,6.96L12.25,8.3L9.57,9.19L9.12,7.85C8.94,7.31 8.36,7 7.81,7.2C7.27,7.38 7,7.97 7.16,8.5L7.61,9.85L6.31,10.29C5.77,10.47 5.5,11.06 5.66,11.6C5.8,12 6.19,12.3 6.61,12.31L6.97,12.25L8.27,11.82L9.13,14.39L7.83,14.83C7.29,15 7,15.6 7.18,16.14C7.32,16.56 7.71,16.84 8.13,16.85L8.5,16.79L9.79,16.36L10.24,17.7C10.38,18.13 10.77,18.4 11.19,18.41L11.55,18.35C12.09,18.17 12.38,17.59 12.2,17.04L11.75,15.7L14.43,14.81L14.88,16.15C15,16.57 15.41,16.84 15.83,16.85L16.19,16.8C16.73,16.62 17,16.03 16.84,15.5L16.39,14.15L17.69,13.71M21.17,9.25C23.23,16.12 21.62,19.1 14.75,21.17C7.88,23.23 4.9,21.62 2.83,14.75C0.77,7.88 2.38,4.9 9.25,2.83C16.12,0.77 19.1,2.38 21.17,9.25Z" /></g><g id="sleep"><path d="M23,12H17V10L20.39,6H17V4H23V6L19.62,10H23V12M15,16H9V14L12.39,10H9V8H15V10L11.62,14H15V16M7,20H1V18L4.39,14H1V12H7V14L3.62,18H7V20Z" /></g><g id="sleep-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L12.73,16H9V14L9.79,13.06L2,5.27M23,12H17V10L20.39,6H17V4H23V6L19.62,10H23V12M9.82,8H15V10L13.54,11.72L9.82,8M7,20H1V18L4.39,14H1V12H7V14L3.62,18H7V20Z" /></g><g id="smoking"><path d="M7,19H22V15H7M2,19H5V15H2M10,4V5A3,3 0 0,1 7,8A5,5 0 0,0 2,13H4A3,3 0 0,1 7,10A5,5 0 0,0 12,5V4H10Z" /></g><g id="smoking-off"><path d="M15.82,14L19.82,18H22V14M2,18H5V14H2M3.28,4L2,5.27L4.44,7.71C2.93,8.61 2,10.24 2,12H4C4,10.76 4.77,9.64 5.93,9.2L10.73,14H7V18H14.73L18.73,22L20,20.72M10,3V4C10,5.09 9.4,6.1 8.45,6.62L9.89,8.07C11.21,7.13 12,5.62 12,4V3H10Z" /></g><g id="snapchat"><path d="M12,20.45C10.81,20.45 10.1,19.94 9.47,19.5C9,19.18 8.58,18.87 8.08,18.79C6.93,18.73 6.59,18.79 5.97,18.9C5.86,18.9 5.73,18.87 5.68,18.69C5.5,17.94 5.45,17.73 5.32,17.71C4,17.5 3.19,17.2 3.03,16.83C3,16.6 3.07,16.5 3.18,16.5C4.25,16.31 5.2,15.75 6,14.81C6.63,14.09 6.93,13.39 6.96,13.32C7.12,13 7.15,12.72 7.06,12.5C6.89,12.09 6.31,11.91 5.68,11.7C5.34,11.57 4.79,11.29 4.86,10.9C4.92,10.62 5.29,10.42 5.81,10.46C6.16,10.62 6.46,10.7 6.73,10.7C7.06,10.7 7.21,10.58 7.25,10.54C7.14,8.78 7.05,7.25 7.44,6.38C8.61,3.76 11.08,3.55 12,3.55C12.92,3.55 15.39,3.76 16.56,6.38C16.95,7.25 16.86,8.78 16.75,10.54C16.79,10.58 16.94,10.7 17.27,10.7C17.54,10.7 17.84,10.62 18.19,10.46C18.71,10.42 19.08,10.62 19.14,10.9C19.21,11.29 18.66,11.57 18.32,11.7C17.69,11.91 17.11,12.09 16.94,12.5C16.85,12.72 16.88,13 17.04,13.32C17.07,13.39 17.37,14.09 18,14.81C18.8,15.75 19.75,16.31 20.82,16.5C20.93,16.5 21,16.6 20.97,16.83C20.81,17.2 20,17.5 18.68,17.71C18.55,17.73 18.5,17.94 18.32,18.69C18.27,18.87 18.14,18.9 18.03,18.9C17.41,18.79 17.07,18.73 15.92,18.79C15.42,18.87 15,19.18 14.53,19.5C13.9,19.94 13.19,20.45 12,20.45Z" /></g><g id="snowflake"><path d="M20.79,13.95L18.46,14.57L16.46,13.44V10.56L18.46,9.43L20.79,10.05L21.31,8.12L19.54,7.65L20,5.88L18.07,5.36L17.45,7.69L15.45,8.82L13,7.38V5.12L14.71,3.41L13.29,2L12,3.29L10.71,2L9.29,3.41L11,5.12V7.38L8.5,8.82L6.5,7.69L5.92,5.36L4,5.88L4.47,7.65L2.7,8.12L3.22,10.05L5.55,9.43L7.55,10.56V13.45L5.55,14.58L3.22,13.96L2.7,15.89L4.47,16.36L4,18.12L5.93,18.64L6.55,16.31L8.55,15.18L11,16.62V18.88L9.29,20.59L10.71,22L12,20.71L13.29,22L14.7,20.59L13,18.88V16.62L15.5,15.17L17.5,16.3L18.12,18.63L20,18.12L19.53,16.35L21.3,15.88L20.79,13.95M9.5,10.56L12,9.11L14.5,10.56V13.44L12,14.89L9.5,13.44V10.56Z" /></g><g id="snowman"><path d="M17,17A5,5 0 0,1 12,22A5,5 0 0,1 7,17C7,15.5 7.65,14.17 8.69,13.25C8.26,12.61 8,11.83 8,11C8,10.86 8,10.73 8,10.59L5.04,8.87L4.83,8.71L2.29,9.39L2.03,8.43L4.24,7.84L2.26,6.69L2.76,5.82L4.74,6.97L4.15,4.75L5.11,4.5L5.8,7.04L6.04,7.14L8.73,8.69C9.11,8.15 9.62,7.71 10.22,7.42C9.5,6.87 9,6 9,5A3,3 0 0,1 12,2A3,3 0 0,1 15,5C15,6 14.5,6.87 13.78,7.42C14.38,7.71 14.89,8.15 15.27,8.69L17.96,7.14L18.2,7.04L18.89,4.5L19.85,4.75L19.26,6.97L21.24,5.82L21.74,6.69L19.76,7.84L21.97,8.43L21.71,9.39L19.17,8.71L18.96,8.87L16,10.59V11C16,11.83 15.74,12.61 15.31,13.25C16.35,14.17 17,15.5 17,17Z" /></g><g id="soccer"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,3C13.76,3 15.4,3.53 16.78,4.41L16.5,5H13L12,5L10.28,4.16L10.63,3.13C11.08,3.05 11.53,3 12,3M9.53,3.38L9.19,4.41L6.63,5.69L5.38,5.94C6.5,4.73 7.92,3.84 9.53,3.38M13,6H16L18.69,9.59L17.44,12.16L14.81,12.78L11.53,8.94L13,6M6.16,6.66L7,10L5.78,13.06L3.22,13.94C3.08,13.31 3,12.67 3,12C3,10.1 3.59,8.36 4.59,6.91L6.16,6.66M20.56,9.22C20.85,10.09 21,11.03 21,12C21,13.44 20.63,14.79 20.03,16H19L18.16,12.66L19.66,9.66L20.56,9.22M8,10H11L13.81,13.28L12,16L8.84,16.78L6.53,13.69L8,10M12,17L15,19L14.13,20.72C13.44,20.88 12.73,21 12,21C10.25,21 8.63,20.5 7.25,19.63L8.41,17.91L12,17M19,17H19.5C18.5,18.5 17,19.67 15.31,20.34L16,19L19,17Z" /></g><g id="sofa"><path d="M7,6H9A2,2 0 0,1 11,8V12H5V8A2,2 0 0,1 7,6M15,6H17A2,2 0 0,1 19,8V12H13V8A2,2 0 0,1 15,6M1,9H2A1,1 0 0,1 3,10V12A2,2 0 0,0 5,14H19A2,2 0 0,0 21,12V11L21,10A1,1 0 0,1 22,9H23A1,1 0 0,1 24,10V19H21V17H3V19H0V10A1,1 0 0,1 1,9Z" /></g><g id="solid"><path d="M0,0H24V24H0" /></g><g id="sort"><path d="M10,13V11H18V13H10M10,19V17H14V19H10M10,7V5H22V7H10M6,17H8.5L5,20.5L1.5,17H4V7H1.5L5,3.5L8.5,7H6V17Z" /></g><g id="sort-alphabetical"><path d="M9.25,5L12.5,1.75L15.75,5H9.25M15.75,19L12.5,22.25L9.25,19H15.75M8.89,14.3H6L5.28,17H2.91L6,7H9L12.13,17H9.67L8.89,14.3M6.33,12.68H8.56L7.93,10.56L7.67,9.59L7.42,8.63H7.39L7.17,9.6L6.93,10.58L6.33,12.68M13.05,17V15.74L17.8,8.97V8.91H13.5V7H20.73V8.34L16.09,15V15.08H20.8V17H13.05Z" /></g><g id="sort-ascending"><path d="M10,11V13H18V11H10M10,5V7H14V5H10M10,17V19H22V17H10M6,7H8.5L5,3.5L1.5,7H4V20H6V7Z" /></g><g id="sort-descending"><path d="M10,13V11H18V13H10M10,19V17H14V19H10M10,7V5H22V7H10M6,17H8.5L5,20.5L1.5,17H4V4H6V17Z" /></g><g id="sort-numeric"><path d="M7.78,7C9.08,7.04 10,7.53 10.57,8.46C11.13,9.4 11.41,10.56 11.39,11.95C11.4,13.5 11.09,14.73 10.5,15.62C9.88,16.5 8.95,16.97 7.71,17C6.45,16.96 5.54,16.5 4.96,15.56C4.38,14.63 4.09,13.45 4.09,12C4.09,10.55 4.39,9.36 5,8.44C5.59,7.5 6.5,7.04 7.78,7M7.75,8.63C7.31,8.63 6.96,8.9 6.7,9.46C6.44,10 6.32,10.87 6.32,12C6.31,13.15 6.44,14 6.69,14.54C6.95,15.1 7.31,15.37 7.77,15.37C8.69,15.37 9.16,14.24 9.17,12C9.17,9.77 8.7,8.65 7.75,8.63M13.33,17V15.22L13.76,15.24L14.3,15.22L15.34,15.03C15.68,14.92 16,14.78 16.26,14.58C16.59,14.35 16.86,14.08 17.07,13.76C17.29,13.45 17.44,13.12 17.53,12.78L17.5,12.77C17.05,13.19 16.38,13.4 15.47,13.41C14.62,13.4 13.91,13.15 13.34,12.65C12.77,12.15 12.5,11.43 12.46,10.5C12.47,9.5 12.81,8.69 13.47,8.03C14.14,7.37 15,7.03 16.12,7C17.37,7.04 18.29,7.45 18.88,8.24C19.47,9 19.76,10 19.76,11.19C19.75,12.15 19.61,13 19.32,13.76C19.03,14.5 18.64,15.13 18.12,15.64C17.66,16.06 17.11,16.38 16.47,16.61C15.83,16.83 15.12,16.96 14.34,17H13.33M16.06,8.63C15.65,8.64 15.32,8.8 15.06,9.11C14.81,9.42 14.68,9.84 14.68,10.36C14.68,10.8 14.8,11.16 15.03,11.46C15.27,11.77 15.63,11.92 16.11,11.93C16.43,11.93 16.7,11.86 16.92,11.74C17.14,11.61 17.3,11.46 17.41,11.28C17.5,11.17 17.53,10.97 17.53,10.71C17.54,10.16 17.43,9.69 17.2,9.28C16.97,8.87 16.59,8.65 16.06,8.63M9.25,5L12.5,1.75L15.75,5H9.25M15.75,19L12.5,22.25L9.25,19H15.75Z" /></g><g id="sort-variant"><path d="M3,13H15V11H3M3,6V8H21V6M3,18H9V16H3V18Z" /></g><g id="soundcloud"><path d="M11.56,8.87V17H20.32V17C22.17,16.87 23,15.73 23,14.33C23,12.85 21.88,11.66 20.38,11.66C20,11.66 19.68,11.74 19.35,11.88C19.11,9.54 17.12,7.71 14.67,7.71C13.5,7.71 12.39,8.15 11.56,8.87M10.68,9.89C10.38,9.71 10.06,9.57 9.71,9.5V17H11.1V9.34C10.95,9.5 10.81,9.7 10.68,9.89M8.33,9.35V17H9.25V9.38C9.06,9.35 8.87,9.34 8.67,9.34C8.55,9.34 8.44,9.34 8.33,9.35M6.5,10V17H7.41V9.54C7.08,9.65 6.77,9.81 6.5,10M4.83,12.5C4.77,12.5 4.71,12.44 4.64,12.41V17H5.56V10.86C5.19,11.34 4.94,11.91 4.83,12.5M2.79,12.22V16.91C3,16.97 3.24,17 3.5,17H3.72V12.14C3.64,12.13 3.56,12.12 3.5,12.12C3.24,12.12 3,12.16 2.79,12.22M1,14.56C1,15.31 1.34,15.97 1.87,16.42V12.71C1.34,13.15 1,13.82 1,14.56Z" /></g><g id="source-branch"><path d="M13,14C9.64,14 8.54,15.35 8.18,16.24C9.25,16.7 10,17.76 10,19A3,3 0 0,1 7,22A3,3 0 0,1 4,19C4,17.69 4.83,16.58 6,16.17V7.83C4.83,7.42 4,6.31 4,5A3,3 0 0,1 7,2A3,3 0 0,1 10,5C10,6.31 9.17,7.42 8,7.83V13.12C8.88,12.47 10.16,12 12,12C14.67,12 15.56,10.66 15.85,9.77C14.77,9.32 14,8.25 14,7A3,3 0 0,1 17,4A3,3 0 0,1 20,7C20,8.34 19.12,9.5 17.91,9.86C17.65,11.29 16.68,14 13,14M7,18A1,1 0 0,0 6,19A1,1 0 0,0 7,20A1,1 0 0,0 8,19A1,1 0 0,0 7,18M7,4A1,1 0 0,0 6,5A1,1 0 0,0 7,6A1,1 0 0,0 8,5A1,1 0 0,0 7,4M17,6A1,1 0 0,0 16,7A1,1 0 0,0 17,8A1,1 0 0,0 18,7A1,1 0 0,0 17,6Z" /></g><g id="source-commit"><path d="M17,12C17,14.42 15.28,16.44 13,16.9V21H11V16.9C8.72,16.44 7,14.42 7,12C7,9.58 8.72,7.56 11,7.1V3H13V7.1C15.28,7.56 17,9.58 17,12M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9Z" /></g><g id="source-commit-end"><path d="M17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12C7,9.58 8.72,7.56 11,7.1V3H13V7.1C15.28,7.56 17,9.58 17,12M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9Z" /></g><g id="source-commit-end-local"><path d="M12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M11,5V3H13V5H11Z" /></g><g id="source-commit-local"><path d="M12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M11,5V3H13V5H11M11,21V19H13V21H11Z" /></g><g id="source-commit-next-local"><path d="M17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12C7,9.58 8.72,7.56 11,7.1V3H13V7.1C15.28,7.56 17,9.58 17,12M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M11,21V19H13V21H11Z" /></g><g id="source-commit-start"><path d="M12,7A5,5 0 0,1 17,12C17,14.42 15.28,16.44 13,16.9V21H11V16.9C8.72,16.44 7,14.42 7,12A5,5 0 0,1 12,7M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9Z" /></g><g id="source-commit-start-next-local"><path d="M12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M11,21V19H13V21H11Z" /></g><g id="source-fork"><path d="M6,2A3,3 0 0,1 9,5C9,6.28 8.19,7.38 7.06,7.81C7.15,8.27 7.39,8.83 8,9.63C9,10.92 11,12.83 12,14.17C13,12.83 15,10.92 16,9.63C16.61,8.83 16.85,8.27 16.94,7.81C15.81,7.38 15,6.28 15,5A3,3 0 0,1 18,2A3,3 0 0,1 21,5C21,6.32 20.14,7.45 18.95,7.85C18.87,8.37 18.64,9 18,9.83C17,11.17 15,13.08 14,14.38C13.39,15.17 13.15,15.73 13.06,16.19C14.19,16.62 15,17.72 15,19A3,3 0 0,1 12,22A3,3 0 0,1 9,19C9,17.72 9.81,16.62 10.94,16.19C10.85,15.73 10.61,15.17 10,14.38C9,13.08 7,11.17 6,9.83C5.36,9 5.13,8.37 5.05,7.85C3.86,7.45 3,6.32 3,5A3,3 0 0,1 6,2M6,4A1,1 0 0,0 5,5A1,1 0 0,0 6,6A1,1 0 0,0 7,5A1,1 0 0,0 6,4M18,4A1,1 0 0,0 17,5A1,1 0 0,0 18,6A1,1 0 0,0 19,5A1,1 0 0,0 18,4M12,18A1,1 0 0,0 11,19A1,1 0 0,0 12,20A1,1 0 0,0 13,19A1,1 0 0,0 12,18Z" /></g><g id="source-merge"><path d="M7,3A3,3 0 0,1 10,6C10,7.29 9.19,8.39 8.04,8.81C8.58,13.81 13.08,14.77 15.19,14.96C15.61,13.81 16.71,13 18,13A3,3 0 0,1 21,16A3,3 0 0,1 18,19C16.69,19 15.57,18.16 15.16,17C10.91,16.8 9.44,15.19 8,13.39V15.17C9.17,15.58 10,16.69 10,18A3,3 0 0,1 7,21A3,3 0 0,1 4,18C4,16.69 4.83,15.58 6,15.17V8.83C4.83,8.42 4,7.31 4,6A3,3 0 0,1 7,3M7,5A1,1 0 0,0 6,6A1,1 0 0,0 7,7A1,1 0 0,0 8,6A1,1 0 0,0 7,5M7,17A1,1 0 0,0 6,18A1,1 0 0,0 7,19A1,1 0 0,0 8,18A1,1 0 0,0 7,17M18,15A1,1 0 0,0 17,16A1,1 0 0,0 18,17A1,1 0 0,0 19,16A1,1 0 0,0 18,15Z" /></g><g id="source-pull"><path d="M6,3A3,3 0 0,1 9,6C9,7.31 8.17,8.42 7,8.83V15.17C8.17,15.58 9,16.69 9,18A3,3 0 0,1 6,21A3,3 0 0,1 3,18C3,16.69 3.83,15.58 5,15.17V8.83C3.83,8.42 3,7.31 3,6A3,3 0 0,1 6,3M6,5A1,1 0 0,0 5,6A1,1 0 0,0 6,7A1,1 0 0,0 7,6A1,1 0 0,0 6,5M6,17A1,1 0 0,0 5,18A1,1 0 0,0 6,19A1,1 0 0,0 7,18A1,1 0 0,0 6,17M21,18A3,3 0 0,1 18,21A3,3 0 0,1 15,18C15,16.69 15.83,15.58 17,15.17V7H15V10.25L10.75,6L15,1.75V5H17A2,2 0 0,1 19,7V15.17C20.17,15.58 21,16.69 21,18M18,17A1,1 0 0,0 17,18A1,1 0 0,0 18,19A1,1 0 0,0 19,18A1,1 0 0,0 18,17Z" /></g><g id="speaker"><path d="M12,12A3,3 0 0,0 9,15A3,3 0 0,0 12,18A3,3 0 0,0 15,15A3,3 0 0,0 12,12M12,20A5,5 0 0,1 7,15A5,5 0 0,1 12,10A5,5 0 0,1 17,15A5,5 0 0,1 12,20M12,4A2,2 0 0,1 14,6A2,2 0 0,1 12,8C10.89,8 10,7.1 10,6C10,4.89 10.89,4 12,4M17,2H7C5.89,2 5,2.89 5,4V20A2,2 0 0,0 7,22H17A2,2 0 0,0 19,20V4C19,2.89 18.1,2 17,2Z" /></g><g id="speaker-off"><path d="M2,5.27L3.28,4L21,21.72L19.73,23L18.27,21.54C17.93,21.83 17.5,22 17,22H7C5.89,22 5,21.1 5,20V8.27L2,5.27M12,18A3,3 0 0,1 9,15C9,14.24 9.28,13.54 9.75,13L8.33,11.6C7.5,12.5 7,13.69 7,15A5,5 0 0,0 12,20C13.31,20 14.5,19.5 15.4,18.67L14,17.25C13.45,17.72 12.76,18 12,18M17,15A5,5 0 0,0 12,10H11.82L5.12,3.3C5.41,2.54 6.14,2 7,2H17A2,2 0 0,1 19,4V17.18L17,15.17V15M12,4C10.89,4 10,4.89 10,6A2,2 0 0,0 12,8A2,2 0 0,0 14,6C14,4.89 13.1,4 12,4Z" /></g><g id="speaker-wireless"><path d="M20.07,19.07L18.66,17.66C20.11,16.22 21,14.21 21,12C21,9.78 20.11,7.78 18.66,6.34L20.07,4.93C21.88,6.74 23,9.24 23,12C23,14.76 21.88,17.26 20.07,19.07M17.24,16.24L15.83,14.83C16.55,14.11 17,13.11 17,12C17,10.89 16.55,9.89 15.83,9.17L17.24,7.76C18.33,8.85 19,10.35 19,12C19,13.65 18.33,15.15 17.24,16.24M4,3H12A2,2 0 0,1 14,5V19A2,2 0 0,1 12,21H4A2,2 0 0,1 2,19V5A2,2 0 0,1 4,3M8,5A2,2 0 0,0 6,7A2,2 0 0,0 8,9A2,2 0 0,0 10,7A2,2 0 0,0 8,5M8,11A4,4 0 0,0 4,15A4,4 0 0,0 8,19A4,4 0 0,0 12,15A4,4 0 0,0 8,11M8,13A2,2 0 0,1 10,15A2,2 0 0,1 8,17A2,2 0 0,1 6,15A2,2 0 0,1 8,13Z" /></g><g id="speedometer"><path d="M12,16A3,3 0 0,1 9,13C9,11.88 9.61,10.9 10.5,10.39L20.21,4.77L14.68,14.35C14.18,15.33 13.17,16 12,16M12,3C13.81,3 15.5,3.5 16.97,4.32L14.87,5.53C14,5.19 13,5 12,5A8,8 0 0,0 4,13C4,15.21 4.89,17.21 6.34,18.65H6.35C6.74,19.04 6.74,19.67 6.35,20.06C5.96,20.45 5.32,20.45 4.93,20.07V20.07C3.12,18.26 2,15.76 2,13A10,10 0 0,1 12,3M22,13C22,15.76 20.88,18.26 19.07,20.07V20.07C18.68,20.45 18.05,20.45 17.66,20.06C17.27,19.67 17.27,19.04 17.66,18.65V18.65C19.11,17.2 20,15.21 20,13C20,12 19.81,11 19.46,10.1L20.67,8C21.5,9.5 22,11.18 22,13Z" /></g><g id="spellcheck"><path d="M21.59,11.59L13.5,19.68L9.83,16L8.42,17.41L13.5,22.5L23,13M6.43,11L8.5,5.5L10.57,11M12.45,16H14.54L9.43,3H7.57L2.46,16H4.55L5.67,13H11.31L12.45,16Z" /></g><g id="spotify"><path d="M17.9,10.9C14.7,9 9.35,8.8 6.3,9.75C5.8,9.9 5.3,9.6 5.15,9.15C5,8.65 5.3,8.15 5.75,8C9.3,6.95 15.15,7.15 18.85,9.35C19.3,9.6 19.45,10.2 19.2,10.65C18.95,11 18.35,11.15 17.9,10.9M17.8,13.7C17.55,14.05 17.1,14.2 16.75,13.95C14.05,12.3 9.95,11.8 6.8,12.8C6.4,12.9 5.95,12.7 5.85,12.3C5.75,11.9 5.95,11.45 6.35,11.35C10,10.25 14.5,10.8 17.6,12.7C17.9,12.85 18.05,13.35 17.8,13.7M16.6,16.45C16.4,16.75 16.05,16.85 15.75,16.65C13.4,15.2 10.45,14.9 6.95,15.7C6.6,15.8 6.3,15.55 6.2,15.25C6.1,14.9 6.35,14.6 6.65,14.5C10.45,13.65 13.75,14 16.35,15.6C16.7,15.75 16.75,16.15 16.6,16.45M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="spotlight"><path d="M2,6L7.09,8.55C6.4,9.5 6,10.71 6,12C6,13.29 6.4,14.5 7.09,15.45L2,18V6M6,3H18L15.45,7.09C14.5,6.4 13.29,6 12,6C10.71,6 9.5,6.4 8.55,7.09L6,3M22,6V18L16.91,15.45C17.6,14.5 18,13.29 18,12C18,10.71 17.6,9.5 16.91,8.55L22,6M18,21H6L8.55,16.91C9.5,17.6 10.71,18 12,18C13.29,18 14.5,17.6 15.45,16.91L18,21M12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z" /></g><g id="spotlight-beam"><path d="M9,16.5L9.91,15.59L15.13,20.8L14.21,21.71L9,16.5M15.5,10L16.41,9.09L21.63,14.3L20.71,15.21L15.5,10M6.72,2.72L10.15,6.15L6.15,10.15L2.72,6.72C1.94,5.94 1.94,4.67 2.72,3.89L3.89,2.72C4.67,1.94 5.94,1.94 6.72,2.72M14.57,7.5L15.28,8.21L8.21,15.28L7.5,14.57L6.64,11.07L11.07,6.64L14.57,7.5Z" /></g><g id="spray"><path d="M10,4H12V6H10V4M7,3H9V5H7V3M7,6H9V8H7V6M6,8V10H4V8H6M6,5V7H4V5H6M6,2V4H4V2H6M13,22A2,2 0 0,1 11,20V10A2,2 0 0,1 13,8V7H14V4H17V7H18V8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H13M13,10V20H18V10H13Z" /></g><g id="square-inc"><path d="M6,3H18A3,3 0 0,1 21,6V18A3,3 0 0,1 18,21H6A3,3 0 0,1 3,18V6A3,3 0 0,1 6,3M7,6A1,1 0 0,0 6,7V17A1,1 0 0,0 7,18H17A1,1 0 0,0 18,17V7A1,1 0 0,0 17,6H7M9.5,9H14.5A0.5,0.5 0 0,1 15,9.5V14.5A0.5,0.5 0 0,1 14.5,15H9.5A0.5,0.5 0 0,1 9,14.5V9.5A0.5,0.5 0 0,1 9.5,9Z" /></g><g id="square-inc-cash"><path d="M5.5,0H18.5A5.5,5.5 0 0,1 24,5.5V18.5A5.5,5.5 0 0,1 18.5,24H5.5A5.5,5.5 0 0,1 0,18.5V5.5A5.5,5.5 0 0,1 5.5,0M15.39,15.18C15.39,16.76 14.5,17.81 12.85,17.95V12.61C14.55,13.13 15.39,13.66 15.39,15.18M11.65,6V10.88C10.34,10.5 9.03,9.93 9.03,8.43C9.03,6.94 10.18,6.12 11.65,6M15.5,7.6L16.5,6.8C15.62,5.66 14.4,4.92 12.85,4.77V3.8H11.65V3.8L11.65,4.75C9.5,4.89 7.68,6.17 7.68,8.5C7.68,11 9.74,11.78 11.65,12.29V17.96C10.54,17.84 9.29,17.31 8.43,16.03L7.3,16.78C8.2,18.12 9.76,19 11.65,19.14V20.2H12.07L12.85,20.2V19.16C15.35,19 16.7,17.34 16.7,15.14C16.7,12.58 14.81,11.76 12.85,11.19V6.05C14,6.22 14.85,6.76 15.5,7.6Z" /></g><g id="stackexchange"><path d="M4,14.04V11H20V14.04H4M4,10V7H20V10H4M17.46,2C18.86,2 20,3.18 20,4.63V6H4V4.63C4,3.18 5.14,2 6.54,2H17.46M4,15H20V16.35C20,17.81 18.86,19 17.46,19H16.5L13,22V19H6.54C5.14,19 4,17.81 4,16.35V15Z" /></g><g id="stackoverflow"><path d="M17.36,20.2V14.82H19.15V22H3V14.82H4.8V20.2H17.36M6.77,14.32L7.14,12.56L15.93,14.41L15.56,16.17L6.77,14.32M7.93,10.11L8.69,8.5L16.83,12.28L16.07,13.9L7.93,10.11M10.19,6.12L11.34,4.74L18.24,10.5L17.09,11.87L10.19,6.12M14.64,1.87L20,9.08L18.56,10.15L13.2,2.94L14.64,1.87M6.59,18.41V16.61H15.57V18.41H6.59Z" /></g><g id="stadium"><path d="M5,3H7L10,5L7,7V8.33C8.47,8.12 10.18,8 12,8C13.82,8 15.53,8.12 17,8.33V3H19L22,5L19,7V8.71C20.85,9.17 22,9.8 22,10.5C22,11.88 17.5,13 12,13C6.5,13 2,11.88 2,10.5C2,9.8 3.15,9.17 5,8.71V3M12,9.5C8.69,9.5 7,9.67 7,10.5C7,11.33 8.69,11.5 12,11.5C15.31,11.5 17,11.33 17,10.5C17,9.67 15.31,9.5 12,9.5M12,14.75C15.81,14.75 19.2,14.08 21.4,13.05L20,21H15V19A2,2 0 0,0 13,17H11A2,2 0 0,0 9,19V21H4L2.6,13.05C4.8,14.08 8.19,14.75 12,14.75Z" /></g><g id="stairs"><path d="M15,5V9H11V13H7V17H3V20H10V16H14V12H18V8H22V5H15Z" /></g><g id="star"><path d="M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z" /></g><g id="star-circle"><path d="M16.23,18L12,15.45L7.77,18L8.89,13.19L5.16,9.96L10.08,9.54L12,5L13.92,9.53L18.84,9.95L15.11,13.18L16.23,18M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="star-half"><path d="M12,15.89V6.59L13.71,10.63L18.09,11L14.77,13.88L15.76,18.16M22,9.74L14.81,9.13L12,2.5L9.19,9.13L2,9.74L7.45,14.47L5.82,21.5L12,17.77L18.18,21.5L16.54,14.47L22,9.74Z" /></g><g id="star-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L17.05,20.31L12,17.27L5.82,21L7.45,13.97L2,9.24L5.66,8.93L2,5.27M12,2L14.81,8.62L22,9.24L16.54,13.97L16.77,14.95L9.56,7.74L12,2Z" /></g><g id="star-outline"><path d="M12,15.39L8.24,17.66L9.23,13.38L5.91,10.5L10.29,10.13L12,6.09L13.71,10.13L18.09,10.5L14.77,13.38L15.76,17.66M22,9.24L14.81,8.63L12,2L9.19,8.63L2,9.24L7.45,13.97L5.82,21L12,17.27L18.18,21L16.54,13.97L22,9.24Z" /></g><g id="steam"><path d="M20.14,7.79C21.33,7.79 22.29,8.75 22.29,9.93C22.29,11.11 21.33,12.07 20.14,12.07A2.14,2.14 0 0,1 18,9.93C18,8.75 18.96,7.79 20.14,7.79M3,6.93A3,3 0 0,1 6,9.93V10.24L12.33,13.54C12.84,13.15 13.46,12.93 14.14,12.93L16.29,9.93C16.29,7.8 18,6.07 20.14,6.07A3.86,3.86 0 0,1 24,9.93A3.86,3.86 0 0,1 20.14,13.79L17.14,15.93A3,3 0 0,1 14.14,18.93C12.5,18.93 11.14,17.59 11.14,15.93C11.14,15.89 11.14,15.85 11.14,15.82L4.64,12.44C4.17,12.75 3.6,12.93 3,12.93A3,3 0 0,1 0,9.93A3,3 0 0,1 3,6.93M15.03,14.94C15.67,15.26 15.92,16.03 15.59,16.67C15.27,17.3 14.5,17.55 13.87,17.23L12.03,16.27C12.19,17.29 13.08,18.07 14.14,18.07C15.33,18.07 16.29,17.11 16.29,15.93C16.29,14.75 15.33,13.79 14.14,13.79C13.81,13.79 13.5,13.86 13.22,14L15.03,14.94M3,7.79C1.82,7.79 0.86,8.75 0.86,9.93C0.86,11.11 1.82,12.07 3,12.07C3.24,12.07 3.5,12.03 3.7,11.95L2.28,11.22C1.64,10.89 1.39,10.12 1.71,9.5C2.04,8.86 2.81,8.6 3.44,8.93L5.14,9.81C5.08,8.68 4.14,7.79 3,7.79M20.14,6.93C18.5,6.93 17.14,8.27 17.14,9.93A3,3 0 0,0 20.14,12.93A3,3 0 0,0 23.14,9.93A3,3 0 0,0 20.14,6.93Z" /></g><g id="steering"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4C16.1,4 19.5,7.1 20,11H17C16.5,9.9 14.4,9 12,9C9.6,9 7.5,9.9 7,11H4C4.5,7.1 7.9,4 12,4M4,13H7C7.2,14.3 8.2,16.6 11,17V20C7.4,19.6 4.4,16.6 4,13M13,20V17C15.8,16.6 16.7,14.3 17,13H20C19.6,16.6 16.6,19.6 13,20Z" /></g><g id="step-backward"><path d="M19,5V19H16V5M14,5V19L3,12" /></g><g id="step-backward-2"><path d="M17,5H14V19H17V5M12,5L1,12L12,19V5M22,5H19V19H22V5Z" /></g><g id="step-forward"><path d="M5,5V19H8V5M10,5V19L21,12" /></g><g id="step-forward-2"><path d="M7,5H10V19H7V5M12,5L23,12L12,19V5M2,5H5V19H2V5Z" /></g><g id="stethoscope"><path d="M19,8C19.56,8 20,8.43 20,9A1,1 0 0,1 19,10C18.43,10 18,9.55 18,9C18,8.43 18.43,8 19,8M2,2V11C2,13.96 4.19,16.5 7.14,16.91C7.76,19.92 10.42,22 13.5,22A6.5,6.5 0 0,0 20,15.5V11.81C21.16,11.39 22,10.29 22,9A3,3 0 0,0 19,6A3,3 0 0,0 16,9C16,10.29 16.84,11.4 18,11.81V15.41C18,17.91 16,19.91 13.5,19.91C11.5,19.91 9.82,18.7 9.22,16.9C12,16.3 14,13.8 14,11V2H10V5H12V11A4,4 0 0,1 8,15A4,4 0 0,1 4,11V5H6V2H2Z" /></g><g id="sticker"><path d="M12.12,18.46L18.3,12.28C16.94,12.59 15.31,13.2 14.07,14.46C13.04,15.5 12.39,16.83 12.12,18.46M20.75,10H21.05C21.44,10 21.79,10.27 21.93,10.64C22.07,11 22,11.43 21.7,11.71L11.7,21.71C11.5,21.9 11.26,22 11,22L10.64,21.93C10.27,21.79 10,21.44 10,21.05C9.84,17.66 10.73,14.96 12.66,13.03C15.5,10.2 19.62,10 20.75,10M12,2C16.5,2 20.34,5 21.58,9.11L20,9H19.42C18.24,6.07 15.36,4 12,4A8,8 0 0,0 4,12C4,15.36 6.07,18.24 9,19.42C8.97,20.13 9,20.85 9.11,21.57C5,20.33 2,16.5 2,12C2,6.47 6.5,2 12,2Z" /></g><g id="stocking"><path d="M17,2A2,2 0 0,1 19,4V7A2,2 0 0,1 17,9V17C17,17.85 16.5,18.57 15.74,18.86L9.5,21.77C8.5,22.24 7.29,21.81 6.83,20.81L6,19C5.5,18 5.95,16.8 6.95,16.34L10,14.91V9A2,2 0 0,1 8,7V4A2,2 0 0,1 10,2H17M10,4V7H17V4H10Z" /></g><g id="stop"><path d="M18,18H6V6H18V18Z" /></g><g id="stop-circle"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M9,9H15V15H9" /></g><g id="stop-circle-outline"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4M9,9V15H15V9" /></g><g id="store"><path d="M12,18H6V14H12M21,14V12L20,7H4L3,12V14H4V20H14V14H18V20H20V14M20,4H4V6H20V4Z" /></g><g id="store-24-hour"><path d="M16,12H15V10H13V7H14V9H15V7H16M11,10H9V11H11V12H8V9H10V8H8V7H11M19,7V4H5V7H2V20H10V16H14V20H22V7H19Z" /></g><g id="stove"><path d="M6,14H8L11,17H9L6,14M4,4H5V3A1,1 0 0,1 6,2H10A1,1 0 0,1 11,3V4H13V3A1,1 0 0,1 14,2H18A1,1 0 0,1 19,3V4H20A2,2 0 0,1 22,6V19A2,2 0 0,1 20,21V22H17V21H7V22H4V21A2,2 0 0,1 2,19V6A2,2 0 0,1 4,4M18,7A1,1 0 0,1 19,8A1,1 0 0,1 18,9A1,1 0 0,1 17,8A1,1 0 0,1 18,7M14,7A1,1 0 0,1 15,8A1,1 0 0,1 14,9A1,1 0 0,1 13,8A1,1 0 0,1 14,7M20,6H4V10H20V6M4,19H20V12H4V19M6,7A1,1 0 0,1 7,8A1,1 0 0,1 6,9A1,1 0 0,1 5,8A1,1 0 0,1 6,7M13,14H15L18,17H16L13,14Z" /></g><g id="subdirectory-arrow-left"><path d="M11,9L12.42,10.42L8.83,14H18V4H20V16H8.83L12.42,19.58L11,21L5,15L11,9Z" /></g><g id="subdirectory-arrow-right"><path d="M19,15L13,21L11.58,19.58L15.17,16H4V4H6V14H15.17L11.58,10.42L13,9L19,15Z" /></g><g id="subway"><path d="M8.5,15A1,1 0 0,1 9.5,16A1,1 0 0,1 8.5,17A1,1 0 0,1 7.5,16A1,1 0 0,1 8.5,15M7,9H17V14H7V9M15.5,15A1,1 0 0,1 16.5,16A1,1 0 0,1 15.5,17A1,1 0 0,1 14.5,16A1,1 0 0,1 15.5,15M18,15.88V9C18,6.38 15.32,6 12,6C9,6 6,6.37 6,9V15.88A2.62,2.62 0 0,0 8.62,18.5L7.5,19.62V20H9.17L10.67,18.5H13.5L15,20H16.5V19.62L15.37,18.5C16.82,18.5 18,17.33 18,15.88M17.8,2.8C20.47,3.84 22,6.05 22,8.86V22H2V8.86C2,6.05 3.53,3.84 6.2,2.8C8,2.09 10.14,2 12,2C13.86,2 16,2.09 17.8,2.8Z" /></g><g id="subway-variant"><path d="M18,11H13V6H18M16.5,17A1.5,1.5 0 0,1 15,15.5A1.5,1.5 0 0,1 16.5,14A1.5,1.5 0 0,1 18,15.5A1.5,1.5 0 0,1 16.5,17M11,11H6V6H11M7.5,17A1.5,1.5 0 0,1 6,15.5A1.5,1.5 0 0,1 7.5,14A1.5,1.5 0 0,1 9,15.5A1.5,1.5 0 0,1 7.5,17M12,2C7.58,2 4,2.5 4,6V15.5A3.5,3.5 0 0,0 7.5,19L6,20.5V21H18V20.5L16.5,19A3.5,3.5 0 0,0 20,15.5V6C20,2.5 16.42,2 12,2Z" /></g><g id="sunglasses"><path d="M7,17H4C2.38,17 0.96,15.74 0.76,14.14L0.26,11.15C0.15,10.3 0.39,9.5 0.91,8.92C1.43,8.34 2.19,8 3,8H9C9.83,8 10.58,8.35 11.06,8.96C11.17,9.11 11.27,9.27 11.35,9.45C11.78,9.36 12.22,9.36 12.64,9.45C12.72,9.27 12.82,9.11 12.94,8.96C13.41,8.35 14.16,8 15,8H21C21.81,8 22.57,8.34 23.09,8.92C23.6,9.5 23.84,10.3 23.74,11.11L23.23,14.18C23.04,15.74 21.61,17 20,17H17C15.44,17 13.92,15.81 13.54,14.3L12.64,11.59C12.26,11.31 11.73,11.31 11.35,11.59L10.43,14.37C10.07,15.82 8.56,17 7,17Z" /></g><g id="surround-sound"><path d="M20,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6A2,2 0 0,0 20,4M7.76,16.24L6.35,17.65C4.78,16.1 4,14.05 4,12C4,9.95 4.78,7.9 6.34,6.34L7.75,7.75C6.59,8.93 6,10.46 6,12C6,13.54 6.59,15.07 7.76,16.24M12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16M17.66,17.66L16.25,16.25C17.41,15.07 18,13.54 18,12C18,10.46 17.41,8.93 16.24,7.76L17.65,6.35C19.22,7.9 20,9.95 20,12C20,14.05 19.22,16.1 17.66,17.66M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z" /></g><g id="svg"><path d="M5.13,10.71H8.87L6.22,8.06C5.21,8.06 4.39,7.24 4.39,6.22A1.83,1.83 0 0,1 6.22,4.39C7.24,4.39 8.06,5.21 8.06,6.22L10.71,8.87V5.13C10,4.41 10,3.25 10.71,2.54C11.42,1.82 12.58,1.82 13.29,2.54C14,3.25 14,4.41 13.29,5.13V8.87L15.95,6.22C15.95,5.21 16.76,4.39 17.78,4.39C18.79,4.39 19.61,5.21 19.61,6.22C19.61,7.24 18.79,8.06 17.78,8.06L15.13,10.71H18.87C19.59,10 20.75,10 21.46,10.71C22.18,11.42 22.18,12.58 21.46,13.29C20.75,14 19.59,14 18.87,13.29H15.13L17.78,15.95C18.79,15.95 19.61,16.76 19.61,17.78A1.83,1.83 0 0,1 17.78,19.61C16.76,19.61 15.95,18.79 15.95,17.78L13.29,15.13V18.87C14,19.59 14,20.75 13.29,21.46C12.58,22.18 11.42,22.18 10.71,21.46C10,20.75 10,19.59 10.71,18.87V15.13L8.06,17.78C8.06,18.79 7.24,19.61 6.22,19.61C5.21,19.61 4.39,18.79 4.39,17.78C4.39,16.76 5.21,15.95 6.22,15.95L8.87,13.29H5.13C4.41,14 3.25,14 2.54,13.29C1.82,12.58 1.82,11.42 2.54,10.71C3.25,10 4.41,10 5.13,10.71Z" /></g><g id="swap-horizontal"><path d="M21,9L17,5V8H10V10H17V13M7,11L3,15L7,19V16H14V14H7V11Z" /></g><g id="swap-vertical"><path d="M9,3L5,7H8V14H10V7H13M16,17V10H14V17H11L15,21L19,17H16Z" /></g><g id="swim"><path d="M2,18C4.22,17 6.44,16 8.67,16C10.89,16 13.11,18 15.33,18C17.56,18 19.78,16 22,16V19C19.78,19 17.56,21 15.33,21C13.11,21 10.89,19 8.67,19C6.44,19 4.22,20 2,21V18M8.67,13C7.89,13 7.12,13.12 6.35,13.32L11.27,9.88L10.23,8.64C10.09,8.47 10,8.24 10,8C10,7.66 10.17,7.35 10.44,7.17L16.16,3.17L17.31,4.8L12.47,8.19L17.7,14.42C16.91,14.75 16.12,15 15.33,15C13.11,15 10.89,13 8.67,13M18,7A2,2 0 0,1 20,9A2,2 0 0,1 18,11A2,2 0 0,1 16,9A2,2 0 0,1 18,7Z" /></g><g id="switch"><path d="M13,18H14A1,1 0 0,1 15,19H22V21H15A1,1 0 0,1 14,22H10A1,1 0 0,1 9,21H2V19H9A1,1 0 0,1 10,18H11V16H8A1,1 0 0,1 7,15V3A1,1 0 0,1 8,2H16A1,1 0 0,1 17,3V15A1,1 0 0,1 16,16H13V18M13,6H14V4H13V6M9,4V6H11V4H9M9,8V10H11V8H9M9,12V14H11V12H9Z" /></g><g id="sword"><path d="M6.92,5H5L14,14L15,13.06M19.96,19.12L19.12,19.96C18.73,20.35 18.1,20.35 17.71,19.96L14.59,16.84L11.91,19.5L10.5,18.09L11.92,16.67L3,7.75V3H7.75L16.67,11.92L18.09,10.5L19.5,11.91L16.83,14.58L19.95,17.7C20.35,18.1 20.35,18.73 19.96,19.12Z" /></g><g id="sync"><path d="M12,18A6,6 0 0,1 6,12C6,11 6.25,10.03 6.7,9.2L5.24,7.74C4.46,8.97 4,10.43 4,12A8,8 0 0,0 12,20V23L16,19L12,15M12,4V1L8,5L12,9V6A6,6 0 0,1 18,12C18,13 17.75,13.97 17.3,14.8L18.76,16.26C19.54,15.03 20,13.57 20,12A8,8 0 0,0 12,4Z" /></g><g id="sync-alert"><path d="M11,13H13V7H11M21,4H15V10L17.24,7.76C18.32,8.85 19,10.34 19,12C19,14.61 17.33,16.83 15,17.65V19.74C18.45,18.85 21,15.73 21,12C21,9.79 20.09,7.8 18.64,6.36M11,17H13V15H11M3,12C3,14.21 3.91,16.2 5.36,17.64L3,20H9V14L6.76,16.24C5.68,15.15 5,13.66 5,12C5,9.39 6.67,7.17 9,6.35V4.26C5.55,5.15 3,8.27 3,12Z" /></g><g id="sync-off"><path d="M20,4H14V10L16.24,7.76C17.32,8.85 18,10.34 18,12C18,13 17.75,13.94 17.32,14.77L18.78,16.23C19.55,15 20,13.56 20,12C20,9.79 19.09,7.8 17.64,6.36L20,4M2.86,5.41L5.22,7.77C4.45,9 4,10.44 4,12C4,14.21 4.91,16.2 6.36,17.64L4,20H10V14L7.76,16.24C6.68,15.15 6,13.66 6,12C6,11 6.25,10.06 6.68,9.23L14.76,17.31C14.5,17.44 14.26,17.56 14,17.65V19.74C14.79,19.53 15.54,19.2 16.22,18.78L18.58,21.14L19.85,19.87L4.14,4.14L2.86,5.41M10,6.35V4.26C9.2,4.47 8.45,4.8 7.77,5.22L9.23,6.68C9.5,6.56 9.73,6.44 10,6.35Z" /></g><g id="tab"><path d="M19,19H5V5H12V9H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="tab-unselected"><path d="M15,21H17V19H15M11,21H13V19H11M19,13H21V11H19M19,21A2,2 0 0,0 21,19H19M7,5H9V3H7M19,17H21V15H19M19,3H11V9H21V5C21,3.89 20.1,3 19,3M5,21V19H3A2,2 0 0,0 5,21M3,17H5V15H3M7,21H9V19H7M3,5H5V3C3.89,3 3,3.89 3,5M3,13H5V11H3M3,9H5V7H3V9Z" /></g><g id="table"><path d="M5,4H19A2,2 0 0,1 21,6V18A2,2 0 0,1 19,20H5A2,2 0 0,1 3,18V6A2,2 0 0,1 5,4M5,8V12H11V8H5M13,8V12H19V8H13M5,14V18H11V14H5M13,14V18H19V14H13Z" /></g><g id="table-column-plus-after"><path d="M11,2A2,2 0 0,1 13,4V20A2,2 0 0,1 11,22H2V2H11M4,10V14H11V10H4M4,16V20H11V16H4M4,4V8H11V4H4M15,11H18V8H20V11H23V13H20V16H18V13H15V11Z" /></g><g id="table-column-plus-before"><path d="M13,2A2,2 0 0,0 11,4V20A2,2 0 0,0 13,22H22V2H13M20,10V14H13V10H20M20,16V20H13V16H20M20,4V8H13V4H20M9,11H6V8H4V11H1V13H4V16H6V13H9V11Z" /></g><g id="table-column-remove"><path d="M4,2H11A2,2 0 0,1 13,4V20A2,2 0 0,1 11,22H4A2,2 0 0,1 2,20V4A2,2 0 0,1 4,2M4,10V14H11V10H4M4,16V20H11V16H4M4,4V8H11V4H4M17.59,12L15,9.41L16.41,8L19,10.59L21.59,8L23,9.41L20.41,12L23,14.59L21.59,16L19,13.41L16.41,16L15,14.59L17.59,12Z" /></g><g id="table-column-width"><path d="M5,8H19A2,2 0 0,1 21,10V20A2,2 0 0,1 19,22H5A2,2 0 0,1 3,20V10A2,2 0 0,1 5,8M5,12V15H11V12H5M13,12V15H19V12H13M5,17V20H11V17H5M13,17V20H19V17H13M11,2H21V6H19V4H13V6H11V2Z" /></g><g id="table-edit"><path d="M21.7,13.35L20.7,14.35L18.65,12.3L19.65,11.3C19.86,11.08 20.21,11.08 20.42,11.3L21.7,12.58C21.92,12.79 21.92,13.14 21.7,13.35M12,18.94L18.07,12.88L20.12,14.93L14.06,21H12V18.94M4,2H18A2,2 0 0,1 20,4V8.17L16.17,12H12V16.17L10.17,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2M4,6V10H10V6H4M12,6V10H18V6H12M4,12V16H10V12H4Z" /></g><g id="table-large"><path d="M4,3H20A2,2 0 0,1 22,5V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V5A2,2 0 0,1 4,3M4,7V10H8V7H4M10,7V10H14V7H10M20,10V7H16V10H20M4,12V15H8V12H4M4,20H8V17H4V20M10,12V15H14V12H10M10,20H14V17H10V20M20,20V17H16V20H20M20,12H16V15H20V12Z" /></g><g id="table-row-height"><path d="M3,5H15A2,2 0 0,1 17,7V17A2,2 0 0,1 15,19H3A2,2 0 0,1 1,17V7A2,2 0 0,1 3,5M3,9V12H8V9H3M10,9V12H15V9H10M3,14V17H8V14H3M10,14V17H15V14H10M23,14V7H19V9H21V12H19V14H23Z" /></g><g id="table-row-plus-after"><path d="M22,10A2,2 0 0,1 20,12H4A2,2 0 0,1 2,10V3H4V5H8V3H10V5H14V3H16V5H20V3H22V10M4,10H8V7H4V10M10,10H14V7H10V10M20,10V7H16V10H20M11,14H13V17H16V19H13V22H11V19H8V17H11V14Z" /></g><g id="table-row-plus-before"><path d="M22,14A2,2 0 0,0 20,12H4A2,2 0 0,0 2,14V21H4V19H8V21H10V19H14V21H16V19H20V21H22V14M4,14H8V17H4V14M10,14H14V17H10V14M20,14V17H16V14H20M11,10H13V7H16V5H13V2H11V5H8V7H11V10Z" /></g><g id="table-row-remove"><path d="M9.41,13L12,15.59L14.59,13L16,14.41L13.41,17L16,19.59L14.59,21L12,18.41L9.41,21L8,19.59L10.59,17L8,14.41L9.41,13M22,9A2,2 0 0,1 20,11H4A2,2 0 0,1 2,9V6A2,2 0 0,1 4,4H20A2,2 0 0,1 22,6V9M4,9H8V6H4V9M10,9H14V6H10V9M16,9H20V6H16V9Z" /></g><g id="tablet"><path d="M19,18H5V6H19M21,4H3C1.89,4 1,4.89 1,6V18A2,2 0 0,0 3,20H21A2,2 0 0,0 23,18V6C23,4.89 22.1,4 21,4Z" /></g><g id="tablet-android"><path d="M19.25,19H4.75V3H19.25M14,22H10V21H14M18,0H6A3,3 0 0,0 3,3V21A3,3 0 0,0 6,24H18A3,3 0 0,0 21,21V3A3,3 0 0,0 18,0Z" /></g><g id="tablet-ipad"><path d="M19,19H4V3H19M11.5,23A1.5,1.5 0 0,1 10,21.5A1.5,1.5 0 0,1 11.5,20A1.5,1.5 0 0,1 13,21.5A1.5,1.5 0 0,1 11.5,23M18.5,0H4.5A2.5,2.5 0 0,0 2,2.5V21.5A2.5,2.5 0 0,0 4.5,24H18.5A2.5,2.5 0 0,0 21,21.5V2.5A2.5,2.5 0 0,0 18.5,0Z" /></g><g id="tag"><path d="M5.5,7A1.5,1.5 0 0,1 4,5.5A1.5,1.5 0 0,1 5.5,4A1.5,1.5 0 0,1 7,5.5A1.5,1.5 0 0,1 5.5,7M21.41,11.58L12.41,2.58C12.05,2.22 11.55,2 11,2H4C2.89,2 2,2.89 2,4V11C2,11.55 2.22,12.05 2.59,12.41L11.58,21.41C11.95,21.77 12.45,22 13,22C13.55,22 14.05,21.77 14.41,21.41L21.41,14.41C21.78,14.05 22,13.55 22,13C22,12.44 21.77,11.94 21.41,11.58Z" /></g><g id="tag-faces"><path d="M15,18C11.68,18 9,15.31 9,12C9,8.68 11.68,6 15,6A6,6 0 0,1 21,12A6,6 0 0,1 15,18M4,13A1,1 0 0,1 3,12A1,1 0 0,1 4,11A1,1 0 0,1 5,12A1,1 0 0,1 4,13M22,3H7.63C6.97,3 6.38,3.32 6,3.81L0,12L6,20.18C6.38,20.68 6.97,21 7.63,21H22A2,2 0 0,0 24,19V5C24,3.89 23.1,3 22,3M13,11A1,1 0 0,0 14,10A1,1 0 0,0 13,9A1,1 0 0,0 12,10A1,1 0 0,0 13,11M15,16C16.86,16 18.35,14.72 18.8,13H11.2C11.65,14.72 13.14,16 15,16M17,11A1,1 0 0,0 18,10A1,1 0 0,0 17,9A1,1 0 0,0 16,10A1,1 0 0,0 17,11Z" /></g><g id="tag-heart"><path d="M21.41,11.58L12.41,2.58C12.05,2.22 11.55,2 11,2H4A2,2 0 0,0 2,4V11C2,11.55 2.22,12.05 2.59,12.42L11.59,21.42C11.95,21.78 12.45,22 13,22C13.55,22 14.05,21.78 14.41,21.41L21.41,14.41C21.78,14.05 22,13.55 22,13C22,12.45 21.77,11.94 21.41,11.58M5.5,7A1.5,1.5 0 0,1 4,5.5A1.5,1.5 0 0,1 5.5,4A1.5,1.5 0 0,1 7,5.5A1.5,1.5 0 0,1 5.5,7M17.27,15.27L13,19.54L8.73,15.27C8.28,14.81 8,14.19 8,13.5A2.5,2.5 0 0,1 10.5,11C11.19,11 11.82,11.28 12.27,11.74L13,12.46L13.73,11.73C14.18,11.28 14.81,11 15.5,11A2.5,2.5 0 0,1 18,13.5C18,14.19 17.72,14.82 17.27,15.27Z" /></g><g id="tag-multiple"><path d="M5.5,9A1.5,1.5 0 0,0 7,7.5A1.5,1.5 0 0,0 5.5,6A1.5,1.5 0 0,0 4,7.5A1.5,1.5 0 0,0 5.5,9M17.41,11.58C17.77,11.94 18,12.44 18,13C18,13.55 17.78,14.05 17.41,14.41L12.41,19.41C12.05,19.77 11.55,20 11,20C10.45,20 9.95,19.78 9.58,19.41L2.59,12.42C2.22,12.05 2,11.55 2,11V6C2,4.89 2.89,4 4,4H9C9.55,4 10.05,4.22 10.41,4.58L17.41,11.58M13.54,5.71L14.54,4.71L21.41,11.58C21.78,11.94 22,12.45 22,13C22,13.55 21.78,14.05 21.42,14.41L16.04,19.79L15.04,18.79L20.75,13L13.54,5.71Z" /></g><g id="tag-outline"><path d="M5.5,7A1.5,1.5 0 0,0 7,5.5A1.5,1.5 0 0,0 5.5,4A1.5,1.5 0 0,0 4,5.5A1.5,1.5 0 0,0 5.5,7M21.41,11.58C21.77,11.94 22,12.44 22,13C22,13.55 21.78,14.05 21.41,14.41L14.41,21.41C14.05,21.77 13.55,22 13,22C12.45,22 11.95,21.77 11.58,21.41L2.59,12.41C2.22,12.05 2,11.55 2,11V4C2,2.89 2.89,2 4,2H11C11.55,2 12.05,2.22 12.41,2.58L21.41,11.58M13,20L20,13L11.5,4.5L4.5,11.5L13,20Z" /></g><g id="tag-text-outline"><path d="M5.5,7A1.5,1.5 0 0,0 7,5.5A1.5,1.5 0 0,0 5.5,4A1.5,1.5 0 0,0 4,5.5A1.5,1.5 0 0,0 5.5,7M21.41,11.58C21.77,11.94 22,12.44 22,13C22,13.55 21.78,14.05 21.41,14.41L14.41,21.41C14.05,21.77 13.55,22 13,22C12.45,22 11.95,21.77 11.58,21.41L2.59,12.41C2.22,12.05 2,11.55 2,11V4C2,2.89 2.89,2 4,2H11C11.55,2 12.05,2.22 12.41,2.58L21.41,11.58M13,20L20,13L11.5,4.5L4.5,11.5L13,20M10.09,8.91L11.5,7.5L17,13L15.59,14.41L10.09,8.91M7.59,11.41L9,10L13,14L11.59,15.41L7.59,11.41Z" /></g><g id="target"><path d="M11,2V4.07C7.38,4.53 4.53,7.38 4.07,11H2V13H4.07C4.53,16.62 7.38,19.47 11,19.93V22H13V19.93C16.62,19.47 19.47,16.62 19.93,13H22V11H19.93C19.47,7.38 16.62,4.53 13,4.07V2M11,6.08V8H13V6.09C15.5,6.5 17.5,8.5 17.92,11H16V13H17.91C17.5,15.5 15.5,17.5 13,17.92V16H11V17.91C8.5,17.5 6.5,15.5 6.08,13H8V11H6.09C6.5,8.5 8.5,6.5 11,6.08M12,11A1,1 0 0,0 11,12A1,1 0 0,0 12,13A1,1 0 0,0 13,12A1,1 0 0,0 12,11Z" /></g><g id="taxi"><path d="M5,11L6.5,6.5H17.5L19,11M17.5,16A1.5,1.5 0 0,1 16,14.5A1.5,1.5 0 0,1 17.5,13A1.5,1.5 0 0,1 19,14.5A1.5,1.5 0 0,1 17.5,16M6.5,16A1.5,1.5 0 0,1 5,14.5A1.5,1.5 0 0,1 6.5,13A1.5,1.5 0 0,1 8,14.5A1.5,1.5 0 0,1 6.5,16M18.92,6C18.72,5.42 18.16,5 17.5,5H15V3H9V5H6.5C5.84,5 5.28,5.42 5.08,6L3,12V20A1,1 0 0,0 4,21H5A1,1 0 0,0 6,20V19H18V20A1,1 0 0,0 19,21H20A1,1 0 0,0 21,20V12L18.92,6Z" /></g><g id="teamviewer"><path d="M19,3A2,2 0 0,1 21,5V19C21,20.11 20.1,21 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M12,5A7,7 0 0,0 5,12A7,7 0 0,0 12,19A7,7 0 0,0 19,12A7,7 0 0,0 12,5M7,12L10,9V11H14V9L17,12L14,15V13H10V15L7,12Z" /></g><g id="telegram"><path d="M9.78,18.65L10.06,14.42L17.74,7.5C18.08,7.19 17.67,7.04 17.22,7.31L7.74,13.3L3.64,12C2.76,11.75 2.75,11.14 3.84,10.7L19.81,4.54C20.54,4.21 21.24,4.72 20.96,5.84L18.24,18.65C18.05,19.56 17.5,19.78 16.74,19.36L12.6,16.3L10.61,18.23C10.38,18.46 10.19,18.65 9.78,18.65Z" /></g><g id="television"><path d="M20,17H4V5H20M20,3H4C2.89,3 2,3.89 2,5V17A2,2 0 0,0 4,19H8V21H16V19H20A2,2 0 0,0 22,17V5C22,3.89 21.1,3 20,3Z" /></g><g id="television-guide"><path d="M21,17V5H3V17H21M21,3A2,2 0 0,1 23,5V17A2,2 0 0,1 21,19H16V21H8V19H3A2,2 0 0,1 1,17V5A2,2 0 0,1 3,3H21M5,7H11V11H5V7M5,13H11V15H5V13M13,7H19V9H13V7M13,11H19V15H13V11Z" /></g><g id="temperature-celsius"><path d="M16.5,5C18.05,5 19.5,5.47 20.69,6.28L19.53,9.17C18.73,8.44 17.67,8 16.5,8C14,8 12,10 12,12.5C12,15 14,17 16.5,17C17.53,17 18.47,16.66 19.23,16.08L20.37,18.93C19.24,19.61 17.92,20 16.5,20A7.5,7.5 0 0,1 9,12.5A7.5,7.5 0 0,1 16.5,5M6,3A3,3 0 0,1 9,6A3,3 0 0,1 6,9A3,3 0 0,1 3,6A3,3 0 0,1 6,3M6,5A1,1 0 0,0 5,6A1,1 0 0,0 6,7A1,1 0 0,0 7,6A1,1 0 0,0 6,5Z" /></g><g id="temperature-fahrenheit"><path d="M11,20V5H20V8H14V11H19V14H14V20H11M6,3A3,3 0 0,1 9,6A3,3 0 0,1 6,9A3,3 0 0,1 3,6A3,3 0 0,1 6,3M6,5A1,1 0 0,0 5,6A1,1 0 0,0 6,7A1,1 0 0,0 7,6A1,1 0 0,0 6,5Z" /></g><g id="temperature-kelvin"><path d="M7,5H10V11L15,5H19L13.88,10.78L19,20H15.38L11.76,13.17L10,15.15V20H7V5Z" /></g><g id="tennis"><path d="M12,2C14.5,2 16.75,2.9 18.5,4.4C16.36,6.23 15,8.96 15,12C15,15.04 16.36,17.77 18.5,19.6C16.75,21.1 14.5,22 12,22C9.5,22 7.25,21.1 5.5,19.6C7.64,17.77 9,15.04 9,12C9,8.96 7.64,6.23 5.5,4.4C7.25,2.9 9.5,2 12,2M22,12C22,14.32 21.21,16.45 19.88,18.15C18.12,16.68 17,14.47 17,12C17,9.53 18.12,7.32 19.88,5.85C21.21,7.55 22,9.68 22,12M2,12C2,9.68 2.79,7.55 4.12,5.85C5.88,7.32 7,9.53 7,12C7,14.47 5.88,16.68 4.12,18.15C2.79,16.45 2,14.32 2,12Z" /></g><g id="tent"><path d="M4,6C4,7.19 4.39,8.27 5,9A3,3 0 0,1 2,6A3,3 0 0,1 5,3C4.39,3.73 4,4.81 4,6M2,21V19H4.76L12,4.78L19.24,19H22V21H2M12,9.19L7,19H17L12,9.19Z" /></g><g id="terrain"><path d="M14,6L10.25,11L13.1,14.8L11.5,16C9.81,13.75 7,10 7,10L1,18H23L14,6Z" /></g><g id="test-tube"><path d="M7,2V4H8V18A4,4 0 0,0 12,22A4,4 0 0,0 16,18V4H17V2H7M11,16C10.4,16 10,15.6 10,15C10,14.4 10.4,14 11,14C11.6,14 12,14.4 12,15C12,15.6 11.6,16 11,16M13,12C12.4,12 12,11.6 12,11C12,10.4 12.4,10 13,10C13.6,10 14,10.4 14,11C14,11.6 13.6,12 13,12M14,7H10V4H14V7Z" /></g><g id="text-shadow"><path d="M3,3H16V6H11V18H8V6H3V3M12,7H14V9H12V7M15,7H17V9H15V7M18,7H20V9H18V7M12,10H14V12H12V10M12,13H14V15H12V13M12,16H14V18H12V16M12,19H14V21H12V19Z" /></g><g id="text-to-speech"><path d="M8,7A2,2 0 0,1 10,9V14A2,2 0 0,1 8,16A2,2 0 0,1 6,14V9A2,2 0 0,1 8,7M14,14C14,16.97 11.84,19.44 9,19.92V22H7V19.92C4.16,19.44 2,16.97 2,14H4A4,4 0 0,0 8,18A4,4 0 0,0 12,14H14M21.41,9.41L17.17,13.66L18.18,10H14A2,2 0 0,1 12,8V4A2,2 0 0,1 14,2H20A2,2 0 0,1 22,4V8C22,8.55 21.78,9.05 21.41,9.41Z" /></g><g id="text-to-speech-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L13.38,16.65C12.55,18.35 10.93,19.59 9,19.92V22H7V19.92C4.16,19.44 2,16.97 2,14H4A4,4 0 0,0 8,18C9.82,18 11.36,16.78 11.84,15.11L10,13.27V14A2,2 0 0,1 8,16A2,2 0 0,1 6,14V9.27L2,5.27M21.41,9.41L17.17,13.66L18.18,10H14A2,2 0 0,1 12,8V4A2,2 0 0,1 14,2H20A2,2 0 0,1 22,4V8C22,8.55 21.78,9.05 21.41,9.41Z" /></g><g id="textbox"><path d="M17,7H22V17H17V19A1,1 0 0,0 18,20H20V22H17.5C16.95,22 16,21.55 16,21C16,21.55 15.05,22 14.5,22H12V20H14A1,1 0 0,0 15,19V5A1,1 0 0,0 14,4H12V2H14.5C15.05,2 16,2.45 16,3C16,2.45 16.95,2 17.5,2H20V4H18A1,1 0 0,0 17,5V7M2,7H13V9H4V15H13V17H2V7M20,15V9H17V15H20Z" /></g><g id="texture"><path d="M9.29,21H12.12L21,12.12V9.29M19,21C19.55,21 20.05,20.78 20.41,20.41C20.78,20.05 21,19.55 21,19V17L17,21M5,3A2,2 0 0,0 3,5V7L7,3M11.88,3L3,11.88V14.71L14.71,3M19.5,3.08L3.08,19.5C3.17,19.85 3.35,20.16 3.59,20.41C3.84,20.65 4.15,20.83 4.5,20.92L20.93,4.5C20.74,3.8 20.2,3.26 19.5,3.08Z" /></g><g id="theater"><path d="M4,15H6A2,2 0 0,1 8,17V19H9V17A2,2 0 0,1 11,15H13A2,2 0 0,1 15,17V19H16V17A2,2 0 0,1 18,15H20A2,2 0 0,1 22,17V19H23V22H1V19H2V17A2,2 0 0,1 4,15M11,7L15,10L11,13V7M4,2H20A2,2 0 0,1 22,4V13.54C21.41,13.19 20.73,13 20,13V4H4V13C3.27,13 2.59,13.19 2,13.54V4A2,2 0 0,1 4,2Z" /></g><g id="theme-light-dark"><path d="M7.5,2C5.71,3.15 4.5,5.18 4.5,7.5C4.5,9.82 5.71,11.85 7.53,13C4.46,13 2,10.54 2,7.5A5.5,5.5 0 0,1 7.5,2M19.07,3.5L20.5,4.93L4.93,20.5L3.5,19.07L19.07,3.5M12.89,5.93L11.41,5L9.97,6L10.39,4.3L9,3.24L10.75,3.12L11.33,1.47L12,3.1L13.73,3.13L12.38,4.26L12.89,5.93M9.59,9.54L8.43,8.81L7.31,9.59L7.65,8.27L6.56,7.44L7.92,7.35L8.37,6.06L8.88,7.33L10.24,7.36L9.19,8.23L9.59,9.54M19,13.5A5.5,5.5 0 0,1 13.5,19C12.28,19 11.15,18.6 10.24,17.93L17.93,10.24C18.6,11.15 19,12.28 19,13.5M14.6,20.08L17.37,18.93L17.13,22.28L14.6,20.08M18.93,17.38L20.08,14.61L22.28,17.15L18.93,17.38M20.08,12.42L18.94,9.64L22.28,9.88L20.08,12.42M9.63,18.93L12.4,20.08L9.87,22.27L9.63,18.93Z" /></g><g id="thermometer"><path d="M17,17A5,5 0 0,1 12,22A5,5 0 0,1 7,17C7,15.36 7.79,13.91 9,13V5A3,3 0 0,1 12,2A3,3 0 0,1 15,5V13C16.21,13.91 17,15.36 17,17M11,8V14.17C9.83,14.58 9,15.69 9,17A3,3 0 0,0 12,20A3,3 0 0,0 15,17C15,15.69 14.17,14.58 13,14.17V8H11Z" /></g><g id="thermometer-lines"><path d="M17,3H21V5H17V3M17,7H21V9H17V7M17,11H21V13H17.75L17,12.1V11M21,15V17H19C19,16.31 18.9,15.63 18.71,15H21M17,17A5,5 0 0,1 12,22A5,5 0 0,1 7,17C7,15.36 7.79,13.91 9,13V5A3,3 0 0,1 12,2A3,3 0 0,1 15,5V13C16.21,13.91 17,15.36 17,17M11,8V14.17C9.83,14.58 9,15.69 9,17A3,3 0 0,0 12,20A3,3 0 0,0 15,17C15,15.69 14.17,14.58 13,14.17V8H11M7,3V5H3V3H7M7,7V9H3V7H7M7,11V12.1L6.25,13H3V11H7M3,15H5.29C5.1,15.63 5,16.31 5,17H3V15Z" /></g><g id="thumb-down"><path d="M19,15H23V3H19M15,3H6C5.17,3 4.46,3.5 4.16,4.22L1.14,11.27C1.05,11.5 1,11.74 1,12V13.91L1,14A2,2 0 0,0 3,16H9.31L8.36,20.57C8.34,20.67 8.33,20.77 8.33,20.88C8.33,21.3 8.5,21.67 8.77,21.94L9.83,23L16.41,16.41C16.78,16.05 17,15.55 17,15V5C17,3.89 16.1,3 15,3Z" /></g><g id="thumb-down-outline"><path d="M19,15V3H23V15H19M15,3A2,2 0 0,1 17,5V15C17,15.55 16.78,16.05 16.41,16.41L9.83,23L8.77,21.94C8.5,21.67 8.33,21.3 8.33,20.88L8.36,20.57L9.31,16H3C1.89,16 1,15.1 1,14V13.91L1,12C1,11.74 1.05,11.5 1.14,11.27L4.16,4.22C4.46,3.5 5.17,3 6,3H15M15,5H5.97L3,12V14H11.78L10.65,19.32L15,14.97V5Z" /></g><g id="thumb-up"><path d="M23,10C23,8.89 22.1,8 21,8H14.68L15.64,3.43C15.66,3.33 15.67,3.22 15.67,3.11C15.67,2.7 15.5,2.32 15.23,2.05L14.17,1L7.59,7.58C7.22,7.95 7,8.45 7,9V19A2,2 0 0,0 9,21H18C18.83,21 19.54,20.5 19.84,19.78L22.86,12.73C22.95,12.5 23,12.26 23,12V10.08L23,10M1,21H5V9H1V21Z" /></g><g id="thumb-up-outline"><path d="M5,9V21H1V9H5M9,21A2,2 0 0,1 7,19V9C7,8.45 7.22,7.95 7.59,7.59L14.17,1L15.23,2.06C15.5,2.33 15.67,2.7 15.67,3.11L15.64,3.43L14.69,8H21C22.11,8 23,8.9 23,10V10.09L23,12C23,12.26 22.95,12.5 22.86,12.73L19.84,19.78C19.54,20.5 18.83,21 18,21H9M9,19H18.03L21,12V10H12.21L13.34,4.68L9,9.03V19Z" /></g><g id="thumbs-up-down"><path d="M22.5,10.5H15.75C15.13,10.5 14.6,10.88 14.37,11.41L12.11,16.7C12.04,16.87 12,17.06 12,17.25V18.5A1,1 0 0,0 13,19.5H18.18L17.5,22.68V22.92C17.5,23.23 17.63,23.5 17.83,23.72L18.62,24.5L23.56,19.56C23.83,19.29 24,18.91 24,18.5V12A1.5,1.5 0 0,0 22.5,10.5M12,6.5A1,1 0 0,0 11,5.5H5.82L6.5,2.32V2.09C6.5,1.78 6.37,1.5 6.17,1.29L5.38,0.5L0.44,5.44C0.17,5.71 0,6.09 0,6.5V13A1.5,1.5 0 0,0 1.5,14.5H8.25C8.87,14.5 9.4,14.12 9.63,13.59L11.89,8.3C11.96,8.13 12,7.94 12,7.75V6.5Z" /></g><g id="ticket"><path d="M15.58,16.8L12,14.5L8.42,16.8L9.5,12.68L6.21,10L10.46,9.74L12,5.8L13.54,9.74L17.79,10L14.5,12.68M20,12C20,10.89 20.9,10 22,10V6C22,4.89 21.1,4 20,4H4A2,2 0 0,0 2,6V10C3.11,10 4,10.9 4,12A2,2 0 0,1 2,14V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V14A2,2 0 0,1 20,12Z" /></g><g id="ticket-account"><path d="M20,12A2,2 0 0,0 22,14V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V14C3.11,14 4,13.1 4,12A2,2 0 0,0 2,10V6C2,4.89 2.9,4 4,4H20A2,2 0 0,1 22,6V10A2,2 0 0,0 20,12M16.5,16.25C16.5,14.75 13.5,14 12,14C10.5,14 7.5,14.75 7.5,16.25V17H16.5V16.25M12,12.25A2.25,2.25 0 0,0 14.25,10A2.25,2.25 0 0,0 12,7.75A2.25,2.25 0 0,0 9.75,10A2.25,2.25 0 0,0 12,12.25Z" /></g><g id="ticket-confirmation"><path d="M13,8.5H11V6.5H13V8.5M13,13H11V11H13V13M13,17.5H11V15.5H13V17.5M22,10V6C22,4.89 21.1,4 20,4H4A2,2 0 0,0 2,6V10C3.11,10 4,10.9 4,12A2,2 0 0,1 2,14V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V14A2,2 0 0,1 20,12A2,2 0 0,1 22,10Z" /></g><g id="ticket-percent"><path d="M4,4A2,2 0 0,0 2,6V10C3.11,10 4,10.9 4,12A2,2 0 0,1 2,14V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V14A2,2 0 0,1 20,12C20,10.89 20.9,10 22,10V6C22,4.89 21.1,4 20,4H4M15.5,7L17,8.5L8.5,17L7,15.5L15.5,7M8.81,7.04C9.79,7.04 10.58,7.83 10.58,8.81A1.77,1.77 0 0,1 8.81,10.58C7.83,10.58 7.04,9.79 7.04,8.81A1.77,1.77 0 0,1 8.81,7.04M15.19,13.42C16.17,13.42 16.96,14.21 16.96,15.19A1.77,1.77 0 0,1 15.19,16.96C14.21,16.96 13.42,16.17 13.42,15.19A1.77,1.77 0 0,1 15.19,13.42Z" /></g><g id="tie"><path d="M6,2L10,6L7,17L12,22L17,17L14,6L18,2Z" /></g><g id="tilde"><path d="M2,15C2,15 2,9 8,9C12,9 12.5,12.5 15.5,12.5C19.5,12.5 19.5,9 19.5,9H22C22,9 22,15 16,15C12,15 10.5,11.5 8.5,11.5C4.5,11.5 4.5,15 4.5,15H2" /></g><g id="timelapse"><path d="M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M16.24,7.76C15.07,6.58 13.53,6 12,6V12L7.76,16.24C10.1,18.58 13.9,18.58 16.24,16.24C18.59,13.9 18.59,10.1 16.24,7.76Z" /></g><g id="timer"><path d="M12,20A7,7 0 0,1 5,13A7,7 0 0,1 12,6A7,7 0 0,1 19,13A7,7 0 0,1 12,20M19.03,7.39L20.45,5.97C20,5.46 19.55,5 19.04,4.56L17.62,6C16.07,4.74 14.12,4 12,4A9,9 0 0,0 3,13A9,9 0 0,0 12,22C17,22 21,17.97 21,13C21,10.88 20.26,8.93 19.03,7.39M11,14H13V8H11M15,1H9V3H15V1Z" /></g><g id="timer-10"><path d="M12.9,13.22C12.9,13.82 12.86,14.33 12.78,14.75C12.7,15.17 12.58,15.5 12.42,15.77C12.26,16.03 12.06,16.22 11.83,16.34C11.6,16.46 11.32,16.5 11,16.5C10.71,16.5 10.43,16.46 10.19,16.34C9.95,16.22 9.75,16.03 9.59,15.77C9.43,15.5 9.3,15.17 9.21,14.75C9.12,14.33 9.08,13.82 9.08,13.22V10.72C9.08,10.12 9.12,9.61 9.21,9.2C9.3,8.79 9.42,8.46 9.59,8.2C9.75,7.95 9.95,7.77 10.19,7.65C10.43,7.54 10.7,7.5 11,7.5C11.31,7.5 11.58,7.54 11.81,7.65C12.05,7.76 12.25,7.94 12.41,8.2C12.57,8.45 12.7,8.78 12.78,9.19C12.86,9.6 12.91,10.11 12.91,10.71V13.22M13.82,7.05C13.5,6.65 13.07,6.35 12.59,6.17C12.12,6 11.58,5.9 11,5.9C10.42,5.9 9.89,6 9.41,6.17C8.93,6.35 8.5,6.64 8.18,7.05C7.84,7.46 7.58,8 7.39,8.64C7.21,9.29 7.11,10.09 7.11,11.03V12.95C7.11,13.89 7.2,14.69 7.39,15.34C7.58,16 7.84,16.53 8.19,16.94C8.53,17.35 8.94,17.65 9.42,17.83C9.9,18 10.43,18.11 11,18.11C11.6,18.11 12.13,18 12.6,17.83C13.08,17.65 13.5,17.35 13.82,16.94C14.16,16.53 14.42,16 14.6,15.34C14.78,14.69 14.88,13.89 14.88,12.95V11.03C14.88,10.09 14.79,9.29 14.6,8.64C14.42,8 14.16,7.45 13.82,7.05M23.78,14.37C23.64,14.09 23.43,13.84 23.15,13.63C22.87,13.42 22.54,13.24 22.14,13.1C21.74,12.96 21.29,12.83 20.79,12.72C20.44,12.65 20.15,12.57 19.92,12.5C19.69,12.41 19.5,12.33 19.37,12.24C19.23,12.15 19.14,12.05 19.09,11.94C19.04,11.83 19,11.7 19,11.55C19,11.41 19.04,11.27 19.1,11.14C19.16,11 19.25,10.89 19.37,10.8C19.5,10.7 19.64,10.62 19.82,10.56C20,10.5 20.22,10.47 20.46,10.47C20.71,10.47 20.93,10.5 21.12,10.58C21.31,10.65 21.47,10.75 21.6,10.87C21.73,11 21.82,11.13 21.89,11.29C21.95,11.45 22,11.61 22,11.78H23.94C23.94,11.39 23.86,11.03 23.7,10.69C23.54,10.35 23.31,10.06 23,9.81C22.71,9.56 22.35,9.37 21.92,9.22C21.5,9.07 21,9 20.46,9C19.95,9 19.5,9.07 19.07,9.21C18.66,9.35 18.3,9.54 18,9.78C17.72,10 17.5,10.3 17.34,10.62C17.18,10.94 17.11,11.27 17.11,11.63C17.11,12 17.19,12.32 17.34,12.59C17.5,12.87 17.7,13.11 18,13.32C18.25,13.53 18.58,13.7 18.96,13.85C19.34,14 19.77,14.11 20.23,14.21C20.62,14.29 20.94,14.38 21.18,14.47C21.42,14.56 21.61,14.66 21.75,14.76C21.88,14.86 21.97,15 22,15.1C22.07,15.22 22.09,15.35 22.09,15.5C22.09,15.81 21.96,16.06 21.69,16.26C21.42,16.46 21.03,16.55 20.5,16.55C20.3,16.55 20.09,16.53 19.88,16.47C19.67,16.42 19.5,16.34 19.32,16.23C19.15,16.12 19,15.97 18.91,15.79C18.8,15.61 18.74,15.38 18.73,15.12H16.84C16.84,15.5 16.92,15.83 17.08,16.17C17.24,16.5 17.47,16.82 17.78,17.1C18.09,17.37 18.47,17.59 18.93,17.76C19.39,17.93 19.91,18 20.5,18C21.04,18 21.5,17.95 21.95,17.82C22.38,17.69 22.75,17.5 23.06,17.28C23.37,17.05 23.6,16.77 23.77,16.45C23.94,16.13 24,15.78 24,15.39C24,15 23.93,14.65 23.78,14.37M0,7.72V9.4L3,8.4V18H5V6H4.75L0,7.72Z" /></g><g id="timer-3"><path d="M20.87,14.37C20.73,14.09 20.5,13.84 20.24,13.63C19.96,13.42 19.63,13.24 19.23,13.1C18.83,12.96 18.38,12.83 17.88,12.72C17.53,12.65 17.24,12.57 17,12.5C16.78,12.41 16.6,12.33 16.46,12.24C16.32,12.15 16.23,12.05 16.18,11.94C16.13,11.83 16.1,11.7 16.1,11.55C16.1,11.4 16.13,11.27 16.19,11.14C16.25,11 16.34,10.89 16.46,10.8C16.58,10.7 16.73,10.62 16.91,10.56C17.09,10.5 17.31,10.47 17.55,10.47C17.8,10.47 18,10.5 18.21,10.58C18.4,10.65 18.56,10.75 18.69,10.87C18.82,11 18.91,11.13 19,11.29C19.04,11.45 19.08,11.61 19.08,11.78H21.03C21.03,11.39 20.95,11.03 20.79,10.69C20.63,10.35 20.4,10.06 20.1,9.81C19.8,9.56 19.44,9.37 19,9.22C18.58,9.07 18.09,9 17.55,9C17.04,9 16.57,9.07 16.16,9.21C15.75,9.35 15.39,9.54 15.1,9.78C14.81,10 14.59,10.3 14.43,10.62C14.27,10.94 14.2,11.27 14.2,11.63C14.2,12 14.28,12.31 14.43,12.59C14.58,12.87 14.8,13.11 15.07,13.32C15.34,13.53 15.67,13.7 16.05,13.85C16.43,14 16.86,14.11 17.32,14.21C17.71,14.29 18.03,14.38 18.27,14.47C18.5,14.56 18.7,14.66 18.84,14.76C18.97,14.86 19.06,15 19.11,15.1C19.16,15.22 19.18,15.35 19.18,15.5C19.18,15.81 19.05,16.06 18.78,16.26C18.5,16.46 18.12,16.55 17.61,16.55C17.39,16.55 17.18,16.53 16.97,16.47C16.76,16.42 16.57,16.34 16.41,16.23C16.24,16.12 16.11,15.97 16,15.79C15.89,15.61 15.83,15.38 15.82,15.12H13.93C13.93,15.5 14,15.83 14.17,16.17C14.33,16.5 14.56,16.82 14.87,17.1C15.18,17.37 15.56,17.59 16,17.76C16.5,17.93 17,18 17.6,18C18.13,18 18.61,17.95 19.04,17.82C19.47,17.69 19.84,17.5 20.15,17.28C20.46,17.05 20.69,16.77 20.86,16.45C21.03,16.13 21.11,15.78 21.11,15.39C21.09,15 21,14.65 20.87,14.37M11.61,12.97C11.45,12.73 11.25,12.5 11,12.32C10.74,12.13 10.43,11.97 10.06,11.84C10.36,11.7 10.63,11.54 10.86,11.34C11.09,11.14 11.28,10.93 11.43,10.7C11.58,10.47 11.7,10.24 11.77,10C11.85,9.75 11.88,9.5 11.88,9.26C11.88,8.71 11.79,8.22 11.6,7.8C11.42,7.38 11.16,7.03 10.82,6.74C10.5,6.46 10.09,6.24 9.62,6.1C9.17,5.97 8.65,5.9 8.09,5.9C7.54,5.9 7.03,6 6.57,6.14C6.1,6.31 5.7,6.54 5.37,6.83C5.04,7.12 4.77,7.46 4.59,7.86C4.39,8.25 4.3,8.69 4.3,9.15H6.28C6.28,8.89 6.33,8.66 6.42,8.46C6.5,8.26 6.64,8.08 6.8,7.94C6.97,7.8 7.16,7.69 7.38,7.61C7.6,7.53 7.84,7.5 8.11,7.5C8.72,7.5 9.17,7.65 9.47,7.96C9.77,8.27 9.91,8.71 9.91,9.28C9.91,9.55 9.87,9.8 9.79,10C9.71,10.24 9.58,10.43 9.41,10.59C9.24,10.75 9.03,10.87 8.78,10.96C8.53,11.05 8.23,11.09 7.89,11.09H6.72V12.66H7.9C8.24,12.66 8.54,12.7 8.81,12.77C9.08,12.85 9.31,12.96 9.5,13.12C9.69,13.28 9.84,13.5 9.94,13.73C10.04,13.97 10.1,14.27 10.1,14.6C10.1,15.22 9.92,15.69 9.57,16C9.22,16.35 8.73,16.5 8.12,16.5C7.83,16.5 7.56,16.47 7.32,16.38C7.08,16.3 6.88,16.18 6.71,16C6.54,15.86 6.41,15.68 6.32,15.46C6.23,15.24 6.18,15 6.18,14.74H4.19C4.19,15.29 4.3,15.77 4.5,16.19C4.72,16.61 5,16.96 5.37,17.24C5.73,17.5 6.14,17.73 6.61,17.87C7.08,18 7.57,18.08 8.09,18.08C8.66,18.08 9.18,18 9.67,17.85C10.16,17.7 10.58,17.47 10.93,17.17C11.29,16.87 11.57,16.5 11.77,16.07C11.97,15.64 12.07,15.14 12.07,14.59C12.07,14.3 12.03,14 11.96,13.73C11.88,13.5 11.77,13.22 11.61,12.97Z" /></g><g id="timer-off"><path d="M12,20A7,7 0 0,1 5,13C5,11.72 5.35,10.5 5.95,9.5L15.5,19.04C14.5,19.65 13.28,20 12,20M3,4L1.75,5.27L4.5,8.03C3.55,9.45 3,11.16 3,13A9,9 0 0,0 12,22C13.84,22 15.55,21.45 17,20.5L19.5,23L20.75,21.73L13.04,14L3,4M11,9.44L13,11.44V8H11M15,1H9V3H15M19.04,4.55L17.62,5.97C16.07,4.74 14.12,4 12,4C10.17,4 8.47,4.55 7.05,5.5L8.5,6.94C9.53,6.35 10.73,6 12,6A7,7 0 0,1 19,13C19,14.27 18.65,15.47 18.06,16.5L19.5,17.94C20.45,16.53 21,14.83 21,13C21,10.88 20.26,8.93 19.03,7.39L20.45,5.97L19.04,4.55Z" /></g><g id="timer-sand"><path d="M20,2V4H18V8.41L14.41,12L18,15.59V20H20V22H4V20H6V15.59L9.59,12L6,8.41V4H4V2H20M16,16.41L13,13.41V10.59L16,7.59V4H8V7.59L11,10.59V13.41L8,16.41V17H10L12,15L14,17H16V16.41M12,9L10,7H14L12,9Z" /></g><g id="timer-sand-empty"><path d="M20,2V4H18V8.41L14.41,12L18,15.59V20H20V22H4V20H6V15.59L9.59,12L6,8.41V4H4V2H20M16,16.41L13,13.41V10.59L16,7.59V4H8V7.59L11,10.59V13.41L8,16.41V20H16V16.41Z" /></g><g id="timetable"><path d="M14,12H15.5V14.82L17.94,16.23L17.19,17.53L14,15.69V12M4,2H18A2,2 0 0,1 20,4V10.1C21.24,11.36 22,13.09 22,15A7,7 0 0,1 15,22C13.09,22 11.36,21.24 10.1,20H4A2,2 0 0,1 2,18V4A2,2 0 0,1 4,2M4,15V18H8.67C8.24,17.09 8,16.07 8,15H4M4,8H10V5H4V8M18,8V5H12V8H18M4,13H8.29C8.63,11.85 9.26,10.82 10.1,10H4V13M15,10.15A4.85,4.85 0 0,0 10.15,15C10.15,17.68 12.32,19.85 15,19.85A4.85,4.85 0 0,0 19.85,15C19.85,12.32 17.68,10.15 15,10.15Z" /></g><g id="toggle-switch"><path d="M17,7A5,5 0 0,1 22,12A5,5 0 0,1 17,17A5,5 0 0,1 12,12A5,5 0 0,1 17,7M4,14A2,2 0 0,1 2,12A2,2 0 0,1 4,10H10V14H4Z" /></g><g id="toggle-switch-off"><path d="M7,7A5,5 0 0,1 12,12A5,5 0 0,1 7,17A5,5 0 0,1 2,12A5,5 0 0,1 7,7M20,14H14V10H20A2,2 0 0,1 22,12A2,2 0 0,1 20,14M7,9A3,3 0 0,0 4,12A3,3 0 0,0 7,15A3,3 0 0,0 10,12A3,3 0 0,0 7,9Z" /></g><g id="tooltip"><path d="M4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H16L12,22L8,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2Z" /></g><g id="tooltip-edit"><path d="M4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H16L12,22L8,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2M18,14V12H12.5L10.5,14H18M6,14H8.5L15.35,7.12C15.55,6.93 15.55,6.61 15.35,6.41L13.59,4.65C13.39,4.45 13.07,4.45 12.88,4.65L6,11.53V14Z" /></g><g id="tooltip-image"><path d="M4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H16L12,22L8,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2M19,15V7L15,11L13,9L7,15H19M7,5A2,2 0 0,0 5,7A2,2 0 0,0 7,9A2,2 0 0,0 9,7A2,2 0 0,0 7,5Z" /></g><g id="tooltip-outline"><path d="M4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H16L12,22L8,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2M4,4V16H8.83L12,19.17L15.17,16H20V4H4Z" /></g><g id="tooltip-outline-plus"><path d="M4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H16L12,22L8,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2M4,4V16H8.83L12,19.17L15.17,16H20V4H4M11,6H13V9H16V11H13V14H11V11H8V9H11V6Z" /></g><g id="tooltip-text"><path d="M4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H16L12,22L8,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2M5,5V7H19V5H5M5,9V11H15V9H5M5,13V15H17V13H5Z" /></g><g id="tooth"><path d="M7,2C4,2 2,5 2,8C2,10.11 3,13 4,14C5,15 6,22 8,22C12.54,22 10,15 12,15C14,15 11.46,22 16,22C18,22 19,15 20,14C21,13 22,10.11 22,8C22,5 20,2 17,2C14,2 14,3 12,3C10,3 10,2 7,2M7,4C9,4 10,5 12,5C14,5 15,4 17,4C18.67,4 20,6 20,8C20,9.75 19.14,12.11 18.19,13.06C17.33,13.92 16.06,19.94 15.5,19.94C15.29,19.94 15,18.88 15,17.59C15,15.55 14.43,13 12,13C9.57,13 9,15.55 9,17.59C9,18.88 8.71,19.94 8.5,19.94C7.94,19.94 6.67,13.92 5.81,13.06C4.86,12.11 4,9.75 4,8C4,6 5.33,4 7,4Z" /></g><g id="tor"><path d="M12,14C11,14 9,15 9,16C9,18 12,18 12,18V17A1,1 0 0,1 11,16A1,1 0 0,1 12,15V14M12,19C12,19 8,18.5 8,16.5C8,13.5 11,12.75 12,12.75V11.5C11,11.5 7,13 7,16C7,20 12,20 12,20V19M10.07,7.03L11.26,7.56C11.69,5.12 12.84,3.5 12.84,3.5C12.41,4.53 12.13,5.38 11.95,6.05C13.16,3.55 15.61,2 15.61,2C14.43,3.18 13.56,4.46 12.97,5.53C14.55,3.85 16.74,2.75 16.74,2.75C14.05,4.47 12.84,7.2 12.54,7.96L13.09,8.04C13.09,8.56 13.09,9.04 13.34,9.42C14.1,11.31 18,11.47 18,16C18,20.53 13.97,22 11.83,22C9.69,22 5,21.03 5,16C5,10.97 9.95,10.93 10.83,8.92C10.95,8.54 10.07,7.03 10.07,7.03Z" /></g><g id="tower-beach"><path d="M17,4V8H18V10H17.64L21,23H18.93L18.37,20.83L12,17.15L5.63,20.83L5.07,23H3L6.36,10H6V8H7V4H6V3L18,1V4H17M7.28,14.43L6.33,18.12L10,16L7.28,14.43M15.57,10H8.43L7.8,12.42L12,14.85L16.2,12.42L15.57,10M17.67,18.12L16.72,14.43L14,16L17.67,18.12Z" /></g><g id="tower-fire"><path d="M17,4V8H18V10H17.64L21,23H18.93L18.37,20.83L12,17.15L5.63,20.83L5.07,23H3L6.36,10H6V8H7V4H6V3L12,1L18,3V4H17M7.28,14.43L6.33,18.12L10,16L7.28,14.43M15.57,10H8.43L7.8,12.42L12,14.85L16.2,12.42L15.57,10M17.67,18.12L16.72,14.43L14,16L17.67,18.12Z" /></g><g id="traffic-light"><path d="M12,9A2,2 0 0,1 10,7C10,5.89 10.9,5 12,5C13.11,5 14,5.89 14,7A2,2 0 0,1 12,9M12,14A2,2 0 0,1 10,12C10,10.89 10.9,10 12,10C13.11,10 14,10.89 14,12A2,2 0 0,1 12,14M12,19A2,2 0 0,1 10,17C10,15.89 10.9,15 12,15C13.11,15 14,15.89 14,17A2,2 0 0,1 12,19M20,10H17V8.86C18.72,8.41 20,6.86 20,5H17V4A1,1 0 0,0 16,3H8A1,1 0 0,0 7,4V5H4C4,6.86 5.28,8.41 7,8.86V10H4C4,11.86 5.28,13.41 7,13.86V15H4C4,16.86 5.28,18.41 7,18.86V20A1,1 0 0,0 8,21H16A1,1 0 0,0 17,20V18.86C18.72,18.41 20,16.86 20,15H17V13.86C18.72,13.41 20,11.86 20,10Z" /></g><g id="train"><path d="M18,10H6V5H18M12,17C10.89,17 10,16.1 10,15C10,13.89 10.89,13 12,13A2,2 0 0,1 14,15A2,2 0 0,1 12,17M4,15.5A3.5,3.5 0 0,0 7.5,19L6,20.5V21H18V20.5L16.5,19A3.5,3.5 0 0,0 20,15.5V5C20,1.5 16.42,1 12,1C7.58,1 4,1.5 4,5V15.5Z" /></g><g id="tram"><path d="M17,18C16.4,18 16,17.6 16,17C16,16.4 16.4,16 17,16C17.6,16 18,16.4 18,17C18,17.6 17.6,18 17,18M6.7,10.7L7,7.3C7,6.6 7.6,6 8.3,6H15.6C16.4,6 17,6.6 17,7.3L17.3,10.6C17.3,11.3 16.7,11.9 16,11.9H8C7.3,12 6.7,11.4 6.7,10.7M7,18C6.4,18 6,17.6 6,17C6,16.4 6.4,16 7,16C7.6,16 8,16.4 8,17C8,17.6 7.6,18 7,18M19,6A2,2 0 0,0 17,4H15A2,2 0 0,0 13,2H11A2,2 0 0,0 9,4H7A2,2 0 0,0 5,6L4,18A2,2 0 0,0 6,20H8L7,22H17.1L16.1,20H18A2,2 0 0,0 20,18L19,6Z" /></g><g id="transcribe"><path d="M20,5A2,2 0 0,1 22,7V17A2,2 0 0,1 20,19H4C2.89,19 2,18.1 2,17V7C2,5.89 2.89,5 4,5H20M18,17V15H12.5L10.5,17H18M6,17H8.5L15.35,10.12C15.55,9.93 15.55,9.61 15.35,9.41L13.59,7.65C13.39,7.45 13.07,7.45 12.88,7.65L6,14.53V17Z" /></g><g id="transcribe-close"><path d="M12,23L8,19H16L12,23M20,3A2,2 0 0,1 22,5V15A2,2 0 0,1 20,17H4A2,2 0 0,1 2,15V5A2,2 0 0,1 4,3H20M18,15V13H12.5L10.5,15H18M6,15H8.5L15.35,8.12C15.55,7.93 15.55,7.61 15.35,7.42L13.59,5.65C13.39,5.45 13.07,5.45 12.88,5.65L6,12.53V15Z" /></g><g id="transfer"><path d="M3,8H5V16H3V8M7,8H9V16H7V8M11,8H13V16H11V8M15,19.25V4.75L22.25,12L15,19.25Z" /></g><g id="transit-transfer"><path d="M16.5,15.5H22V17H16.5V18.75L14,16.25L16.5,13.75V15.5M19.5,19.75V18L22,20.5L19.5,23V21.25H14V19.75H19.5M9.5,5.5A2,2 0 0,1 7.5,3.5A2,2 0 0,1 9.5,1.5A2,2 0 0,1 11.5,3.5A2,2 0 0,1 9.5,5.5M5.75,8.9L4,9.65V13H2V8.3L7.25,6.15C7.5,6.05 7.75,6 8,6C8.7,6 9.35,6.35 9.7,6.95L10.65,8.55C11.55,10 13.15,11 15,11V13C12.8,13 10.85,12 9.55,10.4L8.95,13.4L11,15.45V23H9V17L6.85,15L5.1,23H3L5.75,8.9Z" /></g><g id="translate"><path d="M12.87,15.07L10.33,12.56L10.36,12.53C12.1,10.59 13.34,8.36 14.07,6H17V4H10V2H8V4H1V6H12.17C11.5,7.92 10.44,9.75 9,11.35C8.07,10.32 7.3,9.19 6.69,8H4.69C5.42,9.63 6.42,11.17 7.67,12.56L2.58,17.58L4,19L9,14L12.11,17.11L12.87,15.07M18.5,10H16.5L12,22H14L15.12,19H19.87L21,22H23L18.5,10M15.88,17L17.5,12.67L19.12,17H15.88Z" /></g><g id="treasure-chest"><path d="M5,4H19A3,3 0 0,1 22,7V11H15V10H9V11H2V7A3,3 0 0,1 5,4M11,11H13V13H11V11M2,12H9V13L11,15H13L15,13V12H22V20H2V12Z" /></g><g id="tree"><path d="M11,21V16.74C10.53,16.91 10.03,17 9.5,17C7,17 5,15 5,12.5C5,11.23 5.5,10.09 6.36,9.27C6.13,8.73 6,8.13 6,7.5C6,5 8,3 10.5,3C12.06,3 13.44,3.8 14.25,5C14.33,5 14.41,5 14.5,5A5.5,5.5 0 0,1 20,10.5A5.5,5.5 0 0,1 14.5,16C14,16 13.5,15.93 13,15.79V21H11Z" /></g><g id="trello"><path d="M4,3H20A1,1 0 0,1 21,4V20A1,1 0 0,1 20,21H4A1,1 0 0,1 3,20V4A1,1 0 0,1 4,3M5.5,5A0.5,0.5 0 0,0 5,5.5V17.5A0.5,0.5 0 0,0 5.5,18H10.5A0.5,0.5 0 0,0 11,17.5V5.5A0.5,0.5 0 0,0 10.5,5H5.5M13.5,5A0.5,0.5 0 0,0 13,5.5V11.5A0.5,0.5 0 0,0 13.5,12H18.5A0.5,0.5 0 0,0 19,11.5V5.5A0.5,0.5 0 0,0 18.5,5H13.5Z" /></g><g id="trending-down"><path d="M16,18L18.29,15.71L13.41,10.83L9.41,14.83L2,7.41L3.41,6L9.41,12L13.41,8L19.71,14.29L22,12V18H16Z" /></g><g id="trending-neutral"><path d="M22,12L18,8V11H3V13H18V16L22,12Z" /></g><g id="trending-up"><path d="M16,6L18.29,8.29L13.41,13.17L9.41,9.17L2,16.59L3.41,18L9.41,12L13.41,16L19.71,9.71L22,12V6H16Z" /></g><g id="triangle"><path d="M1,21H23L12,2" /></g><g id="triangle-outline"><path d="M12,2L1,21H23M12,6L19.53,19H4.47" /></g><g id="trophy"><path d="M20.2,2H19.5H18C17.1,2 16,3 16,4H8C8,3 6.9,2 6,2H4.5H3.8H2V11C2,12 3,13 4,13H6.2C6.6,15 7.9,16.7 11,17V19.1C8.8,19.3 8,20.4 8,21.7V22H16V21.7C16,20.4 15.2,19.3 13,19.1V17C16.1,16.7 17.4,15 17.8,13H20C21,13 22,12 22,11V2H20.2M4,11V4H6V6V11C5.1,11 4.3,11 4,11M20,11C19.7,11 18.9,11 18,11V6V4H20V11Z" /></g><g id="trophy-award"><path d="M15.2,10.7L16.6,16L12,12.2L7.4,16L8.8,10.8L4.6,7.3L10,7L12,2L14,7L19.4,7.3L15.2,10.7M14,19.1H13V16L12,15L11,16V19.1H10A2,2 0 0,0 8,21.1V22.1H16V21.1A2,2 0 0,0 14,19.1Z" /></g><g id="trophy-outline"><path d="M2,2V11C2,12 3,13 4,13H6.2C6.6,15 7.9,16.7 11,17V19.1C8.8,19.3 8,20.4 8,21.7V22H16V21.7C16,20.4 15.2,19.3 13,19.1V17C16.1,16.7 17.4,15 17.8,13H20C21,13 22,12 22,11V2H18C17.1,2 16,3 16,4H8C8,3 6.9,2 6,2H2M4,4H6V6L6,11H4V4M18,4H20V11H18V6L18,4M8,6H16V11.5C16,13.43 15.42,15 12,15C8.59,15 8,13.43 8,11.5V6Z" /></g><g id="trophy-variant"><path d="M20.2,4H20H17V2H7V4H4.5H3.8H2V11C2,12 3,13 4,13H7.2C7.6,14.9 8.6,16.6 11,16.9V19C8,19.2 8,20.3 8,21.6V22H16V21.7C16,20.4 16,19.3 13,19.1V17C15.5,16.7 16.5,15 16.8,13.1H20C21,13.1 22,12.1 22,11.1V4H20.2M4,11V6H7V8V11C5.6,11 4.4,11 4,11M20,11C19.6,11 18.4,11 17,11V6H18H20V11Z" /></g><g id="trophy-variant-outline"><path d="M7,2V4H2V11C2,12 3,13 4,13H7.2C7.6,14.9 8.6,16.6 11,16.9V19C8,19.2 8,20.3 8,21.6V22H16V21.7C16,20.4 16,19.3 13,19.1V17C15.5,16.7 16.5,15 16.8,13.1H20C21,13.1 22,12.1 22,11.1V4H17V2H7M9,4H15V12A3,3 0 0,1 12,15C10,15 9,13.66 9,12V4M4,6H7V8L7,11H4V6M17,6H20V11H17V6Z" /></g><g id="truck"><path d="M18,18.5A1.5,1.5 0 0,1 16.5,17A1.5,1.5 0 0,1 18,15.5A1.5,1.5 0 0,1 19.5,17A1.5,1.5 0 0,1 18,18.5M19.5,9.5L21.46,12H17V9.5M6,18.5A1.5,1.5 0 0,1 4.5,17A1.5,1.5 0 0,1 6,15.5A1.5,1.5 0 0,1 7.5,17A1.5,1.5 0 0,1 6,18.5M20,8H17V4H3C1.89,4 1,4.89 1,6V17H3A3,3 0 0,0 6,20A3,3 0 0,0 9,17H15A3,3 0 0,0 18,20A3,3 0 0,0 21,17H23V12L20,8Z" /></g><g id="truck-delivery"><path d="M3,4A2,2 0 0,0 1,6V17H3A3,3 0 0,0 6,20A3,3 0 0,0 9,17H15A3,3 0 0,0 18,20A3,3 0 0,0 21,17H23V12L20,8H17V4M10,6L14,10L10,14V11H4V9H10M17,9.5H19.5L21.47,12H17M6,15.5A1.5,1.5 0 0,1 7.5,17A1.5,1.5 0 0,1 6,18.5A1.5,1.5 0 0,1 4.5,17A1.5,1.5 0 0,1 6,15.5M18,15.5A1.5,1.5 0 0,1 19.5,17A1.5,1.5 0 0,1 18,18.5A1.5,1.5 0 0,1 16.5,17A1.5,1.5 0 0,1 18,15.5Z" /></g><g id="truck-trailer"><path d="M22,15V17H10A3,3 0 0,1 7,20A3,3 0 0,1 4,17H2V6A2,2 0 0,1 4,4H17A2,2 0 0,1 19,6V15H22M7,16A1,1 0 0,0 6,17A1,1 0 0,0 7,18A1,1 0 0,0 8,17A1,1 0 0,0 7,16Z" /></g><g id="tshirt-crew"><path d="M16,21H8A1,1 0 0,1 7,20V12.07L5.7,13.12C5.31,13.5 4.68,13.5 4.29,13.12L1.46,10.29C1.07,9.9 1.07,9.27 1.46,8.88L7.34,3H9C9,4.1 10.34,5 12,5C13.66,5 15,4.1 15,3H16.66L22.54,8.88C22.93,9.27 22.93,9.9 22.54,10.29L19.71,13.12C19.32,13.5 18.69,13.5 18.3,13.12L17,12.07V20A1,1 0 0,1 16,21M20.42,9.58L16.11,5.28C15.8,5.63 15.43,5.94 15,6.2C14.16,6.7 13.13,7 12,7C10.3,7 8.79,6.32 7.89,5.28L3.58,9.58L5,11L8,9H9V19H15V9H16L19,11L20.42,9.58Z" /></g><g id="tshirt-v"><path d="M16,21H8A1,1 0 0,1 7,20V12.07L5.7,13.12C5.31,13.5 4.68,13.5 4.29,13.12L1.46,10.29C1.07,9.9 1.07,9.27 1.46,8.88L7.34,3H9C9,4.1 10,6 12,7.25C14,6 15,4.1 15,3H16.66L22.54,8.88C22.93,9.27 22.93,9.9 22.54,10.29L19.71,13.12C19.32,13.5 18.69,13.5 18.3,13.12L17,12.07V20A1,1 0 0,1 16,21M20.42,9.58L16.11,5.28C15,7 14,8.25 12,9.25C10,8.25 9,7 7.89,5.28L3.58,9.58L5,11L8,9H9V19H15V9H16L19,11L20.42,9.58Z" /></g><g id="tumblr"><path d="M16,11H13V14.9C13,15.63 13.14,16 14.1,16H16V19C16,19 14.97,19.1 13.9,19.1C11.25,19.1 10,17.5 10,15.7V11H8V8.2C10.41,8 10.62,6.16 10.8,5H13V8H16M20,2H4C2.89,2 2,2.89 2,4V20A2,2 0 0,0 4,22H20A2,2 0 0,0 22,20V4C22,2.89 21.1,2 20,2Z" /></g><g id="tumblr-reblog"><path d="M3.75,17L8,12.75V16H18V11.5L20,9.5V16A2,2 0 0,1 18,18H8V21.25L3.75,17M20.25,7L16,11.25V8H6V12.5L4,14.5V8A2,2 0 0,1 6,6H16V2.75L20.25,7Z" /></g><g id="tune"><path d="M3,17V19H9V17H3M3,5V7H13V5H3M13,21V19H21V17H13V15H11V21H13M7,9V11H3V13H7V15H9V9H7M21,13V11H11V13H21M15,9H17V7H21V5H17V3H15V9Z" /></g><g id="tune-vertical"><path d="M5,3V12H3V14H5V21H7V14H9V12H7V3M11,3V8H9V10H11V21H13V10H15V8H13V3M17,3V14H15V16H17V21H19V16H21V14H19V3" /></g><g id="twitch"><path d="M4,2H22V14L17,19H13L10,22H7V19H2V6L4,2M20,13V4H6V16H9V19L12,16H17L20,13M15,7H17V12H15V7M12,7V12H10V7H12Z" /></g><g id="twitter"><path d="M22.46,6C21.69,6.35 20.86,6.58 20,6.69C20.88,6.16 21.56,5.32 21.88,4.31C21.05,4.81 20.13,5.16 19.16,5.36C18.37,4.5 17.26,4 16,4C13.65,4 11.73,5.92 11.73,8.29C11.73,8.63 11.77,8.96 11.84,9.27C8.28,9.09 5.11,7.38 3,4.79C2.63,5.42 2.42,6.16 2.42,6.94C2.42,8.43 3.17,9.75 4.33,10.5C3.62,10.5 2.96,10.3 2.38,10C2.38,10 2.38,10 2.38,10.03C2.38,12.11 3.86,13.85 5.82,14.24C5.46,14.34 5.08,14.39 4.69,14.39C4.42,14.39 4.15,14.36 3.89,14.31C4.43,16 6,17.26 7.89,17.29C6.43,18.45 4.58,19.13 2.56,19.13C2.22,19.13 1.88,19.11 1.54,19.07C3.44,20.29 5.7,21 8.12,21C16,21 20.33,14.46 20.33,8.79C20.33,8.6 20.33,8.42 20.32,8.23C21.16,7.63 21.88,6.87 22.46,6Z" /></g><g id="twitter-box"><path d="M17.71,9.33C17.64,13.95 14.69,17.11 10.28,17.31C8.46,17.39 7.15,16.81 6,16.08C7.34,16.29 9,15.76 9.9,15C8.58,14.86 7.81,14.19 7.44,13.12C7.82,13.18 8.22,13.16 8.58,13.09C7.39,12.69 6.54,11.95 6.5,10.41C6.83,10.57 7.18,10.71 7.64,10.74C6.75,10.23 6.1,8.38 6.85,7.16C8.17,8.61 9.76,9.79 12.37,9.95C11.71,7.15 15.42,5.63 16.97,7.5C17.63,7.38 18.16,7.14 18.68,6.86C18.47,7.5 18.06,7.97 17.56,8.33C18.1,8.26 18.59,8.13 19,7.92C18.75,8.45 18.19,8.93 17.71,9.33M20,2H4A2,2 0 0,0 2,4V20A2,2 0 0,0 4,22H20A2,2 0 0,0 22,20V4C22,2.89 21.1,2 20,2Z" /></g><g id="twitter-circle"><path d="M17.71,9.33C18.19,8.93 18.75,8.45 19,7.92C18.59,8.13 18.1,8.26 17.56,8.33C18.06,7.97 18.47,7.5 18.68,6.86C18.16,7.14 17.63,7.38 16.97,7.5C15.42,5.63 11.71,7.15 12.37,9.95C9.76,9.79 8.17,8.61 6.85,7.16C6.1,8.38 6.75,10.23 7.64,10.74C7.18,10.71 6.83,10.57 6.5,10.41C6.54,11.95 7.39,12.69 8.58,13.09C8.22,13.16 7.82,13.18 7.44,13.12C7.81,14.19 8.58,14.86 9.9,15C9,15.76 7.34,16.29 6,16.08C7.15,16.81 8.46,17.39 10.28,17.31C14.69,17.11 17.64,13.95 17.71,9.33M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z" /></g><g id="twitter-retweet"><path d="M6,5.75L10.25,10H7V16H13.5L15.5,18H7A2,2 0 0,1 5,16V10H1.75L6,5.75M18,18.25L13.75,14H17V8H10.5L8.5,6H17A2,2 0 0,1 19,8V14H22.25L18,18.25Z" /></g><g id="ubuntu"><path d="M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M14.34,7.74C14.92,8.07 15.65,7.87 16,7.3C16.31,6.73 16.12,6 15.54,5.66C14.97,5.33 14.23,5.5 13.9,6.1C13.57,6.67 13.77,7.41 14.34,7.74M11.88,15.5C11.35,15.5 10.85,15.39 10.41,15.18L9.57,16.68C10.27,17 11.05,17.22 11.88,17.22C12.37,17.22 12.83,17.15 13.28,17.03C13.36,16.54 13.64,16.1 14.1,15.84C14.56,15.57 15.08,15.55 15.54,15.72C16.43,14.85 17,13.66 17.09,12.33L15.38,12.31C15.22,14.1 13.72,15.5 11.88,15.5M11.88,8.5C13.72,8.5 15.22,9.89 15.38,11.69L17.09,11.66C17,10.34 16.43,9.15 15.54,8.28C15.08,8.45 14.55,8.42 14.1,8.16C13.64,7.9 13.36,7.45 13.28,6.97C12.83,6.85 12.37,6.78 11.88,6.78C11.05,6.78 10.27,6.97 9.57,7.32L10.41,8.82C10.85,8.61 11.35,8.5 11.88,8.5M8.37,12C8.37,10.81 8.96,9.76 9.86,9.13L9,7.65C7.94,8.36 7.15,9.43 6.83,10.69C7.21,11 7.45,11.47 7.45,12C7.45,12.53 7.21,13 6.83,13.31C7.15,14.56 7.94,15.64 9,16.34L9.86,14.87C8.96,14.24 8.37,13.19 8.37,12M14.34,16.26C13.77,16.59 13.57,17.32 13.9,17.9C14.23,18.47 14.97,18.67 15.54,18.34C16.12,18 16.31,17.27 16,16.7C15.65,16.12 14.92,15.93 14.34,16.26M5.76,10.8C5.1,10.8 4.56,11.34 4.56,12C4.56,12.66 5.1,13.2 5.76,13.2C6.43,13.2 6.96,12.66 6.96,12C6.96,11.34 6.43,10.8 5.76,10.8Z" /></g><g id="umbraco"><path d="M8.6,8.6L7.17,8.38C6.5,11.67 6.46,14.24 7.61,15.5C8.6,16.61 11.89,16.61 11.89,16.61C11.89,16.61 15.29,16.61 16.28,15.5C17.43,14.24 17.38,11.67 16.72,8.38L15.29,8.6C15.29,8.6 16.54,13.88 14.69,14.69C13.81,15.07 11.89,15.07 11.89,15.07C11.89,15.07 10.08,15.07 9.2,14.69C7.35,13.88 8.6,8.6 8.6,8.6M12,3A9,9 0 0,1 21,12A9,9 0 0,1 12,21A9,9 0 0,1 3,12A9,9 0 0,1 12,3Z" /></g><g id="umbrella"><path d="M12,2A9,9 0 0,0 3,11H11V19A1,1 0 0,1 10,20A1,1 0 0,1 9,19H7A3,3 0 0,0 10,22A3,3 0 0,0 13,19V11H21A9,9 0 0,0 12,2Z" /></g><g id="umbrella-outline"><path d="M12,4C15.09,4 17.82,6.04 18.7,9H5.3C6.18,6.03 8.9,4 12,4M12,2A9,9 0 0,0 3,11H11V19A1,1 0 0,1 10,20A1,1 0 0,1 9,19H7A3,3 0 0,0 10,22A3,3 0 0,0 13,19V11H21A9,9 0 0,0 12,2Z" /></g><g id="undo"><path d="M12.5,8C9.85,8 7.45,9 5.6,10.6L2,7V16H11L7.38,12.38C8.77,11.22 10.54,10.5 12.5,10.5C16.04,10.5 19.05,12.81 20.1,16L22.47,15.22C21.08,11.03 17.15,8 12.5,8Z" /></g><g id="undo-variant"><path d="M13.5,7A6.5,6.5 0 0,1 20,13.5A6.5,6.5 0 0,1 13.5,20H10V18H13.5C16,18 18,16 18,13.5C18,11 16,9 13.5,9H7.83L10.91,12.09L9.5,13.5L4,8L9.5,2.5L10.92,3.91L7.83,7H13.5M6,18H8V20H6V18Z" /></g><g id="unfold-less"><path d="M16.59,5.41L15.17,4L12,7.17L8.83,4L7.41,5.41L12,10M7.41,18.59L8.83,20L12,16.83L15.17,20L16.58,18.59L12,14L7.41,18.59Z" /></g><g id="unfold-more"><path d="M12,18.17L8.83,15L7.42,16.41L12,21L16.59,16.41L15.17,15M12,5.83L15.17,9L16.58,7.59L12,3L7.41,7.59L8.83,9L12,5.83Z" /></g><g id="ungroup"><path d="M2,2H6V3H13V2H17V6H16V9H18V8H22V12H21V18H22V22H18V21H12V22H8V18H9V16H6V17H2V13H3V6H2V2M18,12V11H16V13H17V17H13V16H11V18H12V19H18V18H19V12H18M13,6V5H6V6H5V13H6V14H9V12H8V8H12V9H14V6H13M12,12H11V14H13V13H14V11H12V12Z" /></g><g id="unity"><path d="M9.11,17H6.5L1.59,12L6.5,7H9.11L10.42,4.74L17.21,3L19.08,9.74L17.77,12L19.08,14.26L17.21,21L10.42,19.26L9.11,17M9.25,16.75L14.38,18.13L11.42,13H5.5L9.25,16.75M16.12,17.13L17.5,12L16.12,6.87L13.15,12L16.12,17.13M9.25,7.25L5.5,11H11.42L14.38,5.87L9.25,7.25Z" /></g><g id="untappd"><path d="M14.41,4C14.41,4 14.94,4.39 14.97,4.71C14.97,4.81 14.73,4.85 14.68,4.93C14.62,5 14.7,5.15 14.65,5.21C14.59,5.26 14.5,5.26 14.41,5.41C14.33,5.56 12.07,10.09 11.73,10.63C11.59,11.03 11.47,12.46 11.37,12.66C11.26,12.85 6.34,19.84 6.16,20.05C5.67,20.63 4.31,20.3 3.28,19.56C2.3,18.86 1.74,17.7 2.11,17.16C2.27,16.93 7.15,9.92 7.29,9.75C7.44,9.58 8.75,9 9.07,8.71C9.47,8.22 12.96,4.54 13.07,4.42C13.18,4.3 13.15,4.2 13.18,4.13C13.22,4.06 13.38,4.08 13.43,4C13.5,3.93 13.39,3.71 13.5,3.68C13.59,3.64 13.96,3.67 14.41,4M10.85,4.44L11.74,5.37L10.26,6.94L9.46,5.37C9.38,5.22 9.28,5.22 9.22,5.17C9.17,5.11 9.24,4.97 9.19,4.89C9.13,4.81 8.9,4.83 8.9,4.73C8.9,4.62 9.05,4.28 9.5,3.96C9.5,3.96 10.06,3.6 10.37,3.68C10.47,3.71 10.43,3.95 10.5,4C10.54,4.1 10.7,4.08 10.73,4.15C10.77,4.21 10.73,4.32 10.85,4.44M21.92,17.15C22.29,17.81 21.53,19 20.5,19.7C19.5,20.39 18.21,20.54 17.83,20C17.66,19.78 12.67,12.82 12.56,12.62C12.45,12.43 12.32,11 12.18,10.59L12.15,10.55C12.45,10 13.07,8.77 13.73,7.47C14.3,8.06 14.75,8.56 14.88,8.72C15.21,9 16.53,9.58 16.68,9.75C16.82,9.92 21.78,16.91 21.92,17.15Z" /></g><g id="update"><path d="M21,10.12H14.22L16.96,7.3C14.23,4.6 9.81,4.5 7.08,7.2C4.35,9.91 4.35,14.28 7.08,17C9.81,19.7 14.23,19.7 16.96,17C18.32,15.65 19,14.08 19,12.1H21C21,14.08 20.12,16.65 18.36,18.39C14.85,21.87 9.15,21.87 5.64,18.39C2.14,14.92 2.11,9.28 5.62,5.81C9.13,2.34 14.76,2.34 18.27,5.81L21,3V10.12M12.5,8V12.25L16,14.33L15.28,15.54L11,13V8H12.5Z" /></g><g id="upload"><path d="M9,16V10H5L12,3L19,10H15V16H9M5,20V18H19V20H5Z" /></g><g id="usb"><path d="M15,7V11H16V13H13V5H15L12,1L9,5H11V13H8V10.93C8.7,10.56 9.2,9.85 9.2,9C9.2,7.78 8.21,6.8 7,6.8C5.78,6.8 4.8,7.78 4.8,9C4.8,9.85 5.3,10.56 6,10.93V13A2,2 0 0,0 8,15H11V18.05C10.29,18.41 9.8,19.15 9.8,20A2.2,2.2 0 0,0 12,22.2A2.2,2.2 0 0,0 14.2,20C14.2,19.15 13.71,18.41 13,18.05V15H16A2,2 0 0,0 18,13V11H19V7H15Z" /></g><g id="vector-arrange-above"><path d="M3,1C1.89,1 1,1.89 1,3V14C1,15.11 1.89,16 3,16C6.67,16 10.33,16 14,16C15.11,16 16,15.11 16,14C16,10.33 16,6.67 16,3C16,1.89 15.11,1 14,1H3M3,3H14V14H3V3M18,7V9H20V20H9V18H7V20C7,21.11 7.89,22 9,22H20C21.11,22 22,21.11 22,20V9C22,7.89 21.11,7 20,7H18Z" /></g><g id="vector-arrange-below"><path d="M20,22C21.11,22 22,21.11 22,20V9C22,7.89 21.11,7 20,7C16.33,7 12.67,7 9,7C7.89,7 7,7.89 7,9C7,12.67 7,16.33 7,20C7,21.11 7.89,22 9,22H20M20,20H9V9H20V20M5,16V14H3V3H14V5H16V3C16,1.89 15.11,1 14,1H3C1.89,1 1,1.89 1,3V14C1,15.11 1.89,16 3,16H5Z" /></g><g id="vector-circle"><path d="M9,2V4.06C6.72,4.92 4.92,6.72 4.05,9H2V15H4.06C4.92,17.28 6.72,19.09 9,19.95V22H15V19.94C17.28,19.08 19.09,17.28 19.95,15H22V9H19.94C19.08,6.72 17.28,4.92 15,4.05V2M11,4H13V6H11M9,6.25V8H15V6.25C16.18,6.86 17.14,7.82 17.75,9H16V15H17.75C17.14,16.18 16.18,17.14 15,17.75V16H9V17.75C7.82,17.14 6.86,16.18 6.25,15H8V9H6.25C6.86,7.82 7.82,6.86 9,6.25M4,11H6V13H4M18,11H20V13H18M11,18H13V20H11" /></g><g id="vector-circle-variant"><path d="M22,9H19.97C18.7,5.41 15.31,3 11.5,3A9,9 0 0,0 2.5,12C2.5,17 6.53,21 11.5,21C15.31,21 18.7,18.6 20,15H22M20,11V13H18V11M17.82,15C16.66,17.44 14.2,19 11.5,19C7.64,19 4.5,15.87 4.5,12C4.5,8.14 7.64,5 11.5,5C14.2,5 16.66,6.57 17.81,9H16V15" /></g><g id="vector-combine"><path d="M3,1C1.89,1 1,1.89 1,3V14C1,15.11 1.89,16 3,16C4.33,16 7,16 7,16C7,16 7,18.67 7,20C7,21.11 7.89,22 9,22H20C21.11,22 22,21.11 22,20V9C22,7.89 21.11,7 20,7C18.67,7 16,7 16,7C16,7 16,4.33 16,3C16,1.89 15.11,1 14,1H3M3,3H14C14,4.33 14,7 14,7H9C7.89,7 7,7.89 7,9V14C7,14 4.33,14 3,14V3M9,9H14V14H9V9M16,9C16,9 18.67,9 20,9V20H9C9,18.67 9,16 9,16H14C15.11,16 16,15.11 16,14V9Z" /></g><g id="vector-curve"><path d="M18.5,2A1.5,1.5 0 0,1 20,3.5A1.5,1.5 0 0,1 18.5,5C18.27,5 18.05,4.95 17.85,4.85L14.16,8.55L14.5,9C16.69,7.74 19.26,7 22,7L23,7.03V9.04L22,9C19.42,9 17,9.75 15,11.04A3.96,3.96 0 0,1 11.04,15C9.75,17 9,19.42 9,22L9.04,23H7.03L7,22C7,19.26 7.74,16.69 9,14.5L8.55,14.16L4.85,17.85C4.95,18.05 5,18.27 5,18.5A1.5,1.5 0 0,1 3.5,20A1.5,1.5 0 0,1 2,18.5A1.5,1.5 0 0,1 3.5,17C3.73,17 3.95,17.05 4.15,17.15L7.84,13.45C7.31,12.78 7,11.92 7,11A4,4 0 0,1 11,7C11.92,7 12.78,7.31 13.45,7.84L17.15,4.15C17.05,3.95 17,3.73 17,3.5A1.5,1.5 0 0,1 18.5,2M11,9A2,2 0 0,0 9,11A2,2 0 0,0 11,13A2,2 0 0,0 13,11A2,2 0 0,0 11,9Z" /></g><g id="vector-difference"><path d="M3,1C1.89,1 1,1.89 1,3V14C1,15.11 1.89,16 3,16H5V14H3V3H14V5H16V3C16,1.89 15.11,1 14,1H3M9,7C7.89,7 7,7.89 7,9V11H9V9H11V7H9M13,7V9H14V10H16V7H13M18,7V9H20V20H9V18H7V20C7,21.11 7.89,22 9,22H20C21.11,22 22,21.11 22,20V9C22,7.89 21.11,7 20,7H18M14,12V14H12V16H14C15.11,16 16,15.11 16,14V12H14M7,13V16H10V14H9V13H7Z" /></g><g id="vector-difference-ab"><path d="M3,1C1.89,1 1,1.89 1,3V5H3V3H5V1H3M7,1V3H10V1H7M12,1V3H14V5H16V3C16,1.89 15.11,1 14,1H12M1,7V10H3V7H1M14,7C14,7 14,11.67 14,14C11.67,14 7,14 7,14C7,14 7,18 7,20C7,21.11 7.89,22 9,22H20C21.11,22 22,21.11 22,20V9C22,7.89 21.11,7 20,7C18,7 14,7 14,7M16,9H20V20H9V16H14C15.11,16 16,15.11 16,14V9M1,12V14C1,15.11 1.89,16 3,16H5V14H3V12H1Z" /></g><g id="vector-difference-ba"><path d="M20,22C21.11,22 22,21.11 22,20V18H20V20H18V22H20M16,22V20H13V22H16M11,22V20H9V18H7V20C7,21.11 7.89,22 9,22H11M22,16V13H20V16H22M9,16C9,16 9,11.33 9,9C11.33,9 16,9 16,9C16,9 16,5 16,3C16,1.89 15.11,1 14,1H3C1.89,1 1,1.89 1,3V14C1,15.11 1.89,16 3,16C5,16 9,16 9,16M7,14H3V3H14V7H9C7.89,7 7,7.89 7,9V14M22,11V9C22,7.89 21.11,7 20,7H18V9H20V11H22Z" /></g><g id="vector-intersection"><path d="M3.14,1A2.14,2.14 0 0,0 1,3.14V5H3V3H5V1H3.14M7,1V3H10V1H7M12,1V3H14V5H16V3.14C16,1.96 15.04,1 13.86,1H12M1,7V10H3V7H1M9,7C7.89,7 7,7.89 7,9C7,11.33 7,16 7,16C7,16 11.57,16 13.86,16A2.14,2.14 0 0,0 16,13.86C16,11.57 16,7 16,7C16,7 11.33,7 9,7M18,7V9H20V11H22V9C22,7.89 21.11,7 20,7H18M9,9H14V14H9V9M1,12V13.86C1,15.04 1.96,16 3.14,16H5V14H3V12H1M20,13V16H22V13H20M7,18V20C7,21.11 7.89,22 9,22H11V20H9V18H7M20,18V20H18V22H20C21.11,22 22,21.11 22,20V18H20M13,20V22H16V20H13Z" /></g><g id="vector-line"><path d="M15,3V7.59L7.59,15H3V21H9V16.42L16.42,9H21V3M17,5H19V7H17M5,17H7V19H5" /></g><g id="vector-point"><path d="M12,20L7,22L12,11L17,22L12,20M8,2H16V5H22V7H16V10H8V7H2V5H8V2M10,4V8H14V4H10Z" /></g><g id="vector-polygon"><path d="M2,2V8H4.28L5.57,16H4V22H10V20.06L15,20.05V22H21V16H19.17L20,9H22V3H16V6.53L14.8,8H9.59L8,5.82V2M4,4H6V6H4M18,5H20V7H18M6.31,8H7.11L9,10.59V14H15V10.91L16.57,9H18L17.16,16H15V18.06H10V16H7.6M11,10H13V12H11M6,18H8V20H6M17,18H19V20H17" /></g><g id="vector-polyline"><path d="M16,2V8H17.08L14.95,13H14.26L12,9.97V5H6V11H6.91L4.88,16H2V22H8V16H7.04L9.07,11H10.27L12,13.32V19H18V13H17.12L19.25,8H22V2M18,4H20V6H18M8,7H10V9H8M14,15H16V17H14M4,18H6V20H4" /></g><g id="vector-rectangle"><path d="M2,4H8V6H16V4H22V10H20V14H22V20H16V18H8V20H2V14H4V10H2V4M16,10V8H8V10H6V14H8V16H16V14H18V10H16M4,6V8H6V6H4M18,6V8H20V6H18M4,16V18H6V16H4M18,16V18H20V16H18Z" /></g><g id="vector-selection"><path d="M3,1H5V3H3V5H1V3A2,2 0 0,1 3,1M14,1A2,2 0 0,1 16,3V5H14V3H12V1H14M20,7A2,2 0 0,1 22,9V11H20V9H18V7H20M22,20A2,2 0 0,1 20,22H18V20H20V18H22V20M20,13H22V16H20V13M13,9V7H16V10H14V9H13M13,22V20H16V22H13M9,22A2,2 0 0,1 7,20V18H9V20H11V22H9M7,16V13H9V14H10V16H7M7,3V1H10V3H7M3,16A2,2 0 0,1 1,14V12H3V14H5V16H3M1,7H3V10H1V7M9,7H11V9H9V11H7V9A2,2 0 0,1 9,7M16,14A2,2 0 0,1 14,16H12V14H14V12H16V14Z" /></g><g id="vector-square"><path d="M2,2H8V4H16V2H22V8H20V16H22V22H16V20H8V22H2V16H4V8H2V2M16,8V6H8V8H6V16H8V18H16V16H18V8H16M4,4V6H6V4H4M18,4V6H20V4H18M4,18V20H6V18H4M18,18V20H20V18H18Z" /></g><g id="vector-triangle"><path d="M9,3V9H9.73L5.79,16H2V22H8V20H16V22H22V16H18.21L14.27,9H15V3M11,5H13V7H11M12,9.04L16,16.15V18H8V16.15M4,18H6V20H4M18,18H20V20H18" /></g><g id="vector-union"><path d="M3,1C1.89,1 1,1.89 1,3V14C1,15.11 1.89,16 3,16H7V20C7,21.11 7.89,22 9,22H20C21.11,22 22,21.11 22,20V9C22,7.89 21.11,7 20,7H16V3C16,1.89 15.11,1 14,1H3M3,3H14V9H20V20H9V14H3V3Z" /></g><g id="verified"><path d="M10,17L6,13L7.41,11.59L10,14.17L16.59,7.58L18,9M12,1L3,5V11C3,16.55 6.84,21.74 12,23C17.16,21.74 21,16.55 21,11V5L12,1Z" /></g><g id="vibrate"><path d="M16,19H8V5H16M16.5,3H7.5A1.5,1.5 0 0,0 6,4.5V19.5A1.5,1.5 0 0,0 7.5,21H16.5A1.5,1.5 0 0,0 18,19.5V4.5A1.5,1.5 0 0,0 16.5,3M19,17H21V7H19M22,9V15H24V9M3,17H5V7H3M0,15H2V9H0V15Z" /></g><g id="video"><path d="M17,10.5V7A1,1 0 0,0 16,6H4A1,1 0 0,0 3,7V17A1,1 0 0,0 4,18H16A1,1 0 0,0 17,17V13.5L21,17.5V6.5L17,10.5Z" /></g><g id="video-off"><path d="M3.27,2L2,3.27L4.73,6H4A1,1 0 0,0 3,7V17A1,1 0 0,0 4,18H16C16.2,18 16.39,17.92 16.54,17.82L19.73,21L21,19.73M21,6.5L17,10.5V7A1,1 0 0,0 16,6H9.82L21,17.18V6.5Z" /></g><g id="video-switch"><path d="M13,15.5V13H7V15.5L3.5,12L7,8.5V11H13V8.5L16.5,12M18,9.5V6A1,1 0 0,0 17,5H3A1,1 0 0,0 2,6V18A1,1 0 0,0 3,19H17A1,1 0 0,0 18,18V14.5L22,18.5V5.5L18,9.5Z" /></g><g id="view-agenda"><path d="M20,3H3A1,1 0 0,0 2,4V10A1,1 0 0,0 3,11H20A1,1 0 0,0 21,10V4A1,1 0 0,0 20,3M20,13H3A1,1 0 0,0 2,14V20A1,1 0 0,0 3,21H20A1,1 0 0,0 21,20V14A1,1 0 0,0 20,13Z" /></g><g id="view-array"><path d="M8,18H17V5H8M18,5V18H21V5M4,18H7V5H4V18Z" /></g><g id="view-carousel"><path d="M18,6V17H22V6M2,17H6V6H2M7,19H17V4H7V19Z" /></g><g id="view-column"><path d="M16,5V18H21V5M4,18H9V5H4M10,18H15V5H10V18Z" /></g><g id="view-dashboard"><path d="M13,3V9H21V3M13,21H21V11H13M3,21H11V15H3M3,13H11V3H3V13Z" /></g><g id="view-day"><path d="M2,3V6H21V3M20,8H3A1,1 0 0,0 2,9V15A1,1 0 0,0 3,16H20A1,1 0 0,0 21,15V9A1,1 0 0,0 20,8M2,21H21V18H2V21Z" /></g><g id="view-grid"><path d="M3,11H11V3H3M3,21H11V13H3M13,21H21V13H13M13,3V11H21V3" /></g><g id="view-headline"><path d="M4,5V7H21V5M4,11H21V9H4M4,19H21V17H4M4,15H21V13H4V15Z" /></g><g id="view-list"><path d="M9,5V9H21V5M9,19H21V15H9M9,14H21V10H9M4,9H8V5H4M4,19H8V15H4M4,14H8V10H4V14Z" /></g><g id="view-module"><path d="M16,5V11H21V5M10,11H15V5H10M16,18H21V12H16M10,18H15V12H10M4,18H9V12H4M4,11H9V5H4V11Z" /></g><g id="view-parallel"><path d="M4,21V3H8V21H4M10,21V3H14V21H10M16,21V3H20V21H16Z" /></g><g id="view-quilt"><path d="M10,5V11H21V5M16,18H21V12H16M4,18H9V5H4M10,18H15V12H10V18Z" /></g><g id="view-sequential"><path d="M3,4H21V8H3V4M3,10H21V14H3V10M3,16H21V20H3V16Z" /></g><g id="view-stream"><path d="M4,5V11H21V5M4,18H21V12H4V18Z" /></g><g id="view-week"><path d="M13,5H10A1,1 0 0,0 9,6V18A1,1 0 0,0 10,19H13A1,1 0 0,0 14,18V6A1,1 0 0,0 13,5M20,5H17A1,1 0 0,0 16,6V18A1,1 0 0,0 17,19H20A1,1 0 0,0 21,18V6A1,1 0 0,0 20,5M6,5H3A1,1 0 0,0 2,6V18A1,1 0 0,0 3,19H6A1,1 0 0,0 7,18V6A1,1 0 0,0 6,5Z" /></g><g id="vimeo"><path d="M22,7.42C21.91,9.37 20.55,12.04 17.92,15.44C15.2,19 12.9,20.75 11,20.75C9.85,20.75 8.86,19.67 8.05,17.5C7.5,15.54 7,13.56 6.44,11.58C5.84,9.42 5.2,8.34 4.5,8.34C4.36,8.34 3.84,8.66 2.94,9.29L2,8.07C3,7.2 3.96,6.33 4.92,5.46C6.24,4.32 7.23,3.72 7.88,3.66C9.44,3.5 10.4,4.58 10.76,6.86C11.15,9.33 11.42,10.86 11.57,11.46C12,13.5 12.5,14.5 13.05,14.5C13.47,14.5 14.1,13.86 14.94,12.53C15.78,11.21 16.23,10.2 16.29,9.5C16.41,8.36 15.96,7.79 14.94,7.79C14.46,7.79 13.97,7.9 13.46,8.12C14.44,4.89 16.32,3.32 19.09,3.41C21.15,3.47 22.12,4.81 22,7.42Z" /></g><g id="vine"><path d="M19.89,11.95C19.43,12.06 19,12.1 18.57,12.1C16.3,12.1 14.55,10.5 14.55,7.76C14.55,6.41 15.08,5.7 15.82,5.7C16.5,5.7 17,6.33 17,7.61C17,8.34 16.79,9.14 16.65,9.61C16.65,9.61 17.35,10.83 19.26,10.46C19.67,9.56 19.89,8.39 19.89,7.36C19.89,4.6 18.5,3 15.91,3C13.26,3 11.71,5.04 11.71,7.72C11.71,10.38 12.95,12.67 15,13.71C14.14,15.43 13.04,16.95 11.9,18.1C9.82,15.59 7.94,12.24 7.17,5.7H4.11C5.53,16.59 9.74,20.05 10.86,20.72C11.5,21.1 12.03,21.08 12.61,20.75C13.5,20.24 16.23,17.5 17.74,14.34C18.37,14.33 19.13,14.26 19.89,14.09V11.95Z" /></g><g id="violin"><path d="M11,2A1,1 0 0,0 10,3V5L10,9A0.5,0.5 0 0,0 10.5,9.5H12A0.5,0.5 0 0,1 12.5,10A0.5,0.5 0 0,1 12,10.5H10.5C9.73,10.5 9,9.77 9,9V5.16C7.27,5.6 6,7.13 6,9V10.5A2.5,2.5 0 0,1 8.5,13A2.5,2.5 0 0,1 6,15.5V17C6,19.77 8.23,22 11,22H13C15.77,22 18,19.77 18,17V15.5A2.5,2.5 0 0,1 15.5,13A2.5,2.5 0 0,1 18,10.5V9C18,6.78 16.22,5 14,5V3A1,1 0 0,0 13,2H11M10.75,16.5H13.25L12.75,20H11.25L10.75,16.5Z" /></g><g id="visualstudio"><path d="M17,8.5L12.25,12.32L17,16V8.5M4.7,18.4L2,16.7V7.7L5,6.7L9.3,10.03L18,2L22,4.5V20L17,22L9.34,14.66L4.7,18.4M5,14L6.86,12.28L5,10.5V14Z" /></g><g id="vk"><path d="M19.54,14.6C21.09,16.04 21.41,16.73 21.46,16.82C22.1,17.88 20.76,17.96 20.76,17.96L18.18,18C18.18,18 17.62,18.11 16.9,17.61C15.93,16.95 15,15.22 14.31,15.45C13.6,15.68 13.62,17.23 13.62,17.23C13.62,17.23 13.62,17.45 13.46,17.62C13.28,17.81 12.93,17.74 12.93,17.74H11.78C11.78,17.74 9.23,18 7,15.67C4.55,13.13 2.39,8.13 2.39,8.13C2.39,8.13 2.27,7.83 2.4,7.66C2.55,7.5 2.97,7.5 2.97,7.5H5.73C5.73,7.5 6,7.5 6.17,7.66C6.32,7.77 6.41,8 6.41,8C6.41,8 6.85,9.11 7.45,10.13C8.6,12.12 9.13,12.55 9.5,12.34C10.1,12.03 9.93,9.53 9.93,9.53C9.93,9.53 9.94,8.62 9.64,8.22C9.41,7.91 8.97,7.81 8.78,7.79C8.62,7.77 8.88,7.41 9.21,7.24C9.71,7 10.58,7 11.62,7C12.43,7 12.66,7.06 12.97,7.13C13.93,7.36 13.6,8.25 13.6,10.37C13.6,11.06 13.5,12 13.97,12.33C14.18,12.47 14.7,12.35 16,10.16C16.6,9.12 17.06,7.89 17.06,7.89C17.06,7.89 17.16,7.68 17.31,7.58C17.47,7.5 17.69,7.5 17.69,7.5H20.59C20.59,7.5 21.47,7.4 21.61,7.79C21.76,8.2 21.28,9.17 20.09,10.74C18.15,13.34 17.93,13.1 19.54,14.6Z" /></g><g id="vk-box"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M17.24,14.03C16.06,12.94 16.22,13.11 17.64,11.22C18.5,10.07 18.85,9.37 18.74,9.07C18.63,8.79 18,8.86 18,8.86L15.89,8.88C15.89,8.88 15.73,8.85 15.62,8.92C15.5,9 15.43,9.15 15.43,9.15C15.43,9.15 15.09,10.04 14.65,10.8C13.71,12.39 13.33,12.47 13.18,12.38C12.83,12.15 12.91,11.45 12.91,10.95C12.91,9.41 13.15,8.76 12.46,8.6C12.23,8.54 12.06,8.5 11.47,8.5C10.72,8.5 10.08,8.5 9.72,8.68C9.5,8.8 9.29,9.06 9.41,9.07C9.55,9.09 9.86,9.16 10.03,9.39C10.25,9.68 10.24,10.34 10.24,10.34C10.24,10.34 10.36,12.16 9.95,12.39C9.66,12.54 9.27,12.22 8.44,10.78C8,10.04 7.68,9.22 7.68,9.22L7.5,9L7.19,8.85H5.18C5.18,8.85 4.88,8.85 4.77,9C4.67,9.1 4.76,9.32 4.76,9.32C4.76,9.32 6.33,12.96 8.11,14.8C9.74,16.5 11.59,16.31 11.59,16.31H12.43C12.43,16.31 12.68,16.36 12.81,16.23C12.93,16.1 12.93,15.94 12.93,15.94C12.93,15.94 12.91,14.81 13.43,14.65C13.95,14.5 14.61,15.73 15.31,16.22C15.84,16.58 16.24,16.5 16.24,16.5L18.12,16.47C18.12,16.47 19.1,16.41 18.63,15.64C18.6,15.58 18.36,15.07 17.24,14.03Z" /></g><g id="vk-circle"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M17.24,14.03C16.06,12.94 16.22,13.11 17.64,11.22C18.5,10.07 18.85,9.37 18.74,9.07C18.63,8.79 18,8.86 18,8.86L15.89,8.88C15.89,8.88 15.73,8.85 15.62,8.92C15.5,9 15.43,9.15 15.43,9.15C15.43,9.15 15.09,10.04 14.65,10.8C13.71,12.39 13.33,12.47 13.18,12.38C12.83,12.15 12.91,11.45 12.91,10.95C12.91,9.41 13.15,8.76 12.46,8.6C12.23,8.54 12.06,8.5 11.47,8.5C10.72,8.5 10.08,8.5 9.72,8.68C9.5,8.8 9.29,9.06 9.41,9.07C9.55,9.09 9.86,9.16 10.03,9.39C10.25,9.68 10.24,10.34 10.24,10.34C10.24,10.34 10.36,12.16 9.95,12.39C9.66,12.54 9.27,12.22 8.44,10.78C8,10.04 7.68,9.22 7.68,9.22L7.5,9L7.19,8.85H5.18C5.18,8.85 4.88,8.85 4.77,9C4.67,9.1 4.76,9.32 4.76,9.32C4.76,9.32 6.33,12.96 8.11,14.8C9.74,16.5 11.59,16.31 11.59,16.31H12.43C12.43,16.31 12.68,16.36 12.81,16.23C12.93,16.1 12.93,15.94 12.93,15.94C12.93,15.94 12.91,14.81 13.43,14.65C13.95,14.5 14.61,15.73 15.31,16.22C15.84,16.58 16.24,16.5 16.24,16.5L18.12,16.47C18.12,16.47 19.1,16.41 18.63,15.64C18.6,15.58 18.36,15.07 17.24,14.03Z" /></g><g id="vlc"><path d="M12,1C11.58,1 11.19,1.23 11,1.75L9.88,4.88C10.36,5.4 11.28,5.5 12,5.5C12.72,5.5 13.64,5.4 14.13,4.88L13,1.75C12.82,1.25 12.42,1 12,1M8.44,8.91L7,12.91C8.07,14.27 10.26,14.5 12,14.5C13.74,14.5 15.93,14.27 17,12.91L15.56,8.91C14.76,9.83 13.24,10 12,10C10.76,10 9.24,9.83 8.44,8.91M5.44,15C4.62,15 3.76,15.65 3.53,16.44L2.06,21.56C1.84,22.35 2.3,23 3.13,23H20.88C21.7,23 22.16,22.35 21.94,21.56L20.47,16.44C20.24,15.65 19.38,15 18.56,15H17.75L18.09,15.97C18.21,16.29 18.29,16.69 18.09,16.97C16.84,18.7 14.14,19 12,19C9.86,19 7.16,18.7 5.91,16.97C5.71,16.69 5.79,16.29 5.91,15.97L6.25,15H5.44Z" /></g><g id="voice"><path d="M9,5A4,4 0 0,1 13,9A4,4 0 0,1 9,13A4,4 0 0,1 5,9A4,4 0 0,1 9,5M9,15C11.67,15 17,16.34 17,19V21H1V19C1,16.34 6.33,15 9,15M16.76,5.36C18.78,7.56 18.78,10.61 16.76,12.63L15.08,10.94C15.92,9.76 15.92,8.23 15.08,7.05L16.76,5.36M20.07,2C24,6.05 23.97,12.11 20.07,16L18.44,14.37C21.21,11.19 21.21,6.65 18.44,3.63L20.07,2Z" /></g><g id="voicemail"><path d="M18.5,15A3.5,3.5 0 0,1 15,11.5A3.5,3.5 0 0,1 18.5,8A3.5,3.5 0 0,1 22,11.5A3.5,3.5 0 0,1 18.5,15M5.5,15A3.5,3.5 0 0,1 2,11.5A3.5,3.5 0 0,1 5.5,8A3.5,3.5 0 0,1 9,11.5A3.5,3.5 0 0,1 5.5,15M18.5,6A5.5,5.5 0 0,0 13,11.5C13,12.83 13.47,14.05 14.26,15H9.74C10.53,14.05 11,12.83 11,11.5A5.5,5.5 0 0,0 5.5,6A5.5,5.5 0 0,0 0,11.5A5.5,5.5 0 0,0 5.5,17H18.5A5.5,5.5 0 0,0 24,11.5A5.5,5.5 0 0,0 18.5,6Z" /></g><g id="volume-high"><path d="M14,3.23V5.29C16.89,6.15 19,8.83 19,12C19,15.17 16.89,17.84 14,18.7V20.77C18,19.86 21,16.28 21,12C21,7.72 18,4.14 14,3.23M16.5,12C16.5,10.23 15.5,8.71 14,7.97V16C15.5,15.29 16.5,13.76 16.5,12M3,9V15H7L12,20V4L7,9H3Z" /></g><g id="volume-low"><path d="M7,9V15H11L16,20V4L11,9H7Z" /></g><g id="volume-medium"><path d="M5,9V15H9L14,20V4L9,9M18.5,12C18.5,10.23 17.5,8.71 16,7.97V16C17.5,15.29 18.5,13.76 18.5,12Z" /></g><g id="volume-off"><path d="M12,4L9.91,6.09L12,8.18M4.27,3L3,4.27L7.73,9H3V15H7L12,20V13.27L16.25,17.53C15.58,18.04 14.83,18.46 14,18.7V20.77C15.38,20.45 16.63,19.82 17.68,18.96L19.73,21L21,19.73L12,10.73M19,12C19,12.94 18.8,13.82 18.46,14.64L19.97,16.15C20.62,14.91 21,13.5 21,12C21,7.72 18,4.14 14,3.23V5.29C16.89,6.15 19,8.83 19,12M16.5,12C16.5,10.23 15.5,8.71 14,7.97V10.18L16.45,12.63C16.5,12.43 16.5,12.21 16.5,12Z" /></g><g id="vpn"><path d="M9,5H15L12,8L9,5M10.5,14.66C10.2,15 10,15.5 10,16A2,2 0 0,0 12,18A2,2 0 0,0 14,16C14,15.45 13.78,14.95 13.41,14.59L14.83,13.17C15.55,13.9 16,14.9 16,16A4,4 0 0,1 12,20A4,4 0 0,1 8,16C8,14.93 8.42,13.96 9.1,13.25L9.09,13.24L16.17,6.17V6.17C16.89,5.45 17.89,5 19,5A4,4 0 0,1 23,9A4,4 0 0,1 19,13C17.9,13 16.9,12.55 16.17,11.83L17.59,10.41C17.95,10.78 18.45,11 19,11A2,2 0 0,0 21,9A2,2 0 0,0 19,7C18.45,7 17.95,7.22 17.59,7.59L10.5,14.66M6.41,7.59C6.05,7.22 5.55,7 5,7A2,2 0 0,0 3,9A2,2 0 0,0 5,11C5.55,11 6.05,10.78 6.41,10.41L7.83,11.83C7.1,12.55 6.1,13 5,13A4,4 0 0,1 1,9A4,4 0 0,1 5,5C6.11,5 7.11,5.45 7.83,6.17V6.17L10.59,8.93L9.17,10.35L6.41,7.59Z" /></g><g id="walk"><path d="M14.12,10H19V8.2H15.38L13.38,4.87C13.08,4.37 12.54,4.03 11.92,4.03C11.74,4.03 11.58,4.06 11.42,4.11L6,5.8V11H7.8V7.33L9.91,6.67L6,22H7.8L10.67,13.89L13,17V22H14.8V15.59L12.31,11.05L13.04,8.18M14,3.8C15,3.8 15.8,3 15.8,2C15.8,1 15,0.2 14,0.2C13,0.2 12.2,1 12.2,2C12.2,3 13,3.8 14,3.8Z" /></g><g id="wallet"><path d="M21,18V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V6H12C10.89,6 10,6.9 10,8V16A2,2 0 0,0 12,18M12,16H22V8H12M16,13.5A1.5,1.5 0 0,1 14.5,12A1.5,1.5 0 0,1 16,10.5A1.5,1.5 0 0,1 17.5,12A1.5,1.5 0 0,1 16,13.5Z" /></g><g id="wallet-giftcard"><path d="M20,14H4V8H9.08L7,10.83L8.62,12L11,8.76L12,7.4L13,8.76L15.38,12L17,10.83L14.92,8H20M20,19H4V17H20M9,4A1,1 0 0,1 10,5A1,1 0 0,1 9,6A1,1 0 0,1 8,5A1,1 0 0,1 9,4M15,4A1,1 0 0,1 16,5A1,1 0 0,1 15,6A1,1 0 0,1 14,5A1,1 0 0,1 15,4M20,6H17.82C17.93,5.69 18,5.35 18,5A3,3 0 0,0 15,2C13.95,2 13.04,2.54 12.5,3.35L12,4L11.5,3.34C10.96,2.54 10.05,2 9,2A3,3 0 0,0 6,5C6,5.35 6.07,5.69 6.18,6H4C2.89,6 2,6.89 2,8V19C2,20.11 2.89,21 4,21H20C21.11,21 22,20.11 22,19V8C22,6.89 21.11,6 20,6Z" /></g><g id="wallet-membership"><path d="M20,10H4V4H20M20,15H4V13H20M20,2H4C2.89,2 2,2.89 2,4V15C2,16.11 2.89,17 4,17H8V22L12,20L16,22V17H20C21.11,17 22,16.11 22,15V4C22,2.89 21.11,2 20,2Z" /></g><g id="wallet-travel"><path d="M20,14H4V8H7V10H9V8H15V10H17V8H20M20,19H4V17H20M9,4H15V6H9M20,6H17V4C17,2.89 16.11,2 15,2H9C7.89,2 7,2.89 7,4V6H4C2.89,6 2,6.89 2,8V19C2,20.11 2.89,21 4,21H20C21.11,21 22,20.11 22,19V8C22,6.89 21.11,6 20,6Z" /></g><g id="wan"><path d="M12,2A8,8 0 0,0 4,10C4,14.03 7,17.42 11,17.93V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15A1,1 0 0,0 14,19H13V17.93C17,17.43 20,14.03 20,10A8,8 0 0,0 12,2M12,4C12,4 12.74,5.28 13.26,7H10.74C11.26,5.28 12,4 12,4M9.77,4.43C9.5,4.93 9.09,5.84 8.74,7H6.81C7.5,5.84 8.5,4.93 9.77,4.43M14.23,4.44C15.5,4.94 16.5,5.84 17.19,7H15.26C14.91,5.84 14.5,4.93 14.23,4.44M6.09,9H8.32C8.28,9.33 8.25,9.66 8.25,10C8.25,10.34 8.28,10.67 8.32,11H6.09C6.03,10.67 6,10.34 6,10C6,9.66 6.03,9.33 6.09,9M10.32,9H13.68C13.72,9.33 13.75,9.66 13.75,10C13.75,10.34 13.72,10.67 13.68,11H10.32C10.28,10.67 10.25,10.34 10.25,10C10.25,9.66 10.28,9.33 10.32,9M15.68,9H17.91C17.97,9.33 18,9.66 18,10C18,10.34 17.97,10.67 17.91,11H15.68C15.72,10.67 15.75,10.34 15.75,10C15.75,9.66 15.72,9.33 15.68,9M6.81,13H8.74C9.09,14.16 9.5,15.07 9.77,15.56C8.5,15.06 7.5,14.16 6.81,13M10.74,13H13.26C12.74,14.72 12,16 12,16C12,16 11.26,14.72 10.74,13M15.26,13H17.19C16.5,14.16 15.5,15.07 14.23,15.57C14.5,15.07 14.91,14.16 15.26,13Z" /></g><g id="washing-machine"><path d="M14.83,11.17C16.39,12.73 16.39,15.27 14.83,16.83C13.27,18.39 10.73,18.39 9.17,16.83L14.83,11.17M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M7,4A1,1 0 0,0 6,5A1,1 0 0,0 7,6A1,1 0 0,0 8,5A1,1 0 0,0 7,4M10,4A1,1 0 0,0 9,5A1,1 0 0,0 10,6A1,1 0 0,0 11,5A1,1 0 0,0 10,4M12,8A6,6 0 0,0 6,14A6,6 0 0,0 12,20A6,6 0 0,0 18,14A6,6 0 0,0 12,8Z" /></g><g id="watch"><path d="M6,12A6,6 0 0,1 12,6A6,6 0 0,1 18,12A6,6 0 0,1 12,18A6,6 0 0,1 6,12M20,12C20,9.45 18.81,7.19 16.95,5.73L16,0H8L7.05,5.73C5.19,7.19 4,9.45 4,12C4,14.54 5.19,16.81 7.05,18.27L8,24H16L16.95,18.27C18.81,16.81 20,14.54 20,12Z" /></g><g id="watch-export"><path d="M14,11H19L16.5,8.5L17.92,7.08L22.84,12L17.92,16.92L16.5,15.5L19,13H14V11M12,18A6,6 0 0,1 6,12A6,6 0 0,1 12,6C13.4,6 14.69,6.5 15.71,7.29L17.13,5.87L16.95,5.73L16,0H8L7.05,5.73C5.19,7.19 4,9.46 4,12C4,14.55 5.19,16.81 7.05,18.27L8,24H16L16.95,18.27L17.13,18.13L15.71,16.71C14.69,17.5 13.4,18 12,18Z" /></g><g id="watch-import"><path d="M2,11H7L4.5,8.5L5.92,7.08L10.84,12L5.92,16.92L4.5,15.5L7,13H2V11M12,18A6,6 0 0,0 18,12A6,6 0 0,0 12,6C10.6,6 9.31,6.5 8.29,7.29L6.87,5.87L7.05,5.73L8,0H16L16.95,5.73C18.81,7.19 20,9.45 20,12C20,14.54 18.81,16.81 16.95,18.27L16,24H8L7.05,18.27L6.87,18.13L8.29,16.71C9.31,17.5 10.6,18 12,18Z" /></g><g id="watch-vibrate"><path d="M3,17V7H5V17H3M19,17V7H21V17H19M22,9H24V15H22V9M0,15V9H2V15H0M17.96,11.97C17.96,13.87 17.07,15.57 15.68,16.67L14.97,20.95H9L8.27,16.67C6.88,15.57 6,13.87 6,11.97C6,10.07 6.88,8.37 8.27,7.28L9,3H14.97L15.68,7.28C17.07,8.37 17.96,10.07 17.96,11.97M7.5,11.97C7.5,14.45 9.5,16.46 11.97,16.46A4.5,4.5 0 0,0 16.46,11.97C16.46,9.5 14.45,7.5 11.97,7.5A4.47,4.47 0 0,0 7.5,11.97Z" /></g><g id="water"><path d="M12,20A6,6 0 0,1 6,14C6,10 12,3.25 12,3.25C12,3.25 18,10 18,14A6,6 0 0,1 12,20Z" /></g><g id="water-off"><path d="M17.12,17.12L12.5,12.5L5.27,5.27L4,6.55L7.32,9.87C6.55,11.32 6,12.79 6,14A6,6 0 0,0 12,20C13.5,20 14.9,19.43 15.96,18.5L18.59,21.13L19.86,19.86L17.12,17.12M18,14C18,10 12,3.2 12,3.2C12,3.2 10.67,4.71 9.27,6.72L17.86,15.31C17.95,14.89 18,14.45 18,14Z" /></g><g id="water-percent"><path d="M12,3.25C12,3.25 6,10 6,14C6,17.32 8.69,20 12,20A6,6 0 0,0 18,14C18,10 12,3.25 12,3.25M14.47,9.97L15.53,11.03L9.53,17.03L8.47,15.97M9.75,10A1.25,1.25 0 0,1 11,11.25A1.25,1.25 0 0,1 9.75,12.5A1.25,1.25 0 0,1 8.5,11.25A1.25,1.25 0 0,1 9.75,10M14.25,14.5A1.25,1.25 0 0,1 15.5,15.75A1.25,1.25 0 0,1 14.25,17A1.25,1.25 0 0,1 13,15.75A1.25,1.25 0 0,1 14.25,14.5Z" /></g><g id="water-pump"><path d="M19,14.5C19,14.5 21,16.67 21,18A2,2 0 0,1 19,20A2,2 0 0,1 17,18C17,16.67 19,14.5 19,14.5M5,18V9A2,2 0 0,1 3,7A2,2 0 0,1 5,5V4A2,2 0 0,1 7,2H9A2,2 0 0,1 11,4V5H19A2,2 0 0,1 21,7V9L21,11A1,1 0 0,1 22,12A1,1 0 0,1 21,13H17A1,1 0 0,1 16,12A1,1 0 0,1 17,11V9H11V18H12A2,2 0 0,1 14,20V22H2V20A2,2 0 0,1 4,18H5Z" /></g><g id="watermark"><path d="M21,3H3A2,2 0 0,0 1,5V19A2,2 0 0,0 3,21H21A2,2 0 0,0 23,19V5A2,2 0 0,0 21,3M21,19H12V13H21V19Z" /></g><g id="weather-cloudy"><path d="M6,19A5,5 0 0,1 1,14A5,5 0 0,1 6,9C7,6.65 9.3,5 12,5C15.43,5 18.24,7.66 18.5,11.03L19,11A4,4 0 0,1 23,15A4,4 0 0,1 19,19H6M19,13H17V12A5,5 0 0,0 12,7C9.5,7 7.45,8.82 7.06,11.19C6.73,11.07 6.37,11 6,11A3,3 0 0,0 3,14A3,3 0 0,0 6,17H19A2,2 0 0,0 21,15A2,2 0 0,0 19,13Z" /></g><g id="weather-fog"><path d="M3,15H13A1,1 0 0,1 14,16A1,1 0 0,1 13,17H3A1,1 0 0,1 2,16A1,1 0 0,1 3,15M16,15H21A1,1 0 0,1 22,16A1,1 0 0,1 21,17H16A1,1 0 0,1 15,16A1,1 0 0,1 16,15M1,12A5,5 0 0,1 6,7C7,4.65 9.3,3 12,3C15.43,3 18.24,5.66 18.5,9.03L19,9C21.19,9 22.97,10.76 23,13H21A2,2 0 0,0 19,11H17V10A5,5 0 0,0 12,5C9.5,5 7.45,6.82 7.06,9.19C6.73,9.07 6.37,9 6,9A3,3 0 0,0 3,12C3,12.35 3.06,12.69 3.17,13H1.1L1,12M3,19H5A1,1 0 0,1 6,20A1,1 0 0,1 5,21H3A1,1 0 0,1 2,20A1,1 0 0,1 3,19M8,19H21A1,1 0 0,1 22,20A1,1 0 0,1 21,21H8A1,1 0 0,1 7,20A1,1 0 0,1 8,19Z" /></g><g id="weather-hail"><path d="M6,14A1,1 0 0,1 7,15A1,1 0 0,1 6,16A5,5 0 0,1 1,11A5,5 0 0,1 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16H18A1,1 0 0,1 17,15A1,1 0 0,1 18,14H19A2,2 0 0,0 21,12A2,2 0 0,0 19,10H17V9A5,5 0 0,0 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8A3,3 0 0,0 3,11A3,3 0 0,0 6,14M10,18A2,2 0 0,1 12,20A2,2 0 0,1 10,22A2,2 0 0,1 8,20A2,2 0 0,1 10,18M14.5,16A1.5,1.5 0 0,1 16,17.5A1.5,1.5 0 0,1 14.5,19A1.5,1.5 0 0,1 13,17.5A1.5,1.5 0 0,1 14.5,16M10.5,12A1.5,1.5 0 0,1 12,13.5A1.5,1.5 0 0,1 10.5,15A1.5,1.5 0 0,1 9,13.5A1.5,1.5 0 0,1 10.5,12Z" /></g><g id="weather-lightning"><path d="M6,16A5,5 0 0,1 1,11A5,5 0 0,1 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16H18A1,1 0 0,1 17,15A1,1 0 0,1 18,14H19A2,2 0 0,0 21,12A2,2 0 0,0 19,10H17V9A5,5 0 0,0 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8A3,3 0 0,0 3,11A3,3 0 0,0 6,14H7A1,1 0 0,1 8,15A1,1 0 0,1 7,16H6M12,11H15L13,15H15L11.25,22L12,17H9.5L12,11Z" /></g><g id="weather-lightning-rainy"><path d="M4.5,13.59C5,13.87 5.14,14.5 4.87,14.96C4.59,15.44 4,15.6 3.5,15.33V15.33C2,14.47 1,12.85 1,11A5,5 0 0,1 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16A1,1 0 0,1 18,15A1,1 0 0,1 19,14A2,2 0 0,0 21,12A2,2 0 0,0 19,10H17V9A5,5 0 0,0 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8A3,3 0 0,0 3,11C3,12.11 3.6,13.08 4.5,13.6V13.59M9.5,11H12.5L10.5,15H12.5L8.75,22L9.5,17H7L9.5,11M17.5,18.67C17.5,19.96 16.5,21 15.25,21C14,21 13,19.96 13,18.67C13,17.12 15.25,14.5 15.25,14.5C15.25,14.5 17.5,17.12 17.5,18.67Z" /></g><g id="weather-night"><path d="M17.75,4.09L15.22,6.03L16.13,9.09L13.5,7.28L10.87,9.09L11.78,6.03L9.25,4.09L12.44,4L13.5,1L14.56,4L17.75,4.09M21.25,11L19.61,12.25L20.2,14.23L18.5,13.06L16.8,14.23L17.39,12.25L15.75,11L17.81,10.95L18.5,9L19.19,10.95L21.25,11M18.97,15.95C19.8,15.87 20.69,17.05 20.16,17.8C19.84,18.25 19.5,18.67 19.08,19.07C15.17,23 8.84,23 4.94,19.07C1.03,15.17 1.03,8.83 4.94,4.93C5.34,4.53 5.76,4.17 6.21,3.85C6.96,3.32 8.14,4.21 8.06,5.04C7.79,7.9 8.75,10.87 10.95,13.06C13.14,15.26 16.1,16.22 18.97,15.95M17.33,17.97C14.5,17.81 11.7,16.64 9.53,14.5C7.36,12.31 6.2,9.5 6.04,6.68C3.23,9.82 3.34,14.64 6.35,17.66C9.37,20.67 14.19,20.78 17.33,17.97Z" /></g><g id="weather-partlycloudy"><path d="M12.74,5.47C15.1,6.5 16.35,9.03 15.92,11.46C17.19,12.56 18,14.19 18,16V16.17C18.31,16.06 18.65,16 19,16A3,3 0 0,1 22,19A3,3 0 0,1 19,22H6A4,4 0 0,1 2,18A4,4 0 0,1 6,14H6.27C5,12.45 4.6,10.24 5.5,8.26C6.72,5.5 9.97,4.24 12.74,5.47M11.93,7.3C10.16,6.5 8.09,7.31 7.31,9.07C6.85,10.09 6.93,11.22 7.41,12.13C8.5,10.83 10.16,10 12,10C12.7,10 13.38,10.12 14,10.34C13.94,9.06 13.18,7.86 11.93,7.3M13.55,3.64C13,3.4 12.45,3.23 11.88,3.12L14.37,1.82L15.27,4.71C14.76,4.29 14.19,3.93 13.55,3.64M6.09,4.44C5.6,4.79 5.17,5.19 4.8,5.63L4.91,2.82L7.87,3.5C7.25,3.71 6.65,4.03 6.09,4.44M18,9.71C17.91,9.12 17.78,8.55 17.59,8L19.97,9.5L17.92,11.73C18.03,11.08 18.05,10.4 18,9.71M3.04,11.3C3.11,11.9 3.24,12.47 3.43,13L1.06,11.5L3.1,9.28C3,9.93 2.97,10.61 3.04,11.3M19,18H16V16A4,4 0 0,0 12,12A4,4 0 0,0 8,16H6A2,2 0 0,0 4,18A2,2 0 0,0 6,20H19A1,1 0 0,0 20,19A1,1 0 0,0 19,18Z" /></g><g id="weather-pouring"><path d="M9,12C9.53,12.14 9.85,12.69 9.71,13.22L8.41,18.05C8.27,18.59 7.72,18.9 7.19,18.76C6.65,18.62 6.34,18.07 6.5,17.54L7.78,12.71C7.92,12.17 8.47,11.86 9,12M13,12C13.53,12.14 13.85,12.69 13.71,13.22L11.64,20.95C11.5,21.5 10.95,21.8 10.41,21.66C9.88,21.5 9.56,20.97 9.7,20.43L11.78,12.71C11.92,12.17 12.47,11.86 13,12M17,12C17.53,12.14 17.85,12.69 17.71,13.22L16.41,18.05C16.27,18.59 15.72,18.9 15.19,18.76C14.65,18.62 14.34,18.07 14.5,17.54L15.78,12.71C15.92,12.17 16.47,11.86 17,12M17,10V9A5,5 0 0,0 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8A3,3 0 0,0 3,11C3,12.11 3.6,13.08 4.5,13.6V13.59C5,13.87 5.14,14.5 4.87,14.96C4.59,15.43 4,15.6 3.5,15.32V15.33C2,14.47 1,12.85 1,11A5,5 0 0,1 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8A4,4 0 0,1 23,12C23,13.5 22.2,14.77 21,15.46V15.46C20.5,15.73 19.91,15.57 19.63,15.09C19.36,14.61 19.5,14 20,13.72V13.73C20.6,13.39 21,12.74 21,12A2,2 0 0,0 19,10H17Z" /></g><g id="weather-rainy"><path d="M6,14A1,1 0 0,1 7,15A1,1 0 0,1 6,16A5,5 0 0,1 1,11A5,5 0 0,1 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16H18A1,1 0 0,1 17,15A1,1 0 0,1 18,14H19A2,2 0 0,0 21,12A2,2 0 0,0 19,10H17V9A5,5 0 0,0 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8A3,3 0 0,0 3,11A3,3 0 0,0 6,14M14.83,15.67C16.39,17.23 16.39,19.5 14.83,21.08C14.05,21.86 13,22 12,22C11,22 9.95,21.86 9.17,21.08C7.61,19.5 7.61,17.23 9.17,15.67L12,11L14.83,15.67M13.41,16.69L12,14.25L10.59,16.69C9.8,17.5 9.8,18.7 10.59,19.5C11,19.93 11.5,20 12,20C12.5,20 13,19.93 13.41,19.5C14.2,18.7 14.2,17.5 13.41,16.69Z" /></g><g id="weather-snowy"><path d="M6,14A1,1 0 0,1 7,15A1,1 0 0,1 6,16A5,5 0 0,1 1,11A5,5 0 0,1 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16H18A1,1 0 0,1 17,15A1,1 0 0,1 18,14H19A2,2 0 0,0 21,12A2,2 0 0,0 19,10H17V9A5,5 0 0,0 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8A3,3 0 0,0 3,11A3,3 0 0,0 6,14M7.88,18.07L10.07,17.5L8.46,15.88C8.07,15.5 8.07,14.86 8.46,14.46C8.85,14.07 9.5,14.07 9.88,14.46L11.5,16.07L12.07,13.88C12.21,13.34 12.76,13.03 13.29,13.17C13.83,13.31 14.14,13.86 14,14.4L13.41,16.59L15.6,16C16.14,15.86 16.69,16.17 16.83,16.71C16.97,17.24 16.66,17.79 16.12,17.93L13.93,18.5L15.54,20.12C15.93,20.5 15.93,21.15 15.54,21.54C15.15,21.93 14.5,21.93 14.12,21.54L12.5,19.93L11.93,22.12C11.79,22.66 11.24,22.97 10.71,22.83C10.17,22.69 9.86,22.14 10,21.6L10.59,19.41L8.4,20C7.86,20.14 7.31,19.83 7.17,19.29C7.03,18.76 7.34,18.21 7.88,18.07Z" /></g><g id="weather-snowy-rainy"><path d="M18.5,18.67C18.5,19.96 17.5,21 16.25,21C15,21 14,19.96 14,18.67C14,17.12 16.25,14.5 16.25,14.5C16.25,14.5 18.5,17.12 18.5,18.67M4,17.36C3.86,16.82 4.18,16.25 4.73,16.11L7,15.5L5.33,13.86C4.93,13.46 4.93,12.81 5.33,12.4C5.73,12 6.4,12 6.79,12.4L8.45,14.05L9.04,11.8C9.18,11.24 9.75,10.92 10.29,11.07C10.85,11.21 11.17,11.78 11,12.33L10.42,14.58L12.67,14C13.22,13.83 13.79,14.15 13.93,14.71C14.08,15.25 13.76,15.82 13.2,15.96L10.95,16.55L12.6,18.21C13,18.6 13,19.27 12.6,19.67C12.2,20.07 11.54,20.07 11.15,19.67L9.5,18L8.89,20.27C8.75,20.83 8.18,21.14 7.64,21C7.08,20.86 6.77,20.29 6.91,19.74L7.5,17.5L5.26,18.09C4.71,18.23 4.14,17.92 4,17.36M1,11A5,5 0 0,1 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16A1,1 0 0,1 18,15A1,1 0 0,1 19,14A2,2 0 0,0 21,12A2,2 0 0,0 19,10H17V9A5,5 0 0,0 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8A3,3 0 0,0 3,11C3,11.85 3.35,12.61 3.91,13.16C4.27,13.55 4.26,14.16 3.88,14.54C3.5,14.93 2.85,14.93 2.47,14.54C1.56,13.63 1,12.38 1,11Z" /></g><g id="weather-sunny"><path d="M12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,2L14.39,5.42C13.65,5.15 12.84,5 12,5C11.16,5 10.35,5.15 9.61,5.42L12,2M3.34,7L7.5,6.65C6.9,7.16 6.36,7.78 5.94,8.5C5.5,9.24 5.25,10 5.11,10.79L3.34,7M3.36,17L5.12,13.23C5.26,14 5.53,14.78 5.95,15.5C6.37,16.24 6.91,16.86 7.5,17.37L3.36,17M20.65,7L18.88,10.79C18.74,10 18.47,9.23 18.05,8.5C17.63,7.78 17.1,7.15 16.5,6.64L20.65,7M20.64,17L16.5,17.36C17.09,16.85 17.62,16.22 18.04,15.5C18.46,14.77 18.73,14 18.87,13.21L20.64,17M12,22L9.59,18.56C10.33,18.83 11.14,19 12,19C12.82,19 13.63,18.83 14.37,18.56L12,22Z" /></g><g id="weather-sunset"><path d="M3,12H7A5,5 0 0,1 12,7A5,5 0 0,1 17,12H21A1,1 0 0,1 22,13A1,1 0 0,1 21,14H3A1,1 0 0,1 2,13A1,1 0 0,1 3,12M5,16H19A1,1 0 0,1 20,17A1,1 0 0,1 19,18H5A1,1 0 0,1 4,17A1,1 0 0,1 5,16M17,20A1,1 0 0,1 18,21A1,1 0 0,1 17,22H7A1,1 0 0,1 6,21A1,1 0 0,1 7,20H17M15,12A3,3 0 0,0 12,9A3,3 0 0,0 9,12H15M12,2L14.39,5.42C13.65,5.15 12.84,5 12,5C11.16,5 10.35,5.15 9.61,5.42L12,2M3.34,7L7.5,6.65C6.9,7.16 6.36,7.78 5.94,8.5C5.5,9.24 5.25,10 5.11,10.79L3.34,7M20.65,7L18.88,10.79C18.74,10 18.47,9.23 18.05,8.5C17.63,7.78 17.1,7.15 16.5,6.64L20.65,7Z" /></g><g id="weather-sunset-down"><path d="M3,12H7A5,5 0 0,1 12,7A5,5 0 0,1 17,12H21A1,1 0 0,1 22,13A1,1 0 0,1 21,14H3A1,1 0 0,1 2,13A1,1 0 0,1 3,12M15,12A3,3 0 0,0 12,9A3,3 0 0,0 9,12H15M12,2L14.39,5.42C13.65,5.15 12.84,5 12,5C11.16,5 10.35,5.15 9.61,5.42L12,2M3.34,7L7.5,6.65C6.9,7.16 6.36,7.78 5.94,8.5C5.5,9.24 5.25,10 5.11,10.79L3.34,7M20.65,7L18.88,10.79C18.74,10 18.47,9.23 18.05,8.5C17.63,7.78 17.1,7.15 16.5,6.64L20.65,7M12.71,20.71L15.82,17.6C16.21,17.21 16.21,16.57 15.82,16.18C15.43,15.79 14.8,15.79 14.41,16.18L12,18.59L9.59,16.18C9.2,15.79 8.57,15.79 8.18,16.18C7.79,16.57 7.79,17.21 8.18,17.6L11.29,20.71C11.5,20.9 11.74,21 12,21C12.26,21 12.5,20.9 12.71,20.71Z" /></g><g id="weather-sunset-up"><path d="M3,12H7A5,5 0 0,1 12,7A5,5 0 0,1 17,12H21A1,1 0 0,1 22,13A1,1 0 0,1 21,14H3A1,1 0 0,1 2,13A1,1 0 0,1 3,12M15,12A3,3 0 0,0 12,9A3,3 0 0,0 9,12H15M12,2L14.39,5.42C13.65,5.15 12.84,5 12,5C11.16,5 10.35,5.15 9.61,5.42L12,2M3.34,7L7.5,6.65C6.9,7.16 6.36,7.78 5.94,8.5C5.5,9.24 5.25,10 5.11,10.79L3.34,7M20.65,7L18.88,10.79C18.74,10 18.47,9.23 18.05,8.5C17.63,7.78 17.1,7.15 16.5,6.64L20.65,7M12.71,16.3L15.82,19.41C16.21,19.8 16.21,20.43 15.82,20.82C15.43,21.21 14.8,21.21 14.41,20.82L12,18.41L9.59,20.82C9.2,21.21 8.57,21.21 8.18,20.82C7.79,20.43 7.79,19.8 8.18,19.41L11.29,16.3C11.5,16.1 11.74,16 12,16C12.26,16 12.5,16.1 12.71,16.3Z" /></g><g id="weather-windy"><path d="M4,10A1,1 0 0,1 3,9A1,1 0 0,1 4,8H12A2,2 0 0,0 14,6A2,2 0 0,0 12,4C11.45,4 10.95,4.22 10.59,4.59C10.2,5 9.56,5 9.17,4.59C8.78,4.2 8.78,3.56 9.17,3.17C9.9,2.45 10.9,2 12,2A4,4 0 0,1 16,6A4,4 0 0,1 12,10H4M19,12A1,1 0 0,0 20,11A1,1 0 0,0 19,10C18.72,10 18.47,10.11 18.29,10.29C17.9,10.68 17.27,10.68 16.88,10.29C16.5,9.9 16.5,9.27 16.88,8.88C17.42,8.34 18.17,8 19,8A3,3 0 0,1 22,11A3,3 0 0,1 19,14H5A1,1 0 0,1 4,13A1,1 0 0,1 5,12H19M18,18H4A1,1 0 0,1 3,17A1,1 0 0,1 4,16H18A3,3 0 0,1 21,19A3,3 0 0,1 18,22C17.17,22 16.42,21.66 15.88,21.12C15.5,20.73 15.5,20.1 15.88,19.71C16.27,19.32 16.9,19.32 17.29,19.71C17.47,19.89 17.72,20 18,20A1,1 0 0,0 19,19A1,1 0 0,0 18,18Z" /></g><g id="weather-windy-variant"><path d="M6,6L6.69,6.06C7.32,3.72 9.46,2 12,2A5.5,5.5 0 0,1 17.5,7.5L17.42,8.45C17.88,8.16 18.42,8 19,8A3,3 0 0,1 22,11A3,3 0 0,1 19,14H6A4,4 0 0,1 2,10A4,4 0 0,1 6,6M6,8A2,2 0 0,0 4,10A2,2 0 0,0 6,12H19A1,1 0 0,0 20,11A1,1 0 0,0 19,10H15.5V7.5A3.5,3.5 0 0,0 12,4A3.5,3.5 0 0,0 8.5,7.5V8H6M18,18H4A1,1 0 0,1 3,17A1,1 0 0,1 4,16H18A3,3 0 0,1 21,19A3,3 0 0,1 18,22C17.17,22 16.42,21.66 15.88,21.12C15.5,20.73 15.5,20.1 15.88,19.71C16.27,19.32 16.9,19.32 17.29,19.71C17.47,19.89 17.72,20 18,20A1,1 0 0,0 19,19A1,1 0 0,0 18,18Z" /></g><g id="web"><path d="M16.36,14C16.44,13.34 16.5,12.68 16.5,12C16.5,11.32 16.44,10.66 16.36,10H19.74C19.9,10.64 20,11.31 20,12C20,12.69 19.9,13.36 19.74,14M14.59,19.56C15.19,18.45 15.65,17.25 15.97,16H18.92C17.96,17.65 16.43,18.93 14.59,19.56M14.34,14H9.66C9.56,13.34 9.5,12.68 9.5,12C9.5,11.32 9.56,10.65 9.66,10H14.34C14.43,10.65 14.5,11.32 14.5,12C14.5,12.68 14.43,13.34 14.34,14M12,19.96C11.17,18.76 10.5,17.43 10.09,16H13.91C13.5,17.43 12.83,18.76 12,19.96M8,8H5.08C6.03,6.34 7.57,5.06 9.4,4.44C8.8,5.55 8.35,6.75 8,8M5.08,16H8C8.35,17.25 8.8,18.45 9.4,19.56C7.57,18.93 6.03,17.65 5.08,16M4.26,14C4.1,13.36 4,12.69 4,12C4,11.31 4.1,10.64 4.26,10H7.64C7.56,10.66 7.5,11.32 7.5,12C7.5,12.68 7.56,13.34 7.64,14M12,4.03C12.83,5.23 13.5,6.57 13.91,8H10.09C10.5,6.57 11.17,5.23 12,4.03M18.92,8H15.97C15.65,6.75 15.19,5.55 14.59,4.44C16.43,5.07 17.96,6.34 18.92,8M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="webcam"><path d="M12,2A7,7 0 0,1 19,9A7,7 0 0,1 12,16A7,7 0 0,1 5,9A7,7 0 0,1 12,2M12,4A5,5 0 0,0 7,9A5,5 0 0,0 12,14A5,5 0 0,0 17,9A5,5 0 0,0 12,4M12,6A3,3 0 0,1 15,9A3,3 0 0,1 12,12A3,3 0 0,1 9,9A3,3 0 0,1 12,6M6,22A2,2 0 0,1 4,20C4,19.62 4.1,19.27 4.29,18.97L6.11,15.81C7.69,17.17 9.75,18 12,18C14.25,18 16.31,17.17 17.89,15.81L19.71,18.97C19.9,19.27 20,19.62 20,20A2,2 0 0,1 18,22H6Z" /></g><g id="webhook"><path d="M10.46,19C9,21.07 6.15,21.59 4.09,20.15C2.04,18.71 1.56,15.84 3,13.75C3.87,12.5 5.21,11.83 6.58,11.77L6.63,13.2C5.72,13.27 4.84,13.74 4.27,14.56C3.27,16 3.58,17.94 4.95,18.91C6.33,19.87 8.26,19.5 9.26,18.07C9.57,17.62 9.75,17.13 9.82,16.63V15.62L15.4,15.58L15.47,15.47C16,14.55 17.15,14.23 18.05,14.75C18.95,15.27 19.26,16.43 18.73,17.35C18.2,18.26 17.04,18.58 16.14,18.06C15.73,17.83 15.44,17.46 15.31,17.04L11.24,17.06C11.13,17.73 10.87,18.38 10.46,19M17.74,11.86C20.27,12.17 22.07,14.44 21.76,16.93C21.45,19.43 19.15,21.2 16.62,20.89C15.13,20.71 13.9,19.86 13.19,18.68L14.43,17.96C14.92,18.73 15.75,19.28 16.75,19.41C18.5,19.62 20.05,18.43 20.26,16.76C20.47,15.09 19.23,13.56 17.5,13.35C16.96,13.29 16.44,13.36 15.97,13.53L15.12,13.97L12.54,9.2H12.32C11.26,9.16 10.44,8.29 10.47,7.25C10.5,6.21 11.4,5.4 12.45,5.44C13.5,5.5 14.33,6.35 14.3,7.39C14.28,7.83 14.11,8.23 13.84,8.54L15.74,12.05C16.36,11.85 17.04,11.78 17.74,11.86M8.25,9.14C7.25,6.79 8.31,4.1 10.62,3.12C12.94,2.14 15.62,3.25 16.62,5.6C17.21,6.97 17.09,8.47 16.42,9.67L15.18,8.95C15.6,8.14 15.67,7.15 15.27,6.22C14.59,4.62 12.78,3.85 11.23,4.5C9.67,5.16 8.97,7 9.65,8.6C9.93,9.26 10.4,9.77 10.97,10.11L11.36,10.32L8.29,15.31C8.32,15.36 8.36,15.42 8.39,15.5C8.88,16.41 8.54,17.56 7.62,18.05C6.71,18.54 5.56,18.18 5.06,17.24C4.57,16.31 4.91,15.16 5.83,14.67C6.22,14.46 6.65,14.41 7.06,14.5L9.37,10.73C8.9,10.3 8.5,9.76 8.25,9.14Z" /></g><g id="webpack"><path d="M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15M12,6.23L16.9,9.06L12,11.89L7.1,9.06L12,6.23M17,14.89L13,17.2V13.62L17,11.31V14.89M11,17.2L7,14.89V11.31L11,13.62V17.2Z" /></g><g id="wechat"><path d="M9.5,4C5.36,4 2,6.69 2,10C2,11.89 3.08,13.56 4.78,14.66L4,17L6.5,15.5C7.39,15.81 8.37,16 9.41,16C9.15,15.37 9,14.7 9,14C9,10.69 12.13,8 16,8C16.19,8 16.38,8 16.56,8.03C15.54,5.69 12.78,4 9.5,4M6.5,6.5A1,1 0 0,1 7.5,7.5A1,1 0 0,1 6.5,8.5A1,1 0 0,1 5.5,7.5A1,1 0 0,1 6.5,6.5M11.5,6.5A1,1 0 0,1 12.5,7.5A1,1 0 0,1 11.5,8.5A1,1 0 0,1 10.5,7.5A1,1 0 0,1 11.5,6.5M16,9C12.69,9 10,11.24 10,14C10,16.76 12.69,19 16,19C16.67,19 17.31,18.92 17.91,18.75L20,20L19.38,18.13C20.95,17.22 22,15.71 22,14C22,11.24 19.31,9 16,9M14,11.5A1,1 0 0,1 15,12.5A1,1 0 0,1 14,13.5A1,1 0 0,1 13,12.5A1,1 0 0,1 14,11.5M18,11.5A1,1 0 0,1 19,12.5A1,1 0 0,1 18,13.5A1,1 0 0,1 17,12.5A1,1 0 0,1 18,11.5Z" /></g><g id="weight"><path d="M12,3A4,4 0 0,1 16,7C16,7.73 15.81,8.41 15.46,9H18C18.95,9 19.75,9.67 19.95,10.56C21.96,18.57 22,18.78 22,19A2,2 0 0,1 20,21H4A2,2 0 0,1 2,19C2,18.78 2.04,18.57 4.05,10.56C4.25,9.67 5.05,9 6,9H8.54C8.19,8.41 8,7.73 8,7A4,4 0 0,1 12,3M12,5A2,2 0 0,0 10,7A2,2 0 0,0 12,9A2,2 0 0,0 14,7A2,2 0 0,0 12,5Z" /></g><g id="weight-kilogram"><path d="M12,3A4,4 0 0,1 16,7C16,7.73 15.81,8.41 15.46,9H18C18.95,9 19.75,9.67 19.95,10.56C21.96,18.57 22,18.78 22,19A2,2 0 0,1 20,21H4A2,2 0 0,1 2,19C2,18.78 2.04,18.57 4.05,10.56C4.25,9.67 5.05,9 6,9H8.54C8.19,8.41 8,7.73 8,7A4,4 0 0,1 12,3M12,5A2,2 0 0,0 10,7A2,2 0 0,0 12,9A2,2 0 0,0 14,7A2,2 0 0,0 12,5M9.04,15.44L10.4,18H12.11L10.07,14.66L11.95,11.94H10.2L8.87,14.33H8.39V11.94H6.97V18H8.39V15.44H9.04M17.31,17.16V14.93H14.95V16.04H15.9V16.79L15.55,16.93L14.94,17C14.59,17 14.31,16.85 14.11,16.6C13.92,16.34 13.82,16 13.82,15.59V14.34C13.82,13.93 13.92,13.6 14.12,13.35C14.32,13.09 14.58,12.97 14.91,12.97C15.24,12.97 15.5,13.05 15.64,13.21C15.8,13.37 15.9,13.61 15.95,13.93H17.27L17.28,13.9C17.23,13.27 17,12.77 16.62,12.4C16.23,12.04 15.64,11.86 14.86,11.86C14.14,11.86 13.56,12.09 13.1,12.55C12.64,13 12.41,13.61 12.41,14.34V15.6C12.41,16.34 12.65,16.94 13.12,17.4C13.58,17.86 14.19,18.09 14.94,18.09C15.53,18.09 16.03,18 16.42,17.81C16.81,17.62 17.11,17.41 17.31,17.16Z" /></g><g id="whatsapp"><path d="M16.75,13.96C17,14.09 17.16,14.16 17.21,14.26C17.27,14.37 17.25,14.87 17,15.44C16.8,16 15.76,16.54 15.3,16.56C14.84,16.58 14.83,16.92 12.34,15.83C9.85,14.74 8.35,12.08 8.23,11.91C8.11,11.74 7.27,10.53 7.31,9.3C7.36,8.08 8,7.5 8.26,7.26C8.5,7 8.77,6.97 8.94,7H9.41C9.56,7 9.77,6.94 9.96,7.45L10.65,9.32C10.71,9.45 10.75,9.6 10.66,9.76L10.39,10.17L10,10.59C9.88,10.71 9.74,10.84 9.88,11.09C10,11.35 10.5,12.18 11.2,12.87C12.11,13.75 12.91,14.04 13.15,14.17C13.39,14.31 13.54,14.29 13.69,14.13L14.5,13.19C14.69,12.94 14.85,13 15.08,13.08L16.75,13.96M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22C10.03,22 8.2,21.43 6.65,20.45L2,22L3.55,17.35C2.57,15.8 2,13.97 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12C4,13.72 4.54,15.31 5.46,16.61L4.5,19.5L7.39,18.54C8.69,19.46 10.28,20 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z" /></g><g id="wheelchair-accessibility"><path d="M18.4,11.2L14.3,11.4L16.6,8.8C16.8,8.5 16.9,8 16.8,7.5C16.7,7.2 16.6,6.9 16.3,6.7L10.9,3.5C10.5,3.2 9.9,3.3 9.5,3.6L6.8,6.1C6.3,6.6 6.2,7.3 6.7,7.8C7.1,8.3 7.9,8.3 8.4,7.9L10.4,6.1L12.3,7.2L8.1,11.5C8,11.6 8,11.7 7.9,11.7C7.4,11.9 6.9,12.1 6.5,12.4L8,13.9C8.5,13.7 9,13.5 9.5,13.5C11.4,13.5 13,15.1 13,17C13,17.6 12.9,18.1 12.6,18.5L14.1,20C14.7,19.1 15,18.1 15,17C15,15.8 14.6,14.6 13.9,13.7L17.2,13.4L17,18.2C16.9,18.9 17.4,19.4 18.1,19.5H18.2C18.8,19.5 19.3,19 19.4,18.4L19.6,12.5C19.6,12.2 19.5,11.8 19.3,11.6C19,11.3 18.7,11.2 18.4,11.2M18,5.5A2,2 0 0,0 20,3.5A2,2 0 0,0 18,1.5A2,2 0 0,0 16,3.5A2,2 0 0,0 18,5.5M12.5,21.6C11.6,22.2 10.6,22.5 9.5,22.5C6.5,22.5 4,20 4,17C4,15.9 4.3,14.9 4.9,14L6.4,15.5C6.2,16 6,16.5 6,17C6,18.9 7.6,20.5 9.5,20.5C10.1,20.5 10.6,20.4 11,20.1L12.5,21.6Z" /></g><g id="white-balance-auto"><path d="M10.3,16L9.6,14H6.4L5.7,16H3.8L7,7H9L12.2,16M22,7L20.8,13.29L19.3,7H17.7L16.21,13.29L15,7H14.24C12.77,5.17 10.5,4 8,4A8,8 0 0,0 0,12A8,8 0 0,0 8,20C11.13,20 13.84,18.19 15.15,15.57L15.25,16H17L18.5,9.9L20,16H21.75L23.8,7M6.85,12.65H9.15L8,9L6.85,12.65Z" /></g><g id="white-balance-incandescent"><path d="M17.24,18.15L19.04,19.95L20.45,18.53L18.66,16.74M20,12.5H23V10.5H20M15,6.31V1.5H9V6.31C7.21,7.35 6,9.28 6,11.5A6,6 0 0,0 12,17.5A6,6 0 0,0 18,11.5C18,9.28 16.79,7.35 15,6.31M4,10.5H1V12.5H4M11,22.45C11.32,22.45 13,22.45 13,22.45V19.5H11M3.55,18.53L4.96,19.95L6.76,18.15L5.34,16.74L3.55,18.53Z" /></g><g id="white-balance-iridescent"><path d="M4.96,19.95L6.76,18.15L5.34,16.74L3.55,18.53M3.55,4.46L5.34,6.26L6.76,4.84L4.96,3.05M20.45,18.53L18.66,16.74L17.24,18.15L19.04,19.95M13,22.45V19.5H11V22.45C11.32,22.45 13,22.45 13,22.45M19.04,3.05L17.24,4.84L18.66,6.26L20.45,4.46M11,3.5H13V0.55H11M5,14.5H19V8.5H5V14.5Z" /></g><g id="white-balance-sunny"><path d="M3.55,18.54L4.96,19.95L6.76,18.16L5.34,16.74M11,22.45C11.32,22.45 13,22.45 13,22.45V19.5H11M12,5.5A6,6 0 0,0 6,11.5A6,6 0 0,0 12,17.5A6,6 0 0,0 18,11.5C18,8.18 15.31,5.5 12,5.5M20,12.5H23V10.5H20M17.24,18.16L19.04,19.95L20.45,18.54L18.66,16.74M20.45,4.46L19.04,3.05L17.24,4.84L18.66,6.26M13,0.55H11V3.5H13M4,10.5H1V12.5H4M6.76,4.84L4.96,3.05L3.55,4.46L5.34,6.26L6.76,4.84Z" /></g><g id="widgets"><path d="M3,3H11V7.34L16.66,1.69L22.31,7.34L16.66,13H21V21H13V13H16.66L11,7.34V11H3V3M3,13H11V21H3V13Z" /></g><g id="wifi"><path d="M12,21L15.6,16.2C14.6,15.45 13.35,15 12,15C10.65,15 9.4,15.45 8.4,16.2L12,21M12,3C7.95,3 4.21,4.34 1.2,6.6L3,9C5.5,7.12 8.62,6 12,6C15.38,6 18.5,7.12 21,9L22.8,6.6C19.79,4.34 16.05,3 12,3M12,9C9.3,9 6.81,9.89 4.8,11.4L6.6,13.8C8.1,12.67 9.97,12 12,12C14.03,12 15.9,12.67 17.4,13.8L19.2,11.4C17.19,9.89 14.7,9 12,9Z" /></g><g id="wifi-off"><path d="M2.28,3L1,4.27L2.47,5.74C2.04,6 1.61,6.29 1.2,6.6L3,9C3.53,8.6 4.08,8.25 4.66,7.93L6.89,10.16C6.15,10.5 5.44,10.91 4.8,11.4L6.6,13.8C7.38,13.22 8.26,12.77 9.2,12.47L11.75,15C10.5,15.07 9.34,15.5 8.4,16.2L12,21L14.46,17.73L17.74,21L19,19.72M12,3C9.85,3 7.8,3.38 5.9,4.07L8.29,6.47C9.5,6.16 10.72,6 12,6C15.38,6 18.5,7.11 21,9L22.8,6.6C19.79,4.34 16.06,3 12,3M12,9C11.62,9 11.25,9 10.88,9.05L14.07,12.25C15.29,12.53 16.43,13.07 17.4,13.8L19.2,11.4C17.2,9.89 14.7,9 12,9Z" /></g><g id="wii"><path d="M17.84,16.94H15.97V10.79H17.84V16.94M18,8.58C18,9.19 17.5,9.69 16.9,9.69A1.11,1.11 0 0,1 15.79,8.58C15.79,7.96 16.29,7.46 16.9,7.46C17.5,7.46 18,7.96 18,8.58M21.82,16.94H19.94V10.79H21.82V16.94M22,8.58C22,9.19 21.5,9.69 20.88,9.69A1.11,1.11 0 0,1 19.77,8.58C19.77,7.96 20.27,7.46 20.88,7.46C21.5,7.46 22,7.96 22,8.58M12.9,8.05H14.9L12.78,15.5C12.78,15.5 12.5,17.04 11.28,17.04C10.07,17.04 9.79,15.5 9.79,15.5L8.45,10.64L7.11,15.5C7.11,15.5 6.82,17.04 5.61,17.04C4.4,17.04 4.12,15.5 4.12,15.5L2,8.05H4L5.72,14.67L7.11,9.3C7.43,7.95 8.45,7.97 8.45,7.97C8.45,7.97 9.47,7.95 9.79,9.3L11.17,14.67L12.9,8.05Z" /></g><g id="wiiu"><path d="M2,15.96C2,18.19 3.54,19.5 5.79,19.5H18.57C20.47,19.5 22,18.2 22,16.32V6.97C22,5.83 21.15,4.6 20.11,4.6H17.15V12.3C17.15,18.14 6.97,18.09 6.97,12.41V4.5H4.72C3.26,4.5 2,5.41 2,6.85V15.96M9.34,11.23C9.34,15.74 14.66,15.09 14.66,11.94V4.5H9.34V11.23Z" /></g><g id="wikipedia"><path d="M14.97,18.95L12.41,12.92C11.39,14.91 10.27,17 9.31,18.95C9.3,18.96 8.84,18.95 8.84,18.95C7.37,15.5 5.85,12.1 4.37,8.68C4.03,7.84 2.83,6.5 2,6.5C2,6.4 2,6.18 2,6.05H7.06V6.5C6.46,6.5 5.44,6.9 5.7,7.55C6.42,9.09 8.94,15.06 9.63,16.58C10.1,15.64 11.43,13.16 12,12.11C11.55,11.23 10.13,7.93 9.71,7.11C9.39,6.57 8.58,6.5 7.96,6.5C7.96,6.35 7.97,6.25 7.96,6.06L12.42,6.07V6.47C11.81,6.5 11.24,6.71 11.5,7.29C12.1,8.53 12.45,9.42 13,10.57C13.17,10.23 14.07,8.38 14.5,7.41C14.76,6.76 14.37,6.5 13.29,6.5C13.3,6.38 13.3,6.17 13.3,6.07C14.69,6.06 16.78,6.06 17.15,6.05V6.47C16.44,6.5 15.71,6.88 15.33,7.46L13.5,11.3C13.68,11.81 15.46,15.76 15.65,16.2L19.5,7.37C19.2,6.65 18.34,6.5 18,6.5C18,6.37 18,6.2 18,6.05L22,6.08V6.1L22,6.5C21.12,6.5 20.57,7 20.25,7.75C19.45,9.54 17,15.24 15.4,18.95C15.4,18.95 14.97,18.95 14.97,18.95Z" /></g><g id="window-close"><path d="M13.46,12L19,17.54V19H17.54L12,13.46L6.46,19H5V17.54L10.54,12L5,6.46V5H6.46L12,10.54L17.54,5H19V6.46L13.46,12Z" /></g><g id="window-closed"><path d="M6,11H10V9H14V11H18V4H6V11M18,13H6V20H18V13M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2Z" /></g><g id="window-maximize"><path d="M4,4H20V20H4V4M6,8V18H18V8H6Z" /></g><g id="window-minimize"><path d="M20,14H4V10H20" /></g><g id="window-open"><path d="M6,8H10V6H14V8H18V4H6V8M18,10H6V15H18V10M6,20H18V17H6V20M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2Z" /></g><g id="window-restore"><path d="M4,8H8V4H20V16H16V20H4V8M16,8V14H18V6H10V8H16M6,12V18H14V12H6Z" /></g><g id="windows"><path d="M3,12V6.75L9,5.43V11.91L3,12M20,3V11.75L10,11.9V5.21L20,3M3,13L9,13.09V19.9L3,18.75V13M20,13.25V22L10,20.09V13.1L20,13.25Z" /></g><g id="wordpress"><path d="M12.2,15.5L9.65,21.72C10.4,21.9 11.19,22 12,22C12.84,22 13.66,21.9 14.44,21.7M20.61,7.06C20.8,7.96 20.76,9.05 20.39,10.25C19.42,13.37 17,19 16.1,21.13C19.58,19.58 22,16.12 22,12.1C22,10.26 21.5,8.53 20.61,7.06M4.31,8.64C4.31,8.64 3.82,8 3.31,8H2.78C2.28,9.13 2,10.62 2,12C2,16.09 4.5,19.61 8.12,21.11M3.13,7.14C4.8,4.03 8.14,2 12,2C14.5,2 16.78,3.06 18.53,4.56C18.03,4.46 17.5,4.57 16.93,4.89C15.64,5.63 15.22,7.71 16.89,8.76C17.94,9.41 18.31,11.04 18.27,12.04C18.24,13.03 15.85,17.61 15.85,17.61L13.5,9.63C13.5,9.63 13.44,9.07 13.44,8.91C13.44,8.71 13.5,8.46 13.63,8.31C13.72,8.22 13.85,8 14,8H15.11V7.14H9.11V8H9.3C9.5,8 9.69,8.29 9.87,8.47C10.09,8.7 10.37,9.55 10.7,10.43L11.57,13.3L9.69,17.63L7.63,8.97C7.63,8.97 7.69,8.37 7.82,8.27C7.9,8.2 8,8 8.17,8H8.22V7.14H3.13Z" /></g><g id="worker"><path d="M12,15C7.58,15 4,16.79 4,19V21H20V19C20,16.79 16.42,15 12,15M8,9A4,4 0 0,0 12,13A4,4 0 0,0 16,9M11.5,2C11.2,2 11,2.21 11,2.5V5.5H10V3C10,3 7.75,3.86 7.75,6.75C7.75,6.75 7,6.89 7,8H17C16.95,6.89 16.25,6.75 16.25,6.75C16.25,3.86 14,3 14,3V5.5H13V2.5C13,2.21 12.81,2 12.5,2H11.5Z" /></g><g id="wrap"><path d="M21,5H3V7H21V5M3,19H10V17H3V19M3,13H18C19,13 20,13.43 20,15C20,16.57 19,17 18,17H16V15L12,18L16,21V19H18C20.95,19 22,17.73 22,15C22,12.28 21,11 18,11H3V13Z" /></g><g id="wrench"><path d="M22.7,19L13.6,9.9C14.5,7.6 14,4.9 12.1,3C10.1,1 7.1,0.6 4.7,1.7L9,6L6,9L1.6,4.7C0.4,7.1 0.9,10.1 2.9,12.1C4.8,14 7.5,14.5 9.8,13.6L18.9,22.7C19.3,23.1 19.9,23.1 20.3,22.7L22.6,20.4C23.1,20 23.1,19.3 22.7,19Z" /></g><g id="wunderlist"><path d="M17,17.5L12,15L7,17.5V5H5V19H19V5H17V17.5M12,12.42L14.25,13.77L13.65,11.22L15.64,9.5L13,9.27L12,6.86L11,9.27L8.36,9.5L10.35,11.22L9.75,13.77L12,12.42M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z" /></g><g id="xaml"><path d="M18.93,12L15.46,18H8.54L5.07,12L8.54,6H15.46L18.93,12M23.77,12L19.73,19L18,18L21.46,12L18,6L19.73,5L23.77,12M0.23,12L4.27,5L6,6L2.54,12L6,18L4.27,19L0.23,12Z" /></g><g id="xbox"><path d="M6.43,3.72C6.5,3.66 6.57,3.6 6.62,3.56C8.18,2.55 10,2 12,2C13.88,2 15.64,2.5 17.14,3.42C17.25,3.5 17.54,3.69 17.7,3.88C16.25,2.28 12,5.7 12,5.7C10.5,4.57 9.17,3.8 8.16,3.5C7.31,3.29 6.73,3.5 6.46,3.7M19.34,5.21C19.29,5.16 19.24,5.11 19.2,5.06C18.84,4.66 18.38,4.56 18,4.59C17.61,4.71 15.9,5.32 13.8,7.31C13.8,7.31 16.17,9.61 17.62,11.96C19.07,14.31 19.93,16.16 19.4,18.73C21,16.95 22,14.59 22,12C22,9.38 21,7 19.34,5.21M15.73,12.96C15.08,12.24 14.13,11.21 12.86,9.95C12.59,9.68 12.3,9.4 12,9.1C12,9.1 11.53,9.56 10.93,10.17C10.16,10.94 9.17,11.95 8.61,12.54C7.63,13.59 4.81,16.89 4.65,18.74C4.65,18.74 4,17.28 5.4,13.89C6.3,11.68 9,8.36 10.15,7.28C10.15,7.28 9.12,6.14 7.82,5.35L7.77,5.32C7.14,4.95 6.46,4.66 5.8,4.62C5.13,4.67 4.71,5.16 4.71,5.16C3.03,6.95 2,9.35 2,12A10,10 0 0,0 12,22C14.93,22 17.57,20.74 19.4,18.73C19.4,18.73 19.19,17.4 17.84,15.5C17.53,15.07 16.37,13.69 15.73,12.96Z" /></g><g id="xbox-controller"><path d="M8.75,15.75C6.75,15.75 6,18 4,19C2,19 0.5,16 4.5,7.5H4.75L5.19,6.67C5.19,6.67 8,5 9.33,6.23H14.67C16,5 18.81,6.67 18.81,6.67L19.25,7.5H19.5C23.5,16 22,19 20,19C18,18 17.25,15.75 15.25,15.75H8.75M12,7A1,1 0 0,0 11,8A1,1 0 0,0 12,9A1,1 0 0,0 13,8A1,1 0 0,0 12,7Z" /></g><g id="xbox-controller-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L12.5,15.75H8.75C6.75,15.75 6,18 4,19C2,19 0.5,16.04 4.42,7.69L2,5.27M9.33,6.23H14.67C16,5 18.81,6.67 18.81,6.67L19.25,7.5H19.5C23,15 22.28,18.2 20.69,18.87L7.62,5.8C8.25,5.73 8.87,5.81 9.33,6.23M12,7A1,1 0 0,0 11,8A1,1 0 0,0 12,9A1,1 0 0,0 13,8A1,1 0 0,0 12,7Z" /></g><g id="xda"><path d="M-0.05,16.79L3.19,12.97L-0.05,9.15L1.5,7.86L4.5,11.41L7.5,7.86L9.05,9.15L5.81,12.97L9.05,16.79L7.5,18.07L4.5,14.5L1.5,18.07L-0.05,16.79M24,17A1,1 0 0,1 23,18H20A2,2 0 0,1 18,16V14A2,2 0 0,1 20,12H22V10H18V8H23A1,1 0 0,1 24,9M22,14H20V16H22V14M16,17A1,1 0 0,1 15,18H12A2,2 0 0,1 10,16V10A2,2 0 0,1 12,8H14V5H16V17M14,16V10H12V16H14Z" /></g><g id="xing"><path d="M17.67,2C17.24,2 17.05,2.27 16.9,2.55C16.9,2.55 10.68,13.57 10.5,13.93L14.58,21.45C14.72,21.71 14.94,22 15.38,22H18.26C18.44,22 18.57,21.93 18.64,21.82C18.72,21.69 18.72,21.53 18.64,21.37L14.57,13.92L20.96,2.63C21.04,2.47 21.04,2.31 20.97,2.18C20.89,2.07 20.76,2 20.58,2M5.55,5.95C5.38,5.95 5.23,6 5.16,6.13C5.08,6.26 5.09,6.41 5.18,6.57L7.12,9.97L4.06,15.37C4,15.53 4,15.69 4.06,15.82C4.13,15.94 4.26,16 4.43,16H7.32C7.75,16 7.96,15.72 8.11,15.45C8.11,15.45 11.1,10.16 11.22,9.95L9.24,6.5C9.1,6.24 8.88,5.95 8.43,5.95" /></g><g id="xing-box"><path d="M4.8,3C3.8,3 3,3.8 3,4.8V19.2C3,20.2 3.8,21 4.8,21H19.2C20.2,21 21,20.2 21,19.2V4.8C21,3.8 20.2,3 19.2,3M16.07,5H18.11C18.23,5 18.33,5.04 18.37,5.13C18.43,5.22 18.43,5.33 18.37,5.44L13.9,13.36L16.75,18.56C16.81,18.67 16.81,18.78 16.75,18.87C16.7,18.95 16.61,19 16.5,19H14.47C14.16,19 14,18.79 13.91,18.61L11.04,13.35C11.18,13.1 15.53,5.39 15.53,5.39C15.64,5.19 15.77,5 16.07,5M7.09,7.76H9.1C9.41,7.76 9.57,7.96 9.67,8.15L11.06,10.57C10.97,10.71 8.88,14.42 8.88,14.42C8.77,14.61 8.63,14.81 8.32,14.81H6.3C6.18,14.81 6.09,14.76 6.04,14.67C6,14.59 6,14.47 6.04,14.36L8.18,10.57L6.82,8.2C6.77,8.09 6.75,8 6.81,7.89C6.86,7.81 6.96,7.76 7.09,7.76Z" /></g><g id="xing-circle"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M15.85,6H17.74C17.86,6 17.94,6.04 18,6.12C18.04,6.2 18.04,6.3 18,6.41L13.84,13.76L16.5,18.59C16.53,18.69 16.53,18.8 16.5,18.88C16.43,18.96 16.35,19 16.24,19H14.36C14.07,19 13.93,18.81 13.84,18.64L11.17,13.76C11.31,13.5 15.35,6.36 15.35,6.36C15.45,6.18 15.57,6 15.85,6M7.5,8.57H9.39C9.67,8.57 9.81,8.75 9.9,8.92L11.19,11.17C11.12,11.3 9.17,14.75 9.17,14.75C9.07,14.92 8.94,15.11 8.66,15.11H6.78C6.67,15.11 6.59,15.06 6.54,15C6.5,14.9 6.5,14.8 6.54,14.69L8.53,11.17L7.27,9C7.21,8.87 7.2,8.77 7.25,8.69C7.3,8.61 7.39,8.57 7.5,8.57Z" /></g><g id="xml"><path d="M12.89,3L14.85,3.4L11.11,21L9.15,20.6L12.89,3M19.59,12L16,8.41V5.58L22.42,12L16,18.41V15.58L19.59,12M1.58,12L8,5.58V8.41L4.41,12L8,15.58V18.41L1.58,12Z" /></g><g id="yeast"><path d="M18,14A4,4 0 0,1 22,18A4,4 0 0,1 18,22A4,4 0 0,1 14,18L14.09,17.15C14.05,16.45 13.92,15.84 13.55,15.5C13.35,15.3 13.07,15.19 12.75,15.13C11.79,15.68 10.68,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3A6.5,6.5 0 0,1 16,9.5C16,10.68 15.68,11.79 15.13,12.75C15.19,13.07 15.3,13.35 15.5,13.55C15.84,13.92 16.45,14.05 17.15,14.09L18,14M7.5,10A1.5,1.5 0 0,1 9,11.5A1.5,1.5 0 0,1 7.5,13A1.5,1.5 0 0,1 6,11.5A1.5,1.5 0 0,1 7.5,10M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z" /></g><g id="yelp"><path d="M10.59,2C11.23,2 11.5,2.27 11.58,2.97L11.79,6.14L12.03,10.29C12.05,10.64 12,11 11.86,11.32C11.64,11.77 11.14,11.89 10.73,11.58C10.5,11.39 10.31,11.14 10.15,10.87L6.42,4.55C6.06,3.94 6.17,3.54 6.77,3.16C7.5,2.68 9.73,2 10.59,2M14.83,14.85L15.09,14.91L18.95,16.31C19.61,16.55 19.79,16.92 19.5,17.57C19.06,18.7 18.34,19.66 17.42,20.45C16.96,20.85 16.5,20.78 16.21,20.28L13.94,16.32C13.55,15.61 14.03,14.8 14.83,14.85M4.5,14C4.5,13.26 4.5,12.55 4.75,11.87C4.97,11.2 5.33,11 6,11.27L9.63,12.81C10.09,13 10.35,13.32 10.33,13.84C10.3,14.36 9.97,14.58 9.53,14.73L5.85,15.94C5.15,16.17 4.79,15.96 4.64,15.25C4.55,14.83 4.47,14.4 4.5,14M11.97,21C11.95,21.81 11.6,22.12 10.81,22C9.77,21.8 8.81,21.4 7.96,20.76C7.54,20.44 7.45,19.95 7.76,19.53L10.47,15.97C10.7,15.67 11.03,15.6 11.39,15.74C11.77,15.88 11.97,16.18 11.97,16.59V21M14.45,13.32C13.73,13.33 13.23,12.5 13.64,11.91C14.47,10.67 15.35,9.46 16.23,8.26C16.5,7.85 16.94,7.82 17.31,8.16C18.24,9 18.91,10 19.29,11.22C19.43,11.67 19.25,12.08 18.83,12.2L15.09,13.17L14.45,13.32Z" /></g><g id="yin-yang"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A4,4 0 0,1 8,16A4,4 0 0,1 12,12A4,4 0 0,0 16,8A4,4 0 0,0 12,4M12,6.5A1.5,1.5 0 0,1 13.5,8A1.5,1.5 0 0,1 12,9.5A1.5,1.5 0 0,1 10.5,8A1.5,1.5 0 0,1 12,6.5M12,14.5A1.5,1.5 0 0,0 10.5,16A1.5,1.5 0 0,0 12,17.5A1.5,1.5 0 0,0 13.5,16A1.5,1.5 0 0,0 12,14.5Z" /></g><g id="youtube-play"><path d="M10,16.5V7.5L16,12M20,4.4C19.4,4.2 15.7,4 12,4C8.3,4 4.6,4.19 4,4.38C2.44,4.9 2,8.4 2,12C2,15.59 2.44,19.1 4,19.61C4.6,19.81 8.3,20 12,20C15.7,20 19.4,19.81 20,19.61C21.56,19.1 22,15.59 22,12C22,8.4 21.56,4.91 20,4.4Z" /></g><g id="zip-box"><path d="M14,17H12V15H10V13H12V15H14M14,9H12V11H14V13H12V11H10V9H12V7H10V5H12V7H14M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g></defs></svg></iron-iconset-svg> \ 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 bdf10ffef9ce864fc953ff69bcadef5764cec272..774ce87fa36a21fb769b21c4d52f87df9872f890 100644 GIT binary patch delta 183408 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 RB)Y|}{|h0cTa-rV2mtXZfrbD8 delta 180586 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/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%0A1FK3U8@(hM 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≫&pN)H}GC;N4l#5L`E)C>dtZX`)FG`}*awg%e0U~@brTRLr zx0A1<%V`~2$GIaiNiIG5=`e@q%vUr{?dYJghz#O&LBcRzmt0SAJ*7#n4_M{LTo&K* zXtEISK*pD(96ksrGpe>0HN0wo(`NgY<;Oe41-Y=^xd4A5n$NIC3j8v6inH!1M49ao zojBVL)ubhe-l=koP9;^wb?GWx-|R|fuy)zv+!&d+S@l76z^1%h&atydzopC4FO1di z+k7Xz@=tX){`RByJ}jPhVex4nU(eeZZ$d}()|X=JXx&XG%O;jQZBKA;Zx{Gwrrlbg z%0A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 From 9fdefa5a1da28ab074dddfbbf21d6636a7f2dc88 Mon Sep 17 00:00:00 2001 From: "St. John Johnson" <st.john.johnson@gmail.com> Date: Mon, 9 Jan 2017 01:35:38 -0800 Subject: [PATCH 123/189] Fix #5188 by Closing the stream instead of Releasing it (#5235) * Fix #5188 by Closing the stream instead of Releasing it Closing just terminates the connection, release attempts to download all the contents before closing. Since the MJPEG stream is infinite, it loads and loads content until the python script runs out of memory. Source: https://github.com/KeepSafe/aiohttp/blob/50b1d30f4128abd895532022c726e97993987c7c/aiohttp/client_reqrep.py#L668-L672 * Update mjpeg.py --- homeassistant/components/camera/mjpeg.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/camera/mjpeg.py b/homeassistant/components/camera/mjpeg.py index 981ed9dbf49..d3af55a91f1 100644 --- a/homeassistant/components/camera/mjpeg.py +++ b/homeassistant/components/camera/mjpeg.py @@ -126,7 +126,7 @@ class MjpegCamera(Camera): finally: if stream is not None: - self.hass.async_add_job(stream.release()) + yield from stream.close() if response is not None: yield from response.write_eof() From ee055651cd1452174cba7b633d1e89ebe63f89e0 Mon Sep 17 00:00:00 2001 From: Terry Carlin <terrycarlin@gmail.com> Date: Mon, 9 Jan 2017 04:11:15 -0700 Subject: [PATCH 124/189] Update insteon_local.py (#5236) Correct typo --- homeassistant/components/switch/insteon_local.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/switch/insteon_local.py b/homeassistant/components/switch/insteon_local.py index cc6a732bb7f..c088e2cf072 100644 --- a/homeassistant/components/switch/insteon_local.py +++ b/homeassistant/components/switch/insteon_local.py @@ -52,7 +52,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): setup_switch(device_id, conf_switches[device_id], insteonhub, hass, add_devices) - linked = insteonhub.get_inked() + linked = insteonhub.get_linked() for device_id in linked: if linked[device_id]['cat_type'] == 'switch'\ From 3ed7c1c6adbbc0a6cf4e99e71652680be3035ed7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Arnauts?= <michael.arnauts@gmail.com> Date: Mon, 9 Jan 2017 14:10:46 +0100 Subject: [PATCH 125/189] Add Lannouncer tts notify component (#5187) * Add Lannouncer notify component * Send message by opening a raw TCP socket instead of using requests. Cleanup of method validation. * Use 'return' instead of 'return None' --- .coveragerc | 1 + homeassistant/components/notify/lannouncer.py | 85 +++++++++++++++++++ 2 files changed, 86 insertions(+) create mode 100644 homeassistant/components/notify/lannouncer.py diff --git a/.coveragerc b/.coveragerc index f3c7d950965..62ada802c05 100644 --- a/.coveragerc +++ b/.coveragerc @@ -233,6 +233,7 @@ omit = homeassistant/components/notify/instapush.py homeassistant/components/notify/joaoapps_join.py homeassistant/components/notify/kodi.py + homeassistant/components/notify/lannouncer.py homeassistant/components/notify/llamalab_automate.py homeassistant/components/notify/matrix.py homeassistant/components/notify/message_bird.py diff --git a/homeassistant/components/notify/lannouncer.py b/homeassistant/components/notify/lannouncer.py new file mode 100644 index 00000000000..be1bc636fd6 --- /dev/null +++ b/homeassistant/components/notify/lannouncer.py @@ -0,0 +1,85 @@ +""" +Lannouncer platform for notify component. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/notify.lannouncer/ +""" +import logging + +from urllib.parse import urlencode +import socket +import voluptuous as vol + +from homeassistant.components.notify import ( + PLATFORM_SCHEMA, ATTR_DATA, BaseNotificationService) +from homeassistant.const import (CONF_HOST, CONF_PORT) +import homeassistant.helpers.config_validation as cv + +ATTR_METHOD = 'method' +ATTR_METHOD_DEFAULT = 'speak' +ATTR_METHOD_ALLOWED = ['speak', 'alarm'] + +DEFAULT_PORT = 1035 + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required(CONF_HOST): cv.string, + vol.Optional(CONF_PORT, default=DEFAULT_PORT): cv.port, +}) + +_LOGGER = logging.getLogger(__name__) + + +def get_service(hass, config): + """Get the Lannouncer notification service.""" + host = config.get(CONF_HOST) + port = config.get(CONF_PORT) + + return LannouncerNotificationService(hass, host, port) + + +class LannouncerNotificationService(BaseNotificationService): + """Implementation of a notification service for Lannouncer.""" + + def __init__(self, hass, host, port): + """Initialize the service.""" + self._hass = hass + self._host = host + self._port = port + + def send_message(self, message="", **kwargs): + """Send a message to Lannouncer.""" + data = kwargs.get(ATTR_DATA) + if data is not None and ATTR_METHOD in data: + method = data.get(ATTR_METHOD) + else: + method = ATTR_METHOD_DEFAULT + + if method not in ATTR_METHOD_ALLOWED: + _LOGGER.error("Unknown method %s", method) + return + + cmd = urlencode({method: message}) + + try: + # Open socket + sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + sock.settimeout(10) + sock.connect((self._host, self._port)) + + # Send message + _LOGGER.debug("Sending message: %s", cmd) + sock.sendall(cmd.encode()) + sock.sendall("&@DONE@\n".encode()) + + # Check response + buffer = sock.recv(1024) + if buffer != b'LANnouncer: OK': + _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) + except socket.error: + _LOGGER.exception('Failed to send data to Lannnouncer') From bb02fc707c177e2c1af9fc4d2ad6f568a8c7c9e9 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli <pascal.vizeli@syshack.ch> Date: Mon, 9 Jan 2017 17:08:37 +0100 Subject: [PATCH 126/189] [device_traker/upc] New UPC connect box platform (#5100) --- .../components/device_tracker/upc_connect.py | 164 ++++++++++++ .../device_tracker/test_upc_connect.py | 239 ++++++++++++++++++ tests/fixtures/upc_connect.xml | 42 +++ tests/test_util/aiohttp.py | 29 ++- 4 files changed, 467 insertions(+), 7 deletions(-) create mode 100644 homeassistant/components/device_tracker/upc_connect.py create mode 100644 tests/components/device_tracker/test_upc_connect.py create mode 100644 tests/fixtures/upc_connect.xml diff --git a/homeassistant/components/device_tracker/upc_connect.py b/homeassistant/components/device_tracker/upc_connect.py new file mode 100644 index 00000000000..aafa9824a4e --- /dev/null +++ b/homeassistant/components/device_tracker/upc_connect.py @@ -0,0 +1,164 @@ +""" +Support for UPC ConnectBox router. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/device_tracker.upc_connect/ +""" +import asyncio +import logging +import xml.etree.ElementTree as ET + +import aiohttp +import async_timeout +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 +from homeassistant.helpers.aiohttp_client import async_create_clientsession + + +_LOGGER = logging.getLogger(__name__) + +DEFAULT_IP = '192.168.0.1' + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required(CONF_PASSWORD): cv.string, + vol.Optional(CONF_HOST, default=DEFAULT_IP): cv.string, +}) + +CMD_LOGIN = 15 +CMD_DEVICES = 123 + + +@asyncio.coroutine +def async_get_scanner(hass, config): + """Return the UPC device scanner.""" + scanner = UPCDeviceScanner(hass, config[DOMAIN]) + success_init = yield from scanner.async_login() + + return scanner if success_init else None + + +class UPCDeviceScanner(DeviceScanner): + """This class queries a router running UPC ConnectBox firmware.""" + + def __init__(self, hass, config): + """Initialize the scanner.""" + self.hass = hass + self.host = config[CONF_HOST] + self.password = config[CONF_PASSWORD] + + self.data = {} + self.token = None + + self.headers = { + 'X-Requested-With': 'XMLHttpRequest', + 'Referer': "http://{}/index.html".format(self.host), + 'User-Agent': ("Mozilla/5.0 (Windows NT 10.0; WOW64) " + "AppleWebKit/537.36 (KHTML, like Gecko) " + "Chrome/47.0.2526.106 Safari/537.36") + } + + self.websession = async_create_clientsession( + hass, cookie_jar=aiohttp.CookieJar(unsafe=True, loop=hass.loop)) + + @asyncio.coroutine + def async_scan_devices(self): + """Scan for new devices and return a list with found device IDs.""" + if self.token is None: + reconnect = yield from self.async_login() + if not reconnect: + _LOGGER.error("Not connected to %s", self.host) + return [] + + raw = yield from self._async_ws_function(CMD_DEVICES) + xml_root = ET.fromstring(raw) + + return [mac.text for mac in xml_root.iter('MACAddr')] + + @asyncio.coroutine + def async_get_device_name(self, device): + """The firmware doesn't save the name of the wireless device.""" + return None + + @asyncio.coroutine + def async_login(self): + """Login into firmware and get first token.""" + response = None + try: + # get first token + with async_timeout.timeout(10, loop=self.hass.loop): + response = yield from self.websession.get( + "http://{}/common_page/login.html".format(self.host) + ) + + self.token = self._async_get_token() + + # login + data = yield from self._async_ws_function(CMD_LOGIN, { + 'Username': 'NULL', + 'Password': self.password, + }) + + # successfull? + if data.find("successful") != -1: + return True + return False + + except (asyncio.TimeoutError, aiohttp.errors.ClientError): + _LOGGER.error("Can not load login page from %s", self.host) + return False + + finally: + if response is not None: + yield from response.release() + + @asyncio.coroutine + def _async_ws_function(self, function, additional_form=None): + """Execute a command on UPC firmware webservice.""" + form_data = { + 'token': self.token, + 'fun': function + } + + if additional_form: + form_data.update(additional_form) + + response = None + try: + with async_timeout.timeout(10, loop=self.hass.loop): + response = yield from self.websession.post( + "http://{}/xml/getter.xml".format(self.host), + data=form_data, + headers=self.headers + ) + + # error on UPC webservice + if response.status != 200: + _LOGGER.warning( + "Error %d on %s.", response.status, function) + self.token = None + return + + # load data, store token for next request + raw = yield from response.text() + self.token = self._async_get_token() + + return raw + + except (asyncio.TimeoutError, aiohttp.errors.ClientError): + _LOGGER.error("Error on %s", function) + self.token = None + + finally: + if response is not None: + yield from response.release() + + def _async_get_token(self): + """Extract token from cookies.""" + cookie_manager = self.websession.cookie_jar.filter_cookies( + "http://{}".format(self.host)) + + return cookie_manager.get('sessionToken') diff --git a/tests/components/device_tracker/test_upc_connect.py b/tests/components/device_tracker/test_upc_connect.py new file mode 100644 index 00000000000..728eb104b8b --- /dev/null +++ b/tests/components/device_tracker/test_upc_connect.py @@ -0,0 +1,239 @@ +"""The tests for the UPC ConnextBox device tracker platform.""" +import asyncio +import os +from unittest.mock import patch +import logging + +from homeassistant.bootstrap import setup_component +from homeassistant.components import device_tracker +from homeassistant.const import ( + CONF_PLATFORM, CONF_HOST, CONF_PASSWORD) +from homeassistant.components.device_tracker import DOMAIN +import homeassistant.components.device_tracker.upc_connect as platform +from homeassistant.util.async import run_coroutine_threadsafe + +from tests.common import ( + get_test_home_assistant, assert_setup_component, load_fixture) + +_LOGGER = logging.getLogger(__name__) + + +@asyncio.coroutine +def async_scan_devices_mock(scanner): + """Mock async_scan_devices.""" + return [] + + +class TestUPCConnect(object): + """Tests for the Ddwrt device tracker platform.""" + + def setup_method(self): + """Setup things to be run when tests are started.""" + self.hass = get_test_home_assistant() + self.hass.config.components = ['zone'] + + self.host = "127.0.0.1" + + def teardown_method(self): + """Stop everything that was started.""" + try: + os.remove(self.hass.config.path(device_tracker.YAML_DEVICES)) + except FileNotFoundError: + pass + + self.hass.stop() + + @patch('homeassistant.components.device_tracker.upc_connect.' + 'UPCDeviceScanner.async_scan_devices', + return_value=async_scan_devices_mock) + def test_setup_platform(self, scan_mock, aioclient_mock): + """Setup a platform.""" + aioclient_mock.get( + "http://{}/common_page/login.html".format(self.host), + cookies={'sessionToken': '654321'} + ) + aioclient_mock.post( + "http://{}/xml/getter.xml".format(self.host), + content=b'successful' + ) + + with assert_setup_component(1): + assert setup_component( + self.hass, DOMAIN, {DOMAIN: { + CONF_PLATFORM: 'upc_connect', + CONF_HOST: self.host, + CONF_PASSWORD: '123456' + }}) + + assert len(aioclient_mock.mock_calls) == 2 + assert aioclient_mock.mock_calls[1][2]['Password'] == '123456' + assert aioclient_mock.mock_calls[1][2]['fun'] == 15 + assert aioclient_mock.mock_calls[1][2]['token'] == '654321' + + @patch('homeassistant.components.device_tracker._LOGGER.error') + def test_setup_platform_error_webservice(self, mock_error, aioclient_mock): + """Setup a platform with api error.""" + aioclient_mock.get( + "http://{}/common_page/login.html".format(self.host), + cookies={'sessionToken': '654321'} + ) + aioclient_mock.post( + "http://{}/xml/getter.xml".format(self.host), + content=b'successful', + status=404 + ) + + with assert_setup_component(1): + assert setup_component( + self.hass, DOMAIN, {DOMAIN: { + CONF_PLATFORM: 'upc_connect', + CONF_HOST: self.host, + CONF_PASSWORD: '123456' + }}) + + assert len(aioclient_mock.mock_calls) == 2 + assert aioclient_mock.mock_calls[1][2]['Password'] == '123456' + assert aioclient_mock.mock_calls[1][2]['fun'] == 15 + assert aioclient_mock.mock_calls[1][2]['token'] == '654321' + + assert 'Error setting up platform' in \ + str(mock_error.call_args_list[-1]) + + @patch('homeassistant.components.device_tracker._LOGGER.error') + def test_setup_platform_timeout_webservice(self, mock_error, + aioclient_mock): + """Setup a platform with api timeout.""" + aioclient_mock.get( + "http://{}/common_page/login.html".format(self.host), + cookies={'sessionToken': '654321'} + ) + aioclient_mock.post( + "http://{}/xml/getter.xml".format(self.host), + content=b'successful', + exc=asyncio.TimeoutError() + ) + + with assert_setup_component(1): + assert setup_component( + self.hass, DOMAIN, {DOMAIN: { + CONF_PLATFORM: 'upc_connect', + CONF_HOST: self.host, + CONF_PASSWORD: '123456' + }}) + + assert len(aioclient_mock.mock_calls) == 2 + assert aioclient_mock.mock_calls[1][2]['Password'] == '123456' + assert aioclient_mock.mock_calls[1][2]['fun'] == 15 + assert aioclient_mock.mock_calls[1][2]['token'] == '654321' + + assert 'Error setting up platform' in \ + str(mock_error.call_args_list[-1]) + + @patch('homeassistant.components.device_tracker._LOGGER.error') + def test_setup_platform_timeout_loginpage(self, mock_error, + aioclient_mock): + """Setup a platform with timeout on loginpage.""" + aioclient_mock.get( + "http://{}/common_page/login.html".format(self.host), + exc=asyncio.TimeoutError() + ) + aioclient_mock.post( + "http://{}/xml/getter.xml".format(self.host), + content=b'successful', + ) + + with assert_setup_component(1): + assert setup_component( + self.hass, DOMAIN, {DOMAIN: { + CONF_PLATFORM: 'upc_connect', + CONF_HOST: self.host, + CONF_PASSWORD: '123456' + }}) + + assert len(aioclient_mock.mock_calls) == 1 + + assert 'Error setting up platform' in \ + str(mock_error.call_args_list[-1]) + + def test_scan_devices(self, aioclient_mock): + """Setup a upc platform and scan device.""" + aioclient_mock.get( + "http://{}/common_page/login.html".format(self.host), + cookies={'sessionToken': '654321'} + ) + aioclient_mock.post( + "http://{}/xml/getter.xml".format(self.host), + content=b'successful', + cookies={'sessionToken': '654321'} + ) + + scanner = run_coroutine_threadsafe(platform.async_get_scanner( + self.hass, {DOMAIN: { + CONF_PLATFORM: 'upc_connect', + CONF_HOST: self.host, + CONF_PASSWORD: '123456' + }} + ), self.hass.loop).result() + + assert aioclient_mock.mock_calls[1][2]['Password'] == '123456' + assert aioclient_mock.mock_calls[1][2]['fun'] == 15 + assert aioclient_mock.mock_calls[1][2]['token'] == '654321' + + aioclient_mock.clear_requests() + aioclient_mock.post( + "http://{}/xml/getter.xml".format(self.host), + text=load_fixture('upc_connect.xml'), + cookies={'sessionToken': '1235678'} + ) + + mac_list = run_coroutine_threadsafe( + scanner.async_scan_devices(), self.hass.loop).result() + + assert len(aioclient_mock.mock_calls) == 1 + assert aioclient_mock.mock_calls[0][2]['fun'] == 123 + assert scanner.token == '1235678' + assert mac_list == ['30:D3:2D:0:69:21', '5C:AA:FD:25:32:02', + '70:EE:50:27:A1:38'] + + def test_scan_devices_without_session(self, aioclient_mock): + """Setup a upc platform and scan device with no token.""" + aioclient_mock.get( + "http://{}/common_page/login.html".format(self.host), + cookies={'sessionToken': '654321'} + ) + aioclient_mock.post( + "http://{}/xml/getter.xml".format(self.host), + content=b'successful', + cookies={'sessionToken': '654321'} + ) + + scanner = run_coroutine_threadsafe(platform.async_get_scanner( + self.hass, {DOMAIN: { + CONF_PLATFORM: 'upc_connect', + CONF_HOST: self.host, + CONF_PASSWORD: '123456' + }} + ), self.hass.loop).result() + + assert aioclient_mock.mock_calls[1][2]['Password'] == '123456' + assert aioclient_mock.mock_calls[1][2]['fun'] == 15 + assert aioclient_mock.mock_calls[1][2]['token'] == '654321' + + aioclient_mock.clear_requests() + aioclient_mock.get( + "http://{}/common_page/login.html".format(self.host), + cookies={'sessionToken': '654321'} + ) + aioclient_mock.post( + "http://{}/xml/getter.xml".format(self.host), + text=load_fixture('upc_connect.xml'), + cookies={'sessionToken': '1235678'} + ) + + scanner.token = None + mac_list = run_coroutine_threadsafe( + scanner.async_scan_devices(), self.hass.loop).result() + + assert len(aioclient_mock.mock_calls) == 2 + assert aioclient_mock.mock_calls[1][2]['fun'] == 15 + assert mac_list == [] diff --git a/tests/fixtures/upc_connect.xml b/tests/fixtures/upc_connect.xml new file mode 100644 index 00000000000..b8ffc4dd979 --- /dev/null +++ b/tests/fixtures/upc_connect.xml @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="UTF-8"?> +<LanUserTable> + <Ethernet> + <clientinfo> + <interface>Ethernet 1</interface> + <IPv4Addr>192.168.0.139/24</IPv4Addr> + <index>0</index> + <interfaceid>2</interfaceid> + <hostname>Unknown</hostname> + <MACAddr>30:D3:2D:0:69:21</MACAddr> + <method>2</method> + <leaseTime>00:00:00:00</leaseTime> + <speed>1000</speed> + </clientinfo> + <clientinfo> + <interface>Ethernet 2</interface> + <IPv4Addr>192.168.0.134/24</IPv4Addr> + <index>1</index> + <interfaceid>2</interfaceid> + <hostname>Unknown</hostname> + <MACAddr>5C:AA:FD:25:32:02</MACAddr> + <method>2</method> + <leaseTime>00:00:00:00</leaseTime> + <speed>10</speed> + </clientinfo> + </Ethernet> + <WIFI> + <clientinfo> + <interface>HASS</interface> + <IPv4Addr>192.168.0.194/24</IPv4Addr> + <index>3</index> + <interfaceid>3</interfaceid> + <hostname>Unknown</hostname> + <MACAddr>70:EE:50:27:A1:38</MACAddr> + <method>2</method> + <leaseTime>00:00:00:00</leaseTime> + <speed>39</speed> + </clientinfo> + </WIFI> + <totalClient>3</totalClient> + <Customer>upc</Customer> +</LanUserTable> diff --git a/tests/test_util/aiohttp.py b/tests/test_util/aiohttp.py index c0ed579f197..124fcf72329 100644 --- a/tests/test_util/aiohttp.py +++ b/tests/test_util/aiohttp.py @@ -14,6 +14,7 @@ class AiohttpClientMocker: def __init__(self): """Initialize the request mocker.""" self._mocks = [] + self._cookies = {} self.mock_calls = [] def request(self, method, url, *, @@ -25,7 +26,8 @@ class AiohttpClientMocker: json=None, params=None, headers=None, - exc=None): + exc=None, + cookies=None): """Mock a request.""" if json: text = _json.dumps(json) @@ -35,11 +37,11 @@ class AiohttpClientMocker: content = b'' if params: url = str(yarl.URL(url).with_query(params)) - - self.exc = exc + if cookies: + self._cookies.update(cookies) self._mocks.append(AiohttpClientMockResponse( - method, url, status, content)) + method, url, status, content, exc)) def get(self, *args, **kwargs): """Register a mock get request.""" @@ -66,6 +68,16 @@ class AiohttpClientMocker: """Number of requests made.""" return len(self.mock_calls) + def filter_cookies(self, host): + """Return hosts cookies.""" + return self._cookies + + def clear_requests(self): + """Reset mock calls.""" + self._mocks.clear() + self._cookies.clear() + self.mock_calls.clear() + @asyncio.coroutine def match_request(self, method, url, *, data=None, auth=None, params=None, headers=None): # pylint: disable=unused-variable @@ -74,8 +86,8 @@ class AiohttpClientMocker: if response.match_request(method, url, params): self.mock_calls.append((method, url, data)) - if self.exc: - raise self.exc + if response.exc: + raise response.exc return response assert False, "No mock registered for {} {} {}".format(method.upper(), @@ -85,7 +97,7 @@ class AiohttpClientMocker: class AiohttpClientMockResponse: """Mock Aiohttp client response.""" - def __init__(self, method, url, status, response): + def __init__(self, method, url, status, response, exc=None): """Initialize a fake response.""" self.method = method self._url = url @@ -93,6 +105,7 @@ class AiohttpClientMockResponse: else urlparse(url.lower())) self.status = status self.response = response + self.exc = exc def match_request(self, method, url, params=None): """Test if response answers request.""" @@ -155,4 +168,6 @@ def mock_aiohttp_client(): setattr(instance, method, functools.partial(mocker.match_request, method)) + instance.cookie_jar.filter_cookies = mocker.filter_cookies + yield mocker From c7249a3e3acc7cde96249dda57a9d91669cde27a Mon Sep 17 00:00:00 2001 From: Adam Mills <adam@armills.info> Date: Mon, 9 Jan 2017 11:49:11 -0500 Subject: [PATCH 127/189] Build libcec for Docker image (#5230) * Build libcec for Docker image * Update development dockerfile as well * Dynamically load python paths for current version --- Dockerfile | 5 ++- script/build_libcec | 55 ++++++++++++++++++++++++++++ virtualization/Docker/Dockerfile.dev | 5 ++- 3 files changed, 63 insertions(+), 2 deletions(-) create mode 100755 script/build_libcec diff --git a/Dockerfile b/Dockerfile index 1141149d9fd..342b62e6ec1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,7 +13,7 @@ RUN echo "deb http://download.telldus.com/debian/ stable main" >> /etc/apt/sourc wget -qO - http://download.telldus.se/debian/telldus-public.key | apt-key add - && \ apt-get update && \ apt-get install -y --no-install-recommends nmap net-tools cython3 libudev-dev sudo libglib2.0-dev bluetooth libbluetooth-dev \ - libtelldus-core2 && \ + libtelldus-core2 cmake libxrandr-dev swig && \ apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* COPY script/build_python_openzwave script/build_python_openzwave @@ -21,6 +21,9 @@ RUN script/build_python_openzwave && \ mkdir -p /usr/local/share/python-openzwave && \ ln -sf /usr/src/app/build/python-openzwave/openzwave/config /usr/local/share/python-openzwave/config +COPY script/build_libcec script/build_libcec +RUN script/build_libcec + 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 diff --git a/script/build_libcec b/script/build_libcec new file mode 100755 index 00000000000..ad7e62c50a6 --- /dev/null +++ b/script/build_libcec @@ -0,0 +1,55 @@ +#!/bin/sh +# Sets up and builds libcec to be used with Home Assistant. +# Dependencies that need to be installed: +# apt-get install cmake libudev-dev libxrandr-dev python-dev swig + +# Stop on errors +set -e + +# Load required information about the current python environment +PYTHON_LIBDIR=$(python -c 'from distutils import sysconfig; print(sysconfig.get_config_var("LIBDIR"))') +PYTHON_LDLIBRARY=$(python -c 'from distutils import sysconfig; print(sysconfig.get_config_var("LDLIBRARY"))') +PYTHON_LIBRARY="${PYTHON_LIBDIR}/${PYTHON_LDLIBRARY}" +PYTHON_INCLUDE_DIR=$(python -c 'from distutils import sysconfig; print(sysconfig.get_python_inc())') +PYTHON_SITE_DIR=$(python -c 'from distutils import sysconfig; print(sysconfig.get_python_lib(prefix=""))') + +cd "$(dirname "$0")/.." +mkdir -p build && cd build + +if [ ! -d libcec ]; then + git clone --branch release --depth 1 https://github.com/Pulse-Eight/libcec.git +fi + +cd libcec +git checkout release +git pull +git submodule update --init src/platform + +# Build libcec platform libs +( + mkdir -p src/platform/build + cd src/platform/build + cmake .. + make + make install +) + +# Fix upstream install hardcoded Debian path. +# See: https://github.com/Pulse-Eight/libcec/issues/288 +sed -i \ + -e '/DESTINATION/s:lib/python${PYTHON_VERSION}/dist-packages:${PYTHON_SITE_DIR}:' \ + src/libcec/cmake/CheckPlatformSupport.cmake + +# Build libcec +( + mkdir -p build && cd build + + cmake \ + -DPYTHON_LIBRARY="${PYTHON_LIBRARY}" \ + -DPYTHON_INCLUDE_DIR="${PYTHON_INCLUDE_DIR}" \ + -DPYTHON_SITE_DIR="${PYTHON_SITE_DIR}" \ + .. + make + make install + ldconfig +) diff --git a/virtualization/Docker/Dockerfile.dev b/virtualization/Docker/Dockerfile.dev index 3b5eb493f82..f86a0e3de7f 100644 --- a/virtualization/Docker/Dockerfile.dev +++ b/virtualization/Docker/Dockerfile.dev @@ -17,7 +17,7 @@ RUN echo "deb http://download.telldus.com/debian/ stable main" >> /etc/apt/sourc wget -qO - http://download.telldus.se/debian/telldus-public.key | apt-key add - && \ apt-get update && \ apt-get install -y --no-install-recommends nmap net-tools cython3 libudev-dev sudo libglib2.0-dev bluetooth libbluetooth-dev \ - libtelldus-core2 && \ + libtelldus-core2 cmake libxrandr-dev swig && \ apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* COPY script/build_python_openzwave script/build_python_openzwave @@ -25,6 +25,9 @@ RUN script/build_python_openzwave && \ mkdir -p /usr/local/share/python-openzwave && \ ln -sf /usr/src/app/build/python-openzwave/openzwave/config /usr/local/share/python-openzwave/config +COPY script/build_libcec script/build_libcec +RUN script/build_libcec + 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 From dd7cafd5e367364c8cf00888b08b6bb2343226dc Mon Sep 17 00:00:00 2001 From: Fabian Affolter <mail@fabian-affolter.ch> Date: Mon, 9 Jan 2017 21:34:18 +0100 Subject: [PATCH 128/189] Upgrade TwitterAPI to 2.4.3 (#5244) --- homeassistant/components/notify/twitter.py | 2 +- requirements_all.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/notify/twitter.py b/homeassistant/components/notify/twitter.py index 666133c4c57..afa43057fa5 100644 --- a/homeassistant/components/notify/twitter.py +++ b/homeassistant/components/notify/twitter.py @@ -13,7 +13,7 @@ from homeassistant.components.notify import ( PLATFORM_SCHEMA, BaseNotificationService) from homeassistant.const import CONF_ACCESS_TOKEN -REQUIREMENTS = ['TwitterAPI==2.4.2'] +REQUIREMENTS = ['TwitterAPI==2.4.3'] _LOGGER = logging.getLogger(__name__) diff --git a/requirements_all.txt b/requirements_all.txt index a2412504bdb..69133893979 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -31,7 +31,7 @@ PyMata==2.13 SoCo==0.12 # homeassistant.components.notify.twitter -TwitterAPI==2.4.2 +TwitterAPI==2.4.3 # homeassistant.components.http aiohttp_cors==0.5.0 From e6a9b6404f269ecb181164ea3f296c09212af236 Mon Sep 17 00:00:00 2001 From: Johann Kellerman <kellerza@gmail.com> Date: Mon, 9 Jan 2017 22:35:47 +0200 Subject: [PATCH 129/189] [sensor/sma] SMA Solar Inverter sensor (#5118) * Initial * Rebase ensure_list * timedelta & remove prints --- .coveragerc | 1 + homeassistant/components/sensor/sma.py | 190 +++++++++++++++++++++++++ requirements_all.txt | 3 + 3 files changed, 194 insertions(+) create mode 100644 homeassistant/components/sensor/sma.py diff --git a/.coveragerc b/.coveragerc index 62ada802c05..328746735ea 100644 --- a/.coveragerc +++ b/.coveragerc @@ -312,6 +312,7 @@ omit = homeassistant/components/sensor/scrape.py homeassistant/components/sensor/sensehat.py homeassistant/components/sensor/serial_pm.py + homeassistant/components/sensor/sma.py homeassistant/components/sensor/snmp.py homeassistant/components/sensor/sonarr.py homeassistant/components/sensor/speedtest.py diff --git a/homeassistant/components/sensor/sma.py b/homeassistant/components/sensor/sma.py new file mode 100644 index 00000000000..fc074a8defe --- /dev/null +++ b/homeassistant/components/sensor/sma.py @@ -0,0 +1,190 @@ +"""SMA Solar Webconnect interface. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/sensor.sma/ +""" +import asyncio +import logging +from datetime import timedelta + +import voluptuous as vol + +from homeassistant.components.sensor import PLATFORM_SCHEMA +from homeassistant.const import ( + EVENT_HOMEASSISTANT_STOP, CONF_HOST, CONF_PASSWORD, CONF_SCAN_INTERVAL) +from homeassistant.helpers.event import async_track_time_interval +from homeassistant.helpers.aiohttp_client import async_get_clientsession +import homeassistant.helpers.config_validation as cv +from homeassistant.helpers.entity import Entity + +REQUIREMENTS = ['pysma==0.1.3'] + +_LOGGER = logging.getLogger(__name__) + +CONF_GROUP = 'group' +CONF_SENSORS = 'sensors' +CONF_CUSTOM = 'custom' + +GROUP_INSTALLER = 'installer' +GROUP_USER = 'user' +GROUPS = [GROUP_USER, GROUP_INSTALLER] +SENSOR_OPTIONS = ['current_consumption', 'current_power', 'total_consumption', + 'total_yield'] + + +def _check_sensor_schema(conf): + """Check sensors and attributes are valid.""" + valid = list(conf[CONF_CUSTOM].keys()) + valid.extend(SENSOR_OPTIONS) + for sensor, attrs in conf[CONF_SENSORS].items(): + if sensor not in valid: + raise vol.Invalid("{} does not exist".format(sensor)) + for attr in attrs: + if attr in valid: + continue + raise vol.Invalid("{} does not exist [{}]".format(attr, sensor)) + return conf + + +PLATFORM_SCHEMA = vol.All(PLATFORM_SCHEMA.extend({ + vol.Required(CONF_HOST): str, + vol.Required(CONF_PASSWORD): str, + vol.Optional(CONF_GROUP, default=GROUPS[0]): vol.In(GROUPS), + vol.Required(CONF_SENSORS): vol.Schema({cv.slug: cv.ensure_list}), + vol.Optional(CONF_CUSTOM, default={}): vol.Schema({ + cv.slug: { + vol.Required('key'): vol.All(str, vol.Length(min=13, max=13)), + vol.Required('unit'): str + }}) +}, extra=vol.PREVENT_EXTRA), _check_sensor_schema) + + +def async_setup_platform(hass, config, add_devices, discovery_info=None): + """Set up SMA WebConnect sensor.""" + import pysma + + # Combine sensor_defs from the library and custom config + sensor_defs = dict(zip(SENSOR_OPTIONS, [ + (pysma.KEY_CURRENT_CONSUMPTION_W, 'W'), + (pysma.KEY_CURRENT_POWER_W, 'W'), + (pysma.KEY_TOTAL_CONSUMPTION_KWH, 'kW/h'), + (pysma.KEY_TOTAL_YIELD_KWH, 'kW/h')])) + for name, prop in config[CONF_CUSTOM].items(): + if name in sensor_defs: + _LOGGER.warning("Custom sensor %s replace built-in sensor", name) + sensor_defs[name] = (prop['key'], prop['unit']) + + # Prepare all HASS sensor entities + hass_sensors = [] + used_sensors = [] + for name, attr in config[CONF_SENSORS].items(): + hass_sensors.append(SMAsensor(name, attr, sensor_defs)) + used_sensors.append(name) + used_sensors.extend(attr) + + # Remove sensor_defs not in use + sensor_defs = {name: val for name, val in sensor_defs.items() + if name in used_sensors} + + yield from add_devices(hass_sensors) + + # Init the SMA interface + session = async_get_clientsession(hass) + grp = {GROUP_INSTALLER: pysma.GROUP_INSTALLER, + GROUP_USER: pysma.GROUP_USER}[config[CONF_GROUP]] + sma = pysma.SMA(session, config[CONF_HOST], config[CONF_PASSWORD], + group=grp) + + # Ensure we logout on shutdown + @asyncio.coroutine + def async_close_session(event): + """Close the session.""" + yield from sma.close_session() + + hass.bus.async_listen(EVENT_HOMEASSISTANT_STOP, async_close_session) + + # Read SMA values periodically & update sensors + names_to_query = list(sensor_defs.keys()) + keys_to_query = [sensor_defs[name][0] for name in names_to_query] + + backoff = 0 + + @asyncio.coroutine + def async_sma(event): + """Update all the SMA sensors.""" + nonlocal backoff + if backoff > 1: + backoff -= 1 + return + + values = yield from sma.read(keys_to_query) + if values is None: + backoff = 3 + return + res = dict(zip(names_to_query, values)) + _LOGGER.debug("Update sensors %s %s %s", keys_to_query, values, res) + tasks = [] + for sensor in hass_sensors: + task = sensor.async_update_values(res) + if task: + tasks.append(task) + if tasks: + yield from asyncio.wait(tasks, loop=hass.loop) + + interval = config.get(CONF_SCAN_INTERVAL) or timedelta(seconds=5) + async_track_time_interval(hass, async_sma, interval) + + +class SMAsensor(Entity): + """Representation of a Bitcoin sensor.""" + + def __init__(self, sensor_name, attr, sensor_defs): + """Initialize the sensor.""" + self._name = sensor_name + self._key, self._unit_of_measurement = sensor_defs[sensor_name] + self._state = None + self._sensor_defs = sensor_defs + self._attr = {att: "" for att in attr} + + @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 unit_of_measurement(self): + """Return the unit the value is expressed in.""" + return self._unit_of_measurement + + @property + def device_state_attributes(self): + """Return the state attributes of the sensor.""" + return self._attr + + @property + def poll(self): + """SMA sensors are updated & don't poll.""" + return False + + def async_update_values(self, key_values): + """Update this sensor using the data.""" + update = False + + for key, val in self._attr.items(): + if val.partition(' ')[0] != key_values[key]: + update = True + self._attr[key] = '{} {}'.format(key_values[key], + self._sensor_defs[key][1]) + + new_state = key_values[self._name] + if new_state != self._state: + update = True + self._state = new_state + + return self.async_update_ha_state() if update else None \ + # pylint: disable=protected-access diff --git a/requirements_all.txt b/requirements_all.txt index 69133893979..6a3818a60c3 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -465,6 +465,9 @@ pyqwikswitch==0.4 # homeassistant.components.switch.acer_projector pyserial==3.1.1 +# homeassistant.components.sensor.sma +pysma==0.1.3 + # homeassistant.components.device_tracker.snmp # homeassistant.components.sensor.snmp pysnmp==4.3.2 From 6be19e8997b9900adc37a5114e850b8f30adb2b5 Mon Sep 17 00:00:00 2001 From: Fabian Affolter <mail@fabian-affolter.ch> Date: Mon, 9 Jan 2017 21:50:38 +0100 Subject: [PATCH 130/189] Update pytz to 2016.10 (#5247) --- requirements_all.txt | 2 +- setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/requirements_all.txt b/requirements_all.txt index 6a3818a60c3..6a59fffae2f 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -1,7 +1,7 @@ # Home Assistant core requests>=2,<3 pyyaml>=3.11,<4 -pytz>=2016.7 +pytz>=2016.10 pip>=7.0.0 jinja2>=2.8 voluptuous==0.9.2 diff --git a/setup.py b/setup.py index 4dc8ba9f75f..a62dbed80e8 100755 --- a/setup.py +++ b/setup.py @@ -17,7 +17,7 @@ PACKAGES = find_packages(exclude=['tests', 'tests.*']) REQUIRES = [ 'requests>=2,<3', 'pyyaml>=3.11,<4', - 'pytz>=2016.7', + 'pytz>=2016.10', 'pip>=7.0.0', 'jinja2>=2.8', 'voluptuous==0.9.2', From 1f31dfe5d341d6cda59344110bcf61b2ffc0d684 Mon Sep 17 00:00:00 2001 From: Johann Kellerman <kellerza@gmail.com> Date: Mon, 9 Jan 2017 22:53:30 +0200 Subject: [PATCH 131/189] [recorder] Include & Exclude domain fix & unit tests (#5213) * Tests & domain fix * incl/excl combined --- homeassistant/components/recorder/__init__.py | 34 ++++--- tests/components/recorder/test_init.py | 89 +++++++++++++++++++ 2 files changed, 110 insertions(+), 13 deletions(-) diff --git a/homeassistant/components/recorder/__init__.py b/homeassistant/components/recorder/__init__.py index 41a7991c32f..4f02fe2873d 100644 --- a/homeassistant/components/recorder/__init__.py +++ b/homeassistant/components/recorder/__init__.py @@ -16,9 +16,9 @@ from typing import Any, Union, Optional, List, Dict import voluptuous as vol -from homeassistant.core import HomeAssistant, callback +from homeassistant.core import HomeAssistant, callback, split_entity_id from homeassistant.const import ( - ATTR_ENTITY_ID, ATTR_DOMAIN, CONF_ENTITIES, CONF_EXCLUDE, CONF_DOMAINS, + ATTR_ENTITY_ID, CONF_ENTITIES, CONF_EXCLUDE, CONF_DOMAINS, CONF_INCLUDE, EVENT_HOMEASSISTANT_START, EVENT_HOMEASSISTANT_STOP, EVENT_STATE_CHANGED, EVENT_TIME_CHANGED, MATCH_ALL) import homeassistant.helpers.config_validation as cv @@ -181,8 +181,8 @@ class Recorder(threading.Thread): self.engine = None # type: Any self._run = None # type: Any - self.include = include.get(CONF_ENTITIES, []) + \ - include.get(CONF_DOMAINS, []) + self.include_e = include.get(CONF_ENTITIES, []) + self.include_d = include.get(CONF_DOMAINS, []) self.exclude = exclude.get(CONF_ENTITIES, []) + \ exclude.get(CONF_DOMAINS, []) @@ -230,17 +230,25 @@ class Recorder(threading.Thread): self.queue.task_done() continue - entity_id = event.data.get(ATTR_ENTITY_ID) - domain = event.data.get(ATTR_DOMAIN) + if ATTR_ENTITY_ID in event.data: + entity_id = event.data[ATTR_ENTITY_ID] + domain = split_entity_id(entity_id)[0] - if entity_id in self.exclude or domain in self.exclude: - self.queue.task_done() - continue + # Exclude entities OR + # Exclude domains, but include specific entities + if (entity_id in self.exclude) or \ + (domain in self.exclude and + entity_id not in self.include_e): + self.queue.task_done() + continue - if (self.include and entity_id not in self.include and - domain not in self.include): - self.queue.task_done() - continue + # Included domains only (excluded entities above) OR + # Include entities only, but only if no excludes + if (self.include_d and domain not in self.include_d) or \ + (self.include_e and entity_id not in self.include_e + and not self.exclude): + self.queue.task_done() + continue dbevent = Events.from_event(event) self._commit(dbevent) diff --git a/tests/components/recorder/test_init.py b/tests/components/recorder/test_init.py index 03e782841a2..e8a73e347ff 100644 --- a/tests/components/recorder/test_init.py +++ b/tests/components/recorder/test_init.py @@ -4,6 +4,7 @@ import json from datetime import datetime, timedelta import unittest +import pytest from homeassistant.core import callback from homeassistant.const import MATCH_ALL from homeassistant.components import recorder @@ -188,3 +189,91 @@ class TestRecorder(unittest.TestCase): # we should have all of our states still self.assertEqual(states.count(), 5) self.assertEqual(events.count(), 5) + + +@pytest.fixture +def hass_recorder(): + """HASS fixture with in-memory recorder.""" + hass = get_test_home_assistant() + + def setup_recorder(config): + """Setup with params.""" + db_uri = 'sqlite://' # In memory DB + conf = {recorder.CONF_DB_URL: db_uri} + conf.update(config) + assert setup_component(hass, recorder.DOMAIN, {recorder.DOMAIN: conf}) + hass.start() + hass.block_till_done() + recorder._verify_instance() + recorder._INSTANCE.block_till_done() + return hass + + yield setup_recorder + hass.stop() + + +def _add_entities(hass, entity_ids): + """Add entities.""" + attributes = {'test_attr': 5, 'test_attr_10': 'nice'} + for idx, entity_id in enumerate(entity_ids): + hass.states.set(entity_id, 'state{}'.format(idx), attributes) + hass.block_till_done() + recorder._INSTANCE.block_till_done() + db_states = recorder.query('States') + states = recorder.execute(db_states) + assert db_states[0].event_id is not None + return states + + +# pylint: disable=redefined-outer-name,invalid-name +def test_saving_state_include_domains(hass_recorder): + """Test saving and restoring a state.""" + hass = hass_recorder({'include': {'domains': 'test2'}}) + states = _add_entities(hass, ['test.recorder', 'test2.recorder']) + assert len(states) == 1 + assert hass.states.get('test2.recorder') == states[0] + + +def test_saving_state_incl_entities(hass_recorder): + """Test saving and restoring a state.""" + hass = hass_recorder({'include': {'entities': 'test2.recorder'}}) + states = _add_entities(hass, ['test.recorder', 'test2.recorder']) + assert len(states) == 1 + assert hass.states.get('test2.recorder') == states[0] + + +def test_saving_state_exclude_domains(hass_recorder): + """Test saving and restoring a state.""" + hass = hass_recorder({'exclude': {'domains': 'test'}}) + states = _add_entities(hass, ['test.recorder', 'test2.recorder']) + assert len(states) == 1 + assert hass.states.get('test2.recorder') == states[0] + + +def test_saving_state_exclude_entities(hass_recorder): + """Test saving and restoring a state.""" + hass = hass_recorder({'exclude': {'entities': 'test.recorder'}}) + states = _add_entities(hass, ['test.recorder', 'test2.recorder']) + assert len(states) == 1 + assert hass.states.get('test2.recorder') == states[0] + + +def test_saving_state_exclude_domain_include_entity(hass_recorder): + """Test saving and restoring a state.""" + hass = hass_recorder({ + 'include': {'entities': 'test.recorder'}, + 'exclude': {'domains': 'test'}}) + states = _add_entities(hass, ['test.recorder', 'test2.recorder']) + assert len(states) == 2 + + +def test_saving_state_include_domain_exclude_entity(hass_recorder): + """Test saving and restoring a state.""" + hass = hass_recorder({ + 'exclude': {'entities': 'test.recorder'}, + 'include': {'domains': 'test'}}) + states = _add_entities(hass, ['test.recorder', 'test2.recorder', + 'test.ok']) + assert len(states) == 1 + assert hass.states.get('test.ok') == states[0] + assert hass.states.get('test.ok').state == 'state2' From 0b685a5b1eedcf7e5b858641cab01e9a8496697f Mon Sep 17 00:00:00 2001 From: andrey-git <andrey-git@users.noreply.github.com> Date: Tue, 10 Jan 2017 01:40:52 +0200 Subject: [PATCH 132/189] Expose supported_features of mqtt_json (#5250) * Expose supported_features of mqtt_json * Remove whitespace --- homeassistant/components/light/mqtt_json.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/homeassistant/components/light/mqtt_json.py b/homeassistant/components/light/mqtt_json.py index d26f5490049..ba2c9efcb3d 100755 --- a/homeassistant/components/light/mqtt_json.py +++ b/homeassistant/components/light/mqtt_json.py @@ -172,6 +172,11 @@ class MqttJson(Light): """Return true if we do optimistic updates.""" return self._optimistic + @property + def supported_features(self): + """Flag supported features.""" + return SUPPORT_MQTT_JSON + def turn_on(self, **kwargs): """Turn the device on.""" should_update = False From 7e1629a962f645024b0ed8e93c4c1a236804ccb6 Mon Sep 17 00:00:00 2001 From: Anton Lundin <glance@acc.umu.se> Date: Tue, 10 Jan 2017 10:58:39 +0100 Subject: [PATCH 133/189] Fix async_volume_up / async_volume_down (#5249) async_volume_up / async_volume_down should be async versions of volume_up / volume_down, not a async version of the default variants of volume_up / volume_down. The previous code always called into the mediaplayers set_volume_level, and never into volume_up / volume_down. Signed-off-by: Anton Lundin <glance@acc.umu.se> --- homeassistant/components/media_player/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/media_player/__init__.py b/homeassistant/components/media_player/__init__.py index f5948e1eecd..1be94976d49 100644 --- a/homeassistant/components/media_player/__init__.py +++ b/homeassistant/components/media_player/__init__.py @@ -758,7 +758,7 @@ class MediaPlayerDevice(Entity): This method must be run in the event loop and returns a coroutine. """ - return self.async_set_volume_level(min(1, self.volume_level + .1)) + return self.hass.loop.run_in_executor(None, self.volume_up) def volume_down(self): """Turn volume down for media player.""" @@ -770,7 +770,7 @@ class MediaPlayerDevice(Entity): This method must be run in the event loop and returns a coroutine. """ - return self.async_set_volume_level(max(0, self.volume_level - .1)) + return self.hass.loop.run_in_executor(None, self.volume_down) def media_play_pause(self): """Play or pause the media player.""" From 6845a0974d7708c97ef09474cc8277e5c5362868 Mon Sep 17 00:00:00 2001 From: sander76 <s.teunissen@gmail.com> Date: Tue, 10 Jan 2017 13:21:15 +0100 Subject: [PATCH 134/189] adding a default icon "blind" to a PowerView blinds scene. (#5210) * adding a default icon "blind" to a PowerView blinds scene. * Adding icon property to define blind icon. Removed it from the state attributes dict. * fixing lint error --- homeassistant/components/scene/hunterdouglas_powerview.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/homeassistant/components/scene/hunterdouglas_powerview.py b/homeassistant/components/scene/hunterdouglas_powerview.py index 0ae44d878f8..c831876bf11 100644 --- a/homeassistant/components/scene/hunterdouglas_powerview.py +++ b/homeassistant/components/scene/hunterdouglas_powerview.py @@ -70,6 +70,11 @@ class PowerViewScene(Scene): """Return the state attributes.""" return {"roomName": self.scene_data["roomName"]} + @property + def icon(self): + """Icon to use in the frontend.""" + return 'mdi:blinds' + def activate(self): """Activate the scene. Tries to get entities into requested state.""" self.pv_instance.activate_scene(self.scene_data["id"]) From f75e13f55ead56a20a6a24cf073ae223346966c9 Mon Sep 17 00:00:00 2001 From: Valentin Alexeev <valentin.alekseev@gmail.com> Date: Tue, 10 Jan 2017 17:01:04 +0200 Subject: [PATCH 135/189] Use SHA hash to make token harder to guess (#5258) * Use SHA hash to make token harder to guess Use hashlib SHA256 to encode object id instead of using it directly. * Cache access token Instead of generating a token on the fly cache it in the constructor. * Fix lint --- homeassistant/components/camera/__init__.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/camera/__init__.py b/homeassistant/components/camera/__init__.py index 5b2aa463607..5ba68dea058 100644 --- a/homeassistant/components/camera/__init__.py +++ b/homeassistant/components/camera/__init__.py @@ -8,6 +8,7 @@ https://home-assistant.io/components/camera/ import asyncio from datetime import timedelta import logging +import hashlib from aiohttp import web @@ -47,11 +48,13 @@ class Camera(Entity): def __init__(self): """Initialize a camera.""" self.is_streaming = False + self._access_token = hashlib.sha256( + str.encode(str(id(self)))).hexdigest() @property def access_token(self): """Access token for this camera.""" - return str(id(self)) + return self._access_token @property def should_poll(self): From 6b00f7ff286e56f9d685c451157c75cd2fe8a08f Mon Sep 17 00:00:00 2001 From: Pascal Vizeli <pascal.vizeli@syshack.ch> Date: Tue, 10 Jan 2017 17:19:51 +0100 Subject: [PATCH 136/189] Bugfix async device_tracker see callback (#5259) --- homeassistant/components/device_tracker/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/device_tracker/__init__.py b/homeassistant/components/device_tracker/__init__.py index f08a9badb6f..21e7c7b0da1 100644 --- a/homeassistant/components/device_tracker/__init__.py +++ b/homeassistant/components/device_tracker/__init__.py @@ -158,7 +158,7 @@ def async_setup(hass: HomeAssistantType, config: ConfigType): None, platform.get_scanner, hass, {DOMAIN: p_config}) elif hasattr(platform, 'async_setup_scanner'): setup = yield from platform.async_setup_scanner( - hass, p_config, tracker.see) + hass, p_config, tracker.async_see) elif hasattr(platform, 'setup_scanner'): setup = yield from hass.loop.run_in_executor( None, platform.setup_scanner, hass, p_config, tracker.see) From 3a4b4380a1b3ad09b8975d26ef69aef180ab5e55 Mon Sep 17 00:00:00 2001 From: joopert <joopert@users.noreply.github.com> Date: Tue, 10 Jan 2017 22:32:43 +0100 Subject: [PATCH 137/189] Add support for NAD receivers (#5191) * Add support for NAD receivers * remove self.update() in various methods * remove setting attributes in various methods * Change import to hass style --- .coveragerc | 1 + homeassistant/components/media_player/nad.py | 182 +++++++++++++++++++ requirements_all.txt | 3 + 3 files changed, 186 insertions(+) create mode 100644 homeassistant/components/media_player/nad.py diff --git a/.coveragerc b/.coveragerc index 328746735ea..8b308b097a7 100644 --- a/.coveragerc +++ b/.coveragerc @@ -210,6 +210,7 @@ omit = homeassistant/components/media_player/lg_netcast.py homeassistant/components/media_player/mpchc.py homeassistant/components/media_player/mpd.py + homeassistant/components/media_player/nad.py homeassistant/components/media_player/onkyo.py homeassistant/components/media_player/panasonic_viera.py homeassistant/components/media_player/pandora.py diff --git a/homeassistant/components/media_player/nad.py b/homeassistant/components/media_player/nad.py new file mode 100644 index 00000000000..0b8efda0e44 --- /dev/null +++ b/homeassistant/components/media_player/nad.py @@ -0,0 +1,182 @@ +""" +Support for interfacing with NAD receivers through RS-232. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/media_player.nad/ +""" +import logging + +import voluptuous as vol + +from homeassistant.components.media_player import ( + SUPPORT_VOLUME_SET, + SUPPORT_VOLUME_MUTE, SUPPORT_TURN_ON, SUPPORT_TURN_OFF, + SUPPORT_VOLUME_STEP, SUPPORT_SELECT_SOURCE, MediaPlayerDevice, + PLATFORM_SCHEMA) +from homeassistant.const import ( + CONF_NAME, STATE_OFF, STATE_ON) +import homeassistant.helpers.config_validation as cv + +REQUIREMENTS = ['https://github.com/joopert/nad_receiver/archive/' + '0.0.2.zip#nad_receiver==0.0.2'] + +_LOGGER = logging.getLogger(__name__) + +DEFAULT_NAME = 'NAD Receiver' +DEFAULT_MIN_VOLUME = -92 +DEFAULT_MAX_VOLUME = -20 + +SUPPORT_NAD = SUPPORT_VOLUME_SET | SUPPORT_VOLUME_MUTE | \ + SUPPORT_TURN_ON | SUPPORT_TURN_OFF | SUPPORT_VOLUME_STEP | \ + SUPPORT_SELECT_SOURCE + +CONF_SERIAL_PORT = 'serial_port' +CONF_MIN_VOLUME = 'min_volume' +CONF_MAX_VOLUME = 'max_volume' +CONF_SOURCE_DICT = 'sources' + +SOURCE_DICT_SCHEMA = vol.Schema({ + vol.Range(min=1, max=10): cv.string +}) + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required(CONF_SERIAL_PORT): cv.string, + vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, + vol.Optional(CONF_MIN_VOLUME, default=DEFAULT_MIN_VOLUME): int, + vol.Optional(CONF_MAX_VOLUME, default=DEFAULT_MAX_VOLUME): int, + vol.Optional(CONF_SOURCE_DICT, default={}): SOURCE_DICT_SCHEMA, +}) + + +def setup_platform(hass, config, add_devices, discovery_info=None): + """Setup the NAD platform.""" + from nad_receiver import NADReceiver + add_devices([NAD( + config.get(CONF_NAME), + NADReceiver(config.get(CONF_SERIAL_PORT)), + config.get(CONF_MIN_VOLUME), + config.get(CONF_MAX_VOLUME), + config.get(CONF_SOURCE_DICT) + )]) + + +class NAD(MediaPlayerDevice): + """Representation of a NAD Receiver.""" + + def __init__(self, name, nad_receiver, min_volume, max_volume, + source_dict): + """Initialize the NAD Receiver device.""" + self._name = name + self._nad_receiver = nad_receiver + self._min_volume = min_volume + self._max_volume = max_volume + self._source_dict = source_dict + self._reverse_mapping = {value: key for key, value in + self._source_dict.items()} + + self._volume = None + self._state = None + self._mute = None + self._source = None + + self.update() + + def calc_volume(self, decibel): + """ + Calculate the volume given the decibel. + + Return the volume (0..1). + """ + return abs(self._min_volume - decibel) / abs( + self._min_volume - self._max_volume) + + def calc_db(self, volume): + """ + Calculate the decibel given the volume. + + Return the dB. + """ + return self._min_volume + round( + abs(self._min_volume - self._max_volume) * volume) + + @property + def name(self): + """Return the name of the device.""" + return self._name + + @property + def state(self): + """Return the state of the device.""" + return self._state + + def update(self): + """Retrieve latest state.""" + if self._nad_receiver.main_power('?') == 'Off': + self._state = STATE_OFF + else: + self._state = STATE_ON + + if self._nad_receiver.main_mute('?') == 'Off': + self._mute = False + else: + self._mute = True + + self._volume = self.calc_volume(self._nad_receiver.main_volume('?')) + self._source = self._source_dict.get( + self._nad_receiver.main_source('?')) + + @property + def volume_level(self): + """Volume level of the media player (0..1).""" + return self._volume + + @property + def is_volume_muted(self): + """Boolean if volume is currently muted.""" + return self._mute + + @property + def supported_media_commands(self): + """Flag of media commands that are supported.""" + return SUPPORT_NAD + + def turn_off(self): + """Turn the media player off.""" + self._nad_receiver.main_power('=', 'Off') + + def turn_on(self): + """Turn the media player on.""" + self._nad_receiver.main_power('=', 'On') + + def volume_up(self): + """Volume up the media player.""" + self._nad_receiver.main_volume('+') + + def volume_down(self): + """Volume down the media player.""" + self._nad_receiver.main_volume('-') + + def set_volume_level(self, volume): + """Set volume level, range 0..1.""" + self._nad_receiver.main_volume('=', self.calc_db(volume)) + + def select_source(self, source): + """Select input source.""" + self._nad_receiver.main_source('=', self._reverse_mapping.get(source)) + + @property + def source(self): + """Name of the current input source.""" + return self._source + + @property + def source_list(self): + """List of available input sources.""" + return sorted(list(self._reverse_mapping.keys())) + + def mute_volume(self, mute): + """Mute (true) or unmute (false) media player.""" + if mute: + self._nad_receiver.main_mute('=', 'On') + else: + self._nad_receiver.main_mute('=', 'Off') diff --git a/requirements_all.txt b/requirements_all.txt index 6a59fffae2f..d13edd9d56a 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -224,6 +224,9 @@ https://github.com/jabesq/pybotvac/archive/v0.0.1.zip#pybotvac==0.0.1 # homeassistant.components.sensor.sabnzbd https://github.com/jamespcole/home-assistant-nzb-clients/archive/616cad59154092599278661af17e2a9f2cf5e2a9.zip#python-sabnzbd==0.1 +# homeassistant.components.media_player.nad +https://github.com/joopert/nad_receiver/archive/0.0.2.zip#nad_receiver==0.0.2 + # homeassistant.components.media_player.russound_rnet https://github.com/laf/russound/archive/0.1.6.zip#russound==0.1.6 From 34a9fb01ac1fb9568f18677be5faf3d23ab7dc2a Mon Sep 17 00:00:00 2001 From: Marcelo Moreira de Mello <tchello.mello@gmail.com> Date: Wed, 11 Jan 2017 00:45:46 -0500 Subject: [PATCH 138/189] Bump flux_led version and make use of PyPi package (#5267) * Bump flux_led version and make use of PyPi package * Makes script/gen_requirements_all.py happy --- homeassistant/components/light/flux_led.py | 3 +-- requirements_all.txt | 6 +++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/homeassistant/components/light/flux_led.py b/homeassistant/components/light/flux_led.py index 43c5ada9b8d..22dd40b30ef 100644 --- a/homeassistant/components/light/flux_led.py +++ b/homeassistant/components/light/flux_led.py @@ -17,8 +17,7 @@ from homeassistant.components.light import ( PLATFORM_SCHEMA) import homeassistant.helpers.config_validation as cv -REQUIREMENTS = ['https://github.com/Danielhiversen/flux_led/archive/0.11.zip' - '#flux_led==0.11'] +REQUIREMENTS = ['flux_led==0.12'] _LOGGER = logging.getLogger(__name__) diff --git a/requirements_all.txt b/requirements_all.txt index d13edd9d56a..fdd35f6dfe3 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -132,6 +132,9 @@ fitbit==0.2.3 # homeassistant.components.sensor.fixer fixerio==0.1.1 +# homeassistant.components.light.flux_led +flux_led==0.12 + # homeassistant.components.notify.free_mobile freesms==0.1.1 @@ -180,9 +183,6 @@ hikvision==0.4 # homeassistant.components.nest http://github.com/technicalpickles/python-nest/archive/e6c9d56a8df455d4d7746389811f2c1387e8cb33.zip#python-nest==3.0.3 -# homeassistant.components.light.flux_led -https://github.com/Danielhiversen/flux_led/archive/0.11.zip#flux_led==0.11 - # homeassistant.components.switch.tplink https://github.com/GadgetReactor/pyHS100/archive/45fc3548882628bcde3e3d365db341849457bef2.zip#pyHS100==0.2.2 From 467cb18625da9323f743ed62a342e446a79fb05b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20H=C3=B8yer=20Iversen?= <mail@dahoiv.net> Date: Wed, 11 Jan 2017 16:23:05 +0100 Subject: [PATCH 139/189] Add last triggered to script (#5261) * Add last triggered to script * Add tests for script last_triggered --- homeassistant/components/script.py | 2 ++ homeassistant/helpers/script.py | 2 ++ tests/helpers/test_script.py | 19 +++++++++++++++++++ 3 files changed, 23 insertions(+) diff --git a/homeassistant/components/script.py b/homeassistant/components/script.py index df46fb5a03d..05cbc5d0a80 100644 --- a/homeassistant/components/script.py +++ b/homeassistant/components/script.py @@ -31,6 +31,7 @@ CONF_SEQUENCE = "sequence" ATTR_VARIABLES = 'variables' ATTR_LAST_ACTION = 'last_action' +ATTR_LAST_TRIGGERED = 'last_triggered' ATTR_CAN_CANCEL = 'can_cancel' _LOGGER = logging.getLogger(__name__) @@ -155,6 +156,7 @@ class ScriptEntity(ToggleEntity): def state_attributes(self): """Return the state attributes.""" attrs = {} + attrs[ATTR_LAST_TRIGGERED] = self.script.last_triggered if self.script.can_cancel: attrs[ATTR_CAN_CANCEL] = self.script.can_cancel if self.script.last_action: diff --git a/homeassistant/helpers/script.py b/homeassistant/helpers/script.py index 4d6a2b01df7..46703d86450 100644 --- a/homeassistant/helpers/script.py +++ b/homeassistant/helpers/script.py @@ -46,6 +46,7 @@ class Script(): self._change_listener = change_listener self._cur = -1 self.last_action = None + self.last_triggered = None self.can_cancel = any(CONF_DELAY in action for action in self.sequence) self._async_unsub_delay_listener = None @@ -68,6 +69,7 @@ class Script(): This method is a coroutine. """ + self.last_triggered = date_util.utcnow() if self._cur == -1: self._log('Running script') self._cur = 0 diff --git a/tests/helpers/test_script.py b/tests/helpers/test_script.py index 8787ff7b514..6eee484097b 100644 --- a/tests/helpers/test_script.py +++ b/tests/helpers/test_script.py @@ -353,3 +353,22 @@ class TestScriptHelper(unittest.TestCase): script_obj.run() self.hass.block_till_done() assert len(script_obj._config_cache) == 2 + + def test_last_triggered(self): + """Test the last_triggered.""" + event = 'test_event' + + script_obj = script.Script(self.hass, cv.SCRIPT_SCHEMA([ + {'event': event}, + {'delay': {'seconds': 5}}, + {'event': event}])) + + assert script_obj.last_triggered is None + + time = dt_util.utcnow() + with mock.patch('homeassistant.helpers.script.date_util.utcnow', + return_value=time): + script_obj.run() + self.hass.block_till_done() + + assert script_obj.last_triggered == time From 3f3a3bcc8ac7eec2e5e9eba9981c74db3842f22d Mon Sep 17 00:00:00 2001 From: Pascal Vizeli <pascal.vizeli@syshack.ch> Date: Wed, 11 Jan 2017 16:31:16 +0100 Subject: [PATCH 140/189] Cleanup language support on TTS (#5255) * Cleanup language support on TTS * change to default_language & address comments * Cleanup not needed code / comment from paulus --- homeassistant/components/tts/__init__.py | 32 +++++++---- homeassistant/components/tts/demo.py | 36 ++++++++++--- homeassistant/components/tts/google.py | 22 +++++--- homeassistant/components/tts/picotts.py | 22 ++++++-- homeassistant/components/tts/voicerss.py | 35 +++++++----- tests/components/tts/test_init.py | 68 ++++++++++++++++++------ 6 files changed, 156 insertions(+), 59 deletions(-) diff --git a/homeassistant/components/tts/__init__.py b/homeassistant/components/tts/__init__.py index 01d0a6a15e3..0f731a51485 100644 --- a/homeassistant/components/tts/__init__.py +++ b/homeassistant/components/tts/__init__.py @@ -5,7 +5,6 @@ For more details about this component, please refer to the documentation at https://home-assistant.io/components/tts/ """ import asyncio -import functools import hashlib import logging import mimetypes @@ -247,8 +246,6 @@ class SpeechManager(object): def async_register_engine(self, engine, provider, config): """Register a TTS provider.""" provider.hass = self.hass - if CONF_LANG in config: - provider.language = config.get(CONF_LANG) self.providers[engine] = provider @asyncio.coroutine @@ -257,9 +254,16 @@ class SpeechManager(object): This method is a coroutine. """ + provider = self.providers[engine] + + 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)) + msg_hash = hashlib.sha1(bytes(message, 'utf-8')).hexdigest() - language_key = language or self.providers[engine].language - key = KEY_PATTERN.format(msg_hash, language_key, engine).lower() + key = KEY_PATTERN.format(msg_hash, language, engine).lower() use_cache = cache if cache is not None else self.use_cache # is speech allready in memory @@ -387,13 +391,22 @@ class Provider(object): """Represent a single provider.""" hass = None - language = None - def get_tts_audio(self, message, language=None): + @property + def default_language(self): + """Default language.""" + return None + + @property + def supported_languages(self): + """List of supported languages.""" + return None + + def get_tts_audio(self, message, language): """Load tts audio file from provider.""" raise NotImplementedError() - def async_get_tts_audio(self, message, language=None): + def async_get_tts_audio(self, message, language): """Load tts audio file from provider. Return a tuple of file extension and data as bytes. @@ -401,8 +414,7 @@ class Provider(object): This method must be run in the event loop and returns a coroutine. """ return self.hass.loop.run_in_executor( - None, - functools.partial(self.get_tts_audio, message, language=language)) + None, self.get_tts_audio, message, language) class TextToSpeechView(HomeAssistantView): diff --git a/homeassistant/components/tts/demo.py b/homeassistant/components/tts/demo.py index 68d49d58f78..88afa0643f2 100644 --- a/homeassistant/components/tts/demo.py +++ b/homeassistant/components/tts/demo.py @@ -6,28 +6,50 @@ https://home-assistant.io/components/demo/ """ import os -from homeassistant.components.tts import Provider +import voluptuous as vol + +from homeassistant.components.tts import Provider, PLATFORM_SCHEMA, CONF_LANG + +SUPPORT_LANGUAGES = [ + 'en', 'de' +] + +DEFAULT_LANG = 'en' + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Optional(CONF_LANG, default=DEFAULT_LANG): vol.In(SUPPORT_LANGUAGES), +}) def get_engine(hass, config): """Setup Demo speech component.""" - return DemoProvider() + return DemoProvider(config[CONF_LANG]) class DemoProvider(Provider): """Demo speech api provider.""" - def __init__(self): - """Initialize demo provider for TTS.""" - self.language = 'en' + def __init__(self, lang): + """Initialize demo provider.""" + self._lang = lang - def get_tts_audio(self, message, language=None): + @property + def default_language(self): + """Default language.""" + return self._lang + + @property + def supported_languages(self): + """List of supported languages.""" + return SUPPORT_LANGUAGES + + def get_tts_audio(self, message, language): """Load TTS from demo.""" filename = os.path.join(os.path.dirname(__file__), "demo.mp3") try: with open(filename, 'rb') as voice: data = voice.read() except OSError: - return + return (None, None) return ("mp3", data) diff --git a/homeassistant/components/tts/google.py b/homeassistant/components/tts/google.py index e1bb4e5e4e5..dc03013d4f1 100644 --- a/homeassistant/components/tts/google.py +++ b/homeassistant/components/tts/google.py @@ -42,15 +42,16 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @asyncio.coroutine def async_get_engine(hass, config): """Setup Google speech component.""" - return GoogleProvider(hass) + return GoogleProvider(hass, config[CONF_LANG]) class GoogleProvider(Provider): """Google speech api provider.""" - def __init__(self, hass): + def __init__(self, hass, lang): """Init Google TTS service.""" self.hass = hass + self._lang = lang self.headers = { 'Referer': "http://translate.google.com/", 'User-Agent': ("Mozilla/5.0 (Windows NT 10.0; WOW64) " @@ -58,8 +59,18 @@ class GoogleProvider(Provider): "Chrome/47.0.2526.106 Safari/537.36") } + @property + def default_language(self): + """Default language.""" + return self._lang + + @property + def supported_languages(self): + """List of supported languages.""" + return SUPPORT_LANGUAGES + @asyncio.coroutine - def async_get_tts_audio(self, message, language=None): + def async_get_tts_audio(self, message, language): """Load TTS from google.""" from gtts_token import gtts_token @@ -67,11 +78,6 @@ class GoogleProvider(Provider): websession = async_get_clientsession(self.hass) message_parts = self._split_message_to_parts(message) - # If language is not specified or is not supported - use the language - # from the config. - if language not in SUPPORT_LANGUAGES: - language = self.language - data = b'' for idx, part in enumerate(message_parts): part_token = yield from self.hass.loop.run_in_executor( diff --git a/homeassistant/components/tts/picotts.py b/homeassistant/components/tts/picotts.py index 366973813a2..28db88c03b0 100644 --- a/homeassistant/components/tts/picotts.py +++ b/homeassistant/components/tts/picotts.py @@ -29,18 +29,31 @@ def get_engine(hass, config): if shutil.which("pico2wave") is None: _LOGGER.error("'pico2wave' was not found") return False - return PicoProvider() + return PicoProvider(config[CONF_LANG]) class PicoProvider(Provider): """pico speech api provider.""" - def get_tts_audio(self, message, language=None): + def __init__(self, lang): + """Initialize pico provider.""" + self._lang = lang + + @property + def default_language(self): + """Default language.""" + return self._lang + + @property + def supported_languages(self): + """List of supported languages.""" + return SUPPORT_LANGUAGES + + def get_tts_audio(self, message, language): """Load TTS using pico2wave.""" - if language not in SUPPORT_LANGUAGES: - language = self.language with tempfile.NamedTemporaryFile(suffix='.wav', delete=False) as tmpf: fname = tmpf.name + cmd = ['pico2wave', '--wave', fname, '-l', language, message] subprocess.call(cmd) data = None @@ -52,6 +65,7 @@ class PicoProvider(Provider): return (None, None) finally: os.remove(fname) + if data: return ("wav", data) return (None, None) diff --git a/homeassistant/components/tts/voicerss.py b/homeassistant/components/tts/voicerss.py index 688ae7f6e25..2dda27b0c06 100644 --- a/homeassistant/components/tts/voicerss.py +++ b/homeassistant/components/tts/voicerss.py @@ -93,27 +93,34 @@ class VoiceRSSProvider(Provider): def __init__(self, hass, conf): """Init VoiceRSS TTS service.""" self.hass = hass - self.extension = conf.get(CONF_CODEC) + self._extension = conf[CONF_CODEC] + self._lang = conf[CONF_LANG] - self.form_data = { - 'key': conf.get(CONF_API_KEY), - 'hl': conf.get(CONF_LANG), - 'c': (conf.get(CONF_CODEC)).upper(), - 'f': conf.get(CONF_FORMAT), + self._form_data = { + 'key': conf[CONF_API_KEY], + 'hl': conf[CONF_LANG], + 'c': (conf[CONF_CODEC]).upper(), + 'f': conf[CONF_FORMAT], } + @property + def default_language(self): + """Default language.""" + return self._lang + + @property + def supported_languages(self): + """List of supported languages.""" + return SUPPORT_LANGUAGES + @asyncio.coroutine - def async_get_tts_audio(self, message, language=None): + def async_get_tts_audio(self, message, language): """Load TTS from voicerss.""" websession = async_get_clientsession(self.hass) - form_data = self.form_data.copy() + form_data = self._form_data.copy() form_data['src'] = message - - # If language is specified and supported - use it instead of the - # language in the config. - if language in SUPPORT_LANGUAGES: - form_data['hl'] = language + form_data['hl'] = language request = None try: @@ -141,4 +148,4 @@ class VoiceRSSProvider(Provider): if request is not None: yield from request.release() - return (self.extension, data) + return (self._extension, data) diff --git a/tests/components/tts/test_init.py b/tests/components/tts/test_init.py index 55381395313..715b98c4740 100644 --- a/tests/components/tts/test_init.py +++ b/tests/components/tts/test_init.py @@ -22,7 +22,7 @@ class TestTTS(object): def setup_method(self): """Setup things to be run when tests are started.""" self.hass = get_test_home_assistant() - self.demo_provider = DemoProvider() + self.demo_provider = DemoProvider('en') self.default_tts_cache = self.hass.config.path(tts.DEFAULT_CACHE_DIR) def teardown_method(self): @@ -95,7 +95,7 @@ class TestTTS(object): config = { tts.DOMAIN: { 'platform': 'demo', - 'language': 'lang' + 'language': 'de' } } @@ -111,11 +111,23 @@ class TestTTS(object): assert calls[0].data[ATTR_MEDIA_CONTENT_TYPE] == MEDIA_TYPE_MUSIC assert calls[0].data[ATTR_MEDIA_CONTENT_ID].find( "/api/tts_proxy/265944c108cbb00b2a621be5930513e03a0bb2cd" - "_lang_demo.mp3") \ + "_de_demo.mp3") \ != -1 assert os.path.isfile(os.path.join( self.default_tts_cache, - "265944c108cbb00b2a621be5930513e03a0bb2cd_lang_demo.mp3")) + "265944c108cbb00b2a621be5930513e03a0bb2cd_de_demo.mp3")) + + def test_setup_component_and_test_service_with_wrong_conf_language(self): + """Setup the demo platform and call service with wrong config.""" + config = { + tts.DOMAIN: { + 'platform': 'demo', + 'language': 'ru' + } + } + + with assert_setup_component(0, tts.DOMAIN): + setup_component(self.hass, tts.DOMAIN, config) def test_setup_component_and_test_service_with_service_language(self): """Setup the demo platform and call service.""" @@ -127,6 +139,35 @@ class TestTTS(object): } } + with assert_setup_component(1, tts.DOMAIN): + setup_component(self.hass, tts.DOMAIN, config) + + self.hass.services.call(tts.DOMAIN, 'demo_say', { + tts.ATTR_MESSAGE: "I person is on front of your door.", + tts.ATTR_LANGUAGE: "de", + }) + self.hass.block_till_done() + + assert len(calls) == 1 + assert calls[0].data[ATTR_MEDIA_CONTENT_TYPE] == MEDIA_TYPE_MUSIC + assert calls[0].data[ATTR_MEDIA_CONTENT_ID].find( + "/api/tts_proxy/265944c108cbb00b2a621be5930513e03a0bb2cd" + "_de_demo.mp3") \ + != -1 + assert os.path.isfile(os.path.join( + self.default_tts_cache, + "265944c108cbb00b2a621be5930513e03a0bb2cd_de_demo.mp3")) + + def test_setup_component_test_service_with_wrong_service_language(self): + """Setup the demo platform and call service.""" + calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) + + config = { + tts.DOMAIN: { + 'platform': 'demo', + } + } + with assert_setup_component(1, tts.DOMAIN): setup_component(self.hass, tts.DOMAIN, config) @@ -136,13 +177,8 @@ class TestTTS(object): }) self.hass.block_till_done() - assert len(calls) == 1 - assert calls[0].data[ATTR_MEDIA_CONTENT_TYPE] == MEDIA_TYPE_MUSIC - assert calls[0].data[ATTR_MEDIA_CONTENT_ID].find( - "/api/tts_proxy/265944c108cbb00b2a621be5930513e03a0bb2cd" - "_lang_demo.mp3") \ - != -1 - assert os.path.isfile(os.path.join( + assert len(calls) == 0 + assert not os.path.isfile(os.path.join( self.default_tts_cache, "265944c108cbb00b2a621be5930513e03a0bb2cd_lang_demo.mp3")) @@ -198,7 +234,7 @@ class TestTTS(object): assert len(calls) == 1 req = requests.get(calls[0].data[ATTR_MEDIA_CONTENT_ID]) - _, demo_data = self.demo_provider.get_tts_audio("bla") + _, demo_data = self.demo_provider.get_tts_audio("bla", 'en') assert req.status_code == 200 assert req.content == demo_data @@ -319,7 +355,7 @@ class TestTTS(object): """Setup demo platform with cache and call service without cache.""" calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) - _, demo_data = self.demo_provider.get_tts_audio("bla") + _, demo_data = self.demo_provider.get_tts_audio("bla", 'en') cache_file = os.path.join( self.default_tts_cache, "265944c108cbb00b2a621be5930513e03a0bb2cd_en_demo.mp3") @@ -339,7 +375,7 @@ class TestTTS(object): setup_component(self.hass, tts.DOMAIN, config) with patch('homeassistant.components.tts.demo.DemoProvider.' - 'get_tts_audio', return_value=None): + 'get_tts_audio', return_value=(None, None)): self.hass.services.call(tts.DOMAIN, 'demo_say', { tts.ATTR_MESSAGE: "I person is on front of your door.", }) @@ -352,7 +388,7 @@ class TestTTS(object): != -1 @patch('homeassistant.components.tts.demo.DemoProvider.get_tts_audio', - return_value=None) + return_value=(None, None)) def test_setup_component_test_with_error_on_get_tts(self, tts_mock): """Setup demo platform with wrong get_tts_audio.""" calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) @@ -375,7 +411,7 @@ class TestTTS(object): def test_setup_component_load_cache_retrieve_without_mem_cache(self): """Setup component and load cache and get without mem cache.""" - _, demo_data = self.demo_provider.get_tts_audio("bla") + _, demo_data = self.demo_provider.get_tts_audio("bla", 'en') cache_file = os.path.join( self.default_tts_cache, "265944c108cbb00b2a621be5930513e03a0bb2cd_en_demo.mp3") From 1cf9ae5a01d663bb9e3d3e38741b2ae818b36f93 Mon Sep 17 00:00:00 2001 From: Andrew Williams <andy@tensixtyone.com> Date: Wed, 11 Jan 2017 16:26:29 +0000 Subject: [PATCH 141/189] Fix TCP sensor to correctly use value_template (#5211) * Fix TCP sensor to correctly use value_template * Fix TCP component tests * Update tcp.py --- homeassistant/components/sensor/tcp.py | 3 +-- tests/components/sensor/test_tcp.py | 7 ++++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/homeassistant/components/sensor/tcp.py b/homeassistant/components/sensor/tcp.py index ab27e1e580f..30ceba776e9 100644 --- a/homeassistant/components/sensor/tcp.py +++ b/homeassistant/components/sensor/tcp.py @@ -16,7 +16,6 @@ from homeassistant.const import ( CONF_UNIT_OF_MEASUREMENT, CONF_VALUE_TEMPLATE) from homeassistant.exceptions import TemplateError from homeassistant.helpers.entity import Entity -from homeassistant.helpers.template import Template import homeassistant.helpers.config_validation as cv _LOGGER = logging.getLogger(__name__) @@ -57,7 +56,7 @@ class TcpSensor(Entity): value_template = config.get(CONF_VALUE_TEMPLATE) if value_template is not None: - value_template = Template(value_template, hass) + value_template.hass = hass self._hass = hass self._config = { diff --git a/tests/components/sensor/test_tcp.py b/tests/components/sensor/test_tcp.py index d12eccccc63..fe6fa44b020 100644 --- a/tests/components/sensor/test_tcp.py +++ b/tests/components/sensor/test_tcp.py @@ -9,6 +9,7 @@ from tests.common import (get_test_home_assistant, assert_setup_component) from homeassistant.bootstrap import setup_component from homeassistant.components.sensor import tcp from homeassistant.helpers.entity import Entity +from homeassistant.helpers.template import Template TEST_CONFIG = { 'sensor': { @@ -19,7 +20,7 @@ TEST_CONFIG = { tcp.CONF_TIMEOUT: tcp.DEFAULT_TIMEOUT + 1, tcp.CONF_PAYLOAD: 'test_payload', tcp.CONF_UNIT_OF_MEASUREMENT: 'test_unit', - tcp.CONF_VALUE_TEMPLATE: 'test_template', + tcp.CONF_VALUE_TEMPLATE: Template('test_template'), tcp.CONF_VALUE_ON: 'test_on', tcp.CONF_BUFFER_SIZE: tcp.DEFAULT_BUFFER_SIZE + 1 }, @@ -252,7 +253,7 @@ class TestTCPSensor(unittest.TestCase): mock_socket = mock_socket().__enter__() mock_socket.recv.return_value = test_value.encode() config = copy(TEST_CONFIG['sensor']) - config[tcp.CONF_VALUE_TEMPLATE] = '{{ value }} {{ 1+1 }}' + config[tcp.CONF_VALUE_TEMPLATE] = Template('{{ value }} {{ 1+1 }}') sensor = tcp.TcpSensor(self.hass, config) assert sensor._state == '%s 2' % test_value @@ -265,6 +266,6 @@ class TestTCPSensor(unittest.TestCase): mock_socket = mock_socket().__enter__() mock_socket.recv.return_value = test_value.encode() config = copy(TEST_CONFIG['sensor']) - config[tcp.CONF_VALUE_TEMPLATE] = "{{ this won't work" + config[tcp.CONF_VALUE_TEMPLATE] = Template("{{ this won't work") sensor = tcp.TcpSensor(self.hass, config) assert sensor.update() is None From e68e29e03ebd43175761d1ae2b4e598d382d2cf4 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen <paulus@paulusschoutsen.nl> Date: Wed, 11 Jan 2017 21:25:02 +0100 Subject: [PATCH 142/189] Upgrade to aiohttp 1.2 (#4964) * Upgrade to aiohttp 1.2 * Clean up emulated_hue tests --- .../components/emulated_hue/hue_api.py | 2 +- homeassistant/components/http/__init__.py | 4 +- homeassistant/components/http/static.py | 65 +- requirements_all.txt | 2 +- setup.py | 2 +- tests/components/emulated_hue/test_hue_api.py | 571 +++++++++--------- 6 files changed, 316 insertions(+), 330 deletions(-) diff --git a/homeassistant/components/emulated_hue/hue_api.py b/homeassistant/components/emulated_hue/hue_api.py index 24060bdfbcb..9b0a2828394 100644 --- a/homeassistant/components/emulated_hue/hue_api.py +++ b/homeassistant/components/emulated_hue/hue_api.py @@ -91,7 +91,7 @@ class HueOneLightStateView(HomeAssistantView): self.config = config @core.callback - def get(self, request, username, entity_id=None): + def get(self, request, username, entity_id): """Process a request to get the state of an individual light.""" hass = request.app['hass'] entity_id = self.config.number_to_entity_id(entity_id) diff --git a/homeassistant/components/http/__init__.py b/homeassistant/components/http/__init__.py index e35b5f31d8f..2bb35dd8f3f 100644 --- a/homeassistant/components/http/__init__.py +++ b/homeassistant/components/http/__init__.py @@ -32,7 +32,7 @@ from .const import ( KEY_USE_X_FORWARDED_FOR, KEY_TRUSTED_NETWORKS, KEY_BANS_ENABLED, KEY_LOGIN_THRESHOLD, KEY_DEVELOPMENT, KEY_AUTHENTICATED) -from .static import FILE_SENDER, GZIP_FILE_SENDER, staticresource_middleware +from .static import FILE_SENDER, CACHING_FILE_SENDER, staticresource_middleware from .util import get_real_ip DOMAIN = 'http' @@ -272,7 +272,7 @@ class HomeAssistantWSGI(object): @asyncio.coroutine def serve_file(request): """Serve file from disk.""" - res = yield from GZIP_FILE_SENDER.send(request, filepath) + res = yield from CACHING_FILE_SENDER.send(request, filepath) return res # aiohttp supports regex matching for variables. Using that as temp diff --git a/homeassistant/components/http/static.py b/homeassistant/components/http/static.py index 0bd68d6136e..6489144ec70 100644 --- a/homeassistant/components/http/static.py +++ b/homeassistant/components/http/static.py @@ -1,69 +1,40 @@ """Static file handling for HTTP component.""" import asyncio -import mimetypes import re from aiohttp import hdrs from aiohttp.file_sender import FileSender from aiohttp.web_urldispatcher import StaticResource -from aiohttp.web_exceptions import HTTPNotModified - from .const import KEY_DEVELOPMENT _FINGERPRINT = re.compile(r'^(.+)-[a-z0-9]{32}\.(\w+)$', re.IGNORECASE) -class GzipFileSender(FileSender): - """FileSender class capable of sending gzip version if available.""" +class CachingFileSender(FileSender): + """FileSender class that caches output if not in dev mode.""" - # pylint: disable=invalid-name + def __init__(self, *args, **kwargs): + """Initialize the hass file sender.""" + super().__init__(*args, **kwargs) - @asyncio.coroutine - def send(self, request, filepath): - """Send filepath to client using request.""" - gzip = False - if 'gzip' in request.headers[hdrs.ACCEPT_ENCODING]: - gzip_path = filepath.with_name(filepath.name + '.gz') + orig_sendfile = self._sendfile - if gzip_path.is_file(): - filepath = gzip_path - gzip = True + @asyncio.coroutine + def sendfile(request, resp, fobj, count): + """Sendfile that includes a cache header.""" + if not request.app[KEY_DEVELOPMENT]: + cache_time = 31 * 86400 # = 1 month + resp.headers[hdrs.CACHE_CONTROL] = "public, max-age={}".format( + cache_time) - st = filepath.stat() + yield from orig_sendfile(request, resp, fobj, count) - modsince = request.if_modified_since - if modsince is not None and st.st_mtime <= modsince.timestamp(): - raise HTTPNotModified() - - ct, encoding = mimetypes.guess_type(str(filepath)) - if not ct: - ct = 'application/octet-stream' - - resp = self._response_factory() - resp.content_type = ct - if encoding: - resp.headers[hdrs.CONTENT_ENCODING] = encoding - if gzip: - resp.headers[hdrs.VARY] = hdrs.ACCEPT_ENCODING - resp.last_modified = st.st_mtime - - # CACHE HACK - if not request.app[KEY_DEVELOPMENT]: - cache_time = 31 * 86400 # = 1 month - resp.headers[hdrs.CACHE_CONTROL] = "public, max-age={}".format( - cache_time) - - file_size = st.st_size - - resp.content_length = file_size - with filepath.open('rb') as f: - yield from self._sendfile(request, resp, f, file_size) - - return resp + # Overwriting like this because __init__ can change implementation. + self._sendfile = sendfile -GZIP_FILE_SENDER = GzipFileSender() FILE_SENDER = FileSender() +CACHING_FILE_SENDER = CachingFileSender() @asyncio.coroutine @@ -77,7 +48,7 @@ def staticresource_middleware(app, handler): return handler # pylint: disable=protected-access - inst._file_sender = GZIP_FILE_SENDER + inst._file_sender = CACHING_FILE_SENDER @asyncio.coroutine def static_middleware_handler(request): diff --git a/requirements_all.txt b/requirements_all.txt index fdd35f6dfe3..78f0bba24e9 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -6,7 +6,7 @@ pip>=7.0.0 jinja2>=2.8 voluptuous==0.9.2 typing>=3,<4 -aiohttp==1.1.6 +aiohttp==1.2 async_timeout==1.1.0 # homeassistant.components.nuimo_controller diff --git a/setup.py b/setup.py index a62dbed80e8..d83fed1329b 100755 --- a/setup.py +++ b/setup.py @@ -22,7 +22,7 @@ REQUIRES = [ 'jinja2>=2.8', 'voluptuous==0.9.2', 'typing>=3,<4', - 'aiohttp==1.1.6', + 'aiohttp==1.2', 'async_timeout==1.1.0', ] diff --git a/tests/components/emulated_hue/test_hue_api.py b/tests/components/emulated_hue/test_hue_api.py index 4aab6401939..0b36b835cd5 100644 --- a/tests/components/emulated_hue/test_hue_api.py +++ b/tests/components/emulated_hue/test_hue_api.py @@ -1,9 +1,9 @@ """The tests for the emulated Hue component.""" +import asyncio import json -import unittest from unittest.mock import patch -import requests +import pytest from homeassistant import bootstrap, const, core import homeassistant.components as core_components @@ -12,10 +12,12 @@ from homeassistant.components import ( ) from homeassistant.const import STATE_ON, STATE_OFF from homeassistant.components.emulated_hue.hue_api import ( - HUE_API_STATE_ON, HUE_API_STATE_BRI) -from homeassistant.util.async import run_coroutine_threadsafe + HUE_API_STATE_ON, HUE_API_STATE_BRI, HueUsernameView, + HueAllLightsStateView, HueOneLightStateView, HueOneLightChangeView) +from homeassistant.components.emulated_hue import Config -from tests.common import get_test_instance_port, get_test_home_assistant +from tests.common import ( + get_test_instance_port, mock_http_component_app) HTTP_SERVER_PORT = get_test_instance_port() BRIDGE_SERVER_PORT = get_test_instance_port() @@ -24,41 +26,38 @@ BRIDGE_URL_BASE = 'http://127.0.0.1:{}'.format(BRIDGE_SERVER_PORT) + '{}' JSON_HEADERS = {const.HTTP_HEADER_CONTENT_TYPE: const.CONTENT_TYPE_JSON} -class TestEmulatedHueExposedByDefault(unittest.TestCase): - """Test class for emulated hue component.""" +@pytest.fixture +def hass_hue(loop, hass): + """Setup a hass instance for these tests.""" + # We need to do this to get access to homeassistant/turn_(on,off) + loop.run_until_complete( + core_components.async_setup(hass, {core.DOMAIN: {}})) - @classmethod - def setUpClass(cls): - """Setup the class.""" - cls.hass = hass = get_test_home_assistant() + loop.run_until_complete(bootstrap.async_setup_component( + hass, http.DOMAIN, + {http.DOMAIN: {http.CONF_SERVER_PORT: HTTP_SERVER_PORT}})) - # We need to do this to get access to homeassistant/turn_(on,off) - run_coroutine_threadsafe( - core_components.async_setup(hass, {core.DOMAIN: {}}), hass.loop - ).result() - - bootstrap.setup_component( - hass, http.DOMAIN, - {http.DOMAIN: {http.CONF_SERVER_PORT: HTTP_SERVER_PORT}}) - - with patch('homeassistant.components' - '.emulated_hue.UPNPResponderThread'): - bootstrap.setup_component(hass, emulated_hue.DOMAIN, { + with patch('homeassistant.components' + '.emulated_hue.UPNPResponderThread'): + loop.run_until_complete( + bootstrap.async_setup_component(hass, emulated_hue.DOMAIN, { emulated_hue.DOMAIN: { emulated_hue.CONF_LISTEN_PORT: BRIDGE_SERVER_PORT, emulated_hue.CONF_EXPOSE_BY_DEFAULT: True } - }) + })) - bootstrap.setup_component(cls.hass, light.DOMAIN, { + loop.run_until_complete( + bootstrap.async_setup_component(hass, light.DOMAIN, { 'light': [ { 'platform': 'demo', } ] - }) + })) - bootstrap.setup_component(cls.hass, script.DOMAIN, { + loop.run_until_complete( + bootstrap.async_setup_component(hass, script.DOMAIN, { 'script': { 'set_kitchen_light': { 'sequence': [ @@ -73,338 +72,354 @@ class TestEmulatedHueExposedByDefault(unittest.TestCase): ] } } - }) + })) - bootstrap.setup_component(cls.hass, media_player.DOMAIN, { + loop.run_until_complete( + bootstrap.async_setup_component(hass, media_player.DOMAIN, { 'media_player': [ { 'platform': 'demo', } ] - }) + })) - cls.hass.start() + # Kitchen light is explicitly excluded from being exposed + kitchen_light_entity = hass.states.get('light.kitchen_lights') + attrs = dict(kitchen_light_entity.attributes) + attrs[emulated_hue.ATTR_EMULATED_HUE] = False + hass.states.async_set( + kitchen_light_entity.entity_id, kitchen_light_entity.state, + attributes=attrs) - # Kitchen light is explicitly excluded from being exposed - kitchen_light_entity = cls.hass.states.get('light.kitchen_lights') - attrs = dict(kitchen_light_entity.attributes) - attrs[emulated_hue.ATTR_EMULATED_HUE] = False - cls.hass.states.set( - kitchen_light_entity.entity_id, kitchen_light_entity.state, - attributes=attrs) + # Expose the script + script_entity = hass.states.get('script.set_kitchen_light') + attrs = dict(script_entity.attributes) + attrs[emulated_hue.ATTR_EMULATED_HUE] = True + hass.states.async_set( + script_entity.entity_id, script_entity.state, attributes=attrs + ) - # Expose the script - script_entity = cls.hass.states.get('script.set_kitchen_light') - attrs = dict(script_entity.attributes) - attrs[emulated_hue.ATTR_EMULATED_HUE] = True - cls.hass.states.set( - script_entity.entity_id, script_entity.state, attributes=attrs - ) + return hass - @classmethod - def tearDownClass(cls): - """Stop the class.""" - cls.hass.stop() - def test_discover_lights(self): - """Test the discovery of lights.""" - result = requests.get( - BRIDGE_URL_BASE.format('/api/username/lights'), timeout=5) +@pytest.fixture +def hue_client(loop, hass_hue, test_client): + """Create web client for emulated hue api.""" + web_app = mock_http_component_app(hass_hue) + config = Config({'type': 'alexa'}) - self.assertEqual(result.status_code, 200) - self.assertTrue('application/json' in result.headers['content-type']) + HueUsernameView().register(web_app.router) + HueAllLightsStateView(config).register(web_app.router) + HueOneLightStateView(config).register(web_app.router) + HueOneLightChangeView(config).register(web_app.router) - result_json = result.json() + return loop.run_until_complete(test_client(web_app)) - # Make sure the lights we added to the config are there - self.assertTrue('light.ceiling_lights' in result_json) - self.assertTrue('light.bed_light' in result_json) - self.assertTrue('script.set_kitchen_light' in result_json) - self.assertTrue('light.kitchen_lights' not in result_json) - self.assertTrue('media_player.living_room' in result_json) - self.assertTrue('media_player.bedroom' in result_json) - self.assertTrue('media_player.walkman' in result_json) - self.assertTrue('media_player.lounge_room' in result_json) - def test_get_light_state(self): - """Test the getting of light state.""" - # Turn office light on and set to 127 brightness - self.hass.services.call( - light.DOMAIN, const.SERVICE_TURN_ON, - { - const.ATTR_ENTITY_ID: 'light.ceiling_lights', - light.ATTR_BRIGHTNESS: 127 - }, - blocking=True) +@asyncio.coroutine +def test_discover_lights(hue_client): + """Test the discovery of lights.""" + result = yield from hue_client.get('/api/username/lights') - office_json = self.perform_get_light_state('light.ceiling_lights', 200) + assert result.status == 200 + assert 'application/json' in result.headers['content-type'] - self.assertEqual(office_json['state'][HUE_API_STATE_ON], True) - self.assertEqual(office_json['state'][HUE_API_STATE_BRI], 127) + result_json = yield from result.json() - # Check all lights view - result = requests.get( - BRIDGE_URL_BASE.format('/api/username/lights'), timeout=5) + devices = set(val['uniqueid'] for val in result_json.values()) - self.assertEqual(result.status_code, 200) - self.assertTrue('application/json' in result.headers['content-type']) + # Make sure the lights we added to the config are there + assert 'light.ceiling_lights' in devices + assert 'light.bed_light' in devices + assert 'script.set_kitchen_light' in devices + assert 'light.kitchen_lights' not in devices + assert 'media_player.living_room' in devices + assert 'media_player.bedroom' in devices + assert 'media_player.walkman' in devices + assert 'media_player.lounge_room' in devices - result_json = result.json() - self.assertTrue('light.ceiling_lights' in result_json) - self.assertEqual( - result_json['light.ceiling_lights']['state'][HUE_API_STATE_BRI], - 127, - ) +@asyncio.coroutine +def test_get_light_state(hass_hue, hue_client): + """Test the getting of light state.""" + # Turn office light on and set to 127 brightness + yield from hass_hue.services.async_call( + light.DOMAIN, const.SERVICE_TURN_ON, + { + const.ATTR_ENTITY_ID: 'light.ceiling_lights', + light.ATTR_BRIGHTNESS: 127 + }, + blocking=True) - # Turn bedroom light off - self.hass.services.call( - light.DOMAIN, const.SERVICE_TURN_OFF, - { - const.ATTR_ENTITY_ID: 'light.bed_light' - }, - blocking=True) + office_json = yield from perform_get_light_state( + hue_client, 'light.ceiling_lights', 200) - bedroom_json = self.perform_get_light_state('light.bed_light', 200) + assert office_json['state'][HUE_API_STATE_ON] is True + assert office_json['state'][HUE_API_STATE_BRI] == 127 - self.assertEqual(bedroom_json['state'][HUE_API_STATE_ON], False) - self.assertEqual(bedroom_json['state'][HUE_API_STATE_BRI], 0) + # Check all lights view + result = yield from hue_client.get('/api/username/lights') - # Make sure kitchen light isn't accessible - kitchen_url = '/api/username/lights/{}'.format('light.kitchen_lights') - kitchen_result = requests.get( - BRIDGE_URL_BASE.format(kitchen_url), timeout=5) + assert result.status == 200 + assert 'application/json' in result.headers['content-type'] - self.assertEqual(kitchen_result.status_code, 404) + result_json = yield from result.json() - def test_put_light_state(self): - """Test the seeting of light states.""" - self.perform_put_test_on_ceiling_lights() + assert 'light.ceiling_lights' in result_json + assert result_json['light.ceiling_lights']['state'][HUE_API_STATE_BRI] == \ + 127 - # Turn the bedroom light on first - self.hass.services.call( - light.DOMAIN, const.SERVICE_TURN_ON, - {const.ATTR_ENTITY_ID: 'light.bed_light', - light.ATTR_BRIGHTNESS: 153}, - blocking=True) + # Turn bedroom light off + yield from hass_hue.services.async_call( + light.DOMAIN, const.SERVICE_TURN_OFF, + { + const.ATTR_ENTITY_ID: 'light.bed_light' + }, + blocking=True) - bed_light = self.hass.states.get('light.bed_light') - self.assertEqual(bed_light.state, STATE_ON) - self.assertEqual(bed_light.attributes[light.ATTR_BRIGHTNESS], 153) + bedroom_json = yield from perform_get_light_state( + hue_client, 'light.bed_light', 200) - # Go through the API to turn it off - bedroom_result = self.perform_put_light_state( - 'light.bed_light', False) + assert bedroom_json['state'][HUE_API_STATE_ON] is False + assert bedroom_json['state'][HUE_API_STATE_BRI] == 0 - bedroom_result_json = bedroom_result.json() + # Make sure kitchen light isn't accessible + yield from perform_get_light_state( + hue_client, 'light.kitchen_lights', 404) - self.assertEqual(bedroom_result.status_code, 200) - self.assertTrue( - 'application/json' in bedroom_result.headers['content-type']) - self.assertEqual(len(bedroom_result_json), 1) +@asyncio.coroutine +def test_put_light_state(hass_hue, hue_client): + """Test the seeting of light states.""" + yield from perform_put_test_on_ceiling_lights(hass_hue, hue_client) - # Check to make sure the state changed - bed_light = self.hass.states.get('light.bed_light') - self.assertEqual(bed_light.state, STATE_OFF) + # Turn the bedroom light on first + yield from hass_hue.services.async_call( + light.DOMAIN, const.SERVICE_TURN_ON, + {const.ATTR_ENTITY_ID: 'light.bed_light', + light.ATTR_BRIGHTNESS: 153}, + blocking=True) - # Make sure we can't change the kitchen light state - kitchen_result = self.perform_put_light_state( - 'light.kitchen_light', True) - self.assertEqual(kitchen_result.status_code, 404) + bed_light = hass_hue.states.get('light.bed_light') + assert bed_light.state == STATE_ON + assert bed_light.attributes[light.ATTR_BRIGHTNESS] == 153 - def test_put_light_state_script(self): - """Test the setting of script variables.""" - # Turn the kitchen light off first - self.hass.services.call( - light.DOMAIN, const.SERVICE_TURN_OFF, - {const.ATTR_ENTITY_ID: 'light.kitchen_lights'}, - blocking=True) + # Go through the API to turn it off + bedroom_result = yield from perform_put_light_state( + hass_hue, hue_client, + 'light.bed_light', False) - # Emulated hue converts 0-100% to 0-255. - level = 23 - brightness = round(level * 255 / 100) + bedroom_result_json = yield from bedroom_result.json() - script_result = self.perform_put_light_state( - 'script.set_kitchen_light', True, brightness) + assert bedroom_result.status == 200 + assert 'application/json' in bedroom_result.headers['content-type'] - script_result_json = script_result.json() + assert len(bedroom_result_json) == 1 - self.assertEqual(script_result.status_code, 200) - self.assertEqual(len(script_result_json), 2) + # Check to make sure the state changed + bed_light = hass_hue.states.get('light.bed_light') + assert bed_light.state == STATE_OFF - kitchen_light = self.hass.states.get('light.kitchen_lights') - self.assertEqual(kitchen_light.state, 'on') - self.assertEqual( - kitchen_light.attributes[light.ATTR_BRIGHTNESS], - level) + # Make sure we can't change the kitchen light state + kitchen_result = yield from perform_put_light_state( + hass_hue, hue_client, + 'light.kitchen_light', True) + assert kitchen_result.status == 404 - def test_put_light_state_media_player(self): - """Test turning on media player and setting volume.""" - # Turn the music player off first - self.hass.services.call( - media_player.DOMAIN, const.SERVICE_TURN_OFF, - {const.ATTR_ENTITY_ID: 'media_player.walkman'}, - blocking=True) - # Emulated hue converts 0.0-1.0 to 0-255. - level = 0.25 - brightness = round(level * 255) +@asyncio.coroutine +def test_put_light_state_script(hass_hue, hue_client): + """Test the setting of script variables.""" + # Turn the kitchen light off first + yield from hass_hue.services.async_call( + light.DOMAIN, const.SERVICE_TURN_OFF, + {const.ATTR_ENTITY_ID: 'light.kitchen_lights'}, + blocking=True) - mp_result = self.perform_put_light_state( - 'media_player.walkman', True, brightness) + # Emulated hue converts 0-100% to 0-255. + level = 23 + brightness = round(level * 255 / 100) - mp_result_json = mp_result.json() + script_result = yield from perform_put_light_state( + hass_hue, hue_client, + 'script.set_kitchen_light', True, brightness) - self.assertEqual(mp_result.status_code, 200) - self.assertEqual(len(mp_result_json), 2) + script_result_json = yield from script_result.json() - walkman = self.hass.states.get('media_player.walkman') - self.assertEqual(walkman.state, 'playing') - self.assertEqual( - walkman.attributes[media_player.ATTR_MEDIA_VOLUME_LEVEL], - level) + assert script_result.status == 200 + assert len(script_result_json) == 2 - # pylint: disable=invalid-name - def test_put_with_form_urlencoded_content_type(self): - """Test the form with urlencoded content.""" - # Needed for Alexa - self.perform_put_test_on_ceiling_lights( - 'application/x-www-form-urlencoded') + kitchen_light = hass_hue.states.get('light.kitchen_lights') + assert kitchen_light.state == 'on' + assert kitchen_light.attributes[light.ATTR_BRIGHTNESS] == level - # Make sure we fail gracefully when we can't parse the data - data = {'key1': 'value1', 'key2': 'value2'} - result = requests.put( - BRIDGE_URL_BASE.format( - '/api/username/lights/{}/state'.format( - 'light.ceiling_lights')), data=data) - self.assertEqual(result.status_code, 400) +@asyncio.coroutine +def test_put_light_state_media_player(hass_hue, hue_client): + """Test turning on media player and setting volume.""" + # Turn the music player off first + yield from hass_hue.services.async_call( + media_player.DOMAIN, const.SERVICE_TURN_OFF, + {const.ATTR_ENTITY_ID: 'media_player.walkman'}, + blocking=True) - def test_entity_not_found(self): - """Test for entity which are not found.""" - result = requests.get( - BRIDGE_URL_BASE.format( - '/api/username/lights/{}'.format("not.existant_entity")), - timeout=5) + # Emulated hue converts 0.0-1.0 to 0-255. + level = 0.25 + brightness = round(level * 255) - self.assertEqual(result.status_code, 404) + mp_result = yield from perform_put_light_state( + hass_hue, hue_client, + 'media_player.walkman', True, brightness) - result = requests.put( - BRIDGE_URL_BASE.format( - '/api/username/lights/{}/state'.format("non.existant_entity")), - timeout=5) + mp_result_json = yield from mp_result.json() - self.assertEqual(result.status_code, 404) + assert mp_result.status == 200 + assert len(mp_result_json) == 2 - def test_allowed_methods(self): - """Test the allowed methods.""" - result = requests.get( - BRIDGE_URL_BASE.format( - '/api/username/lights/{}/state'.format( - "light.ceiling_lights"))) + walkman = hass_hue.states.get('media_player.walkman') + assert walkman.state == 'playing' + assert walkman.attributes[media_player.ATTR_MEDIA_VOLUME_LEVEL] == level - self.assertEqual(result.status_code, 405) - result = requests.put( - BRIDGE_URL_BASE.format( - '/api/username/lights/{}'.format("light.ceiling_lights")), - data={'key1': 'value1'}) +# pylint: disable=invalid-name +@asyncio.coroutine +def test_put_with_form_urlencoded_content_type(hass_hue, hue_client): + """Test the form with urlencoded content.""" + # Needed for Alexa + yield from perform_put_test_on_ceiling_lights( + hass_hue, hue_client, 'application/x-www-form-urlencoded') - self.assertEqual(result.status_code, 405) + # Make sure we fail gracefully when we can't parse the data + data = {'key1': 'value1', 'key2': 'value2'} + result = yield from hue_client.put( + '/api/username/lights/light.ceiling_lights/state', + headers={ + 'content-type': 'application/x-www-form-urlencoded' + }, + data=data, + ) - result = requests.put( - BRIDGE_URL_BASE.format('/api/username/lights'), - data={'key1': 'value1'}) + assert result.status == 400 - self.assertEqual(result.status_code, 405) - def test_proper_put_state_request(self): - """Test the request to set the state.""" - # Test proper on value parsing - result = requests.put( - BRIDGE_URL_BASE.format( - '/api/username/lights/{}/state'.format( - 'light.ceiling_lights')), +@asyncio.coroutine +def test_entity_not_found(hue_client): + """Test for entity which are not found.""" + result = yield from hue_client.get( + '/api/username/lights/not.existant_entity') + + assert result.status == 404 + + result = yield from hue_client.put( + '/api/username/lights/not.existant_entity/state') + + assert result.status == 404 + + +@asyncio.coroutine +def test_allowed_methods(hue_client): + """Test the allowed methods.""" + result = yield from hue_client.get( + '/api/username/lights/light.ceiling_lights/state') + + assert result.status == 405 + + result = yield from hue_client.put( + '/api/username/lights/light.ceiling_lights') + + assert result.status == 405 + + result = yield from hue_client.put( + '/api/username/lights') + + assert result.status == 405 + + +@asyncio.coroutine +def test_proper_put_state_request(hue_client): + """Test the request to set the state.""" + # Test proper on value parsing + result = yield from hue_client.put( + '/api/username/lights/{}/state'.format( + 'light.ceiling_lights'), data=json.dumps({HUE_API_STATE_ON: 1234})) - self.assertEqual(result.status_code, 400) + assert result.status == 400 - # Test proper brightness value parsing - result = requests.put( - BRIDGE_URL_BASE.format( - '/api/username/lights/{}/state'.format( - 'light.ceiling_lights')), data=json.dumps({ - HUE_API_STATE_ON: True, - HUE_API_STATE_BRI: 'Hello world!' - })) + # Test proper brightness value parsing + result = yield from hue_client.put( + '/api/username/lights/{}/state'.format( + 'light.ceiling_lights'), + data=json.dumps({ + HUE_API_STATE_ON: True, + HUE_API_STATE_BRI: 'Hello world!' + })) - self.assertEqual(result.status_code, 400) + assert result.status == 400 - # pylint: disable=invalid-name - def perform_put_test_on_ceiling_lights(self, - content_type='application/json'): - """Test the setting of a light.""" - # Turn the office light off first - self.hass.services.call( - light.DOMAIN, const.SERVICE_TURN_OFF, - {const.ATTR_ENTITY_ID: 'light.ceiling_lights'}, - blocking=True) - ceiling_lights = self.hass.states.get('light.ceiling_lights') - self.assertEqual(ceiling_lights.state, STATE_OFF) +# pylint: disable=invalid-name +def perform_put_test_on_ceiling_lights(hass_hue, hue_client, + content_type='application/json'): + """Test the setting of a light.""" + # Turn the office light off first + yield from hass_hue.services.async_call( + light.DOMAIN, const.SERVICE_TURN_OFF, + {const.ATTR_ENTITY_ID: 'light.ceiling_lights'}, + blocking=True) - # Go through the API to turn it on - office_result = self.perform_put_light_state( - 'light.ceiling_lights', True, 56, content_type) + ceiling_lights = hass_hue.states.get('light.ceiling_lights') + assert ceiling_lights.state == STATE_OFF - office_result_json = office_result.json() + # Go through the API to turn it on + office_result = yield from perform_put_light_state( + hass_hue, hue_client, + 'light.ceiling_lights', True, 56, content_type) - self.assertEqual(office_result.status_code, 200) - self.assertTrue( - 'application/json' in office_result.headers['content-type']) + assert office_result.status == 200 + assert 'application/json' in office_result.headers['content-type'] - self.assertEqual(len(office_result_json), 2) + office_result_json = yield from office_result.json() - # Check to make sure the state changed - ceiling_lights = self.hass.states.get('light.ceiling_lights') - self.assertEqual(ceiling_lights.state, STATE_ON) - self.assertEqual(ceiling_lights.attributes[light.ATTR_BRIGHTNESS], 56) + assert len(office_result_json) == 2 - def perform_get_light_state(self, entity_id, expected_status): - """Test the gettting of a light state.""" - result = requests.get( - BRIDGE_URL_BASE.format( - '/api/username/lights/{}'.format(entity_id)), timeout=5) + # Check to make sure the state changed + ceiling_lights = hass_hue.states.get('light.ceiling_lights') + assert ceiling_lights.state == STATE_ON + assert ceiling_lights.attributes[light.ATTR_BRIGHTNESS] == 56 - self.assertEqual(result.status_code, expected_status) - if expected_status == 200: - self.assertTrue( - 'application/json' in result.headers['content-type']) +@asyncio.coroutine +def perform_get_light_state(client, entity_id, expected_status): + """Test the gettting of a light state.""" + result = yield from client.get('/api/username/lights/{}'.format(entity_id)) - return result.json() + assert result.status == expected_status - return None + if expected_status == 200: + assert 'application/json' in result.headers['content-type'] - # pylint: disable=no-self-use - def perform_put_light_state(self, entity_id, is_on, brightness=None, - content_type='application/json'): - """Test the setting of a light state.""" - url = BRIDGE_URL_BASE.format( - '/api/username/lights/{}/state'.format(entity_id)) + return (yield from result.json()) - req_headers = {'Content-Type': content_type} + return None - data = {HUE_API_STATE_ON: is_on} - if brightness is not None: - data[HUE_API_STATE_BRI] = brightness +@asyncio.coroutine +def perform_put_light_state(hass_hue, client, entity_id, is_on, + brightness=None, content_type='application/json'): + """Test the setting of a light state.""" + req_headers = {'Content-Type': content_type} - result = requests.put( - url, data=json.dumps(data), timeout=5, headers=req_headers) + data = {HUE_API_STATE_ON: is_on} - # Wait until state change is complete before continuing - self.hass.block_till_done() + if brightness is not None: + data[HUE_API_STATE_BRI] = brightness - return result + result = yield from client.put( + '/api/username/lights/{}/state'.format(entity_id), headers=req_headers, + data=json.dumps(data).encode()) + + # Wait until state change is complete before continuing + yield from hass_hue.async_block_till_done() + + return result From eb9b95c2922181b097258856af9bd2bc4d7a814e Mon Sep 17 00:00:00 2001 From: Adam Mills <adam@armills.info> Date: Wed, 11 Jan 2017 16:59:39 -0500 Subject: [PATCH 143/189] Convert flic to synchronous platform. (#5276) * Convert flic to synchronous platform. pyflic is a synchronous library * Move pyflic event loop to dedicated thread. --- .../components/binary_sensor/flic.py | 56 +++++++------------ 1 file changed, 20 insertions(+), 36 deletions(-) diff --git a/homeassistant/components/binary_sensor/flic.py b/homeassistant/components/binary_sensor/flic.py index 980af069f38..94a75fcda4b 100644 --- a/homeassistant/components/binary_sensor/flic.py +++ b/homeassistant/components/binary_sensor/flic.py @@ -1,6 +1,6 @@ """Contains functionality to use flic buttons as a binary sensor.""" -import asyncio import logging +import threading import voluptuous as vol @@ -10,7 +10,6 @@ from homeassistant.const import ( EVENT_HOMEASSISTANT_STOP) from homeassistant.components.binary_sensor import ( BinarySensorDevice, PLATFORM_SCHEMA) -from homeassistant.util.async import run_callback_threadsafe REQUIREMENTS = ['https://github.com/soldag/pyflic/archive/0.4.zip#pyflic==0.4'] @@ -43,9 +42,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ }) -@asyncio.coroutine -def async_setup_platform(hass, config, async_add_entities, - discovery_info=None): +def setup_platform(hass, config, add_entities, discovery_info=None): """Setup the flic platform.""" import pyflic @@ -63,26 +60,29 @@ def async_setup_platform(hass, config, async_add_entities, def new_button_callback(address): """Setup newly verified button as device in home assistant.""" - hass.add_job(async_setup_button(hass, config, async_add_entities, - client, address)) + setup_button(hass, config, add_entities, client, address) client.on_new_verified_button = new_button_callback if discovery: - start_scanning(hass, config, async_add_entities, client) + start_scanning(config, add_entities, client) - hass.bus.async_listen_once(EVENT_HOMEASSISTANT_STOP, - lambda event: client.close()) - hass.loop.run_in_executor(None, client.handle_events) + hass.bus.listen_once(EVENT_HOMEASSISTANT_STOP, + lambda event: client.close()) + + # Start the pyflic event handling thread + threading.Thread(target=client.handle_events).start() + + def get_info_callback(items): + """Add entities for already verified buttons.""" + addresses = items["bd_addr_of_verified_buttons"] or [] + for address in addresses: + setup_button(hass, config, add_entities, client, address) # Get addresses of already verified buttons - addresses = yield from async_get_verified_addresses(client) - if addresses: - for address in addresses: - yield from async_setup_button(hass, config, async_add_entities, - client, address) + client.get_info(get_info_callback) -def start_scanning(hass, config, async_add_entities, client): +def start_scanning(config, add_entities, client): """Start a new flic client for scanning & connceting to new buttons.""" import pyflic @@ -97,36 +97,20 @@ def start_scanning(hass, config, async_add_entities, client): address, result) # Restart scan wizard - start_scanning(hass, config, async_add_entities, client) + start_scanning(config, add_entities, client) scan_wizard.on_completed = scan_completed_callback client.add_scan_wizard(scan_wizard) -@asyncio.coroutine -def async_setup_button(hass, config, async_add_entities, client, address): +def setup_button(hass, config, add_entities, client, address): """Setup 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) _LOGGER.info("Connected to button (%s)", address) - yield from async_add_entities([button]) - - -@asyncio.coroutine -def async_get_verified_addresses(client): - """Retrieve addresses of verified buttons.""" - future = asyncio.Future() - loop = asyncio.get_event_loop() - - def get_info_callback(items): - """Set the addressed of connected buttons as result of the future.""" - addresses = items["bd_addr_of_verified_buttons"] - run_callback_threadsafe(loop, future.set_result, addresses) - client.get_info(get_info_callback) - - return future + add_entities([button]) class FlicButton(BinarySensorDevice): From dc937cc8cffbb9ec2b4342d801f8d7332a8dd9cf Mon Sep 17 00:00:00 2001 From: pavoni <mail@gregdowling.com> Date: Wed, 11 Jan 2017 23:10:24 +0000 Subject: [PATCH 144/189] Bump pywemo version. --- homeassistant/components/wemo.py | 2 +- requirements_all.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/wemo.py b/homeassistant/components/wemo.py index 71bb2984c7e..ba068905087 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.7'] +REQUIREMENTS = ['pywemo==0.4.9'] DOMAIN = 'wemo' diff --git a/requirements_all.txt b/requirements_all.txt index 78f0bba24e9..b4396128f81 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -527,7 +527,7 @@ pyvera==0.2.21 pywebpush==0.6.1 # homeassistant.components.wemo -pywemo==0.4.7 +pywemo==0.4.9 # homeassistant.components.light.yeelight pyyeelight==1.0-beta From 9a3c0c8cd3a06d118cfcf58d1078912e41f12f31 Mon Sep 17 00:00:00 2001 From: Greg Dowling <pavoni@users.noreply.github.com> Date: Thu, 12 Jan 2017 16:31:30 +0000 Subject: [PATCH 145/189] Don't build Adafruit_BBIO - doesn't work on all platforms. (#5281) * Don't build Adafruit_BBIO - doesn't work on all platforms. * Disable pylint import warning on BBIO. --- homeassistant/components/bbb_gpio.py | 13 +++++++++++-- requirements_all.txt | 2 +- script/gen_requirements_all.py | 1 + 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/bbb_gpio.py b/homeassistant/components/bbb_gpio.py index e85c027882f..52ab14689fd 100644 --- a/homeassistant/components/bbb_gpio.py +++ b/homeassistant/components/bbb_gpio.py @@ -19,6 +19,7 @@ DOMAIN = 'bbb_gpio' # pylint: disable=no-member def setup(hass, config): """Setup the Beaglebone black GPIO component.""" + # pylint: disable=import-error import Adafruit_BBIO.GPIO as GPIO def cleanup_gpio(event): @@ -33,33 +34,41 @@ def setup(hass, config): return True +# noqa: F821 + def setup_output(pin): """Setup 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.""" + # pylint: disable=import-error,undefined-variable import Adafruit_BBIO.GPIO as GPIO - GPIO.setup(pin, GPIO.IN, - GPIO.PUD_DOWN if pull_mode == 'DOWN' else GPIO.PUD_UP) + GPIO.setup(pin, GPIO.IN, # noqa: F821 + GPIO.PUD_DOWN if pull_mode == 'DOWN' # noqa: F821 + else GPIO.PUD_UP) # noqa: F821 def write_output(pin, value): """Write a value to a GPIO.""" + # pylint: disable=import-error,undefined-variable import Adafruit_BBIO.GPIO as GPIO GPIO.output(pin, value) def read_input(pin): """Read a value from a GPIO.""" + # pylint: disable=import-error,undefined-variable import Adafruit_BBIO.GPIO as GPIO return GPIO.input(pin) def edge_detect(pin, event_callback, bounce): """Add detection for RISING and FALLING events.""" + # pylint: disable=import-error,undefined-variable import Adafruit_BBIO.GPIO as GPIO GPIO.add_event_detect( pin, diff --git a/requirements_all.txt b/requirements_all.txt index b4396128f81..572865a285e 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -13,7 +13,7 @@ async_timeout==1.1.0 --only-binary=all http://github.com/getSenic/nuimo-linux-python/archive/29fc42987f74d8090d0e2382e8f248ff5990b8c9.zip#nuimo==1.0.0 # homeassistant.components.bbb_gpio -Adafruit_BBIO==1.0.0 +# Adafruit_BBIO==1.0.0 # homeassistant.components.isy994 PyISY==1.0.7 diff --git a/script/gen_requirements_all.py b/script/gen_requirements_all.py index f4258ea825b..0231e0d5177 100755 --- a/script/gen_requirements_all.py +++ b/script/gen_requirements_all.py @@ -10,6 +10,7 @@ COMMENT_REQUIREMENTS = ( 'RPi.GPIO', 'rpi-rf', 'Adafruit_Python_DHT', + 'Adafruit_BBIO', 'fritzconnection', 'pybluez', 'bluepy', From 64800fd48c02520b1f44be960dc8c539f82d1692 Mon Sep 17 00:00:00 2001 From: Pascal Bach <pasci.bach@gmail.com> Date: Thu, 12 Jan 2017 23:16:32 +0100 Subject: [PATCH 146/189] Upgrade distro to 1.0.2 (#5291) --- homeassistant/components/updater.py | 2 +- requirements_all.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) mode change 100644 => 100755 requirements_all.txt diff --git a/homeassistant/components/updater.py b/homeassistant/components/updater.py index c05aedbb888..c8385c8aac0 100644 --- a/homeassistant/components/updater.py +++ b/homeassistant/components/updater.py @@ -22,7 +22,7 @@ from homeassistant.const import __version__ as CURRENT_VERSION from homeassistant.const import ATTR_FRIENDLY_NAME from homeassistant.helpers import event -REQUIREMENTS = ['distro==1.0.1'] +REQUIREMENTS = ['distro==1.0.2'] _LOGGER = logging.getLogger(__name__) diff --git a/requirements_all.txt b/requirements_all.txt old mode 100644 new mode 100755 index 572865a285e..536255460e2 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -90,7 +90,7 @@ denonavr==0.3.0 directpy==0.1 # homeassistant.components.updater -distro==1.0.1 +distro==1.0.2 # homeassistant.components.switch.digitalloggers dlipower==0.7.165 From d12decc4714cb61af58ab08581712b8be5367960 Mon Sep 17 00:00:00 2001 From: Pascal Bach <pasci.bach@gmail.com> Date: Thu, 12 Jan 2017 23:56:37 +0100 Subject: [PATCH 147/189] Upgrade to voluptuous to 0.9.3 (#5288) --- requirements_all.txt | 2 +- setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/requirements_all.txt b/requirements_all.txt index 536255460e2..87f1ad221ab 100755 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -4,7 +4,7 @@ pyyaml>=3.11,<4 pytz>=2016.10 pip>=7.0.0 jinja2>=2.8 -voluptuous==0.9.2 +voluptuous==0.9.3 typing>=3,<4 aiohttp==1.2 async_timeout==1.1.0 diff --git a/setup.py b/setup.py index d83fed1329b..4f223eb9b8a 100755 --- a/setup.py +++ b/setup.py @@ -20,7 +20,7 @@ REQUIRES = [ 'pytz>=2016.10', 'pip>=7.0.0', 'jinja2>=2.8', - 'voluptuous==0.9.2', + 'voluptuous==0.9.3', 'typing>=3,<4', 'aiohttp==1.2', 'async_timeout==1.1.0', From f7a1d63d52dc7687a07cd2c52ef4e8e6894e45d9 Mon Sep 17 00:00:00 2001 From: William Scanlon <wjs.scanlon@gmail.com> Date: Thu, 12 Jan 2017 18:16:05 -0500 Subject: [PATCH 148/189] Support for TrackR device trackers (#5010) * Support for TrackR device trackers * Change small style for hass --- .coveragerc | 1 + .../components/device_tracker/trackr.py | 79 +++++++++++++++++++ requirements_all.txt | 3 + 3 files changed, 83 insertions(+) create mode 100644 homeassistant/components/device_tracker/trackr.py diff --git a/.coveragerc b/.coveragerc index 2822e4562a2..bc67b24d907 100644 --- a/.coveragerc +++ b/.coveragerc @@ -169,6 +169,7 @@ omit = homeassistant/components/device_tracker/thomson.py homeassistant/components/device_tracker/tomato.py homeassistant/components/device_tracker/tplink.py + homeassistant/components/device_tracker/trackr.py homeassistant/components/device_tracker/ubus.py homeassistant/components/device_tracker/volvooncall.py homeassistant/components/discovery.py diff --git a/homeassistant/components/device_tracker/trackr.py b/homeassistant/components/device_tracker/trackr.py new file mode 100644 index 00000000000..2eb0def278f --- /dev/null +++ b/homeassistant/components/device_tracker/trackr.py @@ -0,0 +1,79 @@ +""" +Support for the TrackR platform. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/device_tracker.trackr/ +""" +import logging + +import voluptuous as vol + +from homeassistant.components.device_tracker import PLATFORM_SCHEMA +from homeassistant.const import CONF_USERNAME, CONF_PASSWORD +import homeassistant.helpers.config_validation as cv +from homeassistant.helpers.event import track_utc_time_change + +_LOGGER = logging.getLogger(__name__) + +REQUIREMENTS = ['pytrackr==0.0.5'] + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required(CONF_USERNAME): cv.string, + vol.Required(CONF_PASSWORD): cv.string +}) + + +def setup_scanner(hass, config: dict, see): + """Validate the configuration and return a TrackR scanner.""" + TrackRDeviceScanner(hass, config, see) + return True + + +class TrackRDeviceScanner(object): + """A class representing a TrackR device.""" + + def __init__(self, hass, config: dict, see) -> None: + """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.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)) + + def _update_info(self, now=None) -> None: + """Update the device info.""" + _LOGGER.debug('Updating devices %s', now) + + # Update self.devices to collect new devices added + # to the users account. + self.devices = self.api.get_trackrs() + + for trackr in self.devices: + trackr.update_state() + trackr_id = trackr.tracker_id() + trackr_device_id = trackr.id() + lost = trackr.lost() + dev_id = trackr.name().replace(" ", "_") + if dev_id is None: + dev_id = trackr_id + location = trackr.last_known_location() + lat = location['latitude'] + lon = location['longitude'] + + attrs = { + 'last_updated': trackr.last_updated(), + 'last_seen': trackr.last_time_seen(), + 'trackr_id': trackr_id, + 'id': trackr_device_id, + 'lost': lost, + 'battery_level': trackr.battery_level() + } + + self.see( + dev_id=dev_id, gps=(lat, lon), attributes=attrs + ) diff --git a/requirements_all.txt b/requirements_all.txt index 87f1ad221ab..9e4a17198da 100755 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -514,6 +514,9 @@ python-vlc==1.1.2 # homeassistant.components.wink python-wink==0.11.0 +# homeassistant.components.device_tracker.trackr +pytrackr==0.0.5 + # homeassistant.components.device_tracker.unifi pyunifi==1.3 From baa8e53e66167a1fb0f9d090f28325454ad3d4ef Mon Sep 17 00:00:00 2001 From: Pascal Vizeli <pascal.vizeli@syshack.ch> Date: Fri, 13 Jan 2017 12:29:20 +0100 Subject: [PATCH 149/189] Bugfix group reload (#5292) * Bugfix group / hit update * try to fix round 2 * Convert it to coro * Don't check statemachine, check unsub listener. --- homeassistant/components/group.py | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/homeassistant/components/group.py b/homeassistant/components/group.py index 0dfabdd8a35..25aa263d262 100644 --- a/homeassistant/components/group.py +++ b/homeassistant/components/group.py @@ -359,14 +359,16 @@ class Group(Entity): """Start tracking members.""" run_callback_threadsafe(self.hass.loop, self.async_start).result() + @callback def async_start(self): """Start tracking members. This method must be run in the event loop. """ - self._async_unsub_state_changed = async_track_state_change( - self.hass, self.tracking, self._state_changed_listener - ) + if self._async_unsub_state_changed is None: + self._async_unsub_state_changed = async_track_state_change( + self.hass, self.tracking, self._async_state_changed_listener + ) def stop(self): """Unregister the group from Home Assistant.""" @@ -392,20 +394,24 @@ class Group(Entity): This method must be run in the event loop. """ - yield from super().async_remove() - if self._async_unsub_state_changed: self._async_unsub_state_changed() self._async_unsub_state_changed = None - @callback - def _state_changed_listener(self, entity_id, old_state, new_state): + yield from super().async_remove() + + @asyncio.coroutine + def _async_state_changed_listener(self, entity_id, old_state, new_state): """Respond to a member state changing. This method must be run in the event loop. """ + # removed + if self._async_unsub_state_changed is None: + return + self._async_update_group_state(new_state) - self.hass.async_add_job(self.async_update_ha_state()) + yield from self.async_update_ha_state() @property def _tracking_states(self): From 1219ca3c3bc083c8f919c4db7eb3670686e52861 Mon Sep 17 00:00:00 2001 From: Thom Troy <ttroy50@gmail.com> Date: Fri, 13 Jan 2017 17:15:46 +0000 Subject: [PATCH 150/189] [sensor] Add Dublin bus RTPI sensor (#5257) --- .coveragerc | 1 + .../components/sensor/dublin_bus_transport.py | 184 ++++++++++++++++++ 2 files changed, 185 insertions(+) create mode 100644 homeassistant/components/sensor/dublin_bus_transport.py diff --git a/.coveragerc b/.coveragerc index bc67b24d907..aa5921526de 100644 --- a/.coveragerc +++ b/.coveragerc @@ -266,6 +266,7 @@ omit = homeassistant/components/sensor/bitcoin.py homeassistant/components/sensor/bom.py homeassistant/components/sensor/broadlink.py + homeassistant/components/sensor/dublin_bus_transport.py homeassistant/components/sensor/coinmarketcap.py homeassistant/components/sensor/cpuspeed.py homeassistant/components/sensor/cups.py diff --git a/homeassistant/components/sensor/dublin_bus_transport.py b/homeassistant/components/sensor/dublin_bus_transport.py new file mode 100644 index 00000000000..10d2c2b39f0 --- /dev/null +++ b/homeassistant/components/sensor/dublin_bus_transport.py @@ -0,0 +1,184 @@ +"""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 + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/sensor.dublin_public_transport/ +""" +import logging +from datetime import timedelta, datetime + +import requests +import voluptuous as vol + +from homeassistant.components.sensor import PLATFORM_SCHEMA +from homeassistant.const import CONF_NAME, ATTR_ATTRIBUTION +import homeassistant.util.dt as dt_util +from homeassistant.helpers.entity import Entity +from homeassistant.util import Throttle +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" + +CONF_ATTRIBUTION = "Data provided by data.dublinked.ie" +CONF_STOP_ID = 'stopid' +CONF_ROUTE = 'route' + +DEFAULT_NAME = 'Next Bus' +ICON = 'mdi:bus' + +MIN_TIME_BETWEEN_UPDATES = timedelta(seconds=60) +TIME_STR_FORMAT = "%H:%M" + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required(CONF_STOP_ID): cv.string, + vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, + vol.Optional(CONF_ROUTE, default=""): cv.string, +}) + + +def due_in_minutes(timestamp): + """Get the time in minutes from a timestamp. + + The timestamp should be in the format day/month/year hour/minute/second + """ + diff = datetime.strptime( + timestamp, "%d/%m/%Y %H:%M:%S") - dt_util.now().replace(tzinfo=None) + + return str(int(diff.total_seconds() / 60)) + + +def setup_platform(hass, config, add_devices, discovery_info=None): + """Get the Dublin public transport sensor.""" + name = config.get(CONF_NAME) + stop = config.get(CONF_STOP_ID) + route = config.get(CONF_ROUTE) + + data = PublicTransportData(stop, route) + add_devices([DublinPublicTransportSensor(data, stop, route, name)]) + + +class DublinPublicTransportSensor(Entity): + """Implementation of an Dublin public transport sensor.""" + + def __init__(self, data, stop, route, name): + """Initialize the sensor.""" + self.data = data + self._name = name + self._stop = stop + self._route = route + self.update() + + @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 device_state_attributes(self): + """Return the state attributes.""" + if self._times is not None: + next_up = "None" + if len(self._times) > 1: + next_up = self._times[1][ATTR_ROUTE] + " in " + next_up += self._times[1][ATTR_DUE_IN] + + return { + ATTR_DUE_IN: self._times[0][ATTR_DUE_IN], + ATTR_DUE_AT: self._times[0][ATTR_DUE_AT], + ATTR_STOP_ID: self._stop, + ATTR_ROUTE: self._times[0][ATTR_ROUTE], + ATTR_ATTRIBUTION: CONF_ATTRIBUTION, + ATTR_NEXT_UP: next_up + } + + @property + def unit_of_measurement(self): + """Return the unit this state is expressed in.""" + return "min" + + @property + def icon(self): + """Icon to use in the frontend, if any.""" + return ICON + + def update(self): + """Get the latest data from opendata.ch and update the states.""" + self.data.update() + self._times = self.data.info + try: + self._state = self._times[0][ATTR_DUE_IN] + except TypeError: + pass + + +class PublicTransportData(object): + """The Class for handling the data retrieval.""" + + def __init__(self, stop, route): + """Initialize the data object.""" + self.stop = stop + self.route = route + self.info = [{ATTR_DUE_AT: 'n/a', + ATTR_ROUTE: self.route, + ATTR_DUE_IN: 'n/a'}] + + @Throttle(MIN_TIME_BETWEEN_UPDATES) + def update(self): + """Get the latest data from opendata.ch.""" + params = {} + params['stopid'] = self.stop + + if len(self.route) > 0: + params['routeid'] = self.route + + params['maxresults'] = 2 + params['format'] = 'json' + + response = requests.get( + _RESOURCE, + params, + timeout=10) + + if response.status_code != 200: + self.info = [{ATTR_DUE_AT: 'n/a', + ATTR_ROUTE: self.route, + ATTR_DUE_IN: 'n/a'}] + return + + result = response.json() + + if str(result['errorcode']) != '0': + self.info = [{ATTR_DUE_AT: 'n/a', + ATTR_ROUTE: self.route, + ATTR_DUE_IN: 'n/a'}] + return + + self.info = [] + for item in result['results']: + due_at = item.get('departuredatetime') + route = item.get('route') + if due_at is not None and route is not None: + bus_data = {ATTR_DUE_AT: due_at, + ATTR_ROUTE: route, + ATTR_DUE_IN: + due_in_minutes(due_at)} + self.info.append(bus_data) + + if len(self.info) == 0: + self.info = [{ATTR_DUE_AT: 'n/a', + ATTR_ROUTE: self.route, + ATTR_DUE_IN: 'n/a'}] From a30711f1a0e2d4a286799d714fe59ff147883fab Mon Sep 17 00:00:00 2001 From: Pascal Vizeli <pascal.vizeli@syshack.ch> Date: Fri, 13 Jan 2017 21:22:09 +0100 Subject: [PATCH 151/189] Update pyhomematic 1.19 & small cleanups (#5299) --- homeassistant/components/homematic.py | 28 +++++++++++++-------------- requirements_all.txt | 2 +- 2 files changed, 14 insertions(+), 16 deletions(-) diff --git a/homeassistant/components/homematic.py b/homeassistant/components/homematic.py index 004a0c6dbfb..6e3f38eaab8 100644 --- a/homeassistant/components/homematic.py +++ b/homeassistant/components/homematic.py @@ -23,10 +23,10 @@ from homeassistant.config import load_yaml_config_file from homeassistant.util import Throttle DOMAIN = 'homematic' -REQUIREMENTS = ["pyhomematic==0.1.18"] +REQUIREMENTS = ["pyhomematic==0.1.19"] MIN_TIME_BETWEEN_UPDATE_HUB = timedelta(seconds=300) -MIN_TIME_BETWEEN_UPDATE_VAR = timedelta(seconds=30) +SCAN_INTERVAL = timedelta(seconds=30) DISCOVER_SWITCHES = 'homematic.switch' DISCOVER_LIGHTS = 'homematic.light' @@ -54,16 +54,17 @@ SERVICE_SET_DEV_VALUE = 'set_dev_value' HM_DEVICE_TYPES = { DISCOVER_SWITCHES: [ 'Switch', 'SwitchPowermeter', 'IOSwitch', 'IPSwitch', - 'IPSwitchPowermeter', 'KeyMatic'], + 'IPSwitchPowermeter', 'KeyMatic', 'HMWIOSwitch'], DISCOVER_LIGHTS: ['Dimmer', 'KeyDimmer'], DISCOVER_SENSORS: [ - 'SwitchPowermeter', 'Motion', 'MotionV2', 'RemoteMotion', + 'SwitchPowermeter', 'Motion', 'MotionV2', 'RemoteMotion', 'MotionIP', 'ThermostatWall', 'AreaThermostat', 'RotaryHandleSensor', 'WaterSensor', 'PowermeterGas', 'LuxSensor', 'WeatherSensor', 'WeatherStation', 'ThermostatWall2', 'TemperatureDiffSensor', 'TemperatureSensor', 'CO2Sensor', 'IPSwitchPowermeter'], DISCOVER_CLIMATE: [ - 'Thermostat', 'ThermostatWall', 'MAXThermostat', 'ThermostatWall2'], + 'Thermostat', 'ThermostatWall', 'MAXThermostat', 'ThermostatWall2', + 'MAXWallThermostat'], DISCOVER_BINARY_SENSORS: [ 'ShutterContact', 'Smoke', 'SmokeV2', 'Motion', 'MotionV2', 'RemoteMotion', 'WeatherSensor', 'TiltSensor', 'IPShutterContact'], @@ -234,7 +235,7 @@ def setup(hass, config): """Setup the Homematic component.""" from pyhomematic import HMConnection - component = EntityComponent(_LOGGER, DOMAIN, hass) + component = EntityComponent(_LOGGER, DOMAIN, hass, SCAN_INTERVAL) hass.data[DATA_DELAY] = config[DOMAIN].get(CONF_DELAY) hass.data[DATA_DEVINIT] = {} @@ -461,9 +462,7 @@ def _get_devices(hass, device_type, keys, proxy): _LOGGER.debug("Handling %s: %s", param, channels) for channel in channels: name = _create_ha_name( - name=device.NAME, - channel=channel, - param=param, + name=device.NAME, channel=channel, param=param, count=len(channels) ) device_dict = { @@ -623,7 +622,6 @@ class HMHub(Entity): state = self._homematic.getServiceMessages(self._name) self._state = STATE_UNKNOWN if state is None else len(state) - @Throttle(MIN_TIME_BETWEEN_UPDATE_VAR) def _update_variables_state(self): """Retrive all variable data and update hmvariable states.""" if not self._use_variables: @@ -855,11 +853,11 @@ class HMDevice(Entity): # Set callbacks for channel in channels_to_sub: - _LOGGER.debug("Subscribe channel %s from %s", - str(channel), self._name) - self._hmdevice.setEventCallback(callback=self._hm_event_callback, - bequeath=False, - channel=channel) + _LOGGER.debug( + "Subscribe channel %s from %s", str(channel), self._name) + self._hmdevice.setEventCallback( + callback=self._hm_event_callback, bequeath=False, + channel=channel) def _load_data_from_hm(self): """Load first value from pyhomematic.""" diff --git a/requirements_all.txt b/requirements_all.txt index 9e4a17198da..2aa05ef906c 100755 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -425,7 +425,7 @@ pyharmony==1.0.12 pyhik==0.0.7 # homeassistant.components.homematic -pyhomematic==0.1.18 +pyhomematic==0.1.19 # homeassistant.components.device_tracker.icloud pyicloud==0.9.1 From 2c3f55acc4cc8890e54bf6a94f5a960eee28c486 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli <pascal.vizeli@syshack.ch> Date: Fri, 13 Jan 2017 22:39:42 +0100 Subject: [PATCH 152/189] Add HMWIOSwitch to sensor, binary (#5304) --- homeassistant/components/homematic.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/homematic.py b/homeassistant/components/homematic.py index 6e3f38eaab8..7f2f8b813a4 100644 --- a/homeassistant/components/homematic.py +++ b/homeassistant/components/homematic.py @@ -61,13 +61,14 @@ HM_DEVICE_TYPES = { 'ThermostatWall', 'AreaThermostat', 'RotaryHandleSensor', 'WaterSensor', 'PowermeterGas', 'LuxSensor', 'WeatherSensor', 'WeatherStation', 'ThermostatWall2', 'TemperatureDiffSensor', - 'TemperatureSensor', 'CO2Sensor', 'IPSwitchPowermeter'], + 'TemperatureSensor', 'CO2Sensor', 'IPSwitchPowermeter', 'HMWIOSwitch'], DISCOVER_CLIMATE: [ 'Thermostat', 'ThermostatWall', 'MAXThermostat', 'ThermostatWall2', 'MAXWallThermostat'], DISCOVER_BINARY_SENSORS: [ 'ShutterContact', 'Smoke', 'SmokeV2', 'Motion', 'MotionV2', - 'RemoteMotion', 'WeatherSensor', 'TiltSensor', 'IPShutterContact'], + 'RemoteMotion', 'WeatherSensor', 'TiltSensor', 'IPShutterContact', + 'HMWIOSwitch'], DISCOVER_COVER: ['Blind', 'KeyBlind'] } From 6000c59bb559b8e37553b3f0def79c2bd84f2af2 Mon Sep 17 00:00:00 2001 From: Robbie Trencheny <me@robbiet.us> Date: Fri, 13 Jan 2017 14:02:00 -0800 Subject: [PATCH 153/189] Remove GTFS default name & string change --- homeassistant/components/sensor/gtfs.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/sensor/gtfs.py b/homeassistant/components/sensor/gtfs.py index 5769860284c..2726f1f579f 100644 --- a/homeassistant/components/sensor/gtfs.py +++ b/homeassistant/components/sensor/gtfs.py @@ -37,7 +37,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_ORIGIN): cv.string, vol.Required(CONF_DESTINATION): cv.string, vol.Required(CONF_DATA): cv.string, - vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, + vol.Optional(CONF_NAME): cv.string, }) @@ -226,9 +226,9 @@ class GTFSDepartureSensor(Entity): self.destination) if not self._departure: self._state = 0 - self._attributes = {'Info': 'No more bus today'} + self._attributes = {'Info': 'No more departures today'} if self._name == '': - self._name = (self._custom_name or "GTFS Sensor") + self._name = (self._custom_name or DEFAULT_NAME) return self._state = self._departure['minutes_until_departure'] From 6abad6b76e610b1bfb13f3f9342a2a0a53971fcf Mon Sep 17 00:00:00 2001 From: Adam Mills <adam@armills.info> Date: Fri, 13 Jan 2017 18:16:38 -0500 Subject: [PATCH 154/189] Version bump for kodi dependency (#5307) Catches timeout exceptions --- homeassistant/components/media_player/kodi.py | 2 +- requirements_all.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/media_player/kodi.py b/homeassistant/components/media_player/kodi.py index 54b95deee47..8cfa7a587fb 100644 --- a/homeassistant/components/media_player/kodi.py +++ b/homeassistant/components/media_player/kodi.py @@ -21,7 +21,7 @@ from homeassistant.const import ( from homeassistant.helpers.aiohttp_client import async_get_clientsession import homeassistant.helpers.config_validation as cv -REQUIREMENTS = ['jsonrpc-async==0.1'] +REQUIREMENTS = ['jsonrpc-async==0.2'] _LOGGER = logging.getLogger(__name__) diff --git a/requirements_all.txt b/requirements_all.txt index 2aa05ef906c..5a4ef5a2736 100755 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -278,7 +278,7 @@ insteon_hub==0.4.5 insteonlocal==0.39 # homeassistant.components.media_player.kodi -jsonrpc-async==0.1 +jsonrpc-async==0.2 # homeassistant.components.notify.kodi jsonrpc-requests==0.3 From 4b43537801a5c088329f6b12c99c95fdb2eb0e9c Mon Sep 17 00:00:00 2001 From: Pascal Vizeli <pascal.vizeli@syshack.ch> Date: Sat, 14 Jan 2017 00:57:38 +0100 Subject: [PATCH 155/189] Bugfix camera streams (#5306) * fix mjpeg streams * fix trow error on close by frontend * fix ffmpeg --- homeassistant/components/camera/ffmpeg.py | 10 ++++++++-- homeassistant/components/camera/mjpeg.py | 6 +++++- homeassistant/components/camera/synology.py | 6 +++++- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/camera/ffmpeg.py b/homeassistant/components/camera/ffmpeg.py index bb7c7ac6cdc..9c1aaa25f6f 100644 --- a/homeassistant/components/camera/ffmpeg.py +++ b/homeassistant/components/camera/ffmpeg.py @@ -84,9 +84,15 @@ class FFmpegCamera(Camera): if not data: break response.write(data) + + except asyncio.CancelledError: + _LOGGER.debug("Close stream by browser.") + response = None + finally: - self.hass.async_add_job(stream.close()) - yield from response.write_eof() + yield from stream.close() + if response is not None: + yield from response.write_eof() @property def name(self): diff --git a/homeassistant/components/camera/mjpeg.py b/homeassistant/components/camera/mjpeg.py index d3af55a91f1..4bc62d66143 100644 --- a/homeassistant/components/camera/mjpeg.py +++ b/homeassistant/components/camera/mjpeg.py @@ -124,9 +124,13 @@ class MjpegCamera(Camera): except asyncio.TimeoutError: raise HTTPGatewayTimeout() + except asyncio.CancelledError: + _LOGGER.debug("Close stream by browser.") + response = None + finally: if stream is not None: - yield from stream.close() + stream.close() if response is not None: yield from response.write_eof() diff --git a/homeassistant/components/camera/synology.py b/homeassistant/components/camera/synology.py index 6d5b4546933..d7359c14ded 100644 --- a/homeassistant/components/camera/synology.py +++ b/homeassistant/components/camera/synology.py @@ -276,9 +276,13 @@ class SynologyCamera(Camera): _LOGGER.exception("Error on %s", streaming_url) raise HTTPGatewayTimeout() + except asyncio.CancelledError: + _LOGGER.debug("Close stream by browser.") + response = None + finally: if stream is not None: - self.hass.async_add_job(stream.release()) + stream.close() if response is not None: yield from response.write_eof() From 5f7d53c06b2850d7be9fe329f28bd4f7430dfdcd Mon Sep 17 00:00:00 2001 From: Dan Cinnamon <Cinntax@users.noreply.github.com> Date: Fri, 13 Jan 2017 23:02:33 -0600 Subject: [PATCH 156/189] Bump pyenvisalink to version 2.0 (#5311) --- homeassistant/components/envisalink.py | 2 +- requirements_all.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/envisalink.py b/homeassistant/components/envisalink.py index 29ce08b2f0a..2c101a227cf 100644 --- a/homeassistant/components/envisalink.py +++ b/homeassistant/components/envisalink.py @@ -12,7 +12,7 @@ from homeassistant.const import EVENT_HOMEASSISTANT_STOP from homeassistant.helpers.entity import Entity from homeassistant.components.discovery import load_platform -REQUIREMENTS = ['pyenvisalink==1.9', 'pydispatcher==2.0.5'] +REQUIREMENTS = ['pyenvisalink==2.0', 'pydispatcher==2.0.5'] _LOGGER = logging.getLogger(__name__) DOMAIN = 'envisalink' diff --git a/requirements_all.txt b/requirements_all.txt index 5a4ef5a2736..50f940af906 100755 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -413,7 +413,7 @@ pydispatcher==2.0.5 pyemby==0.2 # homeassistant.components.envisalink -pyenvisalink==1.9 +pyenvisalink==2.0 # homeassistant.components.ifttt pyfttt==0.3 From a7cb9bdfff48b2a6ae2bd1036a99d7c09451c46e Mon Sep 17 00:00:00 2001 From: Martin Rowan <martin@rowannet.co.uk> Date: Sat, 14 Jan 2017 05:03:50 +0000 Subject: [PATCH 157/189] Fixed bootstrap to upgrade pip if mininum version not present. As parameter --only-binary in requirements.txt doesn't work on pip < 7.0.0 so install fails. This is to simplify the setup of the development environment when using pyvenv. (#5301) --- script/bootstrap_server | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/script/bootstrap_server b/script/bootstrap_server index ccb7d1a8464..38684f9266c 100755 --- a/script/bootstrap_server +++ b/script/bootstrap_server @@ -7,11 +7,19 @@ set -e cd "$(dirname "$0")/.." echo "Installing dependencies..." +# Requirements_all.txt states minimum pip version as 7.0.0 however, +# parameter --only-binary doesn't work with pip < 7.0.0. Causing +# python3 -m pip install -r requirements_all.txt to fail unless pip upgraded. + +if ! python3 -c 'import pkg_resources ; pkg_resources.require(["pip>=7.0.0"])' 2>/dev/null ; then + echo "Upgrading pip..." + python3 -m pip install -U pip +fi python3 -m pip install -r requirements_all.txt REQ_STATUS=$? -echo "Installing development dependencies.." +echo "Installing development dependencies..." python3 -m pip install -r requirements_test.txt REQ_DEV_STATUS=$? From 0cf3c22da0cae140eed50ec17d9ac26d40c55e29 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli <pascal.vizeli@syshack.ch> Date: Sat, 14 Jan 2017 06:09:02 +0100 Subject: [PATCH 158/189] Bugfix media_player volume_ up and down (#5282) * Bugfix media_player volume_ up and down * fix lint * make a coro --- .../components/media_player/__init__.py | 30 +++++++++++-------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/homeassistant/components/media_player/__init__.py b/homeassistant/components/media_player/__init__.py index 1be94976d49..2a1e5e68779 100644 --- a/homeassistant/components/media_player/__init__.py +++ b/homeassistant/components/media_player/__init__.py @@ -748,29 +748,33 @@ class MediaPlayerDevice(Entity): else: return self.async_turn_off() - def volume_up(self): - """Turn volume up for media player.""" - if self.volume_level < 1: - self.set_volume_level(min(1, self.volume_level + .1)) - + @asyncio.coroutine def async_volume_up(self): """Turn volume up for media player. - This method must be run in the event loop and returns a coroutine. + This method is a coroutine. """ - return self.hass.loop.run_in_executor(None, self.volume_up) + if hasattr(self, 'volume_up'): + # pylint: disable=no-member + yield from self.hass.run_in_executor(None, self.volume_up) - def volume_down(self): - """Turn volume down for media player.""" - if self.volume_level > 0: - self.set_volume_level(max(0, self.volume_level - .1)) + if self.volume_level < 1: + yield from self.async_set_volume_level( + min(1, self.volume_level + .1)) + @asyncio.coroutine def async_volume_down(self): """Turn volume down for media player. - This method must be run in the event loop and returns a coroutine. + This method is a coroutine. """ - return self.hass.loop.run_in_executor(None, self.volume_down) + if hasattr(self, 'volume_down'): + # pylint: disable=no-member + yield from self.hass.run_in_executor(None, self.volume_down) + + if self.volume_level > 0: + yield from self.async_set_volume_level( + max(0, self.volume_level - .1)) def media_play_pause(self): """Play or pause the media player.""" From b67cce7215fb9ed170352a93c870cdca8bf4d9bd Mon Sep 17 00:00:00 2001 From: Johann Kellerman <kellerza@gmail.com> Date: Sat, 14 Jan 2017 07:13:17 +0200 Subject: [PATCH 159/189] Add correct line numbers for yaml include directives (#5303) --- homeassistant/bootstrap.py | 2 +- homeassistant/util/yaml.py | 45 +++++++++++++++++++++++--------------- 2 files changed, 28 insertions(+), 19 deletions(-) diff --git a/homeassistant/bootstrap.py b/homeassistant/bootstrap.py index 3d03336c0fe..3b0a900d51e 100644 --- a/homeassistant/bootstrap.py +++ b/homeassistant/bootstrap.py @@ -606,7 +606,7 @@ def async_log_exception(ex, domain, config, hass): message += '{}.'.format(humanize_error(config, ex)) domain_config = config.get(domain, config) - message += " (See {}:{}). ".format( + message += " (See {}, line {}). ".format( getattr(domain_config, '__config_file__', '?'), getattr(domain_config, '__line__', '?')) diff --git a/homeassistant/util/yaml.py b/homeassistant/util/yaml.py index 1307cc1a287..64b63b31ca6 100644 --- a/homeassistant/util/yaml.py +++ b/homeassistant/util/yaml.py @@ -20,6 +20,27 @@ _SECRET_YAML = 'secrets.yaml' __SECRET_CACHE = {} # type: Dict +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): + obj = NodeStrClass(obj) + setattr(obj, '__config_file__', loader.name) + setattr(obj, '__line__', node.start_mark.line) + return obj + + # pylint: disable=too-many-ancestors class SafeLineLoader(yaml.SafeLoader): """Loader class that keeps track of line numbers.""" @@ -70,7 +91,7 @@ def _include_yaml(loader: SafeLineLoader, device_tracker: !include device_tracker.yaml """ fname = os.path.join(os.path.dirname(loader.name), node.value) - return load_yaml(fname) + return _add_reference(load_yaml(fname), loader, node) def _is_file_valid(name: str) -> bool: @@ -96,7 +117,7 @@ def _include_dir_named_yaml(loader: SafeLineLoader, for fname in _find_files(loc, '*.yaml'): filename = os.path.splitext(os.path.basename(fname))[0] mapping[filename] = load_yaml(fname) - return mapping + return _add_reference(mapping, loader, node) def _include_dir_merge_named_yaml(loader: SafeLineLoader, @@ -110,7 +131,7 @@ def _include_dir_merge_named_yaml(loader: SafeLineLoader, loaded_yaml = load_yaml(fname) if isinstance(loaded_yaml, dict): mapping.update(loaded_yaml) - return mapping + return _add_reference(mapping, loader, node) def _include_dir_list_yaml(loader: SafeLineLoader, @@ -133,7 +154,7 @@ def _include_dir_merge_list_yaml(loader: SafeLineLoader, loaded_yaml = load_yaml(fname) if isinstance(loaded_yaml, list): merged_list.extend(loaded_yaml) - return merged_list + return _add_reference(merged_list, loader, node) def _ordered_dict(loader: SafeLineLoader, @@ -165,25 +186,13 @@ def _ordered_dict(loader: SafeLineLoader, ) seen[key] = line - processed = OrderedDict(nodes) - setattr(processed, '__config_file__', loader.name) - setattr(processed, '__line__', node.start_mark.line) - return processed + return _add_reference(OrderedDict(nodes), loader, node) def _construct_seq(loader: SafeLineLoader, node: yaml.nodes.Node): """Add line number and file name to Load YAML sequence.""" obj, = loader.construct_yaml_seq(node) - - class NodeClass(list): - """Wrapper class to be able to add attributes on a list.""" - - pass - - processed = NodeClass(obj) - setattr(processed, '__config_file__', loader.name) - setattr(processed, '__line__', node.start_mark.line) - return processed + return _add_reference(obj, loader, node) def _env_var_yaml(loader: SafeLineLoader, From 394b52b9e8f8d0e88c6de4d30813c593ab85e699 Mon Sep 17 00:00:00 2001 From: Touliloup <romain.rinie@xcom.de> Date: Sat, 14 Jan 2017 06:24:58 +0100 Subject: [PATCH 160/189] Xiaomi device tracker (#5283) * [Device Tracker] Xiaomi Mi Router integration as device tracker This device tracker allow to track device connected to Xiaomi Router. Parameter: host, username (default admin) and password. * [Device Tracker] Addition of Xiaomi device tracker file in coverage --- .coveragerc | 1 + README.rst | 3 +- .../components/device_tracker/xiaomi.py | 145 ++++++++++++ .../components/device_tracker/test_xiaomi.py | 221 ++++++++++++++++++ 4 files changed, 369 insertions(+), 1 deletion(-) create mode 100644 homeassistant/components/device_tracker/xiaomi.py create mode 100644 tests/components/device_tracker/test_xiaomi.py diff --git a/.coveragerc b/.coveragerc index aa5921526de..74faed07c4a 100644 --- a/.coveragerc +++ b/.coveragerc @@ -172,6 +172,7 @@ omit = homeassistant/components/device_tracker/trackr.py homeassistant/components/device_tracker/ubus.py homeassistant/components/device_tracker/volvooncall.py + homeassistant/components/device_tracker/xiaomi.py homeassistant/components/discovery.py homeassistant/components/downloader.py homeassistant/components/emoncms_history.py diff --git a/README.rst b/README.rst index 43517760ed7..1e25b6dcc90 100644 --- a/README.rst +++ b/README.rst @@ -26,7 +26,8 @@ Examples of devices Home Assistant can interface with: `Netgear <http://netgear.com>`__, `DD-WRT <http://www.dd-wrt.com/site/index>`__, `TPLink <http://www.tp-link.us/>`__, - `ASUSWRT <http://event.asus.com/2013/nw/ASUSWRT/>`__ and any SNMP + `ASUSWRT <http://event.asus.com/2013/nw/ASUSWRT/>`__, + `Xiaomi <http://miwifi.com/>`__ and any SNMP capable Linksys WAP/WRT - `Philips Hue <http://meethue.com>`__ lights, `WeMo <http://www.belkin.com/us/Products/home-automation/c/wemo-home-automation/>`__ diff --git a/homeassistant/components/device_tracker/xiaomi.py b/homeassistant/components/device_tracker/xiaomi.py new file mode 100644 index 00000000000..ff53d1fe99f --- /dev/null +++ b/homeassistant/components/device_tracker/xiaomi.py @@ -0,0 +1,145 @@ +""" +Support for Xiaomi Mi routers. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/device_tracker.xiaomi/ +""" +import logging +import threading +from datetime import timedelta + +import requests +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 +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__) + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required(CONF_HOST): cv.string, + vol.Required(CONF_USERNAME, default='admin'): cv.string, + vol.Required(CONF_PASSWORD): cv.string +}) + + +def get_scanner(hass, config): + """Validate the configuration and return a Xiaomi Device Scanner.""" + scanner = XioamiDeviceScanner(config[DOMAIN]) + + return scanner if scanner.success_init else None + + +class XioamiDeviceScanner(DeviceScanner): + """This class queries a Xiaomi Mi router. + + Adapted from Luci scanner. + """ + + def __init__(self, config): + """Initialize the scanner.""" + host = config[CONF_HOST] + username, password = config[CONF_USERNAME], config[CONF_PASSWORD] + + self.lock = threading.Lock() + + self.last_results = {} + self.token = _get_token(host, username, password) + + self.host = host + + self.mac2name = None + self.success_init = self.token is not None + + def scan_devices(self): + """Scan for new devices and return a list with found device IDs.""" + self._update_info() + return self.last_results + + def get_device_name(self, device): + """Return the name of the given device or None if we don't know.""" + with self.lock: + if self.mac2name is None: + url = "http://{}/cgi-bin/luci/;stok={}/api/misystem/devicelist" + url = url.format(self.host, self.token) + result = _get_device_list(url) + if result: + hosts = [x for x in result + if 'mac' in x and 'name' in x] + mac2name_list = [ + (x['mac'].upper(), x['name']) for x in hosts] + self.mac2name = dict(mac2name_list) + else: + # Error, handled in the _req_json_rpc + return + return self.mac2name.get(device.upper(), None) + + @Throttle(MIN_TIME_BETWEEN_SCANS) + def _update_info(self): + """Ensure the informations from the router are up to date. + + Returns true if scanning successful. + """ + if not self.success_init: + return False + + with self.lock: + _LOGGER.info('Refreshing device list') + url = "http://{}/cgi-bin/luci/;stok={}/api/misystem/devicelist" + url = url.format(self.host, self.token) + result = _get_device_list(url) + if result: + self.last_results = [] + for device_entry in result: + # Check if the device is marked as connected + if int(device_entry['online']) == 1: + self.last_results.append(device_entry['mac']) + + return True + + return False + + +def _get_device_list(url, **kwargs): + try: + res = requests.get(url, timeout=5, **kwargs) + except requests.exceptions.Timeout: + _LOGGER.exception('Connection to the router timed out') + return + return _extract_result(res, 'list') + + +def _get_token(host, username, password): + """Get authentication token for the given host+username+password.""" + url = 'http://{}/cgi-bin/luci/api/xqsystem/login'.format(host) + data = {'username': username, 'password': password} + try: + res = requests.post(url, data=data, timeout=5) + except requests.exceptions.Timeout: + _LOGGER.exception('Connection to the router timed out') + return + return _extract_result(res, 'token') + + +def _extract_result(res, key_name): + 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') + return + try: + return result[key_name] + except KeyError: + _LOGGER.exception('No %s in response from mi router. %s', + key_name, result) + return + else: + _LOGGER.error('Invalid response from mi router: %s', res) diff --git a/tests/components/device_tracker/test_xiaomi.py b/tests/components/device_tracker/test_xiaomi.py new file mode 100644 index 00000000000..482ed7c0c0d --- /dev/null +++ b/tests/components/device_tracker/test_xiaomi.py @@ -0,0 +1,221 @@ +"""The tests for the Xiaomi router device tracker platform.""" +import logging +import unittest +from unittest import mock +from unittest.mock import patch + +import requests + +from homeassistant.components.device_tracker import DOMAIN, xiaomi as xiaomi +from homeassistant.components.device_tracker.xiaomi import get_scanner +from homeassistant.const import (CONF_HOST, CONF_USERNAME, CONF_PASSWORD, + CONF_PLATFORM) +from tests.common import get_test_home_assistant + +_LOGGER = logging.getLogger(__name__) + +INVALID_USERNAME = 'bob' +URL_AUTHORIZE = 'http://192.168.0.1/cgi-bin/luci/api/xqsystem/login' +URL_LIST_END = 'api/misystem/devicelist' + + +def mocked_requests(*args, **kwargs): + """Mock requests.get invocations.""" + class MockResponse: + """Class to represent a mocked response.""" + + def __init__(self, json_data, status_code): + """Initialize the mock response class.""" + self.json_data = json_data + self.status_code = status_code + + def json(self): + """Return the json of the response.""" + return self.json_data + + @property + def content(self): + """Return the content of the response.""" + return self.json() + + def raise_for_status(self): + """Raise an HTTPError if status is not 200.""" + if self.status_code != 200: + raise requests.HTTPError(self.status_code) + + data = kwargs.get('data') + + if data and data.get('username', None) == INVALID_USERNAME: + return MockResponse({ + "code": "401", + "msg": "Invalid token" + }, 200) + elif str(args[0]).startswith(URL_AUTHORIZE): + print("deliver authorized") + return MockResponse({ + "url": "/cgi-bin/luci/;stok=ef5860/web/home", + "token": "ef5860", + "code": "0" + }, 200) + elif str(args[0]).endswith(URL_LIST_END): + return MockResponse({ + "mac": "1C:98:EC:0E:D5:A4", + "list": [ + { + "mac": "23:83:BF:F6:38:A0", + "oname": "12255ff", + "isap": 0, + "parent": "", + "authority": { + "wan": 1, + "pridisk": 0, + "admin": 1, + "lan": 0 + }, + "push": 0, + "online": 1, + "name": "Device1", + "times": 0, + "ip": [ + { + "downspeed": "0", + "online": "496957", + "active": 1, + "upspeed": "0", + "ip": "192.168.0.25" + } + ], + "statistics": { + "downspeed": "0", + "online": "496957", + "upspeed": "0" + }, + "icon": "", + "type": 1 + }, + { + "mac": "1D:98:EC:5E:D5:A6", + "oname": "CdddFG58", + "isap": 0, + "parent": "", + "authority": { + "wan": 1, + "pridisk": 0, + "admin": 1, + "lan": 0 + }, + "push": 0, + "online": 1, + "name": "Device2", + "times": 0, + "ip": [ + { + "downspeed": "0", + "online": "347325", + "active": 1, + "upspeed": "0", + "ip": "192.168.0.3" + } + ], + "statistics": { + "downspeed": "0", + "online": "347325", + "upspeed": "0" + }, + "icon": "", + "type": 0 + }, + ], + "code": 0 + }, 200) + else: + _LOGGER.debug('UNKNOWN ROUTE') + + +class TestXiaomiDeviceScanner(unittest.TestCase): + """Xiaomi device scanner test class.""" + + def setUp(self): + """Initialize values for this testcase class.""" + self.hass = get_test_home_assistant() + + def tearDown(self): + """Stop everything that was started.""" + self.hass.stop() + + @mock.patch( + 'homeassistant.components.device_tracker.xiaomi.XioamiDeviceScanner', + return_value=mock.MagicMock()) + def test_config(self, xiaomi_mock): + """Testing minimal configuration.""" + config = { + DOMAIN: xiaomi.PLATFORM_SCHEMA({ + CONF_PLATFORM: xiaomi.DOMAIN, + CONF_HOST: '192.168.0.1', + CONF_PASSWORD: 'passwordTest' + }) + } + xiaomi.get_scanner(self.hass, config) + self.assertEqual(xiaomi_mock.call_count, 1) + self.assertEqual(xiaomi_mock.call_args, mock.call(config[DOMAIN])) + call_arg = xiaomi_mock.call_args[0][0] + self.assertEqual(call_arg['username'], 'admin') + self.assertEqual(call_arg['password'], 'passwordTest') + self.assertEqual(call_arg['host'], '192.168.0.1') + self.assertEqual(call_arg['platform'], 'device_tracker') + + @mock.patch( + 'homeassistant.components.device_tracker.xiaomi.XioamiDeviceScanner', + return_value=mock.MagicMock()) + def test_config_full(self, xiaomi_mock): + """Testing full configuration.""" + config = { + DOMAIN: xiaomi.PLATFORM_SCHEMA({ + CONF_PLATFORM: xiaomi.DOMAIN, + CONF_HOST: '192.168.0.1', + CONF_USERNAME: 'alternativeAdminName', + CONF_PASSWORD: 'passwordTest' + }) + } + xiaomi.get_scanner(self.hass, config) + self.assertEqual(xiaomi_mock.call_count, 1) + self.assertEqual(xiaomi_mock.call_args, mock.call(config[DOMAIN])) + call_arg = xiaomi_mock.call_args[0][0] + self.assertEqual(call_arg['username'], 'alternativeAdminName') + self.assertEqual(call_arg['password'], 'passwordTest') + self.assertEqual(call_arg['host'], '192.168.0.1') + self.assertEqual(call_arg['platform'], 'device_tracker') + + @patch('requests.get', side_effect=mocked_requests) + @patch('requests.post', side_effect=mocked_requests) + def test_invalid_credential(self, mock_get, mock_post): + """"Testing invalid credential handling.""" + config = { + DOMAIN: xiaomi.PLATFORM_SCHEMA({ + CONF_PLATFORM: xiaomi.DOMAIN, + CONF_HOST: '192.168.0.1', + CONF_USERNAME: INVALID_USERNAME, + CONF_PASSWORD: 'passwordTest' + }) + } + self.assertIsNone(get_scanner(self.hass, config)) + + @patch('requests.get', side_effect=mocked_requests) + @patch('requests.post', side_effect=mocked_requests) + def test_valid_credential(self, mock_get, mock_post): + """"Testing valid refresh.""" + config = { + DOMAIN: xiaomi.PLATFORM_SCHEMA({ + CONF_PLATFORM: xiaomi.DOMAIN, + CONF_HOST: '192.168.0.1', + CONF_USERNAME: 'admin', + CONF_PASSWORD: 'passwordTest' + }) + } + scanner = get_scanner(self.hass, config) + self.assertIsNotNone(scanner) + self.assertEqual(2, len(scanner.scan_devices())) + self.assertEqual("Device1", + scanner.get_device_name("23:83:BF:F6:38:A0")) + self.assertEqual("Device2", + scanner.get_device_name("1D:98:EC:5E:D5:A6")) From d58b901a78aed4eb1ff76eae0d5e55e14734ae6f Mon Sep 17 00:00:00 2001 From: Teemu R <tpr@iki.fi> Date: Sat, 14 Jan 2017 06:34:35 +0100 Subject: [PATCH 161/189] eq3btsmart: support modes and clean up the code to use climatedevice's features (#4959) * eq3btsmart: support modes and clean up the code to use climatedevice's features * eq3btsmart: re-add device state attributes adds reporting for is_locked, valve, window_open and low_battery, exposing everything the device reports currently. * eq3btsmart: bump version req * eq3btsmart: fix a typo in mode name, report unknown when not initialized * eq3btsmart: depend on newly forked python-eq3bt lib, pythonify states --- .../components/climate/eq3btsmart.py | 90 +++++++++++++++---- requirements_all.txt | 6 +- 2 files changed, 76 insertions(+), 20 deletions(-) diff --git a/homeassistant/components/climate/eq3btsmart.py b/homeassistant/components/climate/eq3btsmart.py index 72bd0b22522..41697f7b31d 100644 --- a/homeassistant/components/climate/eq3btsmart.py +++ b/homeassistant/components/climate/eq3btsmart.py @@ -8,18 +8,27 @@ import logging import voluptuous as vol -from homeassistant.components.climate import ClimateDevice, PLATFORM_SCHEMA +from homeassistant.components.climate import ( + ClimateDevice, PLATFORM_SCHEMA, PRECISION_HALVES, + STATE_UNKNOWN, STATE_AUTO, STATE_ON, STATE_OFF, +) from homeassistant.const import ( CONF_MAC, TEMP_CELSIUS, CONF_DEVICES, ATTR_TEMPERATURE) -from homeassistant.util.temperature import convert + import homeassistant.helpers.config_validation as cv -REQUIREMENTS = ['bluepy_devices==0.2.0'] +REQUIREMENTS = ['python-eq3bt==0.1.2'] _LOGGER = logging.getLogger(__name__) -ATTR_MODE = 'mode' -ATTR_MODE_READABLE = 'mode_readable' +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" DEVICE_SCHEMA = vol.Schema({ vol.Required(CONF_MAC): cv.string, @@ -48,10 +57,23 @@ class EQ3BTSmartThermostat(ClimateDevice): def __init__(self, _mac, _name): """Initialize the thermostat.""" - from bluepy_devices.devices import eq3btsmart + # we want to avoid name clash with this module.. + import eq3bt as eq3 + + self.modes = {None: STATE_UNKNOWN, # When not yet connected. + eq3.Mode.Unknown: STATE_UNKNOWN, + eq3.Mode.Auto: STATE_AUTO, + # away handled separately, here just for reverse mapping + eq3.Mode.Away: STATE_AWAY, + eq3.Mode.Closed: STATE_OFF, + eq3.Mode.Open: STATE_ON, + eq3.Mode.Manual: STATE_MANUAL, + eq3.Mode.Boost: STATE_BOOST} + + self.reverse_modes = {v: k for k, v in self.modes.items()} self._name = _name - self._thermostat = eq3btsmart.EQ3BTSmartThermostat(_mac) + self._thermostat = eq3.Thermostat(_mac) @property def name(self): @@ -63,6 +85,11 @@ class EQ3BTSmartThermostat(ClimateDevice): """Return the unit of measurement that is used.""" return TEMP_CELSIUS + @property + def precision(self): + """Return eq3bt's precision 0.5.""" + return PRECISION_HALVES + @property def current_temperature(self): """Can not report temperature, so return target_temperature.""" @@ -81,24 +108,53 @@ class EQ3BTSmartThermostat(ClimateDevice): self._thermostat.target_temperature = temperature @property - def device_state_attributes(self): - """Return the device specific state attributes.""" - return { - ATTR_MODE: self._thermostat.mode, - ATTR_MODE_READABLE: self._thermostat.mode_readable, - } + def current_operation(self): + """Current mode.""" + return self.modes[self._thermostat.mode] + + @property + def operation_list(self): + """List of available operation modes.""" + return [x for x in self.modes.values()] + + def set_operation_mode(self, operation_mode): + """Set operation mode.""" + self._thermostat.mode = self.reverse_modes[operation_mode] + + def turn_away_mode_off(self): + """Away mode off turns to AUTO mode.""" + self.set_operation_mode(STATE_AUTO) + + def turn_away_mode_on(self): + """Set away mode on.""" + self.set_operation_mode(STATE_AWAY) + + @property + def is_away_mode_on(self): + """Return if we are away.""" + return self.current_operation == STATE_AWAY @property def min_temp(self): """Return the minimum temperature.""" - return convert(self._thermostat.min_temp, TEMP_CELSIUS, - self.unit_of_measurement) + return self._thermostat.min_temp @property def max_temp(self): """Return the maximum temperature.""" - return convert(self._thermostat.max_temp, TEMP_CELSIUS, - self.unit_of_measurement) + return self._thermostat.max_temp + + @property + def device_state_attributes(self): + """Return the device specific state attributes.""" + dev_specific = { + ATTR_STATE_LOCKED: self._thermostat.locked, + ATTR_STATE_LOW_BAT: self._thermostat.low_battery, + ATTR_STATE_VALVE: self._thermostat.valve_state, + ATTR_STATE_WINDOW_OPEN: self._thermostat.window_open, + } + + return dev_specific def update(self): """Update the data from the thermostat.""" diff --git a/requirements_all.txt b/requirements_all.txt index 50f940af906..a9cdd888643 100755 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -61,9 +61,6 @@ blinkstick==1.1.8 # homeassistant.components.sensor.bitcoin blockchain==1.3.3 -# homeassistant.components.climate.eq3btsmart -# bluepy_devices==0.2.0 - # homeassistant.components.notify.aws_lambda # homeassistant.components.notify.aws_sns # homeassistant.components.notify.aws_sqs @@ -478,6 +475,9 @@ pysnmp==4.3.2 # homeassistant.components.digital_ocean python-digitalocean==1.10.1 +# homeassistant.components.climate.eq3btsmart +python-eq3bt==0.1.2 + # homeassistant.components.sensor.darksky python-forecastio==1.3.5 From 9f765836f8726bffbfa1c01d7a655bdf5262ac1f Mon Sep 17 00:00:00 2001 From: Johann Kellerman <kellerza@gmail.com> Date: Sat, 14 Jan 2017 08:01:47 +0200 Subject: [PATCH 162/189] [core] Add 'packages' to the config (#5140) * Initial * Merge dicts and lists * feedback * Move to homeassistant * feedback * increase_coverage * kick_the_hound --- homeassistant/bootstrap.py | 4 + homeassistant/components/script.py | 2 +- homeassistant/config.py | 101 ++++++++++++++++++++++- homeassistant/const.py | 1 + script/inspect_schemas.py | 59 ++++++++++++++ tests/test_config.py | 125 +++++++++++++++++++++++++++++ 6 files changed, 288 insertions(+), 4 deletions(-) create mode 100755 script/inspect_schemas.py diff --git a/homeassistant/bootstrap.py b/homeassistant/bootstrap.py index 3b0a900d51e..da7886ad1e8 100644 --- a/homeassistant/bootstrap.py +++ b/homeassistant/bootstrap.py @@ -395,6 +395,10 @@ def async_from_config_dict(config: Dict[str, Any], if not loader.PREPARED: yield from hass.loop.run_in_executor(None, loader.prepare, hass) + # Merge packages + conf_util.merge_packages_config( + config, core_config.get(conf_util.CONF_PACKAGES, {})) + # Make a copy because we are mutating it. # Use OrderedDict in case original one was one. # Convert values to dictionaries if they are None diff --git a/homeassistant/components/script.py b/homeassistant/components/script.py index 05cbc5d0a80..1cca7c8d790 100644 --- a/homeassistant/components/script.py +++ b/homeassistant/components/script.py @@ -42,7 +42,7 @@ _SCRIPT_ENTRY_SCHEMA = vol.Schema({ }) CONFIG_SCHEMA = vol.Schema({ - vol.Required(DOMAIN): vol.Schema({cv.slug: _SCRIPT_ENTRY_SCHEMA}) + DOMAIN: vol.Schema({cv.slug: _SCRIPT_ENTRY_SCHEMA}) }, extra=vol.ALLOW_EXTRA) SCRIPT_SERVICE_SCHEMA = vol.Schema(dict) diff --git a/homeassistant/config.py b/homeassistant/config.py index f2f642de8ea..eb29212a67d 100644 --- a/homeassistant/config.py +++ b/homeassistant/config.py @@ -1,22 +1,23 @@ """Module to help with parsing and generating configuration files.""" import asyncio +from collections import OrderedDict import logging import os import shutil from types import MappingProxyType - # pylint: disable=unused-import from typing import Any, Tuple # NOQA import voluptuous as vol from homeassistant.const import ( - CONF_LATITUDE, CONF_LONGITUDE, CONF_NAME, CONF_UNIT_SYSTEM, + CONF_LATITUDE, CONF_LONGITUDE, CONF_NAME, CONF_PACKAGES, CONF_UNIT_SYSTEM, CONF_TIME_ZONE, CONF_CUSTOMIZE, CONF_ELEVATION, CONF_UNIT_SYSTEM_METRIC, CONF_UNIT_SYSTEM_IMPERIAL, CONF_TEMPERATURE_UNIT, TEMP_CELSIUS, __version__) -from homeassistant.core import valid_entity_id +from homeassistant.core import valid_entity_id, DOMAIN as CONF_CORE from homeassistant.exceptions import HomeAssistantError +from homeassistant.loader import get_component from homeassistant.util.yaml import load_yaml import homeassistant.helpers.config_validation as cv from homeassistant.helpers.entity import set_customize @@ -101,6 +102,11 @@ def _valid_customize(value): return value +PACKAGES_CONFIG_SCHEMA = vol.Schema({ + cv.slug: vol.Schema( # Package names are slugs + {cv.slug: vol.Any(dict, list)}) # Only slugs for component names +}) + CORE_CONFIG_SCHEMA = vol.Schema({ CONF_NAME: vol.Coerce(str), CONF_LATITUDE: cv.latitude, @@ -111,6 +117,7 @@ CORE_CONFIG_SCHEMA = vol.Schema({ CONF_TIME_ZONE: cv.time_zone, vol.Required(CONF_CUSTOMIZE, default=MappingProxyType({})): _valid_customize, + vol.Optional(CONF_PACKAGES, default={}): PACKAGES_CONFIG_SCHEMA, }) @@ -357,3 +364,91 @@ def async_process_ha_core_config(hass, config): _LOGGER.warning( 'Incomplete core config. Auto detected %s', ', '.join('{}: {}'.format(key, val) for key, val in discovered)) + + +def _log_pkg_error(package, component, config, message): + """Log an error while merging.""" + message = "Package {} setup failed. Component {} {}".format( + package, component, message) + + pack_config = config[CONF_CORE][CONF_PACKAGES].get(package, config) + message += " (See {}:{}). ".format( + getattr(pack_config, '__config_file__', '?'), + getattr(pack_config, '__line__', '?')) + + _LOGGER.error(message) + + +def _identify_config_schema(module): + """Extract the schema and identify list or dict based.""" + try: + schema = module.CONFIG_SCHEMA.schema[module.DOMAIN] + except (AttributeError, KeyError): + return (None, None) + t_schema = str(schema) + if (t_schema.startswith('<function ordered_dict') or + t_schema.startswith('<Schema({<function slug')): + return ('dict', schema) + if t_schema.startswith('All(<function ensure_list'): + return ('list', schema) + return '', schema + + +def merge_packages_config(config, packages): + """Merge packages into the top-level config. Mutate config.""" + # pylint: disable=too-many-nested-blocks + PACKAGES_CONFIG_SCHEMA(packages) + for pack_name, pack_conf in packages.items(): + for comp_name, comp_conf in pack_conf.items(): + component = get_component(comp_name) + + if component is None: + _log_pkg_error(pack_name, comp_name, config, "does not exist") + continue + + if hasattr(component, 'PLATFORM_SCHEMA'): + config[comp_name] = cv.ensure_list(config.get(comp_name)) + config[comp_name].extend(cv.ensure_list(comp_conf)) + continue + + if hasattr(component, 'CONFIG_SCHEMA'): + merge_type, _ = _identify_config_schema(component) + + if merge_type == 'list': + config[comp_name] = cv.ensure_list(config.get(comp_name)) + config[comp_name].extend(cv.ensure_list(comp_conf)) + continue + + if merge_type == 'dict': + if not isinstance(comp_conf, dict): + _log_pkg_error( + pack_name, comp_name, config, + "cannot be merged. Expected a dict.") + continue + + if comp_name not in config: + config[comp_name] = OrderedDict() + + if not isinstance(config[comp_name], dict): + _log_pkg_error( + pack_name, comp_name, config, + "cannot be merged. Dict expected in main config.") + continue + + for key, val in comp_conf.items(): + if key in config[comp_name]: + _log_pkg_error(pack_name, comp_name, config, + "duplicate key '{}'".format(key)) + continue + config[comp_name][key] = val + continue + + # The last merge type are sections that may occur only once + if comp_name in config: + _log_pkg_error( + pack_name, comp_name, config, "may occur only once" + " and it already exist in your main config") + continue + config[comp_name] = comp_conf + + return config diff --git a/homeassistant/const.py b/homeassistant/const.py index d266a3aae55..bbc41bda72e 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -109,6 +109,7 @@ CONF_MONITORED_VARIABLES = 'monitored_variables' CONF_NAME = 'name' CONF_OFFSET = 'offset' CONF_OPTIMISTIC = 'optimistic' +CONF_PACKAGES = 'packages' CONF_PASSWORD = 'password' CONF_PATH = 'path' CONF_PAYLOAD = 'payload' diff --git a/script/inspect_schemas.py b/script/inspect_schemas.py new file mode 100755 index 00000000000..f2fdff22f7a --- /dev/null +++ b/script/inspect_schemas.py @@ -0,0 +1,59 @@ +#!/usr/bin/env python3 +"""Inspect all component SCHEMAS.""" +import os +import importlib +import pkgutil + +from homeassistant.config import _identify_config_schema +from homeassistant.scripts.check_config import color + + +def explore_module(package): + """Explore the modules.""" + module = importlib.import_module(package) + if not hasattr(module, '__path__'): + return [] + for _, name, _ in pkgutil.iter_modules(module.__path__, package + '.'): + yield name + + +def main(): + """Main section of the script.""" + if not os.path.isfile('requirements_all.txt'): + print('Run this from HA root dir') + return + + msg = {} + + def add_msg(key, item): + """Add a message.""" + if key not in msg: + msg[key] = [] + msg[key].append(item) + + for package in explore_module('homeassistant.components'): + module = importlib.import_module(package) + module_name = getattr(module, 'DOMAIN', module.__name__) + + if hasattr(module, 'PLATFORM_SCHEMA'): + if hasattr(module, 'CONFIG_SCHEMA'): + add_msg('WARNING', "Module {} contains PLATFORM and CONFIG " + "schemas".format(module_name)) + add_msg('PLATFORM SCHEMA', module_name) + continue + + if not hasattr(module, 'CONFIG_SCHEMA'): + add_msg('NO SCHEMA', module_name) + continue + + schema_type, schema = _identify_config_schema(module) + + add_msg("CONFIG_SCHEMA " + schema_type, module_name + ' ' + + color('cyan', str(schema)[:60])) + + for key in sorted(msg): + print("\n{}\n - {}".format(key, '\n - '.join(msg[key]))) + + +if __name__ == '__main__': + main() diff --git a/tests/test_config.py b/tests/test_config.py index ff0498d06af..455ebe33c61 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -357,3 +357,128 @@ class TestConfig(unittest.TestCase): assert self.hass.config.location_name == blankConfig.location_name assert self.hass.config.units == blankConfig.units assert self.hass.config.time_zone == blankConfig.time_zone + + +# pylint: disable=redefined-outer-name +@pytest.fixture +def merge_log_err(hass): + """Patch _merge_log_error from packages.""" + with mock.patch('homeassistant.config._LOGGER.error') \ + as logerr: + yield logerr + + +def test_merge(merge_log_err): + """Test if we can merge packages.""" + packages = { + 'pack_dict': {'input_boolean': {'ib1': None}}, + 'pack_11': {'input_select': {'is1': None}}, + 'pack_list': {'light': {'platform': 'test'}}, + 'pack_list2': {'light': [{'platform': 'test'}]}, + } + config = { + config_util.CONF_CORE: {config_util.CONF_PACKAGES: packages}, + 'input_boolean': {'ib2': None}, + 'light': {'platform': 'test'} + } + config_util.merge_packages_config(config, packages) + + assert merge_log_err.call_count == 0 + assert len(config) == 4 + assert len(config['input_boolean']) == 2 + assert len(config['input_select']) == 1 + assert len(config['light']) == 3 + + +def test_merge_new(merge_log_err): + """Test adding new components to outer scope.""" + packages = { + 'pack_1': {'light': [{'platform': 'one'}]}, + 'pack_11': {'input_select': {'ib1': None}}, + 'pack_2': { + 'light': {'platform': 'one'}, + 'panel_custom': {'pan1': None}, + 'api': {}}, + } + config = { + config_util.CONF_CORE: {config_util.CONF_PACKAGES: packages}, + } + config_util.merge_packages_config(config, packages) + + assert merge_log_err.call_count == 0 + assert 'api' in config + assert len(config) == 5 + assert len(config['light']) == 2 + assert len(config['panel_custom']) == 1 + + +def test_merge_type_mismatch(merge_log_err): + """Test if we have a type mismatch for packages.""" + packages = { + 'pack_1': {'input_boolean': [{'ib1': None}]}, + 'pack_11': {'input_select': {'ib1': None}}, + 'pack_2': {'light': {'ib1': None}}, # light gets merged - ensure_list + } + config = { + config_util.CONF_CORE: {config_util.CONF_PACKAGES: packages}, + 'input_boolean': {'ib2': None}, + 'input_select': [{'ib2': None}], + 'light': [{'platform': 'two'}] + } + config_util.merge_packages_config(config, packages) + + assert merge_log_err.call_count == 2 + assert len(config) == 4 + assert len(config['input_boolean']) == 1 + assert len(config['light']) == 2 + + +def test_merge_once_only(merge_log_err): + """Test if we have a merge for a comp that may occur only once.""" + packages = { + 'pack_1': {'homeassistant': {}}, + 'pack_2': { + 'mqtt': {}, + 'api': {}, # No config schema + }, + } + config = { + config_util.CONF_CORE: {config_util.CONF_PACKAGES: packages}, + 'mqtt': {}, 'api': {} + } + config_util.merge_packages_config(config, packages) + assert merge_log_err.call_count == 3 + assert len(config) == 3 + + +def test_merge_id_schema(hass): + """Test if we identify the config schemas correctly.""" + types = { + 'panel_custom': 'list', + 'group': 'dict', + 'script': 'dict', + 'input_boolean': 'dict', + 'shell_command': 'dict', + 'qwikswitch': '', + } + for name, expected_type in types.items(): + module = config_util.get_component(name) + typ, _ = config_util._identify_config_schema(module) + assert typ == expected_type, "{} expected {}, got {}".format( + name, expected_type, typ) + + +def test_merge_duplicate_keys(merge_log_err): + """Test if keys in dicts are duplicates.""" + packages = { + 'pack_1': {'input_select': {'ib1': None}}, + } + config = { + config_util.CONF_CORE: {config_util.CONF_PACKAGES: packages}, + 'input_select': {'ib1': None}, + } + config_util.merge_packages_config(config, packages) + + assert merge_log_err.call_count == 1 + assert len(config) == 2 + assert len(config['input_select']) == 1 From 0da8418f3fca44f562887fc0697d8cb8dbc2bb25 Mon Sep 17 00:00:00 2001 From: William Scanlon <wjs.scanlon@gmail.com> Date: Sat, 14 Jan 2017 01:08:13 -0500 Subject: [PATCH 163/189] Wink fan support (#5174) * Initial commit for Wink fan support * Added fan to discovery list * Raise NotImplementedError and fixed is_on * Added speed property * Update __init__.py --- homeassistant/components/fan/__init__.py | 50 +++++++++++-- homeassistant/components/fan/demo.py | 24 +++++-- homeassistant/components/fan/isy994.py | 6 +- homeassistant/components/fan/wink.py | 92 ++++++++++++++++++++++++ homeassistant/components/wink.py | 5 +- requirements_all.txt | 4 +- tests/components/fan/test_demo.py | 9 +++ 7 files changed, 177 insertions(+), 13 deletions(-) create mode 100644 homeassistant/components/fan/wink.py diff --git a/homeassistant/components/fan/__init__.py b/homeassistant/components/fan/__init__.py index b67b4d2ad24..efb7e0b1496 100644 --- a/homeassistant/components/fan/__init__.py +++ b/homeassistant/components/fan/__init__.py @@ -33,9 +33,11 @@ ENTITY_ID_FORMAT = DOMAIN + '.{}' ATTR_SUPPORTED_FEATURES = 'supported_features' SUPPORT_SET_SPEED = 1 SUPPORT_OSCILLATE = 2 +SUPPORT_DIRECTION = 4 SERVICE_SET_SPEED = 'set_speed' SERVICE_OSCILLATE = 'oscillate' +SERVICE_SET_DIRECTION = 'set_direction' SPEED_OFF = 'off' SPEED_LOW = 'low' @@ -43,15 +45,20 @@ SPEED_MED = 'med' SPEED_MEDIUM = 'medium' SPEED_HIGH = 'high' +DIRECTION_FORWARD = 'forward' +DIRECTION_REVERSE = 'reverse' + ATTR_SPEED = 'speed' ATTR_SPEED_LIST = 'speed_list' ATTR_OSCILLATING = 'oscillating' +ATTR_DIRECTION = 'direction' PROP_TO_ATTR = { 'speed': ATTR_SPEED, 'speed_list': ATTR_SPEED_LIST, 'oscillating': ATTR_OSCILLATING, 'supported_features': ATTR_SUPPORTED_FEATURES, + 'direction': ATTR_DIRECTION, } # type: dict FAN_SET_SPEED_SCHEMA = vol.Schema({ @@ -77,6 +84,11 @@ FAN_TOGGLE_SCHEMA = vol.Schema({ vol.Required(ATTR_ENTITY_ID): cv.entity_ids }) +FAN_SET_DIRECTION_SCHEMA = vol.Schema({ + vol.Required(ATTR_ENTITY_ID): cv.entity_ids, + vol.Optional(ATTR_DIRECTION): cv.string +}) # type: dict + _LOGGER = logging.getLogger(__name__) @@ -141,6 +153,18 @@ def set_speed(hass, entity_id: str=None, speed: str=None) -> None: hass.services.call(DOMAIN, SERVICE_SET_SPEED, data) +def set_direction(hass, entity_id: str=None, direction: str=None) -> None: + """Set direction for all or specified fan.""" + data = { + key: value for key, value in [ + (ATTR_ENTITY_ID, entity_id), + (ATTR_DIRECTION, direction), + ] if value is not None + } + + hass.services.call(DOMAIN, SERVICE_SET_DIRECTION, data) + + def setup(hass, config: dict) -> None: """Expose fan control via statemachine and services.""" component = EntityComponent( @@ -158,7 +182,8 @@ def setup(hass, config: dict) -> None: service_fun = None for service_def in [SERVICE_TURN_ON, SERVICE_TURN_OFF, - SERVICE_SET_SPEED, SERVICE_OSCILLATE]: + SERVICE_SET_SPEED, SERVICE_OSCILLATE, + SERVICE_SET_DIRECTION]: if service_def == service.service: service_fun = service_def break @@ -191,6 +216,10 @@ def setup(hass, config: dict) -> None: descriptions.get(SERVICE_OSCILLATE), schema=FAN_OSCILLATE_SCHEMA) + hass.services.register(DOMAIN, SERVICE_SET_DIRECTION, handle_fan_service, + descriptions.get(SERVICE_SET_DIRECTION), + schema=FAN_SET_DIRECTION_SCHEMA) + return True @@ -201,7 +230,11 @@ class FanEntity(ToggleEntity): def set_speed(self: ToggleEntity, speed: str) -> None: """Set the speed of the fan.""" - pass + raise NotImplementedError() + + def set_direction(self: ToggleEntity, direction: str) -> None: + """Set the direction of the fan.""" + raise NotImplementedError() def turn_on(self: ToggleEntity, speed: str=None, **kwargs) -> None: """Turn on the fan.""" @@ -218,14 +251,23 @@ class FanEntity(ToggleEntity): @property def is_on(self): """Return true if the entity is on.""" - return self.state_attributes.get(ATTR_SPEED, STATE_UNKNOWN) \ - not in [SPEED_OFF, STATE_UNKNOWN] + return self.speed not in [SPEED_OFF, STATE_UNKNOWN] + + @property + def speed(self) -> str: + """Return the current speed.""" + return None @property def speed_list(self: ToggleEntity) -> list: """Get the list of available speeds.""" return [] + @property + def current_direction(self) -> str: + """Return the current direction of the fan.""" + return None + @property def state_attributes(self: ToggleEntity) -> dict: """Return optional state attributes.""" diff --git a/homeassistant/components/fan/demo.py b/homeassistant/components/fan/demo.py index ba2deb83125..7ba6b4d67fb 100644 --- a/homeassistant/components/fan/demo.py +++ b/homeassistant/components/fan/demo.py @@ -7,14 +7,14 @@ https://home-assistant.io/components/demo/ from homeassistant.components.fan import (SPEED_LOW, SPEED_MED, SPEED_HIGH, FanEntity, SUPPORT_SET_SPEED, - SUPPORT_OSCILLATE) + SUPPORT_OSCILLATE, SUPPORT_DIRECTION) from homeassistant.const import STATE_OFF FAN_NAME = 'Living Room Fan' FAN_ENTITY_ID = 'fan.living_room_fan' -DEMO_SUPPORT = SUPPORT_SET_SPEED | SUPPORT_OSCILLATE +DEMO_SUPPORT = SUPPORT_SET_SPEED | SUPPORT_OSCILLATE | SUPPORT_DIRECTION # pylint: disable=unused-argument @@ -31,8 +31,9 @@ class DemoFan(FanEntity): def __init__(self, hass, name: str, initial_state: str) -> None: """Initialize the entity.""" self.hass = hass - self.speed = initial_state + self._speed = initial_state self.oscillating = False + self.direction = "forward" self._name = name @property @@ -45,6 +46,11 @@ class DemoFan(FanEntity): """No polling needed for a demo fan.""" return False + @property + def speed(self) -> str: + """Return the current speed.""" + return self._speed + @property def speed_list(self) -> list: """Get the list of available speeds.""" @@ -61,7 +67,12 @@ class DemoFan(FanEntity): def set_speed(self, speed: str) -> None: """Set the speed of the fan.""" - self.speed = speed + self._speed = speed + self.update_ha_state() + + def set_direction(self, direction: str) -> None: + """Set the direction of the fan.""" + self.direction = direction self.update_ha_state() def oscillate(self, oscillating: bool) -> None: @@ -69,6 +80,11 @@ class DemoFan(FanEntity): self.oscillating = oscillating self.update_ha_state() + @property + def current_direction(self) -> str: + """Fan direction.""" + return self.direction + @property def supported_features(self) -> int: """Flag supported features.""" diff --git a/homeassistant/components/fan/isy994.py b/homeassistant/components/fan/isy994.py index 2deb938d337..fd0690f4253 100644 --- a/homeassistant/components/fan/isy994.py +++ b/homeassistant/components/fan/isy994.py @@ -64,7 +64,11 @@ class ISYFanDevice(isy.ISYDevice, FanEntity): def __init__(self, node) -> None: """Initialize the ISY994 fan device.""" isy.ISYDevice.__init__(self, node) - self.speed = self.state + + @property + def speed(self) -> str: + """Return the current speed.""" + return self.state @property def state(self) -> str: diff --git a/homeassistant/components/fan/wink.py b/homeassistant/components/fan/wink.py new file mode 100644 index 00000000000..066dbfcb561 --- /dev/null +++ b/homeassistant/components/fan/wink.py @@ -0,0 +1,92 @@ +""" +Support for Wink fans. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/fan.wink/ +""" +import logging + +from homeassistant.components.fan import (FanEntity, SPEED_HIGH, + SPEED_LOW, SPEED_MEDIUM, + STATE_UNKNOWN) +from homeassistant.helpers.entity import ToggleEntity +from homeassistant.components.wink import WinkDevice + +_LOGGER = logging.getLogger(__name__) + +SPEED_LOWEST = "lowest" +SPEED_AUTO = "auto" + + +def setup_platform(hass, config, add_devices, discovery_info=None): + """Setup the Wink platform.""" + import pywink + + add_devices(WinkFanDevice(fan, hass) for fan in pywink.get_fans()) + + +class WinkFanDevice(WinkDevice, FanEntity): + """Representation of a Wink fan.""" + + def __init__(self, wink, hass): + """Initialize the fan.""" + WinkDevice.__init__(self, wink, hass) + + def set_drection(self: ToggleEntity, direction: str) -> None: + """Set the direction of the fan.""" + self.wink.set_fan_direction(direction) + + def set_speed(self: ToggleEntity, speed: str) -> None: + """Set the speed of the fan.""" + self.wink.set_fan_speed(speed) + + def turn_on(self: ToggleEntity, speed: str=None, **kwargs) -> None: + """Turn on the fan.""" + self.wink.set_state(True) + + def turn_off(self: ToggleEntity, **kwargs) -> None: + """Turn off the fan.""" + self.wink.set_state(False) + + @property + def is_on(self): + """Return true if the entity is on.""" + return self.wink.state() + + @property + def speed(self) -> str: + """Return the current speed.""" + current_wink_speed = self.wink.current_fan_speed() + if SPEED_AUTO == current_wink_speed: + return SPEED_AUTO + if SPEED_LOWEST == current_wink_speed: + return SPEED_LOWEST + if SPEED_LOW == current_wink_speed: + return SPEED_LOW + if SPEED_MEDIUM == current_wink_speed: + return SPEED_MEDIUM + if SPEED_HIGH == current_wink_speed: + return SPEED_HIGH + return STATE_UNKNOWN + + @property + def current_direction(self): + """Return direction of the fan [forward, reverse].""" + return self.wink.current_fan_direction() + + @property + def speed_list(self: ToggleEntity) -> list: + """Get the list of available speeds.""" + wink_supported_speeds = self.wink.fan_speeds() + supported_speeds = [] + if SPEED_AUTO in wink_supported_speeds: + supported_speeds.append(SPEED_AUTO) + if SPEED_LOWEST in wink_supported_speeds: + supported_speeds.append(SPEED_LOWEST) + if SPEED_LOW in wink_supported_speeds: + supported_speeds.append(SPEED_LOW) + if SPEED_MEDIUM in wink_supported_speeds: + supported_speeds.append(SPEED_MEDIUM) + if SPEED_HIGH in wink_supported_speeds: + supported_speeds.append(SPEED_HIGH) + return supported_speeds diff --git a/homeassistant/components/wink.py b/homeassistant/components/wink.py index affeb376f5c..39c4c21aaa5 100644 --- a/homeassistant/components/wink.py +++ b/homeassistant/components/wink.py @@ -15,7 +15,7 @@ from homeassistant.const import ( from homeassistant.helpers.entity import Entity import homeassistant.helpers.config_validation as cv -REQUIREMENTS = ['python-wink==0.11.0', 'pubnubsub-handler==0.0.5'] +REQUIREMENTS = ['python-wink==0.12.0', 'pubnubsub-handler==0.0.7'] _LOGGER = logging.getLogger(__name__) @@ -50,7 +50,8 @@ CONFIG_SCHEMA = vol.Schema({ }, extra=vol.ALLOW_EXTRA) WINK_COMPONENTS = [ - 'binary_sensor', 'sensor', 'light', 'switch', 'lock', 'cover', 'climate' + 'binary_sensor', 'sensor', 'light', 'switch', 'lock', 'cover', 'climate', + 'fan' ] diff --git a/requirements_all.txt b/requirements_all.txt index a9cdd888643..1b13985963a 100755 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -362,7 +362,7 @@ proliphix==0.4.1 psutil==5.0.1 # homeassistant.components.wink -pubnubsub-handler==0.0.5 +pubnubsub-handler==0.0.7 # homeassistant.components.notify.pushbullet pushbullet.py==0.10.0 @@ -512,7 +512,7 @@ python-twitch==1.3.0 python-vlc==1.1.2 # homeassistant.components.wink -python-wink==0.11.0 +python-wink==0.12.0 # homeassistant.components.device_tracker.trackr pytrackr==0.0.5 diff --git a/tests/components/fan/test_demo.py b/tests/components/fan/test_demo.py index 81e03c13705..2a0de549b99 100644 --- a/tests/components/fan/test_demo.py +++ b/tests/components/fan/test_demo.py @@ -55,6 +55,15 @@ class TestDemoFan(unittest.TestCase): self.hass.block_till_done() self.assertEqual(STATE_OFF, self.get_entity().state) + def test_set_direction(self): + """Test setting the direction of the device.""" + self.assertEqual(STATE_OFF, self.get_entity().state) + + fan.set_direction(self.hass, FAN_ENTITY_ID, fan.DIRECTION_REVERSE) + self.hass.block_till_done() + self.assertEqual(fan.DIRECTION_REVERSE, + self.get_entity().attributes.get('direction')) + def test_set_speed(self): """Test setting the speed of the device.""" self.assertEqual(STATE_OFF, self.get_entity().state) From d6747d6aafa51d37356af177715f10156c31ec29 Mon Sep 17 00:00:00 2001 From: Matthew Garrett <mjg59@coreos.com> Date: Fri, 13 Jan 2017 22:15:43 -0800 Subject: [PATCH 164/189] Add support for Zengge Bluetooth bulbs (#5196) * Add support for Zengge Bluetooth bulbs Adds support for the Zengge Bluetooth RGBW bulbs. These are sold under a number of brands, including Flux. The bulbs do not support full RGBW control - they turn off the RGB LEDs when white is enabled, and vice versa. * Update zengge.py --- .coveragerc | 1 + homeassistant/components/light/zengge.py | 146 +++++++++++++++++++++++ requirements_all.txt | 3 + 3 files changed, 150 insertions(+) create mode 100644 homeassistant/components/light/zengge.py diff --git a/.coveragerc b/.coveragerc index 74faed07c4a..3862b3015e4 100644 --- a/.coveragerc +++ b/.coveragerc @@ -195,6 +195,7 @@ omit = homeassistant/components/light/tikteck.py homeassistant/components/light/x10.py homeassistant/components/light/yeelight.py + homeassistant/components/light/zengge.py homeassistant/components/lirc.py homeassistant/components/media_player/aquostv.py homeassistant/components/media_player/braviatv.py diff --git a/homeassistant/components/light/zengge.py b/homeassistant/components/light/zengge.py new file mode 100644 index 00000000000..74992a9d633 --- /dev/null +++ b/homeassistant/components/light/zengge.py @@ -0,0 +1,146 @@ +""" +Support for Zengge lights. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/light.zengge/ +""" +import logging + +import voluptuous as vol + +from homeassistant.const import CONF_DEVICES, CONF_NAME +from homeassistant.components.light import ( + ATTR_RGB_COLOR, ATTR_WHITE_VALUE, + SUPPORT_RGB_COLOR, SUPPORT_WHITE_VALUE, Light, PLATFORM_SCHEMA) +import homeassistant.helpers.config_validation as cv + +REQUIREMENTS = ['zengge==0.2'] + +_LOGGER = logging.getLogger(__name__) + +SUPPORT_ZENGGE_LED = (SUPPORT_RGB_COLOR | SUPPORT_WHITE_VALUE) + +DEVICE_SCHEMA = vol.Schema({ + vol.Optional(CONF_NAME): cv.string, +}) + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Optional(CONF_DEVICES, default={}): {cv.string: DEVICE_SCHEMA}, +}) + + +# pylint: disable=unused-argument +def setup_platform(hass, config, add_devices, discovery_info=None): + """Set up the Zengge platform.""" + lights = [] + for address, device_config in config[CONF_DEVICES].items(): + device = {} + device['name'] = device_config[CONF_NAME] + device['address'] = address + light = ZenggeLight(device) + if light.is_valid: + lights.append(light) + + add_devices(lights) + + +class ZenggeLight(Light): + """Representation of a Zengge light.""" + + def __init__(self, device): + """Initialize the light.""" + import zengge + + self._name = device['name'] + self._address = device['address'] + self.is_valid = True + self._bulb = zengge.zengge(self._address) + self._white = 0 + self._rgb = (0, 0, 0) + self._state = False + if self._bulb.connect() is False: + self.is_valid = False + _LOGGER.error( + "Failed to connect to bulb %s, %s", self._address, self._name) + return + self.update() + + @property + def unique_id(self): + """Return the ID of this light.""" + return "{}.{}".format(self.__class__, self._address) + + @property + def name(self): + """Return the name of the device if any.""" + return self._name + + @property + def is_on(self): + """Return true if device is on.""" + return self._state + + @property + def rgb_color(self): + """Return the color property.""" + return self._rgb + + @property + def white_value(self): + """Return the white property.""" + return self._white + + @property + def supported_features(self): + """Flag supported features.""" + return SUPPORT_ZENGGE_LED + + @property + def should_poll(self): + """Feel free to poll.""" + return True + + @property + def assumed_state(self): + """We can report the actual state.""" + return False + + def set_rgb(self, red, green, blue): + """Set the rgb state.""" + return self._bulb.set_rgb(red, green, blue) + + def set_white(self, white): + """Set the white state.""" + return self._bulb.set_white(white) + + def turn_on(self, **kwargs): + """Turn the specified light on.""" + self._state = True + self._bulb.on() + + rgb = kwargs.get(ATTR_RGB_COLOR) + white = kwargs.get(ATTR_WHITE_VALUE) + + if white is not None: + self._white = white + self._rgb = (0, 0, 0) + + if rgb is not None: + self._white = 0 + self._rgb = rgb + + if self._white != 0: + self.set_white(self._white) + else: + self.set_rgb(self._rgb[0], self._rgb[1], self._rgb[2]) + + def turn_off(self, **kwargs): + """Turn the specified light off.""" + self._state = False + self._bulb.off() + + def update(self): + """Synchronise internal state with the actual light state.""" + self._rgb = self._bulb.get_colour() + self._white = self._bulb.get_white() + self._state = self._bulb.get_on() diff --git a/requirements_all.txt b/requirements_all.txt index 1b13985963a..099711751ce 100755 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -659,5 +659,8 @@ yahoo-finance==1.4.0 # homeassistant.components.sensor.yweather yahooweather==0.8 +# homeassistant.components.light.zengge +zengge==0.2 + # homeassistant.components.zeroconf zeroconf==0.17.6 From 5bba9a63a5b6de101858a2537835aabf63417faf Mon Sep 17 00:00:00 2001 From: Teemu R <tpr@iki.fi> Date: Sat, 14 Jan 2017 07:20:47 +0100 Subject: [PATCH 165/189] switch.tplink: bump to the newest release of pyhs100 (#5308) --- homeassistant/components/switch/tplink.py | 3 +-- requirements_all.txt | 6 +++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/homeassistant/components/switch/tplink.py b/homeassistant/components/switch/tplink.py index 44fecf37e56..2457e49f955 100644 --- a/homeassistant/components/switch/tplink.py +++ b/homeassistant/components/switch/tplink.py @@ -14,8 +14,7 @@ from homeassistant.components.switch import (SwitchDevice, PLATFORM_SCHEMA) from homeassistant.const import (CONF_HOST, CONF_NAME) import homeassistant.helpers.config_validation as cv -REQUIREMENTS = ['https://github.com/GadgetReactor/pyHS100/archive/' - '45fc3548882628bcde3e3d365db341849457bef2.zip#pyHS100==0.2.2'] +REQUIREMENTS = ['pyHS100==0.2.3'] _LOGGER = logging.getLogger(__name__) diff --git a/requirements_all.txt b/requirements_all.txt index 099711751ce..ca9f9f422a7 100755 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -180,9 +180,6 @@ hikvision==0.4 # homeassistant.components.nest http://github.com/technicalpickles/python-nest/archive/e6c9d56a8df455d4d7746389811f2c1387e8cb33.zip#python-nest==3.0.3 -# homeassistant.components.switch.tplink -https://github.com/GadgetReactor/pyHS100/archive/45fc3548882628bcde3e3d365db341849457bef2.zip#pyHS100==0.2.2 - # homeassistant.components.switch.dlink https://github.com/LinuxChristian/pyW215/archive/v0.3.7.zip#pyW215==0.3.7 @@ -376,6 +373,9 @@ pwaqi==1.3 # homeassistant.components.sensor.cpuspeed py-cpuinfo==0.2.3 +# homeassistant.components.switch.tplink +pyHS100==0.2.3 + # homeassistant.components.rfxtrx pyRFXtrx==0.14.0 From c2492d149328248c50e3c521d650d732af09da78 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli <pascal.vizeli@syshack.ch> Date: Sat, 14 Jan 2017 08:18:03 +0100 Subject: [PATCH 166/189] Component "Image processing" (#5166) * Init new component for image processing. * Add demo platform * address comments * add unittest v1 for demo * Add unittest for alpr * Add openalpr local test * Add openalpr cloud platform * Add unittest openalpr cloud platform * Update stale docstring * Address paulus comments * Update stale docstring * Add coro to function * Add coro to cloud --- homeassistant/components/camera/__init__.py | 40 ++++ homeassistant/components/demo.py | 2 + .../components/image_processing/__init__.py | 127 ++++++++++ .../components/image_processing/demo.py | 84 +++++++ .../image_processing/openalpr_cloud.py | 151 ++++++++++++ .../image_processing/openalpr_local.py | 218 ++++++++++++++++++ .../components/image_processing/services.yaml | 9 + tests/components/camera/test_init.py | 101 ++++++++ tests/components/image_processing/__init__.py | 1 + .../components/image_processing/test_init.py | 209 +++++++++++++++++ .../image_processing/test_openalpr_cloud.py | 212 +++++++++++++++++ .../image_processing/test_openalpr_local.py | 165 +++++++++++++ tests/fixtures/alpr_cloud.json | 103 +++++++++ tests/fixtures/alpr_stdout.txt | 12 + tests/test_util/aiohttp.py | 5 + 15 files changed, 1439 insertions(+) create mode 100644 homeassistant/components/image_processing/__init__.py create mode 100644 homeassistant/components/image_processing/demo.py create mode 100644 homeassistant/components/image_processing/openalpr_cloud.py create mode 100644 homeassistant/components/image_processing/openalpr_local.py create mode 100644 homeassistant/components/image_processing/services.yaml create mode 100644 tests/components/camera/test_init.py create mode 100644 tests/components/image_processing/__init__.py create mode 100644 tests/components/image_processing/test_init.py create mode 100644 tests/components/image_processing/test_openalpr_cloud.py create mode 100644 tests/components/image_processing/test_openalpr_local.py create mode 100644 tests/fixtures/alpr_cloud.json create mode 100644 tests/fixtures/alpr_stdout.txt diff --git a/homeassistant/components/camera/__init__.py b/homeassistant/components/camera/__init__.py index 5ba68dea058..168f821c6c0 100644 --- a/homeassistant/components/camera/__init__.py +++ b/homeassistant/components/camera/__init__.py @@ -10,8 +10,13 @@ from datetime import timedelta import logging import hashlib +import aiohttp from aiohttp import web +import async_timeout +from homeassistant.const import ATTR_ENTITY_PICTURE +from homeassistant.exceptions import HomeAssistantError +from homeassistant.helpers.aiohttp_client import async_get_clientsession from homeassistant.helpers.entity import Entity from homeassistant.helpers.entity_component import EntityComponent from homeassistant.helpers.config_validation import PLATFORM_SCHEMA # noqa @@ -29,6 +34,41 @@ STATE_IDLE = 'idle' ENTITY_IMAGE_URL = '/api/camera_proxy/{0}?token={1}' +@asyncio.coroutine +def async_get_image(hass, entity_id, timeout=10): + """Fetch a image from a camera entity.""" + websession = async_get_clientsession(hass) + state = hass.states.get(entity_id) + + if state is None: + raise HomeAssistantError( + "No entity '{0}' for grab a image".format(entity_id)) + + url = "{0}{1}".format( + hass.config.api.base_url, + state.attributes.get(ATTR_ENTITY_PICTURE) + ) + + response = None + try: + with async_timeout.timeout(timeout, loop=hass.loop): + response = yield from websession.get(url) + + if response.status != 200: + raise HomeAssistantError("Error {0} on {1}".format( + response.status, url)) + + image = yield from response.read() + return image + + except (asyncio.TimeoutError, aiohttp.errors.ClientError): + raise HomeAssistantError("Can't connect to {0}".format(url)) + + finally: + if response is not None: + yield from response.release() + + @asyncio.coroutine def async_setup(hass, config): """Setup the camera component.""" diff --git a/homeassistant/components/demo.py b/homeassistant/components/demo.py index 80f89d7c134..170159e1d25 100644 --- a/homeassistant/components/demo.py +++ b/homeassistant/components/demo.py @@ -23,12 +23,14 @@ COMPONENTS_WITH_DEMO_PLATFORM = [ 'cover', 'device_tracker', 'fan', + 'image_processing', 'light', 'lock', 'media_player', 'notify', 'sensor', 'switch', + 'tts', ] diff --git a/homeassistant/components/image_processing/__init__.py b/homeassistant/components/image_processing/__init__.py new file mode 100644 index 00000000000..0d28fe4c605 --- /dev/null +++ b/homeassistant/components/image_processing/__init__.py @@ -0,0 +1,127 @@ +""" +Provides functionality to interact with image processing services. + +For more details about this component, please refer to the documentation at +https://home-assistant.io/components/image_processing/ +""" +import asyncio +from datetime import timedelta +import logging +import os + +import voluptuous as vol + +from homeassistant.config import load_yaml_config_file +from homeassistant.const import ( + ATTR_ENTITY_ID, CONF_NAME, CONF_ENTITY_ID) +from homeassistant.exceptions import HomeAssistantError +import homeassistant.helpers.config_validation as cv +from homeassistant.helpers.entity import Entity +from homeassistant.helpers.entity_component import EntityComponent +from homeassistant.loader import get_component + + +DOMAIN = 'image_processing' +DEPENDENCIES = ['camera'] + +_LOGGER = logging.getLogger(__name__) + +SCAN_INTERVAL = timedelta(seconds=10) + +SERVICE_SCAN = 'scan' + +ATTR_CONFIDENCE = 'confidence' + +CONF_SOURCE = 'source' +CONF_CONFIDENCE = 'confidence' + +DEFAULT_TIMEOUT = 10 + +SOURCE_SCHEMA = vol.Schema({ + vol.Required(CONF_ENTITY_ID): cv.entity_id, + vol.Optional(CONF_NAME): cv.string, +}) + +PLATFORM_SCHEMA = cv.PLATFORM_SCHEMA.extend({ + vol.Optional(CONF_SOURCE): vol.All(cv.ensure_list, [SOURCE_SCHEMA]), +}) + +SERVICE_SCAN_SCHEMA = vol.Schema({ + vol.Optional(ATTR_ENTITY_ID): cv.entity_ids, +}) + + +def scan(hass, entity_id=None): + """Force process a image.""" + data = {ATTR_ENTITY_ID: entity_id} if entity_id else None + hass.services.call(DOMAIN, SERVICE_SCAN, data) + + +@asyncio.coroutine +def async_setup(hass, config): + """Setup image processing.""" + component = EntityComponent(_LOGGER, DOMAIN, hass, SCAN_INTERVAL) + + yield from component.async_setup(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_scan_service(service): + """Service handler for scan.""" + image_entities = component.async_extract_from_service(service) + + update_task = [entity.async_update_ha_state(True) for + entity in image_entities] + if update_task: + yield from asyncio.wait(update_task, loop=hass.loop) + + hass.services.async_register( + DOMAIN, SERVICE_SCAN, async_scan_service, + descriptions.get(SERVICE_SCAN), schema=SERVICE_SCAN_SCHEMA) + + return True + + +class ImageProcessingEntity(Entity): + """Base entity class for image processing.""" + + timeout = DEFAULT_TIMEOUT + + @property + def camera_entity(self): + """Return camera entity id from process pictures.""" + return None + + def process_image(self, image): + """Process image.""" + raise NotImplementedError() + + def async_process_image(self, image): + """Process image. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor(None, self.process_image, image) + + @asyncio.coroutine + def async_update(self): + """Update image and process it. + + This method is a coroutine. + """ + camera = get_component('camera') + image = None + + try: + image = yield from camera.async_get_image( + self.hass, self.camera_entity, timeout=self.timeout) + + except HomeAssistantError as err: + _LOGGER.error("Error on receive image from entity: %s", err) + return + + # process image data + yield from self.async_process_image(image) diff --git a/homeassistant/components/image_processing/demo.py b/homeassistant/components/image_processing/demo.py new file mode 100644 index 00000000000..8ba835e8df0 --- /dev/null +++ b/homeassistant/components/image_processing/demo.py @@ -0,0 +1,84 @@ +""" +Support for the demo image processing. + +For more details about this component, please refer to the documentation at +https://home-assistant.io/components/demo/ +""" + +from homeassistant.components.image_processing import ImageProcessingEntity +from homeassistant.components.image_processing.openalpr_local import ( + ImageProcessingAlprEntity) + + +def setup_platform(hass, config, add_devices, discovery_info=None): + """Setup the demo image_processing platform.""" + add_devices([ + DemoImageProcessing('camera.demo_camera', "Demo"), + DemoImageProcessingAlpr('camera.demo_camera', "Demo Alpr") + ]) + + +class DemoImageProcessing(ImageProcessingEntity): + """Demo alpr image processing entity.""" + + def __init__(self, camera_entity, name): + """Initialize demo alpr.""" + self._name = name + self._camera = camera_entity + self._count = 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 + + @property + def state(self): + """Return the state of the entity.""" + return self._count + + def process_image(self, image): + """Process image.""" + self._count += 1 + + +class DemoImageProcessingAlpr(ImageProcessingAlprEntity): + """Demo alpr image processing entity.""" + + def __init__(self, camera_entity, name): + """Initialize demo alpr.""" + super().__init__() + + self._name = name + self._camera = camera_entity + + @property + def camera_entity(self): + """Return camera entity id from process pictures.""" + return self._camera + + @property + def confidence(self): + """Return minimum confidence for send events.""" + return 80 + + @property + def name(self): + """Return the name of the entity.""" + return self._name + + def process_image(self, image): + """Process image.""" + demo_data = { + 'AC3829': 98.3, + 'BE392034': 95.5, + 'CD02394': 93.4, + 'DF923043': 90.8 + } + + self.process_plates(demo_data, 1) diff --git a/homeassistant/components/image_processing/openalpr_cloud.py b/homeassistant/components/image_processing/openalpr_cloud.py new file mode 100644 index 00000000000..61b3442856a --- /dev/null +++ b/homeassistant/components/image_processing/openalpr_cloud.py @@ -0,0 +1,151 @@ +""" +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/ +""" +import asyncio +from base64 import b64encode +import logging + +import aiohttp +import async_timeout +import voluptuous as vol + +from homeassistant.core import split_entity_id +from homeassistant.const import CONF_API_KEY +from homeassistant.components.image_processing import ( + PLATFORM_SCHEMA, CONF_CONFIDENCE, CONF_SOURCE, CONF_ENTITY_ID, CONF_NAME) +from homeassistant.components.image_processing.openalpr_local import ( + ImageProcessingAlprEntity) +from homeassistant.helpers.aiohttp_client import async_get_clientsession +import homeassistant.helpers.config_validation as cv + +_LOGGER = logging.getLogger(__name__) + +OPENALPR_API_URL = "https://api.openalpr.com/v1/recognize" + +OPENALPR_REGIONS = [ + 'us', + 'eu', + 'au', + 'auwide', + 'gb', + 'kr', + 'mx', + 'sg', +] + +CONF_REGION = 'region' +DEFAULT_CONFIDENCE = 80 + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required(CONF_API_KEY): cv.string, + vol.Required(CONF_REGION): + vol.All(vol.Lower, vol.In(OPENALPR_REGIONS)), + vol.Optional(CONF_CONFIDENCE, default=DEFAULT_CONFIDENCE): + vol.All(vol.Coerce(float), vol.Range(min=0, max=100)) +}) + + +@asyncio.coroutine +def async_setup_platform(hass, config, async_add_devices, discovery_info=None): + """Set up the openalpr cloud api platform.""" + confidence = config[CONF_CONFIDENCE] + params = { + 'secret_key': config[CONF_API_KEY], + 'tasks': "plate", + 'return_image': 0, + 'country': config[CONF_REGION], + } + + entities = [] + for camera in config[CONF_SOURCE]: + entities.append(OpenAlprCloudEntity( + camera[CONF_ENTITY_ID], params, confidence, camera.get(CONF_NAME) + )) + + yield from async_add_devices(entities) + + +class OpenAlprCloudEntity(ImageProcessingAlprEntity): + """OpenAlpr cloud entity.""" + + def __init__(self, camera_entity, params, confidence, name=None): + """Initialize openalpr local api.""" + super().__init__() + + self._params = params + self._camera = camera_entity + self._confidence = confidence + + if name: + self._name = name + else: + self._name = "OpenAlpr {0}".format( + split_entity_id(camera_entity)[1]) + + @property + def confidence(self): + """Return minimum confidence for send events.""" + return self._confidence + + @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 + + @asyncio.coroutine + def async_process_image(self, image): + """Process image. + + This method is a coroutine. + """ + websession = async_get_clientsession(self.hass) + params = self._params.copy() + + params['image_bytes'] = str(b64encode(image), 'utf-8') + + data = None + request = None + try: + with async_timeout.timeout(self.timeout, loop=self.hass.loop): + request = yield from websession.post( + OPENALPR_API_URL, params=params + ) + + data = yield from request.json() + + if request.status != 200: + _LOGGER.error("Error %d -> %s.", + request.status, data.get('error')) + return + + except (asyncio.TimeoutError, aiohttp.errors.ClientError): + _LOGGER.error("Timeout for openalpr api.") + return + + finally: + if request is not None: + yield from request.release() + + # processing api data + vehicles = 0 + result = {} + + for row in data['plate']['results']: + vehicles += 1 + + for p_data in row['candidates']: + try: + result.update( + {p_data['plate']: float(p_data['confidence'])}) + except ValueError: + continue + + self.async_process_plates(result, vehicles) diff --git a/homeassistant/components/image_processing/openalpr_local.py b/homeassistant/components/image_processing/openalpr_local.py new file mode 100644 index 00000000000..a1736c00ffc --- /dev/null +++ b/homeassistant/components/image_processing/openalpr_local.py @@ -0,0 +1,218 @@ +""" +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/ +""" +import asyncio +import logging +import io +import re + +import voluptuous as vol + +from homeassistant.core import split_entity_id, callback +from homeassistant.const import STATE_UNKNOWN +import homeassistant.helpers.config_validation as cv +from homeassistant.components.image_processing import ( + PLATFORM_SCHEMA, ImageProcessingEntity, CONF_CONFIDENCE, CONF_SOURCE, + CONF_ENTITY_ID, CONF_NAME, ATTR_ENTITY_ID, ATTR_CONFIDENCE) +from homeassistant.util.async import run_callback_threadsafe + +_LOGGER = logging.getLogger(__name__) + +RE_ALPR_PLATE = re.compile(r"^plate\d*:") +RE_ALPR_RESULT = re.compile(r"- (\w*)\s*confidence: (\d*.\d*)") + +EVENT_FOUND_PLATE = 'found_plate' + +ATTR_PLATE = 'plate' +ATTR_PLATES = 'plates' +ATTR_VEHICLES = 'vehicles' + +OPENALPR_REGIONS = [ + 'us', + 'eu', + 'au', + 'auwide', + 'gb', + 'kr', + 'mx', + 'sg', +] + +CONF_REGION = 'region' +CONF_ALPR_BIN = 'alp_bin' + +DEFAULT_BINARY = 'alpr' +DEFAULT_CONFIDENCE = 80 + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required(CONF_REGION): + vol.All(vol.Lower, vol.In(OPENALPR_REGIONS)), + vol.Optional(CONF_ALPR_BIN, default=DEFAULT_BINARY): cv.string, + vol.Optional(CONF_CONFIDENCE, default=DEFAULT_CONFIDENCE): + vol.All(vol.Coerce(float), vol.Range(min=0, max=100)) +}) + + +@asyncio.coroutine +def async_setup_platform(hass, config, async_add_devices, discovery_info=None): + """Set up the openalpr local platform.""" + command = [config[CONF_ALPR_BIN], '-c', config[CONF_REGION], '-'] + confidence = config[CONF_CONFIDENCE] + + entities = [] + for camera in config[CONF_SOURCE]: + entities.append(OpenAlprLocalEntity( + camera[CONF_ENTITY_ID], command, confidence, camera.get(CONF_NAME) + )) + + yield from async_add_devices(entities) + + +class ImageProcessingAlprEntity(ImageProcessingEntity): + """Base entity class for alpr image processing.""" + + def __init__(self): + """Initialize base alpr entity.""" + self.plates = {} # last scan data + self.vehicles = 0 # vehicles count + + @property + def confidence(self): + """Return minimum confidence for send events.""" + return None + + @property + def state(self): + """Return the state of the entity.""" + confidence = 0 + plate = STATE_UNKNOWN + + # search high plate + for i_pl, i_co in self.plates.items(): + if i_co > confidence: + confidence = i_co + plate = i_pl + return plate + + @property + def state_attributes(self): + """Return device specific state attributes.""" + attr = { + ATTR_PLATES: self.plates, + ATTR_VEHICLES: self.vehicles + } + + return attr + + def process_plates(self, plates, vehicles): + """Send event with new plates and store data.""" + run_callback_threadsafe( + self.hass.loop, self.async_process_plates, plates, vehicles + ).result() + + @callback + def async_process_plates(self, plates, vehicles): + """Send event with new plates and store data. + + plates are a dict in follow format: + { 'plate': confidence } + + This method must be run in the event loop. + """ + plates = {plate: confidence for plate, confidence in plates.items() + if confidence >= self.confidence} + new_plates = set(plates) - set(self.plates) + + # send events + for i_plate in new_plates: + self.hass.async_add_job( + self.hass.bus.async_fire, EVENT_FOUND_PLATE, { + ATTR_PLATE: i_plate, + ATTR_ENTITY_ID: self.entity_id, + ATTR_CONFIDENCE: plates.get(i_plate), + } + ) + + # update entity store + self.plates = plates + self.vehicles = vehicles + + +class OpenAlprLocalEntity(ImageProcessingAlprEntity): + """OpenAlpr local api entity.""" + + def __init__(self, camera_entity, command, confidence, name=None): + """Initialize openalpr local api.""" + super().__init__() + + self._cmd = command + self._camera = camera_entity + self._confidence = confidence + + if name: + self._name = name + else: + self._name = "OpenAlpr {0}".format( + split_entity_id(camera_entity)[1]) + + @property + def confidence(self): + """Return minimum confidence for send events.""" + return self._confidence + + @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 + + @asyncio.coroutine + def async_process_image(self, image): + """Process image. + + This method is a coroutine. + """ + result = {} + vehicles = 0 + + alpr = yield from asyncio.create_subprocess_exec( + *self._cmd, + loop=self.hass.loop, + stdin=asyncio.subprocess.PIPE, + stdout=asyncio.subprocess.PIPE, + stderr=asyncio.subprocess.DEVNULL + ) + + # send image + stdout, _ = yield from alpr.communicate(input=image) + stdout = io.StringIO(str(stdout, 'utf-8')) + + while True: + line = stdout.readline() + if not line: + break + + new_plates = RE_ALPR_PLATE.search(line) + new_result = RE_ALPR_RESULT.search(line) + + # found new vehicle + if new_plates: + vehicles += 1 + continue + + # found plate result + if new_result: + try: + result.update( + {new_result.group(1): float(new_result.group(2))}) + except ValueError: + continue + + self.async_process_plates(result, vehicles) diff --git a/homeassistant/components/image_processing/services.yaml b/homeassistant/components/image_processing/services.yaml new file mode 100644 index 00000000000..2c6369f9804 --- /dev/null +++ b/homeassistant/components/image_processing/services.yaml @@ -0,0 +1,9 @@ +# Describes the format for available image_processing services + +scan: + description: Process an image immediately + + fields: + entity_id: + description: Name(s) of entities to scan immediately + example: 'image_processing.alpr_garage' diff --git a/tests/components/camera/test_init.py b/tests/components/camera/test_init.py new file mode 100644 index 00000000000..2e58676edcc --- /dev/null +++ b/tests/components/camera/test_init.py @@ -0,0 +1,101 @@ +"""The tests for the camera component.""" +import asyncio +from unittest.mock import patch + +import pytest + +from homeassistant.bootstrap import setup_component +from homeassistant.const import ATTR_ENTITY_PICTURE +import homeassistant.components.camera as camera +from homeassistant.exceptions import HomeAssistantError +from homeassistant.util.async import run_coroutine_threadsafe + +from tests.common import get_test_home_assistant, assert_setup_component + + +class TestSetupCamera(object): + """Test class for setup camera.""" + + def setup_method(self): + """Setup things to be run when tests are started.""" + self.hass = get_test_home_assistant() + + def teardown_method(self): + """Stop everything that was started.""" + self.hass.stop() + + def test_setup_component(self): + """Setup demo platfrom on camera component.""" + config = { + camera.DOMAIN: { + 'platform': 'demo' + } + } + + with assert_setup_component(1, camera.DOMAIN): + setup_component(self.hass, camera.DOMAIN, config) + + +class TestGetImage(object): + """Test class for camera.""" + + def setup_method(self): + """Setup things to be run when tests are started.""" + self.hass = get_test_home_assistant() + + config = { + camera.DOMAIN: { + 'platform': 'demo' + } + } + + setup_component(self.hass, camera.DOMAIN, config) + + state = self.hass.states.get('camera.demo_camera') + self.url = "{0}{1}".format( + self.hass.config.api.base_url, + state.attributes.get(ATTR_ENTITY_PICTURE)) + + def teardown_method(self): + """Stop everything that was started.""" + self.hass.stop() + + @patch('homeassistant.components.camera.demo.DemoCamera.camera_image', + autospec=True, return_value=b'Test') + def test_get_image_from_camera(self, mock_camera): + """Grab a image from camera entity.""" + self.hass.start() + + image = run_coroutine_threadsafe(camera.async_get_image( + self.hass, 'camera.demo_camera'), self.hass.loop).result() + + assert mock_camera.called + assert image == b'Test' + + def test_get_image_without_exists_camera(self): + """Try to get image without exists camera.""" + self.hass.states.remove('camera.demo_camera') + + with pytest.raises(HomeAssistantError): + run_coroutine_threadsafe(camera.async_get_image( + self.hass, 'camera.demo_camera'), self.hass.loop).result() + + def test_get_image_with_timeout(self, aioclient_mock): + """Try to get image with timeout.""" + aioclient_mock.get(self.url, exc=asyncio.TimeoutError()) + + with pytest.raises(HomeAssistantError): + run_coroutine_threadsafe(camera.async_get_image( + self.hass, 'camera.demo_camera'), self.hass.loop).result() + + assert len(aioclient_mock.mock_calls) == 1 + + def test_get_image_with_bad_http_state(self, aioclient_mock): + """Try to get image with bad http status.""" + aioclient_mock.get(self.url, status=400) + + with pytest.raises(HomeAssistantError): + run_coroutine_threadsafe(camera.async_get_image( + self.hass, 'camera.demo_camera'), self.hass.loop).result() + + assert len(aioclient_mock.mock_calls) == 1 diff --git a/tests/components/image_processing/__init__.py b/tests/components/image_processing/__init__.py new file mode 100644 index 00000000000..6e79d49c251 --- /dev/null +++ b/tests/components/image_processing/__init__.py @@ -0,0 +1 @@ +"""Test 'image_processing' component plaforms.""" diff --git a/tests/components/image_processing/test_init.py b/tests/components/image_processing/test_init.py new file mode 100644 index 00000000000..eb52e3262ab --- /dev/null +++ b/tests/components/image_processing/test_init.py @@ -0,0 +1,209 @@ +"""The tests for the image_processing component.""" +from unittest.mock import patch, PropertyMock + +from homeassistant.core import callback +from homeassistant.const import ATTR_ENTITY_PICTURE +from homeassistant.bootstrap import setup_component +from homeassistant.exceptions import HomeAssistantError +import homeassistant.components.image_processing as ip + +from tests.common import get_test_home_assistant, assert_setup_component + + +class TestSetupImageProcessing(object): + """Test class for setup image processing.""" + + def setup_method(self): + """Setup things to be run when tests are started.""" + self.hass = get_test_home_assistant() + + def teardown_method(self): + """Stop everything that was started.""" + self.hass.stop() + + def test_setup_component(self): + """Setup demo platfrom on image_process component.""" + config = { + ip.DOMAIN: { + 'platform': 'demo' + } + } + + with assert_setup_component(1, ip.DOMAIN): + setup_component(self.hass, ip.DOMAIN, config) + + def test_setup_component_with_service(self): + """Setup demo platfrom on image_process component test service.""" + config = { + ip.DOMAIN: { + 'platform': 'demo' + } + } + + with assert_setup_component(1, ip.DOMAIN): + setup_component(self.hass, ip.DOMAIN, config) + + assert self.hass.services.has_service(ip.DOMAIN, 'scan') + + +class TestImageProcessing(object): + """Test class for image processing.""" + + def setup_method(self): + """Setup things to be run when tests are started.""" + self.hass = get_test_home_assistant() + + config = { + ip.DOMAIN: { + 'platform': 'demo' + }, + 'camera': { + 'platform': 'demo' + }, + } + + with patch('homeassistant.components.image_processing.demo.' + 'DemoImageProcessing.should_poll', + new_callable=PropertyMock(return_value=False)): + setup_component(self.hass, ip.DOMAIN, config) + + state = self.hass.states.get('camera.demo_camera') + self.url = "{0}{1}".format( + self.hass.config.api.base_url, + state.attributes.get(ATTR_ENTITY_PICTURE)) + + def teardown_method(self): + """Stop everything that was started.""" + self.hass.stop() + + @patch('homeassistant.components.camera.demo.DemoCamera.camera_image', + autospec=True, return_value=b'Test') + @patch('homeassistant.components.image_processing.demo.' + 'DemoImageProcessing.process_image', autospec=True) + def test_get_image_from_camera(self, mock_process, mock_camera): + """Grab a image from camera entity.""" + self.hass.start() + + ip.scan(self.hass, entity_id='image_processing.demo') + self.hass.block_till_done() + + assert mock_camera.called + assert mock_process.called + + assert mock_process.call_args[0][1] == b'Test' + + @patch('homeassistant.components.camera.async_get_image', + side_effect=HomeAssistantError()) + @patch('homeassistant.components.image_processing.demo.' + 'DemoImageProcessing.process_image', autospec=True) + def test_get_image_without_exists_camera(self, mock_process, mock_image): + """Try to get image without exists camera.""" + self.hass.states.remove('camera.demo_camera') + + ip.scan(self.hass, entity_id='image_processing.demo') + self.hass.block_till_done() + + assert mock_image.called + assert not mock_process.called + + +class TestImageProcessingAlpr(object): + """Test class for image processing.""" + + def setup_method(self): + """Setup things to be run when tests are started.""" + self.hass = get_test_home_assistant() + + config = { + ip.DOMAIN: { + 'platform': 'demo' + }, + 'camera': { + 'platform': 'demo' + }, + } + + with patch('homeassistant.components.image_processing.demo.' + 'DemoImageProcessingAlpr.should_poll', + new_callable=PropertyMock(return_value=False)): + setup_component(self.hass, ip.DOMAIN, config) + + state = self.hass.states.get('camera.demo_camera') + self.url = "{0}{1}".format( + self.hass.config.api.base_url, + state.attributes.get(ATTR_ENTITY_PICTURE)) + + self.alpr_events = [] + + @callback + def mock_alpr_event(event): + """Mock event.""" + self.alpr_events.append(event) + + self.hass.bus.listen('found_plate', mock_alpr_event) + + def teardown_method(self): + """Stop everything that was started.""" + self.hass.stop() + + def test_alpr_event_single_call(self, aioclient_mock): + """Setup and scan a picture and test plates from event.""" + aioclient_mock.get(self.url, content=b'image') + + ip.scan(self.hass, entity_id='image_processing.demo_alpr') + self.hass.block_till_done() + + state = self.hass.states.get('image_processing.demo_alpr') + + assert len(self.alpr_events) == 4 + assert state.state == 'AC3829' + + event_data = [event.data for event in self.alpr_events if + event.data.get('plate') == 'AC3829'] + assert len(event_data) == 1 + assert event_data[0]['plate'] == 'AC3829' + assert event_data[0]['confidence'] == 98.3 + assert event_data[0]['entity_id'] == 'image_processing.demo_alpr' + + def test_alpr_event_double_call(self, aioclient_mock): + """Setup and scan a picture and test plates from event.""" + aioclient_mock.get(self.url, content=b'image') + + ip.scan(self.hass, entity_id='image_processing.demo_alpr') + ip.scan(self.hass, entity_id='image_processing.demo_alpr') + self.hass.block_till_done() + + state = self.hass.states.get('image_processing.demo_alpr') + + assert len(self.alpr_events) == 4 + assert state.state == 'AC3829' + + event_data = [event.data for event in self.alpr_events if + event.data.get('plate') == 'AC3829'] + assert len(event_data) == 1 + assert event_data[0]['plate'] == 'AC3829' + assert event_data[0]['confidence'] == 98.3 + assert event_data[0]['entity_id'] == 'image_processing.demo_alpr' + + @patch('homeassistant.components.image_processing.demo.' + 'DemoImageProcessingAlpr.confidence', + new_callable=PropertyMock(return_value=95)) + def test_alpr_event_single_call_confidence(self, confidence_mock, + aioclient_mock): + """Setup and scan a picture and test plates from event.""" + aioclient_mock.get(self.url, content=b'image') + + ip.scan(self.hass, entity_id='image_processing.demo_alpr') + self.hass.block_till_done() + + state = self.hass.states.get('image_processing.demo_alpr') + + assert len(self.alpr_events) == 2 + assert state.state == 'AC3829' + + event_data = [event.data for event in self.alpr_events if + event.data.get('plate') == 'AC3829'] + assert len(event_data) == 1 + assert event_data[0]['plate'] == 'AC3829' + assert event_data[0]['confidence'] == 98.3 + assert event_data[0]['entity_id'] == 'image_processing.demo_alpr' diff --git a/tests/components/image_processing/test_openalpr_cloud.py b/tests/components/image_processing/test_openalpr_cloud.py new file mode 100644 index 00000000000..8e9f35eb0b2 --- /dev/null +++ b/tests/components/image_processing/test_openalpr_cloud.py @@ -0,0 +1,212 @@ +"""The tests for the openalpr clooud platform.""" +import asyncio +from unittest.mock import patch, PropertyMock + +from homeassistant.core import callback +from homeassistant.const import ATTR_ENTITY_PICTURE +from homeassistant.bootstrap import setup_component +import homeassistant.components.image_processing as ip +from homeassistant.components.image_processing.openalpr_cloud import ( + OPENALPR_API_URL) + +from tests.common import ( + get_test_home_assistant, assert_setup_component, load_fixture) + + +class TestOpenAlprCloudlSetup(object): + """Test class for image processing.""" + + def setup_method(self): + """Setup things to be run when tests are started.""" + self.hass = get_test_home_assistant() + + def teardown_method(self): + """Stop everything that was started.""" + self.hass.stop() + + def test_setup_platform(self): + """Setup platform with one entity.""" + config = { + ip.DOMAIN: { + 'platform': 'openalpr_cloud', + 'source': { + 'entity_id': 'camera.demo_camera' + }, + 'region': 'eu', + 'api_key': 'sk_abcxyz123456', + }, + 'camera': { + 'platform': 'demo' + }, + } + + with assert_setup_component(1, ip.DOMAIN): + setup_component(self.hass, ip.DOMAIN, config) + + assert self.hass.states.get('image_processing.openalpr_demo_camera') + + def test_setup_platform_name(self): + """Setup platform with one entity and set name.""" + config = { + ip.DOMAIN: { + 'platform': 'openalpr_cloud', + 'source': { + 'entity_id': 'camera.demo_camera', + 'name': 'test local' + }, + 'region': 'eu', + 'api_key': 'sk_abcxyz123456', + }, + 'camera': { + 'platform': 'demo' + }, + } + + with assert_setup_component(1, ip.DOMAIN): + setup_component(self.hass, ip.DOMAIN, config) + + assert self.hass.states.get('image_processing.test_local') + + def test_setup_platform_without_api_key(self): + """Setup platform with one entity without api_key.""" + config = { + ip.DOMAIN: { + 'platform': 'openalpr_cloud', + 'source': { + 'entity_id': 'camera.demo_camera' + }, + 'region': 'eu', + }, + 'camera': { + 'platform': 'demo' + }, + } + + with assert_setup_component(0, ip.DOMAIN): + setup_component(self.hass, ip.DOMAIN, config) + + def test_setup_platform_without_region(self): + """Setup platform with one entity without region.""" + config = { + ip.DOMAIN: { + 'platform': 'openalpr_cloud', + 'source': { + 'entity_id': 'camera.demo_camera' + }, + 'api_key': 'sk_abcxyz123456', + }, + 'camera': { + 'platform': 'demo' + }, + } + + with assert_setup_component(0, ip.DOMAIN): + setup_component(self.hass, ip.DOMAIN, config) + + +class TestOpenAlprCloud(object): + """Test class for image processing.""" + + def setup_method(self): + """Setup things to be run when tests are started.""" + self.hass = get_test_home_assistant() + + config = { + ip.DOMAIN: { + 'platform': 'openalpr_cloud', + 'source': { + 'entity_id': 'camera.demo_camera', + 'name': 'test local' + }, + 'region': 'eu', + 'api_key': 'sk_abcxyz123456', + }, + 'camera': { + 'platform': 'demo' + }, + } + + with patch('homeassistant.components.image_processing.openalpr_cloud.' + 'OpenAlprCloudEntity.should_poll', + new_callable=PropertyMock(return_value=False)): + setup_component(self.hass, ip.DOMAIN, config) + + state = self.hass.states.get('camera.demo_camera') + self.url = "{0}{1}".format( + self.hass.config.api.base_url, + state.attributes.get(ATTR_ENTITY_PICTURE)) + + self.alpr_events = [] + + @callback + def mock_alpr_event(event): + """Mock event.""" + self.alpr_events.append(event) + + self.hass.bus.listen('found_plate', mock_alpr_event) + + self.params = { + 'secret_key': "sk_abcxyz123456", + 'tasks': "plate", + 'return_image': 0, + 'country': 'eu', + 'image_bytes': "aW1hZ2U=" + } + + def teardown_method(self): + """Stop everything that was started.""" + self.hass.stop() + + def test_openalpr_process_image(self, aioclient_mock): + """Setup and scan a picture and test plates from event.""" + aioclient_mock.get(self.url, content=b'image') + aioclient_mock.post( + OPENALPR_API_URL, params=self.params, + text=load_fixture('alpr_cloud.json'), status=200 + ) + + ip.scan(self.hass, entity_id='image_processing.test_local') + self.hass.block_till_done() + + state = self.hass.states.get('image_processing.test_local') + + assert len(aioclient_mock.mock_calls) == 2 + assert len(self.alpr_events) == 5 + assert state.attributes.get('vehicles') == 1 + assert state.state == 'H786P0J' + + event_data = [event.data for event in self.alpr_events if + event.data.get('plate') == 'H786P0J'] + assert len(event_data) == 1 + assert event_data[0]['plate'] == 'H786P0J' + assert event_data[0]['confidence'] == float(90.436699) + assert event_data[0]['entity_id'] == \ + 'image_processing.test_local' + + def test_openalpr_process_image_api_error(self, aioclient_mock): + """Setup and scan a picture and test api error.""" + aioclient_mock.get(self.url, content=b'image') + aioclient_mock.post( + OPENALPR_API_URL, params=self.params, + text="{'error': 'error message'}", status=400 + ) + + ip.scan(self.hass, entity_id='image_processing.test_local') + self.hass.block_till_done() + + assert len(aioclient_mock.mock_calls) == 2 + assert len(self.alpr_events) == 0 + + def test_openalpr_process_image_api_timeout(self, aioclient_mock): + """Setup and scan a picture and test api error.""" + aioclient_mock.get(self.url, content=b'image') + aioclient_mock.post( + OPENALPR_API_URL, params=self.params, + exc=asyncio.TimeoutError() + ) + + ip.scan(self.hass, entity_id='image_processing.test_local') + self.hass.block_till_done() + + assert len(aioclient_mock.mock_calls) == 2 + assert len(self.alpr_events) == 0 diff --git a/tests/components/image_processing/test_openalpr_local.py b/tests/components/image_processing/test_openalpr_local.py new file mode 100644 index 00000000000..5186332661b --- /dev/null +++ b/tests/components/image_processing/test_openalpr_local.py @@ -0,0 +1,165 @@ +"""The tests for the openalpr local platform.""" +import asyncio +from unittest.mock import patch, PropertyMock, MagicMock + +from homeassistant.core import callback +from homeassistant.const import ATTR_ENTITY_PICTURE +from homeassistant.bootstrap import setup_component +import homeassistant.components.image_processing as ip + +from tests.common import ( + get_test_home_assistant, assert_setup_component, load_fixture) + + +@asyncio.coroutine +def mock_async_subprocess(): + """Get a Popen mock back.""" + async_popen = MagicMock() + + @asyncio.coroutine + def communicate(input=None): + """Communicate mock.""" + fixture = bytes(load_fixture('alpr_stdout.txt'), 'utf-8') + return (fixture, None) + + async_popen.communicate = communicate + return async_popen + + +class TestOpenAlprLocalSetup(object): + """Test class for image processing.""" + + def setup_method(self): + """Setup things to be run when tests are started.""" + self.hass = get_test_home_assistant() + + def teardown_method(self): + """Stop everything that was started.""" + self.hass.stop() + + def test_setup_platform(self): + """Setup platform with one entity.""" + config = { + ip.DOMAIN: { + 'platform': 'openalpr_local', + 'source': { + 'entity_id': 'camera.demo_camera' + }, + 'region': 'eu', + }, + 'camera': { + 'platform': 'demo' + }, + } + + with assert_setup_component(1, ip.DOMAIN): + setup_component(self.hass, ip.DOMAIN, config) + + assert self.hass.states.get('image_processing.openalpr_demo_camera') + + def test_setup_platform_name(self): + """Setup platform with one entity and set name.""" + config = { + ip.DOMAIN: { + 'platform': 'openalpr_local', + 'source': { + 'entity_id': 'camera.demo_camera', + 'name': 'test local' + }, + 'region': 'eu', + }, + 'camera': { + 'platform': 'demo' + }, + } + + with assert_setup_component(1, ip.DOMAIN): + setup_component(self.hass, ip.DOMAIN, config) + + assert self.hass.states.get('image_processing.test_local') + + def test_setup_platform_without_region(self): + """Setup platform with one entity without region.""" + config = { + ip.DOMAIN: { + 'platform': 'openalpr_local', + 'source': { + 'entity_id': 'camera.demo_camera' + }, + }, + 'camera': { + 'platform': 'demo' + }, + } + + with assert_setup_component(0, ip.DOMAIN): + setup_component(self.hass, ip.DOMAIN, config) + + +class TestOpenAlprLocal(object): + """Test class for image processing.""" + + def setup_method(self): + """Setup things to be run when tests are started.""" + self.hass = get_test_home_assistant() + + config = { + ip.DOMAIN: { + 'platform': 'openalpr_local', + 'source': { + 'entity_id': 'camera.demo_camera', + 'name': 'test local' + }, + 'region': 'eu', + }, + 'camera': { + 'platform': 'demo' + }, + } + + with patch('homeassistant.components.image_processing.openalpr_local.' + 'OpenAlprLocalEntity.should_poll', + new_callable=PropertyMock(return_value=False)): + setup_component(self.hass, ip.DOMAIN, config) + + state = self.hass.states.get('camera.demo_camera') + self.url = "{0}{1}".format( + self.hass.config.api.base_url, + state.attributes.get(ATTR_ENTITY_PICTURE)) + + self.alpr_events = [] + + @callback + def mock_alpr_event(event): + """Mock event.""" + self.alpr_events.append(event) + + self.hass.bus.listen('found_plate', mock_alpr_event) + + def teardown_method(self): + """Stop everything that was started.""" + self.hass.stop() + + @patch('asyncio.create_subprocess_exec', + return_value=mock_async_subprocess()) + def test_openalpr_process_image(self, popen_mock, aioclient_mock): + """Setup and scan a picture and test plates from event.""" + aioclient_mock.get(self.url, content=b'image') + + ip.scan(self.hass, entity_id='image_processing.test_local') + self.hass.block_till_done() + + state = self.hass.states.get('image_processing.test_local') + + assert popen_mock.called + assert len(self.alpr_events) == 5 + assert state.attributes.get('vehicles') == 1 + assert state.state == 'PE3R2X' + + event_data = [event.data for event in self.alpr_events if + event.data.get('plate') == 'PE3R2X'] + assert len(event_data) == 1 + assert event_data[0]['plate'] == 'PE3R2X' + assert event_data[0]['confidence'] == float(98.9371) + assert event_data[0]['entity_id'] == \ + 'image_processing.test_local' diff --git a/tests/fixtures/alpr_cloud.json b/tests/fixtures/alpr_cloud.json new file mode 100644 index 00000000000..bbd3ec41214 --- /dev/null +++ b/tests/fixtures/alpr_cloud.json @@ -0,0 +1,103 @@ +{ + "plate":{ + "data_type":"alpr_results", + "epoch_time":1483953071942, + "img_height":640, + "img_width":480, + "results":[ + { + "plate":"H786P0J", + "confidence":90.436699, + "region_confidence":0, + "region":"", + "plate_index":0, + "processing_time_ms":16.495636, + "candidates":[ + { + "matches_template":0, + "plate":"H786P0J", + "confidence":90.436699 + }, + { + "matches_template":0, + "plate":"H786POJ", + "confidence":88.046814 + }, + { + "matches_template":0, + "plate":"H786PDJ", + "confidence":85.58432 + }, + { + "matches_template":0, + "plate":"H786PQJ", + "confidence":85.472939 + }, + { + "matches_template":0, + "plate":"HS786P0J", + "confidence":75.455666 + }, + { + "matches_template":0, + "plate":"H2786P0J", + "confidence":75.256081 + }, + { + "matches_template":0, + "plate":"H3786P0J", + "confidence":65.228058 + }, + { + "matches_template":0, + "plate":"H786PGJ", + "confidence":63.303329 + }, + { + "matches_template":0, + "plate":"HS786POJ", + "confidence":83.065773 + }, + { + "matches_template":0, + "plate":"H2786POJ", + "confidence":52.866196 + } + ], + "coordinates":[ + { + "y":384, + "x":156 + }, + { + "y":384, + "x":289 + }, + { + "y":409, + "x":289 + }, + { + "y":409, + "x":156 + } + ], + "matches_template":0, + "requested_topn":10 + } + ], + "version":2, + "processing_time_ms":115.687286, + "regions_of_interest":[ + + ] + }, + "image_bytes":"", + "img_width":480, + "credits_monthly_used":5791, + "img_height":640, + "total_processing_time":120.71599999762839, + "credits_monthly_total":10000000000, + "image_bytes_prefix":"data:image/jpeg;base64,", + "credit_cost":1 +} diff --git a/tests/fixtures/alpr_stdout.txt b/tests/fixtures/alpr_stdout.txt new file mode 100644 index 00000000000..255b57c5790 --- /dev/null +++ b/tests/fixtures/alpr_stdout.txt @@ -0,0 +1,12 @@ + +plate0: top 10 results -- Processing Time = 58.1879ms. + - PE3R2X confidence: 98.9371 + - PE32X confidence: 98.1385 + - PE3R2 confidence: 97.5444 + - PE3R2Y confidence: 86.1448 + - P63R2X confidence: 82.9016 + - FE3R2X confidence: 72.1147 + - PE32 confidence: 66.7458 + - PE32Y confidence: 65.3462 + - P632X confidence: 62.1031 + - P63R2 confidence: 61.5089 diff --git a/tests/test_util/aiohttp.py b/tests/test_util/aiohttp.py index 124fcf72329..dcdf69395b4 100644 --- a/tests/test_util/aiohttp.py +++ b/tests/test_util/aiohttp.py @@ -150,6 +150,11 @@ class AiohttpClientMockResponse: """Return mock response as a string.""" return self.response.decode(encoding) + @asyncio.coroutine + def json(self, encoding='utf-8'): + """Return mock response as a json.""" + return _json.loads(self.response.decode(encoding)) + @asyncio.coroutine def release(self): """Mock release.""" From b817c7d0c2e9803779db1573d970695ee9f44940 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli <pascal.vizeli@syshack.ch> Date: Sat, 14 Jan 2017 11:53:00 +0100 Subject: [PATCH 167/189] Bugfix camera fake image (#5314) * Bugfix camera fake image * add logger --- homeassistant/components/camera/__init__.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/camera/__init__.py b/homeassistant/components/camera/__init__.py index 168f821c6c0..2d4e73cd6e4 100644 --- a/homeassistant/components/camera/__init__.py +++ b/homeassistant/components/camera/__init__.py @@ -22,6 +22,8 @@ from homeassistant.helpers.entity_component import EntityComponent from homeassistant.helpers.config_validation import PLATFORM_SCHEMA # noqa from homeassistant.components.http import HomeAssistantView, KEY_AUTHENTICATED +_LOGGER = logging.getLogger(__name__) + DOMAIN = 'camera' DEPENDENCIES = ['http'] SCAN_INTERVAL = timedelta(seconds=30) @@ -72,8 +74,7 @@ def async_get_image(hass, entity_id, timeout=10): @asyncio.coroutine def async_setup(hass, config): """Setup the camera component.""" - component = EntityComponent( - logging.getLogger(__name__), DOMAIN, hass, SCAN_INTERVAL) + component = EntityComponent(_LOGGER, DOMAIN, hass, SCAN_INTERVAL) hass.http.register_view(CameraImageView(component.entities)) hass.http.register_view(CameraMjpegStream(component.entities)) @@ -172,8 +173,14 @@ class Camera(Entity): yield from response.drain() yield from asyncio.sleep(.5) + + except asyncio.CancelledError: + _LOGGER.debug("Close stream by browser.") + response = None + finally: - yield from response.write_eof() + if response is not None: + yield from response.write_eof() @property def state(self): From c3783bf49b4676d5f411165c4a4896235b2fa444 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Arnauts?= <michael.arnauts@gmail.com> Date: Sat, 14 Jan 2017 11:55:29 +0100 Subject: [PATCH 168/189] Bugfix for ping component now DEFAULT_SCAN_INTERVAL is a timedelta (#5318) --- homeassistant/components/device_tracker/ping.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/device_tracker/ping.py b/homeassistant/components/device_tracker/ping.py index de75a09a943..9c64d37f820 100644 --- a/homeassistant/components/device_tracker/ping.py +++ b/homeassistant/components/device_tracker/ping.py @@ -77,8 +77,8 @@ def setup_scanner(hass, config, see): """Setup 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] + - DEFAULT_SCAN_INTERVAL) + interval = timedelta(seconds=len(hosts) * config[CONF_PING_COUNT]) + \ + DEFAULT_SCAN_INTERVAL _LOGGER.info("Started ping tracker with interval=%s on hosts: %s", interval, ",".join([host.ip_address for host in hosts])) From f2a42d767e44b851693ea65b631433f3f7c7271c Mon Sep 17 00:00:00 2001 From: joopert <joopert@users.noreply.github.com> Date: Sat, 14 Jan 2017 14:54:00 +0100 Subject: [PATCH 169/189] fix hass.loop.run_in_executor in mediaplayer init (#5320) --- homeassistant/components/media_player/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/media_player/__init__.py b/homeassistant/components/media_player/__init__.py index 2a1e5e68779..f97b169e1bc 100644 --- a/homeassistant/components/media_player/__init__.py +++ b/homeassistant/components/media_player/__init__.py @@ -756,7 +756,7 @@ class MediaPlayerDevice(Entity): """ if hasattr(self, 'volume_up'): # pylint: disable=no-member - yield from self.hass.run_in_executor(None, self.volume_up) + yield from self.hass.loop.run_in_executor(None, self.volume_up) if self.volume_level < 1: yield from self.async_set_volume_level( @@ -770,7 +770,7 @@ class MediaPlayerDevice(Entity): """ if hasattr(self, 'volume_down'): # pylint: disable=no-member - yield from self.hass.run_in_executor(None, self.volume_down) + yield from self.hass.loop.run_in_executor(None, self.volume_down) if self.volume_level > 0: yield from self.async_set_volume_level( From 2e7ae1d5fe8e18102d357890a89245b124a1af0e Mon Sep 17 00:00:00 2001 From: Fabian Affolter <mail@fabian-affolter.ch> Date: Sat, 14 Jan 2017 15:16:42 +0100 Subject: [PATCH 170/189] Update the link to the docs (#5321) --- homeassistant/components/tts/picotts.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/tts/picotts.py b/homeassistant/components/tts/picotts.py index 28db88c03b0..b0c5f5deef7 100644 --- a/homeassistant/components/tts/picotts.py +++ b/homeassistant/components/tts/picotts.py @@ -1,8 +1,8 @@ """ -Support for the picotts speech service. +Support for the Pico TTS speech service. For more details about this component, please refer to the documentation at -https://home-assistant.io/components/tts/picotts/ +https://home-assistant.io/components/tts.picotts/ """ import os import tempfile @@ -33,10 +33,10 @@ def get_engine(hass, config): class PicoProvider(Provider): - """pico speech api provider.""" + """The Pico TTS API provider.""" def __init__(self, lang): - """Initialize pico provider.""" + """Initialize Pico TTS provider.""" self._lang = lang @property From 7ed83306eaa254b7cd7aa16dbbcb50c6bfff77ea Mon Sep 17 00:00:00 2001 From: Pascal Vizeli <pascal.vizeli@syshack.ch> Date: Sat, 14 Jan 2017 15:36:20 +0100 Subject: [PATCH 171/189] Add warning to openalpr (#5315) * Add warning to openalpr * fix lint * update comment --- homeassistant/components/openalpr.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/homeassistant/components/openalpr.py b/homeassistant/components/openalpr.py index 27a573b1dbf..eaaba5f8af8 100644 --- a/homeassistant/components/openalpr.py +++ b/homeassistant/components/openalpr.py @@ -126,6 +126,9 @@ def setup(hass, config): binary = config[DOMAIN].get(CONF_ALPR_BINARY) use_render_fffmpeg = False + _LOGGER.warning("This platform is replaced by 'image_processing' and will " + "be removed in a future version!") + component = EntityComponent(_LOGGER, DOMAIN, hass) openalpr_device = [] From d4eabaf844a0f886ef43436f52713815ecdb0467 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Arnauts?= <michael.arnauts@gmail.com> Date: Sat, 14 Jan 2017 16:41:41 +0100 Subject: [PATCH 172/189] Remove build dirs from docker image to keep the layers small (#5243) * Remove build dirs from docker image to keep the layers small * Create setup_docker_prereqs script to prepare docker env * Add documentation for required packages, drop colorlog and cython in first step of Dockerfile since it will be installed later on anyway. Drop libglib2.0-dev and libbluetooth-dev * Also remove early install of colorlog and cython in Dockerfile.dev * Re-add libglib2.0-dev and libbluetooth-dev for Bluetooth LE --- Dockerfile | 21 +++--------- script/build_libcec | 2 +- script/setup_docker_prereqs | 50 ++++++++++++++++++++++++++++ virtualization/Docker/Dockerfile.dev | 28 ++++------------ 4 files changed, 61 insertions(+), 40 deletions(-) create mode 100755 script/setup_docker_prereqs diff --git a/Dockerfile b/Dockerfile index 342b62e6ec1..7522ca9cb64 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,24 +6,11 @@ VOLUME /config RUN mkdir -p /usr/src/app WORKDIR /usr/src/app -RUN pip3 install --no-cache-dir colorlog cython - -# For the nmap tracker, bluetooth tracker, Z-Wave, tellstick -RUN echo "deb http://download.telldus.com/debian/ stable main" >> /etc/apt/sources.list.d/telldus.list && \ - wget -qO - http://download.telldus.se/debian/telldus-public.key | apt-key add - && \ - apt-get update && \ - apt-get install -y --no-install-recommends nmap net-tools cython3 libudev-dev sudo libglib2.0-dev bluetooth libbluetooth-dev \ - libtelldus-core2 cmake libxrandr-dev swig && \ - apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* - -COPY script/build_python_openzwave script/build_python_openzwave -RUN script/build_python_openzwave && \ - mkdir -p /usr/local/share/python-openzwave && \ - ln -sf /usr/src/app/build/python-openzwave/openzwave/config /usr/local/share/python-openzwave/config - -COPY script/build_libcec script/build_libcec -RUN script/build_libcec +# Copy build scripts +COPY script/setup_docker_prereqs script/build_python_openzwave script/build_libcec script/ +RUN script/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 diff --git a/script/build_libcec b/script/build_libcec index ad7e62c50a6..1c30d634437 100755 --- a/script/build_libcec +++ b/script/build_libcec @@ -1,7 +1,7 @@ #!/bin/sh # Sets up and builds libcec to be used with Home Assistant. # Dependencies that need to be installed: -# apt-get install cmake libudev-dev libxrandr-dev python-dev swig +# apt-get install cmake libudev-dev libxrandr-dev swig # Stop on errors set -e diff --git a/script/setup_docker_prereqs b/script/setup_docker_prereqs new file mode 100755 index 00000000000..a7c7e493f27 --- /dev/null +++ b/script/setup_docker_prereqs @@ -0,0 +1,50 @@ +#!/bin/bash +# Install requirements and build dependencies for Home Assinstant in Docker. + +# Required debian packages for running hass or components +PACKAGES=( + # homeassistant.components.device_tracker.nmap_tracker + nmap net-tools + # homeassistant.components.device_tracker.bluetooth_tracker + bluetooth libglib2.0-dev libbluetooth-dev + # homeassistant.components.tellstick + libtelldus-core2 +) + +# Required debian packages for building dependencies +PACKAGES_DEV=( + # python-openzwave + cython3 libudev-dev + # libcec + cmake swig libxrandr-dev +) + +# Stop on errors +set -e + +cd "$(dirname "$0")/.." + +# Add Tellstick repository +echo "deb http://download.telldus.com/debian/ stable main" >> /etc/apt/sources.list.d/telldus.list +wget -qO - http://download.telldus.se/debian/telldus-public.key | apt-key add - + +# Install packages +apt-get update +apt-get install -y --no-install-recommends ${PACKAGES[@]} ${PACKAGES_DEV[@]} + +# Build and install openzwave +script/build_python_openzwave +mkdir -p /usr/local/share/python-openzwave +ln -sf /usr/src/app/build/python-openzwave/openzwave/config /usr/local/share/python-openzwave/config + +# Build and install libcec +script/build_libcec + +# Remove packages +apt-get remove -y --purge ${PACKAGES_DEV[@]} +apt-get -y --purge autoremove + +# Cleanup +apt-get clean +rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* build/ + diff --git a/virtualization/Docker/Dockerfile.dev b/virtualization/Docker/Dockerfile.dev index f86a0e3de7f..7968df25b69 100644 --- a/virtualization/Docker/Dockerfile.dev +++ b/virtualization/Docker/Dockerfile.dev @@ -10,24 +10,11 @@ VOLUME /config RUN mkdir -p /usr/src/app WORKDIR /usr/src/app -RUN pip3 install --no-cache-dir colorlog cython - -# For the nmap tracker, bluetooth tracker, Z-Wave, tellstick -RUN echo "deb http://download.telldus.com/debian/ stable main" >> /etc/apt/sources.list.d/telldus.list && \ - wget -qO - http://download.telldus.se/debian/telldus-public.key | apt-key add - && \ - apt-get update && \ - apt-get install -y --no-install-recommends nmap net-tools cython3 libudev-dev sudo libglib2.0-dev bluetooth libbluetooth-dev \ - libtelldus-core2 cmake libxrandr-dev swig && \ - apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* - -COPY script/build_python_openzwave script/build_python_openzwave -RUN script/build_python_openzwave && \ - mkdir -p /usr/local/share/python-openzwave && \ - ln -sf /usr/src/app/build/python-openzwave/openzwave/config /usr/local/share/python-openzwave/config - -COPY script/build_libcec script/build_libcec -RUN script/build_libcec +# Copy build scripts +COPY script/setup_docker_prereqs script/build_python_openzwave script/build_libcec script/ +RUN script/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 @@ -42,13 +29,10 @@ RUN curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash - && \ RUN pip3 install --no-cache-dir tox # Copy over everything required to run tox -COPY requirements_test.txt . -COPY setup.cfg . -COPY setup.py . -COPY tox.ini . +COPY requirements_test.txt setup.cfg setup.py tox.ini ./ COPY homeassistant/const.py homeassistant/const.py -# Get all dependencies +# Prefetch dependencies for tox RUN tox -e py35 --notest # END: Development additions From ef4a9bf35478eac72a7f9b3cdd4bab923600d251 Mon Sep 17 00:00:00 2001 From: Fabian Affolter <mail@fabian-affolter.ch> Date: Sat, 14 Jan 2017 17:08:21 +0100 Subject: [PATCH 173/189] Add timeout to requests, remove pylint disable, and docsstrings (#5326) --- homeassistant/components/switch/kankun.py | 28 +++++++++++------------ 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/homeassistant/components/switch/kankun.py b/homeassistant/components/switch/kankun.py index 252839004ee..f3008d3b086 100644 --- a/homeassistant/components/switch/kankun.py +++ b/homeassistant/components/switch/kankun.py @@ -1,10 +1,11 @@ """ -Support for customised Kankun SP3 wifi switch. +Support for customised Kankun SP3 Wifi switch. For more details about this platform, please refer to the documentation at https://home-assistant.io/components/switch.kankun/ """ import logging + import requests import voluptuous as vol @@ -35,7 +36,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices_callback, discovery_info=None): - """Find and return kankun switches.""" + """Set up Kankun Wifi switches.""" switches = config.get('switches', {}) devices = [] @@ -54,15 +55,14 @@ def setup_platform(hass, config, add_devices_callback, discovery_info=None): class KankunSwitch(SwitchDevice): - """Represents a Kankun wifi switch.""" + """Representation of a Kankun Wifi switch.""" - # pylint: disable=too-many-arguments def __init__(self, hass, name, host, port, path, user, passwd): - """Initialise device.""" + """Initialise the device.""" self._hass = hass self._name = name self._state = False - self._url = "http://{}:{}{}".format(host, port, path) + self._url = 'http://{}:{}{}'.format(host, port, path) if user is not None: self._auth = (user, passwd) else: @@ -70,25 +70,25 @@ class KankunSwitch(SwitchDevice): def _switch(self, newstate): """Switch on or off.""" - _LOGGER.info('Switching to state: %s', newstate) + _LOGGER.info("Switching to state: %s", newstate) try: - req = requests.get("{}?set={}".format(self._url, newstate), - auth=self._auth) + req = requests.get('{}?set={}'.format(self._url, newstate), + auth=self._auth, timeout=5) return req.json()['ok'] except requests.RequestException: - _LOGGER.error('Switching failed.') + _LOGGER.error("Switching failed") def _query_state(self): """Query switch state.""" - _LOGGER.info('Querying state from: %s', self._url) + _LOGGER.info("Querying state from: %s", self._url) try: - req = requests.get("{}?get=state".format(self._url), - auth=self._auth) + req = requests.get('{}?get=state'.format(self._url), + auth=self._auth, timeout=5) return req.json()['state'] == "on" except requests.RequestException: - _LOGGER.error('State query failed.') + _LOGGER.error("State query failed") @property def should_poll(self): From 2aa996b55820ef71367e0957701272c4ef44ab1d Mon Sep 17 00:00:00 2001 From: Fabian Affolter <mail@fabian-affolter.ch> Date: Sat, 14 Jan 2017 17:08:48 +0100 Subject: [PATCH 174/189] Update name (#5324) --- homeassistant/components/bbb_gpio.py | 7 ++----- homeassistant/components/switch/bbb_gpio.py | 20 +++++--------------- 2 files changed, 7 insertions(+), 20 deletions(-) diff --git a/homeassistant/components/bbb_gpio.py b/homeassistant/components/bbb_gpio.py index 52ab14689fd..d8acaaa184c 100644 --- a/homeassistant/components/bbb_gpio.py +++ b/homeassistant/components/bbb_gpio.py @@ -18,7 +18,7 @@ DOMAIN = 'bbb_gpio' # pylint: disable=no-member def setup(hass, config): - """Setup the Beaglebone black GPIO component.""" + """Set up the BeagleBone Black GPIO component.""" # pylint: disable=import-error import Adafruit_BBIO.GPIO as GPIO @@ -71,7 +71,4 @@ def edge_detect(pin, event_callback, bounce): # pylint: disable=import-error,undefined-variable import Adafruit_BBIO.GPIO as GPIO GPIO.add_event_detect( - pin, - GPIO.BOTH, - callback=event_callback, - bouncetime=bounce) + pin, GPIO.BOTH, callback=event_callback, bouncetime=bounce) diff --git a/homeassistant/components/switch/bbb_gpio.py b/homeassistant/components/switch/bbb_gpio.py index f765cb95e1f..ce2d91273f9 100644 --- a/homeassistant/components/switch/bbb_gpio.py +++ b/homeassistant/components/switch/bbb_gpio.py @@ -1,18 +1,8 @@ """ -Allows to configure a switch using BBB GPIO. +Allows to configure a switch using BeagleBone Black GPIO. -Switch example for two GPIOs pins P9_12 and P9_42 -Allowed GPIO pin name is GPIOxxx or Px_x - -switch: - - platform: bbb_gpio - pins: - GPIO0_7: - name: LED Red - P9_12: - name: LED Green - initial: true - invert_logic: true +For more details about this component, please refer to the documentation at +https://home-assistant.io/components/switch.bbb_gpio/ """ import logging @@ -46,7 +36,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Beaglebone GPIO devices.""" + """Set up the BeagleBone Black GPIO devices.""" pins = config.get(CONF_PINS) switches = [] @@ -56,7 +46,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): class BBBGPIOSwitch(ToggleEntity): - """Representation of a Beaglebone GPIO.""" + """Representation of a BeagleBone Black GPIO.""" def __init__(self, pin, params): """Initialize the pin.""" From 03a6aa48e07f219045e49aa740cc2a2e32cc6f6b Mon Sep 17 00:00:00 2001 From: Colin O'Dell <colinodell@gmail.com> Date: Sat, 14 Jan 2017 12:41:38 -0500 Subject: [PATCH 175/189] Copy openzwave config to ensure it exists (fixes #5328) (#5329) --- script/setup_docker_prereqs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/script/setup_docker_prereqs b/script/setup_docker_prereqs index a7c7e493f27..42e1fd49bf6 100755 --- a/script/setup_docker_prereqs +++ b/script/setup_docker_prereqs @@ -35,7 +35,7 @@ apt-get install -y --no-install-recommends ${PACKAGES[@]} ${PACKAGES_DEV[@]} # Build and install openzwave script/build_python_openzwave mkdir -p /usr/local/share/python-openzwave -ln -sf /usr/src/app/build/python-openzwave/openzwave/config /usr/local/share/python-openzwave/config +cp -R /usr/src/app/build/python-openzwave/openzwave/config /usr/local/share/python-openzwave/config # Build and install libcec script/build_libcec From bf3e5b460e1e7b171bf8fb2a531f9a5617037d2e Mon Sep 17 00:00:00 2001 From: Fabian Affolter <mail@fabian-affolter.ch> Date: Sat, 14 Jan 2017 18:42:45 +0100 Subject: [PATCH 176/189] Clean-up (#5327) --- homeassistant/components/insteon_local.py | 19 +++---- .../components/light/insteon_local.py | 51 +++++++------------ .../components/switch/insteon_local.py | 49 +++++++----------- 3 files changed, 43 insertions(+), 76 deletions(-) diff --git a/homeassistant/components/insteon_local.py b/homeassistant/components/insteon_local.py index 7b35b45293c..c2007dd51f3 100644 --- a/homeassistant/components/insteon_local.py +++ b/homeassistant/components/insteon_local.py @@ -1,28 +1,25 @@ """ -Local Support for Insteon. - -Based on the insteonlocal library -https://github.com/phareous/insteonlocal +Local support for Insteon. For more details about this component, please refer to the documentation at https://home-assistant.io/components/insteon_local/ """ import logging -import voluptuous as vol + import requests -from homeassistant.const import (CONF_PASSWORD, CONF_USERNAME, CONF_HOST, - CONF_PORT, CONF_TIMEOUT) +import voluptuous as vol + +from homeassistant.const import ( + CONF_PASSWORD, CONF_USERNAME, CONF_HOST, CONF_PORT, CONF_TIMEOUT) import homeassistant.helpers.config_validation as cv REQUIREMENTS = ['insteonlocal==0.39'] _LOGGER = logging.getLogger(__name__) -DOMAIN = 'insteon_local' - DEFAULT_PORT = 25105 - DEFAULT_TIMEOUT = 10 +DOMAIN = 'insteon_local' CONFIG_SCHEMA = vol.Schema({ DOMAIN: vol.Schema({ @@ -36,7 +33,7 @@ CONFIG_SCHEMA = vol.Schema({ def setup(hass, config): - """Setup Insteon Hub component. + """Set up Insteon Hub component. This will automatically import associated lights. """ diff --git a/homeassistant/components/light/insteon_local.py b/homeassistant/components/light/insteon_local.py index 9c40ec9c4f7..c6a52be2842 100644 --- a/homeassistant/components/light/insteon_local.py +++ b/homeassistant/components/light/insteon_local.py @@ -1,50 +1,35 @@ """ Support for Insteon dimmers via local hub control. -Based on the insteonlocal library -https://github.com/phareous/insteonlocal - For more details about this component, please refer to the documentation at https://home-assistant.io/components/light.insteon_local/ - --- -Example platform config --- - -insteon_local: - host: YOUR HUB IP - username: YOUR HUB USERNAME - password: YOUR HUB PASSWORD - timeout: 10 - port: 25105 - """ import json import logging import os from datetime import timedelta -from homeassistant.components.light import (ATTR_BRIGHTNESS, - SUPPORT_BRIGHTNESS, Light) + +from homeassistant.components.light import ( + ATTR_BRIGHTNESS, SUPPORT_BRIGHTNESS, Light) from homeassistant.loader import get_component import homeassistant.util as util -INSTEON_LOCAL_LIGHTS_CONF = 'insteon_local_lights.conf' +_CONFIGURING = {} +_LOGGER = logging.getLogger(__name__) DEPENDENCIES = ['insteon_local'] +DOMAIN = 'light' + +INSTEON_LOCAL_LIGHTS_CONF = 'insteon_local_lights.conf' + +MIN_TIME_BETWEEN_FORCED_SCANS = timedelta(milliseconds=100) +MIN_TIME_BETWEEN_SCANS = timedelta(seconds=5) SUPPORT_INSTEON_LOCAL = SUPPORT_BRIGHTNESS -MIN_TIME_BETWEEN_SCANS = timedelta(seconds=5) -MIN_TIME_BETWEEN_FORCED_SCANS = timedelta(milliseconds=100) - -DOMAIN = "light" - -_LOGGER = logging.getLogger(__name__) -_CONFIGURING = {} - def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Insteon local light platform.""" + """Set up the Insteon local light platform.""" insteonhub = hass.data['insteon_local'] conf_lights = config_from_file(hass.config.path(INSTEON_LOCAL_LIGHTS_CONF)) @@ -92,12 +77,12 @@ def request_configuration(device_id, insteonhub, model, hass, def setup_light(device_id, name, insteonhub, hass, add_devices_callback): - """Setup light.""" + """Set up the light.""" if device_id in _CONFIGURING: 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_lights = config_from_file(hass.config.path(INSTEON_LOCAL_LIGHTS_CONF)) if device_id not in conf_lights: @@ -106,7 +91,7 @@ def setup_light(device_id, name, insteonhub, hass, add_devices_callback): if not config_from_file( hass.config.path(INSTEON_LOCAL_LIGHTS_CONF), conf_lights): - _LOGGER.error('failed to save config file') + _LOGGER.error("Failed to save configuration file") device = insteonhub.dimmer(device_id) add_devices_callback([InsteonLocalDimmerDevice(device, name)]) @@ -130,7 +115,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 configuration file failed: %s", error) # This won't work yet return False else: @@ -153,8 +138,8 @@ class InsteonLocalDimmerDevice(Light): @property def unique_id(self): - """Return the ID of this insteon node.""" - return 'insteon_local_' + self.node.device_id + """Return the ID of this Insteon node.""" + return 'insteon_local_{}'.format(self.node.device_id) @property def brightness(self): diff --git a/homeassistant/components/switch/insteon_local.py b/homeassistant/components/switch/insteon_local.py index c088e2cf072..54350781344 100644 --- a/homeassistant/components/switch/insteon_local.py +++ b/homeassistant/components/switch/insteon_local.py @@ -1,56 +1,41 @@ """ Support for Insteon switch devices via local hub support. -Based on the insteonlocal library -https://github.com/phareous/insteonlocal - For more details about this component, please refer to the documentation at https://home-assistant.io/components/switch.insteon_local/ - --- -Example platform config --- - -insteon_local: - host: YOUR HUB IP - username: YOUR HUB USERNAME - password: YOUR HUB PASSWORD - timeout: 10 - port: 25105 """ import json import logging import os from datetime import timedelta + from homeassistant.components.switch import SwitchDevice from homeassistant.loader import get_component import homeassistant.util as util -INSTEON_LOCAL_SWITCH_CONF = 'insteon_local_switch.conf' +_CONFIGURING = {} +_LOGGER = logging.getLogger(__name__) DEPENDENCIES = ['insteon_local'] +DOMAIN = 'switch' -_LOGGER = logging.getLogger(__name__) +INSTEON_LOCAL_SWITCH_CONF = 'insteon_local_switch.conf' -MIN_TIME_BETWEEN_SCANS = timedelta(seconds=5) MIN_TIME_BETWEEN_FORCED_SCANS = timedelta(milliseconds=100) - -DOMAIN = "switch" - -_LOGGER = logging.getLogger(__name__) -_CONFIGURING = {} +MIN_TIME_BETWEEN_SCANS = timedelta(seconds=5) def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Insteon local switch platform.""" + """Set up the Insteon local switch platform.""" insteonhub = hass.data['insteon_local'] conf_switches = config_from_file(hass.config.path( INSTEON_LOCAL_SWITCH_CONF)) if len(conf_switches): for device_id in conf_switches: - setup_switch(device_id, conf_switches[device_id], insteonhub, - hass, add_devices) + setup_switch( + device_id, conf_switches[device_id], insteonhub, hass, + add_devices) linked = insteonhub.get_linked() @@ -90,12 +75,12 @@ def request_configuration(device_id, insteonhub, model, hass, def setup_switch(device_id, name, insteonhub, hass, add_devices_callback): - """Setup switch.""" + """Set up the switch.""" if device_id in _CONFIGURING: 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: @@ -103,7 +88,7 @@ def setup_switch(device_id, name, insteonhub, hass, add_devices_callback): if not config_from_file( hass.config.path(INSTEON_LOCAL_SWITCH_CONF), conf_switch): - _LOGGER.error('failed to save config file') + _LOGGER.error("Failed to save configuration file") device = insteonhub.switch(device_id) add_devices_callback([InsteonLocalSwitchDevice(device, name)]) @@ -117,7 +102,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 configuration file failed: %s", error) return False return True else: @@ -127,7 +112,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: @@ -150,8 +135,8 @@ class InsteonLocalSwitchDevice(SwitchDevice): @property def unique_id(self): - """Return the ID of this insteon node.""" - return 'insteon_local_' + self.node.device_id + """Return the ID of this Insteon node.""" + return 'insteon_local_{}'.format(self.node.device_id) @util.Throttle(MIN_TIME_BETWEEN_SCANS, MIN_TIME_BETWEEN_FORCED_SCANS) def update(self): From e3418f633ce13364544fd4e426ba0a2be6a570d7 Mon Sep 17 00:00:00 2001 From: Colin O'Dell <colinodell@gmail.com> Date: Sat, 14 Jan 2017 12:43:40 -0500 Subject: [PATCH 177/189] Add ffmpeg to Docker from jessie-backports (#5322) --- script/setup_docker_prereqs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/script/setup_docker_prereqs b/script/setup_docker_prereqs index 42e1fd49bf6..d6ec2789c80 100755 --- a/script/setup_docker_prereqs +++ b/script/setup_docker_prereqs @@ -11,6 +11,12 @@ PACKAGES=( libtelldus-core2 ) +# Required debian packages for running hass or components from jessie-backports +PACKAGES_BACKPORTS=( + # homeassistant.components.ffmpeg + ffmpeg +) + # Required debian packages for building dependencies PACKAGES_DEV=( # python-openzwave @@ -28,9 +34,13 @@ cd "$(dirname "$0")/.." echo "deb http://download.telldus.com/debian/ stable main" >> /etc/apt/sources.list.d/telldus.list wget -qO - http://download.telldus.se/debian/telldus-public.key | apt-key add - +# Add jessie-backports +echo "deb http://httpredir.debian.org/debian jessie-backports main" >> /etc/apt/sources.list + # Install packages apt-get update apt-get install -y --no-install-recommends ${PACKAGES[@]} ${PACKAGES_DEV[@]} +apt-get install -y --no-install-recommends -t jessie-backports ${PACKAGES_BACKPORTS[@]} # Build and install openzwave script/build_python_openzwave From 3b9fb6ccf55a764aff76969e110532950a6f3072 Mon Sep 17 00:00:00 2001 From: Thibault Cohen <titilambert@gmail.com> Date: Sat, 14 Jan 2017 12:52:47 -0500 Subject: [PATCH 178/189] Improve InfluxDB (#5238) * Revert #4791 and fixes #4696 * Update influxDB based on PR comments * Add migration script * Update influxdb_migrator based on PR comments * Add override_measurement option to influxdb_migrator * Rename value field to state when data is string type * Fix influxdb cloning query --- homeassistant/components/influxdb.py | 77 +++--- homeassistant/scripts/influxdb_migrator.py | 193 +++++++++++++++ tests/components/test_influxdb.py | 260 ++++++++++++++------- 3 files changed, 418 insertions(+), 112 deletions(-) create mode 100644 homeassistant/scripts/influxdb_migrator.py diff --git a/homeassistant/components/influxdb.py b/homeassistant/components/influxdb.py index 0250efae818..5221679b6b5 100644 --- a/homeassistant/components/influxdb.py +++ b/homeassistant/components/influxdb.py @@ -9,8 +9,9 @@ import logging import voluptuous as vol from homeassistant.const import ( - EVENT_STATE_CHANGED, CONF_HOST, CONF_PORT, CONF_SSL, CONF_VERIFY_SSL, - CONF_USERNAME, CONF_BLACKLIST, CONF_PASSWORD, CONF_WHITELIST) + EVENT_STATE_CHANGED, STATE_UNAVAILABLE, STATE_UNKNOWN, CONF_HOST, + CONF_PORT, CONF_SSL, CONF_VERIFY_SSL, CONF_USERNAME, CONF_BLACKLIST, + CONF_PASSWORD, CONF_WHITELIST) from homeassistant.helpers import state as state_helper import homeassistant.helpers.config_validation as cv @@ -21,6 +22,7 @@ _LOGGER = logging.getLogger(__name__) CONF_DB_NAME = 'database' CONF_TAGS = 'tags' CONF_DEFAULT_MEASUREMENT = 'default_measurement' +CONF_OVERRIDE_MEASUREMENT = 'override_measurement' DEFAULT_DATABASE = 'home_assistant' DEFAULT_VERIFY_SSL = True @@ -37,6 +39,8 @@ CONFIG_SCHEMA = vol.Schema({ vol.Optional(CONF_DB_NAME, default=DEFAULT_DATABASE): cv.string, vol.Optional(CONF_PORT): cv.port, vol.Optional(CONF_SSL): cv.boolean, + vol.Optional(CONF_DEFAULT_MEASUREMENT): cv.string, + vol.Optional(CONF_OVERRIDE_MEASUREMENT): cv.string, vol.Optional(CONF_TAGS, default={}): vol.Schema({cv.string: cv.string}), vol.Optional(CONF_WHITELIST, default=[]): @@ -76,10 +80,12 @@ def setup(hass, config): blacklist = conf.get(CONF_BLACKLIST) whitelist = conf.get(CONF_WHITELIST) tags = conf.get(CONF_TAGS) + default_measurement = conf.get(CONF_DEFAULT_MEASUREMENT) + override_measurement = conf.get(CONF_OVERRIDE_MEASUREMENT) try: influx = InfluxDBClient(**kwargs) - influx.query("select * from /.*/ LIMIT 1;") + influx.query("SELECT * FROM /.*/ LIMIT 1;") except exceptions.InfluxDBClientError as exc: _LOGGER.error("Database host is not accessible due to '%s', please " "check your entries in the configuration file and that " @@ -89,56 +95,61 @@ def setup(hass, config): def influx_event_listener(event): """Listen for new messages on the bus and sends them to Influx.""" state = event.data.get('new_state') - if state is None or state.entity_id in blacklist: - return - - if whitelist and state.entity_id not in whitelist: + if state is None or state.state in ( + STATE_UNKNOWN, '', STATE_UNAVAILABLE) or \ + state.entity_id in blacklist: return try: - _state = state_helper.state_as_number(state) + if len(whitelist) > 0 and state.entity_id not in whitelist: + return + + _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 - # Create a counter for this state change json_body = [ { - 'measurement': "hass.state.count", + 'measurement': measurement, 'tags': { 'domain': state.domain, 'entity_id': state.object_id, }, 'time': event.time_fired, 'fields': { - 'value': 1 + _state_key: _state, } } ] - json_body[0]['tags'].update(tags) - - state_fields = {} - if isinstance(_state, (int, float)): - state_fields['value'] = float(_state) - for key, value in state.attributes.items(): - if isinstance(value, (int, float)): - state_fields[key] = float(value) + if key != 'unit_of_measurement': + # If the key is already in fields + if key in json_body[0]['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: + json_body[0]['fields'][key] = float(value) + except (ValueError, TypeError): + new_key = "{}_str".format(key) + json_body[0]['fields'][new_key] = str(value) - if state_fields: - json_body.append( - { - 'measurement': "hass.state", - 'tags': { - 'domain': state.domain, - 'entity_id': state.object_id - }, - 'time': event.time_fired, - 'fields': state_fields - } - ) - - json_body[1]['tags'].update(tags) + json_body[0]['tags'].update(tags) try: influx.write_points(json_body) diff --git a/homeassistant/scripts/influxdb_migrator.py b/homeassistant/scripts/influxdb_migrator.py new file mode 100644 index 00000000000..6f643c592de --- /dev/null +++ b/homeassistant/scripts/influxdb_migrator.py @@ -0,0 +1,193 @@ +"""Script to convert an old-structure influxdb to a new one.""" + +import argparse +import sys + +from typing import List + + +# Based on code at +# http://stackoverflow.com/questions/3173320/text-progress-bar-in-the-console +def print_progress(iteration: int, total: int, prefix: str='', suffix: str='', + decimals: int=2, bar_length: int=68) -> None: + """Print progress bar. + + Call in a loop to create terminal progress bar + @params: + iteration - Required : current iteration (Int) + total - Required : total iterations (Int) + prefix - Optional : prefix string (Str) + suffix - Optional : suffix string (Str) + decimals - Optional : number of decimals in percent complete (Int) + barLength - Optional : character length of bar (Int) + """ + filled_length = int(round(bar_length * iteration / float(total))) + percents = round(100.00 * (iteration / float(total)), decimals) + line = '#' * filled_length + '-' * (bar_length - filled_length) + sys.stdout.write('%s [%s] %s%s %s\r' % (prefix, line, + percents, '%', suffix)) + sys.stdout.flush() + if iteration == total: + print("\n") + + +def run(script_args: List) -> int: + """The actual script body.""" + from influxdb import InfluxDBClient + + parser = argparse.ArgumentParser( + description="Migrate legacy influxDB.") + 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 migrate at the same time") + parser.add_argument( + '-o', '--override-measurement', + metavar='override_measurement', + default="", + help="Store all your points in the same measurement") + parser.add_argument( + '-D', '--delete', + action='store_true', + default=False, + help="Delete old database") + parser.add_argument( + '--script', + choices=['influxdb_migrator']) + + args = parser.parse_args() + + # Get client for old DB + client = InfluxDBClient(args.host, args.port, + args.username, args.password) + client.switch_database(args.dbname) + # Get DB list + db_list = [db['name'] for db in client.get_list_database()] + # Get measurements of the old DB + res = client.query('SHOW MEASUREMENTS') + measurements = [measurement['name'] for measurement in res.get_points()] + nb_measurements = len(measurements) + # Move data + # Get old DB name + old_dbname = "{}__old".format(args.dbname) + # Create old DB if needed + if old_dbname not in db_list: + client.create_database(old_dbname) + # Copy data to the old DB + print("Cloning from {} to {}".format(args.dbname, old_dbname)) + for index, measurement in enumerate(measurements): + client.query('''SELECT * INTO {}..:MEASUREMENT FROM ''' + '"{}" GROUP BY *'.format(old_dbname, measurement)) + # Print progess + print_progress(index + 1, nb_measurements) + + # Delete the database + client.drop_database(args.dbname) + # Create new DB if needed + client.create_database(args.dbname) + client.switch_database(old_dbname) + # Get client for new DB + new_client = InfluxDBClient(args.host, args.port, args.username, + args.password, args.dbname) + # Counter of points without time + point_wt_time = 0 + + print("Migrating from {} to {}".format(old_dbname, args.dbname)) + # Walk into measurenebt + for index, measurement in enumerate(measurements): + + # Get tag list + res = client.query('''SHOW TAG KEYS FROM "{}"'''.format(measurement)) + tags = [v['tagKey'] for v in res.get_points()] + # Get field list + res = client.query('''SHOW FIELD KEYS FROM "{}"'''.format(measurement)) + fields = [v['fieldKey'] for v in res.get_points()] + # Get points, convert and send points to the new DB + offset = 0 + while True: + nb_points = 0 + # Prepare new points + new_points = [] + # Get points + res = client.query('SELECT * FROM "{}" LIMIT {} OFFSET ' + '{}'.format(measurement, args.step, offset)) + for point in res.get_points(): + new_point = {"tags": {}, + "fields": {}, + "time": None} + if args.override_measurement: + new_point["measurement"] = args.override_measurement + else: + new_point["measurement"] = measurement + # Check time + if point["time"] is None: + # Point without time + point_wt_time += 1 + print("Can not convert point without time") + continue + # Convert all fields + for field in fields: + try: + new_point["fields"][field] = float(point[field]) + except (ValueError, TypeError): + if field == "value": + new_key = "state" + else: + new_key = "{}_str".format(field) + new_point["fields"][new_key] = str(point[field]) + # Add tags + for tag in tags: + new_point["tags"][tag] = point[tag] + # Set time + new_point["time"] = point["time"] + # Add new point to the new list + new_points.append(new_point) + # Count nb points + nb_points += 1 + + # Send to the new db + try: + new_client.write_points(new_points) + except Exception as exp: + raise exp + + # If there is no points + if nb_points == 0: + # print("Measurement {} migrated".format(measurement)) + break + else: + # Increment offset + offset += args.step + # Print progess + print_progress(index + 1, nb_measurements) + + # Delete database if needed + if args.delete: + print("Dropping {}".format(old_dbname)) + client.drop_database(old_dbname) diff --git a/tests/components/test_influxdb.py b/tests/components/test_influxdb.py index 1e64351e406..96a6460a2a4 100644 --- a/tests/components/test_influxdb.py +++ b/tests/components/test_influxdb.py @@ -106,43 +106,52 @@ class TestInfluxDB(unittest.TestCase): """Test the event listener.""" self._setup() - valid = {'1': 1, '1.0': 1.0, STATE_ON: 1, STATE_OFF: 0, 'str': 'str'} + valid = { + '1': 1, + '1.0': 1.0, + STATE_ON: 1, + STATE_OFF: 0, + 'foo': 'foo' + } for in_, out in valid.items(): - state = mock.MagicMock(state=in_, domain='fake', - object_id='entity') + attrs = { + 'unit_of_measurement': 'foobars', + 'longitude': '1.1', + 'latitude': '2.2' + } + state = mock.MagicMock( + state=in_, domain='fake', object_id='entity', attributes=attrs) event = mock.MagicMock(data={'new_state': state}, time_fired=12345) - - body = [ - { - 'measurement': 'hass.state.count', + if isinstance(out, str): + body = [{ + 'measurement': 'foobars', 'tags': { 'domain': 'fake', 'entity_id': 'entity', }, 'time': 12345, 'fields': { - 'value': 1, - } - } - ] - - if isinstance(out, (int, float)): - body.append( - { - 'measurement': 'hass.state', - 'tags': { - 'domain': 'fake', - 'entity_id': 'entity', - }, - 'time': 12345, - 'fields': { - 'value': float(out) - } - } - ) + 'state': out, + 'longitude': 1.1, + 'latitude': 2.2 + }, + }] + else: + body = [{ + 'measurement': 'foobars', + 'tags': { + 'domain': 'fake', + 'entity_id': 'entity', + }, + 'time': 12345, + 'fields': { + 'value': out, + 'longitude': 1.1, + 'latitude': 2.2 + }, + }] self.handler_method(event) - self.assertEqual( mock_client.return_value.write_points.call_count, 1 ) @@ -150,7 +159,40 @@ class TestInfluxDB(unittest.TestCase): mock_client.return_value.write_points.call_args, mock.call(body) ) + mock_client.return_value.write_points.reset_mock() + def test_event_listener_no_units(self, mock_client): + """Test the event listener for missing units.""" + self._setup() + + for unit in (None, ''): + if unit: + attrs = {'unit_of_measurement': unit} + else: + attrs = {} + state = mock.MagicMock( + state=1, domain='fake', entity_id='entity-id', + object_id='entity', attributes=attrs) + event = mock.MagicMock(data={'new_state': state}, time_fired=12345) + body = [{ + 'measurement': 'entity-id', + 'tags': { + 'domain': 'fake', + 'entity_id': 'entity', + }, + 'time': 12345, + 'fields': { + 'value': 1, + }, + }] + self.handler_method(event) + self.assertEqual( + mock_client.return_value.write_points.call_count, 1 + ) + self.assertEqual( + mock_client.return_value.write_points.call_args, + mock.call(body) + ) mock_client.return_value.write_points.reset_mock() def test_event_listener_fail_write(self, mock_client): @@ -165,6 +207,39 @@ class TestInfluxDB(unittest.TestCase): influx_client.exceptions.InfluxDBClientError('foo') self.handler_method(event) + def test_event_listener_states(self, mock_client): + """Test the event listener against ignored states.""" + self._setup() + + for state_state in (1, 'unknown', '', 'unavailable'): + state = mock.MagicMock( + state=state_state, domain='fake', entity_id='entity-id', + object_id='entity', attributes={}) + event = mock.MagicMock(data={'new_state': state}, time_fired=12345) + body = [{ + 'measurement': 'entity-id', + 'tags': { + 'domain': 'fake', + 'entity_id': 'entity', + }, + 'time': 12345, + 'fields': { + 'value': 1, + }, + }] + self.handler_method(event) + if state_state == 1: + 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_blacklist(self, mock_client): """Test the event listener against a blacklist.""" self._setup() @@ -174,34 +249,18 @@ class TestInfluxDB(unittest.TestCase): 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': 'hass.state.count', - 'tags': { - 'domain': 'fake', - 'entity_id': entity_id, - }, - 'time': 12345, - 'fields': { - 'value': 1, - } + body = [{ + 'measurement': 'fake.{}'.format(entity_id), + 'tags': { + 'domain': 'fake', + 'entity_id': entity_id, }, - { - 'measurement': 'hass.state', - 'tags': { - 'domain': 'fake', - 'entity_id': entity_id, - }, - 'time': 12345, - 'fields': { - 'value': 1 - } - } - ] - + 'time': 12345, + 'fields': { + 'value': 1, + }, + }] self.handler_method(event) - if entity_id == 'ok': self.assertEqual( mock_client.return_value.write_points.call_count, 1 @@ -212,7 +271,6 @@ class TestInfluxDB(unittest.TestCase): ) 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): @@ -229,43 +287,45 @@ class TestInfluxDB(unittest.TestCase): for in_, out in valid.items(): attrs = { 'unit_of_measurement': 'foobars', + 'longitude': '1.1', + 'latitude': '2.2', 'invalid_attribute': ['value1', 'value2'] } state = mock.MagicMock( state=in_, domain='fake', object_id='entity', attributes=attrs) event = mock.MagicMock(data={'new_state': state}, time_fired=12345) - - body = [ - { - 'measurement': 'hass.state.count', + if isinstance(out, str): + body = [{ + 'measurement': 'foobars', 'tags': { 'domain': 'fake', 'entity_id': 'entity', }, 'time': 12345, 'fields': { - 'value': 1, - } - } - ] - - if isinstance(out, (int, float)): - body.append( - { - 'measurement': 'hass.state', - 'tags': { - 'domain': 'fake', - 'entity_id': 'entity', - }, - 'time': 12345, - 'fields': { - 'value': float(out) - } - } - ) + 'state': out, + 'longitude': 1.1, + 'latitude': 2.2, + 'invalid_attribute_str': "['value1', 'value2']" + }, + }] + else: + body = [{ + 'measurement': 'foobars', + 'tags': { + 'domain': 'fake', + 'entity_id': 'entity', + }, + 'time': 12345, + 'fields': { + 'value': float(out), + 'longitude': 1.1, + 'latitude': 2.2, + 'invalid_attribute_str': "['value1', 'value2']" + }, + }] self.handler_method(event) - self.assertEqual( mock_client.return_value.write_points.call_count, 1 ) @@ -273,5 +333,47 @@ class TestInfluxDB(unittest.TestCase): mock_client.return_value.write_points.call_args, mock.call(body) ) - + mock_client.return_value.write_points.reset_mock() + + def test_event_listener_default_measurement(self, mock_client): + """Test the event listener with a default measurement.""" + config = { + 'influxdb': { + 'host': 'host', + 'username': 'user', + 'password': 'pass', + 'default_measurement': 'state', + 'blacklist': ['fake.blacklisted'] + } + } + 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 ('ok', 'blacklisted'): + 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': 'state', + 'tags': { + 'domain': 'fake', + 'entity_id': entity_id, + }, + 'time': 12345, + 'fields': { + 'value': 1, + }, + }] + self.handler_method(event) + if entity_id == '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() From 3d9b2b5ed011f1395318b8f73b32835dfde45e7b Mon Sep 17 00:00:00 2001 From: Gianluca Barbaro <me@barbaro.it> Date: Sat, 14 Jan 2017 22:30:24 +0100 Subject: [PATCH 179/189] Update vlc.py Added support for additional optional configuration arguments: to send to vlc. It is useful for special configurations of VLC. For example, I have two sound cards on my server, so I defined two vlc media players: media_player: - platform: vlc name: speaker_1 arguments: '--alsa-audio-device=hw:1,0' - platform: vlc name: speaker_2 arguments: '--alsa-audio-device=hw:0,0' This way, by specifying the corresponding entity_id, I can send the output to the desired speaker. It is also useful for TTS. --- homeassistant/components/media_player/vlc.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/media_player/vlc.py b/homeassistant/components/media_player/vlc.py index 3398e7093cc..909dfe0fd77 100644 --- a/homeassistant/components/media_player/vlc.py +++ b/homeassistant/components/media_player/vlc.py @@ -20,28 +20,30 @@ REQUIREMENTS = ['python-vlc==1.1.2'] _LOGGER = logging.getLogger(__name__) +ADDITIONAL_ARGS = 'arguments' SUPPORT_VLC = SUPPORT_PAUSE | SUPPORT_VOLUME_SET | SUPPORT_VOLUME_MUTE | \ SUPPORT_PLAY_MEDIA | SUPPORT_PLAY PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Optional(CONF_NAME): cv.string, + vol.Optional(ADDITIONAL_ARGS): cv.string, }) # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): """Setup the vlc platform.""" - add_devices([VlcDevice(config.get(CONF_NAME))]) + add_devices([VlcDevice(config.get(CONF_NAME), config.get(ADDITIONAL_ARGS))]) class VlcDevice(MediaPlayerDevice): """Representation of a vlc player.""" - def __init__(self, name): + def __init__(self, name, arguments): """Initialize the vlc device.""" import vlc - self._instance = vlc.Instance() + self._instance = vlc.Instance(arguments) self._vlc = self._instance.media_player_new() self._name = name self._volume = None From 7436a969789cf0f534a398e1ca5bb7cd59fa9adb Mon Sep 17 00:00:00 2001 From: Gianluca Barbaro <me@barbaro.it> Date: Sat, 14 Jan 2017 22:32:50 +0100 Subject: [PATCH 180/189] Update vlc.py --- homeassistant/components/media_player/vlc.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/media_player/vlc.py b/homeassistant/components/media_player/vlc.py index 909dfe0fd77..d5d927e5ff8 100644 --- a/homeassistant/components/media_player/vlc.py +++ b/homeassistant/components/media_player/vlc.py @@ -34,7 +34,8 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): """Setup the vlc platform.""" - add_devices([VlcDevice(config.get(CONF_NAME), config.get(ADDITIONAL_ARGS))]) + add_devices([VlcDevice(config.get(CONF_NAME), + config.get(ADDITIONAL_ARGS))]) class VlcDevice(MediaPlayerDevice): From 8013963784abfa1b626385b8556b5a47e5557654 Mon Sep 17 00:00:00 2001 From: Gianluca Barbaro <me@barbaro.it> Date: Sat, 14 Jan 2017 23:31:17 +0100 Subject: [PATCH 181/189] Update vlc.py --- homeassistant/components/media_player/vlc.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/media_player/vlc.py b/homeassistant/components/media_player/vlc.py index d5d927e5ff8..7ec0fb0ef65 100644 --- a/homeassistant/components/media_player/vlc.py +++ b/homeassistant/components/media_player/vlc.py @@ -20,14 +20,14 @@ REQUIREMENTS = ['python-vlc==1.1.2'] _LOGGER = logging.getLogger(__name__) -ADDITIONAL_ARGS = 'arguments' +CONF_ARGUMENTS = 'arguments' SUPPORT_VLC = SUPPORT_PAUSE | SUPPORT_VOLUME_SET | SUPPORT_VOLUME_MUTE | \ SUPPORT_PLAY_MEDIA | SUPPORT_PLAY PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Optional(CONF_NAME): cv.string, - vol.Optional(ADDITIONAL_ARGS): cv.string, + vol.Optional(CONF_ARGUMENTS): cv.string, }) @@ -35,7 +35,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): """Setup the vlc platform.""" add_devices([VlcDevice(config.get(CONF_NAME), - config.get(ADDITIONAL_ARGS))]) + config.get(CONF_ARGUMENTS))]) class VlcDevice(MediaPlayerDevice): From d998cba6a2fa2359ad96905f200575fb34530a9a Mon Sep 17 00:00:00 2001 From: Gianluca Barbaro <me@barbaro.it> Date: Sun, 15 Jan 2017 01:35:46 +0100 Subject: [PATCH 182/189] Update vlc.py Added default value for "arguments" --- homeassistant/components/media_player/vlc.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/media_player/vlc.py b/homeassistant/components/media_player/vlc.py index 7ec0fb0ef65..711c8c74422 100644 --- a/homeassistant/components/media_player/vlc.py +++ b/homeassistant/components/media_player/vlc.py @@ -27,7 +27,7 @@ SUPPORT_VLC = SUPPORT_PAUSE | SUPPORT_VOLUME_SET | SUPPORT_VOLUME_MUTE | \ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Optional(CONF_NAME): cv.string, - vol.Optional(CONF_ARGUMENTS): cv.string, + vol.Optional(CONF_ARGUMENTS, default=''): cv.string, }) From 9db1aa7629bdfef36689174186789501099baa3b Mon Sep 17 00:00:00 2001 From: Martin Hjelmare <marhje52@kth.se> Date: Sun, 15 Jan 2017 03:53:14 +0100 Subject: [PATCH 183/189] Add discovery notify support and mysensors notify (#5219) * Add mysensors notify platform * Make add_devices optional in platform callback function. * Use new argument structure for all existing mysensors platforms. * Add notify platform. * Update mysensors gateway. * Refactor notify setup * Enable discovery of notify platforms. * Update and add tests for notify component and some platforms. * Continue setup of notify platforms if a platform fails setup. * Remove notify tests that check platform config. These tests are not needed when config validation is used. * Add config validation to APNS notify platform. * Use discovery to set up mysensors notify platform. * Add discovery_info to get_service and update tests * Add discovery_info as keyword argument to the get_service function signature and update all notify platforms. * Update existing notify tests to check config validation using test helper. * Add removed tests back in that checked config in apns, command_line and file platforms, but use config validation test helper to verify config. * Add a test for notify file to increase coverage. * Fix some PEP issues. * Fix comments and use more constants * Move apns notify service under notify domain --- .../components/binary_sensor/mysensors.py | 2 +- homeassistant/components/climate/mysensors.py | 2 +- homeassistant/components/cover/mysensors.py | 2 +- homeassistant/components/light/mysensors.py | 2 +- homeassistant/components/mysensors.py | 27 ++- homeassistant/components/notify/__init__.py | 43 +++-- homeassistant/components/notify/apns.py | 41 ++--- homeassistant/components/notify/aws_lambda.py | 2 +- homeassistant/components/notify/aws_sns.py | 2 +- homeassistant/components/notify/aws_sqs.py | 2 +- .../components/notify/command_line.py | 2 +- homeassistant/components/notify/demo.py | 2 +- homeassistant/components/notify/ecobee.py | 2 +- homeassistant/components/notify/file.py | 2 +- .../components/notify/free_mobile.py | 2 +- homeassistant/components/notify/gntp.py | 2 +- homeassistant/components/notify/group.py | 4 +- homeassistant/components/notify/html5.py | 2 +- homeassistant/components/notify/instapush.py | 2 +- homeassistant/components/notify/ios.py | 2 +- .../components/notify/joaoapps_join.py | 2 +- homeassistant/components/notify/kodi.py | 2 +- .../components/notify/llamalab_automate.py | 8 +- homeassistant/components/notify/matrix.py | 2 +- .../components/notify/message_bird.py | 2 +- homeassistant/components/notify/mysensors.py | 65 +++++++ .../components/notify/nfandroidtv.py | 2 +- homeassistant/components/notify/nma.py | 2 +- homeassistant/components/notify/pushbullet.py | 2 +- homeassistant/components/notify/pushetta.py | 2 +- homeassistant/components/notify/pushover.py | 2 +- homeassistant/components/notify/rest.py | 2 +- homeassistant/components/notify/sendgrid.py | 2 +- homeassistant/components/notify/simplepush.py | 2 +- homeassistant/components/notify/slack.py | 2 +- homeassistant/components/notify/smtp.py | 2 +- homeassistant/components/notify/syslog.py | 2 +- homeassistant/components/notify/telegram.py | 2 +- homeassistant/components/notify/telstra.py | 2 +- homeassistant/components/notify/twilio_sms.py | 2 +- homeassistant/components/notify/twitter.py | 2 +- homeassistant/components/notify/webostv.py | 2 +- homeassistant/components/notify/xmpp.py | 2 +- homeassistant/components/sensor/mysensors.py | 2 +- homeassistant/components/switch/mysensors.py | 2 +- tests/common.py | 2 +- tests/components/notify/test_apns.py | 171 +++++++----------- tests/components/notify/test_command_line.py | 59 +++--- tests/components/notify/test_demo.py | 79 +++++++- tests/components/notify/test_file.py | 71 +++++--- tests/components/notify/test_group.py | 2 +- 51 files changed, 395 insertions(+), 255 deletions(-) create mode 100644 homeassistant/components/notify/mysensors.py diff --git a/homeassistant/components/binary_sensor/mysensors.py b/homeassistant/components/binary_sensor/mysensors.py index e938f946457..6406dabd26f 100644 --- a/homeassistant/components/binary_sensor/mysensors.py +++ b/homeassistant/components/binary_sensor/mysensors.py @@ -47,7 +47,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): devices = {} gateway.platform_callbacks.append(mysensors.pf_callback_factory( - map_sv_types, devices, add_devices, MySensorsBinarySensor)) + map_sv_types, devices, MySensorsBinarySensor, add_devices)) class MySensorsBinarySensor( diff --git a/homeassistant/components/climate/mysensors.py b/homeassistant/components/climate/mysensors.py index 13a062a335e..6c55b3b4451 100755 --- a/homeassistant/components/climate/mysensors.py +++ b/homeassistant/components/climate/mysensors.py @@ -39,7 +39,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): } devices = {} gateway.platform_callbacks.append(mysensors.pf_callback_factory( - map_sv_types, devices, add_devices, MySensorsHVAC)) + map_sv_types, devices, MySensorsHVAC, add_devices)) class MySensorsHVAC(mysensors.MySensorsDeviceEntity, ClimateDevice): diff --git a/homeassistant/components/cover/mysensors.py b/homeassistant/components/cover/mysensors.py index 7dd63a8c745..a75ad36354b 100644 --- a/homeassistant/components/cover/mysensors.py +++ b/homeassistant/components/cover/mysensors.py @@ -35,7 +35,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): }) devices = {} gateway.platform_callbacks.append(mysensors.pf_callback_factory( - map_sv_types, devices, add_devices, MySensorsCover)) + map_sv_types, devices, MySensorsCover, add_devices)) class MySensorsCover(mysensors.MySensorsDeviceEntity, CoverDevice): diff --git a/homeassistant/components/light/mysensors.py b/homeassistant/components/light/mysensors.py index 86d033cf4ce..9a018192f63 100644 --- a/homeassistant/components/light/mysensors.py +++ b/homeassistant/components/light/mysensors.py @@ -58,7 +58,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): }) devices = {} gateway.platform_callbacks.append(mysensors.pf_callback_factory( - map_sv_types, devices, add_devices, device_class_map)) + map_sv_types, devices, device_class_map, add_devices)) class MySensorsLight(mysensors.MySensorsDeviceEntity, Light): diff --git a/homeassistant/components/mysensors.py b/homeassistant/components/mysensors.py index b6778760b1a..79e572defeb 100644 --- a/homeassistant/components/mysensors.py +++ b/homeassistant/components/mysensors.py @@ -9,10 +9,10 @@ import socket import voluptuous as vol -from homeassistant.bootstrap import setup_component import homeassistant.helpers.config_validation as cv -from homeassistant.const import (ATTR_BATTERY_LEVEL, CONF_OPTIMISTIC, - EVENT_HOMEASSISTANT_START, +from homeassistant.bootstrap import setup_component +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 @@ -169,10 +169,13 @@ def setup(hass, config): 'cover']: discovery.load_platform(hass, component, DOMAIN, {}, config) + discovery.load_platform( + hass, 'notify', DOMAIN, {CONF_NAME: DOMAIN}, config) + return True -def pf_callback_factory(map_sv_types, devices, add_devices, entity_class): +def pf_callback_factory(map_sv_types, devices, entity_class, add_devices=None): """Return a new callback for the platform.""" def mysensors_callback(gateway, node_id): """Callback for mysensors platform.""" @@ -187,7 +190,10 @@ def pf_callback_factory(map_sv_types, devices, add_devices, entity_class): value_type not in map_sv_types[child.type]: continue if key in devices: - devices[key].update_ha_state(True) + if add_devices: + devices[key].schedule_update_ha_state(True) + else: + devices[key].update() continue name = '{} {} {}'.format( gateway.sensors[node_id].sketch_name, node_id, child.id) @@ -197,11 +203,12 @@ def pf_callback_factory(map_sv_types, devices, add_devices, entity_class): device_class = entity_class devices[key] = device_class( gateway, node_id, child.id, name, value_type, child.type) - - _LOGGER.info('Adding new devices: %s', devices[key]) - add_devices([devices[key]]) - if key in devices: - devices[key].update_ha_state(True) + if add_devices: + _LOGGER.info('Adding new devices: %s', devices[key]) + add_devices([devices[key]]) + devices[key].schedule_update_ha_state(True) + else: + devices[key].update() return mysensors_callback diff --git a/homeassistant/components/notify/__init__.py b/homeassistant/components/notify/__init__.py index b9d595401b5..a5c1e53ef03 100644 --- a/homeassistant/components/notify/__init__.py +++ b/homeassistant/components/notify/__init__.py @@ -14,7 +14,7 @@ import homeassistant.bootstrap as bootstrap import homeassistant.helpers.config_validation as cv from homeassistant.config import load_yaml_config_file from homeassistant.const import CONF_NAME, CONF_PLATFORM -from homeassistant.helpers import config_per_platform +from homeassistant.helpers import config_per_platform, discovery from homeassistant.util import slugify _LOGGER = logging.getLogger(__name__) @@ -66,27 +66,32 @@ def send_message(hass, message, title=None, data=None): def setup(hass, config): """Setup the notify services.""" - success = False - descriptions = load_yaml_config_file( os.path.join(os.path.dirname(__file__), 'services.yaml')) targets = {} - for platform, p_config in config_per_platform(config, DOMAIN): + def setup_notify_platform(platform, p_config=None, discovery_info=None): + """Set up a notify platform.""" + if p_config is None: + p_config = {} + if discovery_info is None: + discovery_info = {} + notify_implementation = bootstrap.prepare_setup_platform( hass, config, DOMAIN, platform) if notify_implementation is None: _LOGGER.error("Unknown notification service specified") - continue + return False - notify_service = notify_implementation.get_service(hass, p_config) + notify_service = notify_implementation.get_service( + hass, p_config, discovery_info) if notify_service is None: _LOGGER.error("Failed to initialize notification service %s", platform) - continue + return False def notify_message(notify_service, call): """Handle sending notification message service calls.""" @@ -112,7 +117,9 @@ def setup(hass, config): service_call_handler = partial(notify_message, notify_service) if hasattr(notify_service, 'targets'): - platform_name = (p_config.get(CONF_NAME) or platform) + platform_name = ( + p_config.get(CONF_NAME) or discovery_info.get(CONF_NAME) or + platform) for name, target in notify_service.targets.items(): target_name = slugify('{}_{}'.format(platform_name, name)) targets[target_name] = target @@ -121,15 +128,29 @@ def setup(hass, config): descriptions.get(SERVICE_NOTIFY), schema=NOTIFY_SERVICE_SCHEMA) - platform_name = (p_config.get(CONF_NAME) or SERVICE_NOTIFY) + platform_name = ( + p_config.get(CONF_NAME) or discovery_info.get(CONF_NAME) or + SERVICE_NOTIFY) platform_name_slug = slugify(platform_name) hass.services.register( DOMAIN, platform_name_slug, service_call_handler, descriptions.get(SERVICE_NOTIFY), schema=NOTIFY_SERVICE_SCHEMA) - success = True - return success + return True + + for platform, p_config in config_per_platform(config, DOMAIN): + if not setup_notify_platform(platform, p_config): + _LOGGER.error("Failed to set up platform %s", platform) + continue + + def platform_discovered(platform, info): + """Callback to load a platform.""" + setup_notify_platform(platform, discovery_info=info) + + discovery.listen_platform(hass, DOMAIN, platform_discovered) + + return True class BaseNotificationService(object): diff --git a/homeassistant/components/notify/apns.py b/homeassistant/components/notify/apns.py index 26d20f3bc89..09716065751 100644 --- a/homeassistant/components/notify/apns.py +++ b/homeassistant/components/notify/apns.py @@ -11,18 +11,29 @@ import voluptuous as vol from homeassistant.helpers.event import track_state_change from homeassistant.config import load_yaml_config_file from homeassistant.components.notify import ( - ATTR_TARGET, ATTR_DATA, BaseNotificationService) + ATTR_TARGET, ATTR_DATA, BaseNotificationService, DOMAIN) +from homeassistant.const import CONF_NAME, CONF_PLATFORM import homeassistant.helpers.config_validation as cv from homeassistant.helpers import template as template_helper -DOMAIN = "apns" 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', + vol.Required(CONF_NAME): cv.string, + vol.Required(CONF_CERTFILE): cv.isfile, + vol.Required(CONF_TOPIC): cv.string, + vol.Optional(CONF_SANDBOX, default=False): cv.boolean, +}) + REGISTER_SERVICE_SCHEMA = vol.Schema({ vol.Required(ATTR_PUSH_ID): cv.string, vol.Optional(ATTR_NAME, default=None): cv.string, @@ -31,31 +42,19 @@ REGISTER_SERVICE_SCHEMA = vol.Schema({ REQUIREMENTS = ["apns2==0.1.1"] -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Return push service.""" descriptions = load_yaml_config_file( os.path.join(os.path.dirname(__file__), 'services.yaml')) - name = config.get("name") - if name is None: - logging.error("Name must be specified.") - return None - - cert_file = config.get('cert_file') - if cert_file is None: - logging.error("Certificate must be specified.") - return None - - topic = config.get('topic') - if topic is None: - logging.error("Topic must be specified.") - return None - - sandbox = bool(config.get('sandbox', False)) + name = config.get(CONF_NAME) + cert_file = config.get(CONF_CERTFILE) + topic = config.get(CONF_TOPIC) + sandbox = config.get(CONF_SANDBOX) service = ApnsNotificationService(hass, name, topic, sandbox, cert_file) hass.services.register(DOMAIN, - name, + 'apns_{}'.format(name), service.register, descriptions.get(SERVICE_REGISTER), schema=REGISTER_SERVICE_SCHEMA) @@ -202,8 +201,6 @@ class ApnsNotificationService(BaseNotificationService): def register(self, call): """Register a device to receive push messages.""" push_id = call.data.get(ATTR_PUSH_ID) - if push_id is None: - return False device_name = call.data.get(ATTR_NAME) current_device = self.devices.get(push_id) diff --git a/homeassistant/components/notify/aws_lambda.py b/homeassistant/components/notify/aws_lambda.py index 8db48b0000e..d18da5ae2f0 100644 --- a/homeassistant/components/notify/aws_lambda.py +++ b/homeassistant/components/notify/aws_lambda.py @@ -35,7 +35,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ }) -def get_service(hass, config): +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]}) diff --git a/homeassistant/components/notify/aws_sns.py b/homeassistant/components/notify/aws_sns.py index f3af26cd8b4..f02b6b75a84 100644 --- a/homeassistant/components/notify/aws_sns.py +++ b/homeassistant/components/notify/aws_sns.py @@ -33,7 +33,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ }) -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the AWS SNS notification service.""" # pylint: disable=import-error import boto3 diff --git a/homeassistant/components/notify/aws_sqs.py b/homeassistant/components/notify/aws_sqs.py index 84826a2f32f..ecbadac46ce 100644 --- a/homeassistant/components/notify/aws_sqs.py +++ b/homeassistant/components/notify/aws_sqs.py @@ -32,7 +32,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ }) -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the AWS SQS notification service.""" # pylint: disable=import-error import boto3 diff --git a/homeassistant/components/notify/command_line.py b/homeassistant/components/notify/command_line.py index d59994e37ed..cd3bdfb16f3 100644 --- a/homeassistant/components/notify/command_line.py +++ b/homeassistant/components/notify/command_line.py @@ -22,7 +22,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ }) -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the Command Line notification service.""" command = config[CONF_COMMAND] diff --git a/homeassistant/components/notify/demo.py b/homeassistant/components/notify/demo.py index d3c4f9b8026..5b8e1f1688f 100644 --- a/homeassistant/components/notify/demo.py +++ b/homeassistant/components/notify/demo.py @@ -9,7 +9,7 @@ from homeassistant.components.notify import BaseNotificationService EVENT_NOTIFY = "notify" -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the demo notification service.""" return DemoNotificationService(hass) diff --git a/homeassistant/components/notify/ecobee.py b/homeassistant/components/notify/ecobee.py index befde9271ca..2d64a2d5b47 100644 --- a/homeassistant/components/notify/ecobee.py +++ b/homeassistant/components/notify/ecobee.py @@ -24,7 +24,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ }) -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the Ecobee notification service.""" index = config.get(CONF_INDEX) return EcobeeNotificationService(index) diff --git a/homeassistant/components/notify/file.py b/homeassistant/components/notify/file.py index 6b435ace6d4..749a6d4b330 100644 --- a/homeassistant/components/notify/file.py +++ b/homeassistant/components/notify/file.py @@ -25,7 +25,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ _LOGGER = logging.getLogger(__name__) -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the file notification service.""" filename = config[CONF_FILENAME] timestamp = config[CONF_TIMESTAMP] diff --git a/homeassistant/components/notify/free_mobile.py b/homeassistant/components/notify/free_mobile.py index d8631fe6106..74d9a80ad86 100644 --- a/homeassistant/components/notify/free_mobile.py +++ b/homeassistant/components/notify/free_mobile.py @@ -23,7 +23,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ }) -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the Free Mobile SMS notification service.""" return FreeSMSNotificationService(config[CONF_USERNAME], config[CONF_ACCESS_TOKEN]) diff --git a/homeassistant/components/notify/gntp.py b/homeassistant/components/notify/gntp.py index ee6d203a47a..5aaaf64577c 100644 --- a/homeassistant/components/notify/gntp.py +++ b/homeassistant/components/notify/gntp.py @@ -39,7 +39,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ }) -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the GNTP notification service.""" if config.get(CONF_APP_ICON) is None: icon_file = os.path.join(os.path.dirname(__file__), "..", "frontend", diff --git a/homeassistant/components/notify/group.py b/homeassistant/components/notify/group.py index d4c10ac884d..3de79f5a7be 100644 --- a/homeassistant/components/notify/group.py +++ b/homeassistant/components/notify/group.py @@ -38,13 +38,13 @@ def update(input_dict, update_source): return input_dict -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the Group notification service.""" return GroupNotifyPlatform(hass, config.get(CONF_SERVICES)) class GroupNotifyPlatform(BaseNotificationService): - """Implement the notification service for the group notify playform.""" + """Implement the notification service for the group notify platform.""" def __init__(self, hass, entities): """Initialize the service.""" diff --git a/homeassistant/components/notify/html5.py b/homeassistant/components/notify/html5.py index 6621b4be6ab..dbd698fd5a2 100644 --- a/homeassistant/components/notify/html5.py +++ b/homeassistant/components/notify/html5.py @@ -97,7 +97,7 @@ HTML5_SHOWNOTIFICATION_PARAMETERS = ('actions', 'badge', 'body', 'dir', 'vibrate') -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the HTML5 push notification service.""" json_path = hass.config.path(REGISTRATIONS_FILE) diff --git a/homeassistant/components/notify/instapush.py b/homeassistant/components/notify/instapush.py index d5f32d66a5e..1af08420726 100644 --- a/homeassistant/components/notify/instapush.py +++ b/homeassistant/components/notify/instapush.py @@ -32,7 +32,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ }) -def get_service(hass, config): +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]} diff --git a/homeassistant/components/notify/ios.py b/homeassistant/components/notify/ios.py index 5cd18640487..0db05b261b3 100644 --- a/homeassistant/components/notify/ios.py +++ b/homeassistant/components/notify/ios.py @@ -39,7 +39,7 @@ def log_rate_limits(target, resp, level=20): str(resetsAtTime).split(".")[0]) -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the iOS notification service.""" if "notify.ios" not in hass.config.components: # Need this to enable requirements checking in the app. diff --git a/homeassistant/components/notify/joaoapps_join.py b/homeassistant/components/notify/joaoapps_join.py index 6f0afddcca2..f79c7186359 100644 --- a/homeassistant/components/notify/joaoapps_join.py +++ b/homeassistant/components/notify/joaoapps_join.py @@ -27,7 +27,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-variable -def get_service(hass, config): +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) diff --git a/homeassistant/components/notify/kodi.py b/homeassistant/components/notify/kodi.py index 1d95920d00b..0c648be5969 100644 --- a/homeassistant/components/notify/kodi.py +++ b/homeassistant/components/notify/kodi.py @@ -29,7 +29,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ ATTR_DISPLAYTIME = 'displaytime' -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Return the notify service.""" url = '{}:{}'.format(config.get(CONF_HOST), config.get(CONF_PORT)) diff --git a/homeassistant/components/notify/llamalab_automate.py b/homeassistant/components/notify/llamalab_automate.py index e7b6ab80455..bf000171c12 100644 --- a/homeassistant/components/notify/llamalab_automate.py +++ b/homeassistant/components/notify/llamalab_automate.py @@ -20,13 +20,13 @@ CONF_DEVICE = 'device' _RESOURCE = 'https://llamalab.com/automate/cloud/message' PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ - vol.Required(CONF_API_KEY): cv.string, - vol.Required(CONF_TO): cv.string, - vol.Optional(CONF_DEVICE): cv.string, + vol.Required(CONF_API_KEY): cv.string, + vol.Required(CONF_TO): cv.string, + vol.Optional(CONF_DEVICE): cv.string, }) -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the LlamaLab Automate notification service.""" secret = config.get(CONF_API_KEY) recipient = config.get(CONF_TO) diff --git a/homeassistant/components/notify/matrix.py b/homeassistant/components/notify/matrix.py index b7ce54f8838..b36721e8f80 100644 --- a/homeassistant/components/notify/matrix.py +++ b/homeassistant/components/notify/matrix.py @@ -34,7 +34,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ _LOGGER = logging.getLogger(__name__) -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the Matrix notification service.""" if not AUTH_TOKENS: load_token(hass.config.path(SESSION_FILE)) diff --git a/homeassistant/components/notify/message_bird.py b/homeassistant/components/notify/message_bird.py index 6d1d50d8a1a..7e9ce3b093f 100644 --- a/homeassistant/components/notify/message_bird.py +++ b/homeassistant/components/notify/message_bird.py @@ -25,7 +25,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the MessageBird notification service.""" import messagebird diff --git a/homeassistant/components/notify/mysensors.py b/homeassistant/components/notify/mysensors.py new file mode 100644 index 00000000000..ad747a7ae93 --- /dev/null +++ b/homeassistant/components/notify/mysensors.py @@ -0,0 +1,65 @@ +""" +MySensors notification service. + +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) + + +def get_service(hass, config, discovery_info=None): + """Get the MySensors notification service.""" + if discovery_info is None: + return + platform_devices = [] + gateways = hass.data.get(mysensors.MYSENSORS_GATEWAYS) + if not gateways: + return + + for gateway in gateways: + pres = gateway.const.Presentation + set_req = gateway.const.SetReq + map_sv_types = { + pres.S_INFO: [set_req.V_TEXT], + } + devices = {} + gateway.platform_callbacks.append(mysensors.pf_callback_factory( + map_sv_types, devices, MySensorsNotificationDevice)) + platform_devices.append(devices) + + return MySensorsNotificationService(platform_devices) + + +class MySensorsNotificationDevice(mysensors.MySensorsDeviceEntity): + """Represent a MySensors Notification device.""" + + def send_msg(self, msg): + """Send a message.""" + for sub_msg in [msg[i:i + 25] for i in range(0, len(msg), 25)]: + # Max mysensors payload is 25 bytes. + self.gateway.set_child_value( + self.node_id, self.child_id, self.value_type, sub_msg) + + +class MySensorsNotificationService(BaseNotificationService): + """Implement MySensors notification service.""" + + # pylint: disable=too-few-public-methods + + def __init__(self, platform_devices): + """Initialize the service.""" + self.platform_devices = platform_devices + + def send_message(self, message="", **kwargs): + """Send a message to a user.""" + target_devices = kwargs.get(ATTR_TARGET) + devices = [] + for gw_devs in self.platform_devices: + for device in gw_devs.values(): + if target_devices is None or device.name in target_devices: + devices.append(device) + + for device in devices: + device.send_msg(message) diff --git a/homeassistant/components/notify/nfandroidtv.py b/homeassistant/components/notify/nfandroidtv.py index cd44b1f0cd3..6c4f7e49dde 100644 --- a/homeassistant/components/notify/nfandroidtv.py +++ b/homeassistant/components/notify/nfandroidtv.py @@ -83,7 +83,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the Notifications for Android TV notification service.""" remoteip = config.get(CONF_IP) duration = config.get(CONF_DURATION) diff --git a/homeassistant/components/notify/nma.py b/homeassistant/components/notify/nma.py index 7a05d08134f..1116b5728fd 100644 --- a/homeassistant/components/notify/nma.py +++ b/homeassistant/components/notify/nma.py @@ -24,7 +24,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ }) -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the NMA notification service.""" parameters = { 'apikey': config[CONF_API_KEY], diff --git a/homeassistant/components/notify/pushbullet.py b/homeassistant/components/notify/pushbullet.py index ec9c7ec4f54..4f50146ac61 100644 --- a/homeassistant/components/notify/pushbullet.py +++ b/homeassistant/components/notify/pushbullet.py @@ -25,7 +25,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the PushBullet notification service.""" from pushbullet import PushBullet from pushbullet import InvalidKeyError diff --git a/homeassistant/components/notify/pushetta.py b/homeassistant/components/notify/pushetta.py index b786fb5ba98..b1a71c57513 100644 --- a/homeassistant/components/notify/pushetta.py +++ b/homeassistant/components/notify/pushetta.py @@ -27,7 +27,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ }) -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the Pushetta notification service.""" pushetta_service = PushettaNotificationService(config[CONF_API_KEY], config[CONF_CHANNEL_NAME], diff --git a/homeassistant/components/notify/pushover.py b/homeassistant/components/notify/pushover.py index c77e5f7b85e..afaf4e6a7e9 100644 --- a/homeassistant/components/notify/pushover.py +++ b/homeassistant/components/notify/pushover.py @@ -27,7 +27,7 @@ PLATFORM_SCHEMA = cv.PLATFORM_SCHEMA.extend({ # pylint: disable=unused-variable -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the Pushover notification service.""" from pushover import InitError diff --git a/homeassistant/components/notify/rest.py b/homeassistant/components/notify/rest.py index 20dbb4afaa1..41d100b3a09 100644 --- a/homeassistant/components/notify/rest.py +++ b/homeassistant/components/notify/rest.py @@ -39,7 +39,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ _LOGGER = logging.getLogger(__name__) -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the RESTful notification service.""" resource = config.get(CONF_RESOURCE) method = config.get(CONF_METHOD) diff --git a/homeassistant/components/notify/sendgrid.py b/homeassistant/components/notify/sendgrid.py index 54f0f4b8cb3..458113d1cdf 100644 --- a/homeassistant/components/notify/sendgrid.py +++ b/homeassistant/components/notify/sendgrid.py @@ -25,7 +25,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ }) -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the SendGrid notification service.""" api_key = config.get(CONF_API_KEY) sender = config.get(CONF_SENDER) diff --git a/homeassistant/components/notify/simplepush.py b/homeassistant/components/notify/simplepush.py index b3c2686f3aa..cda6a6952e0 100644 --- a/homeassistant/components/notify/simplepush.py +++ b/homeassistant/components/notify/simplepush.py @@ -25,7 +25,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ }) -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the Simplepush notification service.""" return SimplePushNotificationService(config.get(CONF_DEVICE_KEY)) diff --git a/homeassistant/components/notify/slack.py b/homeassistant/components/notify/slack.py index 2976b44d6e9..90944cbd308 100644 --- a/homeassistant/components/notify/slack.py +++ b/homeassistant/components/notify/slack.py @@ -29,7 +29,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-variable -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the Slack notification service.""" import slacker diff --git a/homeassistant/components/notify/smtp.py b/homeassistant/components/notify/smtp.py index 6ef9bc32990..45b477cdfb8 100644 --- a/homeassistant/components/notify/smtp.py +++ b/homeassistant/components/notify/smtp.py @@ -47,7 +47,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ }) -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the mail notification service.""" mail_service = MailNotificationService( config.get(CONF_SERVER), diff --git a/homeassistant/components/notify/syslog.py b/homeassistant/components/notify/syslog.py index 4065b47f480..31689bdc9f0 100644 --- a/homeassistant/components/notify/syslog.py +++ b/homeassistant/components/notify/syslog.py @@ -67,7 +67,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ _LOGGER = logging.getLogger(__name__) -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the syslog notification service.""" import syslog diff --git a/homeassistant/components/notify/telegram.py b/homeassistant/components/notify/telegram.py index c133506e775..fd901016fc5 100644 --- a/homeassistant/components/notify/telegram.py +++ b/homeassistant/components/notify/telegram.py @@ -37,7 +37,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ }) -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the Telegram notification service.""" import telegram diff --git a/homeassistant/components/notify/telstra.py b/homeassistant/components/notify/telstra.py index ca727db9711..efe90dc51ba 100644 --- a/homeassistant/components/notify/telstra.py +++ b/homeassistant/components/notify/telstra.py @@ -27,7 +27,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ }) -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the Telstra SMS API notification service.""" consumer_key = config.get(CONF_CONSUMER_KEY) consumer_secret = config.get(CONF_CONSUMER_SECRET) diff --git a/homeassistant/components/notify/twilio_sms.py b/homeassistant/components/notify/twilio_sms.py index 3438ce92ee3..950e0eed221 100644 --- a/homeassistant/components/notify/twilio_sms.py +++ b/homeassistant/components/notify/twilio_sms.py @@ -28,7 +28,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ }) -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the Twilio SMS notification service.""" # pylint: disable=import-error from twilio.rest import TwilioRestClient diff --git a/homeassistant/components/notify/twitter.py b/homeassistant/components/notify/twitter.py index afa43057fa5..24128edd880 100644 --- a/homeassistant/components/notify/twitter.py +++ b/homeassistant/components/notify/twitter.py @@ -29,7 +29,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ }) -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the Twitter notification service.""" return TwitterNotificationService( config[CONF_CONSUMER_KEY], config[CONF_CONSUMER_SECRET], diff --git a/homeassistant/components/notify/webostv.py b/homeassistant/components/notify/webostv.py index 9b6514559ca..815e2ff750a 100644 --- a/homeassistant/components/notify/webostv.py +++ b/homeassistant/components/notify/webostv.py @@ -24,7 +24,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ }) -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Return the notify service.""" from pylgtv import WebOsClient from pylgtv import PyLGTVPairException diff --git a/homeassistant/components/notify/xmpp.py b/homeassistant/components/notify/xmpp.py index 5873e3997fa..27bfd2aa607 100644 --- a/homeassistant/components/notify/xmpp.py +++ b/homeassistant/components/notify/xmpp.py @@ -30,7 +30,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ }) -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the Jabber (XMPP) notification service.""" return XmppNotificationService( config.get('sender'), diff --git a/homeassistant/components/sensor/mysensors.py b/homeassistant/components/sensor/mysensors.py index 2742713cb24..6c1f65606da 100644 --- a/homeassistant/components/sensor/mysensors.py +++ b/homeassistant/components/sensor/mysensors.py @@ -83,7 +83,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): devices = {} gateway.platform_callbacks.append(mysensors.pf_callback_factory( - map_sv_types, devices, add_devices, MySensorsSensor)) + map_sv_types, devices, MySensorsSensor, add_devices)) class MySensorsSensor(mysensors.MySensorsDeviceEntity, Entity): diff --git a/homeassistant/components/switch/mysensors.py b/homeassistant/components/switch/mysensors.py index 44bbfcb16d9..968166d4d65 100644 --- a/homeassistant/components/switch/mysensors.py +++ b/homeassistant/components/switch/mysensors.py @@ -89,7 +89,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): devices = {} gateway.platform_callbacks.append(mysensors.pf_callback_factory( - map_sv_types, devices, add_devices, device_class_map)) + map_sv_types, devices, device_class_map, add_devices)) platform_devices.append(devices) def send_ir_code_service(service): diff --git a/tests/common.py b/tests/common.py index 25a674dd995..514a4973202 100644 --- a/tests/common.py +++ b/tests/common.py @@ -399,7 +399,7 @@ def assert_setup_component(count, domain=None): Use as a context manager aroung bootstrap.setup_component with assert_setup_component(0) as result_config: - setup_component(hass, start_config, domain) + setup_component(hass, domain, start_config) # using result_config is optional """ config = {} diff --git a/tests/components/notify/test_apns.py b/tests/components/notify/test_apns.py index e0363f2d8b8..6949863280c 100644 --- a/tests/components/notify/test_apns.py +++ b/tests/components/notify/test_apns.py @@ -1,14 +1,26 @@ """The tests for the APNS component.""" -import unittest import os +import unittest +from unittest.mock import patch +from unittest.mock import Mock + +from apns2.errors import Unregistered import homeassistant.components.notify as notify -from homeassistant.core import State +from homeassistant.bootstrap import setup_component from homeassistant.components.notify.apns import ApnsNotificationService -from tests.common import get_test_home_assistant from homeassistant.config import load_yaml_config_file -from unittest.mock import patch -from apns2.errors import Unregistered +from homeassistant.core import State +from tests.common import assert_setup_component, get_test_home_assistant + +CONFIG = { + notify.DOMAIN: { + 'platform': 'apns', + 'name': 'test_app', + 'topic': 'testapp.appname', + 'cert_file': 'test_app.pem' + } +} class TestApns(unittest.TestCase): @@ -22,6 +34,13 @@ class TestApns(unittest.TestCase): """Stop everything that was started.""" self.hass.stop() + @patch('os.path.isfile', Mock(return_value=True)) + @patch('os.access', Mock(return_value=True)) + def _setup_notify(self): + with assert_setup_component(1) as handle_config: + assert setup_component(self.hass, notify.DOMAIN, CONFIG) + assert handle_config[notify.DOMAIN] + def test_apns_setup_full(self): """Test setup with all data.""" config = { @@ -41,53 +60,49 @@ class TestApns(unittest.TestCase): config = { 'notify': { 'platform': 'apns', - 'sandbox': 'True', 'topic': 'testapp.appname', - 'cert_file': 'test_app.pem' + 'cert_file': 'test_app.pem', } } - self.assertFalse(notify.setup(self.hass, config)) + with assert_setup_component(0) as handle_config: + assert setup_component(self.hass, notify.DOMAIN, config) + assert not handle_config[notify.DOMAIN] def test_apns_setup_missing_certificate(self): - """Test setup with missing name.""" + """Test setup with missing certificate.""" config = { 'notify': { 'platform': 'apns', + 'name': 'test_app', 'topic': 'testapp.appname', - 'name': 'test_app' } } - self.assertFalse(notify.setup(self.hass, config)) + with assert_setup_component(0) as handle_config: + assert setup_component(self.hass, notify.DOMAIN, config) + assert not handle_config[notify.DOMAIN] def test_apns_setup_missing_topic(self): """Test setup with missing topic.""" config = { 'notify': { 'platform': 'apns', + 'name': 'test_app', 'cert_file': 'test_app.pem', - 'name': 'test_app' } } - self.assertFalse(notify.setup(self.hass, config)) + with assert_setup_component(0) as handle_config: + assert setup_component(self.hass, notify.DOMAIN, config) + assert not handle_config[notify.DOMAIN] def test_register_new_device(self): """Test registering a new device with a name.""" - config = { - 'notify': { - 'platform': 'apns', - 'name': 'test_app', - 'topic': 'testapp.appname', - 'cert_file': 'test_app.pem' - } - } - devices_path = self.hass.config.path('test_app_apns.yaml') with open(devices_path, 'w+') as out: out.write('5678: {name: test device 2}\n') - notify.setup(self.hass, config) - self.assertTrue(self.hass.services.call('apns', - 'test_app', + self._setup_notify() + self.assertTrue(self.hass.services.call(notify.DOMAIN, + 'apns_test_app', {'push_id': '1234', 'name': 'test device'}, blocking=True)) @@ -107,21 +122,12 @@ class TestApns(unittest.TestCase): def test_register_device_without_name(self): """Test registering a without a name.""" - config = { - 'notify': { - 'platform': 'apns', - 'name': 'test_app', - 'topic': 'testapp.appname', - 'cert_file': 'test_app.pem' - } - } - devices_path = self.hass.config.path('test_app_apns.yaml') with open(devices_path, 'w+') as out: out.write('5678: {name: test device 2}\n') - notify.setup(self.hass, config) - self.assertTrue(self.hass.services.call('apns', 'test_app', + self._setup_notify() + self.assertTrue(self.hass.services.call(notify.DOMAIN, 'apns_test_app', {'push_id': '1234'}, blocking=True)) @@ -137,23 +143,14 @@ class TestApns(unittest.TestCase): def test_update_existing_device(self): """Test updating an existing device.""" - config = { - 'notify': { - 'platform': 'apns', - 'name': 'test_app', - 'topic': 'testapp.appname', - 'cert_file': 'test_app.pem' - } - } - devices_path = self.hass.config.path('test_app_apns.yaml') with open(devices_path, 'w+') as out: out.write('1234: {name: test device 1}\n') out.write('5678: {name: test device 2}\n') - notify.setup(self.hass, config) - self.assertTrue(self.hass.services.call('apns', - 'test_app', + self._setup_notify() + self.assertTrue(self.hass.services.call(notify.DOMAIN, + 'apns_test_app', {'push_id': '1234', 'name': 'updated device 1'}, blocking=True)) @@ -173,15 +170,6 @@ class TestApns(unittest.TestCase): def test_update_existing_device_with_tracking_id(self): """Test updating an existing device that has a tracking id.""" - config = { - 'notify': { - 'platform': 'apns', - 'name': 'test_app', - 'topic': 'testapp.appname', - 'cert_file': 'test_app.pem' - } - } - devices_path = self.hass.config.path('test_app_apns.yaml') with open(devices_path, 'w+') as out: out.write('1234: {name: test device 1, ' @@ -189,9 +177,9 @@ class TestApns(unittest.TestCase): out.write('5678: {name: test device 2, ' 'tracking_device_id: tracking456}\n') - notify.setup(self.hass, config) - self.assertTrue(self.hass.services.call('apns', - 'test_app', + self._setup_notify() + self.assertTrue(self.hass.services.call(notify.DOMAIN, + 'apns_test_app', {'push_id': '1234', 'name': 'updated device 1'}, blocking=True)) @@ -216,30 +204,20 @@ class TestApns(unittest.TestCase): def test_send(self, mock_client): """Test updating an existing device.""" send = mock_client.return_value.send_notification - config = { - 'notify': { - 'platform': 'apns', - 'name': 'test_app', - 'topic': 'testapp.appname', - 'cert_file': 'test_app.pem' - } - } devices_path = self.hass.config.path('test_app_apns.yaml') with open(devices_path, 'w+') as out: out.write('1234: {name: test device 1}\n') - notify.setup(self.hass, config) + self._setup_notify() - self.assertTrue(self.hass.services.call('notify', 'test_app', - {'message': 'Hello', - 'data': { - 'badge': 1, - 'sound': 'test.mp3', - 'category': 'testing' - } - }, - blocking=True)) + self.assertTrue(self.hass.services.call( + 'notify', 'test_app', + {'message': 'Hello', 'data': { + 'badge': 1, + 'sound': 'test.mp3', + 'category': 'testing'}}, + blocking=True)) self.assertTrue(send.called) self.assertEqual(1, len(send.mock_calls)) @@ -257,30 +235,20 @@ class TestApns(unittest.TestCase): def test_send_when_disabled(self, mock_client): """Test updating an existing device.""" send = mock_client.return_value.send_notification - config = { - 'notify': { - 'platform': 'apns', - 'name': 'test_app', - 'topic': 'testapp.appname', - 'cert_file': 'test_app.pem' - } - } devices_path = self.hass.config.path('test_app_apns.yaml') with open(devices_path, 'w+') as out: out.write('1234: {name: test device 1, disabled: True}\n') - notify.setup(self.hass, config) + self._setup_notify() - self.assertTrue(self.hass.services.call('notify', 'test_app', - {'message': 'Hello', - 'data': { - 'badge': 1, - 'sound': 'test.mp3', - 'category': 'testing' - } - }, - blocking=True)) + self.assertTrue(self.hass.services.call( + 'notify', 'test_app', + {'message': 'Hello', 'data': { + 'badge': 1, + 'sound': 'test.mp3', + 'category': 'testing'}}, + blocking=True)) self.assertFalse(send.called) @@ -328,20 +296,11 @@ class TestApns(unittest.TestCase): send = mock_client.return_value.send_notification send.side_effect = Unregistered() - config = { - 'notify': { - 'platform': 'apns', - 'name': 'test_app', - 'topic': 'testapp.appname', - 'cert_file': 'test_app.pem' - } - } - devices_path = self.hass.config.path('test_app_apns.yaml') with open(devices_path, 'w+') as out: out.write('1234: {name: test device 1}\n') - notify.setup(self.hass, config) + self._setup_notify() self.assertTrue(self.hass.services.call('notify', 'test_app', {'message': 'Hello'}, diff --git a/tests/components/notify/test_command_line.py b/tests/components/notify/test_command_line.py index 0d2235514f8..cebcd2a13fb 100644 --- a/tests/components/notify/test_command_line.py +++ b/tests/components/notify/test_command_line.py @@ -6,7 +6,7 @@ from unittest.mock import patch from homeassistant.bootstrap import setup_component import homeassistant.components.notify as notify -from tests.common import get_test_home_assistant +from tests.common import assert_setup_component, get_test_home_assistant class TestCommandLine(unittest.TestCase): @@ -22,34 +22,41 @@ class TestCommandLine(unittest.TestCase): def test_setup(self): """Test setup.""" - assert setup_component(self.hass, 'notify', { - 'notify': { - 'name': 'test', - 'platform': 'command_line', - 'command': 'echo $(cat); exit 1', - }}) + with assert_setup_component(1) as handle_config: + assert setup_component(self.hass, 'notify', { + 'notify': { + 'name': 'test', + 'platform': 'command_line', + 'command': 'echo $(cat); exit 1', } + }) + assert handle_config[notify.DOMAIN] def test_bad_config(self): """Test set up the platform with bad/missing configuration.""" - self.assertFalse(setup_component(self.hass, notify.DOMAIN, { - 'notify': { + config = { + notify.DOMAIN: { 'name': 'test', - 'platform': 'bad_platform', + 'platform': 'command_line', } - })) + } + with assert_setup_component(0) as handle_config: + assert setup_component(self.hass, notify.DOMAIN, config) + assert not handle_config[notify.DOMAIN] def test_command_line_output(self): """Test the command line output.""" with tempfile.TemporaryDirectory() as tempdirname: filename = os.path.join(tempdirname, 'message.txt') message = 'one, two, testing, testing' - self.assertTrue(setup_component(self.hass, notify.DOMAIN, { - 'notify': { - 'name': 'test', - 'platform': 'command_line', - 'command': 'echo $(cat) > {}'.format(filename) - } - })) + with assert_setup_component(1) as handle_config: + self.assertTrue(setup_component(self.hass, notify.DOMAIN, { + 'notify': { + 'name': 'test', + 'platform': 'command_line', + 'command': 'echo $(cat) > {}'.format(filename) + } + })) + assert handle_config[notify.DOMAIN] self.assertTrue( self.hass.services.call('notify', 'test', {'message': message}, @@ -63,13 +70,15 @@ class TestCommandLine(unittest.TestCase): @patch('homeassistant.components.notify.command_line._LOGGER.error') def test_error_for_none_zero_exit_code(self, mock_error): """Test if an error is logged for non zero exit codes.""" - self.assertTrue(setup_component(self.hass, notify.DOMAIN, { - 'notify': { - 'name': 'test', - 'platform': 'command_line', - 'command': 'echo $(cat); exit 1' - } - })) + with assert_setup_component(1) as handle_config: + self.assertTrue(setup_component(self.hass, notify.DOMAIN, { + 'notify': { + 'name': 'test', + 'platform': 'command_line', + 'command': 'echo $(cat); exit 1' + } + })) + assert handle_config[notify.DOMAIN] self.assertTrue( self.hass.services.call('notify', 'test', {'message': 'error'}, diff --git a/tests/components/notify/test_demo.py b/tests/components/notify/test_demo.py index ddf08d91127..1ccb3f5c56d 100644 --- a/tests/components/notify/test_demo.py +++ b/tests/components/notify/test_demo.py @@ -1,13 +1,19 @@ """The tests for the notify demo platform.""" import unittest +from unittest.mock import patch -from homeassistant.core import callback -from homeassistant.bootstrap import setup_component import homeassistant.components.notify as notify +from homeassistant.bootstrap import setup_component from homeassistant.components.notify import demo -from homeassistant.helpers import script +from homeassistant.core import callback +from homeassistant.helpers import discovery, script +from tests.common import assert_setup_component, get_test_home_assistant -from tests.common import get_test_home_assistant +CONFIG = { + notify.DOMAIN: { + 'platform': 'demo' + } +} class TestNotifyDemo(unittest.TestCase): @@ -16,11 +22,6 @@ class TestNotifyDemo(unittest.TestCase): def setUp(self): # pylint: disable=invalid-name """Setup things to be run when tests are started.""" self.hass = get_test_home_assistant() - self.assertTrue(setup_component(self.hass, notify.DOMAIN, { - 'notify': { - 'platform': 'demo' - } - })) self.events = [] self.calls = [] @@ -35,6 +36,59 @@ class TestNotifyDemo(unittest.TestCase): """"Stop down everything that was started.""" self.hass.stop() + def _setup_notify(self): + with assert_setup_component(1) as config: + assert setup_component(self.hass, notify.DOMAIN, CONFIG) + assert config[notify.DOMAIN] + + def test_setup(self): + """Test setup.""" + self._setup_notify() + + @patch('homeassistant.bootstrap.prepare_setup_platform') + def test_no_prepare_setup_platform(self, mock_prep_setup_platform): + """Test missing notify platform.""" + mock_prep_setup_platform.return_value = None + with self.assertLogs('homeassistant.components.notify', + level='ERROR') as log_handle: + self._setup_notify() + self.hass.block_till_done() + assert mock_prep_setup_platform.called + self.assertEqual( + log_handle.output, + ['ERROR:homeassistant.components.notify:' + 'Unknown notification service specified', + 'ERROR:homeassistant.components.notify:' + 'Failed to set up platform demo']) + + @patch('homeassistant.components.notify.demo.get_service') + def test_no_notify_service(self, mock_demo_get_service): + """Test missing platform notify service instance.""" + mock_demo_get_service.return_value = None + with self.assertLogs('homeassistant.components.notify', + level='ERROR') as log_handle: + self._setup_notify() + self.hass.block_till_done() + assert mock_demo_get_service.called + self.assertEqual( + log_handle.output, + ['ERROR:homeassistant.components.notify:' + 'Failed to initialize notification service demo', + 'ERROR:homeassistant.components.notify:' + 'Failed to set up platform demo']) + + @patch('homeassistant.components.notify.demo.get_service') + def test_discover_notify(self, mock_demo_get_service): + """Test discovery of notify demo platform.""" + assert notify.DOMAIN not in self.hass.config.components + discovery.load_platform( + self.hass, 'notify', 'demo', {'test_key': 'test_val'}, {}) + self.hass.block_till_done() + assert notify.DOMAIN in self.hass.config.components + assert mock_demo_get_service.called + assert mock_demo_get_service.call_args[0] == ( + self.hass, {}, {'test_key': 'test_val'}) + @callback def record_calls(self, *args): """Helper for recording calls.""" @@ -42,12 +96,14 @@ class TestNotifyDemo(unittest.TestCase): def test_sending_none_message(self): """Test send with None as message.""" + self._setup_notify() notify.send_message(self.hass, None) self.hass.block_till_done() self.assertTrue(len(self.events) == 0) def test_sending_templated_message(self): """Send a templated message.""" + self._setup_notify() self.hass.states.set('sensor.temperature', 10) notify.send_message(self.hass, '{{ states.sensor.temperature.state }}', '{{ states.sensor.temperature.name }}') @@ -58,6 +114,7 @@ class TestNotifyDemo(unittest.TestCase): def test_method_forwards_correct_data(self): """Test that all data from the service gets forwarded to service.""" + self._setup_notify() notify.send_message(self.hass, 'my message', 'my title', {'hello': 'world'}) self.hass.block_till_done() @@ -71,6 +128,7 @@ class TestNotifyDemo(unittest.TestCase): def test_calling_notify_from_script_loaded_from_yaml_without_title(self): """Test if we can call a notify from a script.""" + self._setup_notify() conf = { 'service': 'notify.notify', 'data': { @@ -97,6 +155,7 @@ class TestNotifyDemo(unittest.TestCase): def test_calling_notify_from_script_loaded_from_yaml_with_title(self): """Test if we can call a notify from a script.""" + self._setup_notify() conf = { 'service': 'notify.notify', 'data': { @@ -127,12 +186,14 @@ class TestNotifyDemo(unittest.TestCase): def test_targets_are_services(self): """Test that all targets are exposed as individual services.""" + self._setup_notify() self.assertIsNotNone(self.hass.services.has_service("notify", "demo")) service = "demo_test_target_name" self.assertIsNotNone(self.hass.services.has_service("notify", service)) def test_messages_to_targets_route(self): """Test message routing to specific target services.""" + self._setup_notify() self.hass.bus.listen_once("notify", self.record_calls) self.hass.services.call("notify", "demo_test_target_name", diff --git a/tests/components/notify/test_file.py b/tests/components/notify/test_file.py index 08407b20a58..ea0aaaaa71d 100644 --- a/tests/components/notify/test_file.py +++ b/tests/components/notify/test_file.py @@ -9,7 +9,7 @@ from homeassistant.components.notify import ( ATTR_TITLE_DEFAULT) import homeassistant.util.dt as dt_util -from tests.common import get_test_home_assistant, assert_setup_component +from tests.common import assert_setup_component, get_test_home_assistant class TestNotifyFile(unittest.TestCase): @@ -25,36 +25,38 @@ class TestNotifyFile(unittest.TestCase): def test_bad_config(self): """Test set up the platform with bad/missing config.""" - with assert_setup_component(0): - assert not setup_component(self.hass, notify.DOMAIN, { - 'notify': { - 'name': 'test', - 'platform': 'file', - }, - }) + config = { + notify.DOMAIN: { + 'name': 'test', + 'platform': 'file', + }, + } + with assert_setup_component(0) as handle_config: + assert setup_component(self.hass, notify.DOMAIN, config) + assert not handle_config[notify.DOMAIN] - @patch('homeassistant.components.notify.file.os.stat') - @patch('homeassistant.util.dt.utcnow') - def test_notify_file(self, mock_utcnow, mock_stat): + def _test_notify_file(self, timestamp, mock_utcnow, mock_stat): """Test the notify file output.""" mock_utcnow.return_value = dt_util.as_utc(dt_util.now()) mock_stat.return_value.st_size = 0 m_open = mock_open() with patch( - 'homeassistant.components.notify.file.open', - m_open, create=True + 'homeassistant.components.notify.file.open', + m_open, create=True ): filename = 'mock_file' message = 'one, two, testing, testing' - self.assertTrue(setup_component(self.hass, notify.DOMAIN, { - 'notify': { - 'name': 'test', - 'platform': 'file', - 'filename': filename, - 'timestamp': False, - } - })) + with assert_setup_component(1) as handle_config: + self.assertTrue(setup_component(self.hass, notify.DOMAIN, { + 'notify': { + 'name': 'test', + 'platform': 'file', + 'filename': filename, + 'timestamp': timestamp, + } + })) + assert handle_config[notify.DOMAIN] title = '{} notifications (Log started: {})\n{}\n'.format( ATTR_TITLE_DEFAULT, dt_util.utcnow().isoformat(), @@ -68,7 +70,26 @@ class TestNotifyFile(unittest.TestCase): self.assertEqual(m_open.call_args, call(full_filename, 'a')) self.assertEqual(m_open.return_value.write.call_count, 2) - self.assertEqual( - m_open.return_value.write.call_args_list, - [call(title), call(message + '\n')] - ) + if not timestamp: + self.assertEqual( + m_open.return_value.write.call_args_list, + [call(title), call('{}\n'.format(message))] + ) + else: + self.assertEqual( + m_open.return_value.write.call_args_list, + [call(title), call('{} {}\n'.format( + dt_util.utcnow().isoformat(), message))] + ) + + @patch('homeassistant.components.notify.file.os.stat') + @patch('homeassistant.util.dt.utcnow') + def test_notify_file(self, mock_utcnow, mock_stat): + """Test the notify file output without timestamp.""" + self._test_notify_file(False, mock_utcnow, mock_stat) + + @patch('homeassistant.components.notify.file.os.stat') + @patch('homeassistant.util.dt.utcnow') + def test_notify_file_timestamp(self, mock_utcnow, mock_stat): + """Test the notify file output with timestamp.""" + self._test_notify_file(True, mock_utcnow, mock_stat) diff --git a/tests/components/notify/test_group.py b/tests/components/notify/test_group.py index f0871c78322..14c8c46b6c3 100644 --- a/tests/components/notify/test_group.py +++ b/tests/components/notify/test_group.py @@ -19,7 +19,7 @@ class TestNotifyGroup(unittest.TestCase): self.service1 = MagicMock() self.service2 = MagicMock() - def mock_get_service(hass, config): + def mock_get_service(hass, config, discovery_info=None): if config['name'] == 'demo1': return self.service1 else: From e7c157e766341ec38691ac760dbc83fff8b7a46a Mon Sep 17 00:00:00 2001 From: Adam Mills <adam@armills.info> Date: Sun, 15 Jan 2017 02:27:56 -0500 Subject: [PATCH 184/189] Tests for async volume up/down (#5265) --- .../media_player/test_async_helpers.py | 117 ++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 tests/components/media_player/test_async_helpers.py diff --git a/tests/components/media_player/test_async_helpers.py b/tests/components/media_player/test_async_helpers.py new file mode 100644 index 00000000000..32b527ac4f1 --- /dev/null +++ b/tests/components/media_player/test_async_helpers.py @@ -0,0 +1,117 @@ +"""The tests for the Async Media player helper functions.""" +import unittest +import asyncio + +import homeassistant.components.media_player as mp +from homeassistant.util.async import run_coroutine_threadsafe + +from tests.common import get_test_home_assistant + + +class AsyncMediaPlayer(mp.MediaPlayerDevice): + """Async media player test class.""" + + def __init__(self, hass): + """Initialize the test media player.""" + self.hass = hass + self._volume = 0 + + @property + def volume_level(self): + """Volume level of the media player (0..1).""" + return self._volume + + @asyncio.coroutine + def async_set_volume_level(self, volume): + """Set volume level, range 0..1.""" + self._volume = volume + + +class SyncMediaPlayer(mp.MediaPlayerDevice): + """Sync media player test class.""" + + def __init__(self, hass): + """Initialize the test media player.""" + self.hass = hass + self._volume = 0 + + @property + def volume_level(self): + """Volume level of the media player (0..1).""" + return self._volume + + def set_volume_level(self, volume): + """Set volume level, range 0..1.""" + self._volume = volume + + def volume_up(self): + """Turn volume up for media player.""" + if self.volume_level < 1: + self.set_volume_level(min(1, self.volume_level + .2)) + + def volume_down(self): + """Turn volume down for media player.""" + if self.volume_level > 0: + self.set_volume_level(max(0, self.volume_level - .2)) + + +class TestAsyncMediaPlayer(unittest.TestCase): + """Test the media_player module.""" + + def setUp(self): # pylint: disable=invalid-name + """Setup things to be run when tests are started.""" + self.hass = get_test_home_assistant() + self.player = AsyncMediaPlayer(self.hass) + + def tearDown(self): + """Shut down test instance.""" + self.hass.stop() + + def test_volume_up(self): + """Test the volume_up helper function.""" + self.assertEqual(self.player.volume_level, 0) + run_coroutine_threadsafe( + self.player.async_set_volume_level(0.5), self.hass.loop).result() + self.assertEqual(self.player.volume_level, 0.5) + run_coroutine_threadsafe( + self.player.async_volume_up(), self.hass.loop).result() + self.assertEqual(self.player.volume_level, 0.6) + + def test_volume_down(self): + """Test the volume_down helper function.""" + self.assertEqual(self.player.volume_level, 0) + run_coroutine_threadsafe( + self.player.async_set_volume_level(0.5), self.hass.loop).result() + self.assertEqual(self.player.volume_level, 0.5) + run_coroutine_threadsafe( + self.player.async_volume_down(), self.hass.loop).result() + self.assertEqual(self.player.volume_level, 0.4) + + +class TestSyncMediaPlayer(unittest.TestCase): + """Test the media_player module.""" + + def setUp(self): # pylint: disable=invalid-name + """Setup things to be run when tests are started.""" + self.hass = get_test_home_assistant() + self.player = SyncMediaPlayer(self.hass) + + def tearDown(self): + """Shut down test instance.""" + self.hass.stop() + + def test_volume_up(self): + """Test the volume_up helper function.""" + self.assertEqual(self.player.volume_level, 0) + self.player.set_volume_level(0.5) + self.assertEqual(self.player.volume_level, 0.5) + self.player.volume_up() + self.assertEqual(self.player.volume_level, 0.7) + + def test_volume_down(self): + """Test the volume_down helper function.""" + self.assertEqual(self.player.volume_level, 0) + self.player.set_volume_level(0.5) + self.assertEqual(self.player.volume_level, 0.5) + self.player.volume_down() + self.assertEqual(self.player.volume_level, 0.3) From e00e6f9db6a26f13d41d2002809601cfeb06af7f Mon Sep 17 00:00:00 2001 From: Zac Hatfield Dodds <Zac-HD@users.noreply.github.com> Date: Sun, 15 Jan 2017 22:12:50 +1100 Subject: [PATCH 185/189] Bom weather platform (#5153) * Fix typo * Auto-config for `sensor.bom` Deprecate (but still support) the old two-part station ID, and move to a single `station` identifier. Any combination of these, including none, is valid; most results in downloading and caching the station map to work out any missing info. * Add `weather.bom` platform Very similar to `sensor.bom`, but supporting the lovely new `weather` component interface. Easier to configure, and does not support the deprecated config options. * Review improvements to BOM weather Largely around better input validation. --- .coveragerc | 1 + homeassistant/components/sensor/bom.py | 129 ++++++++++++++++++++--- homeassistant/components/weather/bom.py | 107 +++++++++++++++++++ homeassistant/components/weather/demo.py | 2 +- 4 files changed, 221 insertions(+), 18 deletions(-) create mode 100644 homeassistant/components/weather/bom.py diff --git a/.coveragerc b/.coveragerc index 3862b3015e4..506e51a63d8 100644 --- a/.coveragerc +++ b/.coveragerc @@ -364,6 +364,7 @@ omit = homeassistant/components/thingspeak.py homeassistant/components/tts/picotts.py homeassistant/components/upnp.py + homeassistant/components/weather/bom.py homeassistant/components/weather/openweathermap.py homeassistant/components/zeroconf.py diff --git a/homeassistant/components/sensor/bom.py b/homeassistant/components/sensor/bom.py index 3b6beab0510..a83ca49c619 100644 --- a/homeassistant/components/sensor/bom.py +++ b/homeassistant/components/sensor/bom.py @@ -5,15 +5,22 @@ For more details about this platform, please refer to the documentation at https://home-assistant.io/components/sensor.bom/ """ import datetime +import ftplib +import gzip +import io +import json import logging -import requests +import os +import re +import zipfile +import requests import voluptuous as vol from homeassistant.components.sensor import PLATFORM_SCHEMA from homeassistant.const import ( CONF_MONITORED_CONDITIONS, TEMP_CELSIUS, STATE_UNKNOWN, CONF_NAME, - ATTR_ATTRIBUTION) + ATTR_ATTRIBUTION, CONF_LATITUDE, CONF_LONGITUDE) from homeassistant.helpers.entity import Entity from homeassistant.util import Throttle import homeassistant.helpers.config_validation as cv @@ -22,6 +29,7 @@ _RESOURCE = 'http://www.bom.gov.au/fwo/{}/{}.{}.json' _LOGGER = logging.getLogger(__name__) CONF_ATTRIBUTION = "Data provided by the Australian Bureau of Meteorology" +CONF_STATION = 'station' CONF_ZONE_ID = 'zone_id' CONF_WMO_ID = 'wmo_id' @@ -66,10 +74,22 @@ SENSOR_TYPES = { 'wind_spd_kt': ['Wind Direction kt', 'kt'] } + +def validate_station(station): + """Check that the station ID is well-formed.""" + if station is None: + return + station = station.replace('.shtml', '') + if not re.fullmatch(r'ID[A-Z]\d\d\d\d\d\.\d\d\d\d\d', station): + raise vol.error.Invalid('Malformed station ID') + return station + + PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ - vol.Required(CONF_ZONE_ID): cv.string, - vol.Required(CONF_WMO_ID): cv.string, + vol.Inclusive(CONF_ZONE_ID, 'Deprecated partial station ID'): cv.string, + vol.Inclusive(CONF_WMO_ID, 'Deprecated partial station ID'): cv.string, vol.Optional(CONF_NAME, default=None): cv.string, + vol.Optional(CONF_STATION): validate_station, vol.Required(CONF_MONITORED_CONDITIONS, default=[]): vol.All(cv.ensure_list, [vol.In(SENSOR_TYPES)]), }) @@ -77,22 +97,31 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): """Set up the BOM sensor.""" - rest = BOMCurrentData( - hass, config.get(CONF_ZONE_ID), config.get(CONF_WMO_ID)) - - sensors = [] - for variable in config[CONF_MONITORED_CONDITIONS]: - sensors.append(BOMCurrentSensor( - rest, variable, config.get(CONF_NAME))) + station = config.get(CONF_STATION) + zone_id, wmo_id = config.get(CONF_ZONE_ID), config.get(CONF_WMO_ID) + if station is not None: + if zone_id and wmo_id: + _LOGGER.warning( + '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) + if station is None: + _LOGGER.error("Could not get BOM weather station from lat/lon") + return False + rest = BOMCurrentData(hass, station) try: rest.update() except ValueError as err: _LOGGER.error("Received error from BOM_Current: %s", err) return False - - add_devices(sensors) - + add_devices([BOMCurrentSensor(rest, variable, config.get(CONF_NAME)) + for variable in config[CONF_MONITORED_CONDITIONS]]) return True @@ -148,11 +177,10 @@ class BOMCurrentSensor(Entity): class BOMCurrentData(object): """Get data from BOM.""" - def __init__(self, hass, zone_id, wmo_id): + def __init__(self, hass, station_id): """Initialize the data object.""" self._hass = hass - self._zone_id = zone_id - self._wmo_id = wmo_id + self._zone_id, self._wmo_id = station_id.split('.') self.data = None self._lastupdate = LAST_UPDATE @@ -182,3 +210,70 @@ class BOMCurrentData(object): _LOGGER.error("Check BOM %s", err.args) self.data = None raise + + +def _get_bom_stations(): + """Return {CONF_STATION: (lat, lon)} for all stations, for auto-config. + + This function does several MB of internet requests, so please use the + caching version to minimise latency and hit-count. + """ + latlon = {} + with io.BytesIO() as file_obj: + with ftplib.FTP('ftp.bom.gov.au') as ftp: + ftp.login() + ftp.cwd('anon2/home/ncc/metadata/sitelists') + ftp.retrbinary('RETR stations.zip', file_obj.write) + file_obj.seek(0) + with zipfile.ZipFile(file_obj) as zipped: + with zipped.open('stations.txt') as station_txt: + for _ in range(4): + station_txt.readline() # skip header + while True: + line = station_txt.readline().decode().strip() + if len(line) < 120: + break # end while loop, ignoring any footer text + wmo, lat, lon = (line[a:b].strip() for a, b in + [(128, 134), (70, 78), (79, 88)]) + if wmo != '..': + latlon[wmo] = (float(lat), float(lon)) + zones = {} + pattern = (r'<a href="/products/(?P<zone>ID[A-Z]\d\d\d\d\d)/' + r'(?P=zone)\.(?P<wmo>\d\d\d\d\d).shtml">') + for state in ('nsw', 'vic', 'qld', 'wa', 'tas', 'nt'): + url = 'http://www.bom.gov.au/{0}/observations/{0}all.shtml'.format( + state) + for zone_id, wmo_id in re.findall(pattern, requests.get(url).text): + zones[wmo_id] = zone_id + return {'{}.{}'.format(zones[k], k): latlon[k] + for k in set(latlon) & set(zones)} + + +def bom_stations(cache_dir): + """Return {CONF_STATION: (lat, lon)} for all stations, for auto-config. + + Results from internet requests are cached as compressed json, making + subsequent calls very much faster. + """ + cache_file = os.path.join(cache_dir, '.bom-stations.json.gz') + if not os.path.isfile(cache_file): + stations = _get_bom_stations() + with gzip.open(cache_file, 'wt') as cache: + json.dump(stations, cache, sort_keys=True) + return stations + with gzip.open(cache_file, 'rt') as cache: + return {k: tuple(v) for k, v in json.load(cache).items()} + + +def closest_station(lat, lon, cache_dir): + """Return the ZONE_ID.WMO_ID of the closest station to our lat/lon.""" + if lat is None or lon is None or not os.path.isdir(cache_dir): + return + stations = bom_stations(cache_dir) + + def comparable_dist(wmo_id): + """A fast key function for psudeo-distance from lat/lon.""" + station_lat, station_lon = stations[wmo_id] + return (lat - station_lat) ** 2 + (lon - station_lon) ** 2 + + return min(stations, key=comparable_dist) diff --git a/homeassistant/components/weather/bom.py b/homeassistant/components/weather/bom.py new file mode 100644 index 00000000000..236aeb2fa2e --- /dev/null +++ b/homeassistant/components/weather/bom.py @@ -0,0 +1,107 @@ +""" +Support for Australian BOM (Bureau of Meteorology) weather service. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/weather.bom/ +""" +import logging + +import voluptuous as vol + +from homeassistant.components.weather import WeatherEntity, PLATFORM_SCHEMA +from homeassistant.const import \ + CONF_NAME, TEMP_CELSIUS, CONF_LATITUDE, CONF_LONGITUDE +from homeassistant.helpers import config_validation as cv +# Reuse data and API logic from the sensor implementation +from homeassistant.components.sensor.bom import \ + BOMCurrentData, closest_station, CONF_STATION, validate_station + +_LOGGER = logging.getLogger(__name__) + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Optional(CONF_NAME): cv.string, + vol.Optional(CONF_STATION): validate_station, +}) + + +def setup_platform(hass, config, add_devices, discovery_info=None): + """Set up the BOM weather platform.""" + station = config.get(CONF_STATION) or 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 + bom_data = BOMCurrentData(hass, station) + try: + bom_data.update() + except ValueError as err: + _LOGGER.error("Received error from BOM_Current: %s", err) + return False + add_devices([BOMWeather(bom_data, config.get(CONF_NAME))], True) + + +class BOMWeather(WeatherEntity): + """Representation of a weather condition.""" + + def __init__(self, bom_data, stationname=None): + """Initialise the platform with a data instance and station name.""" + self.bom_data = bom_data + self.stationname = stationname or self.bom_data.data.get('name') + + def update(self): + """Update current conditions.""" + self.bom_data.update() + + @property + def name(self): + """Return the name of the sensor.""" + return 'BOM {}'.format(self.stationname or '(unknown station)') + + @property + def condition(self): + """Return the current condition.""" + return self.bom_data.data.get('weather') + + # Now implement the WeatherEntity interface + + @property + def temperature(self): + """Return the platform temperature.""" + return self.bom_data.data.get('air_temp') + + @property + def temperature_unit(self): + """Return the unit of measurement.""" + return TEMP_CELSIUS + + @property + def pressure(self): + """Return the mean sea-level pressure.""" + return self.bom_data.data.get('press_msl') + + @property + def humidity(self): + """Return the relative humidity.""" + return self.bom_data.data.get('rel_hum') + + @property + def wind_speed(self): + """Return the wind speed.""" + return self.bom_data.data.get('wind_spd_kmh') + + @property + def wind_bearing(self): + """Return the wind bearing.""" + directions = ['N', 'NNE', 'NE', 'ENE', + 'E', 'ESE', 'SE', 'SSE', + 'S', 'SSW', 'SW', 'WSW', + 'W', 'WNW', 'NW', 'NNW'] + wind = {name: idx * 360 / 16 for idx, name in enumerate(directions)} + return wind.get(self.bom_data.data.get('wind_dir')) + + @property + def attribution(self): + """Return the attribution.""" + return "Data provided by the Australian Bureau of Meteorology" diff --git a/homeassistant/components/weather/demo.py b/homeassistant/components/weather/demo.py index f7617bd0075..b919722f2a4 100644 --- a/homeassistant/components/weather/demo.py +++ b/homeassistant/components/weather/demo.py @@ -79,7 +79,7 @@ class DemoWeather(WeatherEntity): @property def pressure(self): - """Return the wind speed.""" + """Return the pressure.""" return self._pressure @property From 2465aea63b701b5f362f86a3ce7e170e1f28313c Mon Sep 17 00:00:00 2001 From: Fabian Affolter <mail@fabian-affolter.ch> Date: Sun, 15 Jan 2017 14:53:07 +0100 Subject: [PATCH 186/189] Fix link (#5343) --- homeassistant/components/tts/google.py | 6 +++--- homeassistant/components/tts/picotts.py | 2 +- homeassistant/components/tts/voicerss.py | 12 ++++++------ 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/homeassistant/components/tts/google.py b/homeassistant/components/tts/google.py index dc03013d4f1..10ce3de6c6b 100644 --- a/homeassistant/components/tts/google.py +++ b/homeassistant/components/tts/google.py @@ -2,7 +2,7 @@ Support for the google speech service. For more details about this component, please refer to the documentation at -https://home-assistant.io/components/tts/google/ +https://home-assistant.io/components/tts.google/ """ import asyncio import logging @@ -41,12 +41,12 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @asyncio.coroutine def async_get_engine(hass, config): - """Setup Google speech component.""" + """Set up Google speech component.""" return GoogleProvider(hass, config[CONF_LANG]) class GoogleProvider(Provider): - """Google speech api provider.""" + """The Google speech API provider.""" def __init__(self, hass, lang): """Init Google TTS service.""" diff --git a/homeassistant/components/tts/picotts.py b/homeassistant/components/tts/picotts.py index b0c5f5deef7..3cc133864b6 100644 --- a/homeassistant/components/tts/picotts.py +++ b/homeassistant/components/tts/picotts.py @@ -25,7 +25,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def get_engine(hass, config): - """Setup pico speech component.""" + """Set up Pico speech component.""" if shutil.which("pico2wave") is None: _LOGGER.error("'pico2wave' was not found") return False diff --git a/homeassistant/components/tts/voicerss.py b/homeassistant/components/tts/voicerss.py index 2dda27b0c06..f7a97a354f0 100644 --- a/homeassistant/components/tts/voicerss.py +++ b/homeassistant/components/tts/voicerss.py @@ -2,7 +2,7 @@ Support for the voicerss speech service. For more details about this component, please refer to the documentation at -https://home-assistant.io/components/tts/voicerss/ +https://home-assistant.io/components/tts.voicerss/ """ import asyncio import logging @@ -83,12 +83,12 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @asyncio.coroutine def async_get_engine(hass, config): - """Setup VoiceRSS speech component.""" + """Set up VoiceRSS TTS component.""" return VoiceRSSProvider(hass, config) class VoiceRSSProvider(Provider): - """VoiceRSS speech api provider.""" + """The VoiceRSS speech API provider.""" def __init__(self, hass, conf): """Init VoiceRSS TTS service.""" @@ -115,7 +115,7 @@ class VoiceRSSProvider(Provider): @asyncio.coroutine def async_get_tts_audio(self, message, language): - """Load TTS from voicerss.""" + """Load TTS from VoiceRSS.""" websession = async_get_clientsession(self.hass) form_data = self._form_data.copy() @@ -137,11 +137,11 @@ class VoiceRSSProvider(Provider): if data in ERROR_MSG: _LOGGER.error( - "Error receive %s from voicerss.", str(data, 'utf-8')) + "Error receive %s from VoiceRSS", str(data, 'utf-8')) return (None, None) except (asyncio.TimeoutError, aiohttp.errors.ClientError): - _LOGGER.error("Timeout for voicerss api.") + _LOGGER.error("Timeout for VoiceRSS API") return (None, None) finally: From 85a84549eb73207ecb7cfc069cdd42ffaccb4cc0 Mon Sep 17 00:00:00 2001 From: Lupin Demid <lupin@demid.su> Date: Sun, 15 Jan 2017 18:43:10 +0400 Subject: [PATCH 187/189] Yandex tts component (#5342) * Added Yandex SpeechKit TTS * Added test stub * Added two test and added property for yandex tts * Copy all test from voice rss * Added test vith different speaker and code style changes * Added new line to end of file * Url format replaced with url_params --- homeassistant/components/tts/yandextts.py | 114 ++++++++++++ tests/components/tts/test_yandextts.py | 215 ++++++++++++++++++++++ 2 files changed, 329 insertions(+) create mode 100644 homeassistant/components/tts/yandextts.py create mode 100644 tests/components/tts/test_yandextts.py diff --git a/homeassistant/components/tts/yandextts.py b/homeassistant/components/tts/yandextts.py new file mode 100644 index 00000000000..d5825ce297f --- /dev/null +++ b/homeassistant/components/tts/yandextts.py @@ -0,0 +1,114 @@ +""" +Support for the yandex speechkit tts service. + +For more details about this component, please refer to the documentation at +https://home-assistant.io/components/tts/yandextts/ +""" +import asyncio +import logging + +import aiohttp +import async_timeout +import voluptuous as vol + +from homeassistant.const import CONF_API_KEY +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__) + +YANDEX_API_URL = "https://tts.voicetech.yandex.net/generate?" + +SUPPORT_LANGUAGES = [ + 'ru-RU', 'en-US', 'tr-TR', 'uk-UK' +] + +SUPPORT_CODECS = [ + 'mp3', 'wav', 'opus', +] + +SUPPORT_VOICES = [ + 'jane', 'oksana', 'alyss', 'omazh', + 'zahar', 'ermil' +] +CONF_CODEC = 'codec' +CONF_VOICE = 'voice' + +DEFAULT_LANG = 'en-US' +DEFAULT_CODEC = 'mp3' +DEFAULT_VOICE = 'zahar' + + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required(CONF_API_KEY): cv.string, + vol.Optional(CONF_LANG, default=DEFAULT_LANG): vol.In(SUPPORT_LANGUAGES), + vol.Optional(CONF_CODEC, default=DEFAULT_CODEC): vol.In(SUPPORT_CODECS), + vol.Optional(CONF_VOICE, default=DEFAULT_VOICE): vol.In(SUPPORT_VOICES), +}) + + +@asyncio.coroutine +def async_get_engine(hass, config): + """Setup VoiceRSS speech component.""" + return YandexSpeechKitProvider(hass, config) + + +class YandexSpeechKitProvider(Provider): + """VoiceRSS speech api provider.""" + + def __init__(self, hass, conf): + """Init VoiceRSS TTS service.""" + self.hass = hass + self._codec = conf.get(CONF_CODEC) + self._key = conf.get(CONF_API_KEY) + self._speaker = conf.get(CONF_VOICE) + self._language = conf.get(CONF_LANG) + + @property + def default_language(self): + """Default language.""" + return self._language + + @property + def supported_languages(self): + """List of supported languages.""" + return SUPPORT_LANGUAGES + + @asyncio.coroutine + def async_get_tts_audio(self, message, language): + """Load TTS from yandex.""" + websession = async_get_clientsession(self.hass) + + actual_language = language + + request = None + try: + with async_timeout.timeout(10, loop=self.hass.loop): + url_param = { + 'text': message, + 'lang': actual_language, + 'key': self._key, + 'speaker': self._speaker, + 'format': self._codec, + } + + request = yield from websession.get(YANDEX_API_URL, + params=url_param) + + if request.status != 200: + _LOGGER.error("Error %d on load url %s.", + request.status, request.url) + return (None, None) + data = yield from request.read() + + except (asyncio.TimeoutError, aiohttp.errors.ClientError): + _LOGGER.error("Timeout for yandex speech kit api.") + return (None, None) + + finally: + if request is not None: + yield from request.release() + + return (self._codec, data) diff --git a/tests/components/tts/test_yandextts.py b/tests/components/tts/test_yandextts.py new file mode 100644 index 00000000000..f0c6eb85200 --- /dev/null +++ b/tests/components/tts/test_yandextts.py @@ -0,0 +1,215 @@ +"""The tests for the Yandex SpeechKit speech platform.""" +import asyncio +import os +import shutil + +import homeassistant.components.tts as tts +from homeassistant.bootstrap import setup_component +from homeassistant.components.media_player import ( + SERVICE_PLAY_MEDIA, DOMAIN as DOMAIN_MP) +from tests.common import ( + get_test_home_assistant, assert_setup_component, mock_service) + + +class TestTTSYandexPlatform(object): + """Test the speech component.""" + + def setup_method(self): + """Setup things to be run when tests are started.""" + self.hass = get_test_home_assistant() + self._base_url = "https://tts.voicetech.yandex.net/generate?" + + def teardown_method(self): + """Stop everything that was started.""" + default_tts = self.hass.config.path(tts.DEFAULT_CACHE_DIR) + if os.path.isdir(default_tts): + shutil.rmtree(default_tts) + + self.hass.stop() + + def test_setup_component(self): + """Test setup component.""" + config = { + tts.DOMAIN: { + 'platform': 'yandextts', + 'api_key': '1234567xx' + } + } + + with assert_setup_component(1, tts.DOMAIN): + setup_component(self.hass, tts.DOMAIN, config) + + def test_setup_component_without_api_key(self): + """Test setup component without api key.""" + config = { + tts.DOMAIN: { + 'platform': 'yandextts', + } + } + + with assert_setup_component(0, tts.DOMAIN): + setup_component(self.hass, tts.DOMAIN, config) + + def test_service_say(self, aioclient_mock): + """Test service call say.""" + calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) + + url = "https://tts.voicetech.yandex.net/generate?format=mp3" \ + "&speaker=zahar&key=1234567xx&text=HomeAssistant&lang=en-US" + aioclient_mock.get( + url, status=200, content=b'test') + + config = { + tts.DOMAIN: { + 'platform': 'yandextts', + 'api_key': '1234567xx' + } + } + + with assert_setup_component(1, tts.DOMAIN): + setup_component(self.hass, tts.DOMAIN, config) + + self.hass.services.call(tts.DOMAIN, 'yandextts_say', { + tts.ATTR_MESSAGE: "HomeAssistant", + }) + self.hass.block_till_done() + + assert len(aioclient_mock.mock_calls) == 1 + assert len(calls) == 1 + + def test_service_say_russian_config(self, aioclient_mock): + """Test service call say.""" + calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) + + url = "https://tts.voicetech.yandex.net/generate?format=mp3" \ + "&speaker=zahar&key=1234567xx&text=HomeAssistant&lang=ru-RU" + aioclient_mock.get( + url, status=200, content=b'test') + + config = { + tts.DOMAIN: { + 'platform': 'yandextts', + 'api_key': '1234567xx', + 'language': 'ru-RU', + } + } + + with assert_setup_component(1, tts.DOMAIN): + setup_component(self.hass, tts.DOMAIN, config) + + self.hass.services.call(tts.DOMAIN, 'yandextts_say', { + tts.ATTR_MESSAGE: "HomeAssistant", + }) + self.hass.block_till_done() + + assert len(aioclient_mock.mock_calls) == 1 + assert len(calls) == 1 + + def test_service_say_russian_service(self, aioclient_mock): + """Test service call say.""" + calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) + + url = "https://tts.voicetech.yandex.net/generate?format=mp3" \ + "&speaker=zahar&key=1234567xx&text=HomeAssistant&lang=ru-RU" + aioclient_mock.get( + url, status=200, content=b'test') + + config = { + tts.DOMAIN: { + 'platform': 'yandextts', + 'api_key': '1234567xx', + } + } + + with assert_setup_component(1, tts.DOMAIN): + setup_component(self.hass, tts.DOMAIN, config) + + self.hass.services.call(tts.DOMAIN, 'yandextts_say', { + tts.ATTR_MESSAGE: "HomeAssistant", + tts.ATTR_LANGUAGE: "ru-RU" + }) + self.hass.block_till_done() + + assert len(aioclient_mock.mock_calls) == 1 + assert len(calls) == 1 + + def test_service_say_timeout(self, aioclient_mock): + """Test service call say.""" + calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) + + url = "https://tts.voicetech.yandex.net/generate?format=mp3" \ + "&speaker=zahar&key=1234567xx&text=HomeAssistant&lang=en-US" + aioclient_mock.get( + url, status=200, exc=asyncio.TimeoutError()) + + config = { + tts.DOMAIN: { + 'platform': 'yandextts', + 'api_key': '1234567xx' + } + } + + with assert_setup_component(1, tts.DOMAIN): + setup_component(self.hass, tts.DOMAIN, config) + + self.hass.services.call(tts.DOMAIN, 'yandextts_say', { + tts.ATTR_MESSAGE: "HomeAssistant", + }) + self.hass.block_till_done() + + assert len(calls) == 0 + assert len(aioclient_mock.mock_calls) == 1 + + def test_service_say_http_error(self, aioclient_mock): + """Test service call say.""" + calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) + + url = "https://tts.voicetech.yandex.net/generate?format=mp3" \ + "&speaker=zahar&key=1234567xx&text=HomeAssistant&lang=en-US" + aioclient_mock.get( + url, status=403, content=b'test') + + config = { + tts.DOMAIN: { + 'platform': 'yandextts', + 'api_key': '1234567xx' + } + } + + with assert_setup_component(1, tts.DOMAIN): + setup_component(self.hass, tts.DOMAIN, config) + + self.hass.services.call(tts.DOMAIN, 'yandextts_say', { + tts.ATTR_MESSAGE: "HomeAssistant", + }) + self.hass.block_till_done() + + assert len(calls) == 0 + + def test_service_say_specifed_speaker(self, aioclient_mock): + """Test service call say.""" + calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) + + url = "https://tts.voicetech.yandex.net/generate?format=mp3" \ + "&speaker=alyss&key=1234567xx&text=HomeAssistant&lang=en-US" + aioclient_mock.get( + url, status=200, content=b'test') + + config = { + tts.DOMAIN: { + 'platform': 'yandextts', + 'api_key': '1234567xx', + 'voice': 'alyss' + } + } + + with assert_setup_component(1, tts.DOMAIN): + setup_component(self.hass, tts.DOMAIN, config) + + self.hass.services.call(tts.DOMAIN, 'yandextts_say', { + tts.ATTR_MESSAGE: "HomeAssistant", + }) + self.hass.block_till_done() + + assert len(aioclient_mock.mock_calls) == 1 + assert len(calls) == 1 From c458ee29f28c0d6f843e521bef0411068ce73a6a Mon Sep 17 00:00:00 2001 From: Pascal Vizeli <pascal.vizeli@syshack.ch> Date: Sun, 15 Jan 2017 17:35:58 +0100 Subject: [PATCH 188/189] Rename log message / handle cancellederror on image proxy (#5331) --- homeassistant/components/camera/__init__.py | 14 +++++++++----- homeassistant/components/camera/ffmpeg.py | 2 +- homeassistant/components/camera/mjpeg.py | 2 +- homeassistant/components/camera/synology.py | 2 +- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/homeassistant/components/camera/__init__.py b/homeassistant/components/camera/__init__.py index 2d4e73cd6e4..89a2f6c5e46 100644 --- a/homeassistant/components/camera/__init__.py +++ b/homeassistant/components/camera/__init__.py @@ -175,7 +175,7 @@ class Camera(Entity): yield from asyncio.sleep(.5) except asyncio.CancelledError: - _LOGGER.debug("Close stream by browser.") + _LOGGER.debug("Close stream by frontend.") response = None finally: @@ -249,12 +249,16 @@ class CameraImageView(CameraView): @asyncio.coroutine def handle(self, request, camera): """Serve camera image.""" - image = yield from camera.async_camera_image() + try: + image = yield from camera.async_camera_image() - if image is None: - return web.Response(status=500) + if image is None: + return web.Response(status=500) - return web.Response(body=image) + return web.Response(body=image) + + except asyncio.CancelledError: + _LOGGER.debug("Close stream by frontend.") class CameraMjpegStream(CameraView): diff --git a/homeassistant/components/camera/ffmpeg.py b/homeassistant/components/camera/ffmpeg.py index 9c1aaa25f6f..0b8d60ab7f5 100644 --- a/homeassistant/components/camera/ffmpeg.py +++ b/homeassistant/components/camera/ffmpeg.py @@ -86,7 +86,7 @@ class FFmpegCamera(Camera): response.write(data) except asyncio.CancelledError: - _LOGGER.debug("Close stream by browser.") + _LOGGER.debug("Close stream by frontend.") response = None finally: diff --git a/homeassistant/components/camera/mjpeg.py b/homeassistant/components/camera/mjpeg.py index 4bc62d66143..dd030099a45 100644 --- a/homeassistant/components/camera/mjpeg.py +++ b/homeassistant/components/camera/mjpeg.py @@ -125,7 +125,7 @@ class MjpegCamera(Camera): raise HTTPGatewayTimeout() except asyncio.CancelledError: - _LOGGER.debug("Close stream by browser.") + _LOGGER.debug("Close stream by frontend.") response = None finally: diff --git a/homeassistant/components/camera/synology.py b/homeassistant/components/camera/synology.py index d7359c14ded..424e269c555 100644 --- a/homeassistant/components/camera/synology.py +++ b/homeassistant/components/camera/synology.py @@ -277,7 +277,7 @@ class SynologyCamera(Camera): raise HTTPGatewayTimeout() except asyncio.CancelledError: - _LOGGER.debug("Close stream by browser.") + _LOGGER.debug("Close stream by frontend.") response = None finally: From d7d428119bdce8d07c3e11d86f3fa22689ff0618 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli <pascal.vizeli@syshack.ch> Date: Sun, 15 Jan 2017 17:36:24 +0100 Subject: [PATCH 189/189] Bugfix stack trace from api (#5332) --- homeassistant/components/api.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/homeassistant/components/api.py b/homeassistant/components/api.py index da8ad9f88ba..8e03133e032 100644 --- a/homeassistant/components/api.py +++ b/homeassistant/components/api.py @@ -133,6 +133,9 @@ class APIEventStream(HomeAssistantView): except asyncio.TimeoutError: yield from to_write.put(STREAM_PING_PAYLOAD) + except asyncio.CancelledError: + _LOGGER.debug('STREAM %s ABORT', id(stop_obj)) + finally: _LOGGER.debug('STREAM %s RESPONSE CLOSED', id(stop_obj)) unsub_stream()