From e30feaee127b5dc0e7fe7aade962dc6dc11f9205 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Tue, 23 Jun 2015 23:50:21 -0700 Subject: [PATCH] Site updated at 2015-06-24 06:50:21 UTC --- atom.xml | 2 +- blog/categories/architecture/atom.xml | 2 +- blog/categories/branding/atom.xml | 2 +- blog/categories/component/atom.xml | 2 +- blog/categories/core/atom.xml | 2 +- blog/categories/frontend/atom.xml | 2 +- blog/categories/release-notes/atom.xml | 2 +- blog/categories/website/atom.xml | 2 +- components/device_tracker.html | 1 + components/device_tracker.nmap_scanner.html | 3 +- components/device_tracker.tomato.html | 3 +- components/device_tracker.tplink.html | 171 + components/index.html | 32 +- components/keyboard.html | 2 +- components/logbook.html | 2 +- components/media_player.html | 1 + components/media_player.kodi.html | 174 + components/notify.file.html | 173 + components/sensor.openweathermap.html | 6 +- components/sensor.swiss_public_transport.html | 3 +- components/sensor.time_date.html | 12 +- components/switch.command_switch.html | 2 +- demo/favicon-192x192.png | Bin 0 -> 15701 bytes demo/favicon-apple-180x180.png | Bin 0 -> 15269 bytes demo/favicon.ico | Bin 0 -> 17957 bytes demo/frontend.html | 28671 +++++++++++++++- demo/index.html | 52 +- demo/manifest.json | 14 + demo/webcomponents-lite.min.js | 13 + demo/webcomponents.min.js | 14 - developers/credits.html | 1 + getting-started/configuration.html | 3 +- .../accessories-text-editor.png | Bin 0 -> 2767 bytes images/supported_brands/appointment-new.png | Bin 0 -> 4804 bytes images/supported_brands/commandline.png | Bin 1488 -> 0 bytes images/supported_brands/input-keyboard.png | Bin 0 -> 1381 bytes images/supported_brands/keyboard.png | Bin 1110 -> 0 bytes images/supported_brands/kodi.png | Bin 0 -> 6666 bytes images/supported_brands/logbook.png | Bin 517 -> 0 bytes .../network-wired-disconnected.png | Bin 0 -> 3358 bytes images/supported_brands/network-workgroup.png | Bin 0 -> 3146 bytes images/supported_brands/text-x-generic.png | Bin 0 -> 2118 bytes images/supported_brands/tp-link.png | Bin 0 -> 10310 bytes .../supported_brands/utilities-terminal.png | Bin 0 -> 2603 bytes sitemap.xml | 198 +- 45 files changed, 29393 insertions(+), 174 deletions(-) create mode 100644 components/device_tracker.tplink.html create mode 100644 components/media_player.kodi.html create mode 100644 components/notify.file.html create mode 100644 demo/favicon-192x192.png create mode 100644 demo/favicon-apple-180x180.png create mode 100644 demo/favicon.ico create mode 100644 demo/manifest.json create mode 100644 demo/webcomponents-lite.min.js delete mode 100644 demo/webcomponents.min.js create mode 100644 images/supported_brands/accessories-text-editor.png create mode 100644 images/supported_brands/appointment-new.png delete mode 100644 images/supported_brands/commandline.png create mode 100644 images/supported_brands/input-keyboard.png delete mode 100644 images/supported_brands/keyboard.png create mode 100644 images/supported_brands/kodi.png delete mode 100644 images/supported_brands/logbook.png create mode 100644 images/supported_brands/network-wired-disconnected.png create mode 100644 images/supported_brands/network-workgroup.png create mode 100644 images/supported_brands/text-x-generic.png create mode 100644 images/supported_brands/tp-link.png create mode 100644 images/supported_brands/utilities-terminal.png diff --git a/atom.xml b/atom.xml index 70ef212072..82268aea2b 100644 --- a/atom.xml +++ b/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Home Assistant]]> - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 https://home-assistant.io/ diff --git a/blog/categories/architecture/atom.xml b/blog/categories/architecture/atom.xml index 19edd24eb9..5c768088f1 100644 --- a/blog/categories/architecture/atom.xml +++ b/blog/categories/architecture/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: architecture | Home Assistant]]> - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 https://home-assistant.io/ diff --git a/blog/categories/branding/atom.xml b/blog/categories/branding/atom.xml index 54e81eae4b..c8f32399d2 100644 --- a/blog/categories/branding/atom.xml +++ b/blog/categories/branding/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: branding | Home Assistant]]> - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 https://home-assistant.io/ diff --git a/blog/categories/component/atom.xml b/blog/categories/component/atom.xml index 2dd9ce8339..33c99283bd 100644 --- a/blog/categories/component/atom.xml +++ b/blog/categories/component/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: component | Home Assistant]]> - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 https://home-assistant.io/ diff --git a/blog/categories/core/atom.xml b/blog/categories/core/atom.xml index cb3bb1c7a0..6162a44871 100644 --- a/blog/categories/core/atom.xml +++ b/blog/categories/core/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: core | Home Assistant]]> - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 https://home-assistant.io/ diff --git a/blog/categories/frontend/atom.xml b/blog/categories/frontend/atom.xml index 351eb07253..2cd0818493 100644 --- a/blog/categories/frontend/atom.xml +++ b/blog/categories/frontend/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: frontend | Home Assistant]]> - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 https://home-assistant.io/ diff --git a/blog/categories/release-notes/atom.xml b/blog/categories/release-notes/atom.xml index fe2139af75..3b237aa7e7 100644 --- a/blog/categories/release-notes/atom.xml +++ b/blog/categories/release-notes/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: release-notes | Home Assistant]]> - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 https://home-assistant.io/ diff --git a/blog/categories/website/atom.xml b/blog/categories/website/atom.xml index 18436809bf..e9f559d0b2 100644 --- a/blog/categories/website/atom.xml +++ b/blog/categories/website/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: website | Home Assistant]]> - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 https://home-assistant.io/ diff --git a/components/device_tracker.html b/components/device_tracker.html index 245b3efd09..3c274084d1 100644 --- a/components/device_tracker.html +++ b/components/device_tracker.html @@ -112,6 +112,7 @@
  • tomato
  • netgear
  • luci (OpenWRT)
  • +
  • TP-Link
  • diff --git a/components/device_tracker.nmap_scanner.html b/components/device_tracker.nmap_scanner.html index db11833f1b..93b3c58fe8 100644 --- a/components/device_tracker.nmap_scanner.html +++ b/components/device_tracker.nmap_scanner.html @@ -105,7 +105,8 @@
    -

    As an alternative to the router-based device tracking, it is possible to directly scan the network for devices by using Nmap. The IP addresses to scan can be specified in any format that Nmap understands, including the network-prefix notation (192.168.1.1/24) and the range notation (192.168.1.1-255).

    +

    +As an alternative to the router-based device tracking, it is possible to directly scan the network for devices by using Nmap. The IP addresses to scan can be specified in any format that Nmap understands, including the network-prefix notation (192.168.1.1/24) and the range notation (192.168.1.1-255).

    1
     2
    diff --git a/components/device_tracker.tomato.html b/components/device_tracker.tomato.html
    index 52ea0a76f6..98afd25128 100644
    --- a/components/device_tracker.tomato.html
    +++ b/components/device_tracker.tomato.html
    @@ -105,7 +105,8 @@
       
    -

    Tomato requires an extra config variable called http_id. The value can be obtained by logging in to the Tomato admin interface and search for http_id in the page source code.

    +

    +Tomato requires an extra config variable called http_id. The value can be obtained by logging in to the Tomato admin interface and search for http_id in the page source code.

    - + - + + + + + + + @@ -204,6 +210,12 @@ + + + + + + @@ -211,7 +223,7 @@ - + @@ -294,7 +306,7 @@ the manufacturers of these devices.
    1
     2
    diff --git a/components/device_tracker.tplink.html b/components/device_tracker.tplink.html
    new file mode 100644
    index 0000000000..d0d16e4389
    --- /dev/null
    +++ b/components/device_tracker.tplink.html
    @@ -0,0 +1,171 @@
    +
    +  
    +  
    +  
    +    
    +
    +  
    +    
    +  
    +    
    +    
    +    TP-Link support - Home Assistant
    +    
    +    
    +    
    +    
    +    
    +    
    +    
    +    
    +    
    +    
    +    
    +    
    +    
    +    
    +    
    +    
    +    
    +    
    +    
    +    
    +
    +
    +
    +  
    +
    +    
    + +
    + + + +
    +
    + +
    + + +
    + + +
    +

    + TP-Link Support +

    +
    +
    + + +

    +This platform allows you to detect presence by looking at connected devices to a TP-Link device.

    + +
    1
    +2
    +3
    +4
    +5
    +6
    +
    # Example configuration.yaml entry
    +device_tracker:
    +  platform: tplink
    +  host: YOUR_ROUTER_IP
    +  username: YOUR_ADMIN_USERNAME
    +  password: YOUR_ADMIN_PASSWORD
    +
    + + +

    See the device tracker component page for instructions how to configure the people to be tracked.

    + + +
    + + +
    + + +
    +
    + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/index.html b/components/index.html index 6fed474a98..dd668f688b 100644 --- a/components/index.html +++ b/components/index.html @@ -178,13 +178,19 @@
    Tomato routers Offers presence detection by looking at connected devices.
    TP-Link routersOffers presence detection by looking at connected devices.
    NMap network scanning Offers presence detection by scanning the network for connected devices.
    Track what is being played and control playback (temporarely disabled awaiting protobuf 3 release).
    KodiTrack what is being played and control playback.
    Music Player Daemon (MPD)
    Command line Switch Switch that issues command line commands when turned on and off.
    - + @@ -312,11 +324,17 @@ the manufacturers of these devices. - + + + + + + + @@ -372,7 +390,7 @@ the manufacturers of these devices. - + @@ -396,7 +414,7 @@ the manufacturers of these devices. - + diff --git a/components/keyboard.html b/components/keyboard.html index d3381271a0..4212382465 100644 --- a/components/keyboard.html +++ b/components/keyboard.html @@ -105,7 +105,7 @@
    -

    +

    The keyboard component simulates key presses on the host machine. It currently offers the following Buttons as a Service (BaaS):

      diff --git a/components/logbook.html b/components/logbook.html index 230169f723..79c038a64e 100644 --- a/components/logbook.html +++ b/components/logbook.html @@ -105,7 +105,7 @@
      -

      +

      The logbook component provides a different perspective on the history of your house by showing all the changes that happened to your house in chronological order. See the demo for a live example.

      To enable the logbook in your installation, add the following to your configuration.yaml file:

      diff --git a/components/media_player.html b/components/media_player.html index 4026331bc6..b471b014c4 100644 --- a/components/media_player.html +++ b/components/media_player.html @@ -112,6 +112,7 @@ diff --git a/components/media_player.kodi.html b/components/media_player.kodi.html new file mode 100644 index 0000000000..6b9ee98c1f --- /dev/null +++ b/components/media_player.kodi.html @@ -0,0 +1,174 @@ + + + + + + + + + + + + Kodi support - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + + +
      +
      + +
      + + +
      + + +
      +

      + Kodi Support +

      +
      +
      + + +

      +The kodi platform allows you to control a Kodi multimedia system from Home Assistant.

      + +

      To add Kodi to your installation, add the following to your configuration.yaml file:

      + +
    History Track the state of entities and allow users to browse through history.
    Logbook Provides a logbook-style view on the Entity history.
    FileAllow sending messages to a file.
    Notify My Android (NMA)
    Keyboard Simulate key presses on the host machine.
    Swiss Public Transport Display timetable data for traveling in Switzerland.
    1
    +2
    +3
    +4
    +5
    +6
    +7
    +
    # Example configuration.yaml entry
    +media_player:
    +  platform: kodi
    +  name: Kodi
    +  url: http://192.168.0.123/jsonrpc
    +  user: kodi
    +  password: my_secure_password
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/notify.file.html b/components/notify.file.html new file mode 100644 index 0000000000..f393f88ef3 --- /dev/null +++ b/components/notify.file.html @@ -0,0 +1,173 @@ + + + + + + + + + + + + File notification support - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + +
    +
    + +
    + + +
    + + +
    +

    + File Notification Support +

    +
    +
    + + +

    +The file platform allows you to store notifications from Home Assistant as a file.

    + +

    To enable file notifications in your installation, add the following to your configuration.yaml file:

    + +
    1
    +2
    +3
    +4
    +5
    +
    # Example configuration.yaml entry
    +notify:
    +  platform: file
    +  filename: FILENAME
    +  timestamp: 1 or 0
    +
    + + +

    Setting timestamp to 1 adds a timestamp to every entry.

    + +

    To use notifications, please see the getting started with automation page.

    + + +
    + + +
    + + +
    +
    + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/sensor.openweathermap.html b/components/sensor.openweathermap.html index 0f24143974..4127f5ae52 100644 --- a/components/sensor.openweathermap.html +++ b/components/sensor.openweathermap.html @@ -129,8 +129,8 @@ The openweathermap platform uses OpenWeathe sensor: platform: openweathermap api_key: YOUR_API_KEY - monitored_conditions - - type: 'weather' + monitored_conditions: + - type: 'weather' - type: 'temperature' - type: 'wind_speed' - type: 'humidity' @@ -141,7 +141,7 @@ The openweathermap platform uses OpenWeathe
    -

    Details about the API are available in the (OpenWeatherMap documentation)[http://bugs.openweathermap.org/projects/api/wiki].

    +

    Details about the API are available in the OpenWeatherMap documentation.

    diff --git a/components/sensor.swiss_public_transport.html b/components/sensor.swiss_public_transport.html index 64d9cccbca..62fff41f16 100644 --- a/components/sensor.swiss_public_transport.html +++ b/components/sensor.swiss_public_transport.html @@ -105,7 +105,8 @@
    -

    The swiss public transport sensor will give you the next two departure times from a given location to another one in Switzerland.

    +

    +The swiss public transport sensor will give you the next two departure times from a given location to another one in Switzerland.

    The Stationboard website can help to determine the exact name of the start and the end station. With the station names it’s necessary to search for the ID of those stations:

    diff --git a/components/sensor.time_date.html b/components/sensor.time_date.html index 2a129cee6b..98c4d1fc7f 100644 --- a/components/sensor.time_date.html +++ b/components/sensor.time_date.html @@ -124,12 +124,12 @@ The time and date platform simple displays the time in various formats, the date sensor: platform: time_date display_options: - - type: 'time' - - type: 'date' - - type: 'date_time' - - type: 'time_date' - - type: 'time_utc' - - type: 'beat' + - 'time' + - 'date' + - 'date_time' + - 'time_date' + - 'time_utc' + - 'beat' diff --git a/components/switch.command_switch.html b/components/switch.command_switch.html index 64605384b8..ad2039847c 100644 --- a/components/switch.command_switch.html +++ b/components/switch.command_switch.html @@ -105,7 +105,7 @@
    -

    +

    A switch platform that issues specific commands when it is turned on and off. This might very well become our most platform as it allows anyone to integrate any type of switch into Home Assistant that can be controlled from the command line, including calling other scripts!

    To enable it, add the following lines to your configuration.yaml:

    diff --git a/demo/favicon-192x192.png b/demo/favicon-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..2959efdf89d84afbf915abf4765e5e150f4e74d0 GIT binary patch literal 15701 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 literal 0 HcmV?d00001 diff --git a/demo/favicon-apple-180x180.png b/demo/favicon-apple-180x180.png new file mode 100644 index 0000000000000000000000000000000000000000..20117d00f22756f4e77b60042ac48186e31a3861 GIT binary patch literal 15269 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 literal 0 HcmV?d00001 diff --git a/demo/frontend.html b/demo/frontend.html index 975b286b77..f9bf4e9502 100644 --- a/demo/frontend.html +++ b/demo/frontend.html @@ -1,25 +1,28662 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file + attached: function() { + this.isAttached = true; + }, + + dataChanged: function() { + this.drawChart(); + }, + + /************************************************** + The following code gererates line line graphs for devices with continuous + values(which are devices that have a unit_of_measurement values defined). + On each graph the devices are grouped by their unit of measurement, eg. all + sensors measuring MB will be a separate line on single graph. The google + chart API takes data as a 2 dimensional array in the format: + + DateTime, device1, device2, device3 + 2015-04-01, 1, 2, 0 + 2015-04-01, 0, 1, 0 + 2015-04-01, 2, 1, 1 + + NOTE: the first column is a javascript date objects. + + The first thing we do is build up the data with rows for each time of a state + change and initialise the values to 0. THen we loop through each device and + fill in its data. + + **************************************************/ + drawChart: function() { + if (!this.isAttached) { + return; + } + + var root = Polymer.dom(this); + var unit = this.unit; + var deviceStates = this.data; + + while (root.lastChild) { + root.removeChild(root.lastChild); + } + + if (deviceStates.length === 0) { + return; + } + + var chart = new google.visualization.LineChart(this); + var dataTable = new google.visualization.DataTable(); + + dataTable.addColumn({ type: 'datetime', id: 'Time' }); + + var options = { + legend: { position: 'top' }, + titlePosition: 'none', + vAxes: { + // Adds units to the left hand side of the graph + 0: {title: unit} + }, + hAxis: { + format: 'H:mm' + }, + lineWidth: 1, + chartArea:{left:'60',width:"95%"}, + explorer: { + actions: ['dragToZoom', 'rightClickToReset', 'dragToPan'], + keepInBounds: true, + axis: 'horizontal', + maxZoomIn: 0.1 + } + }; + + if(this.isSingleDevice) { + options.legend.position = 'none'; + options.vAxes[0].title = null; + options.chartArea.left = 40; + options.chartArea.height = '80%'; + options.chartArea.top = 5; + options.enableInteractivity = false; + } + + // Get a unique list of times of state changes for all the device + // for a particular unit of measureent. + var times = _.pluck(_.flatten(deviceStates), "lastChangedAsDate"); + times = _.uniq(times, function(e) { + return e.getTime(); + }); + + times = _.sortBy(times, function(o) { return o; }); + + var data = []; + var empty = new Array(deviceStates.length); + for(var i = 0; i < empty.length; i++) { + empty[i] = 0; + } + + var timeIndex = 1; + var endDate = new Date(); + var prevDate = times[0]; + + for(i = 0; i < times.length; i++) { + var currentDate = new Date(prevDate); + + // because we only have state changes we add an extra point at the same time + // that holds the previous state which makes the line display correctly + var beforePoint = new Date(times[i]); + data.push([beforePoint].concat(empty)); + + data.push([times[i]].concat(empty)); + prevDate = times[i]; + timeIndex++; + } + data.push([endDate].concat(empty)); + + + var deviceCount = 0; + deviceStates.forEach(function(device) { + var attributes = device[device.length - 1].attributes; + dataTable.addColumn('number', attributes.friendly_name); + + var currentState = 0; + var previousState = 0; + var lastIndex = 0; + var count = 0; + var prevTime = data[0][0]; + device.forEach(function(state) { + + currentState = state.state; + var start = state.lastChangedAsDate; + if(state.state == 'None') { + currentState = previousState; + } + for(var i = lastIndex; i < data.length; i++) { + data[i][1 + deviceCount] = parseFloat(previousState); + // this is where data gets filled in for each time for the particular device + // because for each time two entries were create we fill the first one with the + // previous value and the second one with the new value + if(prevTime.getTime() == data[i][0].getTime() && data[i][0].getTime() == start.getTime()) { + data[i][1 + deviceCount] = parseFloat(currentState); + lastIndex = i; + prevTime = data[i][0]; + break; + } + prevTime = data[i][0]; + } + + previousState = currentState; + + count++; + }.bind(this)); + + //fill in the rest of the Array + for(var i = lastIndex; i < data.length; i++) { + data[i][1 + deviceCount] = parseFloat(previousState); + } + + deviceCount++; + }.bind(this)); + + dataTable.addRows(data); + chart.draw(dataTable, options); + }, + }); +})(); + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/demo/index.html b/demo/index.html index af9602c87d..8e8893470b 100644 --- a/demo/index.html +++ b/demo/index.html @@ -1,24 +1,34 @@ - -Home Assistant - - - - - - - -

    Initializing Home Assistant

    - - - - - + + + Home Assistant + + + + + + + + + + + + + + +

    Initializing Home Assistant

    + + + + + diff --git a/demo/manifest.json b/demo/manifest.json new file mode 100644 index 0000000000..69143ce517 --- /dev/null +++ b/demo/manifest.json @@ -0,0 +1,14 @@ +{ + "name": "Home Assistant", + "short_name": "Assistant", + "start_url": "/", + "display": "standalone", + "icons": [ + { + "src": "\/static\/favicon-192x192.png", + "sizes": "192x192", + "type": "image\/png", + "density": "4.0" + } + ] +} diff --git a/demo/webcomponents-lite.min.js b/demo/webcomponents-lite.min.js new file mode 100644 index 0000000000..abb6ff6700 --- /dev/null +++ b/demo/webcomponents-lite.min.js @@ -0,0 +1,13 @@ +/** + * @license + * Copyright (c) 2014 The Polymer Project Authors. All rights reserved. + * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt + * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt + * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt + * Code distributed by Google as part of the polymer project is also + * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt + */ +// @version 0.7.5 +window.WebComponents=window.WebComponents||{},function(e){var t=e.flags||{},n="webcomponents-lite.js",r=document.querySelector('script[src*="'+n+'"]');if(!t.noOpts){if(location.search.slice(1).split("&").forEach(function(e){var n,r=e.split("=");r[0]&&(n=r[0].match(/wc-(.+)/))&&(t[n[1]]=r[1]||!0)}),r)for(var o,i=0;o=r.attributes[i];i++)"src"!==o.name&&(t[o.name]=o.value||!0);if(t.log){var a=t.log.split(",");t.log={},a.forEach(function(e){t.log[e]=!0})}else t.log={}}t.shadow=t.shadow||t.shadowdom||t.polyfill,t.shadow="native"===t.shadow?!1:t.shadow||!HTMLElement.prototype.createShadowRoot,t.register&&(window.CustomElements=window.CustomElements||{flags:{}},window.CustomElements.flags.register=t.register),e.flags=t}(window.WebComponents),function(e){"use strict";function t(e){return void 0!==h[e]}function n(){s.call(this),this._isInvalid=!0}function r(e){return""==e&&n.call(this),e.toLowerCase()}function o(e){var t=e.charCodeAt(0);return t>32&&127>t&&-1==[34,35,60,62,63,96].indexOf(t)?e:encodeURIComponent(e)}function i(e){var t=e.charCodeAt(0);return t>32&&127>t&&-1==[34,35,60,62,96].indexOf(t)?e:encodeURIComponent(e)}function a(e,a,s){function c(e){b.push(e)}var d=a||"scheme start",u=0,l="",_=!1,w=!1,b=[];e:for(;(e[u-1]!=f||0==u)&&!this._isInvalid;){var g=e[u];switch(d){case"scheme start":if(!g||!m.test(g)){if(a){c("Invalid scheme.");break e}l="",d="no scheme";continue}l+=g.toLowerCase(),d="scheme";break;case"scheme":if(g&&v.test(g))l+=g.toLowerCase();else{if(":"!=g){if(a){if(f==g)break e;c("Code point not allowed in scheme: "+g);break e}l="",u=0,d="no scheme";continue}if(this._scheme=l,l="",a)break e;t(this._scheme)&&(this._isRelative=!0),d="file"==this._scheme?"relative":this._isRelative&&s&&s._scheme==this._scheme?"relative or authority":this._isRelative?"authority first slash":"scheme data"}break;case"scheme data":"?"==g?(this._query="?",d="query"):"#"==g?(this._fragment="#",d="fragment"):f!=g&&" "!=g&&"\n"!=g&&"\r"!=g&&(this._schemeData+=o(g));break;case"no scheme":if(s&&t(s._scheme)){d="relative";continue}c("Missing scheme."),n.call(this);break;case"relative or authority":if("/"!=g||"/"!=e[u+1]){c("Expected /, got: "+g),d="relative";continue}d="authority ignore slashes";break;case"relative":if(this._isRelative=!0,"file"!=this._scheme&&(this._scheme=s._scheme),f==g){this._host=s._host,this._port=s._port,this._path=s._path.slice(),this._query=s._query,this._username=s._username,this._password=s._password;break e}if("/"==g||"\\"==g)"\\"==g&&c("\\ is an invalid code point."),d="relative slash";else if("?"==g)this._host=s._host,this._port=s._port,this._path=s._path.slice(),this._query="?",this._username=s._username,this._password=s._password,d="query";else{if("#"!=g){var y=e[u+1],E=e[u+2];("file"!=this._scheme||!m.test(g)||":"!=y&&"|"!=y||f!=E&&"/"!=E&&"\\"!=E&&"?"!=E&&"#"!=E)&&(this._host=s._host,this._port=s._port,this._username=s._username,this._password=s._password,this._path=s._path.slice(),this._path.pop()),d="relative path";continue}this._host=s._host,this._port=s._port,this._path=s._path.slice(),this._query=s._query,this._fragment="#",this._username=s._username,this._password=s._password,d="fragment"}break;case"relative slash":if("/"!=g&&"\\"!=g){"file"!=this._scheme&&(this._host=s._host,this._port=s._port,this._username=s._username,this._password=s._password),d="relative path";continue}"\\"==g&&c("\\ is an invalid code point."),d="file"==this._scheme?"file host":"authority ignore slashes";break;case"authority first slash":if("/"!=g){c("Expected '/', got: "+g),d="authority ignore slashes";continue}d="authority second slash";break;case"authority second slash":if(d="authority ignore slashes","/"!=g){c("Expected '/', got: "+g);continue}break;case"authority ignore slashes":if("/"!=g&&"\\"!=g){d="authority";continue}c("Expected authority, got: "+g);break;case"authority":if("@"==g){_&&(c("@ already seen."),l+="%40"),_=!0;for(var L=0;L>>0)+(t++ +"__")};n.prototype={set:function(t,n){var r=t[this.name];return r&&r[0]===t?r[1]=n:e(t,this.name,{value:[t,n],writable:!0}),this},get:function(e){var t;return(t=e[this.name])&&t[0]===e?t[1]:void 0},"delete":function(e){var t=e[this.name];return t&&t[0]===e?(t[0]=t[1]=void 0,!0):!1},has:function(e){var t=e[this.name];return t?t[0]===e:!1}},window.WeakMap=n}(),function(e){function t(e){g.push(e),b||(b=!0,m(r))}function n(e){return window.ShadowDOMPolyfill&&window.ShadowDOMPolyfill.wrapIfNeeded(e)||e}function r(){b=!1;var e=g;g=[],e.sort(function(e,t){return e.uid_-t.uid_});var t=!1;e.forEach(function(e){var n=e.takeRecords();o(e),n.length&&(e.callback_(n,e),t=!0)}),t&&r()}function o(e){e.nodes_.forEach(function(t){var n=v.get(t);n&&n.forEach(function(t){t.observer===e&&t.removeTransientObservers()})})}function i(e,t){for(var n=e;n;n=n.parentNode){var r=v.get(n);if(r)for(var o=0;o0){var o=n[r-1],i=p(o,e);if(i)return void(n[r-1]=i)}else t(this.observer);n[r]=e},addListeners:function(){this.addListeners_(this.target)},addListeners_:function(e){var t=this.options;t.attributes&&e.addEventListener("DOMAttrModified",this,!0),t.characterData&&e.addEventListener("DOMCharacterDataModified",this,!0),t.childList&&e.addEventListener("DOMNodeInserted",this,!0),(t.childList||t.subtree)&&e.addEventListener("DOMNodeRemoved",this,!0)},removeListeners:function(){this.removeListeners_(this.target)},removeListeners_:function(e){var t=this.options;t.attributes&&e.removeEventListener("DOMAttrModified",this,!0),t.characterData&&e.removeEventListener("DOMCharacterDataModified",this,!0),t.childList&&e.removeEventListener("DOMNodeInserted",this,!0),(t.childList||t.subtree)&&e.removeEventListener("DOMNodeRemoved",this,!0)},addTransientObserver:function(e){if(e!==this.target){this.addListeners_(e),this.transientObservedNodes.push(e);var t=v.get(e);t||v.set(e,t=[]),t.push(this)}},removeTransientObservers:function(){var e=this.transientObservedNodes;this.transientObservedNodes=[],e.forEach(function(e){this.removeListeners_(e);for(var t=v.get(e),n=0;np&&(h=s[p]);p++)a(h)?(c++,n()):(h.addEventListener("load",r),h.addEventListener("error",i));else n()}function a(e){return l?e.__loaded||e["import"]&&"loading"!==e["import"].readyState:e.__importParsed}function s(e){for(var t,n=0,r=e.length;r>n&&(t=e[n]);n++)c(t)&&d(t)}function c(e){return"link"===e.localName&&"import"===e.rel}function d(e){var t=e["import"];t?o({target:e}):(e.addEventListener("load",o),e.addEventListener("error",o))}var u="import",l=Boolean(u in document.createElement("link")),h=Boolean(window.ShadowDOMPolyfill),p=function(e){return h?window.ShadowDOMPolyfill.wrapIfNeeded(e):e},f=p(document),m={get:function(){var e=window.HTMLImports.currentScript||document.currentScript||("complete"!==document.readyState?document.scripts[document.scripts.length-1]:null);return p(e)},configurable:!0};Object.defineProperty(document,"_currentScript",m),Object.defineProperty(f,"_currentScript",m);var v=/Trident/.test(navigator.userAgent),_=v?"complete":"interactive",w="readystatechange";l&&(new MutationObserver(function(e){for(var t,n=0,r=e.length;r>n&&(t=e[n]);n++)t.addedNodes&&s(t.addedNodes)}).observe(document.head,{childList:!0}),function(){if("loading"===document.readyState)for(var e,t=document.querySelectorAll("link[rel=import]"),n=0,r=t.length;r>n&&(e=t[n]);n++)d(e)}()),t(function(e){window.HTMLImports.ready=!0,window.HTMLImports.readyTime=(new Date).getTime();var t=f.createEvent("CustomEvent");t.initCustomEvent("HTMLImportsLoaded",!0,!0,e),f.dispatchEvent(t)}),e.IMPORT_LINK_TYPE=u,e.useNative=l,e.rootDocument=f,e.whenReady=t,e.isIE=v}(window.HTMLImports),function(e){var t=[],n=function(e){t.push(e)},r=function(){t.forEach(function(t){t(e)})};e.addModule=n,e.initializeModules=r}(window.HTMLImports),window.HTMLImports.addModule(function(e){var t=/(url\()([^)]*)(\))/g,n=/(@import[\s]+(?!url\())([^;]*)(;)/g,r={resolveUrlsInStyle:function(e,t){var n=e.ownerDocument,r=n.createElement("a");return e.textContent=this.resolveUrlsInCssText(e.textContent,t,r),e},resolveUrlsInCssText:function(e,r,o){var i=this.replaceUrls(e,o,r,t);return i=this.replaceUrls(i,o,r,n)},replaceUrls:function(e,t,n,r){return e.replace(r,function(e,r,o,i){var a=o.replace(/["']/g,"");return n&&(a=new URL(a,n).href),t.href=a,a=t.href,r+"'"+a+"'"+i})}};e.path=r}),window.HTMLImports.addModule(function(e){var t={async:!0,ok:function(e){return e.status>=200&&e.status<300||304===e.status||0===e.status},load:function(n,r,o){var i=new XMLHttpRequest;return(e.flags.debug||e.flags.bust)&&(n+="?"+Math.random()),i.open("GET",n,t.async),i.addEventListener("readystatechange",function(e){if(4===i.readyState){var n=i.getResponseHeader("Location"),a=null;if(n)var a="/"===n.substr(0,1)?location.origin+n:n;r.call(o,!t.ok(i)&&i,i.response||i.responseText,a)}}),i.send(),i},loadDocument:function(e,t,n){this.load(e,t,n).responseType="document"}};e.xhr=t}),window.HTMLImports.addModule(function(e){var t=e.xhr,n=e.flags,r=function(e,t){this.cache={},this.onload=e,this.oncomplete=t,this.inflight=0,this.pending={}};r.prototype={addNodes:function(e){this.inflight+=e.length;for(var t,n=0,r=e.length;r>n&&(t=e[n]);n++)this.require(t);this.checkDone()},addNode:function(e){this.inflight++,this.require(e),this.checkDone()},require:function(e){var t=e.src||e.href;e.__nodeUrl=t,this.dedupe(t,e)||this.fetch(t,e)},dedupe:function(e,t){if(this.pending[e])return this.pending[e].push(t),!0;return this.cache[e]?(this.onload(e,t,this.cache[e]),this.tail(),!0):(this.pending[e]=[t],!1)},fetch:function(e,r){if(n.load&&console.log("fetch",e,r),e)if(e.match(/^data:/)){var o=e.split(","),i=o[0],a=o[1];a=i.indexOf(";base64")>-1?atob(a):decodeURIComponent(a),setTimeout(function(){this.receive(e,r,null,a)}.bind(this),0)}else{var s=function(t,n,o){this.receive(e,r,t,n,o)}.bind(this);t.load(e,s)}else setTimeout(function(){this.receive(e,r,{error:"href must be specified"},null)}.bind(this),0)},receive:function(e,t,n,r,o){this.cache[e]=r;for(var i,a=this.pending[e],s=0,c=a.length;c>s&&(i=a[s]);s++)this.onload(e,i,r,n,o),this.tail();this.pending[e]=null},tail:function(){--this.inflight,this.checkDone()},checkDone:function(){this.inflight||this.oncomplete()}},e.Loader=r}),window.HTMLImports.addModule(function(e){var t=function(e){this.addCallback=e,this.mo=new MutationObserver(this.handler.bind(this))};t.prototype={handler:function(e){for(var t,n=0,r=e.length;r>n&&(t=e[n]);n++)"childList"===t.type&&t.addedNodes.length&&this.addedNodes(t.addedNodes)},addedNodes:function(e){this.addCallback&&this.addCallback(e);for(var t,n=0,r=e.length;r>n&&(t=e[n]);n++)t.children&&t.children.length&&this.addedNodes(t.children)},observe:function(e){this.mo.observe(e,{childList:!0,subtree:!0})}},e.Observer=t}),window.HTMLImports.addModule(function(e){function t(e){return"link"===e.localName&&e.rel===u}function n(e){var t=r(e);return"data:text/javascript;charset=utf-8,"+encodeURIComponent(t)}function r(e){return e.textContent+o(e)}function o(e){var t=e.ownerDocument;t.__importedScripts=t.__importedScripts||0;var n=e.ownerDocument.baseURI,r=t.__importedScripts?"-"+t.__importedScripts:"";return t.__importedScripts++,"\n//# sourceURL="+n+r+".js\n"}function i(e){var t=e.ownerDocument.createElement("style");return t.textContent=e.textContent,a.resolveUrlsInStyle(t),t}var a=e.path,s=e.rootDocument,c=e.flags,d=e.isIE,u=e.IMPORT_LINK_TYPE,l="link[rel="+u+"]",h={documentSelectors:l,importsSelectors:[l,"link[rel=stylesheet]","style","script:not([type])",'script[type="application/javascript"]','script[type="text/javascript"]'].join(","),map:{link:"parseLink",script:"parseScript",style:"parseStyle"},dynamicElements:[],parseNext:function(){var e=this.nextToParse();e&&this.parse(e)},parse:function(e){if(this.isParsed(e))return void(c.parse&&console.log("[%s] is already parsed",e.localName));var t=this[this.map[e.localName]];t&&(this.markParsing(e),t.call(this,e))},parseDynamic:function(e,t){this.dynamicElements.push(e),t||this.parseNext()},markParsing:function(e){c.parse&&console.log("parsing",e),this.parsingElement=e},markParsingComplete:function(e){e.__importParsed=!0,this.markDynamicParsingComplete(e),e.__importElement&&(e.__importElement.__importParsed=!0,this.markDynamicParsingComplete(e.__importElement)),this.parsingElement=null,c.parse&&console.log("completed",e)},markDynamicParsingComplete:function(e){var t=this.dynamicElements.indexOf(e);t>=0&&this.dynamicElements.splice(t,1)},parseImport:function(e){if(window.HTMLImports.__importsParsingHook&&window.HTMLImports.__importsParsingHook(e),e["import"]&&(e["import"].__importParsed=!0),this.markParsingComplete(e),e.dispatchEvent(e.__resource&&!e.__error?new CustomEvent("load",{bubbles:!1}):new CustomEvent("error",{bubbles:!1})),e.__pending)for(var t;e.__pending.length;)t=e.__pending.shift(),t&&t({target:e});this.parseNext()},parseLink:function(e){t(e)?this.parseImport(e):(e.href=e.href,this.parseGeneric(e))},parseStyle:function(e){var t=e;e=i(e),t.__appliedElement=e,e.__importElement=t,this.parseGeneric(e)},parseGeneric:function(e){this.trackElement(e),this.addElementToDocument(e)},rootImportForElement:function(e){for(var t=e;t.ownerDocument.__importLink;)t=t.ownerDocument.__importLink;return t},addElementToDocument:function(e){var t=this.rootImportForElement(e.__importElement||e);t.parentNode.insertBefore(e,t)},trackElement:function(e,t){var n=this,r=function(r){t&&t(r),n.markParsingComplete(e),n.parseNext()};if(e.addEventListener("load",r),e.addEventListener("error",r),d&&"style"===e.localName){var o=!1;if(-1==e.textContent.indexOf("@import"))o=!0;else if(e.sheet){o=!0;for(var i,a=e.sheet.cssRules,s=a?a.length:0,c=0;s>c&&(i=a[c]);c++)i.type===CSSRule.IMPORT_RULE&&(o=o&&Boolean(i.styleSheet))}o&&setTimeout(function(){e.dispatchEvent(new CustomEvent("load",{bubbles:!1}))})}},parseScript:function(t){var r=document.createElement("script");r.__importElement=t,r.src=t.src?t.src:n(t),e.currentScript=t,this.trackElement(r,function(t){r.parentNode.removeChild(r),e.currentScript=null}),this.addElementToDocument(r)},nextToParse:function(){return this._mayParse=[],!this.parsingElement&&(this.nextToParseInDoc(s)||this.nextToParseDynamic())},nextToParseInDoc:function(e,n){if(e&&this._mayParse.indexOf(e)<0){this._mayParse.push(e);for(var r,o=e.querySelectorAll(this.parseSelectorsForNode(e)),i=0,a=o.length;a>i&&(r=o[i]);i++)if(!this.isParsed(r))return this.hasResource(r)?t(r)?this.nextToParseInDoc(r["import"],r):r:void 0}return n},nextToParseDynamic:function(){return this.dynamicElements[0]},parseSelectorsForNode:function(e){var t=e.ownerDocument||e;return t===s?this.documentSelectors:this.importsSelectors},isParsed:function(e){return e.__importParsed},needsDynamicParsing:function(e){return this.dynamicElements.indexOf(e)>=0},hasResource:function(e){return t(e)&&void 0===e["import"]?!1:!0}};e.parser=h,e.IMPORT_SELECTOR=l}),window.HTMLImports.addModule(function(e){function t(e){return n(e,a)}function n(e,t){return"link"===e.localName&&e.getAttribute("rel")===t}function r(e){return!!Object.getOwnPropertyDescriptor(e,"baseURI")}function o(e,t){var n=document.implementation.createHTMLDocument(a);n._URL=t;var o=n.createElement("base");o.setAttribute("href",t),n.baseURI||r(n)||Object.defineProperty(n,"baseURI",{value:t});var i=n.createElement("meta");return i.setAttribute("charset","utf-8"),n.head.appendChild(i),n.head.appendChild(o),n.body.innerHTML=e,window.HTMLTemplateElement&&HTMLTemplateElement.bootstrap&&HTMLTemplateElement.bootstrap(n),n}var i=e.flags,a=e.IMPORT_LINK_TYPE,s=e.IMPORT_SELECTOR,c=e.rootDocument,d=e.Loader,u=e.Observer,l=e.parser,h={documents:{},documentPreloadSelectors:s,importsPreloadSelectors:[s].join(","),loadNode:function(e){p.addNode(e)},loadSubtree:function(e){var t=this.marshalNodes(e);p.addNodes(t)},marshalNodes:function(e){return e.querySelectorAll(this.loadSelectorsForNode(e))},loadSelectorsForNode:function(e){var t=e.ownerDocument||e;return t===c?this.documentPreloadSelectors:this.importsPreloadSelectors},loaded:function(e,n,r,a,s){if(i.load&&console.log("loaded",e,n),n.__resource=r,n.__error=a,t(n)){var c=this.documents[e];void 0===c&&(c=a?null:o(r,s||e),c&&(c.__importLink=n,this.bootDocument(c)),this.documents[e]=c),n["import"]=c}l.parseNext()},bootDocument:function(e){this.loadSubtree(e),this.observer.observe(e),l.parseNext()},loadedAll:function(){l.parseNext()}},p=new d(h.loaded.bind(h),h.loadedAll.bind(h));if(h.observer=new u,!document.baseURI){var f={get:function(){var e=document.querySelector("base");return e?e.href:window.location.href},configurable:!0};Object.defineProperty(document,"baseURI",f),Object.defineProperty(c,"baseURI",f)}e.importer=h,e.importLoader=p}),window.HTMLImports.addModule(function(e){var t=e.parser,n=e.importer,r={added:function(e){for(var r,o,i,a,s=0,c=e.length;c>s&&(a=e[s]);s++)r||(r=a.ownerDocument,o=t.isParsed(r)),i=this.shouldLoadNode(a),i&&n.loadNode(a),this.shouldParseNode(a)&&o&&t.parseDynamic(a,i)},shouldLoadNode:function(e){return 1===e.nodeType&&o.call(e,n.loadSelectorsForNode(e))},shouldParseNode:function(e){return 1===e.nodeType&&o.call(e,t.parseSelectorsForNode(e))}};n.observer.addCallback=r.added.bind(r);var o=HTMLElement.prototype.matches||HTMLElement.prototype.matchesSelector||HTMLElement.prototype.webkitMatchesSelector||HTMLElement.prototype.mozMatchesSelector||HTMLElement.prototype.msMatchesSelector}),function(e){function t(){window.HTMLImports.importer.bootDocument(o)}var n=e.initializeModules,r=e.isIE;if(!e.useNative){r&&"function"!=typeof window.CustomEvent&&(window.CustomEvent=function(e,t){t=t||{};var n=document.createEvent("CustomEvent");return n.initCustomEvent(e,Boolean(t.bubbles),Boolean(t.cancelable),t.detail),n.preventDefault=function(){Object.defineProperty(this,"defaultPrevented",{get:function(){return!0}})},n},window.CustomEvent.prototype=window.Event.prototype),n();var o=e.rootDocument;"complete"===document.readyState||"interactive"===document.readyState&&!window.attachEvent?t():document.addEventListener("DOMContentLoaded",t)}}(window.HTMLImports),window.CustomElements=window.CustomElements||{flags:{}},function(e){var t=e.flags,n=[],r=function(e){n.push(e)},o=function(){n.forEach(function(t){t(e)})};e.addModule=r,e.initializeModules=o,e.hasNative=Boolean(document.registerElement),e.useNative=!t.register&&e.hasNative&&!window.ShadowDOMPolyfill&&(!window.HTMLImports||window.HTMLImports.useNative)}(window.CustomElements),window.CustomElements.addModule(function(e){function t(e,t){n(e,function(e){return t(e)?!0:void r(e,t)}),r(e,t)}function n(e,t,r){var o=e.firstElementChild;if(!o)for(o=e.firstChild;o&&o.nodeType!==Node.ELEMENT_NODE;)o=o.nextSibling;for(;o;)t(o,r)!==!0&&n(o,t,r),o=o.nextElementSibling;return null}function r(e,n){for(var r=e.shadowRoot;r;)t(r,n),r=r.olderShadowRoot}function o(e,t){i(e,t,[])}function i(e,t,n){if(e=window.wrap(e),!(n.indexOf(e)>=0)){n.push(e);for(var r,o=e.querySelectorAll("link[rel="+a+"]"),s=0,c=o.length;c>s&&(r=o[s]);s++)r["import"]&&i(r["import"],t,n);t(e)}}var a=window.HTMLImports?window.HTMLImports.IMPORT_LINK_TYPE:"none";e.forDocumentTree=o,e.forSubtree=t}),window.CustomElements.addModule(function(e){function t(e){return n(e)||r(e)}function n(t){return e.upgrade(t)?!0:void s(t)}function r(e){g(e,function(e){return n(e)?!0:void 0})}function o(e){s(e),h(e)&&g(e,function(e){s(e)})}function i(e){M.push(e),L||(L=!0,setTimeout(a))}function a(){L=!1;for(var e,t=M,n=0,r=t.length;r>n&&(e=t[n]);n++)e();M=[]}function s(e){E?i(function(){c(e)}):c(e)}function c(e){e.__upgraded__&&(e.attachedCallback||e.detachedCallback)&&!e.__attached&&h(e)&&(e.__attached=!0,e.attachedCallback&&e.attachedCallback())}function d(e){u(e),g(e,function(e){u(e)})}function u(e){E?i(function(){l(e)}):l(e)}function l(e){e.__upgraded__&&(e.attachedCallback||e.detachedCallback)&&e.__attached&&!h(e)&&(e.__attached=!1,e.detachedCallback&&e.detachedCallback())}function h(e){for(var t=e,n=wrap(document);t;){if(t==n)return!0;t=t.parentNode||t.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&t.host}}function p(e){if(e.shadowRoot&&!e.shadowRoot.__watched){b.dom&&console.log("watching shadow-root for: ",e.localName);for(var t=e.shadowRoot;t;)v(t),t=t.olderShadowRoot}}function f(e){if(b.dom){var n=e[0];if(n&&"childList"===n.type&&n.addedNodes&&n.addedNodes){for(var r=n.addedNodes[0];r&&r!==document&&!r.host;)r=r.parentNode;var o=r&&(r.URL||r._URL||r.host&&r.host.localName)||"";o=o.split("/?").shift().split("/").pop()}console.group("mutations (%d) [%s]",e.length,o||"")}e.forEach(function(e){"childList"===e.type&&(T(e.addedNodes,function(e){e.localName&&t(e)}),T(e.removedNodes,function(e){e.localName&&d(e)}))}),b.dom&&console.groupEnd()}function m(e){for(e=window.wrap(e),e||(e=window.wrap(document));e.parentNode;)e=e.parentNode;var t=e.__observer;t&&(f(t.takeRecords()),a())}function v(e){if(!e.__observer){var t=new MutationObserver(f);t.observe(e,{childList:!0,subtree:!0}),e.__observer=t}}function _(e){e=window.wrap(e),b.dom&&console.group("upgradeDocument: ",e.baseURI.split("/").pop()),t(e),v(e),b.dom&&console.groupEnd()}function w(e){y(e,_)}var b=e.flags,g=e.forSubtree,y=e.forDocumentTree,E=!window.MutationObserver||window.MutationObserver===window.JsMutationObserver;e.hasPolyfillMutations=E;var L=!1,M=[],T=Array.prototype.forEach.call.bind(Array.prototype.forEach),N=Element.prototype.createShadowRoot;N&&(Element.prototype.createShadowRoot=function(){var e=N.call(this);return window.CustomElements.watchShadow(this),e}),e.watchShadow=p,e.upgradeDocumentTree=w,e.upgradeSubtree=r,e.upgradeAll=t,e.attachedNode=o,e.takeRecords=m}),window.CustomElements.addModule(function(e){function t(t){if(!t.__upgraded__&&t.nodeType===Node.ELEMENT_NODE){var r=t.getAttribute("is"),o=e.getRegisteredDefinition(r||t.localName);if(o){if(r&&o.tag==t.localName)return n(t,o);if(!r&&!o["extends"])return n(t,o)}}}function n(t,n){return a.upgrade&&console.group("upgrade:",t.localName),n.is&&t.setAttribute("is",n.is),r(t,n),t.__upgraded__=!0,i(t),e.attachedNode(t),e.upgradeSubtree(t),a.upgrade&&console.groupEnd(),t}function r(e,t){Object.__proto__?e.__proto__=t.prototype:(o(e,t.prototype,t["native"]),e.__proto__=t.prototype)}function o(e,t,n){for(var r={},o=t;o!==n&&o!==HTMLElement.prototype;){for(var i,a=Object.getOwnPropertyNames(o),s=0;i=a[s];s++)r[i]||(Object.defineProperty(e,i,Object.getOwnPropertyDescriptor(o,i)),r[i]=1);o=Object.getPrototypeOf(o)}}function i(e){e.createdCallback&&e.createdCallback()}var a=e.flags;e.upgrade=t,e.upgradeWithDefinition=n,e.implementPrototype=r}),window.CustomElements.addModule(function(e){function t(t,r){var c=r||{};if(!t)throw new Error("document.registerElement: first argument `name` must not be empty");if(t.indexOf("-")<0)throw new Error("document.registerElement: first argument ('name') must contain a dash ('-'). Argument provided was '"+String(t)+"'.");if(o(t))throw new Error("Failed to execute 'registerElement' on 'Document': Registration failed for type '"+String(t)+"'. The type name is invalid.");if(d(t))throw new Error("DuplicateDefinitionError: a type with name '"+String(t)+"' is already registered");return c.prototype||(c.prototype=Object.create(HTMLElement.prototype)),c.__name=t.toLowerCase(),c.lifecycle=c.lifecycle||{},c.ancestry=i(c["extends"]),a(c),s(c),n(c.prototype),u(c.__name,c),c.ctor=l(c),c.ctor.prototype=c.prototype,c.prototype.constructor=c.ctor,e.ready&&_(document),c.ctor}function n(e){if(!e.setAttribute._polyfilled){var t=e.setAttribute;e.setAttribute=function(e,n){r.call(this,e,n,t)};var n=e.removeAttribute;e.removeAttribute=function(e){r.call(this,e,null,n); + +},e.setAttribute._polyfilled=!0}}function r(e,t,n){e=e.toLowerCase();var r=this.getAttribute(e);n.apply(this,arguments);var o=this.getAttribute(e);this.attributeChangedCallback&&o!==r&&this.attributeChangedCallback(e,r,o)}function o(e){for(var t=0;t=0&&g(r,HTMLElement),r)}function f(e,t){var n=e[t];e[t]=function(){var e=n.apply(this,arguments);return w(e),e}}var m,v=e.isIE11OrOlder,_=e.upgradeDocumentTree,w=e.upgradeAll,b=e.upgradeWithDefinition,g=e.implementPrototype,y=e.useNative,E=["annotation-xml","color-profile","font-face","font-face-src","font-face-uri","font-face-format","font-face-name","missing-glyph"],L={},M="http://www.w3.org/1999/xhtml",T=document.createElement.bind(document),N=document.createElementNS.bind(document);m=Object.__proto__||y?function(e,t){return e instanceof t}:function(e,t){for(var n=e;n;){if(n===t.prototype)return!0;n=n.__proto__}return!1},f(Node.prototype,"cloneNode"),f(document,"importNode"),v&&!function(){var e=document.importNode;document.importNode=function(){var t=e.apply(document,arguments);if(t.nodeType==t.DOCUMENT_FRAGMENT_NODE){var n=document.createDocumentFragment();return n.appendChild(t),n}return t}}(),document.registerElement=t,document.createElement=p,document.createElementNS=h,e.registry=L,e["instanceof"]=m,e.reservedTagList=E,e.getRegisteredDefinition=d,document.register=document.registerElement}),function(e){function t(){a(window.wrap(document)),window.HTMLImports&&(window.HTMLImports.__importsParsingHook=function(e){a(wrap(e["import"]))}),window.CustomElements.ready=!0,setTimeout(function(){window.CustomElements.readyTime=Date.now(),window.HTMLImports&&(window.CustomElements.elapsed=window.CustomElements.readyTime-window.HTMLImports.readyTime),document.dispatchEvent(new CustomEvent("WebComponentsReady",{bubbles:!0}))})}var n=e.useNative,r=e.initializeModules,o=/Trident/.test(navigator.userAgent);if(n){var i=function(){};e.watchShadow=i,e.upgrade=i,e.upgradeAll=i,e.upgradeDocumentTree=i,e.upgradeSubtree=i,e.takeRecords=i,e["instanceof"]=function(e,t){return e instanceof t}}else r();var a=e.upgradeDocumentTree;if(window.wrap||(window.ShadowDOMPolyfill?(window.wrap=window.ShadowDOMPolyfill.wrapIfNeeded,window.unwrap=window.ShadowDOMPolyfill.unwrapIfNeeded):window.wrap=window.unwrap=function(e){return e}),o&&"function"!=typeof window.CustomEvent&&(window.CustomEvent=function(e,t){t=t||{};var n=document.createEvent("CustomEvent");return n.initCustomEvent(e,Boolean(t.bubbles),Boolean(t.cancelable),t.detail),n.preventDefault=function(){Object.defineProperty(this,"defaultPrevented",{get:function(){return!0}})},n},window.CustomEvent.prototype=window.Event.prototype),"complete"===document.readyState||e.flags.eager)t();else if("interactive"!==document.readyState||window.attachEvent||window.HTMLImports&&!window.HTMLImports.ready){var s=window.HTMLImports&&!window.HTMLImports.ready?"HTMLImportsLoaded":"DOMContentLoaded";window.addEventListener(s,t)}else t();e.isIE11OrOlder=o}(window.CustomElements),"undefined"==typeof HTMLTemplateElement&&!function(){var e="template";HTMLTemplateElement=function(){},HTMLTemplateElement.prototype=Object.create(HTMLElement.prototype),HTMLTemplateElement.decorate=function(e){e.content||(e.content=e.ownerDocument.createDocumentFragment());for(var t;t=e.firstChild;)e.content.appendChild(t)},HTMLTemplateElement.bootstrap=function(t){for(var n,r=t.querySelectorAll(e),o=0,i=r.length;i>o&&(n=r[o]);o++)HTMLTemplateElement.decorate(n)},window.addEventListener("DOMContentLoaded",function(){HTMLTemplateElement.bootstrap(document)});var t=document.createElement;document.createElement=function(){"use strict";var e=t.apply(document,arguments);return"template"==e.localName&&HTMLTemplateElement.decorate(e),e}}(),function(e){var t=document.createElement("style");t.textContent="body {transition: opacity ease-in 0.2s; } \nbody[unresolved] {opacity: 0; display: block; overflow: hidden; position: relative; } \n";var n=document.querySelector("head");n.insertBefore(t,n.firstChild)}(window.WebComponents); \ No newline at end of file diff --git a/demo/webcomponents.min.js b/demo/webcomponents.min.js deleted file mode 100644 index 474305f73f..0000000000 --- a/demo/webcomponents.min.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * Copyright (c) 2014 The Polymer Project Authors. All rights reserved. - * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt - * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt - * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt - * Code distributed by Google as part of the polymer project is also - * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt - */ -// @version 0.5.5 -window.WebComponents=window.WebComponents||{},function(e){var t=e.flags||{},n="webcomponents.js",r=document.querySelector('script[src*="'+n+'"]');if(!t.noOpts){if(location.search.slice(1).split("&").forEach(function(e){e=e.split("="),e[0]&&(t[e[0]]=e[1]||!0)}),r)for(var o,i=0;o=r.attributes[i];i++)"src"!==o.name&&(t[o.name]=o.value||!0);if(t.log){var a=t.log.split(",");t.log={},a.forEach(function(e){t.log[e]=!0})}else t.log={}}t.shadow=t.shadow||t.shadowdom||t.polyfill,t.shadow="native"===t.shadow?!1:t.shadow||!HTMLElement.prototype.createShadowRoot,t.register&&(window.CustomElements=window.CustomElements||{flags:{}},window.CustomElements.flags.register=t.register),e.flags=t}(WebComponents),WebComponents.flags.shadow&&("undefined"==typeof WeakMap&&!function(){var e=Object.defineProperty,t=Date.now()%1e9,n=function(){this.name="__st"+(1e9*Math.random()>>>0)+(t++ +"__")};n.prototype={set:function(t,n){var r=t[this.name];return r&&r[0]===t?r[1]=n:e(t,this.name,{value:[t,n],writable:!0}),this},get:function(e){var t;return(t=e[this.name])&&t[0]===e?t[1]:void 0},"delete":function(e){var t=e[this.name];return t&&t[0]===e?(t[0]=t[1]=void 0,!0):!1},has:function(e){var t=e[this.name];return t?t[0]===e:!1}},window.WeakMap=n}(),window.ShadowDOMPolyfill={},function(e){"use strict";function t(){if("undefined"!=typeof chrome&&chrome.app&&chrome.app.runtime)return!1;if(navigator.getDeviceStorage)return!1;try{var e=new Function("return true;");return e()}catch(t){return!1}}function n(e){if(!e)throw new Error("Assertion failed")}function r(e,t){for(var n=W(t),r=0;rl;l++)c[l]=new Array(s),c[l][0]=l;for(var u=0;s>u;u++)c[0][u]=u;for(var l=1;a>l;l++)for(var u=1;s>u;u++)if(this.equals(e[t+u-1],r[o+l-1]))c[l][u]=c[l-1][u-1];else{var d=c[l-1][u]+1,p=c[l][u-1]+1;c[l][u]=p>d?d:p}return c},spliceOperationsFromEditDistances:function(e){for(var t=e.length-1,n=e[0].length-1,s=e[t][n],c=[];t>0||n>0;)if(0!=t)if(0!=n){var l,u=e[t-1][n-1],d=e[t-1][n],p=e[t][n-1];l=p>d?u>d?d:u:u>p?p:u,l==u?(u==s?c.push(r):(c.push(o),s=u),t--,n--):l==d?(c.push(a),t--,s=d):(c.push(i),n--,s=p)}else c.push(a),t--;else c.push(i),n--;return c.reverse(),c},calcSplices:function(e,n,s,c,l,u){var d=0,p=0,f=Math.min(s-n,u-l);if(0==n&&0==l&&(d=this.sharedPrefix(e,c,f)),s==e.length&&u==c.length&&(p=this.sharedSuffix(e,c,f-d)),n+=d,l+=d,s-=p,u-=p,s-n==0&&u-l==0)return[];if(n==s){for(var h=t(n,[],0);u>l;)h.removed.push(c[l++]);return[h]}if(l==u)return[t(n,[],s-n)];for(var m=this.spliceOperationsFromEditDistances(this.calcEditDistances(e,n,s,c,l,u)),h=void 0,w=[],v=n,g=l,b=0;br;r++)if(!this.equals(e[r],t[r]))return r;return n},sharedSuffix:function(e,t,n){for(var r=e.length,o=t.length,i=0;n>i&&this.equals(e[--r],t[--o]);)i++;return i},calculateSplices:function(e,t){return this.calcSplices(e,0,e.length,t,0,t.length)},equals:function(e,t){return e===t}},e.ArraySplice=n}(window.ShadowDOMPolyfill),function(e){"use strict";function t(){a=!1;var e=i.slice(0);i=[];for(var t=0;t0){for(var u=0;u0&&r.length>0;){var i=n.pop(),a=r.pop();if(i!==a)break;o=i}return o}function u(e,t,n){t instanceof G.Window&&(t=t.document);var o,i=k(t),a=k(n),s=r(n,e),o=l(i,a);o||(o=a.root);for(var c=o;c;c=c.parent)for(var u=0;u0;i--)if(!g(t[i],e,o,t,r))return!1;return!0}function w(e,t,n,r){var o=it,i=t[0]||n;return g(i,e,o,t,r)}function v(e,t,n,r){for(var o=at,i=1;i0&&g(n,e,o,t,r)}function g(e,t,n,r,o){var i=z.get(e);if(!i)return!0;var a=o||s(r,e);if(a===e){if(n===ot)return!0;n===at&&(n=it)}else if(n===at&&!t.bubbles)return!0;if("relatedTarget"in t){var c=q(t),l=c.relatedTarget;if(l){if(l instanceof Object&&l.addEventListener){var d=V(l),p=u(t,e,d);if(p===a)return!0}else p=null;J.set(t,p)}}Z.set(t,n);var f=t.type,h=!1;X.set(t,a),$.set(t,e),i.depth++;for(var m=0,w=i.length;w>m;m++){var v=i[m];if(v.removed)h=!0;else if(!(v.type!==f||!v.capture&&n===ot||v.capture&&n===at))try{if("function"==typeof v.handler?v.handler.call(e,t):v.handler.handleEvent(t),et.get(t))return!1}catch(g){I||(I=g)}}if(i.depth--,h&&0===i.depth){var b=i.slice();i.length=0;for(var m=0;mr;r++)t[r]=a(e[r]);return t.length=o,t}function o(e,t){e.prototype[t]=function(){return r(i(this)[t].apply(i(this),arguments))}}var i=e.unsafeUnwrap,a=e.wrap,s={enumerable:!1};n.prototype={item:function(e){return this[e]}},t(n.prototype,"item"),e.wrappers.NodeList=n,e.addWrapNodeListMethod=o,e.wrapNodeList=r}(window.ShadowDOMPolyfill),function(e){"use strict";e.wrapHTMLCollection=e.wrapNodeList,e.wrappers.HTMLCollection=e.wrappers.NodeList}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){L(e instanceof S)}function n(e){var t=new M;return t[0]=e,t.length=1,t}function r(e,t,n){C(t,"childList",{removedNodes:n,previousSibling:e.previousSibling,nextSibling:e.nextSibling})}function o(e,t){C(e,"childList",{removedNodes:t})}function i(e,t,r,o){if(e instanceof DocumentFragment){var i=s(e);B=!0;for(var a=i.length-1;a>=0;a--)e.removeChild(i[a]),i[a].parentNode_=t;B=!1;for(var a=0;ao;o++)r.appendChild(I(t[o]));return r}function w(e){if(void 0!==e.firstChild_)for(var t=e.firstChild_;t;){var n=t;t=t.nextSibling_,n.parentNode_=n.previousSibling_=n.nextSibling_=void 0}e.firstChild_=e.lastChild_=void 0}function v(e){if(e.invalidateShadowRenderer()){for(var t=e.firstChild;t;){L(t.parentNode===e);var n=t.nextSibling,r=I(t),o=r.parentNode;o&&Y.call(o,r),t.previousSibling_=t.nextSibling_=t.parentNode_=null,t=n}e.firstChild_=e.lastChild_=null}else for(var n,i=I(e),a=i.firstChild;a;)n=a.nextSibling,Y.call(i,a),a=n}function g(e){var t=e.parentNode;return t&&t.invalidateShadowRenderer()}function b(e){for(var t,n=0;ns;s++)i=b(t[s]),!o&&(a=v(i).root)&&a instanceof e.wrappers.ShadowRoot||(r[n++]=i);return n}function n(e){return String(e).replace(/\/deep\/|::shadow/g," ")}function r(e){return String(e).replace(/:host\(([^\s]+)\)/g,"$1").replace(/([^\s]):host/g,"$1").replace(":host","*").replace(/\^|\/shadow\/|\/shadow-deep\/|::shadow|\/deep\/|::content/g," ")}function o(e,t){for(var n,r=e.firstElementChild;r;){if(r.matches(t))return r;if(n=o(r,t))return n;r=r.nextElementSibling}return null}function i(e,t){return e.matches(t)}function a(e,t,n){var r=e.localName;return r===t||r===n&&e.namespaceURI===D}function s(){return!0}function c(e,t,n){return e.localName===n}function l(e,t){return e.namespaceURI===t}function u(e,t,n){return e.namespaceURI===t&&e.localName===n}function d(e,t,n,r,o,i){for(var a=e.firstElementChild;a;)r(a,o,i)&&(n[t++]=a),t=d(a,t,n,r,o,i),a=a.nextElementSibling;return t}function p(n,r,o,i,a){var s,c=g(this),l=v(this).root;if(l instanceof e.wrappers.ShadowRoot)return d(this,r,o,n,i,null);if(c instanceof C)s=T.call(c,i);else{if(!(c instanceof N))return d(this,r,o,n,i,null);s=S.call(c,i)}return t(s,r,o,a)}function f(n,r,o,i,a){var s,c=g(this),l=v(this).root;if(l instanceof e.wrappers.ShadowRoot)return d(this,r,o,n,i,a);if(c instanceof C)s=_.call(c,i,a);else{if(!(c instanceof N))return d(this,r,o,n,i,a);s=M.call(c,i,a)}return t(s,r,o,!1)}function h(n,r,o,i,a){var s,c=g(this),l=v(this).root;if(l instanceof e.wrappers.ShadowRoot)return d(this,r,o,n,i,a);if(c instanceof C)s=O.call(c,i,a);else{if(!(c instanceof N))return d(this,r,o,n,i,a);s=L.call(c,i,a)}return t(s,r,o,!1)}var m=e.wrappers.HTMLCollection,w=e.wrappers.NodeList,v=e.getTreeScope,g=e.unsafeUnwrap,b=e.wrap,y=document.querySelector,E=document.documentElement.querySelector,S=document.querySelectorAll,T=document.documentElement.querySelectorAll,M=document.getElementsByTagName,_=document.documentElement.getElementsByTagName,L=document.getElementsByTagNameNS,O=document.documentElement.getElementsByTagNameNS,C=window.Element,N=window.HTMLDocument||window.Document,D="http://www.w3.org/1999/xhtml",j={querySelector:function(t){var r=n(t),i=r!==t;t=r;var a,s=g(this),c=v(this).root;if(c instanceof e.wrappers.ShadowRoot)return o(this,t);if(s instanceof C)a=b(E.call(s,t));else{if(!(s instanceof N))return o(this,t);a=b(y.call(s,t))}return a&&!i&&(c=v(a).root)&&c instanceof e.wrappers.ShadowRoot?o(this,t):a},querySelectorAll:function(e){var t=n(e),r=t!==e;e=t;var o=new w;return o.length=p.call(this,i,0,o,e,r),o -}},H={matches:function(t){return t=r(t),e.originalMatches.call(g(this),t)}},x={getElementsByTagName:function(e){var t=new m,n="*"===e?s:a;return t.length=f.call(this,n,0,t,e,e.toLowerCase()),t},getElementsByClassName:function(e){return this.querySelectorAll("."+e)},getElementsByTagNameNS:function(e,t){var n=new m,r=null;return r="*"===e?"*"===t?s:c:"*"===t?l:u,n.length=h.call(this,r,0,n,e||null,t),n}};e.GetElementsByInterface=x,e.SelectorsInterface=j,e.MatchesInterface=H}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){for(;e&&e.nodeType!==Node.ELEMENT_NODE;)e=e.nextSibling;return e}function n(e){for(;e&&e.nodeType!==Node.ELEMENT_NODE;)e=e.previousSibling;return e}var r=e.wrappers.NodeList,o={get firstElementChild(){return t(this.firstChild)},get lastElementChild(){return n(this.lastChild)},get childElementCount(){for(var e=0,t=this.firstElementChild;t;t=t.nextElementSibling)e++;return e},get children(){for(var e=new r,t=0,n=this.firstElementChild;n;n=n.nextElementSibling)e[t++]=n;return e.length=t,e},remove:function(){var e=this.parentNode;e&&e.removeChild(this)}},i={get nextElementSibling(){return t(this.nextSibling)},get previousElementSibling(){return n(this.previousSibling)}};e.ChildNodeInterface=i,e.ParentNodeInterface=o}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){r.call(this,e)}var n=e.ChildNodeInterface,r=e.wrappers.Node,o=e.enqueueMutation,i=e.mixin,a=e.registerWrapper,s=e.unsafeUnwrap,c=window.CharacterData;t.prototype=Object.create(r.prototype),i(t.prototype,{get textContent(){return this.data},set textContent(e){this.data=e},get data(){return s(this).data},set data(e){var t=s(this).data;o(this,"characterData",{oldValue:t}),s(this).data=e}}),i(t.prototype,n),a(c,t,document.createTextNode("")),e.wrappers.CharacterData=t}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){return e>>>0}function n(e){r.call(this,e)}var r=e.wrappers.CharacterData,o=(e.enqueueMutation,e.mixin),i=e.registerWrapper,a=window.Text;n.prototype=Object.create(r.prototype),o(n.prototype,{splitText:function(e){e=t(e);var n=this.data;if(e>n.length)throw new Error("IndexSizeError");var r=n.slice(0,e),o=n.slice(e);this.data=r;var i=this.ownerDocument.createTextNode(o);return this.parentNode&&this.parentNode.insertBefore(i,this.nextSibling),i}}),i(a,n,document.createTextNode("")),e.wrappers.Text=n}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){return i(e).getAttribute("class")}function n(e,t){a(e,"attributes",{name:"class",namespace:null,oldValue:t})}function r(t){e.invalidateRendererBasedOnAttribute(t,"class")}function o(e,o,i){var a=e.ownerElement_;if(null==a)return o.apply(e,i);var s=t(a),c=o.apply(e,i);return t(a)!==s&&(n(a,s),r(a)),c}if(!window.DOMTokenList)return void console.warn("Missing DOMTokenList prototype, please include a compatible classList polyfill such as http://goo.gl/uTcepH.");var i=e.unsafeUnwrap,a=e.enqueueMutation,s=DOMTokenList.prototype.add;DOMTokenList.prototype.add=function(){o(this,s,arguments)};var c=DOMTokenList.prototype.remove;DOMTokenList.prototype.remove=function(){o(this,c,arguments)};var l=DOMTokenList.prototype.toggle;DOMTokenList.prototype.toggle=function(){return o(this,l,arguments)}}(window.ShadowDOMPolyfill),function(e){"use strict";function t(t,n){var r=t.parentNode;if(r&&r.shadowRoot){var o=e.getRendererForHost(r);o.dependsOnAttribute(n)&&o.invalidate()}}function n(e,t,n){u(e,"attributes",{name:t,namespace:null,oldValue:n})}function r(e){a.call(this,e)}var o=e.ChildNodeInterface,i=e.GetElementsByInterface,a=e.wrappers.Node,s=e.ParentNodeInterface,c=e.SelectorsInterface,l=e.MatchesInterface,u=(e.addWrapNodeListMethod,e.enqueueMutation),d=e.mixin,p=(e.oneOf,e.registerWrapper),f=e.unsafeUnwrap,h=e.wrappers,m=window.Element,w=["matches","mozMatchesSelector","msMatchesSelector","webkitMatchesSelector"].filter(function(e){return m.prototype[e]}),v=w[0],g=m.prototype[v],b=new WeakMap;r.prototype=Object.create(a.prototype),d(r.prototype,{createShadowRoot:function(){var t=new h.ShadowRoot(this);f(this).polymerShadowRoot_=t;var n=e.getRendererForHost(this);return n.invalidate(),t},get shadowRoot(){return f(this).polymerShadowRoot_||null},setAttribute:function(e,r){var o=f(this).getAttribute(e);f(this).setAttribute(e,r),n(this,e,o),t(this,e)},removeAttribute:function(e){var r=f(this).getAttribute(e);f(this).removeAttribute(e),n(this,e,r),t(this,e)},get classList(){var e=b.get(this);if(!e){if(e=f(this).classList,!e)return;e.ownerElement_=this,b.set(this,e)}return e},get className(){return f(this).className},set className(e){this.setAttribute("class",e)},get id(){return f(this).id},set id(e){this.setAttribute("id",e)}}),w.forEach(function(e){"matches"!==e&&(r.prototype[e]=function(e){return this.matches(e)})}),m.prototype.webkitCreateShadowRoot&&(r.prototype.webkitCreateShadowRoot=r.prototype.createShadowRoot),d(r.prototype,o),d(r.prototype,i),d(r.prototype,s),d(r.prototype,c),d(r.prototype,l),p(m,r,document.createElementNS(null,"x")),e.invalidateRendererBasedOnAttribute=t,e.matchesNames=w,e.originalMatches=g,e.wrappers.Element=r}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){switch(e){case"&":return"&";case"<":return"<";case">":return">";case'"':return""";case" ":return" "}}function n(e){return e.replace(L,t)}function r(e){return e.replace(O,t)}function o(e){for(var t={},n=0;n";case Node.TEXT_NODE:var u=e.data;return t&&N[t.localName]?u:r(u);case Node.COMMENT_NODE:return"";default:throw console.error(e),new Error("not implemented")}}function a(e){e instanceof _.HTMLTemplateElement&&(e=e.content);for(var t="",n=e.firstChild;n;n=n.nextSibling)t+=i(n,e);return t}function s(e,t,n){var r=n||"div";e.textContent="";var o=T(e.ownerDocument.createElement(r));o.innerHTML=t;for(var i;i=o.firstChild;)e.appendChild(M(i))}function c(e){h.call(this,e)}function l(e,t){var n=T(e.cloneNode(!1));n.innerHTML=t;for(var r,o=T(document.createDocumentFragment());r=n.firstChild;)o.appendChild(r);return M(o)}function u(t){return function(){return e.renderAllPending(),S(this)[t]}}function d(e){m(c,e,u(e))}function p(t){Object.defineProperty(c.prototype,t,{get:u(t),set:function(n){e.renderAllPending(),S(this)[t]=n},configurable:!0,enumerable:!0})}function f(t){Object.defineProperty(c.prototype,t,{value:function(){return e.renderAllPending(),S(this)[t].apply(S(this),arguments)},configurable:!0,enumerable:!0})}var h=e.wrappers.Element,m=e.defineGetter,w=e.enqueueMutation,v=e.mixin,g=e.nodesWereAdded,b=e.nodesWereRemoved,y=e.registerWrapper,E=e.snapshotNodeList,S=e.unsafeUnwrap,T=e.unwrap,M=e.wrap,_=e.wrappers,L=/[&\u00A0"]/g,O=/[&\u00A0<>]/g,C=o(["area","base","br","col","command","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"]),N=o(["style","script","xmp","iframe","noembed","noframes","plaintext","noscript"]),D=/MSIE/.test(navigator.userAgent),j=window.HTMLElement,H=window.HTMLTemplateElement;c.prototype=Object.create(h.prototype),v(c.prototype,{get innerHTML(){return a(this)},set innerHTML(e){if(D&&N[this.localName])return void(this.textContent=e);var t=E(this.childNodes);this.invalidateShadowRenderer()?this instanceof _.HTMLTemplateElement?s(this.content,e):s(this,e,this.tagName):!H&&this instanceof _.HTMLTemplateElement?s(this.content,e):S(this).innerHTML=e;var n=E(this.childNodes);w(this,"childList",{addedNodes:n,removedNodes:t}),b(t),g(n,this)},get outerHTML(){return i(this,this.parentNode)},set outerHTML(e){var t=this.parentNode;if(t){t.invalidateShadowRenderer();var n=l(t,e);t.replaceChild(n,this)}},insertAdjacentHTML:function(e,t){var n,r;switch(String(e).toLowerCase()){case"beforebegin":n=this.parentNode,r=this;break;case"afterend":n=this.parentNode,r=this.nextSibling;break;case"afterbegin":n=this,r=this.firstChild;break;case"beforeend":n=this,r=null;break;default:return}var o=l(n,t);n.insertBefore(o,r)},get hidden(){return this.hasAttribute("hidden")},set hidden(e){e?this.setAttribute("hidden",""):this.removeAttribute("hidden")}}),["clientHeight","clientLeft","clientTop","clientWidth","offsetHeight","offsetLeft","offsetTop","offsetWidth","scrollHeight","scrollWidth"].forEach(d),["scrollLeft","scrollTop"].forEach(p),["getBoundingClientRect","getClientRects","scrollIntoView"].forEach(f),y(j,c,document.createElement("b")),e.wrappers.HTMLElement=c,e.getInnerHTML=a,e.setInnerHTML=s}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){n.call(this,e)}var n=e.wrappers.HTMLElement,r=e.mixin,o=e.registerWrapper,i=e.unsafeUnwrap,a=e.wrap,s=window.HTMLCanvasElement;t.prototype=Object.create(n.prototype),r(t.prototype,{getContext:function(){var e=i(this).getContext.apply(i(this),arguments);return e&&a(e)}}),o(s,t,document.createElement("canvas")),e.wrappers.HTMLCanvasElement=t}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){n.call(this,e)}var n=e.wrappers.HTMLElement,r=e.mixin,o=e.registerWrapper,i=window.HTMLContentElement;t.prototype=Object.create(n.prototype),r(t.prototype,{constructor:t,get select(){return this.getAttribute("select")},set select(e){this.setAttribute("select",e)},setAttribute:function(e,t){n.prototype.setAttribute.call(this,e,t),"select"===String(e).toLowerCase()&&this.invalidateShadowRenderer(!0)}}),i&&o(i,t),e.wrappers.HTMLContentElement=t}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){n.call(this,e)}var n=e.wrappers.HTMLElement,r=e.mixin,o=e.registerWrapper,i=e.wrapHTMLCollection,a=e.unwrap,s=window.HTMLFormElement;t.prototype=Object.create(n.prototype),r(t.prototype,{get elements(){return i(a(this).elements)}}),o(s,t,document.createElement("form")),e.wrappers.HTMLFormElement=t}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){r.call(this,e)}function n(e,t){if(!(this instanceof n))throw new TypeError("DOM object constructor cannot be called as a function.");var o=i(document.createElement("img"));r.call(this,o),a(o,this),void 0!==e&&(o.width=e),void 0!==t&&(o.height=t)}var r=e.wrappers.HTMLElement,o=e.registerWrapper,i=e.unwrap,a=e.rewrap,s=window.HTMLImageElement;t.prototype=Object.create(r.prototype),o(s,t,document.createElement("img")),n.prototype=t.prototype,e.wrappers.HTMLImageElement=t,e.wrappers.Image=n}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){n.call(this,e)}var n=e.wrappers.HTMLElement,r=(e.mixin,e.wrappers.NodeList,e.registerWrapper),o=window.HTMLShadowElement;t.prototype=Object.create(n.prototype),t.prototype.constructor=t,o&&r(o,t),e.wrappers.HTMLShadowElement=t}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){if(!e.defaultView)return e;var t=d.get(e);if(!t){for(t=e.implementation.createHTMLDocument("");t.lastChild;)t.removeChild(t.lastChild);d.set(e,t)}return t}function n(e){for(var n,r=t(e.ownerDocument),o=c(r.createDocumentFragment());n=e.firstChild;)o.appendChild(n);return o}function r(e){if(o.call(this,e),!p){var t=n(e);u.set(this,l(t))}}var o=e.wrappers.HTMLElement,i=e.mixin,a=e.registerWrapper,s=e.unsafeUnwrap,c=e.unwrap,l=e.wrap,u=new WeakMap,d=new WeakMap,p=window.HTMLTemplateElement;r.prototype=Object.create(o.prototype),i(r.prototype,{constructor:r,get content(){return p?l(s(this).content):u.get(this)}}),p&&a(p,r),e.wrappers.HTMLTemplateElement=r}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){n.call(this,e)}var n=e.wrappers.HTMLElement,r=e.registerWrapper,o=window.HTMLMediaElement;o&&(t.prototype=Object.create(n.prototype),r(o,t,document.createElement("audio")),e.wrappers.HTMLMediaElement=t)}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){r.call(this,e)}function n(e){if(!(this instanceof n))throw new TypeError("DOM object constructor cannot be called as a function.");var t=i(document.createElement("audio"));r.call(this,t),a(t,this),t.setAttribute("preload","auto"),void 0!==e&&t.setAttribute("src",e)}var r=e.wrappers.HTMLMediaElement,o=e.registerWrapper,i=e.unwrap,a=e.rewrap,s=window.HTMLAudioElement;s&&(t.prototype=Object.create(r.prototype),o(s,t,document.createElement("audio")),n.prototype=t.prototype,e.wrappers.HTMLAudioElement=t,e.wrappers.Audio=n)}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){return e.replace(/\s+/g," ").trim()}function n(e){o.call(this,e)}function r(e,t,n,i){if(!(this instanceof r))throw new TypeError("DOM object constructor cannot be called as a function.");var a=c(document.createElement("option"));o.call(this,a),s(a,this),void 0!==e&&(a.text=e),void 0!==t&&a.setAttribute("value",t),n===!0&&a.setAttribute("selected",""),a.selected=i===!0}var o=e.wrappers.HTMLElement,i=e.mixin,a=e.registerWrapper,s=e.rewrap,c=e.unwrap,l=e.wrap,u=window.HTMLOptionElement;n.prototype=Object.create(o.prototype),i(n.prototype,{get text(){return t(this.textContent)},set text(e){this.textContent=t(String(e))},get form(){return l(c(this).form)}}),a(u,n,document.createElement("option")),r.prototype=n.prototype,e.wrappers.HTMLOptionElement=n,e.wrappers.Option=r}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){n.call(this,e)}var n=e.wrappers.HTMLElement,r=e.mixin,o=e.registerWrapper,i=e.unwrap,a=e.wrap,s=window.HTMLSelectElement;t.prototype=Object.create(n.prototype),r(t.prototype,{add:function(e,t){"object"==typeof t&&(t=i(t)),i(this).add(i(e),t)},remove:function(e){return void 0===e?void n.prototype.remove.call(this):("object"==typeof e&&(e=i(e)),void i(this).remove(e))},get form(){return a(i(this).form)}}),o(s,t,document.createElement("select")),e.wrappers.HTMLSelectElement=t}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){n.call(this,e)}var n=e.wrappers.HTMLElement,r=e.mixin,o=e.registerWrapper,i=e.unwrap,a=e.wrap,s=e.wrapHTMLCollection,c=window.HTMLTableElement;t.prototype=Object.create(n.prototype),r(t.prototype,{get caption(){return a(i(this).caption)},createCaption:function(){return a(i(this).createCaption())},get tHead(){return a(i(this).tHead)},createTHead:function(){return a(i(this).createTHead())},createTFoot:function(){return a(i(this).createTFoot())},get tFoot(){return a(i(this).tFoot)},get tBodies(){return s(i(this).tBodies)},createTBody:function(){return a(i(this).createTBody())},get rows(){return s(i(this).rows)},insertRow:function(e){return a(i(this).insertRow(e))}}),o(c,t,document.createElement("table")),e.wrappers.HTMLTableElement=t}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){n.call(this,e)}var n=e.wrappers.HTMLElement,r=e.mixin,o=e.registerWrapper,i=e.wrapHTMLCollection,a=e.unwrap,s=e.wrap,c=window.HTMLTableSectionElement;t.prototype=Object.create(n.prototype),r(t.prototype,{constructor:t,get rows(){return i(a(this).rows)},insertRow:function(e){return s(a(this).insertRow(e))}}),o(c,t,document.createElement("thead")),e.wrappers.HTMLTableSectionElement=t}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){n.call(this,e)}var n=e.wrappers.HTMLElement,r=e.mixin,o=e.registerWrapper,i=e.wrapHTMLCollection,a=e.unwrap,s=e.wrap,c=window.HTMLTableRowElement;t.prototype=Object.create(n.prototype),r(t.prototype,{get cells(){return i(a(this).cells)},insertCell:function(e){return s(a(this).insertCell(e))}}),o(c,t,document.createElement("tr")),e.wrappers.HTMLTableRowElement=t}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){switch(e.localName){case"content":return new n(e);case"shadow":return new o(e);case"template":return new i(e)}r.call(this,e)}var n=e.wrappers.HTMLContentElement,r=e.wrappers.HTMLElement,o=e.wrappers.HTMLShadowElement,i=e.wrappers.HTMLTemplateElement,a=(e.mixin,e.registerWrapper),s=window.HTMLUnknownElement;t.prototype=Object.create(r.prototype),a(s,t),e.wrappers.HTMLUnknownElement=t}(window.ShadowDOMPolyfill),function(e){"use strict";var t=e.wrappers.Element,n=e.wrappers.HTMLElement,r=e.registerObject,o=e.defineWrapGetter,i="http://www.w3.org/2000/svg",a=document.createElementNS(i,"title"),s=r(a),c=Object.getPrototypeOf(s.prototype).constructor;if(!("classList"in a)){var l=Object.getOwnPropertyDescriptor(t.prototype,"classList");Object.defineProperty(n.prototype,"classList",l),delete t.prototype.classList}o(c,"ownerSVGElement"),e.wrappers.SVGElement=c}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){p.call(this,e)}var n=e.mixin,r=e.registerWrapper,o=e.unwrap,i=e.wrap,a=window.SVGUseElement,s="http://www.w3.org/2000/svg",c=i(document.createElementNS(s,"g")),l=document.createElementNS(s,"use"),u=c.constructor,d=Object.getPrototypeOf(u.prototype),p=d.constructor;t.prototype=Object.create(d),"instanceRoot"in l&&n(t.prototype,{get instanceRoot(){return i(o(this).instanceRoot)},get animatedInstanceRoot(){return i(o(this).animatedInstanceRoot)}}),r(a,t,l),e.wrappers.SVGUseElement=t}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){n.call(this,e)}var n=e.wrappers.EventTarget,r=e.mixin,o=e.registerWrapper,i=e.unsafeUnwrap,a=e.wrap,s=window.SVGElementInstance;s&&(t.prototype=Object.create(n.prototype),r(t.prototype,{get correspondingElement(){return a(i(this).correspondingElement)},get correspondingUseElement(){return a(i(this).correspondingUseElement)},get parentNode(){return a(i(this).parentNode)},get childNodes(){throw new Error("Not implemented")},get firstChild(){return a(i(this).firstChild)},get lastChild(){return a(i(this).lastChild)},get previousSibling(){return a(i(this).previousSibling)},get nextSibling(){return a(i(this).nextSibling)}}),o(s,t),e.wrappers.SVGElementInstance=t)}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){o(e,this)}var n=e.mixin,r=e.registerWrapper,o=e.setWrapper,i=e.unsafeUnwrap,a=e.unwrap,s=e.unwrapIfNeeded,c=e.wrap,l=window.CanvasRenderingContext2D;n(t.prototype,{get canvas(){return c(i(this).canvas)},drawImage:function(){arguments[0]=s(arguments[0]),i(this).drawImage.apply(i(this),arguments)},createPattern:function(){return arguments[0]=a(arguments[0]),i(this).createPattern.apply(i(this),arguments)}}),r(l,t,document.createElement("canvas").getContext("2d")),e.wrappers.CanvasRenderingContext2D=t}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){o(e,this)}var n=e.mixin,r=e.registerWrapper,o=e.setWrapper,i=e.unsafeUnwrap,a=e.unwrapIfNeeded,s=e.wrap,c=window.WebGLRenderingContext;if(c){n(t.prototype,{get canvas(){return s(i(this).canvas)},texImage2D:function(){arguments[5]=a(arguments[5]),i(this).texImage2D.apply(i(this),arguments)},texSubImage2D:function(){arguments[6]=a(arguments[6]),i(this).texSubImage2D.apply(i(this),arguments)}});var l=/WebKit/.test(navigator.userAgent)?{drawingBufferHeight:null,drawingBufferWidth:null}:{};r(c,t,l),e.wrappers.WebGLRenderingContext=t}}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){r(e,this)}var n=e.registerWrapper,r=e.setWrapper,o=e.unsafeUnwrap,i=e.unwrap,a=e.unwrapIfNeeded,s=e.wrap,c=window.Range;t.prototype={get startContainer(){return s(o(this).startContainer)},get endContainer(){return s(o(this).endContainer)},get commonAncestorContainer(){return s(o(this).commonAncestorContainer)},setStart:function(e,t){o(this).setStart(a(e),t)},setEnd:function(e,t){o(this).setEnd(a(e),t)},setStartBefore:function(e){o(this).setStartBefore(a(e))},setStartAfter:function(e){o(this).setStartAfter(a(e))},setEndBefore:function(e){o(this).setEndBefore(a(e))},setEndAfter:function(e){o(this).setEndAfter(a(e))},selectNode:function(e){o(this).selectNode(a(e))},selectNodeContents:function(e){o(this).selectNodeContents(a(e))},compareBoundaryPoints:function(e,t){return o(this).compareBoundaryPoints(e,i(t))},extractContents:function(){return s(o(this).extractContents())},cloneContents:function(){return s(o(this).cloneContents())},insertNode:function(e){o(this).insertNode(a(e))},surroundContents:function(e){o(this).surroundContents(a(e))},cloneRange:function(){return s(o(this).cloneRange())},isPointInRange:function(e,t){return o(this).isPointInRange(a(e),t)},comparePoint:function(e,t){return o(this).comparePoint(a(e),t)},intersectsNode:function(e){return o(this).intersectsNode(a(e))},toString:function(){return o(this).toString()}},c.prototype.createContextualFragment&&(t.prototype.createContextualFragment=function(e){return s(o(this).createContextualFragment(e))}),n(window.Range,t,document.createRange()),e.wrappers.Range=t}(window.ShadowDOMPolyfill),function(e){"use strict";var t=e.GetElementsByInterface,n=e.ParentNodeInterface,r=e.SelectorsInterface,o=e.mixin,i=e.registerObject,a=i(document.createDocumentFragment());o(a.prototype,n),o(a.prototype,r),o(a.prototype,t);var s=i(document.createComment(""));e.wrappers.Comment=s,e.wrappers.DocumentFragment=a}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){var t=d(u(e).ownerDocument.createDocumentFragment());n.call(this,t),c(t,this);var o=e.shadowRoot;f.set(this,o),this.treeScope_=new r(this,a(o||e)),p.set(this,e)}var n=e.wrappers.DocumentFragment,r=e.TreeScope,o=e.elementFromPoint,i=e.getInnerHTML,a=e.getTreeScope,s=e.mixin,c=e.rewrap,l=e.setInnerHTML,u=e.unsafeUnwrap,d=e.unwrap,p=new WeakMap,f=new WeakMap,h=/[ \t\n\r\f]/;t.prototype=Object.create(n.prototype),s(t.prototype,{constructor:t,get innerHTML(){return i(this)},set innerHTML(e){l(this,e),this.invalidateShadowRenderer()},get olderShadowRoot(){return f.get(this)||null},get host(){return p.get(this)||null},invalidateShadowRenderer:function(){return p.get(this).invalidateShadowRenderer()},elementFromPoint:function(e,t){return o(this,this.ownerDocument,e,t)},getElementById:function(e){return h.test(e)?null:this.querySelector('[id="'+e+'"]')}}),e.wrappers.ShadowRoot=t}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){e.previousSibling_=e.previousSibling,e.nextSibling_=e.nextSibling,e.parentNode_=e.parentNode}function n(n,o,i){var a=x(n),s=x(o),c=i?x(i):null;if(r(o),t(o),i)n.firstChild===i&&(n.firstChild_=i),i.previousSibling_=i.previousSibling;else{n.lastChild_=n.lastChild,n.lastChild===n.firstChild&&(n.firstChild_=n.firstChild);var l=R(a.lastChild);l&&(l.nextSibling_=l.nextSibling)}e.originalInsertBefore.call(a,s,c)}function r(n){var r=x(n),o=r.parentNode;if(o){var i=R(o);t(n),n.previousSibling&&(n.previousSibling.nextSibling_=n),n.nextSibling&&(n.nextSibling.previousSibling_=n),i.lastChild===n&&(i.lastChild_=n),i.firstChild===n&&(i.firstChild_=n),e.originalRemoveChild.call(o,r)}}function o(e){I.set(e,[])}function i(e){var t=I.get(e);return t||I.set(e,t=[]),t}function a(e){for(var t=[],n=0,r=e.firstChild;r;r=r.nextSibling)t[n++]=r;return t}function s(){for(var e=0;em;m++){var w=R(i[u++]);s.get(w)||r(w)}for(var v=f.addedCount,g=i[u]&&R(i[u]),m=0;v>m;m++){var b=o[l++],y=b.node;n(t,y,g),s.set(y,!0),b.sync(s)}d+=v}for(var p=d;p=0;o--){var i=r[o],a=m(i);if(a){var s=i.olderShadowRoot;s&&(n=h(s));for(var c=0;c=0;u--)l=Object.create(l);["createdCallback","attachedCallback","detachedCallback","attributeChangedCallback"].forEach(function(e){var t=o[e];t&&(l[e]=function(){C(this)instanceof r||M(this),t.apply(C(this),arguments)})});var d={prototype:l};i&&(d["extends"]=i),r.prototype=o,r.prototype.constructor=r,e.constructorTable.set(l,r),e.nativePrototypeTable.set(o,l);x.call(O(this),t,d);return r},b([window.HTMLDocument||window.Document],["registerElement"])}b([window.HTMLBodyElement,window.HTMLDocument||window.Document,window.HTMLHeadElement,window.HTMLHtmlElement],["appendChild","compareDocumentPosition","contains","getElementsByClassName","getElementsByTagName","getElementsByTagNameNS","insertBefore","querySelector","querySelectorAll","removeChild","replaceChild"]),b([window.HTMLBodyElement,window.HTMLHeadElement,window.HTMLHtmlElement],y),b([window.HTMLDocument||window.Document],["adoptNode","importNode","contains","createComment","createDocumentFragment","createElement","createElementNS","createEvent","createEventNS","createRange","createTextNode","elementFromPoint","getElementById","getElementsByName","getSelection"]),E(t.prototype,l),E(t.prototype,d),E(t.prototype,f),E(t.prototype,{get implementation(){var e=D.get(this); -return e?e:(e=new a(O(this).implementation),D.set(this,e),e)},get defaultView(){return C(O(this).defaultView)}}),S(window.Document,t,document.implementation.createHTMLDocument("")),window.HTMLDocument&&S(window.HTMLDocument,t),N([window.HTMLBodyElement,window.HTMLDocument||window.Document,window.HTMLHeadElement]),s(a,"createDocumentType"),s(a,"createDocument"),s(a,"createHTMLDocument"),c(a,"hasFeature"),S(window.DOMImplementation,a),b([window.DOMImplementation],["createDocumentType","createDocument","createHTMLDocument","hasFeature"]),e.adoptNodeNoRemove=r,e.wrappers.DOMImplementation=a,e.wrappers.Document=t}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){n.call(this,e)}var n=e.wrappers.EventTarget,r=e.wrappers.Selection,o=e.mixin,i=e.registerWrapper,a=e.renderAllPending,s=e.unwrap,c=e.unwrapIfNeeded,l=e.wrap,u=window.Window,d=window.getComputedStyle,p=window.getDefaultComputedStyle,f=window.getSelection;t.prototype=Object.create(n.prototype),u.prototype.getComputedStyle=function(e,t){return l(this||window).getComputedStyle(c(e),t)},p&&(u.prototype.getDefaultComputedStyle=function(e,t){return l(this||window).getDefaultComputedStyle(c(e),t)}),u.prototype.getSelection=function(){return l(this||window).getSelection()},delete window.getComputedStyle,delete window.getDefaultComputedStyle,delete window.getSelection,["addEventListener","removeEventListener","dispatchEvent"].forEach(function(e){u.prototype[e]=function(){var t=l(this||window);return t[e].apply(t,arguments)},delete window[e]}),o(t.prototype,{getComputedStyle:function(e,t){return a(),d.call(s(this),c(e),t)},getSelection:function(){return a(),new r(f.call(s(this)))},get document(){return l(s(this).document)}}),p&&(t.prototype.getDefaultComputedStyle=function(e,t){return a(),p.call(s(this),c(e),t)}),i(u,t,window),e.wrappers.Window=t}(window.ShadowDOMPolyfill),function(e){"use strict";var t=e.unwrap,n=window.DataTransfer||window.Clipboard,r=n.prototype.setDragImage;r&&(n.prototype.setDragImage=function(e,n,o){r.call(this,t(e),n,o)})}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){var t;t=e instanceof i?e:new i(e&&o(e)),r(t,this)}var n=e.registerWrapper,r=e.setWrapper,o=e.unwrap,i=window.FormData;i&&(n(i,t,new i),e.wrappers.FormData=t)}(window.ShadowDOMPolyfill),function(e){"use strict";var t=e.unwrapIfNeeded,n=XMLHttpRequest.prototype.send;XMLHttpRequest.prototype.send=function(e){return n.call(this,t(e))}}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){var t=n[e],r=window[t];if(r){var o=document.createElement(e),i=o.constructor;window[t]=i}}var n=(e.isWrapperFor,{a:"HTMLAnchorElement",area:"HTMLAreaElement",audio:"HTMLAudioElement",base:"HTMLBaseElement",body:"HTMLBodyElement",br:"HTMLBRElement",button:"HTMLButtonElement",canvas:"HTMLCanvasElement",caption:"HTMLTableCaptionElement",col:"HTMLTableColElement",content:"HTMLContentElement",data:"HTMLDataElement",datalist:"HTMLDataListElement",del:"HTMLModElement",dir:"HTMLDirectoryElement",div:"HTMLDivElement",dl:"HTMLDListElement",embed:"HTMLEmbedElement",fieldset:"HTMLFieldSetElement",font:"HTMLFontElement",form:"HTMLFormElement",frame:"HTMLFrameElement",frameset:"HTMLFrameSetElement",h1:"HTMLHeadingElement",head:"HTMLHeadElement",hr:"HTMLHRElement",html:"HTMLHtmlElement",iframe:"HTMLIFrameElement",img:"HTMLImageElement",input:"HTMLInputElement",keygen:"HTMLKeygenElement",label:"HTMLLabelElement",legend:"HTMLLegendElement",li:"HTMLLIElement",link:"HTMLLinkElement",map:"HTMLMapElement",marquee:"HTMLMarqueeElement",menu:"HTMLMenuElement",menuitem:"HTMLMenuItemElement",meta:"HTMLMetaElement",meter:"HTMLMeterElement",object:"HTMLObjectElement",ol:"HTMLOListElement",optgroup:"HTMLOptGroupElement",option:"HTMLOptionElement",output:"HTMLOutputElement",p:"HTMLParagraphElement",param:"HTMLParamElement",pre:"HTMLPreElement",progress:"HTMLProgressElement",q:"HTMLQuoteElement",script:"HTMLScriptElement",select:"HTMLSelectElement",shadow:"HTMLShadowElement",source:"HTMLSourceElement",span:"HTMLSpanElement",style:"HTMLStyleElement",table:"HTMLTableElement",tbody:"HTMLTableSectionElement",template:"HTMLTemplateElement",textarea:"HTMLTextAreaElement",thead:"HTMLTableSectionElement",time:"HTMLTimeElement",title:"HTMLTitleElement",tr:"HTMLTableRowElement",track:"HTMLTrackElement",ul:"HTMLUListElement",video:"HTMLVideoElement"});Object.keys(n).forEach(t),Object.getOwnPropertyNames(e.wrappers).forEach(function(t){window[t]=e.wrappers[t]})}(window.ShadowDOMPolyfill),function(e){function t(e,t){var n="";return Array.prototype.forEach.call(e,function(e){n+=e.textContent+"\n\n"}),t||(n=n.replace(d,"")),n}function n(e){var t=document.createElement("style");return t.textContent=e,t}function r(e){var t=n(e);document.head.appendChild(t);var r=[];if(t.sheet)try{r=t.sheet.cssRules}catch(o){}else console.warn("sheet not found",t);return t.parentNode.removeChild(t),r}function o(){N.initialized=!0,document.body.appendChild(N);var e=N.contentDocument,t=e.createElement("base");t.href=document.baseURI,e.head.appendChild(t)}function i(e){N.initialized||o(),document.body.appendChild(N),e(N.contentDocument),document.body.removeChild(N)}function a(e,t){if(t){var o;if(e.match("@import")&&j){var a=n(e);i(function(e){e.head.appendChild(a.impl),o=Array.prototype.slice.call(a.sheet.cssRules,0),t(o)})}else o=r(e),t(o)}}function s(e){e&&l().appendChild(document.createTextNode(e))}function c(e,t){var r=n(e);r.setAttribute(t,""),r.setAttribute(x,""),document.head.appendChild(r)}function l(){return D||(D=document.createElement("style"),D.setAttribute(x,""),D[x]=!0),D}var u={strictStyling:!1,registry:{},shimStyling:function(e,n,r){var o=this.prepareRoot(e,n,r),i=this.isTypeExtension(r),a=this.makeScopeSelector(n,i),s=t(o,!0);s=this.scopeCssText(s,a),e&&(e.shimmedStyle=s),this.addCssToDocument(s,n)},shimStyle:function(e,t){return this.shimCssText(e.textContent,t)},shimCssText:function(e,t){return e=this.insertDirectives(e),this.scopeCssText(e,t)},makeScopeSelector:function(e,t){return e?t?"[is="+e+"]":e:""},isTypeExtension:function(e){return e&&e.indexOf("-")<0},prepareRoot:function(e,t,n){var r=this.registerRoot(e,t,n);return this.replaceTextInStyles(r.rootStyles,this.insertDirectives),this.removeStyles(e,r.rootStyles),this.strictStyling&&this.applyScopeToContent(e,t),r.scopeStyles},removeStyles:function(e,t){for(var n,r=0,o=t.length;o>r&&(n=t[r]);r++)n.parentNode.removeChild(n)},registerRoot:function(e,t,n){var r=this.registry[t]={root:e,name:t,extendsName:n},o=this.findStyles(e);r.rootStyles=o,r.scopeStyles=r.rootStyles;var i=this.registry[r.extendsName];return i&&(r.scopeStyles=i.scopeStyles.concat(r.scopeStyles)),r},findStyles:function(e){if(!e)return[];var t=e.querySelectorAll("style");return Array.prototype.filter.call(t,function(e){return!e.hasAttribute(R)})},applyScopeToContent:function(e,t){e&&(Array.prototype.forEach.call(e.querySelectorAll("*"),function(e){e.setAttribute(t,"")}),Array.prototype.forEach.call(e.querySelectorAll("template"),function(e){this.applyScopeToContent(e.content,t)},this))},insertDirectives:function(e){return e=this.insertPolyfillDirectivesInCssText(e),this.insertPolyfillRulesInCssText(e)},insertPolyfillDirectivesInCssText:function(e){return e=e.replace(p,function(e,t){return t.slice(0,-2)+"{"}),e.replace(f,function(e,t){return t+" {"})},insertPolyfillRulesInCssText:function(e){return e=e.replace(h,function(e,t){return t.slice(0,-1)}),e.replace(m,function(e,t,n,r){var o=e.replace(t,"").replace(n,"");return r+o})},scopeCssText:function(e,t){var n=this.extractUnscopedRulesFromCssText(e);if(e=this.insertPolyfillHostInCssText(e),e=this.convertColonHost(e),e=this.convertColonHostContext(e),e=this.convertShadowDOMSelectors(e),t){var e,r=this;a(e,function(n){e=r.scopeRules(n,t)})}return e=e+"\n"+n,e.trim()},extractUnscopedRulesFromCssText:function(e){for(var t,n="";t=w.exec(e);)n+=t[1].slice(0,-1)+"\n\n";for(;t=v.exec(e);)n+=t[0].replace(t[2],"").replace(t[1],t[3])+"\n\n";return n},convertColonHost:function(e){return this.convertColonRule(e,E,this.colonHostPartReplacer)},convertColonHostContext:function(e){return this.convertColonRule(e,S,this.colonHostContextPartReplacer)},convertColonRule:function(e,t,n){return e.replace(t,function(e,t,r,o){if(t=L,r){for(var i,a=r.split(","),s=[],c=0,l=a.length;l>c&&(i=a[c]);c++)i=i.trim(),s.push(n(t,i,o));return s.join(",")}return t+o})},colonHostContextPartReplacer:function(e,t,n){return t.match(g)?this.colonHostPartReplacer(e,t,n):e+t+n+", "+t+" "+e+n},colonHostPartReplacer:function(e,t,n){return e+t.replace(g,"")+n},convertShadowDOMSelectors:function(e){for(var t=0;t","+","~"],r=e,o="["+t+"]";return n.forEach(function(e){var t=r.split(e);r=t.map(function(e){var t=e.trim().replace(O,"");return t&&n.indexOf(t)<0&&t.indexOf(o)<0&&(e=t.replace(/([^:]*)(:*)(.*)/,"$1"+o+"$2$3")),e}).join(e)}),r},insertPolyfillHostInCssText:function(e){return e.replace(_,b).replace(M,g)},propertiesFromRule:function(e){var t=e.style.cssText;e.style.content&&!e.style.content.match(/['"]+|attr/)&&(t=t.replace(/content:[^;]*;/g,"content: '"+e.style.content+"';"));var n=e.style;for(var r in n)"initial"===n[r]&&(t+=r+": initial; ");return t},replaceTextInStyles:function(e,t){e&&t&&(e instanceof Array||(e=[e]),Array.prototype.forEach.call(e,function(e){e.textContent=t.call(this,e.textContent)},this))},addCssToDocument:function(e,t){e.match("@import")?c(e,t):s(e)}},d=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//gim,p=/\/\*\s*@polyfill ([^*]*\*+([^/*][^*]*\*+)*\/)([^{]*?){/gim,f=/polyfill-next-selector[^}]*content\:[\s]*?['"](.*?)['"][;\s]*}([^{]*?){/gim,h=/\/\*\s@polyfill-rule([^*]*\*+([^/*][^*]*\*+)*)\//gim,m=/(polyfill-rule)[^}]*(content\:[\s]*['"](.*?)['"])[;\s]*[^}]*}/gim,w=/\/\*\s@polyfill-unscoped-rule([^*]*\*+([^/*][^*]*\*+)*)\//gim,v=/(polyfill-unscoped-rule)[^}]*(content\:[\s]*['"](.*?)['"])[;\s]*[^}]*}/gim,g="-shadowcsshost",b="-shadowcsscontext",y=")(?:\\(((?:\\([^)(]*\\)|[^)(]*)+?)\\))?([^,{]*)",E=new RegExp("("+g+y,"gim"),S=new RegExp("("+b+y,"gim"),T="([>\\s~+[.,{:][\\s\\S]*)?$",M=/\:host/gim,_=/\:host-context/gim,L=g+"-no-combinator",O=new RegExp(g,"gim"),C=(new RegExp(b,"gim"),[/\^\^/g,/\^/g,/\/shadow\//g,/\/shadow-deep\//g,/::shadow/g,/\/deep\//g,/::content/g]),N=document.createElement("iframe");N.style.display="none";var D,j=navigator.userAgent.match("Chrome"),H="shim-shadowdom",x="shim-shadowdom-css",R="no-shim";if(window.ShadowDOMPolyfill){s("style { display: none !important; }\n");var P=ShadowDOMPolyfill.wrap(document),I=P.querySelector("head");I.insertBefore(l(),I.childNodes[0]),document.addEventListener("DOMContentLoaded",function(){e.urlResolver;if(window.HTMLImports&&!HTMLImports.useNative){var t="link[rel=stylesheet]["+H+"]",n="style["+H+"]";HTMLImports.importer.documentPreloadSelectors+=","+t,HTMLImports.importer.importsPreloadSelectors+=","+t,HTMLImports.parser.documentSelectors=[HTMLImports.parser.documentSelectors,t,n].join(",");var r=HTMLImports.parser.parseGeneric;HTMLImports.parser.parseGeneric=function(e){if(!e[x]){var t=e.__importElement||e;if(!t.hasAttribute(H))return void r.call(this,e);e.__resource&&(t=e.ownerDocument.createElement("style"),t.textContent=e.__resource),HTMLImports.path.resolveUrlsInStyle(t),t.textContent=u.shimStyle(t),t.removeAttribute(H,""),t.setAttribute(x,""),t[x]=!0,t.parentNode!==I&&(e.parentNode===I?I.replaceChild(t,e):this.addElementToDocument(t)),t.__importParsed=!0,this.markParsingComplete(e),this.parseNext()}};var o=HTMLImports.parser.hasResource;HTMLImports.parser.hasResource=function(e){return"link"===e.localName&&"stylesheet"===e.rel&&e.hasAttribute(H)?e.__resource:o.call(this,e)}}})}e.ShadowCSS=u}(window.WebComponents)),function(){window.ShadowDOMPolyfill?(window.wrap=ShadowDOMPolyfill.wrapIfNeeded,window.unwrap=ShadowDOMPolyfill.unwrapIfNeeded):window.wrap=window.unwrap=function(e){return e}}(window.WebComponents),window.HTMLImports=window.HTMLImports||{flags:{}},function(e){function t(e,t){t=t||h,r(function(){i(e,t)},t)}function n(e){return"complete"===e.readyState||e.readyState===v}function r(e,t){if(n(t))e&&e();else{var o=function(){("complete"===t.readyState||t.readyState===v)&&(t.removeEventListener(g,o),r(e,t))};t.addEventListener(g,o)}}function o(e){e.target.__loaded=!0}function i(e,t){function n(){s==c&&e&&e()}function r(e){o(e),s++,n()}var i=t.querySelectorAll("link[rel=import]"),s=0,c=i.length;if(c)for(var l,u=0;c>u&&(l=i[u]);u++)a(l)?r.call(l,{target:l}):(l.addEventListener("load",r),l.addEventListener("error",r));else n()}function a(e){return d?e.__loaded||e["import"]&&"loading"!==e["import"].readyState:e.__importParsed}function s(e){for(var t,n=0,r=e.length;r>n&&(t=e[n]);n++)c(t)&&l(t)}function c(e){return"link"===e.localName&&"import"===e.rel}function l(e){var t=e["import"];t?o({target:e}):(e.addEventListener("load",o),e.addEventListener("error",o))}var u="import",d=Boolean(u in document.createElement("link")),p=Boolean(window.ShadowDOMPolyfill),f=function(e){return p?ShadowDOMPolyfill.wrapIfNeeded(e):e},h=f(document),m={get:function(){var e=HTMLImports.currentScript||document.currentScript||("complete"!==document.readyState?document.scripts[document.scripts.length-1]:null);return f(e)},configurable:!0};Object.defineProperty(document,"_currentScript",m),Object.defineProperty(h,"_currentScript",m);var w=/Trident|Edge/.test(navigator.userAgent),v=w?"complete":"interactive",g="readystatechange";d&&(new MutationObserver(function(e){for(var t,n=0,r=e.length;r>n&&(t=e[n]);n++)t.addedNodes&&s(t.addedNodes)}).observe(document.head,{childList:!0}),function(){if("loading"===document.readyState)for(var e,t=document.querySelectorAll("link[rel=import]"),n=0,r=t.length;r>n&&(e=t[n]);n++)l(e)}()),t(function(){HTMLImports.ready=!0,HTMLImports.readyTime=(new Date).getTime();var e=h.createEvent("CustomEvent");e.initCustomEvent("HTMLImportsLoaded",!0,!0,{}),h.dispatchEvent(e)}),e.IMPORT_LINK_TYPE=u,e.useNative=d,e.rootDocument=h,e.whenReady=t,e.isIE=w}(HTMLImports),function(e){var t=[],n=function(e){t.push(e)},r=function(){t.forEach(function(t){t(e)})};e.addModule=n,e.initializeModules=r}(HTMLImports),HTMLImports.addModule(function(e){var t=/(url\()([^)]*)(\))/g,n=/(@import[\s]+(?!url\())([^;]*)(;)/g,r={resolveUrlsInStyle:function(e){var t=e.ownerDocument,n=t.createElement("a");return e.textContent=this.resolveUrlsInCssText(e.textContent,n),e},resolveUrlsInCssText:function(e,r){var o=this.replaceUrls(e,r,t);return o=this.replaceUrls(o,r,n)},replaceUrls:function(e,t,n){return e.replace(n,function(e,n,r,o){var i=r.replace(/["']/g,"");return t.href=i,i=t.href,n+"'"+i+"'"+o})}};e.path=r}),HTMLImports.addModule(function(e){var t={async:!0,ok:function(e){return e.status>=200&&e.status<300||304===e.status||0===e.status},load:function(n,r,o){var i=new XMLHttpRequest;return(e.flags.debug||e.flags.bust)&&(n+="?"+Math.random()),i.open("GET",n,t.async),i.addEventListener("readystatechange",function(){if(4===i.readyState){var e=i.getResponseHeader("Location"),n=null;if(e)var n="/"===e.substr(0,1)?location.origin+e:e;r.call(o,!t.ok(i)&&i,i.response||i.responseText,n)}}),i.send(),i},loadDocument:function(e,t,n){this.load(e,t,n).responseType="document"}};e.xhr=t}),HTMLImports.addModule(function(e){var t=e.xhr,n=e.flags,r=function(e,t){this.cache={},this.onload=e,this.oncomplete=t,this.inflight=0,this.pending={}};r.prototype={addNodes:function(e){this.inflight+=e.length;for(var t,n=0,r=e.length;r>n&&(t=e[n]);n++)this.require(t);this.checkDone()},addNode:function(e){this.inflight++,this.require(e),this.checkDone()},require:function(e){var t=e.src||e.href;e.__nodeUrl=t,this.dedupe(t,e)||this.fetch(t,e)},dedupe:function(e,t){if(this.pending[e])return this.pending[e].push(t),!0;return this.cache[e]?(this.onload(e,t,this.cache[e]),this.tail(),!0):(this.pending[e]=[t],!1)},fetch:function(e,r){if(n.load&&console.log("fetch",e,r),e)if(e.match(/^data:/)){var o=e.split(","),i=o[0],a=o[1];a=i.indexOf(";base64")>-1?atob(a):decodeURIComponent(a),setTimeout(function(){this.receive(e,r,null,a)}.bind(this),0)}else{var s=function(t,n,o){this.receive(e,r,t,n,o)}.bind(this);t.load(e,s)}else setTimeout(function(){this.receive(e,r,{error:"href must be specified"},null)}.bind(this),0)},receive:function(e,t,n,r,o){this.cache[e]=r;for(var i,a=this.pending[e],s=0,c=a.length;c>s&&(i=a[s]);s++)this.onload(e,i,r,n,o),this.tail();this.pending[e]=null},tail:function(){--this.inflight,this.checkDone()},checkDone:function(){this.inflight||this.oncomplete()}},e.Loader=r}),HTMLImports.addModule(function(e){var t=function(e){this.addCallback=e,this.mo=new MutationObserver(this.handler.bind(this))};t.prototype={handler:function(e){for(var t,n=0,r=e.length;r>n&&(t=e[n]);n++)"childList"===t.type&&t.addedNodes.length&&this.addedNodes(t.addedNodes)},addedNodes:function(e){this.addCallback&&this.addCallback(e);for(var t,n=0,r=e.length;r>n&&(t=e[n]);n++)t.children&&t.children.length&&this.addedNodes(t.children)},observe:function(e){this.mo.observe(e,{childList:!0,subtree:!0})}},e.Observer=t}),HTMLImports.addModule(function(e){function t(e){return"link"===e.localName&&e.rel===u}function n(e){var t=r(e);return"data:text/javascript;charset=utf-8,"+encodeURIComponent(t)}function r(e){return e.textContent+o(e)}function o(e){var t=e.ownerDocument;t.__importedScripts=t.__importedScripts||0;var n=e.ownerDocument.baseURI,r=t.__importedScripts?"-"+t.__importedScripts:"";return t.__importedScripts++,"\n//# sourceURL="+n+r+".js\n"}function i(e){var t=e.ownerDocument.createElement("style");return t.textContent=e.textContent,a.resolveUrlsInStyle(t),t}var a=e.path,s=e.rootDocument,c=e.flags,l=e.isIE,u=e.IMPORT_LINK_TYPE,d="link[rel="+u+"]",p={documentSelectors:d,importsSelectors:[d,"link[rel=stylesheet]","style","script:not([type])",'script[type="text/javascript"]'].join(","),map:{link:"parseLink",script:"parseScript",style:"parseStyle"},dynamicElements:[],parseNext:function(){var e=this.nextToParse();e&&this.parse(e)},parse:function(e){if(this.isParsed(e))return void(c.parse&&console.log("[%s] is already parsed",e.localName));var t=this[this.map[e.localName]];t&&(this.markParsing(e),t.call(this,e))},parseDynamic:function(e,t){this.dynamicElements.push(e),t||this.parseNext()},markParsing:function(e){c.parse&&console.log("parsing",e),this.parsingElement=e},markParsingComplete:function(e){e.__importParsed=!0,this.markDynamicParsingComplete(e),e.__importElement&&(e.__importElement.__importParsed=!0,this.markDynamicParsingComplete(e.__importElement)),this.parsingElement=null,c.parse&&console.log("completed",e)},markDynamicParsingComplete:function(e){var t=this.dynamicElements.indexOf(e);t>=0&&this.dynamicElements.splice(t,1)},parseImport:function(e){if(HTMLImports.__importsParsingHook&&HTMLImports.__importsParsingHook(e),e["import"]&&(e["import"].__importParsed=!0),this.markParsingComplete(e),e.dispatchEvent(e.__resource&&!e.__error?new CustomEvent("load",{bubbles:!1}):new CustomEvent("error",{bubbles:!1})),e.__pending)for(var t;e.__pending.length;)t=e.__pending.shift(),t&&t({target:e});this.parseNext()},parseLink:function(e){t(e)?this.parseImport(e):(e.href=e.href,this.parseGeneric(e))},parseStyle:function(e){var t=e;e=i(e),e.__importElement=t,this.parseGeneric(e)},parseGeneric:function(e){this.trackElement(e),this.addElementToDocument(e)},rootImportForElement:function(e){for(var t=e;t.ownerDocument.__importLink;)t=t.ownerDocument.__importLink;return t},addElementToDocument:function(e){var t=this.rootImportForElement(e.__importElement||e);t.parentNode.insertBefore(e,t)},trackElement:function(e,t){var n=this,r=function(r){t&&t(r),n.markParsingComplete(e),n.parseNext()};if(e.addEventListener("load",r),e.addEventListener("error",r),l&&"style"===e.localName){var o=!1;if(-1==e.textContent.indexOf("@import"))o=!0;else if(e.sheet){o=!0;for(var i,a=e.sheet.cssRules,s=a?a.length:0,c=0;s>c&&(i=a[c]);c++)i.type===CSSRule.IMPORT_RULE&&(o=o&&Boolean(i.styleSheet))}o&&e.dispatchEvent(new CustomEvent("load",{bubbles:!1}))}},parseScript:function(t){var r=document.createElement("script");r.__importElement=t,r.src=t.src?t.src:n(t),e.currentScript=t,this.trackElement(r,function(){r.parentNode.removeChild(r),e.currentScript=null}),this.addElementToDocument(r)},nextToParse:function(){return this._mayParse=[],!this.parsingElement&&(this.nextToParseInDoc(s)||this.nextToParseDynamic())},nextToParseInDoc:function(e,n){if(e&&this._mayParse.indexOf(e)<0){this._mayParse.push(e);for(var r,o=e.querySelectorAll(this.parseSelectorsForNode(e)),i=0,a=o.length;a>i&&(r=o[i]);i++)if(!this.isParsed(r))return this.hasResource(r)?t(r)?this.nextToParseInDoc(r["import"],r):r:void 0}return n},nextToParseDynamic:function(){return this.dynamicElements[0]},parseSelectorsForNode:function(e){var t=e.ownerDocument||e;return t===s?this.documentSelectors:this.importsSelectors},isParsed:function(e){return e.__importParsed},needsDynamicParsing:function(e){return this.dynamicElements.indexOf(e)>=0},hasResource:function(e){return t(e)&&void 0===e["import"]?!1:!0}};e.parser=p,e.IMPORT_SELECTOR=d}),HTMLImports.addModule(function(e){function t(e){return n(e,a)}function n(e,t){return"link"===e.localName&&e.getAttribute("rel")===t}function r(e){return!!Object.getOwnPropertyDescriptor(e,"baseURI")}function o(e,t){var n=document.implementation.createHTMLDocument(a);n._URL=t;var o=n.createElement("base");o.setAttribute("href",t),n.baseURI||r(n)||Object.defineProperty(n,"baseURI",{value:t});var i=n.createElement("meta");return i.setAttribute("charset","utf-8"),n.head.appendChild(i),n.head.appendChild(o),n.body.innerHTML=e,window.HTMLTemplateElement&&HTMLTemplateElement.bootstrap&&HTMLTemplateElement.bootstrap(n),n}var i=e.flags,a=e.IMPORT_LINK_TYPE,s=e.IMPORT_SELECTOR,c=e.rootDocument,l=e.Loader,u=e.Observer,d=e.parser,p={documents:{},documentPreloadSelectors:s,importsPreloadSelectors:[s].join(","),loadNode:function(e){f.addNode(e)},loadSubtree:function(e){var t=this.marshalNodes(e);f.addNodes(t)},marshalNodes:function(e){return e.querySelectorAll(this.loadSelectorsForNode(e))},loadSelectorsForNode:function(e){var t=e.ownerDocument||e;return t===c?this.documentPreloadSelectors:this.importsPreloadSelectors},loaded:function(e,n,r,a,s){if(i.load&&console.log("loaded",e,n),n.__resource=r,n.__error=a,t(n)){var c=this.documents[e];void 0===c&&(c=a?null:o(r,s||e),c&&(c.__importLink=n,this.bootDocument(c)),this.documents[e]=c),n["import"]=c}d.parseNext()},bootDocument:function(e){this.loadSubtree(e),this.observer.observe(e),d.parseNext()},loadedAll:function(){d.parseNext()}},f=new l(p.loaded.bind(p),p.loadedAll.bind(p));if(p.observer=new u,!document.baseURI){var h={get:function(){var e=document.querySelector("base");return e?e.href:window.location.href},configurable:!0};Object.defineProperty(document,"baseURI",h),Object.defineProperty(c,"baseURI",h)}e.importer=p,e.importLoader=f}),HTMLImports.addModule(function(e){var t=e.parser,n=e.importer,r={added:function(e){for(var r,o,i,a,s=0,c=e.length;c>s&&(a=e[s]);s++)r||(r=a.ownerDocument,o=t.isParsed(r)),i=this.shouldLoadNode(a),i&&n.loadNode(a),this.shouldParseNode(a)&&o&&t.parseDynamic(a,i)},shouldLoadNode:function(e){return 1===e.nodeType&&o.call(e,n.loadSelectorsForNode(e))},shouldParseNode:function(e){return 1===e.nodeType&&o.call(e,t.parseSelectorsForNode(e))}};n.observer.addCallback=r.added.bind(r);var o=HTMLElement.prototype.matches||HTMLElement.prototype.matchesSelector||HTMLElement.prototype.webkitMatchesSelector||HTMLElement.prototype.mozMatchesSelector||HTMLElement.prototype.msMatchesSelector}),function(e){function t(){HTMLImports.importer.bootDocument(o)}var n=e.initializeModules,r=e.isIE;if(!e.useNative){r&&"function"!=typeof window.CustomEvent&&(window.CustomEvent=function(e,t){t=t||{};var n=document.createEvent("CustomEvent");return n.initCustomEvent(e,Boolean(t.bubbles),Boolean(t.cancelable),t.detail),n},window.CustomEvent.prototype=window.Event.prototype),n();var o=e.rootDocument;"complete"===document.readyState||"interactive"===document.readyState&&!window.attachEvent?t():document.addEventListener("DOMContentLoaded",t)}}(HTMLImports),window.CustomElements=window.CustomElements||{flags:{}},function(e){var t=e.flags,n=[],r=function(e){n.push(e)},o=function(){n.forEach(function(t){t(e)})};e.addModule=r,e.initializeModules=o,e.hasNative=Boolean(document.registerElement),e.useNative=!t.register&&e.hasNative&&!window.ShadowDOMPolyfill&&(!window.HTMLImports||HTMLImports.useNative)}(CustomElements),CustomElements.addModule(function(e){function t(e,t){n(e,function(e){return t(e)?!0:void r(e,t)}),r(e,t)}function n(e,t,r){var o=e.firstElementChild;if(!o)for(o=e.firstChild;o&&o.nodeType!==Node.ELEMENT_NODE;)o=o.nextSibling;for(;o;)t(o,r)!==!0&&n(o,t,r),o=o.nextElementSibling;return null}function r(e,n){for(var r=e.shadowRoot;r;)t(r,n),r=r.olderShadowRoot}function o(e,t){a=[],i(e,t),a=null}function i(e,t){if(e=wrap(e),!(a.indexOf(e)>=0)){a.push(e);for(var n,r=e.querySelectorAll("link[rel="+s+"]"),o=0,c=r.length;c>o&&(n=r[o]);o++)n["import"]&&i(n["import"],t);t(e)}}var a,s=window.HTMLImports?HTMLImports.IMPORT_LINK_TYPE:"none";e.forDocumentTree=o,e.forSubtree=t}),CustomElements.addModule(function(e){function t(e){return n(e)||r(e)}function n(t){return e.upgrade(t)?!0:void s(t)}function r(e){y(e,function(e){return n(e)?!0:void 0})}function o(e){s(e),p(e)&&y(e,function(e){s(e)})}function i(e){M.push(e),T||(T=!0,setTimeout(a))}function a(){T=!1;for(var e,t=M,n=0,r=t.length;r>n&&(e=t[n]);n++)e();M=[]}function s(e){S?i(function(){c(e)}):c(e)}function c(e){e.__upgraded__&&(e.attachedCallback||e.detachedCallback)&&!e.__attached&&p(e)&&(e.__attached=!0,e.attachedCallback&&e.attachedCallback())}function l(e){u(e),y(e,function(e){u(e)})}function u(e){S?i(function(){d(e)}):d(e)}function d(e){e.__upgraded__&&(e.attachedCallback||e.detachedCallback)&&e.__attached&&!p(e)&&(e.__attached=!1,e.detachedCallback&&e.detachedCallback())}function p(e){for(var t=e,n=wrap(document);t;){if(t==n)return!0;t=t.parentNode||t.host}}function f(e){if(e.shadowRoot&&!e.shadowRoot.__watched){b.dom&&console.log("watching shadow-root for: ",e.localName);for(var t=e.shadowRoot;t;)w(t),t=t.olderShadowRoot}}function h(e){if(b.dom){var n=e[0];if(n&&"childList"===n.type&&n.addedNodes&&n.addedNodes){for(var r=n.addedNodes[0];r&&r!==document&&!r.host;)r=r.parentNode;var o=r&&(r.URL||r._URL||r.host&&r.host.localName)||"";o=o.split("/?").shift().split("/").pop()}console.group("mutations (%d) [%s]",e.length,o||"")}e.forEach(function(e){"childList"===e.type&&(_(e.addedNodes,function(e){e.localName&&t(e)}),_(e.removedNodes,function(e){e.localName&&l(e)}))}),b.dom&&console.groupEnd()}function m(e){for(e=wrap(e),e||(e=wrap(document));e.parentNode;)e=e.parentNode;var t=e.__observer;t&&(h(t.takeRecords()),a())}function w(e){if(!e.__observer){var t=new MutationObserver(h);t.observe(e,{childList:!0,subtree:!0}),e.__observer=t}}function v(e){e=wrap(e),b.dom&&console.group("upgradeDocument: ",e.baseURI.split("/").pop()),t(e),w(e),b.dom&&console.groupEnd()}function g(e){E(e,v)}var b=e.flags,y=e.forSubtree,E=e.forDocumentTree,S=!window.MutationObserver||window.MutationObserver===window.JsMutationObserver;e.hasPolyfillMutations=S;var T=!1,M=[],_=Array.prototype.forEach.call.bind(Array.prototype.forEach),L=Element.prototype.createShadowRoot;L&&(Element.prototype.createShadowRoot=function(){var e=L.call(this);return CustomElements.watchShadow(this),e}),e.watchShadow=f,e.upgradeDocumentTree=g,e.upgradeSubtree=r,e.upgradeAll=t,e.attachedNode=o,e.takeRecords=m}),CustomElements.addModule(function(e){function t(t){if(!t.__upgraded__&&t.nodeType===Node.ELEMENT_NODE){var r=t.getAttribute("is"),o=e.getRegisteredDefinition(r||t.localName);if(o){if(r&&o.tag==t.localName)return n(t,o);if(!r&&!o["extends"])return n(t,o)}}}function n(t,n){return a.upgrade&&console.group("upgrade:",t.localName),n.is&&t.setAttribute("is",n.is),r(t,n),t.__upgraded__=!0,i(t),e.attachedNode(t),e.upgradeSubtree(t),a.upgrade&&console.groupEnd(),t}function r(e,t){Object.__proto__?e.__proto__=t.prototype:(o(e,t.prototype,t["native"]),e.__proto__=t.prototype)}function o(e,t,n){for(var r={},o=t;o!==n&&o!==HTMLElement.prototype;){for(var i,a=Object.getOwnPropertyNames(o),s=0;i=a[s];s++)r[i]||(Object.defineProperty(e,i,Object.getOwnPropertyDescriptor(o,i)),r[i]=1);o=Object.getPrototypeOf(o)}}function i(e){e.createdCallback&&e.createdCallback()}var a=e.flags;e.upgrade=t,e.upgradeWithDefinition=n,e.implementPrototype=r}),CustomElements.addModule(function(e){function t(t,r){var c=r||{};if(!t)throw new Error("document.registerElement: first argument `name` must not be empty");if(t.indexOf("-")<0)throw new Error("document.registerElement: first argument ('name') must contain a dash ('-'). Argument provided was '"+String(t)+"'.");if(o(t))throw new Error("Failed to execute 'registerElement' on 'Document': Registration failed for type '"+String(t)+"'. The type name is invalid.");if(l(t))throw new Error("DuplicateDefinitionError: a type with name '"+String(t)+"' is already registered");return c.prototype||(c.prototype=Object.create(HTMLElement.prototype)),c.__name=t.toLowerCase(),c.lifecycle=c.lifecycle||{},c.ancestry=i(c["extends"]),a(c),s(c),n(c.prototype),u(c.__name,c),c.ctor=d(c),c.ctor.prototype=c.prototype,c.prototype.constructor=c.ctor,e.ready&&w(document),c.ctor}function n(e){if(!e.setAttribute._polyfilled){var t=e.setAttribute;e.setAttribute=function(e,n){r.call(this,e,n,t)};var n=e.removeAttribute;e.removeAttribute=function(e){r.call(this,e,null,n)},e.setAttribute._polyfilled=!0}}function r(e,t,n){e=e.toLowerCase();var r=this.getAttribute(e);n.apply(this,arguments);var o=this.getAttribute(e);this.attributeChangedCallback&&o!==r&&this.attributeChangedCallback(e,r,o)}function o(e){for(var t=0;t=0&&b(r,HTMLElement),r)}function h(e){var t=L.call(this,e);return v(t),t}var m,w=e.upgradeDocumentTree,v=e.upgrade,g=e.upgradeWithDefinition,b=e.implementPrototype,y=e.useNative,E=["annotation-xml","color-profile","font-face","font-face-src","font-face-uri","font-face-format","font-face-name","missing-glyph"],S={},T="http://www.w3.org/1999/xhtml",M=document.createElement.bind(document),_=document.createElementNS.bind(document),L=Node.prototype.cloneNode;m=Object.__proto__||y?function(e,t){return e instanceof t}:function(e,t){for(var n=e;n;){if(n===t.prototype)return!0;n=n.__proto__}return!1},document.registerElement=t,document.createElement=f,document.createElementNS=p,Node.prototype.cloneNode=h,e.registry=S,e["instanceof"]=m,e.reservedTagList=E,e.getRegisteredDefinition=l,document.register=document.registerElement}),function(e){function t(){a(wrap(document)),window.HTMLImports&&(HTMLImports.__importsParsingHook=function(e){a(wrap(e["import"]))}),CustomElements.ready=!0,setTimeout(function(){CustomElements.readyTime=Date.now(),window.HTMLImports&&(CustomElements.elapsed=CustomElements.readyTime-HTMLImports.readyTime),document.dispatchEvent(new CustomEvent("WebComponentsReady",{bubbles:!0}))})}var n=e.useNative,r=e.initializeModules,o=/Trident/.test(navigator.userAgent);if(n){var i=function(){};e.watchShadow=i,e.upgrade=i,e.upgradeAll=i,e.upgradeDocumentTree=i,e.upgradeSubtree=i,e.takeRecords=i,e["instanceof"]=function(e,t){return e instanceof t}}else r();var a=e.upgradeDocumentTree;if(window.wrap||(window.ShadowDOMPolyfill?(window.wrap=ShadowDOMPolyfill.wrapIfNeeded,window.unwrap=ShadowDOMPolyfill.unwrapIfNeeded):window.wrap=window.unwrap=function(e){return e}),o&&"function"!=typeof window.CustomEvent&&(window.CustomEvent=function(e,t){t=t||{};var n=document.createEvent("CustomEvent");return n.initCustomEvent(e,Boolean(t.bubbles),Boolean(t.cancelable),t.detail),n},window.CustomEvent.prototype=window.Event.prototype),"complete"===document.readyState||e.flags.eager)t();else if("interactive"!==document.readyState||window.attachEvent||window.HTMLImports&&!window.HTMLImports.ready){var s=window.HTMLImports&&!HTMLImports.ready?"HTMLImportsLoaded":"DOMContentLoaded";window.addEventListener(s,t)}else t()}(window.CustomElements),function(){Function.prototype.bind||(Function.prototype.bind=function(e){var t=this,n=Array.prototype.slice.call(arguments,1);return function(){var r=n.slice();return r.push.apply(r,arguments),t.apply(e,r)}})}(window.WebComponents),function(e){"use strict";function t(){window.Polymer===o&&(window.Polymer=function(){throw new Error('You tried to use polymer without loading it first. To load polymer, ')})}if(!window.performance){var n=Date.now();window.performance={now:function(){return Date.now()-n}}}window.requestAnimationFrame||(window.requestAnimationFrame=function(){var e=window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame;return e?function(t){return e(function(){t(performance.now())})}:function(e){return window.setTimeout(e,1e3/60)}}()),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(){return window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||function(e){clearTimeout(e)}}());var r=[],o=function(e){"string"!=typeof e&&1===arguments.length&&Array.prototype.push.call(arguments,document._currentScript),r.push(arguments)};window.Polymer=o,e.consumeDeclarations=function(t){e.consumeDeclarations=function(){throw"Possible attempt to load Polymer twice"},t&&t(r),r=null},HTMLImports.useNative?t():addEventListener("DOMContentLoaded",t)}(window.WebComponents),function(){var e=document.createElement("style");e.textContent="body {transition: opacity ease-in 0.2s; } \nbody[unresolved] {opacity: 0; display: block; overflow: hidden; position: relative; } \n";var t=document.querySelector("head");t.insertBefore(e,t.firstChild)}(window.WebComponents),function(e){window.Platform=e}(window.WebComponents); \ No newline at end of file diff --git a/developers/credits.html b/developers/credits.html index 6ed64f72eb..e266483637 100644 --- a/developers/credits.html +++ b/developers/credits.html @@ -137,6 +137,7 @@
  • Julien Danjou
  • kixam
  • Markus Stenberg
  • +
  • Michael Arnauts
  • Piratonym
  • Rev Michael Greb
  • Ryan Kraus
  • diff --git a/getting-started/configuration.html b/getting-started/configuration.html index fa79e767df..ccbafcee62 100644 --- a/getting-started/configuration.html +++ b/getting-started/configuration.html @@ -174,8 +174,7 @@
  • Device tracking
  • ISY994 controller
  • Nest thermostat
  • -
  • PushBullet
  • -
  • PushOver
  • +
  • Notifications
  • SABnzbd
  • TellStick
  • Wink hub
  • diff --git a/images/supported_brands/accessories-text-editor.png b/images/supported_brands/accessories-text-editor.png new file mode 100644 index 0000000000000000000000000000000000000000..602a2750e3bf358b6a93b32d21368c08a5fd6ab4 GIT binary patch literal 2767 zcmV;=3NZDFP)G!av=%;000zpMObt}b#!QN zasWzUYjt8EQ*>o%Ze?=j`}Z#Z001F$MObuGZ*_8GWdLY&bZ|N^FKTIRZDC_BZFO^L zV`yP)Y%XJZX=dYI000T%Nkl6=5&I~h%0>iKfvdjVuFu*Kd z?|0vuVcu*^j+)eS^t$`Tf89-Fv?`I?bOy-|2bQa}EE(z;k0DDJiM{PuYK} z29lD_>_|FyR+*TT=>1dlpQ-@>=qD@|c1WZZa4$DU@~rz$%|KXG*x1-Z(b>^4k(y$W z5W2e5aP9gPc-H*`(fhk&4@KRKjt>2;HLk~hdUK1+ef({uyL-NT%otyoG|Abjfw+TF z!p5dXGH@4s_4P@pke1Q*S@-d;QYwMigHadEnQEtv3~qKG2UVLlgDfZrT4v2sD<(`h zZUG-29{$?#_@g~~y&e<_83c#?1FoiAg4nod=;&yF!hVO{zFOT0_`Oll5nY^hxWo76 z9`@LLDz8ENzj z?Da7fo}_Ou5O*kA7aSZs5P437Z2#f-;TZbw3Gqka+kfr_L1-wH?B7oeyshOf2q&kP zLc&9)U%hs@U8CutGk{U-?(U{iD&?F$8tm-spw~S;mi^XNC4u^JeVtAR|N8o*nizN^ zK6L9hv9S?QU0n?rP_bAHM`9x3bl@%!d#{9siKDyB4fNl;caLXUdTJ*Qhz87sCb&{i zaO+ZXgn;HUe+EGl&wk%=V&~GZlVMx5Cy$1~@ndn2nVA8nPMw0Fpgj;Bu@4$2jMkUF z@4DI)z8}%x&$b8b%*(&mgA1$|+!1K&fW2z5qu%E<8V%g|CbYY7owHhX!5eg`e(>;n zPl$;QrSKwluu3Ey_XF| z{CsMFxh^1W4y2~tF$(XswK0%nucv*(wYBG3?xzCZ-xUn-n&iJi+gI*z=|}*?#YI8P zfqjs?Wl1FG9KhTsawht<-$vi_mC{O@%hsc9J+k=ay=t|PN@ZJyXBzn_Q2g<*Uib?$ zDZDIUF{H+mmw(*JD9SAmY_%Ym(x5;pbBL7SS#EZ0ELi!t@uS zA&we&ZRE(2USZ*(TD@Lp6W%mk?1QUmv1TfT_)ahUo%JmIL;}Ci2ruJbrv+WWwyiyc z>0LH695V3Bx5tg!cb*Jg_=IK1U3Um^@{2V8W>cjaI9%5_v<^+pR|28ni)N z_;ps{6~Ywb^Ed;0z6{d2xw&~_U>z|qfavuZGiO93UrN?uLB$xbo$uD+O~KicyZ9Q2 zw~Vj?zW{0u%>&^^R|0>NmecrxgWucJ(*ye>BQ&G_ILeQ3xjAA0>!9Dv@|YdZOXKNq z07LYx<-D~#H;uTVzDLzx@B>vwn8||W!q?|sg!=k=sI9FfZ5_zvG8%|u@y9gd$B*Ad zxPFBJwrPMpg$EM-Zr*$I5{vjndi-L`)Uh3TYv34!jyeG}T=|6Nv|d#Ms>B6GcmYY9 z!i(`_4HZLaX(?1zN}#T;4w{>rX<$yDNz_c5JSm)Tz2S&~K}4e#E?$&UR$fM7a4NAl z6OcWhIX&~~qRq%m<1E%9Qq*N;r4waPm6V7nJTCl-%ez6DdlEFN$Iw}m3Cgq(3SYS4 zWk^081UWf5a5m`-oK8FqKb${D&zy#a$0Ts=aQVs=?K@Ma9w%IHvV8rmoyZ0QFB6UV zyO(Ef?W0->WxfH)kEpIjnGk*3a!EfXiC`ukIt`$lE6Q}orDPB@pzDx zl?l1IxulxqLs{8Fz$#cKlhN_-@Ob*EGo~eCfyo|b1KG98F=9A{v5*_@?X&s;{+xo4 z_6*og9R?oT=-{pJ%3x;@omva^S3iOBGn*j)-`nB#xf76*as#rnv&d|fkkh_~q)iiG z1*}jgs5(14$?WIB^qDiR6RvUWVdi3Dpr5$`bU11C+BJ1brINy86`GZu!IlbXAS~t^ z_xp^@bSfrw(g}!&8bBlXW|ftl2@B@Vg!Nt?aOw0h$jiM)U&yPfsz{17kg;3oj)SS9 zQmI(AvGrFgH6S9-&z=8X4&j=>8gMp;H#LBT+!UX+A1ZM$9NgaSV?G1s>4V!ao+Vfm z;;#(YqL}+ki_bD!Z5K^N91l|m$H)5>5(z9`wp4@_vb}o9w2+&z%Ew2I12EuE%K&2n z%M(1H%!U8PNXr^!KKF?1NXu7xN&713j4$&G$y_tz0PsQ7PX-;s*jEA(T86!hKX3w#B3sK`E+S3=dEhCGZd> zxesNi%2Ft=d;sOr2T&n>2$CvP8B|u6Q%S2UKw47)RW%Z*s+B-BQO%<&P!NtKD^{op z+Z=lZouLjI;p*!8!3KYSZL_?|rhyU@15DeOfzlsgfT)%+QvFB@a%D4F#LKz~+dRyW zJ`Io=@LKD;K`SE$n&pj*WR1`yV_M@q3pD}r8K#vfP|Y04QA(7IM7EhmSJ5J8TBV%1 zW~F3X{M>@SEx~t!*?r9brqIygZf*;vOq&M(PntS?x}LC2WViW#_G%$K8 zC0hP7X&KQHqPgrLHi9i9Uh3VN5F VCVkrDi286-WGYqLSh*k{rvC7=ctQQ=&{- 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 diff --git a/images/supported_brands/kodi.png b/images/supported_brands/kodi.png new file mode 100644 index 0000000000000000000000000000000000000000..fe537e1dc3fe7a6c9ec596a34762773b6d584baf GIT binary patch literal 6666 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 U)VtNN@Bjb+07*qoM6N<$f}cRg?f?J) literal 0 HcmV?d00001 diff --git a/images/supported_brands/logbook.png b/images/supported_brands/logbook.png deleted file mode 100644 index 2a34a8fd6c73c1592787d3b78877e0e1566ace2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 517 zcmV+g0{Z=lP)*h(l{5vjS?9HU za(3EkwblTRf6{eVm7D9^H1!z_A4>E2`~Y|l0mxb|zpV=kAt)4zfKbNwtSfC17ef3# zt8-chYzhYff|VM86!mly0*pqFR$w}v%VYq(-c@W7)ozeo3-JeApoT0Aka!E?2&W2Q zBLlfyjz*(F@cWMipv%Dau2l!TclFsAKqnp))!S_uAf9Ln0JbtvtJTZ_gb;MQU7|aU z?|{))5Z~%(fW&8kDL{C?Edh+jPufMMRj=1E%76rDx7$Q_8qWdaKcRmM;){j>7$K+tS9BRk!0x7u}L2X=|-L#8`|6NGS= zs4iqW2NH!a`lyW#nY9qw>e@dqYc`wZg8)U~SPqs-B`vL`%1o!zb081ANq{_15b$!} zzbmJyE(9No#UcX~K)oIB14qCio+Gv|EiSMIzVI%lpTOn^MJv=M<|l)h00000NkvXX Hu0mjfS<~1A diff --git a/images/supported_brands/network-wired-disconnected.png b/images/supported_brands/network-wired-disconnected.png new file mode 100644 index 0000000000000000000000000000000000000000..c172c528fd7e7b7ec70ae67deca9fd6cebe8946d GIT binary patch literal 3358 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 literal 0 HcmV?d00001 diff --git a/images/supported_brands/network-workgroup.png b/images/supported_brands/network-workgroup.png new file mode 100644 index 0000000000000000000000000000000000000000..1e3ee677da96e59d8b088d497a51e17193ea13c7 GIT binary patch literal 3146 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 literal 0 HcmV?d00001 diff --git a/images/supported_brands/text-x-generic.png b/images/supported_brands/text-x-generic.png new file mode 100644 index 0000000000000000000000000000000000000000..d2c0f73a089a42afada1467cf8e9699075b75d86 GIT binary patch literal 2118 zcmV-M2)Xx(P)fFDZ*Bm0X>@2HVIW9V zM@1lLWo&RDW^!+BAWC6tbz+882eSYG2Tw^vK~!ko)mTe!8&wqk&dk_xUe2R_ByAo| zTZEK8SiqiEWm74jwo+9Pufn1`{s0SBm5|^cR0y>QL{TM*fFckDDi**7A+>2kLIqUN zJnSST9zWuV=N=aGx_3NIh--tmN^<9VoSAdJ@0{Dppu50%MP~c;ux_I;*t`t(sla zEvq_KGz(+*mKKgI&M%z1`o%|Yc6ao@e)#a=T1y=e0?(&Y8O_?Lf(5%+vV$Z84E9lW z&~?_qwevsD_k(L))6tvk$NqsGiSd!K#P5In_Ugj?{ISc|E+0Gf#HqCwIv^561R;cP zupB1p>>BU8>BS8|(wYF+b`7Pn30*VL)7^`Q_B@>E?C5;#&aZcFe)7rX$De%i)Nd_u zfLZtksIf3h{snkFffR8Dx+zd-Zy>g=Cuz${NU)xlc#@Z4Fj$t z*`Z9pfFBoL9=KSuggV#H-aRjm%%X|qRgl+k4-001!~hFC0)s%0UQ$r`0{Y41J$^CE!L zO@@#k8(=VUi#b%QR!bSMEDNPl3Cp=3(Ua@}0qE-KLVsT$#>d7x%(cSQyYF9o=DBBH ze7_kPRb(=gO{)^AdJBbzz;}PmPyz8AD4InS%mPev4Q9bau~l%egL^CUW^a zzWeS6>_0HsySln^9Ke-r%V?lOjC^jTGYPH(P`Sa&vXV0G9*mfcFUa_28fn~Lq z0U|;wvjarrg2RZ%;$Q&rcw7gtu?+^)t}K-q^f9LhNgyy-=ESSm(WKNf;CHh@7f4Jn zj93Hx*=k4T7c%F0%lXx|F|Z>&h*-=3Q2-8000s1x+J=O+-Oa)wkWuMKD05)PjHrl0FQ$pzwZy z8Wc>9QZx3Sx!K7{LkDbTrEKMv@~GA9wyV(a&Mb(?7XA4y6jrJR@2Xp{lt$DX1A^65Yh@ki@9#shFR4hd|1J+PNtBsI1N{GK4ltYo z0gug6W|El-Y9B-J0a8u)z^9vs!9KROX*ccBIK9yE#Hwv4PDnUHa-fCwBVdc zG!a66+_}g*rxF4B9?IcaMVr)mv6T*mt293d142k4!&q9(qgt*0D-7(O7!N}CK^gE6 z9~#d3F&~Y-#Ez2mYE^EO#jNZX)aopnQ6X7IiJX(Ub}%qHI*RV@E_I{i7C~yz)@-kt za}gZgnXQX`k7k(x=QEjwD78Z5xl%YUn5p?X;KW_^1Dd8`-@d&d(v%7< zM6)s~jp5;;x;8gpK|(x)zM@)E4mCWU_fPZiV3pWmfF%YN+s=SDVzC$|_DnQi$cTtu zf8(5T{4g|}jZmOa+!La6A*xpjogzh@X0w#Ug@Q?2IzT}+(padkSenl@r9$y|91{~0 zTOGhC2f%)7!QS3PV0n32BPThSrI<28#uESyfZ?A`yRtSkoY|xTtLTSofwRA+O%4|t zoDq2i*=Een&L-Sr6`P2J=Y&yrI0nQ3bP`|*!G=bzq_R_ynH?!~W+xf_bp*ctwqMzp z6QcH!VF#R@8ACAh+}vEZ>p&Gi&2z#CwSXFcIDnqN)(T(UoW3!2=-?wnMEI}9?A*^V z*Vb;_zkk2qGai85D2cr=qEA1)dZD^r$qWn*JjQ}`CFLRz3%3JXt+%}A?p_OPh1=hJ z{q02;Tnei|*a6|vRGyihxiK?6^9q0-015ZIx;xVr?PW8AB^zwljtv0o015zBTn218 z{*2HAJO@hd{FnP3%{AT&vsN1~+u;4$u06sH8_%Iyqyx;%L?k3fYH~=0e%m=X!WovF wVOdIzPz%j&!g}6E?L_`92cjGThx&@Y0Yy7rLo=~!3jhEB07*qoM6N<$f~%v|hyVZp literal 0 HcmV?d00001 diff --git a/images/supported_brands/tp-link.png b/images/supported_brands/tp-link.png new file mode 100644 index 0000000000000000000000000000000000000000..bffb38c9707096c7ca6f79eb11414e9a076a4962 GIT binary patch literal 10310 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 literal 0 HcmV?d00001 diff --git a/images/supported_brands/utilities-terminal.png b/images/supported_brands/utilities-terminal.png new file mode 100644 index 0000000000000000000000000000000000000000..362f7636f9081d1eaed43f4a4a1ee1982622561b GIT binary patch literal 2603 zcmV+`3e@$9P)MU`)%&240000NbVXQnL3MO!Z*l-k zVQ_CCLt$)TZDDR?a%E}Xks2xh001d;MObu1WpiV4X>fFDZ*BlWVRL0h76c@5~--;$0gY zCnS-A9dQw)`~X1Qkx0N5Hz2?wSNQ`#6oHT;au5&y@4&dXC&j8%& z@fm<5QGr$-e2=@ z&Rz4mIoDeApEuuF-3ct)`9=tVmtTGv03pP_va{d&_8R+Xq)I7HoH()PXEOjoh!3o) zil03G_(u-v|2c#ZJoV(0gb>&Z>nsDo17NMi7{itI^;QDi2ktx&f_v}1hvUcZ!dQd1 z4wIf?wC43UUdQ|983BRdp@$wq2!Yl*-e(MTUANzDj6rLSgA{zgr}(Z3pt-RLcrX~S zy1L5N))vNEgb+v}5K%wqT5IaM=E~Mq8_!;Hn+3q^jb&AF`t)i3`qE20|NL`|$7N(e z?q)zrMOBp;V`KKM!5YK45B|$&JYvefV0CSkNmZsmYqXBp*E#~K>KdapRbAtpYl}ee zHv+JOf#G1lj~{)MXP2lP6CynM`8PT4QvSOLNq9jj1)2uBodE z=UgYbyW*b(&=^fA1;EO|6(0HK!#wubWBlsrr+MYIS6N!3*XK~KsT$Itd4?e&cL&`t*-19}o z<1yOC>eN;nqtUfN*L6JCn!2i}lLwSiHz%P6z+f=osb`PjKl&!8wPs zF0o)*30Y%P_UpC-8*QlTYKDOunD{IqtRRGFJ+QbqB+H8kKuDw%NELwy5kVD2PJeDL zQtSgEc(l>1EH48frR4aXcOnp2=WyQPtijrx!nxSFwIMHZ3R7UUMVlI3Yl>b$IjP!s z0{fUsG+zoZDNAHs$85Jus2NWPvA}418y^CJ2;%a_2G&{tR+g6;PbP6{>>~rN>jPuj zX-88^8z~uMS_WXB9ta_{h=;==d7fVvz~W#?e{L>iC}50ZVPT=|&_|CPMM;TE^71y8 zT5BzN)AVcvV0#7HSae+P+ zO~9lqDXS6?%+JkJR%JAHvp}&HlUQiNZ)H-IxK+f?tj|G*xIknV^)408-^q4FgJ{q$JOCDpiAsUr<&RLJ0Car>v@WCh45V zdp9%HFlOoj?_7J2bFRJadSKsEi3Y%MFd!@P2qFcpltL&OuchL^!U2SscFLmPM+m`u zzmLjtf_L~3Qb3_og)G*%)cmIX!>6Dd5LY*@Osmj-B{ai8oieW!Dw~3cM}~DaYE;H` zabtD_gsOtjWIr0$r@4}IK7n$(UU#0~bSG{A3>Fs1iy~@2lhX#480kt&wyZ>tG^;ir z;zA_uG6a0exNiZZ^6DHRH9D92g}08)OB*Pqu-5Fqj5d8>G#R7ns?By}V9G|rgxvKy z-BxM0RGi;C%XWG_Ewky`#Mdm#FlHYBcCH5o2NDBnnthcu*`HpwjAY5&Dr>7$@Ka+t zn>6m5;O(BecXrCa#-+= zm`I;_JM{oz8sEM>aA5ubd9Rr2J~?se!%ipTQ$I{S(2eir7%1}8ftwzX0&lC3 z?97!^+B=f%dZAg&d+$?4@~x~QnAzs#XBcs8Tw3o)XrCr-0Bmn>@8|)s`^s+Scg&4M zXH&PEn5mR}Ta~7=ax-S`R;q@9>#hfc5aPs%6WQUlJ7yL%>lZKY`iEOFx}8`E(E}{t zLkJ-gLMTA4udmPFvHCfL5G*e*^V%z~K+59G-m{oJ*|jfyy^ZRy=PA>Tqn)3}ebi1T z7Qp9$%fLhk;WI!1{fiebE`I6c{ncnR>c98id)JBLlOG`j%Cf}!Py!DE{{k)mrU6g@ z%je#I|DV73<6T`xcz>?^u#!u>>I!dVxS7>1BZY`_W0@PHW-0eeXar< zKnZxkR4S4fcoY0>B_XDD$`V!M07TQ>#K-xi?h_uN(~`wr?fKI*{s$g_*?qousc`@R N002ovPDHLkV1g(2#P$FH literal 0 HcmV?d00001 diff --git a/sitemap.xml b/sitemap.xml index 3eb3f09112..032b340a8f 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -82,474 +82,492 @@ https://home-assistant.io/developers/add_new_platform.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/getting-started/android.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/developers/api.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/developers/architecture.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/automation.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/browser.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/getting-started/configuration.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/configurator.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/conversation.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/developers/creating_components.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/developers/credits.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/device_sun_light_trigger.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/device_tracker.ddwrt.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/device_tracker.luci.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/device_tracker.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/device_tracker.netgear.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/device_tracker.nmap_scanner.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/device_tracker.tomato.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/device_tracker.tplink.html + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/discovery.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/downloader.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/developers/frontend.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/group.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/history.html - 2015-06-19T22:05:23-07:00 - weekly - 0.7 - - - https://home-assistant.io/ - 2015-06-19T22:05:23-07:00 - weekly - 1.0 - - - https://home-assistant.io/blog/archives/ - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/blog/ - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 - https://home-assistant.io/components/ - 2015-06-19T22:05:23-07:00 + https://home-assistant.io/ + 2015-06-23T23:49:58-07:00 + weekly + 1.0 + + + https://home-assistant.io/blog/archives/ + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/developers/ - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/ + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/getting-started/ - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/isy994.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/keyboard.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/light.hue.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/light.limitlessled.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/light.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/logbook.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/media_player.cast.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/media_player.kodi.html + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/media_player.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/media_player.mpd.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/modbus.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/notify.file.html + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/notify.instapush.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/notify.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/notify.nma.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/notify.pushbullet.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/notify.pushover.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/notify.smtp.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/notify.syslog.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/notify.xmpp.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/developers/python_api.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/developers/rest_api.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/scene.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/scheduler.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/script.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/sensor.bitcoin.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/sensor.forecast.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/sensor.mysensors.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/sensor.openweathermap.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/sensor.sabnzbd.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/sensor.swiss_public_transport.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/sensor.systemmonitor.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/sensor.time_date.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/sensor.transmission.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/simple_alarm.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/sun.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/switch.command_switch.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/switch.hikvision.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/switch.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/switch.transmission.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/switch.wemo.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/tellstick.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/thermostat.heat_control.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/thermostat.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/thermostat.nest.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/getting-started/troubleshooting.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/vera.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/developers/website.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/wink.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/components/zwave.html - 2015-06-19T22:05:23-07:00 + 2015-06-23T23:49:58-07:00 weekly 0.7 https://home-assistant.io/demo/frontend.html - 2015-06-16T22:43:17-07:00 + 2015-06-23T23:44:05-07:00 0.6 https://home-assistant.io/demo/index.html - 2015-02-08T23:22:22-08:00 + 2015-06-23T23:48:32-07:00 0.6