diff --git a/atom.xml b/atom.xml index f4712552bd..28a3367e4a 100644 --- a/atom.xml +++ b/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Home Assistant]]> - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 https://home-assistant.io/ @@ -13,6 +13,170 @@ Octopress + + <![CDATA[MQTT, Rasperry PI, Logitech Squeezebox and ASUSWRT routers now supported]]> + + 2015-08-09T18:01:00-07:00 + https://home-assistant.io/blog/2015/08/09/mqtt-raspberry-pi-squeezebox-asuswrt-support + It’s time for the August release and there is some serious good stuff this time. The core of Home Assistant has gone some serious clean up and a bump in test coverage thanks to @balloob. If you’re a developer, make sure you read up on the deprecation notices. @fabaff did another great round of documentating all the various components.

+ +

MQTT Support
+ +The big new addition in this release is the support for the MQTT protocol by @fabaff with some help from @balloob. It will now be possible to integrate any IoT device that talks via MQTT. For the initial release we support connecting Home Assistant to a broker (no TLS yet). Components can now subscribe and publish to MQTT topics (see the example) and also support for the automation component has been added. For more information, see the MQTT component page.

+ +
1
+2
+3
+4
+5
+6
+7
+8
+9
+
# Example configuration.yaml entry
+mqtt:
+  broker: IP_ADDRESS_BROKER
+  # All the other options are optional:
+  port: 1883
+  keepalive: 60
+  qos: 0
+  username: your_username
+  password: your_secret_password
+
+ + + + + + + +

Raspberry PI GPIO Support
+ +@gbarba has contributed support to use the general purpose input and output pins on a Raspberry PI as switches inside Home Assistant.

+ +
1
+2
+3
+4
+5
+6
+
# Example configuration.yaml entry
+switch:
+  platform: rpi_gpio
+  ports:
+    11: Fan Office
+    12: Light Desk
+
+ + +

ASUSWRT based routers
+ +@persandstrom has contributed support to do prescence detection using ASUSWRT based routers.

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

Logitech Squeezebox media player support
+ +@persandstrom also contributed support for the Logitech Squeezebox media player. This allows you to control your Logitech Squeezebox from Home Assistant.

+ +
1
+2
+3
+4
+5
+6
+7
+
# Example configuration.yaml entry
+media_player:
+  platform: squeezebox
+  host: 192.168.1.21
+  port: 9090
+  username: user
+  password: password
+
+ + +

Slack notification support
+ +@jamespcole has contributed a Slack platform for the notification platform. This allows you to deliver messages to any channel.

+ +
1
+2
+3
+4
+5
+
# Example configuration.yaml entry
+notify:
+  platform: slack
+  api_key: ABCDEFGHJKLMNOPQRSTUVXYZ
+  default_channel: '#general'
+
+ + +

Edimax Smart Switches support
+ +@rkabadi has contributed support for integrating Edimax Smart Switches into Home Assistant.

+ +
1
+2
+3
+4
+5
+6
+7
+
# Example configuration.yaml entry
+switch:
+  platform: edimax
+  host: 192.168.1.32
+  username: YOUR_USERNAME
+  password: YOUR_PASSWORD
+  name: Edimax Smart Plug
+
+ + +

RFXtrx sensor support
+@danielhiversen has contributed support for RFXtrx sensors. It supports sensors that communicate in the frequency range of 433.92 MHz.

+ +
1
+2
+3
+4
+
# Example configuration.yaml entry
+sensor:
+  - platform: rfxtrx
+    device: PATH_TO_DEVICE
+
+ + +

The path to your device, e.g. /dev/serial/by-id/usb-RFXCOM_RFXtrx433_A1Y0NJGR-if00-port0

+ +

TEMPer temperature sensor support
+Support for Temper temperature sensors has been contributed by @rkabadi.

+ +
1
+2
+3
+
# Example configuration.yaml entry
+sensor:
+  platform: temper
+
+ +]]>
+
+ <![CDATA[IP Cameras, Arduinos, Kodi and Efergy Energy Monitors now supported]]> diff --git a/blog/2014/12/18/website-launched/index.html b/blog/2014/12/18/website-launched/index.html index 83ea4a1795..5b91b1b04e 100644 --- a/blog/2014/12/18/website-launched/index.html +++ b/blog/2014/12/18/website-launched/index.html @@ -213,6 +213,12 @@ diff --git a/blog/2014/12/26/home-control-home-automation-and-the-smart-home/index.html b/blog/2014/12/26/home-control-home-automation-and-the-smart-home/index.html index c10dda52b2..2fc3b2387d 100644 --- a/blog/2014/12/26/home-control-home-automation-and-the-smart-home/index.html +++ b/blog/2014/12/26/home-control-home-automation-and-the-smart-home/index.html @@ -275,6 +275,12 @@ This article will try to explain how they all relate.

diff --git a/blog/2015/01/04/hey-pushbullet-nice-talking-to-you/index.html b/blog/2015/01/04/hey-pushbullet-nice-talking-to-you/index.html index cf387f94db..9e81b96069 100644 --- a/blog/2015/01/04/hey-pushbullet-nice-talking-to-you/index.html +++ b/blog/2015/01/04/hey-pushbullet-nice-talking-to-you/index.html @@ -257,6 +257,12 @@ diff --git a/blog/2015/01/11/bootstrapping-your-setup-with-discovery/index.html b/blog/2015/01/11/bootstrapping-your-setup-with-discovery/index.html index 8de629a921..d1569f9b33 100644 --- a/blog/2015/01/11/bootstrapping-your-setup-with-discovery/index.html +++ b/blog/2015/01/11/bootstrapping-your-setup-with-discovery/index.html @@ -225,6 +225,12 @@ diff --git a/blog/2015/01/13/nest-in-da-house/index.html b/blog/2015/01/13/nest-in-da-house/index.html index 2a362af5d3..d57785e9e7 100644 --- a/blog/2015/01/13/nest-in-da-house/index.html +++ b/blog/2015/01/13/nest-in-da-house/index.html @@ -232,6 +232,12 @@ diff --git a/blog/2015/01/24/release-notes/index.html b/blog/2015/01/24/release-notes/index.html index eaeaef2155..b1aa4786cd 100644 --- a/blog/2015/01/24/release-notes/index.html +++ b/blog/2015/01/24/release-notes/index.html @@ -237,6 +237,12 @@ Home Assistant now supports --open-ui and --demo-mode diff --git a/blog/2015/02/08/looking-at-the-past/index.html b/blog/2015/02/08/looking-at-the-past/index.html index 38ff937a59..35c86ebe11 100644 --- a/blog/2015/02/08/looking-at-the-past/index.html +++ b/blog/2015/02/08/looking-at-the-past/index.html @@ -255,6 +255,12 @@ Events are saved in a local database. Google Graphs is used to draw the graph. D diff --git a/blog/2015/02/24/streaming-updates/index.html b/blog/2015/02/24/streaming-updates/index.html index 1aadb2f2d3..b299f97080 100644 --- a/blog/2015/02/24/streaming-updates/index.html +++ b/blog/2015/02/24/streaming-updates/index.html @@ -233,6 +233,12 @@ diff --git a/blog/2015/03/01/home-assistant-migrating-to-yaml/index.html b/blog/2015/03/01/home-assistant-migrating-to-yaml/index.html index b965e88e40..a85afe8393 100644 --- a/blog/2015/03/01/home-assistant-migrating-to-yaml/index.html +++ b/blog/2015/03/01/home-assistant-migrating-to-yaml/index.html @@ -220,6 +220,12 @@ YAML allows the use of lists, which should make the configuration file a bit mor diff --git a/blog/2015/03/08/new-logo/index.html b/blog/2015/03/08/new-logo/index.html index 000fb5111c..859190805e 100644 --- a/blog/2015/03/08/new-logo/index.html +++ b/blog/2015/03/08/new-logo/index.html @@ -221,6 +221,12 @@ The old logo, the new detailed logo and the new simple logo. diff --git a/blog/2015/03/11/release-notes/index.html b/blog/2015/03/11/release-notes/index.html index c99ae92c10..2b32b52f35 100644 --- a/blog/2015/03/11/release-notes/index.html +++ b/blog/2015/03/11/release-notes/index.html @@ -267,6 +267,12 @@ An initial version of voice control for Home Assistant has landed. The current i diff --git a/blog/2015/03/22/release-notes/index.html b/blog/2015/03/22/release-notes/index.html index 03362f2bb9..4129c5f70d 100644 --- a/blog/2015/03/22/release-notes/index.html +++ b/blog/2015/03/22/release-notes/index.html @@ -340,6 +340,12 @@ James Cole has also contributed support for the diff --git a/blog/2015/04/25/release-notes/index.html b/blog/2015/04/25/release-notes/index.html index 343a471b9e..1e1f513bfe 100644 --- a/blog/2015/04/25/release-notes/index.html +++ b/blog/2015/04/25/release-notes/index.html @@ -356,6 +356,12 @@ James has also contributed support for integrating Transmission into Home Assist diff --git a/blog/2015/05/09/utc-time-zone-awareness/index.html b/blog/2015/05/09/utc-time-zone-awareness/index.html index c398b2d4d3..7e76178308 100644 --- a/blog/2015/05/09/utc-time-zone-awareness/index.html +++ b/blog/2015/05/09/utc-time-zone-awareness/index.html @@ -245,6 +245,12 @@ diff --git a/blog/2015/05/14/release-notes/index.html b/blog/2015/05/14/release-notes/index.html index 7a4090ce98..aceef46c08 100644 --- a/blog/2015/05/14/release-notes/index.html +++ b/blog/2015/05/14/release-notes/index.html @@ -382,6 +382,12 @@ Before diving into the newly supported devices and services, I want to highlight diff --git a/blog/2015/06/10/release-notes/index.html b/blog/2015/06/10/release-notes/index.html index 8f1d6310e5..251f47f2cd 100644 --- a/blog/2015/06/10/release-notes/index.html +++ b/blog/2015/06/10/release-notes/index.html @@ -461,6 +461,12 @@ This switch platform allows you to control your motion detection setting on your diff --git a/blog/2015/07/11/ip-cameras-arduino-kodi-efergy-support/index.html b/blog/2015/07/11/ip-cameras-arduino-kodi-efergy-support/index.html index 0f12acc4e2..7b658d591a 100644 --- a/blog/2015/07/11/ip-cameras-arduino-kodi-efergy-support/index.html +++ b/blog/2015/07/11/ip-cameras-arduino-kodi-efergy-support/index.html @@ -405,6 +405,12 @@ Fabian has added support for Forecast.io to g diff --git a/blog/2015/08/09/mqtt-raspberry-pi-squeezebox-asuswrt-support/index.html b/blog/2015/08/09/mqtt-raspberry-pi-squeezebox-asuswrt-support/index.html new file mode 100644 index 0000000000..a846bf6c1a --- /dev/null +++ b/blog/2015/08/09/mqtt-raspberry-pi-squeezebox-asuswrt-support/index.html @@ -0,0 +1,463 @@ + + + + + + + + + + + + MQTT, Rasperry PI, Logitech Squeezebox and ASUSWRT routers now supported - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+ +
+ + +
+
+ +

MQTT, Rasperry PI, Logitech Squeezebox and ASUSWRT routers now supported

+ + + +
+ + + + + + + + + + + + + + + + + + + four minutes reading time + + + + + + + + + Comments + +
+ +
+ + + + +

It’s time for the August release and there is some serious good stuff this time. The core of Home Assistant has gone some serious clean up and a bump in test coverage thanks to @balloob. If you’re a developer, make sure you read up on the deprecation notices. @fabaff did another great round of documentating all the various components.

+ +

MQTT Support
+ +The big new addition in this release is the support for the MQTT protocol by @fabaff with some help from @balloob. It will now be possible to integrate any IoT device that talks via MQTT. For the initial release we support connecting Home Assistant to a broker (no TLS yet). Components can now subscribe and publish to MQTT topics (see the example) and also support for the automation component has been added. For more information, see the MQTT component page.

+ +
1
+2
+3
+4
+5
+6
+7
+8
+9
+
# Example configuration.yaml entry
+mqtt:
+  broker: IP_ADDRESS_BROKER
+  # All the other options are optional:
+  port: 1883
+  keepalive: 60
+  qos: 0
+  username: your_username
+  password: your_secret_password
+
+ + + + + + + +

Raspberry PI GPIO Support
+ +@gbarba has contributed support to use the general purpose input and output pins on a Raspberry PI as switches inside Home Assistant.

+ +
1
+2
+3
+4
+5
+6
+
# Example configuration.yaml entry
+switch:
+  platform: rpi_gpio
+  ports:
+    11: Fan Office
+    12: Light Desk
+
+ + +

ASUSWRT based routers
+ +@persandstrom has contributed support to do prescence detection using ASUSWRT based routers.

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

Logitech Squeezebox media player support
+ +@persandstrom also contributed support for the Logitech Squeezebox media player. This allows you to control your Logitech Squeezebox from Home Assistant.

+ +
1
+2
+3
+4
+5
+6
+7
+
# Example configuration.yaml entry
+media_player:
+  platform: squeezebox
+  host: 192.168.1.21
+  port: 9090
+  username: user
+  password: password
+
+ + +

Slack notification support
+ +@jamespcole has contributed a Slack platform for the notification platform. This allows you to deliver messages to any channel.

+ +
1
+2
+3
+4
+5
+
# Example configuration.yaml entry
+notify:
+  platform: slack
+  api_key: ABCDEFGHJKLMNOPQRSTUVXYZ
+  default_channel: '#general'
+
+ + +

Edimax Smart Switches support
+ +@rkabadi has contributed support for integrating Edimax Smart Switches into Home Assistant.

+ +
1
+2
+3
+4
+5
+6
+7
+
# Example configuration.yaml entry
+switch:
+  platform: edimax
+  host: 192.168.1.32
+  username: YOUR_USERNAME
+  password: YOUR_PASSWORD
+  name: Edimax Smart Plug
+
+ + +

RFXtrx sensor support
+@danielhiversen has contributed support for RFXtrx sensors. It supports sensors that communicate in the frequency range of 433.92 MHz.

+ +
1
+2
+3
+4
+
# Example configuration.yaml entry
+sensor:
+  - platform: rfxtrx
+    device: PATH_TO_DEVICE
+
+ + +

The path to your device, e.g. /dev/serial/by-id/usb-RFXCOM_RFXtrx433_A1Y0NJGR-if00-port0

+ +

TEMPer temperature sensor support
+Support for Temper temperature sensors has been contributed by @rkabadi.

+ +
1
+2
+3
+
# Example configuration.yaml entry
+sensor:
+  platform: temper
+
+ + + +
+ + +
+

Comments

+
+
+
+ + +
+ + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/blog/archives/index.html b/blog/archives/index.html index 8fedf2a0a8..b012fee52f 100644 --- a/blog/archives/index.html +++ b/blog/archives/index.html @@ -22,7 +22,7 @@ - + @@ -115,6 +115,43 @@ + + + +
+ +
@@ -804,6 +841,12 @@ diff --git a/blog/categories/architecture/atom.xml b/blog/categories/architecture/atom.xml index 1c91f7f92f..6ed49a8d4a 100644 --- a/blog/categories/architecture/atom.xml +++ b/blog/categories/architecture/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: architecture | Home Assistant]]> - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 https://home-assistant.io/ diff --git a/blog/categories/architecture/index.html b/blog/categories/architecture/index.html index 9504e0d518..abbad031a3 100644 --- a/blog/categories/architecture/index.html +++ b/blog/categories/architecture/index.html @@ -207,6 +207,12 @@ diff --git a/blog/categories/branding/atom.xml b/blog/categories/branding/atom.xml index fb34149380..a7c9912125 100644 --- a/blog/categories/branding/atom.xml +++ b/blog/categories/branding/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: branding | Home Assistant]]> - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 https://home-assistant.io/ diff --git a/blog/categories/branding/index.html b/blog/categories/branding/index.html index 6eecf8a1a1..43717794ce 100644 --- a/blog/categories/branding/index.html +++ b/blog/categories/branding/index.html @@ -207,6 +207,12 @@ diff --git a/blog/categories/component/atom.xml b/blog/categories/component/atom.xml index 0f70191f6a..6cf0736afa 100644 --- a/blog/categories/component/atom.xml +++ b/blog/categories/component/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: component | Home Assistant]]> - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 https://home-assistant.io/ diff --git a/blog/categories/component/index.html b/blog/categories/component/index.html index d915e5155f..094e010e9c 100644 --- a/blog/categories/component/index.html +++ b/blog/categories/component/index.html @@ -320,6 +320,12 @@ diff --git a/blog/categories/core/atom.xml b/blog/categories/core/atom.xml index f82ffd82d2..6183e10916 100644 --- a/blog/categories/core/atom.xml +++ b/blog/categories/core/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: core | Home Assistant]]> - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 https://home-assistant.io/ diff --git a/blog/categories/core/index.html b/blog/categories/core/index.html index c91d35f5cc..a581d4d7ee 100644 --- a/blog/categories/core/index.html +++ b/blog/categories/core/index.html @@ -244,6 +244,12 @@ diff --git a/blog/categories/frontend/atom.xml b/blog/categories/frontend/atom.xml index 1be03cbbb9..d4daa09db7 100644 --- a/blog/categories/frontend/atom.xml +++ b/blog/categories/frontend/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: frontend | Home Assistant]]> - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 https://home-assistant.io/ diff --git a/blog/categories/frontend/index.html b/blog/categories/frontend/index.html index 7bb3023097..b6159ec337 100644 --- a/blog/categories/frontend/index.html +++ b/blog/categories/frontend/index.html @@ -246,6 +246,12 @@ diff --git a/blog/categories/release-notes/atom.xml b/blog/categories/release-notes/atom.xml index 9de531802b..27ea6a1a0d 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-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 https://home-assistant.io/ @@ -13,6 +13,113 @@ Octopress + + <![CDATA[MQTT, Rasperry PI, Logitech Squeezebox and ASUSWRT routers now supported]]> + + 2015-08-09T18:01:00-07:00 + https://home-assistant.io/blog/2015/08/09/mqtt-raspberry-pi-squeezebox-asuswrt-support + It’s time for the August release and there is some serious good stuff this time. The core of Home Assistant has gone some serious clean up and a bump in test coverage thanks to @balloob. If you’re a developer, make sure you read up on the deprecation notices. @fabaff did another great round of documentating all the various components.

+ +

MQTT Support
+ +The big new addition in this release is the support for the MQTT protocol by @fabaff with some help from @balloob. It will now be possible to integrate any IoT device that talks via MQTT. For the initial release we support connecting Home Assistant to a broker (no TLS yet). Components can now subscribe and publish to MQTT topics (see the example) and also support for the automation component has been added. For more information, see the MQTT component page.

+ +
# Example configuration.yaml entry
+mqtt:
+  broker: IP_ADDRESS_BROKER
+  # All the other options are optional:
+  port: 1883
+  keepalive: 60
+  qos: 0
+  username: your_username
+  password: your_secret_password
+
+ + + + +

Raspberry PI GPIO Support
+ +@gbarba has contributed support to use the general purpose input and output pins on a Raspberry PI as switches inside Home Assistant.

+ +
# Example configuration.yaml entry
+switch:
+  platform: rpi_gpio
+  ports:
+    11: Fan Office
+    12: Light Desk
+
+ +

ASUSWRT based routers
+ +@persandstrom has contributed support to do prescence detection using ASUSWRT based routers.

+ +
# Example configuration.yaml entry
+device_tracker:
+  platform: asuswrt
+  host: YOUR_ROUTER_IP
+  username: YOUR_ADMIN_USERNAME
+  password: YOUR_ADMIN_PASSWORD
+
+ +

Logitech Squeezebox media player support
+ +@persandstrom also contributed support for the Logitech Squeezebox media player. This allows you to control your Logitech Squeezebox from Home Assistant.

+ +
# Example configuration.yaml entry
+media_player:
+  platform: squeezebox
+  host: 192.168.1.21
+  port: 9090
+  username: user
+  password: password
+
+ +

Slack notification support
+ +@jamespcole has contributed a Slack platform for the notification platform. This allows you to deliver messages to any channel.

+ +
# Example configuration.yaml entry
+notify:
+  platform: slack
+  api_key: ABCDEFGHJKLMNOPQRSTUVXYZ
+  default_channel: '#general'
+
+ +

Edimax Smart Switches support
+ +@rkabadi has contributed support for integrating Edimax Smart Switches into Home Assistant.

+ +
# Example configuration.yaml entry
+switch:
+  platform: edimax
+  host: 192.168.1.32
+  username: YOUR_USERNAME
+  password: YOUR_PASSWORD
+  name: Edimax Smart Plug
+
+ +

RFXtrx sensor support
+@danielhiversen has contributed support for RFXtrx sensors. It supports sensors that communicate in the frequency range of 433.92 MHz.

+ +
# Example configuration.yaml entry
+sensor:
+  - platform: rfxtrx
+    device: PATH_TO_DEVICE
+
+ +

The path to your device, e.g. /dev/serial/by-id/usb-RFXCOM_RFXtrx433_A1Y0NJGR-if00-port0

+ +

TEMPer temperature sensor support
+Support for Temper temperature sensors has been contributed by @rkabadi.

+ +
# Example configuration.yaml entry
+sensor:
+  platform: temper
+
+]]>
+
+ <![CDATA[IP Cameras, Arduinos, Kodi and Efergy Energy Monitors now supported]]> @@ -521,89 +628,6 @@ switch: 2: name: My other switch -]]> - - - - <![CDATA[Release notes for March 22, 2015]]> - - 2015-03-22T00:21:00-08:00 - https://home-assistant.io/blog/2015/03/22/release-notes - A new version of Home Assistant has just been pushed out. It contains bugfixes contributed by jamespcole, andythigpen, trainman419 and me. It also adds a bunch of great new features:

- -

Script
-Andythigpen has contributed a script component. This allows users to create a sequence of service calls and delays. Scripts can be started using the service script/turn_on and interrupted using the service script/turn_off. A separate page has been added to the frontend to see the status of your scripts.

- -
# Example configuration.yaml entry
-script:
-  # Turns on the bedroom lights and then the living room lights 1 minute later
-  wakeup:
-    alias: Wake Up
-    sequence:
-      - alias: Bedroom lights on
-        execute_service: light.turn_on
-        service_data:
-          entity_id: group.bedroom
-      - delay:
-          # supports seconds, milliseconds, minutes, hours, etc.
-          minutes: 1
-      - alias: Living room lights on
-        execute_service: light.turn_on
-        service_data:
-          entity_id: group.living_room
-
- - - - -

Scene
-I (Paulus) have contributed a scene component. A user can create scenes that capture the states you want certain entities to be. For example a scene can contain that light A should be turned on and light B should be bright red. Deactivating a scene will restore the previous state from before the scene was activated. Just like scripts, scenes have their own separate page to see which scenes are on.

- -
# Example configuration.yaml entry
-scene:
-  - name: Romantic
-    entities:
-      light.tv_back_light: on
-      light.ceiling:
-        state: on
-        color: [0.33, 0.66]
-        brightness: 200
-
- -

-SABnzbd
- -James Cole has contributed support to integrate SABnzbd. This will allow you to monitor your downloads from within Home Assistant and setup automation based on the information.

- -
# Example configuration.yaml entry
-sensor:
-  - platform: sabnzbd
-    name: SAB
-    api_key: YOUR_API_KEY
-    # Example: http://192.168.1.32:8124/
-    base_url: YOUR_SABNZBD_BASE_URL
-    monitored_variables:
-        - type: 'current_status'
-        - type: 'speed'
-        - type: 'queue_size'
-        - type: 'queue_remaining'
-        - type: 'disk_size'
-        - type: 'disk_free'
-
- -

-PushOver
- -James Cole has also contributed support for the PushOver service as a platform for the notify component. This allows components to send messages to the user using PushOver.

- -
# Example configuration.yaml entry
-notify:
-    platform: pushover
-    # Get this by registering a new application on https://pushover.net
-    api_key: ABCDEFGHJKLMNOPQRSTUVXYZ
-    # Get this by logging into your account on https://pushover.net
-    user_key: ABCDEFGHJKLMNOPQRSTUVXYZ
-
]]>
diff --git a/blog/categories/release-notes/index.html b/blog/categories/release-notes/index.html index 15d3c6d2a1..d0c1d5b55a 100644 --- a/blog/categories/release-notes/index.html +++ b/blog/categories/release-notes/index.html @@ -115,6 +115,43 @@ + + + +
+ +
@@ -429,6 +466,12 @@ diff --git a/blog/categories/website/atom.xml b/blog/categories/website/atom.xml index af32386bba..e045099c74 100644 --- a/blog/categories/website/atom.xml +++ b/blog/categories/website/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: website | Home Assistant]]> - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 https://home-assistant.io/ diff --git a/blog/categories/website/index.html b/blog/categories/website/index.html index f453ced5f5..3fd7444408 100644 --- a/blog/categories/website/index.html +++ b/blog/categories/website/index.html @@ -207,6 +207,12 @@ diff --git a/blog/index.html b/blog/index.html index 92540f630a..c86a65005b 100644 --- a/blog/index.html +++ b/blog/index.html @@ -22,7 +22,7 @@ - + @@ -97,6 +97,98 @@ +
+
+ +

+ MQTT, Rasperry PI, Logitech Squeezebox and ASUSWRT routers now supported +

+ + + +
+ + + + + + + + + + + + + + + + + + + four minutes reading time + + + + + + + + + Comments + +
+ +
+ + + + +
+

It’s time for the August release and there is some serious good stuff this time. The core of Home Assistant has gone some serious clean up and a bump in test coverage thanks to @balloob. If you’re a developer, make sure you read up on the deprecation notices. @fabaff did another great round of documentating all the various components.

+ +

MQTT Support
+ +The big new addition in this release is the support for the MQTT protocol by @fabaff with some help from @balloob. It will now be possible to integrate any IoT device that talks via MQTT. For the initial release we support connecting Home Assistant to a broker (no TLS yet). Components can now subscribe and publish to MQTT topics (see the example) and also support for the automation component has been added. For more information, see the MQTT component page.

+ +
1
+2
+3
+4
+5
+6
+7
+8
+9
+
# Example configuration.yaml entry
+mqtt:
+  broker: IP_ADDRESS_BROKER
+  # All the other options are optional:
+  port: 1883
+  keepalive: 60
+  qos: 0
+  username: your_username
+  password: your_secret_password
+
+ + + + + + Read on → +
+ +
+
+ +
@@ -906,78 +998,6 @@ YAML allows the use of lists, which should make the configuration file a bit mor

- -
-
- -

- Streaming updates -

- - - -
- - - - - - - - - - - - - - - - - - - 1 minute reading time - - - - - - - - - Comments - -
- -
- - - - -
-

Home Assistant has learned a new trick to get the latest information from the server: streaming updates. No longer will the frontend poll every 30 seconds for updates but instead it will keep a connection open and get the latest changes pushed as soon as they happen.

- -

A new toggle has been added ot the sidebar to turn streaming updates on and off. This preference will be saved on a per-browser basis using local storage. The toggle will also indicate when there is an error setting up a stream after which it will fall back to use polling.

- -

- - - - - - Read on → -
- -
-
- -

Setting up triggers

+

Setting up triggers

-

Time-based automation

+

Time-based automation

This allows you to trigger actions whenever the time matches your filter. You can setup filters to match on hours, minutes and seconds. Any filter that you omit will match all values.

@@ -167,7 +167,7 @@ time_seconds: 0
-

State-based automation

+

State-based automation

This allows you to trigger actions based on state changes of any entity within Home Assistant. You can omit the state_from and state_to to match all.

@@ -214,7 +214,29 @@

-

Setting up the action

+

MQTT-based automation

+ +

This allows you to trigger actions based on messages on an MQTT topic. You can specify an optional payload to match as well.

+ +
1
+2
+3
+4
+5
+6
+7
+8
+
  # Match any changes to bathroom light
+  platform: mqtt
+  mqtt_topic: home/bathroom/light
+
+  # Match only if bathroom light is turned on
+  platform: mqtt
+  mqtt_topic: home/bathroom/light
+  mqtt_payload: 'on'
+ + +

Setting up the action

Currently the only supported action is calling a service. Services are what devices expose to be controlled, so this will allow us to control anything that Home Assistant can control.

@@ -244,7 +266,7 @@ service_data: {"message":"YAY"}
-

Putting it all together

+

Putting it all together

For every combination of a trigger and an action we will have to combine the configuration lines and add it to an automation component entry in configuration.yaml. You can add an optional alias key to the configuration to make the logs more understandable. To setup multiple entries, append 2, 3 etc to the section name. An example of a configuration.yaml file:

diff --git a/components/device_tracker.asuswrt.html b/components/device_tracker.asuswrt.html new file mode 100644 index 0000000000..ffc31c8182 --- /dev/null +++ b/components/device_tracker.asuswrt.html @@ -0,0 +1,175 @@ + + + + + + + + + + + + ASUSWRT support - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+ +
+ + +
+ + +
+

+ ASUSWRT Support +

+
+
+ + +

+This platform offers presence detection by looking at connected devices to a ASUSWRT based router.

+ +

To use an ASUSWRT router in your installation, add the following to your configuration.yaml file:

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

This device tracker needs telnet to be enabled on the router.

+ +

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/device_tracker.ddwrt.html b/components/device_tracker.ddwrt.html index 4749d8de5a..ceaced86e8 100644 --- a/components/device_tracker.ddwrt.html +++ b/components/device_tracker.ddwrt.html @@ -108,6 +108,8 @@

This platform offers presence detection by looking at connected devices to a DD-WRT based router.

+

To use a DD-WRRT router in your installation, add the following to your configuration.yaml file:

+
+ + + + + + + + + + + + @@ -222,6 +234,12 @@ + + + + + + @@ -240,6 +258,18 @@ + + + + + + + + + + + + @@ -264,6 +294,12 @@ + + + + + + @@ -307,13 +343,13 @@ the manufacturers of these devices.

Home Assistant integrates with a variety of third party Home Automation hubs and networks. It allows you to control the connected switches, lights and sensors via Home Assistant. Click on the following logos for setup instructions:

-

- - - - - -

+

Zwave +Tellstick +Vera +Wink +ISY994 +Modbus +Arduino

Support for these devices is provided by the Home Assistant community and not @@ -378,6 +414,12 @@ the manufacturers of these devices.

+ + + + + + @@ -443,6 +485,12 @@ the manufacturers of these devices. + + + + + +
1
 2
 3
diff --git a/components/index.html b/components/index.html
index e8efd8f779..1d7fa9c4ca 100644
--- a/components/index.html
+++ b/components/index.html
@@ -159,6 +159,18 @@
   
Integrate MySensors sensors.
TEMPer sensorsIntegrate TEMPer sensors to get the current temperature.
ASUSWRT routersOffers presence detection by looking at connected devices.
DD-WRT routersTrack what is being played and control playback.
SqueezeboxTrack what is being played and control playback.
Command line SwitchControl the motion detection setting on your Hikvision camera.
Edimax switchesControl the state of your Edimax switches.
Raspberry PI GPIOControl the GPIO of a Raspberry Pi.
Insteon DevicesMonitors home energy use as measured by an Efergy engage hub.
RFXtrx sensorsMonitors values from RFXtrx sensors.
Generic IP cameras Allow sending messages using PushOver.
SlackAllow sending messages over Slack.
E-MailTime & Date Displays the time and the date.
MQTTAllow sending and recieving MQTT messages.
diff --git a/components/media_player.squeezebox.html b/components/media_player.squeezebox.html new file mode 100644 index 0000000000..5147973d3a --- /dev/null +++ b/components/media_player.squeezebox.html @@ -0,0 +1,174 @@ + + + + + + + + + + + + Logitech Squeezebox support - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+ +
+ + +
+ + +
+

+ Logitech Squeezebox Support +

+
+
+ + +

+The squeezebox platform allows you to control a Logitech Squeezebox multimedia system from Home Assistant.

+ +

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

+ +
1
+2
+3
+4
+5
+6
+7
+
# Example configuration.yaml entry
+media_player:
+  platform: squeezebox
+  host: 192.168.1.21
+  port: 9090
+  username: user
+  password: password
+ + + + + +
+ + +
+ + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/modbus.html b/components/modbus.html index ad0f232ccc..d95c021695 100644 --- a/components/modbus.html +++ b/components/modbus.html @@ -144,6 +144,9 @@ 32 33 34 +35 +36 +37
# Example configuration.yaml entry
 modbus:
   type: serial
@@ -167,6 +170,9 @@
           name: My boolean sensor
         2:
           name: My other boolean sensor
+    coils:
+        0:
+            name: My coil switch
 
 switch:
   platform: modbus
diff --git a/components/mqtt.html b/components/mqtt.html
new file mode 100644
index 0000000000..1be64b309b
--- /dev/null
+++ b/components/mqtt.html
@@ -0,0 +1,226 @@
+
+  
+  
+  
+    
+
+  
+    
+  
+    
+    
+    MQTT - Home Assistant
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+
+
+
+  
+
+    
+ +
+ + + +
+
+ +
+ + +
+ + +
+

+ MQTT +

+
+
+ + +

+MQTT (aka MQ Telemetry Transport) is a machine-to-machine or “Internet of Things” connectivity protocol on top of TCP/IP. It allows extremely lightweight publish/subscribe messaging transport.

+ +

The MQTT component needs an MQTT broker like Mosquitto or Mosca. The Eclipse Foundation is running a public MQTT broker at iot.eclipse.org or the Mosquitto Project under test.mosquitto.org. If you prefer to use a public, keep in mind to adjust the topic and that your messages may be publicly accessible.

+ +

To integrate MQTT into Home Assistant, add the following section to your configuration.yaml file:

+ +
1
+2
+3
+4
+5
+6
+7
+8
+9
+
# Example configuration.yaml entry
+mqtt:
+  broker: IP_ADDRESS_BROKER
+  # All the other options are optional:
+  port: 1883
+  keepalive: 60
+  qos: 0
+  username: your_username
+  password: your_secret_password
+
+ + + + +

+The MQTT component has no TLS support at the moment. This means that only plain-text communication is possible. +

+ + +

Building on top of MQTT

+ +

There are two ways to integrate MQTT into your process. One is by using the MQTT-automation rule. The other one is by integrating it into a component. See the MQTT example component how to do this.

+ +

Testing

+ +

For debugging purposes mosquitto is shipping commandline tools to send and recieve MQTT messages. For sending test messages to a broker running on localhost:

+ +
1
+
mosquitto_pub -h 127.0.0.1 -t home-assistant/switch/1/on -m "Switch is ON"
+
+ + +

Another way to send MQTT messages by hand is to use the “Developer Tools” in the Frontend. Choose “Call Service” and then mqtt/mqtt_send under “Available Services”. Enter something similar to the example below into the “Service Data” field.

+ +
1
+2
+3
+4
+
{
+   "topic":"home-assistant/switch/1/on",
+   "payload":"Switch is ON"
+}
+
+ + +

The message should appear on the bus:

+ +
1
+
... [homeassistant] Bus:Handling <Event MQTT_MESSAGE_RECEIVED[L]: topic=home-assistant/switch/1/on, qos=0, payload=Switch is ON>
+
+ + +

For reading all messages sent on the topic home-assistant to a broker running on localhost:

+ +
1
+
mosquitto_sub -h 127.0.0.1 -v -t "home-assistant/#"
+
+ + + +
+ + +
+ + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/notify.slack.html b/components/notify.slack.html new file mode 100644 index 0000000000..814fe7c072 --- /dev/null +++ b/components/notify.slack.html @@ -0,0 +1,173 @@ + + + + + + + + + + + + Slack notification support - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+ +
+ + +
+ + +
+

+ Slack Notification Support +

+
+
+ + +

+The slack platform allows you to deliver notifications from Home Assistant to Slack.

+ +

You need to obtain the Slack API token to be able to send notifications.

+ +

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

+ +
1
+2
+3
+4
+5
+
# Example configuration.yaml entry
+notify:
+  platform: slack
+  api_key: ABCDEFGHJKLMNOPQRSTUVXYZ
+  default_channel: '#general'
+
+ + + + + +
+ + +
+ + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/sensor.rfxtrx.html b/components/sensor.rfxtrx.html new file mode 100644 index 0000000000..539d336205 --- /dev/null +++ b/components/sensor.rfxtrx.html @@ -0,0 +1,168 @@ + + + + + + + + + + + + RFXtrx sensors support - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+ +
+ + +
+ + +
+

+ RFXtrx Sensors Support +

+
+
+ + +

The rfxtrx platform support sensors that communicate in the frequency range of 433.92 MHz.

+ +

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

+ +
1
+2
+3
+4
+
# Example configuration.yaml entry
+sensor:
+  - platform: rfxtrx
+    device: PATH_TO_DEVICE
+
+ + +

The path to your device, e.g. /dev/serial/by-id/usb-RFXCOM_RFXtrx433_A1Y0NJGR-if00-port0

+ + +
+ + +
+ + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/sensor.temper.html b/components/sensor.temper.html new file mode 100644 index 0000000000..72a58ce94b --- /dev/null +++ b/components/sensor.temper.html @@ -0,0 +1,163 @@ + + + + + + + + + + + + TEMPer sensors support - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+ +
+ + +
+ + +
+

+ TEMPer Sensors Support +

+
+
+ + +

This temper sensor platform allows you to get the current temperature from a TEMPer device.

+ +

To use your TEMPer sensor in your installation, add the following to your configuration.yaml file:

+ +
1
+2
+3
+
# Example configuration.yaml entry
+sensor:
+  platform: temper
+ + + +
+ + +
+ + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/switch.edimax.html b/components/switch.edimax.html new file mode 100644 index 0000000000..bae08f736e --- /dev/null +++ b/components/switch.edimax.html @@ -0,0 +1,172 @@ + + + + + + + + + + + + Edimax switches support - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+ +
+ + +
+ + +
+

+ Edimax Switches Support +

+
+
+ + +

+This edimax switch platform allows you to control the state of your Edimax switches.

+ +

To use your Edimax switch in your installation, add the following to your configuration.yaml file:

+ +
1
+2
+3
+4
+5
+6
+7
+
# Example configuration.yaml entry
+switch:
+  platform: edimax
+  host: 192.168.1.32
+  username: YOUR_USERNAME
+  password: YOUR_PASSWORD
+  name: Edimax Smart Plug
+ + + +
+ + +
+ + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/switch.rpi_gpio.html b/components/switch.rpi_gpio.html new file mode 100644 index 0000000000..9b13cfd115 --- /dev/null +++ b/components/switch.rpi_gpio.html @@ -0,0 +1,172 @@ + + + + + + + + + + + + Raspberry PI GPIO support - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+ +
+ + +
+ + +
+

+ Raspberry PI GPIO Support +

+
+
+ + +

+The rpi_gpio switch platform allows you to control the GPIOs of your Raspberry Pi.

+ +

To use your Raspberry Pi’s GPIO in your installation, add the following to your configuration.yaml file:

+ +
1
+2
+3
+4
+5
+6
+
# Example configuration.yaml entry
+switch:
+  platform: rpi_gpio
+  ports:
+    11: Fan Office
+    12: Light Desk
+ + +

For more details about the GPIO layout, visit the Wikipedia article about the Raspberry Pi.

+ + +
+ + +
+ + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/switch.wemo.html b/components/switch.wemo.html index 6e6b1ea3ad..378f6ddc02 100644 --- a/components/switch.wemo.html +++ b/components/switch.wemo.html @@ -106,14 +106,16 @@

-The wemo platform allows you to control your Belkin WeMo switches from within Home Assistant.

+The wemo platform allows you to control your Belkin WeMo switches from within Home Assistant.

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

1
 2
-
switch:
-  platform: wemo
+3
+
# Example configuration.yaml entry
+switch:
+  - platform: wemo
 
diff --git a/developers/credits.html b/developers/credits.html index 64e3b70bb7..368488c688 100644 --- a/developers/credits.html +++ b/developers/credits.html @@ -122,12 +122,14 @@
  • andythigpen
  • Austin
  • Azelphur
  • +
  • Daniel Iversen
  • Edwin Smulders
  • ettisan
  • Fabian Affolter
  • Finbarr Brady
  • Geoff Norton
  • gottsman
  • +
  • Guillem Barba
  • Gustav Ahlberg
  • Issac Kelly
  • James Cole
  • @@ -141,8 +143,10 @@
  • miniconfig
  • Piratonym
  • Rev Michael Greb
  • +
  • rkabadi
  • Ryan Kraus
  • Theodor Lindquist
  • +
  • vitorespindola
  • wind-rider
  • diff --git a/getting-started/index.html b/getting-started/index.html index f528963729..fec1bc769e 100644 --- a/getting-started/index.html +++ b/getting-started/index.html @@ -114,8 +114,77 @@
    +

    Preparation

    + +
    + + + + + + + + +
    Installing and running Home Assistant on your local machine is easy. Make sure you have Python 3.4 and git installed and execute the following code in a console: + +
    + +
    +

    The preparation of a Fedora 22 host will only take a couple of minutes. First install Python 3.4, git and the other needed packages out of the Fedora Package Collection. This ensure that you receive updates in the future.

    + +

    +It’s assumed that your user has an entry in the sudoers file. Otherwise, run the commands which needs more privileges as root. +

    + +
    1
    +
    sudo dnf -y install python3 python3-devel git gcc
    +
    + +
    + +
    + +

    CentOS is providing longtime support and often not shipping the latest release of a software component. To run, Python 3.x on CentOS Software Collections needs to be activated.

    + +
    Step 1. Install the tools for the Software Collection
    + +
    1
    +
    sudo yum -y install scl-utils
    +
    + +
    Step 2. Make the repository available.
    + +
    1
    +
    sudo yum -y install rhscl-rh-python34-*.noarch.rpm
    +
    + +
    Step 3. Install Python 3.x
    + +
    1
    +
    sudo yum -y install rh-python34
    +
    + +
    Step 4. Start using software collections:
    + +
    1
    +
    sudo scl enable rh-python34 bash
    +
    + +
    + +
    + +
    + + + + + + +

    Installation

    +

    1
     2
    @@ -189,7 +258,7 @@ When using boot2docker on OS X you are unable to map the local time to your Dock
     eval "$(pyenv virtualenv-init -)"
     
    -

    Step 2. Install requirements

    +
    Step 2. Install requirements
    1
     2
    diff --git a/images/supported_brands/asus.png b/images/supported_brands/asus.png
    new file mode 100644
    index 0000000000..8aa3e48ac7
    Binary files /dev/null and b/images/supported_brands/asus.png differ
    diff --git a/images/supported_brands/edimax.png b/images/supported_brands/edimax.png
    new file mode 100644
    index 0000000000..7a4d88f06a
    Binary files /dev/null and b/images/supported_brands/edimax.png differ
    diff --git a/images/supported_brands/kodi.png b/images/supported_brands/kodi.png
    index fe537e1dc3..dfc527269a 100644
    Binary files a/images/supported_brands/kodi.png and b/images/supported_brands/kodi.png differ
    diff --git a/images/supported_brands/logitech.png b/images/supported_brands/logitech.png
    new file mode 100644
    index 0000000000..1992dad2f9
    Binary files /dev/null and b/images/supported_brands/logitech.png differ
    diff --git a/images/supported_brands/mqtt.png b/images/supported_brands/mqtt.png
    new file mode 100644
    index 0000000000..1e649faf34
    Binary files /dev/null and b/images/supported_brands/mqtt.png differ
    diff --git a/images/supported_brands/preferences-system-sharing.png b/images/supported_brands/preferences-system-sharing.png
    new file mode 100644
    index 0000000000..966181e263
    Binary files /dev/null and b/images/supported_brands/preferences-system-sharing.png differ
    diff --git a/images/supported_brands/raspberry-pi.png b/images/supported_brands/raspberry-pi.png
    new file mode 100644
    index 0000000000..36439abc0d
    Binary files /dev/null and b/images/supported_brands/raspberry-pi.png differ
    diff --git a/images/supported_brands/slack.png b/images/supported_brands/slack.png
    new file mode 100644
    index 0000000000..07654fbc9f
    Binary files /dev/null and b/images/supported_brands/slack.png differ
    diff --git a/index.html b/index.html
    index 4d883cbba5..d7559244ad 100644
    --- a/index.html
    +++ b/index.html
    @@ -140,19 +140,17 @@ Home Assistant is an open-source home automation platform running on Python 3. T
     
    - + + - - -

    Browse all »

    diff --git a/sitemap.xml b/sitemap.xml index ab8c016283..3457de6a43 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -1,5 +1,10 @@ + + https://home-assistant.io/blog/2015/08/09/mqtt-raspberry-pi-squeezebox-asuswrt-support/ + 2015-08-09T18:01:00-07:00 + 0.8 + https://home-assistant.io/blog/2015/07/11/ip-cameras-arduino-kodi-efergy-support/ 2015-07-11T01:37:00-07:00 @@ -87,505 +92,553 @@ https://home-assistant.io/developers/add_new_platform.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/getting-started/android.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/developers/api.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/developers/architecture.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/arduino.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/automation.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/browser.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/camera.generic.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/getting-started/configuration.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/configurator.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/conversation.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/developers/creating_components.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/developers/credits.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/device_sun_light_trigger.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/device_tracker.asuswrt.html + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/device_tracker.ddwrt.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/device_tracker.luci.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/device_tracker.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/device_tracker.netgear.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/device_tracker.nmap_scanner.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/device_tracker.tomato.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/device_tracker.tplink.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/discovery.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/downloader.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/developers/frontend.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/group.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/history.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 + weekly + 0.7 + + + https://home-assistant.io/blog/archives/ + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/ - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 1.0 - - https://home-assistant.io/blog/archives/ - 2015-08-05T16:49:05-07:00 - weekly - 0.7 - https://home-assistant.io/blog/ - 2015-08-05T16:49:05-07:00 - weekly - 0.7 - - - https://home-assistant.io/developers/ - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/ - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 - https://home-assistant.io/getting-started/ - 2015-08-05T16:49:05-07:00 + https://home-assistant.io/developers/ + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/help/ - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 + weekly + 0.7 + + + https://home-assistant.io/getting-started/ + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/isy994.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/keyboard.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/light.hue.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/light.limitlessled.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/light.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/logbook.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/media_player.cast.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/media_player.kodi.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/media_player.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/media_player.mpd.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/media_player.squeezebox.html + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/modbus.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/mqtt.html + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/notify.file.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/notify.instapush.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/notify.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/notify.nma.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/notify.pushbullet.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/notify.pushover.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/notify.slack.html + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/notify.smtp.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/notify.syslog.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/notify.xmpp.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/developers/python_api.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/developers/rest_api.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/scene.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/scheduler.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/script.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/sensor.bitcoin.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/sensor.efergy.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/sensor.forecast.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/sensor.mysensors.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/sensor.openweathermap.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/sensor.rfxtrx.html + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/sensor.sabnzbd.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/sensor.swiss_public_transport.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/sensor.systemmonitor.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/sensor.temper.html + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/sensor.time_date.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/sensor.transmission.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/simple_alarm.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/sun.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/switch.command_switch.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/switch.edimax.html + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/switch.hikvision.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/switch.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/switch.rpi_gpio.html + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/switch.transmission.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/switch.wemo.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/tellstick.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/thermostat.heat_control.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/thermostat.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/thermostat.nest.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/getting-started/troubleshooting.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/vera.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/developers/website.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/wink.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/zwave.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 diff --git a/stylesheets/screen.css b/stylesheets/screen.css index 29ef68ef94..82c000abc2 100644 --- a/stylesheets/screen.css +++ b/stylesheets/screen.css @@ -26,4 +26,4 @@ * Email: dave@fontawesome.io * Twitter: http://twitter.com/davegandy * Work: Lead Product Designer @ Kyruus - http://kyruus.com - */@font-face{font-family:'FontAwesome';src:url("../font/fontawesome-webfont.eot?v=3.2.1");src:url("../font/fontawesome-webfont.eot?#iefix&v=3.2.1") format("embedded-opentype"),url("../font/fontawesome-webfont.woff?v=3.2.1") format("woff"),url("../font/fontawesome-webfont.ttf?v=3.2.1") format("truetype"),url("../font/fontawesome-webfont.svg#fontawesomeregular?v=3.2.1") format("svg");font-weight:normal;font-style:normal}[class^="icon-"],[class*=" icon-"]{font-family:FontAwesome;font-weight:normal;font-style:normal;text-decoration:inherit;-webkit-font-smoothing:antialiased;*margin-right:.3em}[class^="icon-"]:before,[class*=" icon-"]:before{text-decoration:inherit;display:inline-block;speak:none}.icon-large:before{vertical-align:-10%;font-size:1.33333em}a [class^="icon-"],a [class*=" icon-"]{display:inline}[class^="icon-"].icon-fixed-width,[class*=" icon-"].icon-fixed-width{display:inline-block;width:1.14286em;text-align:right;padding-right:0.28571em}[class^="icon-"].icon-fixed-width.icon-large,[class*=" icon-"].icon-fixed-width.icon-large{width:1.42857em}.icons-ul{margin-left:2.14286em;list-style-type:none}.icons-ul>li{position:relative}.icons-ul .icon-li{position:absolute;left:-2.14286em;width:2.14286em;text-align:center;line-height:inherit}[class^="icon-"].hide,[class*=" icon-"].hide{display:none}.icon-muted{color:#eee}.icon-light{color:#fff}.icon-dark{color:#333}.icon-border{border:solid 1px #eee;padding:.2em .25em .15em;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.icon-2x{font-size:2em}.icon-2x.icon-border{border-width:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.icon-3x{font-size:3em}.icon-3x.icon-border{border-width:3px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.icon-4x{font-size:4em}.icon-4x.icon-border{border-width:4px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.icon-5x{font-size:5em}.icon-5x.icon-border{border-width:5px;-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px}.pull-right{float:right}.pull-left{float:left}[class^="icon-"].pull-left,[class*=" icon-"].pull-left{margin-right:.3em}[class^="icon-"].pull-right,[class*=" icon-"].pull-right{margin-left:.3em}.icon-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:-35%}.icon-stack [class^="icon-"],.icon-stack [class*=" icon-"]{display:block;text-align:center;position:absolute;width:100%;height:100%;font-size:1em;line-height:inherit;*line-height:2em}.icon-stack .icon-stack-base{font-size:2em;*line-height:1em}.icon-spin{display:inline-block;-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear}a .icon-stack,a .icon-spin{display:inline-block;text-decoration:none}@-moz-keyframes spin{0%{-moz-transform:rotate(0deg)}100%{-moz-transform:rotate(359deg)}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0deg)}100%{-o-transform:rotate(359deg)}}@-ms-keyframes spin{0%{-ms-transform:rotate(0deg)}100%{-ms-transform:rotate(359deg)}}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}.icon-rotate-90:before{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1)}.icon-rotate-180:before{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2)}.icon-rotate-270:before{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3)}.icon-flip-horizontal:before{-webkit-transform:scale(-1, 1);-moz-transform:scale(-1, 1);-ms-transform:scale(-1, 1);-o-transform:scale(-1, 1);transform:scale(-1, 1)}.icon-flip-vertical:before{-webkit-transform:scale(1, -1);-moz-transform:scale(1, -1);-ms-transform:scale(1, -1);-o-transform:scale(1, -1);transform:scale(1, -1)}a .icon-rotate-90:before,a .icon-rotate-180:before,a .icon-rotate-270:before,a .icon-flip-horizontal:before,a .icon-flip-vertical:before{display:inline-block}.icon-glass:before{content:"\f000"}.icon-music:before{content:"\f001"}.icon-search:before{content:"\f002"}.icon-envelope-alt:before{content:"\f003"}.icon-heart:before{content:"\f004"}.icon-star:before{content:"\f005"}.icon-star-empty:before{content:"\f006"}.icon-user:before{content:"\f007"}.icon-film:before{content:"\f008"}.icon-th-large:before{content:"\f009"}.icon-th:before{content:"\f00a"}.icon-th-list:before{content:"\f00b"}.icon-ok:before{content:"\f00c"}.icon-remove:before{content:"\f00d"}.icon-zoom-in:before{content:"\f00e"}.icon-zoom-out:before{content:"\f010"}.icon-power-off:before,.icon-off:before{content:"\f011"}.icon-signal:before{content:"\f012"}.icon-gear:before,.icon-cog:before{content:"\f013"}.icon-trash:before{content:"\f014"}.icon-home:before{content:"\f015"}.icon-file-alt:before{content:"\f016"}.icon-time:before{content:"\f017"}.icon-road:before{content:"\f018"}.icon-download-alt:before{content:"\f019"}.icon-download:before{content:"\f01a"}.icon-upload:before{content:"\f01b"}.icon-inbox:before{content:"\f01c"}.icon-play-circle:before{content:"\f01d"}.icon-rotate-right:before,.icon-repeat:before{content:"\f01e"}.icon-refresh:before{content:"\f021"}.icon-list-alt:before{content:"\f022"}.icon-lock:before{content:"\f023"}.icon-flag:before{content:"\f024"}.icon-headphones:before{content:"\f025"}.icon-volume-off:before{content:"\f026"}.icon-volume-down:before{content:"\f027"}.icon-volume-up:before{content:"\f028"}.icon-qrcode:before{content:"\f029"}.icon-barcode:before{content:"\f02a"}.icon-tag:before{content:"\f02b"}.icon-tags:before{content:"\f02c"}.icon-book:before{content:"\f02d"}.icon-bookmark:before{content:"\f02e"}.icon-print:before{content:"\f02f"}.icon-camera:before{content:"\f030"}.icon-font:before{content:"\f031"}.icon-bold:before{content:"\f032"}.icon-italic:before{content:"\f033"}.icon-text-height:before{content:"\f034"}.icon-text-width:before{content:"\f035"}.icon-align-left:before{content:"\f036"}.icon-align-center:before{content:"\f037"}.icon-align-right:before{content:"\f038"}.icon-align-justify:before{content:"\f039"}.icon-list:before{content:"\f03a"}.icon-indent-left:before{content:"\f03b"}.icon-indent-right:before{content:"\f03c"}.icon-facetime-video:before{content:"\f03d"}.icon-picture:before{content:"\f03e"}.icon-pencil:before{content:"\f040"}.icon-map-marker:before{content:"\f041"}.icon-adjust:before{content:"\f042"}.icon-tint:before{content:"\f043"}.icon-edit:before{content:"\f044"}.icon-share:before{content:"\f045"}.icon-check:before{content:"\f046"}.icon-move:before{content:"\f047"}.icon-step-backward:before{content:"\f048"}.icon-fast-backward:before{content:"\f049"}.icon-backward:before{content:"\f04a"}.icon-play:before{content:"\f04b"}.icon-pause:before{content:"\f04c"}.icon-stop:before{content:"\f04d"}.icon-forward:before{content:"\f04e"}.icon-fast-forward:before{content:"\f050"}.icon-step-forward:before{content:"\f051"}.icon-eject:before{content:"\f052"}.icon-chevron-left:before{content:"\f053"}.icon-chevron-right:before{content:"\f054"}.icon-plus-sign:before{content:"\f055"}.icon-minus-sign:before{content:"\f056"}.icon-remove-sign:before{content:"\f057"}.icon-ok-sign:before{content:"\f058"}.icon-question-sign:before{content:"\f059"}.icon-info-sign:before{content:"\f05a"}.icon-screenshot:before{content:"\f05b"}.icon-remove-circle:before{content:"\f05c"}.icon-ok-circle:before{content:"\f05d"}.icon-ban-circle:before{content:"\f05e"}.icon-arrow-left:before{content:"\f060"}.icon-arrow-right:before{content:"\f061"}.icon-arrow-up:before{content:"\f062"}.icon-arrow-down:before{content:"\f063"}.icon-mail-forward:before,.icon-share-alt:before{content:"\f064"}.icon-resize-full:before{content:"\f065"}.icon-resize-small:before{content:"\f066"}.icon-plus:before{content:"\f067"}.icon-minus:before{content:"\f068"}.icon-asterisk:before{content:"\f069"}.icon-exclamation-sign:before{content:"\f06a"}.icon-gift:before{content:"\f06b"}.icon-leaf:before{content:"\f06c"}.icon-fire:before{content:"\f06d"}.icon-eye-open:before{content:"\f06e"}.icon-eye-close:before{content:"\f070"}.icon-warning-sign:before{content:"\f071"}.icon-plane:before{content:"\f072"}.icon-calendar:before{content:"\f073"}.icon-random:before{content:"\f074"}.icon-comment:before{content:"\f075"}.icon-magnet:before{content:"\f076"}.icon-chevron-up:before{content:"\f077"}.icon-chevron-down:before{content:"\f078"}.icon-retweet:before{content:"\f079"}.icon-shopping-cart:before{content:"\f07a"}.icon-folder-close:before{content:"\f07b"}.icon-folder-open:before{content:"\f07c"}.icon-resize-vertical:before{content:"\f07d"}.icon-resize-horizontal:before{content:"\f07e"}.icon-bar-chart:before{content:"\f080"}.icon-twitter-sign:before{content:"\f081"}.icon-facebook-sign:before{content:"\f082"}.icon-camera-retro:before{content:"\f083"}.icon-key:before{content:"\f084"}.icon-gears:before,.icon-cogs:before{content:"\f085"}.icon-comments:before{content:"\f086"}.icon-thumbs-up-alt:before{content:"\f087"}.icon-thumbs-down-alt:before{content:"\f088"}.icon-star-half:before{content:"\f089"}.icon-heart-empty:before{content:"\f08a"}.icon-signout:before{content:"\f08b"}.icon-linkedin-sign:before{content:"\f08c"}.icon-pushpin:before{content:"\f08d"}.icon-external-link:before{content:"\f08e"}.icon-signin:before{content:"\f090"}.icon-trophy:before{content:"\f091"}.icon-github-sign:before{content:"\f092"}.icon-upload-alt:before{content:"\f093"}.icon-lemon:before{content:"\f094"}.icon-phone:before{content:"\f095"}.icon-unchecked:before,.icon-check-empty:before{content:"\f096"}.icon-bookmark-empty:before{content:"\f097"}.icon-phone-sign:before{content:"\f098"}.icon-twitter:before{content:"\f099"}.icon-facebook:before{content:"\f09a"}.icon-github:before{content:"\f09b"}.icon-unlock:before{content:"\f09c"}.icon-credit-card:before{content:"\f09d"}.icon-rss:before{content:"\f09e"}.icon-hdd:before{content:"\f0a0"}.icon-bullhorn:before{content:"\f0a1"}.icon-bell:before{content:"\f0a2"}.icon-certificate:before{content:"\f0a3"}.icon-hand-right:before{content:"\f0a4"}.icon-hand-left:before{content:"\f0a5"}.icon-hand-up:before{content:"\f0a6"}.icon-hand-down:before{content:"\f0a7"}.icon-circle-arrow-left:before{content:"\f0a8"}.icon-circle-arrow-right:before{content:"\f0a9"}.icon-circle-arrow-up:before{content:"\f0aa"}.icon-circle-arrow-down:before{content:"\f0ab"}.icon-globe:before{content:"\f0ac"}.icon-wrench:before{content:"\f0ad"}.icon-tasks:before{content:"\f0ae"}.icon-filter:before{content:"\f0b0"}.icon-briefcase:before{content:"\f0b1"}.icon-fullscreen:before{content:"\f0b2"}.icon-group:before{content:"\f0c0"}.icon-link:before{content:"\f0c1"}.icon-cloud:before{content:"\f0c2"}.icon-beaker:before{content:"\f0c3"}.icon-cut:before{content:"\f0c4"}.icon-copy:before{content:"\f0c5"}.icon-paperclip:before,.icon-paper-clip:before{content:"\f0c6"}.icon-save:before{content:"\f0c7"}.icon-sign-blank:before{content:"\f0c8"}.icon-reorder:before{content:"\f0c9"}.icon-list-ul:before{content:"\f0ca"}.icon-list-ol:before{content:"\f0cb"}.icon-strikethrough:before{content:"\f0cc"}.icon-underline:before{content:"\f0cd"}.icon-table:before{content:"\f0ce"}.icon-magic:before{content:"\f0d0"}.icon-truck:before{content:"\f0d1"}.icon-pinterest:before{content:"\f0d2"}.icon-pinterest-sign:before{content:"\f0d3"}.icon-google-plus-sign:before{content:"\f0d4"}.icon-google-plus:before{content:"\f0d5"}.icon-money:before{content:"\f0d6"}.icon-caret-down:before{content:"\f0d7"}.icon-caret-up:before{content:"\f0d8"}.icon-caret-left:before{content:"\f0d9"}.icon-caret-right:before{content:"\f0da"}.icon-columns:before{content:"\f0db"}.icon-sort:before{content:"\f0dc"}.icon-sort-down:before{content:"\f0dd"}.icon-sort-up:before{content:"\f0de"}.icon-envelope:before{content:"\f0e0"}.icon-linkedin:before{content:"\f0e1"}.icon-rotate-left:before,.icon-undo:before{content:"\f0e2"}.icon-legal:before{content:"\f0e3"}.icon-dashboard:before{content:"\f0e4"}.icon-comment-alt:before{content:"\f0e5"}.icon-comments-alt:before{content:"\f0e6"}.icon-bolt:before{content:"\f0e7"}.icon-sitemap:before{content:"\f0e8"}.icon-umbrella:before{content:"\f0e9"}.icon-paste:before{content:"\f0ea"}.icon-lightbulb:before{content:"\f0eb"}.icon-exchange:before{content:"\f0ec"}.icon-cloud-download:before{content:"\f0ed"}.icon-cloud-upload:before{content:"\f0ee"}.icon-user-md:before{content:"\f0f0"}.icon-stethoscope:before{content:"\f0f1"}.icon-suitcase:before{content:"\f0f2"}.icon-bell-alt:before{content:"\f0f3"}.icon-coffee:before{content:"\f0f4"}.icon-food:before{content:"\f0f5"}.icon-file-text-alt:before{content:"\f0f6"}.icon-building:before{content:"\f0f7"}.icon-hospital:before{content:"\f0f8"}.icon-ambulance:before{content:"\f0f9"}.icon-medkit:before{content:"\f0fa"}.icon-fighter-jet:before{content:"\f0fb"}.icon-beer:before{content:"\f0fc"}.icon-h-sign:before{content:"\f0fd"}.icon-plus-sign-alt:before{content:"\f0fe"}.icon-double-angle-left:before{content:"\f100"}.icon-double-angle-right:before{content:"\f101"}.icon-double-angle-up:before{content:"\f102"}.icon-double-angle-down:before{content:"\f103"}.icon-angle-left:before{content:"\f104"}.icon-angle-right:before{content:"\f105"}.icon-angle-up:before{content:"\f106"}.icon-angle-down:before{content:"\f107"}.icon-desktop:before{content:"\f108"}.icon-laptop:before{content:"\f109"}.icon-tablet:before{content:"\f10a"}.icon-mobile-phone:before{content:"\f10b"}.icon-circle-blank:before{content:"\f10c"}.icon-quote-left:before{content:"\f10d"}.icon-quote-right:before{content:"\f10e"}.icon-spinner:before{content:"\f110"}.icon-circle:before{content:"\f111"}.icon-mail-reply:before,.icon-reply:before{content:"\f112"}.icon-github-alt:before{content:"\f113"}.icon-folder-close-alt:before{content:"\f114"}.icon-folder-open-alt:before{content:"\f115"}.icon-expand-alt:before{content:"\f116"}.icon-collapse-alt:before{content:"\f117"}.icon-smile:before{content:"\f118"}.icon-frown:before{content:"\f119"}.icon-meh:before{content:"\f11a"}.icon-gamepad:before{content:"\f11b"}.icon-keyboard:before{content:"\f11c"}.icon-flag-alt:before{content:"\f11d"}.icon-flag-checkered:before{content:"\f11e"}.icon-terminal:before{content:"\f120"}.icon-code:before{content:"\f121"}.icon-reply-all:before{content:"\f122"}.icon-mail-reply-all:before{content:"\f122"}.icon-star-half-full:before,.icon-star-half-empty:before{content:"\f123"}.icon-location-arrow:before{content:"\f124"}.icon-crop:before{content:"\f125"}.icon-code-fork:before{content:"\f126"}.icon-unlink:before{content:"\f127"}.icon-question:before{content:"\f128"}.icon-info:before{content:"\f129"}.icon-exclamation:before{content:"\f12a"}.icon-superscript:before{content:"\f12b"}.icon-subscript:before{content:"\f12c"}.icon-eraser:before{content:"\f12d"}.icon-puzzle-piece:before{content:"\f12e"}.icon-microphone:before{content:"\f130"}.icon-microphone-off:before{content:"\f131"}.icon-shield:before{content:"\f132"}.icon-calendar-empty:before{content:"\f133"}.icon-fire-extinguisher:before{content:"\f134"}.icon-rocket:before{content:"\f135"}.icon-maxcdn:before{content:"\f136"}.icon-chevron-sign-left:before{content:"\f137"}.icon-chevron-sign-right:before{content:"\f138"}.icon-chevron-sign-up:before{content:"\f139"}.icon-chevron-sign-down:before{content:"\f13a"}.icon-html5:before{content:"\f13b"}.icon-css3:before{content:"\f13c"}.icon-anchor:before{content:"\f13d"}.icon-unlock-alt:before{content:"\f13e"}.icon-bullseye:before{content:"\f140"}.icon-ellipsis-horizontal:before{content:"\f141"}.icon-ellipsis-vertical:before{content:"\f142"}.icon-rss-sign:before{content:"\f143"}.icon-play-sign:before{content:"\f144"}.icon-ticket:before{content:"\f145"}.icon-minus-sign-alt:before{content:"\f146"}.icon-check-minus:before{content:"\f147"}.icon-level-up:before{content:"\f148"}.icon-level-down:before{content:"\f149"}.icon-check-sign:before{content:"\f14a"}.icon-edit-sign:before{content:"\f14b"}.icon-external-link-sign:before{content:"\f14c"}.icon-share-sign:before{content:"\f14d"}.icon-compass:before{content:"\f14e"}.icon-collapse:before{content:"\f150"}.icon-collapse-top:before{content:"\f151"}.icon-expand:before{content:"\f152"}.icon-euro:before,.icon-eur:before{content:"\f153"}.icon-gbp:before{content:"\f154"}.icon-dollar:before,.icon-usd:before{content:"\f155"}.icon-rupee:before,.icon-inr:before{content:"\f156"}.icon-yen:before,.icon-jpy:before{content:"\f157"}.icon-renminbi:before,.icon-cny:before{content:"\f158"}.icon-won:before,.icon-krw:before{content:"\f159"}.icon-bitcoin:before,.icon-btc:before{content:"\f15a"}.icon-file:before{content:"\f15b"}.icon-file-text:before{content:"\f15c"}.icon-sort-by-alphabet:before{content:"\f15d"}.icon-sort-by-alphabet-alt:before{content:"\f15e"}.icon-sort-by-attributes:before{content:"\f160"}.icon-sort-by-attributes-alt:before{content:"\f161"}.icon-sort-by-order:before{content:"\f162"}.icon-sort-by-order-alt:before{content:"\f163"}.icon-thumbs-up:before{content:"\f164"}.icon-thumbs-down:before{content:"\f165"}.icon-youtube-sign:before{content:"\f166"}.icon-youtube:before{content:"\f167"}.icon-xing:before{content:"\f168"}.icon-xing-sign:before{content:"\f169"}.icon-youtube-play:before{content:"\f16a"}.icon-dropbox:before{content:"\f16b"}.icon-stackexchange:before{content:"\f16c"}.icon-instagram:before{content:"\f16d"}.icon-flickr:before{content:"\f16e"}.icon-adn:before{content:"\f170"}.icon-bitbucket:before{content:"\f171"}.icon-bitbucket-sign:before{content:"\f172"}.icon-tumblr:before{content:"\f173"}.icon-tumblr-sign:before{content:"\f174"}.icon-long-arrow-down:before{content:"\f175"}.icon-long-arrow-up:before{content:"\f176"}.icon-long-arrow-left:before{content:"\f177"}.icon-long-arrow-right:before{content:"\f178"}.icon-apple:before{content:"\f179"}.icon-windows:before{content:"\f17a"}.icon-android:before{content:"\f17b"}.icon-linux:before{content:"\f17c"}.icon-dribbble:before{content:"\f17d"}.icon-skype:before{content:"\f17e"}.icon-foursquare:before{content:"\f180"}.icon-trello:before{content:"\f181"}.icon-female:before{content:"\f182"}.icon-male:before{content:"\f183"}.icon-gittip:before{content:"\f184"}.icon-sun:before{content:"\f185"}.icon-moon:before{content:"\f186"}.icon-archive:before{content:"\f187"}.icon-bug:before{content:"\f188"}.icon-vk:before{content:"\f189"}.icon-weibo:before{content:"\f18a"}.icon-renren:before{content:"\f18b"}body,html{background-color:#f5f5f5;color:#222;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;height:100%}a{color:#049cdb;text-decoration:none}a:visited{color:#0378a9}.menu a{color:#049cdb}.gist{font-size:0.75em}@media only screen and (max-width: 480px){.title.indent::before{display:none}}.title.indent::before{content:"// ";color:#049cdb}.divider,.usp hr,.hero hr{border:none;border-bottom:2px solid #049cdb;clear:both;margin:2em 0}article.post img,article.page img,article.listing img{border:5px solid #fff;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,0.25)}article.post img.right,article.page img.right,article.listing img.right{float:right;margin:0 0 10px 20px}article.post img.left,article.page img.left,article.listing img.left{float:left;margin:0 20px 10px 0}.grid-wrapper{margin:auto;max-width:1100px;padding:0 25px}.grid-center{text-align:center}.grid-center>.grid__item{text-align:left}body>header{-webkit-box-shadow:0 0 3px rgba(0,0,0,0.25);-moz-box-shadow:0 0 3px rgba(0,0,0,0.25);-ms-box-shadow:0 0 3px rgba(0,0,0,0.25);-o-box-shadow:0 0 3px rgba(0,0,0,0.25);box-shadow:0 0 3px rgba(0,0,0,0.25);background-color:#fff;margin-bottom:2em}body>header .site-title{color:#222;font-size:1.7em;font-weight:bold;line-height:2.5em}body{-webkit-animation:bugfix infinite 1s}@-webkit-keyframes bugfix{from{padding:0}to{padding:0}}.header{position:relative}#toggle,.toggle{display:none}.menu li{list-style:none;float:left}@media only screen and (max-width: 790px){.menu{display:none;opacity:0;width:100%;position:absolute;right:0}.menu li{display:block;width:100%;margin:0}.menu li a{display:block;width:100%;text-decoration:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.toggle{display:block;position:relative;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}#toggle:checked ~ .menu{display:block;opacity:1;z-index:999}}ul.menu li{position:relative}ul.menu li:hover ul{display:block}ul.menu li ul{display:none;z-index:10;position:absolute;top:68px;margin-left:0;background-color:white}ul.menu li ul li{white-space:nowrap;float:none}ul.menu li ul li a{display:block;padding:20px 10px}ul.menu li ul li a:hover,ul.menu li ul li a:focus{background:#eee}header .grid{height:68px}.menu{margin:0;top:68px}.menu li a{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:all 0.25s linear;-moz-transition:all 0.25s linear;-o-transition:all 0.25s linear;transition:all 0.25s linear;display:block;padding:32px 20px;text-decoration:none;font-weight:normal;font-size:16px;line-height:1}.menu>li>a:hover,.menu>li>a:focus{background:#f5f5f5;box-shadow:inset 0px 5px #049cdb;color:#049cdb;padding:40px 20px 24px}.toggle{z-index:20}@media only screen and (max-width: 790px){.menu{background:#fff;border-top:1px solid #049cdb;border-bottom:4px solid #049cdb}.menu,.menu li,.menu li a{height:auto}.menu li a{padding:15px 15px !important}.menu li a:hover,.menu li a:focus{background:#eee;box-shadow:inset 5px 0px #049cdb;padding:15px 15px 15px 25px}.toggle{position:absolute;top:17px;right:10px}.toggle::after{-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:all 0.5s linear;-moz-transition:all 0.5s linear;-o-transition:all 0.5s linear;transition:all 0.5s linear;font-family:"FontAwesome";content:"\f0c9";display:inline-block;width:100%;padding:10px 15px;background:#049cdb;text-align:center;font-size:12px;color:#fff;white-space:nowrap}.toggle:hover::after{background:#0383b8}#toggle:checked+.toggle::after{content:attr(data-close)}ul.menu li ul{display:block;position:relative;top:0}}#page-wrap{min-height:100%;margin-bottom:-100px}#page-wrap::after{content:"";display:block;height:100px}body>footer{-webkit-box-shadow:0 0 3px rgba(0,0,0,0.25);-moz-box-shadow:0 0 3px rgba(0,0,0,0.25);-ms-box-shadow:0 0 3px rgba(0,0,0,0.25);-o-box-shadow:0 0 3px rgba(0,0,0,0.25);box-shadow:0 0 3px rgba(0,0,0,0.25);background-color:#fff;margin-top:3em}.copyright{margin:0;padding:20px 0;text-align:center}article blockquote{border-left:2px solid #049cdb;color:#484848;font-family:Georgia,"Times New Roman",Times,serif;font-size:1.25em;font-style:italic;padding-left:15px}article blockquote footer{float:right;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:0.8em}article blockquote footer strong::after{content:" \2014 "}article blockquote footer a{text-decoration:underline}article .pullquote-left::before,article .pullquote-right::before{border:medium none;color:#049cdb;content:"\201C" attr(data-pullquote) "\201D";float:right;font-family:Georgia,"Times New Roman",Times,serif;font-size:1.4em;font-style:italic;line-height:1.45em;margin:0.3em 0 1em 1.5em;padding:0;position:relative;top:7px;width:45%}@media only screen and (max-width: 480px){article .pullquote-left::before,article .pullquote-right::before{border-top:1px dotted #049cdb;border-bottom:1px dotted #049cdb;padding:0 10px;width:100%}}article .tags{display:inline}article .tags li{margin-right:2px}article .tags li::after{content:","}article .tags li:last-child::after{content:""}article .tags li a{color:#555;text-decoration:none}article .tags li a:hover{text-decoration:underline}article .meta{font-size:12px;padding:0 0 5px}article .meta>*{margin-right:15px;white-space:nowrap}article .meta>*:last-child{margin-right:0}article .meta .comments::before{content:"\f075";font-family:"FontAwesome";padding-right:3px}article.listing{margin-bottom:20px}article.listing h1{margin-bottom:0}article.listing h1 a{color:#049cdb;text-decoration:none}article.listing .entry-content{margin:10px 0}article.listing+hr{border:none;border-bottom:1px solid #049cdb}@media only screen and (max-width: 480px){article.post .tags{clear:both;margin-top:7px}}article.post h1{margin-bottom:0}article.post .meta{border-bottom:1px solid #049cdb;margin-bottom:20px}#archive-list article h1{margin-bottom:0}.sans,html .gist .gist-file .gist-meta{font-family:"Helvetica Neue",Arial,sans-serif}.mono,pre,p code,li code{font-family:Menlo,Monaco,"Andale Mono","lucida console","Courier New",monospace}.highlight table{margin-bottom:0}.highlight .gutter,.highlight .code{padding:0}.highlight .gutter .line-number{display:block}.highlight,html .gist .gist-file .gist-syntax .gist-highlight{border:1px solid #05232b !important}.highlight table td.code,html .gist .gist-file .gist-syntax .gist-highlight table td.code{width:100%}.highlight .line-numbers,html .gist .gist-file .gist-syntax .highlight .line_numbers{text-align:right;font-size:13px;line-height:1.45em;background:#073642 url('/images/noise.png?1419195603') top left !important;border-right:1px solid #00232c !important;-webkit-box-shadow:#083e4b -1px 0 inset;-moz-box-shadow:#083e4b -1px 0 inset;-ms-box-shadow:#083e4b -1px 0 inset;-o-box-shadow:#083e4b -1px 0 inset;box-shadow:#083e4b -1px 0 inset;text-shadow:#021014 0 -1px;padding:.8em !important;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.highlight .line-numbers span,html .gist .gist-file .gist-syntax .highlight .line_numbers span{color:#586e75 !important}figure.code,.gist-file,pre{-webkit-box-shadow:rgba(0,0,0,0.06) 0 0 10px;-moz-box-shadow:rgba(0,0,0,0.06) 0 0 10px;-ms-box-shadow:rgba(0,0,0,0.06) 0 0 10px;-o-box-shadow:rgba(0,0,0,0.06) 0 0 10px;box-shadow:rgba(0,0,0,0.06) 0 0 10px}figure.code .highlight pre,.gist-file .highlight pre,pre .highlight pre{-webkit-box-shadow:none;-moz-box-shadow:none;-ms-box-shadow:none;-o-box-shadow:none;box-shadow:none}.gist .highlight *::-moz-selection,figure.code .highlight *::-moz-selection{background:#386774;color:inherit;text-shadow:#002b36 0 1px}.gist .highlight *::-webkit-selection,figure.code .highlight *::-webkit-selection{background:#386774;color:inherit;text-shadow:#002b36 0 1px}.gist .highlight *::selection,figure.code .highlight *::selection{background:#386774;color:inherit;text-shadow:#002b36 0 1px}html .gist .gist-file{margin-bottom:1.8em;position:relative;border:none;padding-top:26px !important}html .gist .gist-file .highlight{margin-bottom:0}html .gist .gist-file .gist-syntax{border-bottom:0 !important;background:none !important}html .gist .gist-file .gist-syntax .gist-highlight{background:#002b36 !important}html .gist .gist-file .gist-syntax .highlight pre{padding:0}html .gist .gist-file .gist-meta{padding:.6em 0.8em;border:1px solid #083e4b !important;color:#586e75;font-size:.7em !important;background:#073642 url('/images/noise.png?1419195603') top left;line-height:1.5em}html .gist .gist-file .gist-meta a{color:#75878b !important}html .gist .gist-file .gist-meta a:hover{color:#93a1a1 !important}html .gist .gist-file .gist-meta a[href*='#file']{position:absolute;top:0;left:0;right:-10px;color:#474747 !important}html .gist .gist-file .gist-meta a[href*='#file']:hover{color:#049cdb !important}html .gist .gist-file .gist-meta a[href*=raw]{top:.4em}pre{background:#002b36 url('/images/noise.png?1419195603') top left;-webkit-border-radius:0.4em;-moz-border-radius:0.4em;border-radius:0.4em;border:1px solid #05232b;line-height:1.45em;font-size:13px;margin-bottom:2.1em;padding:.8em 1em;color:#93a1a1;overflow:auto}h3.filename+pre{-webkit-border-radius:0px;-moz-border-radius:0px;border-radius:0px}p code,li code{display:inline-block;white-space:no-wrap;background:#fff;font-size:.8em;line-height:1.5em;color:#555;border:1px solid #ddd;-webkit-border-radius:0.4em;-moz-border-radius:0.4em;border-radius:0.4em;padding:0 .3em;margin:-1px 0}p pre code,li pre code{font-size:1em !important;background:none;border:none}.pre-code,html .gist .gist-file .gist-syntax .highlight pre,.highlight code{font-family:Menlo,Monaco,"Andale Mono","lucida console","Courier New",monospace !important;overflow:scroll;overflow-y:hidden;display:block;padding:.8em;overflow-x:auto;line-height:1.45em;background:#002b36 url('/images/noise.png?1419195603') top left !important;color:#93a1a1 !important}.pre-code span,html .gist .gist-file .gist-syntax .highlight pre span,.highlight code span{color:#93a1a1 !important}.pre-code span,html .gist .gist-file .gist-syntax .highlight pre span,.highlight code span{font-style:normal !important;font-weight:normal !important}.pre-code .c,html .gist .gist-file .gist-syntax .highlight pre .c,.highlight code .c{color:#586e75 !important;font-style:italic !important}.pre-code .cm,html .gist .gist-file .gist-syntax .highlight pre .cm,.highlight code .cm{color:#586e75 !important;font-style:italic !important}.pre-code .cp,html .gist .gist-file .gist-syntax .highlight pre .cp,.highlight code .cp{color:#586e75 !important;font-style:italic !important}.pre-code .c1,html .gist .gist-file .gist-syntax .highlight pre .c1,.highlight code .c1{color:#586e75 !important;font-style:italic !important}.pre-code .cs,html .gist .gist-file .gist-syntax .highlight pre .cs,.highlight code .cs{color:#586e75 !important;font-weight:bold !important;font-style:italic !important}.pre-code .err,html .gist .gist-file .gist-syntax .highlight pre .err,.highlight code .err{color:#dc322f !important;background:none !important}.pre-code .k,html .gist .gist-file .gist-syntax .highlight pre .k,.highlight code .k{color:#cb4b16 !important}.pre-code .o,html .gist .gist-file .gist-syntax .highlight pre .o,.highlight code .o{color:#93a1a1 !important;font-weight:bold !important}.pre-code .p,html .gist .gist-file .gist-syntax .highlight pre .p,.highlight code .p{color:#93a1a1 !important}.pre-code .ow,html .gist .gist-file .gist-syntax .highlight pre .ow,.highlight code .ow{color:#2aa198 !important;font-weight:bold !important}.pre-code .gd,html .gist .gist-file .gist-syntax .highlight pre .gd,.highlight code .gd{color:#93a1a1 !important;background-color:#372c34 !important;display:inline-block}.pre-code .gd .x,html .gist .gist-file .gist-syntax .highlight pre .gd .x,.highlight code .gd .x{color:#93a1a1 !important;background-color:#4d2d33 !important;display:inline-block}.pre-code .ge,html .gist .gist-file .gist-syntax .highlight pre .ge,.highlight code .ge{color:#93a1a1 !important;font-style:italic !important}.pre-code .gh,html .gist .gist-file .gist-syntax .highlight pre .gh,.highlight code .gh{color:#586e75 !important}.pre-code .gi,html .gist .gist-file .gist-syntax .highlight pre .gi,.highlight code .gi{color:#93a1a1 !important;background-color:#1a412b !important;display:inline-block}.pre-code .gi .x,html .gist .gist-file .gist-syntax .highlight pre .gi .x,.highlight code .gi .x{color:#93a1a1 !important;background-color:#355720 !important;display:inline-block}.pre-code .gs,html .gist .gist-file .gist-syntax .highlight pre .gs,.highlight code .gs{color:#93a1a1 !important;font-weight:bold !important}.pre-code .gu,html .gist .gist-file .gist-syntax .highlight pre .gu,.highlight code .gu{color:#6c71c4 !important}.pre-code .kc,html .gist .gist-file .gist-syntax .highlight pre .kc,.highlight code .kc{color:#859900 !important;font-weight:bold !important}.pre-code .kd,html .gist .gist-file .gist-syntax .highlight pre .kd,.highlight code .kd{color:#268bd2 !important}.pre-code .kp,html .gist .gist-file .gist-syntax .highlight pre .kp,.highlight code .kp{color:#cb4b16 !important;font-weight:bold !important}.pre-code .kr,html .gist .gist-file .gist-syntax .highlight pre .kr,.highlight code .kr{color:#d33682 !important;font-weight:bold !important}.pre-code .kt,html .gist .gist-file .gist-syntax .highlight pre .kt,.highlight code .kt{color:#2aa198 !important}.pre-code .n,html .gist .gist-file .gist-syntax .highlight pre .n,.highlight code .n{color:#268bd2 !important}.pre-code .na,html .gist .gist-file .gist-syntax .highlight pre .na,.highlight code .na{color:#268bd2 !important}.pre-code .nb,html .gist .gist-file .gist-syntax .highlight pre .nb,.highlight code .nb{color:#859900 !important}.pre-code .nc,html .gist .gist-file .gist-syntax .highlight pre .nc,.highlight code .nc{color:#d33682 !important}.pre-code .no,html .gist .gist-file .gist-syntax .highlight pre .no,.highlight code .no{color:#b58900 !important}.pre-code .nl,html .gist .gist-file .gist-syntax .highlight pre .nl,.highlight code .nl{color:#859900 !important}.pre-code .ne,html .gist .gist-file .gist-syntax .highlight pre .ne,.highlight code .ne{color:#268bd2 !important;font-weight:bold !important}.pre-code .nf,html .gist .gist-file .gist-syntax .highlight pre .nf,.highlight code .nf{color:#268bd2 !important;font-weight:bold !important}.pre-code .nn,html .gist .gist-file .gist-syntax .highlight pre .nn,.highlight code .nn{color:#b58900 !important}.pre-code .nt,html .gist .gist-file .gist-syntax .highlight pre .nt,.highlight code .nt{color:#268bd2 !important;font-weight:bold !important}.pre-code .nx,html .gist .gist-file .gist-syntax .highlight pre .nx,.highlight code .nx{color:#b58900 !important}.pre-code .vg,html .gist .gist-file .gist-syntax .highlight pre .vg,.highlight code .vg{color:#268bd2 !important}.pre-code .vi,html .gist .gist-file .gist-syntax .highlight pre .vi,.highlight code .vi{color:#268bd2 !important}.pre-code .nv,html .gist .gist-file .gist-syntax .highlight pre .nv,.highlight code .nv{color:#268bd2 !important}.pre-code .mf,html .gist .gist-file .gist-syntax .highlight pre .mf,.highlight code .mf{color:#2aa198 !important}.pre-code .m,html .gist .gist-file .gist-syntax .highlight pre .m,.highlight code .m{color:#2aa198 !important}.pre-code .mh,html .gist .gist-file .gist-syntax .highlight pre .mh,.highlight code .mh{color:#2aa198 !important}.pre-code .mi,html .gist .gist-file .gist-syntax .highlight pre .mi,.highlight code .mi{color:#2aa198 !important}.pre-code .s,html .gist .gist-file .gist-syntax .highlight pre .s,.highlight code .s{color:#2aa198 !important}.pre-code .sd,html .gist .gist-file .gist-syntax .highlight pre .sd,.highlight code .sd{color:#2aa198 !important}.pre-code .s2,html .gist .gist-file .gist-syntax .highlight pre .s2,.highlight code .s2{color:#2aa198 !important}.pre-code .se,html .gist .gist-file .gist-syntax .highlight pre .se,.highlight code .se{color:#dc322f !important}.pre-code .si,html .gist .gist-file .gist-syntax .highlight pre .si,.highlight code .si{color:#268bd2 !important}.pre-code .sr,html .gist .gist-file .gist-syntax .highlight pre .sr,.highlight code .sr{color:#2aa198 !important}.pre-code .s1,html .gist .gist-file .gist-syntax .highlight pre .s1,.highlight code .s1{color:#2aa198 !important}.pre-code div .gd,html .gist .gist-file .gist-syntax .highlight pre div .gd,.highlight code div .gd,.pre-code div .gd .x,html .gist .gist-file .gist-syntax .highlight pre div .gd .x,.highlight code div .gd .x,.pre-code div .gi,html .gist .gist-file .gist-syntax .highlight pre div .gi,.highlight code div .gi,.pre-code div .gi .x,html .gist .gist-file .gist-syntax .highlight pre div .gi .x,.highlight code div .gi .x{display:inline-block;width:100%}.highlight,.gist-highlight{margin-bottom:1.8em;background:#002b36;overflow-y:hidden;overflow-x:auto}.highlight pre,.gist-highlight pre{background:none;-webkit-border-radius:0px;-moz-border-radius:0px;border-radius:0px;border:none;padding:0;margin-bottom:0}pre::-webkit-scrollbar,.highlight::-webkit-scrollbar,.gist-highlight::-webkit-scrollbar{height:.5em;background:rgba(255,255,255,0.15)}pre::-webkit-scrollbar-thumb:horizontal,.highlight::-webkit-scrollbar-thumb:horizontal,.gist-highlight::-webkit-scrollbar-thumb:horizontal{background:rgba(255,255,255,0.2);-webkit-border-radius:4px;border-radius:4px}.highlight code{background:#000}figure.code{background:none;padding:0;border:0;margin-bottom:1.5em}figure.code pre{margin-bottom:0}figure.code figcaption{position:relative}figure.code .highlight{margin-bottom:0}.code-title,html .gist .gist-file .gist-meta a[href*='#file'],h3.filename,figure.code figcaption{text-align:center;font-size:13px;line-height:2em;text-shadow:#cbcccc 0 1px 0;color:#474747;font-weight:normal;margin-bottom:0;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0;font-family:"Helvetica Neue", Arial, "Lucida Grande", "Lucida Sans Unicode", Lucida, sans-serif;background:#aaa url('/images/code_bg.png?1419195603') top repeat-x;border:1px solid #565656;border-top-color:#cbcbcb;border-left-color:#a5a5a5;border-right-color:#a5a5a5;border-bottom:0}.download-source,html .gist .gist-file .gist-meta a[href*=raw],figure.code figcaption a{position:absolute;right:.8em;color:#666 !important;z-index:1;font-size:13px;text-shadow:#cbcccc 0 1px 0;padding-left:3em}@media only screen and (min-width: 1024px){.aside-module:first-child .title{margin-top:0}}.aside-module .title{border-bottom:1px solid #049cdb;color:#333;margin:1em 0 0.5em;padding-bottom:5px}.aside-module .title .btn{border-bottom-left-radius:0;border-bottom-right-radius:0;padding:5px 10px;text-decoration:none}.aside-module .loading{display:block;font-size:2em;text-align:center}#github-repos li p{font-size:0.6em;margin-bottom:0}#pinboard .pin-item>p{margin-bottom:0}#pinboard .pin-item>p a:hover{text-decoration:underline}#pinboard .pin-item>p a::after{content:","}#pinboard .pin-item>p a:last-child::after{content:""}@media only screen and (min-width: 481px){.social ul{-webkit-column-count:2;-moz-column-count:2;column-count:2;-webkit-column-gap:10px;-moz-column-gap:10px;column-gap:10px}}.social a{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;background-color:#e8e8e8;border:1px solid #dcdcdc;border-radius:4px;color:#222;display:inline-block;font-size:0.8em;margin-bottom:7px;padding:1em;padding-right:0.5em;position:relative;text-decoration:none;width:100%;z-index:5;-webkit-transition:box-shadow 200ms,color 400ms,transform 400ms;-moz-transition:box-shadow 200ms,color 400ms,transform 400ms;-o-transition:box-shadow 200ms,color 400ms,transform 400ms;transition:box-shadow 200ms,color 400ms,transform 400ms}.social a:hover{color:#fff !important;text-decoration:none;text-shadow:1px 1px 0 rgba(0,0,0,0.25);z-index:7}.social a:hover::before{border:1px solid #000;height:100%;top:0;width:100%}.social a::before{background-color:#222;border-radius:4px;content:"";height:1px;position:absolute;top:50%;left:0%;width:0;z-index:-1;-webkit-transition:border 200ms,height 200ms 200ms,top 200ms 200ms,width 200ms;-moz-transition:border 200ms,height 200ms 200ms,top 200ms 200ms,width 200ms;-o-transition:border 200ms,height 200ms 200ms,top 200ms 200ms,width 200ms;transition:border 200ms,height 200ms 200ms,top 200ms 200ms,width 200ms}.social a i{font-size:2em;line-height:0.8em;margin-right:0.35em}.social a.adn{color:#4a484c}.social a.adn::before{background-color:#4a484c;border-color:#3d3c3f}.social a.dribbble{color:#ea4c89}.social a.dribbble::before{background-color:#ea4c89;border-color:#e7357a}.social a.facebook{color:#3b5998}.social a.facebook::before{background-color:#3b5998;border-color:#344e86}.social a.github{color:#333}.social a.github::before{background-color:#333;border-color:#262626}.social a.gplus{color:#db4a39}.social a.gplus::before{background-color:#db4a39;border-color:#d43927}.social a.linkedin{color:#4875b4}.social a.linkedin::before{background-color:#4875b4;border-color:#4169a2}.social a.pinterest{color:#cc2127}.social a.pinterest::before{background-color:#cc2127;border-color:#b61d23}.social a.stackoverflow{color:#fe7a15}.social a.stackoverflow::before{background-color:#fe7a15;border-color:#f86c01}.social a.twitter{color:#00a0d1}.social a.twitter::before{background-color:#00a0d1;border-color:#008cb7}.social a.youtube{color:#cc181e}.social a.youtube::before{background-color:#cc181e;border-color:#b5151b}.usp{text-align:center}@media only screen and (min-width: 481px) and (max-width: 1023px){.usp{margin-bottom:25px}}.usp .icon i{-webkit-border-radius:50%;-moz-border-radius:50%;border-radius:50%;border:10px solid #049cdb;color:#222;display:inline-block;font-size:6em;height:1.85em;line-height:normal;padding:0.3em;width:1.85em}.usp .title{color:#222;font-size:1.1em;line-height:3em;margin:0;text-align:center;text-transform:capitalize}.usp .title+hr{margin:0;margin-bottom:1em}.usp hr{margin-bottom:1em}.usp p{text-align:left}.hero{background-color:#0b6b94;background-position:0 50%;-webkit-background-size:cover;-moz-background-size:cover;-o-background-size:cover;background-size:cover;border-bottom:1px solid #fff;color:#fff;font-weight:bold;margin-top:-2em;margin-bottom:1.5em;padding:50px 0;position:relative}.hero>.grid-wrapper{position:relative;z-index:7}.hero .credit{font-size:0.75em;font-style:italic;position:absolute;bottom:0;right:10px;z-index:7}.hero .credit a{border-bottom:1px solid;color:#fff;text-decoration:none}.hero .credit .licence{border:none}.hero .avatar{text-align:center}@media only screen and (max-width: 1023px){.hero .avatar{margin-bottom:30px}}.hero .avatar img{-webkit-border-radius:100%;-moz-border-radius:100%;border-radius:100%;border:10px solid #049cdb}.hero h1{font-size:3.5em;line-height:1em;text-shadow:2px 2px 0 rgba(0,0,0,0.75)}.hero hr{box-shadow:1px 1px 0 rgba(0,0,0,0.75)}.hero p{text-shadow:1px 1px 0 rgba(0,0,0,0.75)}.hero p small{color:#eee;font-size:.65em}.pull-left{float:left}.pull-right{float:right}.clearfix,article blockquote{*zoom:1}.clearfix::before,article blockquote::before,.clearfix::after,article blockquote::after{display:table;content:"";line-height:0}.clearfix::after,article blockquote::after{clear:both}ul.unstyled,ul.inline,article ul.tags,ul.divided,ol.unstyled,ol.inline,article ol.tags,ol.divided{list-style-type:none;margin:0}ul.inline,article ul.tags,ol.inline,article ol.tags{list-style-type:none}ul.inline>li,article ul.tags>li,ol.inline>li,article ol.tags>li{display:inline}ul.divided>li,ol.divided>li{border-top:1px solid #fff;border-bottom:1px solid #e8e8e8;padding:0.5em 0}ul.divided>li:first-child,ol.divided>li:first-child{border-top:none;padding-top:0}ul.divided>li:last-child,ol.divided>li:last-child{border-bottom:none}.btn{background-color:#0494d1;background-image:-moz-linear-gradient(top, #049cdb, #048ac2);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#049cdb), to(#048ac2));background-image:-webkit-linear-gradient(top, #049cdb, #048ac2);background-image:-o-linear-gradient(top, #049cdb, #048ac2);background-image:linear-gradient(to bottom, #049cdb,#048ac2);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF049CDB', endColorstr='#FF048AC2', GradientType=0);-webkit-box-shadow:0 0 3px rgba(0,0,0,0.25);-moz-box-shadow:0 0 3px rgba(0,0,0,0.25);-ms-box-shadow:0 0 3px rgba(0,0,0,0.25);-o-box-shadow:0 0 3px rgba(0,0,0,0.25);box-shadow:0 0 3px rgba(0,0,0,0.25);border-radius:3px;color:#fff;display:inline-block;padding:7px 15px;text-decoration:none;text-shadow:1px 1px 0 rgba(0,0,0,0.25)}.btn:hover{text-decoration:underline}.btn:visited{color:#fff}.grid{letter-spacing:-1rem}.opera:-o-prefocus,.grid{word-spacing:-1rem}.grid__item{letter-spacing:normal;word-spacing:normal}@media only screen and (min-width: 481px){.flex{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-box-direction:normal;-moz-box-direction:normal;-webkit-box-orient:horizontal;-moz-box-orient:horizontal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-pack:start;-moz-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start;-webkit-align-content:stretch;-ms-flex-line-pack:stretch;align-content:stretch;-webkit-box-align:start;-moz-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start}.flex__item{-webkit-box-ordinal-group:1;-moz-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0;-webkit-box-flex:0;-moz-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}}.supported-brands{text-align:center}.supported-brands img{border:none !important;box-shadow:none !important;max-height:50px;max-width:200px;margin:10px}.brand{border:none !important;box-shadow:none !important;max-height:50px;max-width:200px;margin:10px}.brand.overview{max-width:100px}h1:hover a.title-link,h2:hover a.title-link,h3:hover a.title-link,h4:hover a.title-link,h5:hover a.title-link,h6:hover a.title-link{position:relative}h1:hover a.title-link::before,h2:hover a.title-link::before,h3:hover a.title-link::before,h4:hover a.title-link::before,h5:hover a.title-link::before,h6:hover a.title-link::before{position:absolute;left:-50px;padding-right:40px;font-family:"FontAwesome";content:"\f0c1"}.ha-title{white-space:nowrap}.ha-title img{width:40px;vertical-align:middle}.usp ul{text-align:left;margin-left:27px;margin-top:-18px}.usp .icon i{border:none !important}.hero-buttons a{margin:0 30px 10px 0}.hero-buttons a:last-child{margin:0}article.post img,article.post table,article.page img,article.page table,article.listing img,article.listing table{border-radius:3px;box-shadow:rgba(0,0,0,0.06) 0 0 10px}article.post img.no-shadow,article.page img.no-shadow,article.listing img.no-shadow{border:0;box-shadow:none}article.post>table,article.page>table,article.listing>table{background-color:#F3FCF5}article.post p.img,article.page p.img,article.listing p.img{background-color:#FFF;border-radius:5px;text-align:center;padding-bottom:3px;font-size:.9rem;box-shadow:rgba(0,0,0,0.06) 0 0 10px}article.post p.img img,article.page p.img img,article.listing p.img img{display:block;box-shadow:none;margin:0 auto}article.post li,article.page li,article.listing li{margin-bottom:10px}article.post li>p,article.page li>p,article.listing li>p{margin-bottom:0}article.post li:last-child,article.page li:last-child,article.listing li:last-child{margin-bottom:0}p.note{position:relative;background:#e7f2fa;padding:40px 12px 6px 12px;box-shadow:rgba(0,0,0,0.06) 0 0 10px}p.note::before{font-family:"FontAwesome";content:"\f05a" " Note " attr(data-title);background-color:#6ab0de;color:white;font-weight:bold;border-top-left-radius:3px;border-top-right-radius:3px;padding:6px 14px;line-height:1.5em;position:absolute;top:0;left:0;right:0}p.note.warning{background-color:#F7F9E1}p.note.warning::before{background-color:#bbb90d;content:"\f071" " Warning " attr(data-title)}.install-instructions-container #normal-install,.install-instructions-container #raspberry-install,.install-instructions-container #docker-install,.install-instructions-container .install-instructions{display:none}.install-instructions-container label.menu-selector{display:inline-block;text-align:center;padding:20px;white-space:nowrap;border-bottom:5px solid #999;transition:border-bottom-color .5s}.install-instructions-container label.menu-selector+label.menu-selector{margin-left:10px}.install-instructions-container #normal-install:checked ~ .menu-selector.normal,.install-instructions-container #raspberry-install:checked ~ .menu-selector.raspberry,.install-instructions-container #docker-install:checked ~ .menu-selector.docker{border-bottom-color:#049cdb}.install-instructions-container #normal-install:checked ~ .install-instructions.normal,.install-instructions-container #raspberry-install:checked ~ .install-instructions.raspberry,.install-instructions-container #docker-install:checked ~ .install-instructions.docker{display:block}.install-instructions-container .install-instructions{margin-top:30px} + */@font-face{font-family:'FontAwesome';src:url("../font/fontawesome-webfont.eot?v=3.2.1");src:url("../font/fontawesome-webfont.eot?#iefix&v=3.2.1") format("embedded-opentype"),url("../font/fontawesome-webfont.woff?v=3.2.1") format("woff"),url("../font/fontawesome-webfont.ttf?v=3.2.1") format("truetype"),url("../font/fontawesome-webfont.svg#fontawesomeregular?v=3.2.1") format("svg");font-weight:normal;font-style:normal}[class^="icon-"],[class*=" icon-"]{font-family:FontAwesome;font-weight:normal;font-style:normal;text-decoration:inherit;-webkit-font-smoothing:antialiased;*margin-right:.3em}[class^="icon-"]:before,[class*=" icon-"]:before{text-decoration:inherit;display:inline-block;speak:none}.icon-large:before{vertical-align:-10%;font-size:1.33333em}a [class^="icon-"],a [class*=" icon-"]{display:inline}[class^="icon-"].icon-fixed-width,[class*=" icon-"].icon-fixed-width{display:inline-block;width:1.14286em;text-align:right;padding-right:0.28571em}[class^="icon-"].icon-fixed-width.icon-large,[class*=" icon-"].icon-fixed-width.icon-large{width:1.42857em}.icons-ul{margin-left:2.14286em;list-style-type:none}.icons-ul>li{position:relative}.icons-ul .icon-li{position:absolute;left:-2.14286em;width:2.14286em;text-align:center;line-height:inherit}[class^="icon-"].hide,[class*=" icon-"].hide{display:none}.icon-muted{color:#eee}.icon-light{color:#fff}.icon-dark{color:#333}.icon-border{border:solid 1px #eee;padding:.2em .25em .15em;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.icon-2x{font-size:2em}.icon-2x.icon-border{border-width:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.icon-3x{font-size:3em}.icon-3x.icon-border{border-width:3px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.icon-4x{font-size:4em}.icon-4x.icon-border{border-width:4px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.icon-5x{font-size:5em}.icon-5x.icon-border{border-width:5px;-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px}.pull-right{float:right}.pull-left{float:left}[class^="icon-"].pull-left,[class*=" icon-"].pull-left{margin-right:.3em}[class^="icon-"].pull-right,[class*=" icon-"].pull-right{margin-left:.3em}.icon-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:-35%}.icon-stack [class^="icon-"],.icon-stack [class*=" icon-"]{display:block;text-align:center;position:absolute;width:100%;height:100%;font-size:1em;line-height:inherit;*line-height:2em}.icon-stack .icon-stack-base{font-size:2em;*line-height:1em}.icon-spin{display:inline-block;-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear}a .icon-stack,a .icon-spin{display:inline-block;text-decoration:none}@-moz-keyframes spin{0%{-moz-transform:rotate(0deg)}100%{-moz-transform:rotate(359deg)}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0deg)}100%{-o-transform:rotate(359deg)}}@-ms-keyframes spin{0%{-ms-transform:rotate(0deg)}100%{-ms-transform:rotate(359deg)}}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}.icon-rotate-90:before{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1)}.icon-rotate-180:before{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2)}.icon-rotate-270:before{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3)}.icon-flip-horizontal:before{-webkit-transform:scale(-1, 1);-moz-transform:scale(-1, 1);-ms-transform:scale(-1, 1);-o-transform:scale(-1, 1);transform:scale(-1, 1)}.icon-flip-vertical:before{-webkit-transform:scale(1, -1);-moz-transform:scale(1, -1);-ms-transform:scale(1, -1);-o-transform:scale(1, -1);transform:scale(1, -1)}a .icon-rotate-90:before,a .icon-rotate-180:before,a .icon-rotate-270:before,a .icon-flip-horizontal:before,a .icon-flip-vertical:before{display:inline-block}.icon-glass:before{content:"\f000"}.icon-music:before{content:"\f001"}.icon-search:before{content:"\f002"}.icon-envelope-alt:before{content:"\f003"}.icon-heart:before{content:"\f004"}.icon-star:before{content:"\f005"}.icon-star-empty:before{content:"\f006"}.icon-user:before{content:"\f007"}.icon-film:before{content:"\f008"}.icon-th-large:before{content:"\f009"}.icon-th:before{content:"\f00a"}.icon-th-list:before{content:"\f00b"}.icon-ok:before{content:"\f00c"}.icon-remove:before{content:"\f00d"}.icon-zoom-in:before{content:"\f00e"}.icon-zoom-out:before{content:"\f010"}.icon-power-off:before,.icon-off:before{content:"\f011"}.icon-signal:before{content:"\f012"}.icon-gear:before,.icon-cog:before{content:"\f013"}.icon-trash:before{content:"\f014"}.icon-home:before{content:"\f015"}.icon-file-alt:before{content:"\f016"}.icon-time:before{content:"\f017"}.icon-road:before{content:"\f018"}.icon-download-alt:before{content:"\f019"}.icon-download:before{content:"\f01a"}.icon-upload:before{content:"\f01b"}.icon-inbox:before{content:"\f01c"}.icon-play-circle:before{content:"\f01d"}.icon-rotate-right:before,.icon-repeat:before{content:"\f01e"}.icon-refresh:before{content:"\f021"}.icon-list-alt:before{content:"\f022"}.icon-lock:before{content:"\f023"}.icon-flag:before{content:"\f024"}.icon-headphones:before{content:"\f025"}.icon-volume-off:before{content:"\f026"}.icon-volume-down:before{content:"\f027"}.icon-volume-up:before{content:"\f028"}.icon-qrcode:before{content:"\f029"}.icon-barcode:before{content:"\f02a"}.icon-tag:before{content:"\f02b"}.icon-tags:before{content:"\f02c"}.icon-book:before{content:"\f02d"}.icon-bookmark:before{content:"\f02e"}.icon-print:before{content:"\f02f"}.icon-camera:before{content:"\f030"}.icon-font:before{content:"\f031"}.icon-bold:before{content:"\f032"}.icon-italic:before{content:"\f033"}.icon-text-height:before{content:"\f034"}.icon-text-width:before{content:"\f035"}.icon-align-left:before{content:"\f036"}.icon-align-center:before{content:"\f037"}.icon-align-right:before{content:"\f038"}.icon-align-justify:before{content:"\f039"}.icon-list:before{content:"\f03a"}.icon-indent-left:before{content:"\f03b"}.icon-indent-right:before{content:"\f03c"}.icon-facetime-video:before{content:"\f03d"}.icon-picture:before{content:"\f03e"}.icon-pencil:before{content:"\f040"}.icon-map-marker:before{content:"\f041"}.icon-adjust:before{content:"\f042"}.icon-tint:before{content:"\f043"}.icon-edit:before{content:"\f044"}.icon-share:before{content:"\f045"}.icon-check:before{content:"\f046"}.icon-move:before{content:"\f047"}.icon-step-backward:before{content:"\f048"}.icon-fast-backward:before{content:"\f049"}.icon-backward:before{content:"\f04a"}.icon-play:before{content:"\f04b"}.icon-pause:before{content:"\f04c"}.icon-stop:before{content:"\f04d"}.icon-forward:before{content:"\f04e"}.icon-fast-forward:before{content:"\f050"}.icon-step-forward:before{content:"\f051"}.icon-eject:before{content:"\f052"}.icon-chevron-left:before{content:"\f053"}.icon-chevron-right:before{content:"\f054"}.icon-plus-sign:before{content:"\f055"}.icon-minus-sign:before{content:"\f056"}.icon-remove-sign:before{content:"\f057"}.icon-ok-sign:before{content:"\f058"}.icon-question-sign:before{content:"\f059"}.icon-info-sign:before{content:"\f05a"}.icon-screenshot:before{content:"\f05b"}.icon-remove-circle:before{content:"\f05c"}.icon-ok-circle:before{content:"\f05d"}.icon-ban-circle:before{content:"\f05e"}.icon-arrow-left:before{content:"\f060"}.icon-arrow-right:before{content:"\f061"}.icon-arrow-up:before{content:"\f062"}.icon-arrow-down:before{content:"\f063"}.icon-mail-forward:before,.icon-share-alt:before{content:"\f064"}.icon-resize-full:before{content:"\f065"}.icon-resize-small:before{content:"\f066"}.icon-plus:before{content:"\f067"}.icon-minus:before{content:"\f068"}.icon-asterisk:before{content:"\f069"}.icon-exclamation-sign:before{content:"\f06a"}.icon-gift:before{content:"\f06b"}.icon-leaf:before{content:"\f06c"}.icon-fire:before{content:"\f06d"}.icon-eye-open:before{content:"\f06e"}.icon-eye-close:before{content:"\f070"}.icon-warning-sign:before{content:"\f071"}.icon-plane:before{content:"\f072"}.icon-calendar:before{content:"\f073"}.icon-random:before{content:"\f074"}.icon-comment:before{content:"\f075"}.icon-magnet:before{content:"\f076"}.icon-chevron-up:before{content:"\f077"}.icon-chevron-down:before{content:"\f078"}.icon-retweet:before{content:"\f079"}.icon-shopping-cart:before{content:"\f07a"}.icon-folder-close:before{content:"\f07b"}.icon-folder-open:before{content:"\f07c"}.icon-resize-vertical:before{content:"\f07d"}.icon-resize-horizontal:before{content:"\f07e"}.icon-bar-chart:before{content:"\f080"}.icon-twitter-sign:before{content:"\f081"}.icon-facebook-sign:before{content:"\f082"}.icon-camera-retro:before{content:"\f083"}.icon-key:before{content:"\f084"}.icon-gears:before,.icon-cogs:before{content:"\f085"}.icon-comments:before{content:"\f086"}.icon-thumbs-up-alt:before{content:"\f087"}.icon-thumbs-down-alt:before{content:"\f088"}.icon-star-half:before{content:"\f089"}.icon-heart-empty:before{content:"\f08a"}.icon-signout:before{content:"\f08b"}.icon-linkedin-sign:before{content:"\f08c"}.icon-pushpin:before{content:"\f08d"}.icon-external-link:before{content:"\f08e"}.icon-signin:before{content:"\f090"}.icon-trophy:before{content:"\f091"}.icon-github-sign:before{content:"\f092"}.icon-upload-alt:before{content:"\f093"}.icon-lemon:before{content:"\f094"}.icon-phone:before{content:"\f095"}.icon-unchecked:before,.icon-check-empty:before{content:"\f096"}.icon-bookmark-empty:before{content:"\f097"}.icon-phone-sign:before{content:"\f098"}.icon-twitter:before{content:"\f099"}.icon-facebook:before{content:"\f09a"}.icon-github:before{content:"\f09b"}.icon-unlock:before{content:"\f09c"}.icon-credit-card:before{content:"\f09d"}.icon-rss:before{content:"\f09e"}.icon-hdd:before{content:"\f0a0"}.icon-bullhorn:before{content:"\f0a1"}.icon-bell:before{content:"\f0a2"}.icon-certificate:before{content:"\f0a3"}.icon-hand-right:before{content:"\f0a4"}.icon-hand-left:before{content:"\f0a5"}.icon-hand-up:before{content:"\f0a6"}.icon-hand-down:before{content:"\f0a7"}.icon-circle-arrow-left:before{content:"\f0a8"}.icon-circle-arrow-right:before{content:"\f0a9"}.icon-circle-arrow-up:before{content:"\f0aa"}.icon-circle-arrow-down:before{content:"\f0ab"}.icon-globe:before{content:"\f0ac"}.icon-wrench:before{content:"\f0ad"}.icon-tasks:before{content:"\f0ae"}.icon-filter:before{content:"\f0b0"}.icon-briefcase:before{content:"\f0b1"}.icon-fullscreen:before{content:"\f0b2"}.icon-group:before{content:"\f0c0"}.icon-link:before{content:"\f0c1"}.icon-cloud:before{content:"\f0c2"}.icon-beaker:before{content:"\f0c3"}.icon-cut:before{content:"\f0c4"}.icon-copy:before{content:"\f0c5"}.icon-paperclip:before,.icon-paper-clip:before{content:"\f0c6"}.icon-save:before{content:"\f0c7"}.icon-sign-blank:before{content:"\f0c8"}.icon-reorder:before{content:"\f0c9"}.icon-list-ul:before{content:"\f0ca"}.icon-list-ol:before{content:"\f0cb"}.icon-strikethrough:before{content:"\f0cc"}.icon-underline:before{content:"\f0cd"}.icon-table:before{content:"\f0ce"}.icon-magic:before{content:"\f0d0"}.icon-truck:before{content:"\f0d1"}.icon-pinterest:before{content:"\f0d2"}.icon-pinterest-sign:before{content:"\f0d3"}.icon-google-plus-sign:before{content:"\f0d4"}.icon-google-plus:before{content:"\f0d5"}.icon-money:before{content:"\f0d6"}.icon-caret-down:before{content:"\f0d7"}.icon-caret-up:before{content:"\f0d8"}.icon-caret-left:before{content:"\f0d9"}.icon-caret-right:before{content:"\f0da"}.icon-columns:before{content:"\f0db"}.icon-sort:before{content:"\f0dc"}.icon-sort-down:before{content:"\f0dd"}.icon-sort-up:before{content:"\f0de"}.icon-envelope:before{content:"\f0e0"}.icon-linkedin:before{content:"\f0e1"}.icon-rotate-left:before,.icon-undo:before{content:"\f0e2"}.icon-legal:before{content:"\f0e3"}.icon-dashboard:before{content:"\f0e4"}.icon-comment-alt:before{content:"\f0e5"}.icon-comments-alt:before{content:"\f0e6"}.icon-bolt:before{content:"\f0e7"}.icon-sitemap:before{content:"\f0e8"}.icon-umbrella:before{content:"\f0e9"}.icon-paste:before{content:"\f0ea"}.icon-lightbulb:before{content:"\f0eb"}.icon-exchange:before{content:"\f0ec"}.icon-cloud-download:before{content:"\f0ed"}.icon-cloud-upload:before{content:"\f0ee"}.icon-user-md:before{content:"\f0f0"}.icon-stethoscope:before{content:"\f0f1"}.icon-suitcase:before{content:"\f0f2"}.icon-bell-alt:before{content:"\f0f3"}.icon-coffee:before{content:"\f0f4"}.icon-food:before{content:"\f0f5"}.icon-file-text-alt:before{content:"\f0f6"}.icon-building:before{content:"\f0f7"}.icon-hospital:before{content:"\f0f8"}.icon-ambulance:before{content:"\f0f9"}.icon-medkit:before{content:"\f0fa"}.icon-fighter-jet:before{content:"\f0fb"}.icon-beer:before{content:"\f0fc"}.icon-h-sign:before{content:"\f0fd"}.icon-plus-sign-alt:before{content:"\f0fe"}.icon-double-angle-left:before{content:"\f100"}.icon-double-angle-right:before{content:"\f101"}.icon-double-angle-up:before{content:"\f102"}.icon-double-angle-down:before{content:"\f103"}.icon-angle-left:before{content:"\f104"}.icon-angle-right:before{content:"\f105"}.icon-angle-up:before{content:"\f106"}.icon-angle-down:before{content:"\f107"}.icon-desktop:before{content:"\f108"}.icon-laptop:before{content:"\f109"}.icon-tablet:before{content:"\f10a"}.icon-mobile-phone:before{content:"\f10b"}.icon-circle-blank:before{content:"\f10c"}.icon-quote-left:before{content:"\f10d"}.icon-quote-right:before{content:"\f10e"}.icon-spinner:before{content:"\f110"}.icon-circle:before{content:"\f111"}.icon-mail-reply:before,.icon-reply:before{content:"\f112"}.icon-github-alt:before{content:"\f113"}.icon-folder-close-alt:before{content:"\f114"}.icon-folder-open-alt:before{content:"\f115"}.icon-expand-alt:before{content:"\f116"}.icon-collapse-alt:before{content:"\f117"}.icon-smile:before{content:"\f118"}.icon-frown:before{content:"\f119"}.icon-meh:before{content:"\f11a"}.icon-gamepad:before{content:"\f11b"}.icon-keyboard:before{content:"\f11c"}.icon-flag-alt:before{content:"\f11d"}.icon-flag-checkered:before{content:"\f11e"}.icon-terminal:before{content:"\f120"}.icon-code:before{content:"\f121"}.icon-reply-all:before{content:"\f122"}.icon-mail-reply-all:before{content:"\f122"}.icon-star-half-full:before,.icon-star-half-empty:before{content:"\f123"}.icon-location-arrow:before{content:"\f124"}.icon-crop:before{content:"\f125"}.icon-code-fork:before{content:"\f126"}.icon-unlink:before{content:"\f127"}.icon-question:before{content:"\f128"}.icon-info:before{content:"\f129"}.icon-exclamation:before{content:"\f12a"}.icon-superscript:before{content:"\f12b"}.icon-subscript:before{content:"\f12c"}.icon-eraser:before{content:"\f12d"}.icon-puzzle-piece:before{content:"\f12e"}.icon-microphone:before{content:"\f130"}.icon-microphone-off:before{content:"\f131"}.icon-shield:before{content:"\f132"}.icon-calendar-empty:before{content:"\f133"}.icon-fire-extinguisher:before{content:"\f134"}.icon-rocket:before{content:"\f135"}.icon-maxcdn:before{content:"\f136"}.icon-chevron-sign-left:before{content:"\f137"}.icon-chevron-sign-right:before{content:"\f138"}.icon-chevron-sign-up:before{content:"\f139"}.icon-chevron-sign-down:before{content:"\f13a"}.icon-html5:before{content:"\f13b"}.icon-css3:before{content:"\f13c"}.icon-anchor:before{content:"\f13d"}.icon-unlock-alt:before{content:"\f13e"}.icon-bullseye:before{content:"\f140"}.icon-ellipsis-horizontal:before{content:"\f141"}.icon-ellipsis-vertical:before{content:"\f142"}.icon-rss-sign:before{content:"\f143"}.icon-play-sign:before{content:"\f144"}.icon-ticket:before{content:"\f145"}.icon-minus-sign-alt:before{content:"\f146"}.icon-check-minus:before{content:"\f147"}.icon-level-up:before{content:"\f148"}.icon-level-down:before{content:"\f149"}.icon-check-sign:before{content:"\f14a"}.icon-edit-sign:before{content:"\f14b"}.icon-external-link-sign:before{content:"\f14c"}.icon-share-sign:before{content:"\f14d"}.icon-compass:before{content:"\f14e"}.icon-collapse:before{content:"\f150"}.icon-collapse-top:before{content:"\f151"}.icon-expand:before{content:"\f152"}.icon-euro:before,.icon-eur:before{content:"\f153"}.icon-gbp:before{content:"\f154"}.icon-dollar:before,.icon-usd:before{content:"\f155"}.icon-rupee:before,.icon-inr:before{content:"\f156"}.icon-yen:before,.icon-jpy:before{content:"\f157"}.icon-renminbi:before,.icon-cny:before{content:"\f158"}.icon-won:before,.icon-krw:before{content:"\f159"}.icon-bitcoin:before,.icon-btc:before{content:"\f15a"}.icon-file:before{content:"\f15b"}.icon-file-text:before{content:"\f15c"}.icon-sort-by-alphabet:before{content:"\f15d"}.icon-sort-by-alphabet-alt:before{content:"\f15e"}.icon-sort-by-attributes:before{content:"\f160"}.icon-sort-by-attributes-alt:before{content:"\f161"}.icon-sort-by-order:before{content:"\f162"}.icon-sort-by-order-alt:before{content:"\f163"}.icon-thumbs-up:before{content:"\f164"}.icon-thumbs-down:before{content:"\f165"}.icon-youtube-sign:before{content:"\f166"}.icon-youtube:before{content:"\f167"}.icon-xing:before{content:"\f168"}.icon-xing-sign:before{content:"\f169"}.icon-youtube-play:before{content:"\f16a"}.icon-dropbox:before{content:"\f16b"}.icon-stackexchange:before{content:"\f16c"}.icon-instagram:before{content:"\f16d"}.icon-flickr:before{content:"\f16e"}.icon-adn:before{content:"\f170"}.icon-bitbucket:before{content:"\f171"}.icon-bitbucket-sign:before{content:"\f172"}.icon-tumblr:before{content:"\f173"}.icon-tumblr-sign:before{content:"\f174"}.icon-long-arrow-down:before{content:"\f175"}.icon-long-arrow-up:before{content:"\f176"}.icon-long-arrow-left:before{content:"\f177"}.icon-long-arrow-right:before{content:"\f178"}.icon-apple:before{content:"\f179"}.icon-windows:before{content:"\f17a"}.icon-android:before{content:"\f17b"}.icon-linux:before{content:"\f17c"}.icon-dribbble:before{content:"\f17d"}.icon-skype:before{content:"\f17e"}.icon-foursquare:before{content:"\f180"}.icon-trello:before{content:"\f181"}.icon-female:before{content:"\f182"}.icon-male:before{content:"\f183"}.icon-gittip:before{content:"\f184"}.icon-sun:before{content:"\f185"}.icon-moon:before{content:"\f186"}.icon-archive:before{content:"\f187"}.icon-bug:before{content:"\f188"}.icon-vk:before{content:"\f189"}.icon-weibo:before{content:"\f18a"}.icon-renren:before{content:"\f18b"}body,html{background-color:#f5f5f5;color:#222;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;height:100%}a{color:#049cdb;text-decoration:none}a:visited{color:#0378a9}.menu a{color:#049cdb}.gist{font-size:0.75em}@media only screen and (max-width: 480px){.title.indent::before{display:none}}.title.indent::before{content:"// ";color:#049cdb}.divider,.usp hr,.hero hr{border:none;border-bottom:2px solid #049cdb;clear:both;margin:2em 0}article.post img,article.page img,article.listing img{border:5px solid #fff;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,0.25)}article.post img.right,article.page img.right,article.listing img.right{float:right;margin:0 0 10px 20px}article.post img.left,article.page img.left,article.listing img.left{float:left;margin:0 20px 10px 0}.grid-wrapper{margin:auto;max-width:1100px;padding:0 25px}.grid-center{text-align:center}.grid-center>.grid__item{text-align:left}body>header{-webkit-box-shadow:0 0 3px rgba(0,0,0,0.25);-moz-box-shadow:0 0 3px rgba(0,0,0,0.25);-ms-box-shadow:0 0 3px rgba(0,0,0,0.25);-o-box-shadow:0 0 3px rgba(0,0,0,0.25);box-shadow:0 0 3px rgba(0,0,0,0.25);background-color:#fff;margin-bottom:2em}body>header .site-title{color:#222;font-size:1.7em;font-weight:bold;line-height:2.5em}body{-webkit-animation:bugfix infinite 1s}@-webkit-keyframes bugfix{from{padding:0}to{padding:0}}.header{position:relative}#toggle,.toggle{display:none}.menu li{list-style:none;float:left}@media only screen and (max-width: 790px){.menu{display:none;opacity:0;width:100%;position:absolute;right:0}.menu li{display:block;width:100%;margin:0}.menu li a{display:block;width:100%;text-decoration:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.toggle{display:block;position:relative;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}#toggle:checked ~ .menu{display:block;opacity:1;z-index:999}}ul.menu li{position:relative}ul.menu li:hover ul{display:block}ul.menu li ul{display:none;z-index:10;position:absolute;top:68px;margin-left:0;background-color:white}ul.menu li ul li{white-space:nowrap;float:none}ul.menu li ul li a{display:block;padding:20px 10px}ul.menu li ul li a:hover,ul.menu li ul li a:focus{background:#eee}header .grid{height:68px}.menu{margin:0;top:68px}.menu li a{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:all 0.25s linear;-moz-transition:all 0.25s linear;-o-transition:all 0.25s linear;transition:all 0.25s linear;display:block;padding:32px 20px;text-decoration:none;font-weight:normal;font-size:16px;line-height:1}.menu>li>a:hover,.menu>li>a:focus{background:#f5f5f5;box-shadow:inset 0px 5px #049cdb;color:#049cdb;padding:40px 20px 24px}.toggle{z-index:20}@media only screen and (max-width: 790px){.menu{background:#fff;border-top:1px solid #049cdb;border-bottom:4px solid #049cdb}.menu,.menu li,.menu li a{height:auto}.menu li a{padding:15px 15px !important}.menu li a:hover,.menu li a:focus{background:#eee;box-shadow:inset 5px 0px #049cdb;padding:15px 15px 15px 25px}.toggle{position:absolute;top:17px;right:10px}.toggle::after{-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:all 0.5s linear;-moz-transition:all 0.5s linear;-o-transition:all 0.5s linear;transition:all 0.5s linear;font-family:"FontAwesome";content:"\f0c9";display:inline-block;width:100%;padding:10px 15px;background:#049cdb;text-align:center;font-size:12px;color:#fff;white-space:nowrap}.toggle:hover::after{background:#0383b8}#toggle:checked+.toggle::after{content:attr(data-close)}ul.menu li ul{display:block;position:relative;top:0}}#page-wrap{min-height:100%;margin-bottom:-100px}#page-wrap::after{content:"";display:block;height:100px}body>footer{-webkit-box-shadow:0 0 3px rgba(0,0,0,0.25);-moz-box-shadow:0 0 3px rgba(0,0,0,0.25);-ms-box-shadow:0 0 3px rgba(0,0,0,0.25);-o-box-shadow:0 0 3px rgba(0,0,0,0.25);box-shadow:0 0 3px rgba(0,0,0,0.25);background-color:#fff;margin-top:3em}.copyright{margin:0;padding:20px 0;text-align:center}article blockquote{border-left:2px solid #049cdb;color:#484848;font-family:Georgia,"Times New Roman",Times,serif;font-size:1.25em;font-style:italic;padding-left:15px}article blockquote footer{float:right;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:0.8em}article blockquote footer strong::after{content:" \2014 "}article blockquote footer a{text-decoration:underline}article .pullquote-left::before,article .pullquote-right::before{border:medium none;color:#049cdb;content:"\201C" attr(data-pullquote) "\201D";float:right;font-family:Georgia,"Times New Roman",Times,serif;font-size:1.4em;font-style:italic;line-height:1.45em;margin:0.3em 0 1em 1.5em;padding:0;position:relative;top:7px;width:45%}@media only screen and (max-width: 480px){article .pullquote-left::before,article .pullquote-right::before{border-top:1px dotted #049cdb;border-bottom:1px dotted #049cdb;padding:0 10px;width:100%}}article .tags{display:inline}article .tags li{margin-right:2px}article .tags li::after{content:","}article .tags li:last-child::after{content:""}article .tags li a{color:#555;text-decoration:none}article .tags li a:hover{text-decoration:underline}article .meta{font-size:12px;padding:0 0 5px}article .meta>*{margin-right:15px;white-space:nowrap}article .meta>*:last-child{margin-right:0}article .meta .comments::before{content:"\f075";font-family:"FontAwesome";padding-right:3px}article.listing{margin-bottom:20px}article.listing h1{margin-bottom:0}article.listing h1 a{color:#049cdb;text-decoration:none}article.listing .entry-content{margin:10px 0}article.listing+hr{border:none;border-bottom:1px solid #049cdb}@media only screen and (max-width: 480px){article.post .tags{clear:both;margin-top:7px}}article.post h1{margin-bottom:0}article.post .meta{border-bottom:1px solid #049cdb;margin-bottom:20px}#archive-list article h1{margin-bottom:0}.sans,html .gist .gist-file .gist-meta{font-family:"Helvetica Neue",Arial,sans-serif}.mono,pre,p code,li code{font-family:Menlo,Monaco,"Andale Mono","lucida console","Courier New",monospace}.highlight table{margin-bottom:0}.highlight .gutter,.highlight .code{padding:0}.highlight .gutter .line-number{display:block}.highlight,html .gist .gist-file .gist-syntax .gist-highlight{border:1px solid #05232b !important}.highlight table td.code,html .gist .gist-file .gist-syntax .gist-highlight table td.code{width:100%}.highlight .line-numbers,html .gist .gist-file .gist-syntax .highlight .line_numbers{text-align:right;font-size:13px;line-height:1.45em;background:#073642 url('/images/noise.png?1419195603') top left !important;border-right:1px solid #00232c !important;-webkit-box-shadow:#083e4b -1px 0 inset;-moz-box-shadow:#083e4b -1px 0 inset;-ms-box-shadow:#083e4b -1px 0 inset;-o-box-shadow:#083e4b -1px 0 inset;box-shadow:#083e4b -1px 0 inset;text-shadow:#021014 0 -1px;padding:.8em !important;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.highlight .line-numbers span,html .gist .gist-file .gist-syntax .highlight .line_numbers span{color:#586e75 !important}figure.code,.gist-file,pre{-webkit-box-shadow:rgba(0,0,0,0.06) 0 0 10px;-moz-box-shadow:rgba(0,0,0,0.06) 0 0 10px;-ms-box-shadow:rgba(0,0,0,0.06) 0 0 10px;-o-box-shadow:rgba(0,0,0,0.06) 0 0 10px;box-shadow:rgba(0,0,0,0.06) 0 0 10px}figure.code .highlight pre,.gist-file .highlight pre,pre .highlight pre{-webkit-box-shadow:none;-moz-box-shadow:none;-ms-box-shadow:none;-o-box-shadow:none;box-shadow:none}.gist .highlight *::-moz-selection,figure.code .highlight *::-moz-selection{background:#386774;color:inherit;text-shadow:#002b36 0 1px}.gist .highlight *::-webkit-selection,figure.code .highlight *::-webkit-selection{background:#386774;color:inherit;text-shadow:#002b36 0 1px}.gist .highlight *::selection,figure.code .highlight *::selection{background:#386774;color:inherit;text-shadow:#002b36 0 1px}html .gist .gist-file{margin-bottom:1.8em;position:relative;border:none;padding-top:26px !important}html .gist .gist-file .highlight{margin-bottom:0}html .gist .gist-file .gist-syntax{border-bottom:0 !important;background:none !important}html .gist .gist-file .gist-syntax .gist-highlight{background:#002b36 !important}html .gist .gist-file .gist-syntax .highlight pre{padding:0}html .gist .gist-file .gist-meta{padding:.6em 0.8em;border:1px solid #083e4b !important;color:#586e75;font-size:.7em !important;background:#073642 url('/images/noise.png?1419195603') top left;line-height:1.5em}html .gist .gist-file .gist-meta a{color:#75878b !important}html .gist .gist-file .gist-meta a:hover{color:#93a1a1 !important}html .gist .gist-file .gist-meta a[href*='#file']{position:absolute;top:0;left:0;right:-10px;color:#474747 !important}html .gist .gist-file .gist-meta a[href*='#file']:hover{color:#049cdb !important}html .gist .gist-file .gist-meta a[href*=raw]{top:.4em}pre{background:#002b36 url('/images/noise.png?1419195603') top left;-webkit-border-radius:0.4em;-moz-border-radius:0.4em;border-radius:0.4em;border:1px solid #05232b;line-height:1.45em;font-size:13px;margin-bottom:2.1em;padding:.8em 1em;color:#93a1a1;overflow:auto}h3.filename+pre{-webkit-border-radius:0px;-moz-border-radius:0px;border-radius:0px}p code,li code{display:inline-block;white-space:no-wrap;background:#fff;font-size:.8em;line-height:1.5em;color:#555;border:1px solid #ddd;-webkit-border-radius:0.4em;-moz-border-radius:0.4em;border-radius:0.4em;padding:0 .3em;margin:-1px 0}p pre code,li pre code{font-size:1em !important;background:none;border:none}.pre-code,html .gist .gist-file .gist-syntax .highlight pre,.highlight code{font-family:Menlo,Monaco,"Andale Mono","lucida console","Courier New",monospace !important;overflow:scroll;overflow-y:hidden;display:block;padding:.8em;overflow-x:auto;line-height:1.45em;background:#002b36 url('/images/noise.png?1419195603') top left !important;color:#93a1a1 !important}.pre-code span,html .gist .gist-file .gist-syntax .highlight pre span,.highlight code span{color:#93a1a1 !important}.pre-code span,html .gist .gist-file .gist-syntax .highlight pre span,.highlight code span{font-style:normal !important;font-weight:normal !important}.pre-code .c,html .gist .gist-file .gist-syntax .highlight pre .c,.highlight code .c{color:#586e75 !important;font-style:italic !important}.pre-code .cm,html .gist .gist-file .gist-syntax .highlight pre .cm,.highlight code .cm{color:#586e75 !important;font-style:italic !important}.pre-code .cp,html .gist .gist-file .gist-syntax .highlight pre .cp,.highlight code .cp{color:#586e75 !important;font-style:italic !important}.pre-code .c1,html .gist .gist-file .gist-syntax .highlight pre .c1,.highlight code .c1{color:#586e75 !important;font-style:italic !important}.pre-code .cs,html .gist .gist-file .gist-syntax .highlight pre .cs,.highlight code .cs{color:#586e75 !important;font-weight:bold !important;font-style:italic !important}.pre-code .err,html .gist .gist-file .gist-syntax .highlight pre .err,.highlight code .err{color:#dc322f !important;background:none !important}.pre-code .k,html .gist .gist-file .gist-syntax .highlight pre .k,.highlight code .k{color:#cb4b16 !important}.pre-code .o,html .gist .gist-file .gist-syntax .highlight pre .o,.highlight code .o{color:#93a1a1 !important;font-weight:bold !important}.pre-code .p,html .gist .gist-file .gist-syntax .highlight pre .p,.highlight code .p{color:#93a1a1 !important}.pre-code .ow,html .gist .gist-file .gist-syntax .highlight pre .ow,.highlight code .ow{color:#2aa198 !important;font-weight:bold !important}.pre-code .gd,html .gist .gist-file .gist-syntax .highlight pre .gd,.highlight code .gd{color:#93a1a1 !important;background-color:#372c34 !important;display:inline-block}.pre-code .gd .x,html .gist .gist-file .gist-syntax .highlight pre .gd .x,.highlight code .gd .x{color:#93a1a1 !important;background-color:#4d2d33 !important;display:inline-block}.pre-code .ge,html .gist .gist-file .gist-syntax .highlight pre .ge,.highlight code .ge{color:#93a1a1 !important;font-style:italic !important}.pre-code .gh,html .gist .gist-file .gist-syntax .highlight pre .gh,.highlight code .gh{color:#586e75 !important}.pre-code .gi,html .gist .gist-file .gist-syntax .highlight pre .gi,.highlight code .gi{color:#93a1a1 !important;background-color:#1a412b !important;display:inline-block}.pre-code .gi .x,html .gist .gist-file .gist-syntax .highlight pre .gi .x,.highlight code .gi .x{color:#93a1a1 !important;background-color:#355720 !important;display:inline-block}.pre-code .gs,html .gist .gist-file .gist-syntax .highlight pre .gs,.highlight code .gs{color:#93a1a1 !important;font-weight:bold !important}.pre-code .gu,html .gist .gist-file .gist-syntax .highlight pre .gu,.highlight code .gu{color:#6c71c4 !important}.pre-code .kc,html .gist .gist-file .gist-syntax .highlight pre .kc,.highlight code .kc{color:#859900 !important;font-weight:bold !important}.pre-code .kd,html .gist .gist-file .gist-syntax .highlight pre .kd,.highlight code .kd{color:#268bd2 !important}.pre-code .kp,html .gist .gist-file .gist-syntax .highlight pre .kp,.highlight code .kp{color:#cb4b16 !important;font-weight:bold !important}.pre-code .kr,html .gist .gist-file .gist-syntax .highlight pre .kr,.highlight code .kr{color:#d33682 !important;font-weight:bold !important}.pre-code .kt,html .gist .gist-file .gist-syntax .highlight pre .kt,.highlight code .kt{color:#2aa198 !important}.pre-code .n,html .gist .gist-file .gist-syntax .highlight pre .n,.highlight code .n{color:#268bd2 !important}.pre-code .na,html .gist .gist-file .gist-syntax .highlight pre .na,.highlight code .na{color:#268bd2 !important}.pre-code .nb,html .gist .gist-file .gist-syntax .highlight pre .nb,.highlight code .nb{color:#859900 !important}.pre-code .nc,html .gist .gist-file .gist-syntax .highlight pre .nc,.highlight code .nc{color:#d33682 !important}.pre-code .no,html .gist .gist-file .gist-syntax .highlight pre .no,.highlight code .no{color:#b58900 !important}.pre-code .nl,html .gist .gist-file .gist-syntax .highlight pre .nl,.highlight code .nl{color:#859900 !important}.pre-code .ne,html .gist .gist-file .gist-syntax .highlight pre .ne,.highlight code .ne{color:#268bd2 !important;font-weight:bold !important}.pre-code .nf,html .gist .gist-file .gist-syntax .highlight pre .nf,.highlight code .nf{color:#268bd2 !important;font-weight:bold !important}.pre-code .nn,html .gist .gist-file .gist-syntax .highlight pre .nn,.highlight code .nn{color:#b58900 !important}.pre-code .nt,html .gist .gist-file .gist-syntax .highlight pre .nt,.highlight code .nt{color:#268bd2 !important;font-weight:bold !important}.pre-code .nx,html .gist .gist-file .gist-syntax .highlight pre .nx,.highlight code .nx{color:#b58900 !important}.pre-code .vg,html .gist .gist-file .gist-syntax .highlight pre .vg,.highlight code .vg{color:#268bd2 !important}.pre-code .vi,html .gist .gist-file .gist-syntax .highlight pre .vi,.highlight code .vi{color:#268bd2 !important}.pre-code .nv,html .gist .gist-file .gist-syntax .highlight pre .nv,.highlight code .nv{color:#268bd2 !important}.pre-code .mf,html .gist .gist-file .gist-syntax .highlight pre .mf,.highlight code .mf{color:#2aa198 !important}.pre-code .m,html .gist .gist-file .gist-syntax .highlight pre .m,.highlight code .m{color:#2aa198 !important}.pre-code .mh,html .gist .gist-file .gist-syntax .highlight pre .mh,.highlight code .mh{color:#2aa198 !important}.pre-code .mi,html .gist .gist-file .gist-syntax .highlight pre .mi,.highlight code .mi{color:#2aa198 !important}.pre-code .s,html .gist .gist-file .gist-syntax .highlight pre .s,.highlight code .s{color:#2aa198 !important}.pre-code .sd,html .gist .gist-file .gist-syntax .highlight pre .sd,.highlight code .sd{color:#2aa198 !important}.pre-code .s2,html .gist .gist-file .gist-syntax .highlight pre .s2,.highlight code .s2{color:#2aa198 !important}.pre-code .se,html .gist .gist-file .gist-syntax .highlight pre .se,.highlight code .se{color:#dc322f !important}.pre-code .si,html .gist .gist-file .gist-syntax .highlight pre .si,.highlight code .si{color:#268bd2 !important}.pre-code .sr,html .gist .gist-file .gist-syntax .highlight pre .sr,.highlight code .sr{color:#2aa198 !important}.pre-code .s1,html .gist .gist-file .gist-syntax .highlight pre .s1,.highlight code .s1{color:#2aa198 !important}.pre-code div .gd,html .gist .gist-file .gist-syntax .highlight pre div .gd,.highlight code div .gd,.pre-code div .gd .x,html .gist .gist-file .gist-syntax .highlight pre div .gd .x,.highlight code div .gd .x,.pre-code div .gi,html .gist .gist-file .gist-syntax .highlight pre div .gi,.highlight code div .gi,.pre-code div .gi .x,html .gist .gist-file .gist-syntax .highlight pre div .gi .x,.highlight code div .gi .x{display:inline-block;width:100%}.highlight,.gist-highlight{margin-bottom:1.8em;background:#002b36;overflow-y:hidden;overflow-x:auto}.highlight pre,.gist-highlight pre{background:none;-webkit-border-radius:0px;-moz-border-radius:0px;border-radius:0px;border:none;padding:0;margin-bottom:0}pre::-webkit-scrollbar,.highlight::-webkit-scrollbar,.gist-highlight::-webkit-scrollbar{height:.5em;background:rgba(255,255,255,0.15)}pre::-webkit-scrollbar-thumb:horizontal,.highlight::-webkit-scrollbar-thumb:horizontal,.gist-highlight::-webkit-scrollbar-thumb:horizontal{background:rgba(255,255,255,0.2);-webkit-border-radius:4px;border-radius:4px}.highlight code{background:#000}figure.code{background:none;padding:0;border:0;margin-bottom:1.5em}figure.code pre{margin-bottom:0}figure.code figcaption{position:relative}figure.code .highlight{margin-bottom:0}.code-title,html .gist .gist-file .gist-meta a[href*='#file'],h3.filename,figure.code figcaption{text-align:center;font-size:13px;line-height:2em;text-shadow:#cbcccc 0 1px 0;color:#474747;font-weight:normal;margin-bottom:0;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0;font-family:"Helvetica Neue", Arial, "Lucida Grande", "Lucida Sans Unicode", Lucida, sans-serif;background:#aaa url('/images/code_bg.png?1419195603') top repeat-x;border:1px solid #565656;border-top-color:#cbcbcb;border-left-color:#a5a5a5;border-right-color:#a5a5a5;border-bottom:0}.download-source,html .gist .gist-file .gist-meta a[href*=raw],figure.code figcaption a{position:absolute;right:.8em;color:#666 !important;z-index:1;font-size:13px;text-shadow:#cbcccc 0 1px 0;padding-left:3em}@media only screen and (min-width: 1024px){.aside-module:first-child .title{margin-top:0}}.aside-module .title{border-bottom:1px solid #049cdb;color:#333;margin:1em 0 0.5em;padding-bottom:5px}.aside-module .title .btn{border-bottom-left-radius:0;border-bottom-right-radius:0;padding:5px 10px;text-decoration:none}.aside-module .loading{display:block;font-size:2em;text-align:center}#github-repos li p{font-size:0.6em;margin-bottom:0}#pinboard .pin-item>p{margin-bottom:0}#pinboard .pin-item>p a:hover{text-decoration:underline}#pinboard .pin-item>p a::after{content:","}#pinboard .pin-item>p a:last-child::after{content:""}@media only screen and (min-width: 481px){.social ul{-webkit-column-count:2;-moz-column-count:2;column-count:2;-webkit-column-gap:10px;-moz-column-gap:10px;column-gap:10px}}.social a{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;background-color:#e8e8e8;border:1px solid #dcdcdc;border-radius:4px;color:#222;display:inline-block;font-size:0.8em;margin-bottom:7px;padding:1em;padding-right:0.5em;position:relative;text-decoration:none;width:100%;z-index:5;-webkit-transition:box-shadow 200ms,color 400ms,transform 400ms;-moz-transition:box-shadow 200ms,color 400ms,transform 400ms;-o-transition:box-shadow 200ms,color 400ms,transform 400ms;transition:box-shadow 200ms,color 400ms,transform 400ms}.social a:hover{color:#fff !important;text-decoration:none;text-shadow:1px 1px 0 rgba(0,0,0,0.25);z-index:7}.social a:hover::before{border:1px solid #000;height:100%;top:0;width:100%}.social a::before{background-color:#222;border-radius:4px;content:"";height:1px;position:absolute;top:50%;left:0%;width:0;z-index:-1;-webkit-transition:border 200ms,height 200ms 200ms,top 200ms 200ms,width 200ms;-moz-transition:border 200ms,height 200ms 200ms,top 200ms 200ms,width 200ms;-o-transition:border 200ms,height 200ms 200ms,top 200ms 200ms,width 200ms;transition:border 200ms,height 200ms 200ms,top 200ms 200ms,width 200ms}.social a i{font-size:2em;line-height:0.8em;margin-right:0.35em}.social a.adn{color:#4a484c}.social a.adn::before{background-color:#4a484c;border-color:#3d3c3f}.social a.dribbble{color:#ea4c89}.social a.dribbble::before{background-color:#ea4c89;border-color:#e7357a}.social a.facebook{color:#3b5998}.social a.facebook::before{background-color:#3b5998;border-color:#344e86}.social a.github{color:#333}.social a.github::before{background-color:#333;border-color:#262626}.social a.gplus{color:#db4a39}.social a.gplus::before{background-color:#db4a39;border-color:#d43927}.social a.linkedin{color:#4875b4}.social a.linkedin::before{background-color:#4875b4;border-color:#4169a2}.social a.pinterest{color:#cc2127}.social a.pinterest::before{background-color:#cc2127;border-color:#b61d23}.social a.stackoverflow{color:#fe7a15}.social a.stackoverflow::before{background-color:#fe7a15;border-color:#f86c01}.social a.twitter{color:#00a0d1}.social a.twitter::before{background-color:#00a0d1;border-color:#008cb7}.social a.youtube{color:#cc181e}.social a.youtube::before{background-color:#cc181e;border-color:#b5151b}.usp{text-align:center}@media only screen and (min-width: 481px) and (max-width: 1023px){.usp{margin-bottom:25px}}.usp .icon i{-webkit-border-radius:50%;-moz-border-radius:50%;border-radius:50%;border:10px solid #049cdb;color:#222;display:inline-block;font-size:6em;height:1.85em;line-height:normal;padding:0.3em;width:1.85em}.usp .title{color:#222;font-size:1.1em;line-height:3em;margin:0;text-align:center;text-transform:capitalize}.usp .title+hr{margin:0;margin-bottom:1em}.usp hr{margin-bottom:1em}.usp p{text-align:left}.hero{background-color:#0b6b94;background-position:0 50%;-webkit-background-size:cover;-moz-background-size:cover;-o-background-size:cover;background-size:cover;border-bottom:1px solid #fff;color:#fff;font-weight:bold;margin-top:-2em;margin-bottom:1.5em;padding:50px 0;position:relative}.hero>.grid-wrapper{position:relative;z-index:7}.hero .credit{font-size:0.75em;font-style:italic;position:absolute;bottom:0;right:10px;z-index:7}.hero .credit a{border-bottom:1px solid;color:#fff;text-decoration:none}.hero .credit .licence{border:none}.hero .avatar{text-align:center}@media only screen and (max-width: 1023px){.hero .avatar{margin-bottom:30px}}.hero .avatar img{-webkit-border-radius:100%;-moz-border-radius:100%;border-radius:100%;border:10px solid #049cdb}.hero h1{font-size:3.5em;line-height:1em;text-shadow:2px 2px 0 rgba(0,0,0,0.75)}.hero hr{box-shadow:1px 1px 0 rgba(0,0,0,0.75)}.hero p{text-shadow:1px 1px 0 rgba(0,0,0,0.75)}.hero p small{color:#eee;font-size:.65em}.pull-left{float:left}.pull-right{float:right}.clearfix,article blockquote{*zoom:1}.clearfix::before,article blockquote::before,.clearfix::after,article blockquote::after{display:table;content:"";line-height:0}.clearfix::after,article blockquote::after{clear:both}ul.unstyled,ul.inline,article ul.tags,ul.divided,ol.unstyled,ol.inline,article ol.tags,ol.divided{list-style-type:none;margin:0}ul.inline,article ul.tags,ol.inline,article ol.tags{list-style-type:none}ul.inline>li,article ul.tags>li,ol.inline>li,article ol.tags>li{display:inline}ul.divided>li,ol.divided>li{border-top:1px solid #fff;border-bottom:1px solid #e8e8e8;padding:0.5em 0}ul.divided>li:first-child,ol.divided>li:first-child{border-top:none;padding-top:0}ul.divided>li:last-child,ol.divided>li:last-child{border-bottom:none}.btn{background-color:#0494d1;background-image:-moz-linear-gradient(top, #049cdb, #048ac2);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#049cdb), to(#048ac2));background-image:-webkit-linear-gradient(top, #049cdb, #048ac2);background-image:-o-linear-gradient(top, #049cdb, #048ac2);background-image:linear-gradient(to bottom, #049cdb,#048ac2);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF049CDB', endColorstr='#FF048AC2', GradientType=0);-webkit-box-shadow:0 0 3px rgba(0,0,0,0.25);-moz-box-shadow:0 0 3px rgba(0,0,0,0.25);-ms-box-shadow:0 0 3px rgba(0,0,0,0.25);-o-box-shadow:0 0 3px rgba(0,0,0,0.25);box-shadow:0 0 3px rgba(0,0,0,0.25);border-radius:3px;color:#fff;display:inline-block;padding:7px 15px;text-decoration:none;text-shadow:1px 1px 0 rgba(0,0,0,0.25)}.btn:hover{text-decoration:underline}.btn:visited{color:#fff}.grid{letter-spacing:-1rem}.opera:-o-prefocus,.grid{word-spacing:-1rem}.grid__item{letter-spacing:normal;word-spacing:normal}@media only screen and (min-width: 481px){.flex{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-box-direction:normal;-moz-box-direction:normal;-webkit-box-orient:horizontal;-moz-box-orient:horizontal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-pack:start;-moz-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start;-webkit-align-content:stretch;-ms-flex-line-pack:stretch;align-content:stretch;-webkit-box-align:start;-moz-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start}.flex__item{-webkit-box-ordinal-group:1;-moz-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0;-webkit-box-flex:0;-moz-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}}.supported-brands{text-align:center}.supported-brands img{border:none !important;box-shadow:none !important;max-height:50px;max-width:200px;margin:10px}.brand{border:none !important;box-shadow:none !important;max-height:50px;max-width:200px;margin:10px}.brand.overview{max-width:100px}h1:hover a.title-link,h2:hover a.title-link,h3:hover a.title-link,h4:hover a.title-link,h5:hover a.title-link,h6:hover a.title-link{position:relative}h1:hover a.title-link::before,h2:hover a.title-link::before,h3:hover a.title-link::before,h4:hover a.title-link::before,h5:hover a.title-link::before,h6:hover a.title-link::before{position:absolute;left:-50px;padding-right:40px;font-family:"FontAwesome";content:"\f0c1"}.ha-title{white-space:nowrap}.ha-title img{width:40px;vertical-align:middle}.usp ul{text-align:left;margin-left:27px;margin-top:-18px}.usp .icon i{border:none !important}.hero-buttons a{margin:0 30px 10px 0}.hero-buttons a:last-child{margin:0}article.post img,article.post table,article.page img,article.page table,article.listing img,article.listing table{border-radius:3px;box-shadow:rgba(0,0,0,0.06) 0 0 10px}article.post img.no-shadow,article.page img.no-shadow,article.listing img.no-shadow{border:0;box-shadow:none}article.post>table,article.page>table,article.listing>table{background-color:#F3FCF5}article.post p.img,article.page p.img,article.listing p.img{background-color:#FFF;border-radius:5px;text-align:center;padding-bottom:3px;font-size:.9rem;box-shadow:rgba(0,0,0,0.06) 0 0 10px}article.post p.img img,article.page p.img img,article.listing p.img img{display:block;box-shadow:none;margin:0 auto}article.post li,article.page li,article.listing li{margin-bottom:10px}article.post li>p,article.page li>p,article.listing li>p{margin-bottom:0}article.post li:last-child,article.page li:last-child,article.listing li:last-child{margin-bottom:0}p.note{position:relative;background:#e7f2fa;padding:40px 12px 6px 12px;box-shadow:rgba(0,0,0,0.06) 0 0 10px}p.note::before{font-family:"FontAwesome";content:"\f05a" " Note " attr(data-title);background-color:#6ab0de;color:white;font-weight:bold;border-top-left-radius:3px;border-top-right-radius:3px;padding:6px 14px;line-height:1.5em;position:absolute;top:0;left:0;right:0}p.note.warning{background-color:#F7F9E1}p.note.warning::before{background-color:#bbb90d;content:"\f071" " Warning " attr(data-title)}.install-instructions-container #normal-install,.install-instructions-container #raspberry-install,.install-instructions-container #docker-install,.install-instructions-container .install-instructions{display:none}.install-instructions-container label.menu-selector{display:inline-block;text-align:center;padding:20px;white-space:nowrap;border-bottom:5px solid #999;transition:border-bottom-color .5s}.install-instructions-container label.menu-selector+label.menu-selector{margin-left:10px}.install-instructions-container #normal-install:checked ~ .menu-selector.normal,.install-instructions-container #raspberry-install:checked ~ .menu-selector.raspberry,.install-instructions-container #docker-install:checked ~ .menu-selector.docker{border-bottom-color:#049cdb}.install-instructions-container #normal-install:checked ~ .install-instructions.normal,.install-instructions-container #raspberry-install:checked ~ .install-instructions.raspberry,.install-instructions-container #docker-install:checked ~ .install-instructions.docker{display:block}.install-instructions-container .install-instructions{margin-top:30px}.prep-instructions-container #generic-prep,.prep-instructions-container #fedora-prep,.prep-instructions-container #centos-prep,.prep-instructions-container .prep-instructions{display:none}.prep-instructions-container label.menu-selector{display:inline-block;text-align:center;padding:10px;white-space:nowrap;border-bottom:2px solid #999;transition:border-bottom-color .5s}.prep-instructions-container label.menu-selector+label.menu-selector{margin-left:10px}.prep-instructions-container #generic-prep:checked ~ .menu-selector.generic,.prep-instructions-container #fedora-prep:checked ~ .menu-selector.fedora,.prep-instructions-container #centos-prep:checked ~ .menu-selector.centos{border-bottom-color:#049cdb}.prep-instructions-container #generic-prep:checked ~ .prep-instructions.generic,.prep-instructions-container #fedora-prep:checked ~ .prep-instructions.fedora,.prep-instructions-container #centos-prep:checked ~ .prep-instructions.centos{display:block}.prep-instructions-container .prep-instructions{margin-top:20px}