changeset 0:2a8d4e8600d0

Initial commit.
author Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
date Fri, 21 Dec 2018 21:34:17 +0100
parents
children d6df73b466f6
files avatar.js client.js index.xhtml nickname.js prosody.css prosody.svg share/bootstrap/css/bootstrap.min.css share/bootstrap/fonts/glyphicons-halflings-regular.eot share/bootstrap/fonts/glyphicons-halflings-regular.svg share/bootstrap/fonts/glyphicons-halflings-regular.ttf share/bootstrap/fonts/glyphicons-halflings-regular.woff share/bootstrap/fonts/glyphicons-halflings-regular.woff2 strophe.js
diffstat 13 files changed, 6884 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/avatar.js
@@ -0,0 +1,184 @@
+'use strict';
+
+function initAvatar(connection) {
+    const DEFAULT_AVATAR = 'data:image/svg+xml,<?xml version="1.0"?><svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 150 150"><rect width="150" height="150" fill="#888" stroke-width="1" stroke="#000"/><text x="75" y="100" text-anchor="middle" font-size="100">?</text></svg>';
+
+    const avatar_data = {};
+    const avatar_img = document.getElementById('avatar');
+    const avatar_size = document.getElementById('avatar-size');
+    const avatar_file = document.getElementById('avatar-file');
+    const avatar_upload = document.getElementById('avatar-upload');
+    const avatar_change = document.getElementById('avatar-change');
+
+    avatar_img.src = DEFAULT_AVATAR;
+    const iq = $iq({type: 'get'})
+        .c('pubsub', {xmlns: 'http://jabber.org/protocol/pubsub'})
+            .c('items', {node: 'urn:xmpp:avatar:metadata'});
+    connection.sendIQ(iq, onAvatarMetadata, onAvatarRetrievalError.bind(null, 'PubSub metadata query failed.'));
+
+    function onAvatarMetadata(result_iq)
+    {
+        const item = parseXPath(result_iq, './pubsub:pubsub/pubsub:items/pubsub:item');
+        if (item == null)
+            return onAvatarRetrievalError('no item found.');
+        const id = item.getAttributeNS(null, 'id');
+        const info = parseXPath(item, './avatar_metadata:metadata/avatar_metadata:info');
+        if (info == null)
+            return onAvatarRetrievalError('no info found, your avatar metadata node is broken.');
+        if (id != info.getAttributeNS(null, 'id'))
+            return onAvatarRetrievalError('invalid id in metadata.');
+
+        const parsed_info = {
+            id: id,
+            type: info.getAttributeNS(null, 'type'),
+            bytes: info.getAttributeNS(null, 'bytes'),
+            width: info.getAttributeNS(null, 'width'),
+            height: info.getAttributeNS(null, 'height'),
+        };
+        const iq = $iq({type: 'get'})
+            .c('pubsub', {xmlns: 'http://jabber.org/protocol/pubsub'})
+                .c('items', {node: 'urn:xmpp:avatar:data'})
+                    .c('item', {id: id});
+        connection.sendIQ(iq, onAvatarData.bind(null, parsed_info), onAvatarRetrievalError.bind(null, 'PubSub data query failed.'));
+    }
+
+    function onAvatarData(info, result_iq)
+    {
+        const item = parseXPath(result_iq, './pubsub:pubsub/pubsub:items/pubsub:item');
+        if (item == null)
+            return onAvatarRetrievalError('no item found.');
+        if (info.id != item.getAttributeNS(null, 'id'))
+            return onAvatarRetrievalError('invalid id in data.');
+
+        const data = parseXPath(item, './avatar_data:data').textContent;
+        const url = 'data:' + info.type + ';base64,' + data;
+        // TODO: validate the bytes too.
+        /*
+        // TODO: figure out why this didn’t work.
+        avatar_img.onload = function (evt) {
+            const img = evt.target;
+            if (img.naturalWidth != info.width || img.naturalHeight != info.height)
+                return onAvatarRetrievalError('invalid width or height in image data.');
+            avatar_img.onload = null;
+        };
+        */
+        avatar_img.src = url;
+    }
+
+    function onAvatarRetrievalError(string)
+    {
+        console.log('Failed to retrieve avatar, an empty one is displayed instead: ' + string);
+        avatar_img.src = DEFAULT_AVATAR;
+    }
+
+    avatar_upload.addEventListener('click', function (evt) {
+        avatar_file.click();
+    });
+
+    avatar_change.addEventListener('click', function (evt) {
+        const metadata_iq = $iq({type: 'set'})
+            .c('pubsub', {xmlns: 'http://jabber.org/protocol/pubsub'})
+                .c('publish', {node: 'urn:xmpp:avatar:metadata'})
+                    .c('item', {id: avatar_data.id})
+                        .c('metadata', {xmlns: 'urn:xmpp:avatar:metadata'})
+                            .c('info', {
+                                id: avatar_data.id,
+                                type: avatar_data.type,
+                                bytes: avatar_data.bytes,
+                                width: avatar_img.naturalWidth,
+                                height: avatar_img.naturalHeight,
+                            });
+        connection.sendIQ(metadata_iq, onAvatarMetadataUpload, onAvatarUploadError);
+        const data_iq = $iq({type: 'set'})
+            .c('pubsub', {xmlns: 'http://jabber.org/protocol/pubsub'})
+                .c('publish', {node: 'urn:xmpp:avatar:data'})
+                    .c('item', {id: avatar_data.id})
+                        .c('data', {xmlns: 'urn:xmpp:avatar:data'})
+                            .t(avatar_data.data);
+        connection.sendIQ(data_iq, onAvatarDataUpload, onAvatarUploadError);
+    });
+
+    function onAvatarMetadataUpload(iq)
+    {
+        console.log("onAvatarMetadataUpload", iq);
+    }
+
+    function onAvatarDataUpload(iq)
+    {
+        console.log('Avatar successfully uploaded!', iq);
+        avatar_change.disabled = true;
+        avatar_size.innerHTML = '';
+    }
+
+    function onAvatarUploadError(iq)
+    {
+        console.log("onAvatarUploadError", iq);
+    }
+
+    avatar_file.addEventListener('change', function (evt) {
+        const file = evt.target.files[0];
+        avatar_data.type = file.type;
+        avatar_data.bytes = file.size;
+
+        // Set the preview.
+        avatar_img.src = URL.createObjectURL(file);
+        const [size, unit] = friendlyDataSize(file.size);
+        avatar_size.innerHTML = Math.round(size) + ' ' + unit;
+
+        // Obtain the base64 version of this file.
+        const base64_reader = new FileReader();
+        base64_reader.onload = function (evt) {
+            const data = evt.target.result;
+            avatar_data.data = data.substr(data.indexOf(',') + 1);
+        }
+        base64_reader.readAsDataURL(file);
+
+        // Compute the sha1 of this file.
+        const sha1_reader = new FileReader();
+        sha1_reader.onload = async function (evt) {
+            const data = evt.target.result;
+            const digest = await window.crypto.subtle.digest('SHA-1', data);
+            const sha1 = (Array
+                .from(new Uint8Array(digest))
+                .map(b => b.toString(16).padStart(2, "0"))
+                .join(""));
+            avatar_data.id = sha1;
+            avatar_change.disabled = false;
+        }
+        sha1_reader.readAsArrayBuffer(file);
+    });
+
+    function nsResolver(prefix) {
+        return {
+            pubsub: 'http://jabber.org/protocol/pubsub',
+            avatar_metadata: 'urn:xmpp:avatar:metadata',
+            avatar_data: 'urn:xmpp:avatar:data',
+        }[prefix] || null;
+    }
+
+    function parseXPath(elem, xpath)
+    {
+        return elem.getRootNode().evaluate(xpath, elem, nsResolver, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
+    }
+
+    function friendlyDataSize(bytes) {
+        let unit = 'B'
+        if (bytes >= 1024) {
+            bytes /= 1024;
+            unit = 'KiB';
+        }
+        if (bytes >= 1024) {
+            bytes /= 1024;
+            unit = 'MiB';
+        }
+        if (bytes >= 1024) {
+            bytes /= 1024;
+            unit = 'GiB';
+        }
+        if (bytes >= 1024) {
+            bytes /= 1024;
+            unit = 'TiB';
+        }
+        return [bytes, unit];
+    }
+}
new file mode 100644
--- /dev/null
+++ b/client.js
@@ -0,0 +1,70 @@
+'use strict';
+
+const BOSH_SERVICE = 'https://bosh.linkmauve.fr/';
+
+function rawInput(data)
+{
+    console.log('RECV', data);
+}
+
+function rawOutput(data)
+{
+    console.log('SENT', data);
+}
+
+document.addEventListener('DOMContentLoaded', function () {
+    const connection = new Strophe.Connection(BOSH_SERVICE);
+    connection.rawInput = rawInput;
+    connection.rawOutput = rawOutput;
+
+    const jid_element = document.getElementById('jid');
+    const pass_element = document.getElementById('pass');
+    const connect_button = document.getElementById('connect');
+
+    const connected_div = document.getElementById('connected');
+
+    const avatar_img = document.getElementById('avatar');
+
+    connect_button.addEventListener('click', function (evt) {
+        if (connect_button.value == 'connect') {
+            connection.connect(jid_element.value,
+                               pass_element.value,
+                               onConnect);
+        } else {
+            connection.disconnect();
+        }
+        evt.preventDefault();
+    });
+
+    function onConnect(status)
+    {
+        if (status == Strophe.Status.CONNECTING) {
+            console.log('Strophe is connecting.');
+            connect_button.value = 'disconnect';
+            jid_element.disabled = true;
+            pass_element.disabled = true;
+        } else if (status == Strophe.Status.CONNFAIL) {
+            console.log('Strophe failed to connect.');
+            connect_button.value = 'connect';
+            jid_element.disabled = false;
+            pass_element.disabled = false;
+        } else if (status == Strophe.Status.DISCONNECTING) {
+            console.log('Strophe is disconnecting.');
+        } else if (status == Strophe.Status.DISCONNECTED) {
+            console.log('Strophe is disconnected.');
+            connect_button.value = 'connect';
+            jid_element.disabled = false;
+            pass_element.disabled = false;
+        } else if (status == Strophe.Status.CONNECTED) {
+            console.log('Strophe is connected.');
+            onConnected();
+        }
+    }
+
+    function onConnected()
+    {
+        connected_div.hidden = false;
+        initNickname(connection);
+        initAvatar(connection);
+    }
+});
new file mode 100644
--- /dev/null
+++ b/index.xhtml
@@ -0,0 +1,98 @@
+<?xml version="1.0"?>
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+<head>
+  <meta charset="utf-8"/>
+  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes"/>
+  <title>Prosody IM account configuration</title>
+  <link rel="canonical" content-type="text/html" href="https://prosody.im/index"/>
+  <link rel="icon" href="prosody.svg"/>
+  <link rel="apple-touch-icon" href="prosody.svg"/>
+  <link rel="stylesheet" href="share/bootstrap/css/bootstrap.min.css"/>
+  <link rel="stylesheet" href="prosody.css"/>
+</head>
+<body>
+
+<nav class="navbar navbar-default">
+  <div class="container">
+    <div class="navbar-header">
+      <a class="navbar-toggle collapsed" href="index.html#navbar">
+        <span class="sr-only">Toggle navigation</span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </a>
+      <a class="navbar-brand" href="index.html">Prosody IM</a>
+    </div>
+    <div id="navbar" class="navbar-collapse">
+      <ul class="nav navbar-nav">
+        <li><a href="https://prosody.im/download">Download</a></li>
+        <li><a href="https://prosody.im/doc">Documentation</a></li>
+        <li><a href="https://prosody.im/discuss">Support</a></li>
+        <li><a href="https://prosody.im/bugs">Issues</a></li>
+        <li><a href="https://prosody.im/source">Source</a></li>
+        <li><a href="https://prosody.im/doc/developers">Dev docs</a></li>
+      </ul>
+    </div>
+  </div>
+</nav>
+
+<div id="main">
+
+<form id="connection">
+<label>JID: <input type="email" id="jid"/></label><br/>
+<label>Password: <input type="password" id="pass"/></label><br/>
+<input type="submit" id="connect" value="connect"/>
+</form>
+
+<div id="connected" hidden="">
+<h1>Account</h1>
+<h2>Nickname</h2>
+<p>
+<label>Nickname: <input id="nick"/></label><br/>
+<button id="nick-change">Change my nickname</button>
+</p>
+<h2>Avatar</h2>
+<p>
+<img id="avatar" style="max-width:96px;max-height:96px"/> <span id="avatar-size"/><br/>
+<input type="file" style="display:none" accept="image/*" id="avatar-file"/>
+<button id="avatar-upload">Choose a new avatar</button><br/>
+<button id="avatar-change" disabled="">Upload this avatar</button>
+</p>
+<h2>Dangerous zone</h2>
+<p>
+<button disabled="">Change my password</button>
+<button disabled="">⚠️ Delete my account</button>
+</p>
+
+<h1>Message Archiving</h1>
+<p>
+<button disabled="">View my message archive</button><br/>
+<button disabled="">Download my entire message archive</button><br/>
+<button disabled="">⚠️ Purge my entire message archive</button>
+</p>
+</div>
+
+</div>
+
+<footer class="container">
+  <dl class="col-xs-4">
+    <dt class="hidden-xs">License</dt>
+    <dd><a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/" title="Creative Commons Attribution-ShareAlike 4.0 International License.">cc-by-sa</a></dd>
+  </dl>
+  <dl class="col-xs-4">
+    <dt class="hidden-xs">Last change</dt>
+    <dd><datetime datetime="2018-12-18">2018-12-18</datetime></dd>
+  </dl>
+  <dl class="col-xs-4 pull-right">
+    <dt class="hidden-xs">Page source</dt>
+    <dd><a rel="alternate" href="https://hg.prosody.im/site/file/e956afb61f21/index.md">index.md</a></dd>
+  </dl>
+</footer>
+
+<script src="strophe.js"/>
+<script src="client.js"/>
+<script src="nickname.js"/>
+<script src="avatar.js"/>
+
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/nickname.js
@@ -0,0 +1,58 @@
+'use strict';
+
+function initNickname(connection) {
+    const nick_input = document.getElementById('nick');
+    const nick_change = document.getElementById('nick-change');
+
+    const iq = $iq({type: 'get'})
+        .c('pubsub', {xmlns: 'http://jabber.org/protocol/pubsub'})
+            .c('items', {node: 'http://jabber.org/protocol/nick'});
+    connection.sendIQ(iq, onNickname, onNicknameRetrievalError.bind(null, 'PubSub query failed.'));
+
+    function nsResolver(prefix) {
+        return {
+            pubsub: 'http://jabber.org/protocol/pubsub',
+            nickname: 'http://jabber.org/protocol/nick',
+        }[prefix] || null;
+    }
+
+    function parseXPath(elem, xpath)
+    {
+        return elem.getRootNode().evaluate(xpath, elem, nsResolver, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
+    }
+
+    function onNickname(result_iq)
+    {
+        const item = parseXPath(result_iq, './pubsub:pubsub/pubsub:items/pubsub:item');
+        if (item == null)
+            return onNicknameRetrievalError('no item found.');
+        const id = item.getAttributeNS(null, 'id');
+        const nick = parseXPath(item, './nickname:nick');
+        nick_input.value = nick.textContent;
+    }
+
+    function onNicknameRetrievalError(string)
+    {
+        console.log('Failed to retrieve nickname: ' + string);
+    }
+
+    nick_change.addEventListener('click', function (evt) {
+        const iq = $iq({type: 'set'})
+            .c('pubsub', {xmlns: 'http://jabber.org/protocol/pubsub'})
+                .c('publish', {node: 'http://jabber.org/protocol/nick'})
+                    .c('item', {id: 'current'})
+                        .c('nick', {xmlns: 'http://jabber.org/protocol/nick'})
+                            .t(nick_input.value);
+        connection.sendIQ(iq, onNicknameChanged, onNicknameChangeError);
+    });
+
+    function onNicknameChanged(iq)
+    {
+        console.log("onNicknameChanged", iq);
+    }
+
+    function onNicknameChangeError(iq)
+    {
+        console.log("onNicknameChangeError", iq);
+    }
+}
new file mode 100644
--- /dev/null
+++ b/prosody.css
@@ -0,0 +1,74 @@
+
+/* Branding */
+.jumbotron h1, .jumbotron > h2 {
+	text-align: center;
+}
+h1 img {
+	height: 1em;
+}
+.jumbotron p img {
+	height: 42pt;
+	float: left;
+	padding-right: 1ex;
+}
+@media (max-width: 767px) {
+	#navbar {
+		height: 0;
+		overflow: hidden;
+	}
+	#navbar:target {
+		height: auto;
+	}
+}
+.navbar {
+	background-color: #6197d6;
+	background-image: linear-gradient(to right, #000080, #6197d6);
+	border-width: 0 0 1em;
+	border-color: #e49200;
+	border-radius: 0;
+}
+.navbar .navbar-nav a, .navbar .navbar-nav a:focus, .navbar .navbar-nav a:hover, .navbar .navbar-brand, .navbar .navbar-brand, .navbar .navbar-brand {
+	background-color: inherit !important;
+	color: white !important;
+}
+.navbar .navbar-nav > .active > a, .navbar .navbar-nav > .active > a:focus, .navbar .navbar-nav > .active > a:hover {
+	font-weight: bold;
+}
+.navbar .navbar-nav a, .navbar .navbar-nav a:focus, .navbar .navbar-nav a:hover {
+	background-color: inherit !important;
+	color: white !important;
+}
+.navbar .navbar-toggle .icon-bar {
+	background-color: white;
+}
+section:target > :first-child::after {
+	content: "←";
+	color: silver;
+}
+footer {
+	font-size: smaller;
+	margin-top: 7em;
+	text-align: center;
+}
+footer > dl:first-child {
+	text-align: left;
+}
+footer > dl:last-child {
+	text-align: right;
+}
+
+.news ul li:last-child {
+	opacity: 0.50;
+}
+
+.prosody-sponsors p a img {
+	height: 18pt;
+}
+
+/* From Pandoc template */
+code{white-space: pre-wrap;}
+span.smallcaps{font-variant: small-caps;}
+span.underline{text-decoration: underline;}
+div.column{display: inline-block; vertical-align: top; width: 50%;}
+q { quotes: "“" "”" "‘" "’"; }
+
new file mode 100644
--- /dev/null
+++ b/prosody.svg
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<svg xmlns="http://www.w3.org/2000/svg" height="480" width="480">
+ <g>
+  <title>Prosody Logo</title>
+  <rect fill="#6197df" height="220" id="svg_1" rx="60" ry="60" width="220" x="10" y="10"></rect>
+  <rect fill="#f29b00" height="220" id="svg_2" rx="60" ry="60" width="220" x="10" y="240"></rect>
+  <rect fill="#f29b00" height="220" id="svg_3" rx="60" ry="60" width="220" x="240" y="10"></rect>
+  <rect fill="#6197df" height="220" id="svg_4" rx="60" ry="60" width="220" x="240" y="240"></rect>
+ </g>
+</svg>
new file mode 100644
--- /dev/null
+++ b/share/bootstrap/css/bootstrap.min.css
@@ -0,0 +1,1 @@
+/*!* Bootstrap v3.3.7(http://getbootstrap.com) * Copyright 2011-2016 Twitter,Inc. * Licensed under MIT(https://github.com/twbs/bootstrap/blob/master/LICENSE) */ /*!normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*!Source:https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ @media print{*,*:before,*:after{background:transparent!important;color:#000!important;box-shadow:none!important;text-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:"(" attr(href) ")"}abbr[title]:after{content:"(" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot%3F') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:hover,a:focus{color:#23527c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media(min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:hover,a.text-primary:focus{color:#286090}.text-success{color:#3c763d}a.text-success:hover,a.text-success:focus{color:#2b542c}.text-info{color:#31708f}a.text-info:hover,a.text-info:focus{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover,a.text-warning:focus{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover,a.text-danger:focus{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:hover,a.bg-primary:focus{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:hover,a.bg-success:focus{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover,a.bg-info:focus{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover,a.bg-warning:focus{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover,a.bg-danger:focus{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}@media(min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media(min-width:768px){.container{width:750px}}@media(min-width:992px){.container{width:970px}}@media(min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media(min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media(min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media(min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,0.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{border:0;background-color:transparent}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"].form-control,input[type="time"].form-control,input[type="datetime-local"].form-control,input[type="month"].form-control{line-height:34px}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:30px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:46px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0;min-height:34px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg+.form-control-feedback,.form-group-lg .form-control+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback,.input-group-sm+.form-control-feedback,.form-group-sm .form-control+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.has-feedback label ~ .form-control-feedback{top:25px}.has-feedback label.sr-only ~ .form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media(min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media(min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media(min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media(min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#333;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:focus,.btn-default.focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active:hover,.btn-default.active:hover,.open>.dropdown-toggle.btn-default:hover,.btn-default:active:focus,.btn-default.active:focus,.open>.dropdown-toggle.btn-default:focus,.btn-default:active.focus,.btn-default.active.focus,.open>.dropdown-toggle.btn-default.focus{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary:focus,.btn-primary.focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary:active:hover,.btn-primary.active:hover,.open>.dropdown-toggle.btn-primary:hover,.btn-primary:active:focus,.btn-primary.active:focus,.open>.dropdown-toggle.btn-primary:focus,.btn-primary:active.focus,.btn-primary.active.focus,.open>.dropdown-toggle.btn-primary.focus{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:focus,.btn-success.focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active:hover,.btn-success.active:hover,.open>.dropdown-toggle.btn-success:hover,.btn-success:active:focus,.btn-success.active:focus,.open>.dropdown-toggle.btn-success:focus,.btn-success:active.focus,.btn-success.active.focus,.open>.dropdown-toggle.btn-success.focus{color:#fff;background-color:#398439;border-color:#255625}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:focus,.btn-info.focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active:hover,.btn-info.active:hover,.open>.dropdown-toggle.btn-info:hover,.btn-info:active:focus,.btn-info.active:focus,.open>.dropdown-toggle.btn-info:focus,.btn-info:active.focus,.btn-info.active.focus,.open>.dropdown-toggle.btn-info.focus{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:focus,.btn-warning.focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active:hover,.btn-warning.active:hover,.open>.dropdown-toggle.btn-warning:hover,.btn-warning:active:focus,.btn-warning.active:focus,.open>.dropdown-toggle.btn-warning:focus,.btn-warning:active.focus,.btn-warning.active.focus,.open>.dropdown-toggle.btn-warning.focus{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:focus,.btn-danger.focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active:hover,.btn-danger.active:hover,.open>.dropdown-toggle.btn-danger:hover,.btn-danger:active:focus,.btn-danger.active:focus,.open>.dropdown-toggle.btn-danger:focus,.btn-danger:active.focus,.btn-danger.active.focus,.open>.dropdown-toggle.btn-danger.focus{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#337ab7;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#777;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:.35s;transition-duration:.35s;-webkit-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#337ab7}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#777}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media(min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:normal;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#777;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #dddddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media(min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media(min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media(min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media(min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media(min-width:768px){.navbar{border-radius:4px}}@media(min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media(min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media(max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media(min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media(min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media(min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media(min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media(min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media(max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media(min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:8px;margin-bottom:8px}@media(min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media(max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media(min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media(min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media(min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right ~ .navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}@media(max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#080808;color:#fff}@media(max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#ccc}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.42857143;text-decoration:none;color:#337ab7;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:3;color:#fff;background-color:#337ab7;border-color:#337ab7;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#777;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#777;background-color:#fff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;color:#fff;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px;padding-left:15px;padding-right:15px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,button.list-group-item:hover,a.list-group-item:focus,button.list-group-item:focus{text-decoration:none;color:#555;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#eee;color:#777;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,button.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,button.list-group-item-success.active,a.list-group-item-success.active:hover,button.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,button.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,button.list-group-item-info.active,a.list-group-item-info.active:hover,button.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,button.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,button.list-group-item-warning.active,a.list-group-item-warning.active:hover,button.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,button.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,button.list-group-item-danger.active,a.list-group-item-danger.active:hover,button.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media(min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media(min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:12px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:14px;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,0.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-moz-transition:-moz-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;-moz-perspective:1000px;perspective:1000px}.carousel-inner>.item.next,.carousel-inner>.item.active.right{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);left:0}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);left:0}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:.5;filter:alpha(opacity=50);font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);background-color:rgba(0,0,0,0)}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,0.5) 0,rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,0.5) 0,rgba(0,0,0,0.0001) 100%);background-image:linear-gradient(to right,rgba(0,0,0,0.5) 0,rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000',endColorstr='#00000000',GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left,rgba(0,0,0,0.0001) 0,rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,0.0001) 0,rgba(0,0,0,0.5) 100%);background-image:linear-gradient(to right,rgba(0,0,0,0.0001) 0,rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000',endColorstr='#80000000',GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-header:before,.modal-header:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-header:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none!important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none!important}@media(max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media(max-width:767px){.visible-xs-block{display:block!important}}@media(max-width:767px){.visible-xs-inline{display:inline!important}}@media(max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media(min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media(min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media(min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media(min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media(min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media(min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media(min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}@media(min-width:1200px){.visible-lg-block{display:block!important}}@media(min-width:1200px){.visible-lg-inline{display:inline!important}}@media(min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media(max-width:767px){.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}
\ No newline at end of file
new file mode 100644
index 0000000000000000000000000000000000000000..b93a4953fff68df523aa7656497ee339d6026d64
GIT binary patch
literal 20127
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
Xa1ugufhlr@A=L`vC<+781Zjd`SV@Ta
new file mode 100644
--- /dev/null
+++ b/share/bootstrap/fonts/glyphicons-halflings-regular.svg
@@ -0,0 +1,288 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata></metadata>
+<defs>
+<font id="glyphicons_halflingsregular" horiz-adv-x="1200" >
+<font-face units-per-em="1200" ascent="960" descent="-240" />
+<missing-glyph horiz-adv-x="500" />
+<glyph horiz-adv-x="0" />
+<glyph horiz-adv-x="400" />
+<glyph unicode=" " />
+<glyph unicode="*" d="M600 1100q15 0 34 -1.5t30 -3.5l11 -1q10 -2 17.5 -10.5t7.5 -18.5v-224l158 158q7 7 18 8t19 -6l106 -106q7 -8 6 -19t-8 -18l-158 -158h224q10 0 18.5 -7.5t10.5 -17.5q6 -41 6 -75q0 -15 -1.5 -34t-3.5 -30l-1 -11q-2 -10 -10.5 -17.5t-18.5 -7.5h-224l158 -158 q7 -7 8 -18t-6 -19l-106 -106q-8 -7 -19 -6t-18 8l-158 158v-224q0 -10 -7.5 -18.5t-17.5 -10.5q-41 -6 -75 -6q-15 0 -34 1.5t-30 3.5l-11 1q-10 2 -17.5 10.5t-7.5 18.5v224l-158 -158q-7 -7 -18 -8t-19 6l-106 106q-7 8 -6 19t8 18l158 158h-224q-10 0 -18.5 7.5 t-10.5 17.5q-6 41 -6 75q0 15 1.5 34t3.5 30l1 11q2 10 10.5 17.5t18.5 7.5h224l-158 158q-7 7 -8 18t6 19l106 106q8 7 19 6t18 -8l158 -158v224q0 10 7.5 18.5t17.5 10.5q41 6 75 6z" />
+<glyph unicode="+" d="M450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-350h350q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-350v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v350h-350q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5 h350v350q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xa0;" />
+<glyph unicode="&#xa5;" d="M825 1100h250q10 0 12.5 -5t-5.5 -13l-364 -364q-6 -6 -11 -18h268q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-100h275q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-174q0 -11 -7.5 -18.5t-18.5 -7.5h-148q-11 0 -18.5 7.5t-7.5 18.5v174 h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h125v100h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h118q-5 12 -11 18l-364 364q-8 8 -5.5 13t12.5 5h250q25 0 43 -18l164 -164q8 -8 18 -8t18 8l164 164q18 18 43 18z" />
+<glyph unicode="&#x2000;" horiz-adv-x="650" />
+<glyph unicode="&#x2001;" horiz-adv-x="1300" />
+<glyph unicode="&#x2002;" horiz-adv-x="650" />
+<glyph unicode="&#x2003;" horiz-adv-x="1300" />
+<glyph unicode="&#x2004;" horiz-adv-x="433" />
+<glyph unicode="&#x2005;" horiz-adv-x="325" />
+<glyph unicode="&#x2006;" horiz-adv-x="216" />
+<glyph unicode="&#x2007;" horiz-adv-x="216" />
+<glyph unicode="&#x2008;" horiz-adv-x="162" />
+<glyph unicode="&#x2009;" horiz-adv-x="260" />
+<glyph unicode="&#x200a;" horiz-adv-x="72" />
+<glyph unicode="&#x202f;" horiz-adv-x="260" />
+<glyph unicode="&#x205f;" horiz-adv-x="325" />
+<glyph unicode="&#x20ac;" d="M744 1198q242 0 354 -189q60 -104 66 -209h-181q0 45 -17.5 82.5t-43.5 61.5t-58 40.5t-60.5 24t-51.5 7.5q-19 0 -40.5 -5.5t-49.5 -20.5t-53 -38t-49 -62.5t-39 -89.5h379l-100 -100h-300q-6 -50 -6 -100h406l-100 -100h-300q9 -74 33 -132t52.5 -91t61.5 -54.5t59 -29 t47 -7.5q22 0 50.5 7.5t60.5 24.5t58 41t43.5 61t17.5 80h174q-30 -171 -128 -278q-107 -117 -274 -117q-206 0 -324 158q-36 48 -69 133t-45 204h-217l100 100h112q1 47 6 100h-218l100 100h134q20 87 51 153.5t62 103.5q117 141 297 141z" />
+<glyph unicode="&#x20bd;" d="M428 1200h350q67 0 120 -13t86 -31t57 -49.5t35 -56.5t17 -64.5t6.5 -60.5t0.5 -57v-16.5v-16.5q0 -36 -0.5 -57t-6.5 -61t-17 -65t-35 -57t-57 -50.5t-86 -31.5t-120 -13h-178l-2 -100h288q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-138v-175q0 -11 -5.5 -18 t-15.5 -7h-149q-10 0 -17.5 7.5t-7.5 17.5v175h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v100h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v475q0 10 7.5 17.5t17.5 7.5zM600 1000v-300h203q64 0 86.5 33t22.5 119q0 84 -22.5 116t-86.5 32h-203z" />
+<glyph unicode="&#x2212;" d="M250 700h800q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#x231b;" d="M1000 1200v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-50v-100q0 -91 -49.5 -165.5t-130.5 -109.5q81 -35 130.5 -109.5t49.5 -165.5v-150h50q21 0 35.5 -14.5t14.5 -35.5v-150h-800v150q0 21 14.5 35.5t35.5 14.5h50v150q0 91 49.5 165.5t130.5 109.5q-81 35 -130.5 109.5 t-49.5 165.5v100h-50q-21 0 -35.5 14.5t-14.5 35.5v150h800zM400 1000v-100q0 -60 32.5 -109.5t87.5 -73.5q28 -12 44 -37t16 -55t-16 -55t-44 -37q-55 -24 -87.5 -73.5t-32.5 -109.5v-150h400v150q0 60 -32.5 109.5t-87.5 73.5q-28 12 -44 37t-16 55t16 55t44 37 q55 24 87.5 73.5t32.5 109.5v100h-400z" />
+<glyph unicode="&#x25fc;" horiz-adv-x="500" d="M0 0z" />
+<glyph unicode="&#x2601;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -206.5q0 -121 -85 -207.5t-205 -86.5h-750q-79 0 -135.5 57t-56.5 137q0 69 42.5 122.5t108.5 67.5q-2 12 -2 37q0 153 108 260.5t260 107.5z" />
+<glyph unicode="&#x26fa;" d="M774 1193.5q16 -9.5 20.5 -27t-5.5 -33.5l-136 -187l467 -746h30q20 0 35 -18.5t15 -39.5v-42h-1200v42q0 21 15 39.5t35 18.5h30l468 746l-135 183q-10 16 -5.5 34t20.5 28t34 5.5t28 -20.5l111 -148l112 150q9 16 27 20.5t34 -5zM600 200h377l-182 112l-195 534v-646z " />
+<glyph unicode="&#x2709;" d="M25 1100h1150q10 0 12.5 -5t-5.5 -13l-564 -567q-8 -8 -18 -8t-18 8l-564 567q-8 8 -5.5 13t12.5 5zM18 882l264 -264q8 -8 8 -18t-8 -18l-264 -264q-8 -8 -13 -5.5t-5 12.5v550q0 10 5 12.5t13 -5.5zM918 618l264 264q8 8 13 5.5t5 -12.5v-550q0 -10 -5 -12.5t-13 5.5 l-264 264q-8 8 -8 18t8 18zM818 482l364 -364q8 -8 5.5 -13t-12.5 -5h-1150q-10 0 -12.5 5t5.5 13l364 364q8 8 18 8t18 -8l164 -164q8 -8 18 -8t18 8l164 164q8 8 18 8t18 -8z" />
+<glyph unicode="&#x270f;" d="M1011 1210q19 0 33 -13l153 -153q13 -14 13 -33t-13 -33l-99 -92l-214 214l95 96q13 14 32 14zM1013 800l-615 -614l-214 214l614 614zM317 96l-333 -112l110 335z" />
+<glyph unicode="&#xe001;" d="M700 650v-550h250q21 0 35.5 -14.5t14.5 -35.5v-50h-800v50q0 21 14.5 35.5t35.5 14.5h250v550l-500 550h1200z" />
+<glyph unicode="&#xe002;" d="M368 1017l645 163q39 15 63 0t24 -49v-831q0 -55 -41.5 -95.5t-111.5 -63.5q-79 -25 -147 -4.5t-86 75t25.5 111.5t122.5 82q72 24 138 8v521l-600 -155v-606q0 -42 -44 -90t-109 -69q-79 -26 -147 -5.5t-86 75.5t25.5 111.5t122.5 82.5q72 24 138 7v639q0 38 14.5 59 t53.5 34z" />
+<glyph unicode="&#xe003;" d="M500 1191q100 0 191 -39t156.5 -104.5t104.5 -156.5t39 -191l-1 -2l1 -5q0 -141 -78 -262l275 -274q23 -26 22.5 -44.5t-22.5 -42.5l-59 -58q-26 -20 -46.5 -20t-39.5 20l-275 274q-119 -77 -261 -77l-5 1l-2 -1q-100 0 -191 39t-156.5 104.5t-104.5 156.5t-39 191 t39 191t104.5 156.5t156.5 104.5t191 39zM500 1022q-88 0 -162 -43t-117 -117t-43 -162t43 -162t117 -117t162 -43t162 43t117 117t43 162t-43 162t-117 117t-162 43z" />
+<glyph unicode="&#xe005;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104z" />
+<glyph unicode="&#xe006;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429z" />
+<glyph unicode="&#xe007;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429zM477 700h-240l197 -142l-74 -226 l193 139l195 -140l-74 229l192 140h-234l-78 211z" />
+<glyph unicode="&#xe008;" d="M600 1200q124 0 212 -88t88 -212v-250q0 -46 -31 -98t-69 -52v-75q0 -10 6 -21.5t15 -17.5l358 -230q9 -5 15 -16.5t6 -21.5v-93q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v93q0 10 6 21.5t15 16.5l358 230q9 6 15 17.5t6 21.5v75q-38 0 -69 52 t-31 98v250q0 124 88 212t212 88z" />
+<glyph unicode="&#xe009;" d="M25 1100h1150q10 0 17.5 -7.5t7.5 -17.5v-1050q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v1050q0 10 7.5 17.5t17.5 7.5zM100 1000v-100h100v100h-100zM875 1000h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5t17.5 -7.5h550 q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM1000 1000v-100h100v100h-100zM100 800v-100h100v100h-100zM1000 800v-100h100v100h-100zM100 600v-100h100v100h-100zM1000 600v-100h100v100h-100zM875 500h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5 t17.5 -7.5h550q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM100 400v-100h100v100h-100zM1000 400v-100h100v100h-100zM100 200v-100h100v100h-100zM1000 200v-100h100v100h-100z" />
+<glyph unicode="&#xe010;" d="M50 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM50 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe011;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM850 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 700h200q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h200 q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5 t35.5 14.5z" />
+<glyph unicode="&#xe012;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h700q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe013;" d="M465 477l571 571q8 8 18 8t17 -8l177 -177q8 -7 8 -17t-8 -18l-783 -784q-7 -8 -17.5 -8t-17.5 8l-384 384q-8 8 -8 18t8 17l177 177q7 8 17 8t18 -8l171 -171q7 -7 18 -7t18 7z" />
+<glyph unicode="&#xe014;" d="M904 1083l178 -179q8 -8 8 -18.5t-8 -17.5l-267 -268l267 -268q8 -7 8 -17.5t-8 -18.5l-178 -178q-8 -8 -18.5 -8t-17.5 8l-268 267l-268 -267q-7 -8 -17.5 -8t-18.5 8l-178 178q-8 8 -8 18.5t8 17.5l267 268l-267 268q-8 7 -8 17.5t8 18.5l178 178q8 8 18.5 8t17.5 -8 l268 -267l268 268q7 7 17.5 7t18.5 -7z" />
+<glyph unicode="&#xe015;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM425 900h150q10 0 17.5 -7.5t7.5 -17.5v-75h75q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5 t-17.5 -7.5h-75v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-75q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v75q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe016;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM325 800h350q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-350q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe017;" d="M550 1200h100q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM800 975v166q167 -62 272 -209.5t105 -331.5q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5 t-184.5 123t-123 184.5t-45.5 224q0 184 105 331.5t272 209.5v-166q-103 -55 -165 -155t-62 -220q0 -116 57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5q0 120 -62 220t-165 155z" />
+<glyph unicode="&#xe018;" d="M1025 1200h150q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM725 800h150q10 0 17.5 -7.5t7.5 -17.5v-750q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v750 q0 10 7.5 17.5t17.5 7.5zM425 500h150q10 0 17.5 -7.5t7.5 -17.5v-450q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v450q0 10 7.5 17.5t17.5 7.5zM125 300h150q10 0 17.5 -7.5t7.5 -17.5v-250q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5 v250q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe019;" d="M600 1174q33 0 74 -5l38 -152l5 -1q49 -14 94 -39l5 -2l134 80q61 -48 104 -105l-80 -134l3 -5q25 -44 39 -93l1 -6l152 -38q5 -43 5 -73q0 -34 -5 -74l-152 -38l-1 -6q-15 -49 -39 -93l-3 -5l80 -134q-48 -61 -104 -105l-134 81l-5 -3q-44 -25 -94 -39l-5 -2l-38 -151 q-43 -5 -74 -5q-33 0 -74 5l-38 151l-5 2q-49 14 -94 39l-5 3l-134 -81q-60 48 -104 105l80 134l-3 5q-25 45 -38 93l-2 6l-151 38q-6 42 -6 74q0 33 6 73l151 38l2 6q13 48 38 93l3 5l-80 134q47 61 105 105l133 -80l5 2q45 25 94 39l5 1l38 152q43 5 74 5zM600 815 q-89 0 -152 -63t-63 -151.5t63 -151.5t152 -63t152 63t63 151.5t-63 151.5t-152 63z" />
+<glyph unicode="&#xe020;" d="M500 1300h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 -17.5v-75h-1100v75q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5zM500 1200v-100h300v100h-300zM1100 900v-800q0 -41 -29.5 -70.5t-70.5 -29.5h-700q-41 0 -70.5 29.5t-29.5 70.5 v800h900zM300 800v-700h100v700h-100zM500 800v-700h100v700h-100zM700 800v-700h100v700h-100zM900 800v-700h100v700h-100z" />
+<glyph unicode="&#xe021;" d="M18 618l620 608q8 7 18.5 7t17.5 -7l608 -608q8 -8 5.5 -13t-12.5 -5h-175v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v375h-300v-375q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v575h-175q-10 0 -12.5 5t5.5 13z" />
+<glyph unicode="&#xe022;" d="M600 1200v-400q0 -41 29.5 -70.5t70.5 -29.5h300v-650q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5h450zM1000 800h-250q-21 0 -35.5 14.5t-14.5 35.5v250z" />
+<glyph unicode="&#xe023;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h50q10 0 17.5 -7.5t7.5 -17.5v-275h175q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe024;" d="M1300 0h-538l-41 400h-242l-41 -400h-538l431 1200h209l-21 -300h162l-20 300h208zM515 800l-27 -300h224l-27 300h-170z" />
+<glyph unicode="&#xe025;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-450h191q20 0 25.5 -11.5t-7.5 -27.5l-327 -400q-13 -16 -32 -16t-32 16l-327 400q-13 16 -7.5 27.5t25.5 11.5h191v450q0 21 14.5 35.5t35.5 14.5zM1125 400h50q10 0 17.5 -7.5t7.5 -17.5v-350q0 -10 -7.5 -17.5t-17.5 -7.5 h-1050q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h50q10 0 17.5 -7.5t7.5 -17.5v-175h900v175q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe026;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -275q-13 -16 -32 -16t-32 16l-223 275q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z " />
+<glyph unicode="&#xe027;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM632 914l223 -275q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5l223 275q13 16 32 16 t32 -16z" />
+<glyph unicode="&#xe028;" d="M225 1200h750q10 0 19.5 -7t12.5 -17l186 -652q7 -24 7 -49v-425q0 -12 -4 -27t-9 -17q-12 -6 -37 -6h-1100q-12 0 -27 4t-17 8q-6 13 -6 38l1 425q0 25 7 49l185 652q3 10 12.5 17t19.5 7zM878 1000h-556q-10 0 -19 -7t-11 -18l-87 -450q-2 -11 4 -18t16 -7h150 q10 0 19.5 -7t11.5 -17l38 -152q2 -10 11.5 -17t19.5 -7h250q10 0 19.5 7t11.5 17l38 152q2 10 11.5 17t19.5 7h150q10 0 16 7t4 18l-87 450q-2 11 -11 18t-19 7z" />
+<glyph unicode="&#xe029;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM540 820l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
+<glyph unicode="&#xe030;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-362q0 -10 -7.5 -17.5t-17.5 -7.5h-362q-11 0 -13 5.5t5 12.5l133 133q-109 76 -238 76q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5h150q0 -117 -45.5 -224 t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117z" />
+<glyph unicode="&#xe031;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-361q0 -11 -7.5 -18.5t-18.5 -7.5h-361q-11 0 -13 5.5t5 12.5l134 134q-110 75 -239 75q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5h-150q0 117 45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117zM1027 600h150 q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5q-192 0 -348 118l-134 -134q-7 -8 -12.5 -5.5t-5.5 12.5v360q0 11 7.5 18.5t18.5 7.5h360q10 0 12.5 -5.5t-5.5 -12.5l-133 -133q110 -76 240 -76q116 0 214.5 57t155.5 155.5t57 214.5z" />
+<glyph unicode="&#xe032;" d="M125 1200h1050q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-1050q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM1075 1000h-850q-10 0 -17.5 -7.5t-7.5 -17.5v-850q0 -10 7.5 -17.5t17.5 -7.5h850q10 0 17.5 7.5t7.5 17.5v850 q0 10 -7.5 17.5t-17.5 7.5zM325 900h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 900h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 700h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 700h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 500h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 500h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 300h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 300h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe033;" d="M900 800v200q0 83 -58.5 141.5t-141.5 58.5h-300q-82 0 -141 -59t-59 -141v-200h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h900q41 0 70.5 29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-100zM400 800v150q0 21 15 35.5t35 14.5h200 q20 0 35 -14.5t15 -35.5v-150h-300z" />
+<glyph unicode="&#xe034;" d="M125 1100h50q10 0 17.5 -7.5t7.5 -17.5v-1075h-100v1075q0 10 7.5 17.5t17.5 7.5zM1075 1052q4 0 9 -2q16 -6 16 -23v-421q0 -6 -3 -12q-33 -59 -66.5 -99t-65.5 -58t-56.5 -24.5t-52.5 -6.5q-26 0 -57.5 6.5t-52.5 13.5t-60 21q-41 15 -63 22.5t-57.5 15t-65.5 7.5 q-85 0 -160 -57q-7 -5 -15 -5q-6 0 -11 3q-14 7 -14 22v438q22 55 82 98.5t119 46.5q23 2 43 0.5t43 -7t32.5 -8.5t38 -13t32.5 -11q41 -14 63.5 -21t57 -14t63.5 -7q103 0 183 87q7 8 18 8z" />
+<glyph unicode="&#xe035;" d="M600 1175q116 0 227 -49.5t192.5 -131t131 -192.5t49.5 -227v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v300q0 127 -70.5 231.5t-184.5 161.5t-245 57t-245 -57t-184.5 -161.5t-70.5 -231.5v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50 q-10 0 -17.5 7.5t-7.5 17.5v300q0 116 49.5 227t131 192.5t192.5 131t227 49.5zM220 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460q0 8 6 14t14 6zM820 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460 q0 8 6 14t14 6z" />
+<glyph unicode="&#xe036;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM900 668l120 120q7 7 17 7t17 -7l34 -34q7 -7 7 -17t-7 -17l-120 -120l120 -120q7 -7 7 -17 t-7 -17l-34 -34q-7 -7 -17 -7t-17 7l-120 119l-120 -119q-7 -7 -17 -7t-17 7l-34 34q-7 7 -7 17t7 17l119 120l-119 120q-7 7 -7 17t7 17l34 34q7 8 17 8t17 -8z" />
+<glyph unicode="&#xe037;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6 l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238q-6 8 -4.5 18t9.5 17l29 22q7 5 15 5z" />
+<glyph unicode="&#xe038;" d="M967 1004h3q11 -1 17 -10q135 -179 135 -396q0 -105 -34 -206.5t-98 -185.5q-7 -9 -17 -10h-3q-9 0 -16 6l-42 34q-8 6 -9 16t5 18q111 150 111 328q0 90 -29.5 176t-84.5 157q-6 9 -5 19t10 16l42 33q7 5 15 5zM321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5 t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238 q-6 8 -4.5 18.5t9.5 16.5l29 22q7 5 15 5z" />
+<glyph unicode="&#xe039;" d="M500 900h100v-100h-100v-100h-400v-100h-100v600h500v-300zM1200 700h-200v-100h200v-200h-300v300h-200v300h-100v200h600v-500zM100 1100v-300h300v300h-300zM800 1100v-300h300v300h-300zM300 900h-100v100h100v-100zM1000 900h-100v100h100v-100zM300 500h200v-500 h-500v500h200v100h100v-100zM800 300h200v-100h-100v-100h-200v100h-100v100h100v200h-200v100h300v-300zM100 400v-300h300v300h-300zM300 200h-100v100h100v-100zM1200 200h-100v100h100v-100zM700 0h-100v100h100v-100zM1200 0h-300v100h300v-100z" />
+<glyph unicode="&#xe040;" d="M100 200h-100v1000h100v-1000zM300 200h-100v1000h100v-1000zM700 200h-200v1000h200v-1000zM900 200h-100v1000h100v-1000zM1200 200h-200v1000h200v-1000zM400 0h-300v100h300v-100zM600 0h-100v91h100v-91zM800 0h-100v91h100v-91zM1100 0h-200v91h200v-91z" />
+<glyph unicode="&#xe041;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
+<glyph unicode="&#xe042;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM800 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-56 56l424 426l-700 700h150zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5 t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
+<glyph unicode="&#xe043;" d="M300 1200h825q75 0 75 -75v-900q0 -25 -18 -43l-64 -64q-8 -8 -13 -5.5t-5 12.5v950q0 10 -7.5 17.5t-17.5 7.5h-700q-25 0 -43 -18l-64 -64q-8 -8 -5.5 -13t12.5 -5h700q10 0 17.5 -7.5t7.5 -17.5v-950q0 -10 -7.5 -17.5t-17.5 -7.5h-850q-10 0 -17.5 7.5t-7.5 17.5v975 q0 25 18 43l139 139q18 18 43 18z" />
+<glyph unicode="&#xe044;" d="M250 1200h800q21 0 35.5 -14.5t14.5 -35.5v-1150l-450 444l-450 -445v1151q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe045;" d="M822 1200h-444q-11 0 -19 -7.5t-9 -17.5l-78 -301q-7 -24 7 -45l57 -108q6 -9 17.5 -15t21.5 -6h450q10 0 21.5 6t17.5 15l62 108q14 21 7 45l-83 301q-1 10 -9 17.5t-19 7.5zM1175 800h-150q-10 0 -21 -6.5t-15 -15.5l-78 -156q-4 -9 -15 -15.5t-21 -6.5h-550 q-10 0 -21 6.5t-15 15.5l-78 156q-4 9 -15 15.5t-21 6.5h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-650q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h750q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5 t7.5 17.5v650q0 10 -7.5 17.5t-17.5 7.5zM850 200h-500q-10 0 -19.5 -7t-11.5 -17l-38 -152q-2 -10 3.5 -17t15.5 -7h600q10 0 15.5 7t3.5 17l-38 152q-2 10 -11.5 17t-19.5 7z" />
+<glyph unicode="&#xe046;" d="M500 1100h200q56 0 102.5 -20.5t72.5 -50t44 -59t25 -50.5l6 -20h150q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5h150q2 8 6.5 21.5t24 48t45 61t72 48t102.5 21.5zM900 800v-100 h100v100h-100zM600 730q-95 0 -162.5 -67.5t-67.5 -162.5t67.5 -162.5t162.5 -67.5t162.5 67.5t67.5 162.5t-67.5 162.5t-162.5 67.5zM600 603q43 0 73 -30t30 -73t-30 -73t-73 -30t-73 30t-30 73t30 73t73 30z" />
+<glyph unicode="&#xe047;" d="M681 1199l385 -998q20 -50 60 -92q18 -19 36.5 -29.5t27.5 -11.5l10 -2v-66h-417v66q53 0 75 43.5t5 88.5l-82 222h-391q-58 -145 -92 -234q-11 -34 -6.5 -57t25.5 -37t46 -20t55 -6v-66h-365v66q56 24 84 52q12 12 25 30.5t20 31.5l7 13l399 1006h93zM416 521h340 l-162 457z" />
+<glyph unicode="&#xe048;" d="M753 641q5 -1 14.5 -4.5t36 -15.5t50.5 -26.5t53.5 -40t50.5 -54.5t35.5 -70t14.5 -87q0 -67 -27.5 -125.5t-71.5 -97.5t-98.5 -66.5t-108.5 -40.5t-102 -13h-500v89q41 7 70.5 32.5t29.5 65.5v827q0 24 -0.5 34t-3.5 24t-8.5 19.5t-17 13.5t-28 12.5t-42.5 11.5v71 l471 -1q57 0 115.5 -20.5t108 -57t80.5 -94t31 -124.5q0 -51 -15.5 -96.5t-38 -74.5t-45 -50.5t-38.5 -30.5zM400 700h139q78 0 130.5 48.5t52.5 122.5q0 41 -8.5 70.5t-29.5 55.5t-62.5 39.5t-103.5 13.5h-118v-350zM400 200h216q80 0 121 50.5t41 130.5q0 90 -62.5 154.5 t-156.5 64.5h-159v-400z" />
+<glyph unicode="&#xe049;" d="M877 1200l2 -57q-83 -19 -116 -45.5t-40 -66.5l-132 -839q-9 -49 13 -69t96 -26v-97h-500v97q186 16 200 98l173 832q3 17 3 30t-1.5 22.5t-9 17.5t-13.5 12.5t-21.5 10t-26 8.5t-33.5 10q-13 3 -19 5v57h425z" />
+<glyph unicode="&#xe050;" d="M1300 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM175 1000h-75v-800h75l-125 -167l-125 167h75v800h-75l125 167z" />
+<glyph unicode="&#xe051;" d="M1100 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-650q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v650h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM1167 50l-167 -125v75h-800v-75l-167 125l167 125v-75h800v75z" />
+<glyph unicode="&#xe052;" d="M50 1100h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe053;" d="M250 1100h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM250 500h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe054;" d="M500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000 q-21 0 -35.5 14.5t-14.5 35.5zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5zM0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5z" />
+<glyph unicode="&#xe055;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe056;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 1100h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 800h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 500h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 500h800q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 200h800 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe057;" d="M400 0h-100v1100h100v-1100zM550 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM267 550l-167 -125v75h-200v100h200v75zM550 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe058;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM900 0h-100v1100h100v-1100zM50 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM1100 600h200v-100h-200v-75l-167 125l167 125v-75zM50 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe059;" d="M75 1000h750q31 0 53 -22t22 -53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53v650q0 31 22 53t53 22zM1200 300l-300 300l300 300v-600z" />
+<glyph unicode="&#xe060;" d="M44 1100h1112q18 0 31 -13t13 -31v-1012q0 -18 -13 -31t-31 -13h-1112q-18 0 -31 13t-13 31v1012q0 18 13 31t31 13zM100 1000v-737l247 182l298 -131l-74 156l293 318l236 -288v500h-1000zM342 884q56 0 95 -39t39 -94.5t-39 -95t-95 -39.5t-95 39.5t-39 95t39 94.5 t95 39z" />
+<glyph unicode="&#xe062;" d="M648 1169q117 0 216 -60t156.5 -161t57.5 -218q0 -115 -70 -258q-69 -109 -158 -225.5t-143 -179.5l-54 -62q-9 8 -25.5 24.5t-63.5 67.5t-91 103t-98.5 128t-95.5 148q-60 132 -60 249q0 88 34 169.5t91.5 142t137 96.5t166.5 36zM652.5 974q-91.5 0 -156.5 -65 t-65 -157t65 -156.5t156.5 -64.5t156.5 64.5t65 156.5t-65 157t-156.5 65z" />
+<glyph unicode="&#xe063;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 173v854q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57z" />
+<glyph unicode="&#xe064;" d="M554 1295q21 -72 57.5 -143.5t76 -130t83 -118t82.5 -117t70 -116t49.5 -126t18.5 -136.5q0 -71 -25.5 -135t-68.5 -111t-99 -82t-118.5 -54t-125.5 -23q-84 5 -161.5 34t-139.5 78.5t-99 125t-37 164.5q0 69 18 136.5t49.5 126.5t69.5 116.5t81.5 117.5t83.5 119 t76.5 131t58.5 143zM344 710q-23 -33 -43.5 -70.5t-40.5 -102.5t-17 -123q1 -37 14.5 -69.5t30 -52t41 -37t38.5 -24.5t33 -15q21 -7 32 -1t13 22l6 34q2 10 -2.5 22t-13.5 19q-5 4 -14 12t-29.5 40.5t-32.5 73.5q-26 89 6 271q2 11 -6 11q-8 1 -15 -10z" />
+<glyph unicode="&#xe065;" d="M1000 1013l108 115q2 1 5 2t13 2t20.5 -1t25 -9.5t28.5 -21.5q22 -22 27 -43t0 -32l-6 -10l-108 -115zM350 1100h400q50 0 105 -13l-187 -187h-368q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v182l200 200v-332 q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM1009 803l-362 -362l-161 -50l55 170l355 355z" />
+<glyph unicode="&#xe066;" d="M350 1100h361q-164 -146 -216 -200h-195q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-103q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M824 1073l339 -301q8 -7 8 -17.5t-8 -17.5l-340 -306q-7 -6 -12.5 -4t-6.5 11v203q-26 1 -54.5 0t-78.5 -7.5t-92 -17.5t-86 -35t-70 -57q10 59 33 108t51.5 81.5t65 58.5t68.5 40.5t67 24.5t56 13.5t40 4.5v210q1 10 6.5 12.5t13.5 -4.5z" />
+<glyph unicode="&#xe067;" d="M350 1100h350q60 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-219q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M643 639l395 395q7 7 17.5 7t17.5 -7l101 -101q7 -7 7 -17.5t-7 -17.5l-531 -532q-7 -7 -17.5 -7t-17.5 7l-248 248q-7 7 -7 17.5t7 17.5l101 101q7 7 17.5 7t17.5 -7l111 -111q8 -7 18 -7t18 7z" />
+<glyph unicode="&#xe068;" d="M318 918l264 264q8 8 18 8t18 -8l260 -264q7 -8 4.5 -13t-12.5 -5h-170v-200h200v173q0 10 5 12t13 -5l264 -260q8 -7 8 -17.5t-8 -17.5l-264 -265q-8 -7 -13 -5t-5 12v173h-200v-200h170q10 0 12.5 -5t-4.5 -13l-260 -264q-8 -8 -18 -8t-18 8l-264 264q-8 8 -5.5 13 t12.5 5h175v200h-200v-173q0 -10 -5 -12t-13 5l-264 265q-8 7 -8 17.5t8 17.5l264 260q8 7 13 5t5 -12v-173h200v200h-175q-10 0 -12.5 5t5.5 13z" />
+<glyph unicode="&#xe069;" d="M250 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe070;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5 t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe071;" d="M1200 1050v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-492 480q-15 14 -15 35t15 35l492 480q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25z" />
+<glyph unicode="&#xe072;" d="M243 1074l814 -498q18 -11 18 -26t-18 -26l-814 -498q-18 -11 -30.5 -4t-12.5 28v1000q0 21 12.5 28t30.5 -4z" />
+<glyph unicode="&#xe073;" d="M250 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM650 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800 q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe074;" d="M1100 950v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5z" />
+<glyph unicode="&#xe075;" d="M500 612v438q0 21 10.5 25t25.5 -10l492 -480q15 -14 15 -35t-15 -35l-492 -480q-15 -14 -25.5 -10t-10.5 25v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10z" />
+<glyph unicode="&#xe076;" d="M1048 1102l100 1q20 0 35 -14.5t15 -35.5l5 -1000q0 -21 -14.5 -35.5t-35.5 -14.5l-100 -1q-21 0 -35.5 14.5t-14.5 35.5l-2 437l-463 -454q-14 -15 -24.5 -10.5t-10.5 25.5l-2 437l-462 -455q-15 -14 -25.5 -9.5t-10.5 24.5l-5 1000q0 21 10.5 25.5t25.5 -10.5l466 -450 l-2 438q0 20 10.5 24.5t25.5 -9.5l466 -451l-2 438q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe077;" d="M850 1100h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10l464 -453v438q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe078;" d="M686 1081l501 -540q15 -15 10.5 -26t-26.5 -11h-1042q-22 0 -26.5 11t10.5 26l501 540q15 15 36 15t36 -15zM150 400h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe079;" d="M885 900l-352 -353l352 -353l-197 -198l-552 552l552 550z" />
+<glyph unicode="&#xe080;" d="M1064 547l-551 -551l-198 198l353 353l-353 353l198 198z" />
+<glyph unicode="&#xe081;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM650 900h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-150 q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5h150v-150q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v150h150q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-150v150q0 21 -14.5 35.5t-35.5 14.5z" />
+<glyph unicode="&#xe082;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM850 700h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5 t35.5 -14.5h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5z" />
+<glyph unicode="&#xe083;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM741.5 913q-12.5 0 -21.5 -9l-120 -120l-120 120q-9 9 -21.5 9 t-21.5 -9l-141 -141q-9 -9 -9 -21.5t9 -21.5l120 -120l-120 -120q-9 -9 -9 -21.5t9 -21.5l141 -141q9 -9 21.5 -9t21.5 9l120 120l120 -120q9 -9 21.5 -9t21.5 9l141 141q9 9 9 21.5t-9 21.5l-120 120l120 120q9 9 9 21.5t-9 21.5l-141 141q-9 9 -21.5 9z" />
+<glyph unicode="&#xe084;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM546 623l-84 85q-7 7 -17.5 7t-18.5 -7l-139 -139q-7 -8 -7 -18t7 -18 l242 -241q7 -8 17.5 -8t17.5 8l375 375q7 7 7 17.5t-7 18.5l-139 139q-7 7 -17.5 7t-17.5 -7z" />
+<glyph unicode="&#xe085;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM588 941q-29 0 -59 -5.5t-63 -20.5t-58 -38.5t-41.5 -63t-16.5 -89.5 q0 -25 20 -25h131q30 -5 35 11q6 20 20.5 28t45.5 8q20 0 31.5 -10.5t11.5 -28.5q0 -23 -7 -34t-26 -18q-1 0 -13.5 -4t-19.5 -7.5t-20 -10.5t-22 -17t-18.5 -24t-15.5 -35t-8 -46q-1 -8 5.5 -16.5t20.5 -8.5h173q7 0 22 8t35 28t37.5 48t29.5 74t12 100q0 47 -17 83 t-42.5 57t-59.5 34.5t-64 18t-59 4.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="&#xe086;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM675 1000h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5 t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5zM675 700h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h75v-200h-75q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h350q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5 t-17.5 7.5h-75v275q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="&#xe087;" d="M525 1200h150q10 0 17.5 -7.5t7.5 -17.5v-194q103 -27 178.5 -102.5t102.5 -178.5h194q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-194q-27 -103 -102.5 -178.5t-178.5 -102.5v-194q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v194 q-103 27 -178.5 102.5t-102.5 178.5h-194q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h194q27 103 102.5 178.5t178.5 102.5v194q0 10 7.5 17.5t17.5 7.5zM700 893v-168q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v168q-68 -23 -119 -74 t-74 -119h168q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-168q23 -68 74 -119t119 -74v168q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-168q68 23 119 74t74 119h-168q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h168 q-23 68 -74 119t-119 74z" />
+<glyph unicode="&#xe088;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM759 823l64 -64q7 -7 7 -17.5t-7 -17.5l-124 -124l124 -124q7 -7 7 -17.5t-7 -17.5l-64 -64q-7 -7 -17.5 -7t-17.5 7l-124 124l-124 -124q-7 -7 -17.5 -7t-17.5 7l-64 64 q-7 7 -7 17.5t7 17.5l124 124l-124 124q-7 7 -7 17.5t7 17.5l64 64q7 7 17.5 7t17.5 -7l124 -124l124 124q7 7 17.5 7t17.5 -7z" />
+<glyph unicode="&#xe089;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM782 788l106 -106q7 -7 7 -17.5t-7 -17.5l-320 -321q-8 -7 -18 -7t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l197 197q7 7 17.5 7t17.5 -7z" />
+<glyph unicode="&#xe090;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5q0 -120 65 -225 l587 587q-105 65 -225 65zM965 819l-584 -584q104 -62 219 -62q116 0 214.5 57t155.5 155.5t57 214.5q0 115 -62 219z" />
+<glyph unicode="&#xe091;" d="M39 582l522 427q16 13 27.5 8t11.5 -26v-291h550q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-550v-291q0 -21 -11.5 -26t-27.5 8l-522 427q-16 13 -16 32t16 32z" />
+<glyph unicode="&#xe092;" d="M639 1009l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291h-550q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h550v291q0 21 11.5 26t27.5 -8z" />
+<glyph unicode="&#xe093;" d="M682 1161l427 -522q13 -16 8 -27.5t-26 -11.5h-291v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v550h-291q-21 0 -26 11.5t8 27.5l427 522q13 16 32 16t32 -16z" />
+<glyph unicode="&#xe094;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-550h291q21 0 26 -11.5t-8 -27.5l-427 -522q-13 -16 -32 -16t-32 16l-427 522q-13 16 -8 27.5t26 11.5h291v550q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe095;" d="M639 1109l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291q-94 -2 -182 -20t-170.5 -52t-147 -92.5t-100.5 -135.5q5 105 27 193.5t67.5 167t113 135t167 91.5t225.5 42v262q0 21 11.5 26t27.5 -8z" />
+<glyph unicode="&#xe096;" d="M850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5zM350 0h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249 q8 7 18 7t18 -7l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5z" />
+<glyph unicode="&#xe097;" d="M1014 1120l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249q8 7 18 7t18 -7zM250 600h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5z" />
+<glyph unicode="&#xe101;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM704 900h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5 t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="&#xe102;" d="M260 1200q9 0 19 -2t15 -4l5 -2q22 -10 44 -23l196 -118q21 -13 36 -24q29 -21 37 -12q11 13 49 35l196 118q22 13 45 23q17 7 38 7q23 0 47 -16.5t37 -33.5l13 -16q14 -21 18 -45l25 -123l8 -44q1 -9 8.5 -14.5t17.5 -5.5h61q10 0 17.5 -7.5t7.5 -17.5v-50 q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 -7.5t-7.5 -17.5v-175h-400v300h-200v-300h-400v175q0 10 -7.5 17.5t-17.5 7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5h61q11 0 18 3t7 8q0 4 9 52l25 128q5 25 19 45q2 3 5 7t13.5 15t21.5 19.5t26.5 15.5 t29.5 7zM915 1079l-166 -162q-7 -7 -5 -12t12 -5h219q10 0 15 7t2 17l-51 149q-3 10 -11 12t-15 -6zM463 917l-177 157q-8 7 -16 5t-11 -12l-51 -143q-3 -10 2 -17t15 -7h231q11 0 12.5 5t-5.5 12zM500 0h-375q-10 0 -17.5 7.5t-7.5 17.5v375h400v-400zM1100 400v-375 q0 -10 -7.5 -17.5t-17.5 -7.5h-375v400h400z" />
+<glyph unicode="&#xe103;" d="M1165 1190q8 3 21 -6.5t13 -17.5q-2 -178 -24.5 -323.5t-55.5 -245.5t-87 -174.5t-102.5 -118.5t-118 -68.5t-118.5 -33t-120 -4.5t-105 9.5t-90 16.5q-61 12 -78 11q-4 1 -12.5 0t-34 -14.5t-52.5 -40.5l-153 -153q-26 -24 -37 -14.5t-11 43.5q0 64 42 102q8 8 50.5 45 t66.5 58q19 17 35 47t13 61q-9 55 -10 102.5t7 111t37 130t78 129.5q39 51 80 88t89.5 63.5t94.5 45t113.5 36t129 31t157.5 37t182 47.5zM1116 1098q-8 9 -22.5 -3t-45.5 -50q-38 -47 -119 -103.5t-142 -89.5l-62 -33q-56 -30 -102 -57t-104 -68t-102.5 -80.5t-85.5 -91 t-64 -104.5q-24 -56 -31 -86t2 -32t31.5 17.5t55.5 59.5q25 30 94 75.5t125.5 77.5t147.5 81q70 37 118.5 69t102 79.5t99 111t86.5 148.5q22 50 24 60t-6 19z" />
+<glyph unicode="&#xe104;" d="M653 1231q-39 -67 -54.5 -131t-10.5 -114.5t24.5 -96.5t47.5 -80t63.5 -62.5t68.5 -46.5t65 -30q-4 7 -17.5 35t-18.5 39.5t-17 39.5t-17 43t-13 42t-9.5 44.5t-2 42t4 43t13.5 39t23 38.5q96 -42 165 -107.5t105 -138t52 -156t13 -159t-19 -149.5q-13 -55 -44 -106.5 t-68 -87t-78.5 -64.5t-72.5 -45t-53 -22q-72 -22 -127 -11q-31 6 -13 19q6 3 17 7q13 5 32.5 21t41 44t38.5 63.5t21.5 81.5t-6.5 94.5t-50 107t-104 115.5q10 -104 -0.5 -189t-37 -140.5t-65 -93t-84 -52t-93.5 -11t-95 24.5q-80 36 -131.5 114t-53.5 171q-2 23 0 49.5 t4.5 52.5t13.5 56t27.5 60t46 64.5t69.5 68.5q-8 -53 -5 -102.5t17.5 -90t34 -68.5t44.5 -39t49 -2q31 13 38.5 36t-4.5 55t-29 64.5t-36 75t-26 75.5q-15 85 2 161.5t53.5 128.5t85.5 92.5t93.5 61t81.5 25.5z" />
+<glyph unicode="&#xe105;" d="M600 1094q82 0 160.5 -22.5t140 -59t116.5 -82.5t94.5 -95t68 -95t42.5 -82.5t14 -57.5t-14 -57.5t-43 -82.5t-68.5 -95t-94.5 -95t-116.5 -82.5t-140 -59t-159.5 -22.5t-159.5 22.5t-140 59t-116.5 82.5t-94.5 95t-68.5 95t-43 82.5t-14 57.5t14 57.5t42.5 82.5t68 95 t94.5 95t116.5 82.5t140 59t160.5 22.5zM888 829q-15 15 -18 12t5 -22q25 -57 25 -119q0 -124 -88 -212t-212 -88t-212 88t-88 212q0 59 23 114q8 19 4.5 22t-17.5 -12q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q22 -36 47 -71t70 -82t92.5 -81t113 -58.5t133.5 -24.5 t133.5 24t113 58.5t92.5 81.5t70 81.5t47 70.5q11 18 9 42.5t-14 41.5q-90 117 -163 189zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l35 34q14 15 12.5 33.5t-16.5 33.5q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
+<glyph unicode="&#xe106;" d="M592 0h-148l31 120q-91 20 -175.5 68.5t-143.5 106.5t-103.5 119t-66.5 110t-22 76q0 21 14 57.5t42.5 82.5t68 95t94.5 95t116.5 82.5t140 59t160.5 22.5q61 0 126 -15l32 121h148zM944 770l47 181q108 -85 176.5 -192t68.5 -159q0 -26 -19.5 -71t-59.5 -102t-93 -112 t-129 -104.5t-158 -75.5l46 173q77 49 136 117t97 131q11 18 9 42.5t-14 41.5q-54 70 -107 130zM310 824q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q18 -30 39 -60t57 -70.5t74 -73t90 -61t105 -41.5l41 154q-107 18 -178.5 101.5t-71.5 193.5q0 59 23 114q8 19 4.5 22 t-17.5 -12zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l12 11l22 86l-3 4q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
+<glyph unicode="&#xe107;" d="M-90 100l642 1066q20 31 48 28.5t48 -35.5l642 -1056q21 -32 7.5 -67.5t-50.5 -35.5h-1294q-37 0 -50.5 34t7.5 66zM155 200h345v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h345l-445 723zM496 700h208q20 0 32 -14.5t8 -34.5l-58 -252 q-4 -20 -21.5 -34.5t-37.5 -14.5h-54q-20 0 -37.5 14.5t-21.5 34.5l-58 252q-4 20 8 34.5t32 14.5z" />
+<glyph unicode="&#xe108;" d="M650 1200q62 0 106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -93 100 -113v-64q0 -21 -13 -29t-32 1l-205 128l-205 -128q-19 -9 -32 -1t-13 29v64q0 20 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5v41 q0 20 11 44.5t26 38.5l363 325v339q0 62 44 106t106 44z" />
+<glyph unicode="&#xe109;" d="M850 1200h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-150h-1100v150q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-50h500v50q0 21 14.5 35.5t35.5 14.5zM1100 800v-750q0 -21 -14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v750h1100zM100 600v-100h100v100h-100zM300 600v-100h100v100h-100zM500 600v-100h100v100h-100zM700 600v-100h100v100h-100zM900 600v-100h100v100h-100zM100 400v-100h100v100h-100zM300 400v-100h100v100h-100zM500 400 v-100h100v100h-100zM700 400v-100h100v100h-100zM900 400v-100h100v100h-100zM100 200v-100h100v100h-100zM300 200v-100h100v100h-100zM500 200v-100h100v100h-100zM700 200v-100h100v100h-100zM900 200v-100h100v100h-100z" />
+<glyph unicode="&#xe110;" d="M1135 1165l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-159l-600 -600h-291q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h209l600 600h241v150q0 21 10.5 25t24.5 -10zM522 819l-141 -141l-122 122h-209q-21 0 -35.5 14.5 t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h291zM1135 565l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-241l-181 181l141 141l122 -122h159v150q0 21 10.5 25t24.5 -10z" />
+<glyph unicode="&#xe111;" d="M100 1100h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5z" />
+<glyph unicode="&#xe112;" d="M150 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM850 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM1100 800v-300q0 -41 -3 -77.5t-15 -89.5t-32 -96t-58 -89t-89 -77t-129 -51t-174 -20t-174 20 t-129 51t-89 77t-58 89t-32 96t-15 89.5t-3 77.5v300h300v-250v-27v-42.5t1.5 -41t5 -38t10 -35t16.5 -30t25.5 -24.5t35 -19t46.5 -12t60 -4t60 4.5t46.5 12.5t35 19.5t25 25.5t17 30.5t10 35t5 38t2 40.5t-0.5 42v25v250h300z" />
+<glyph unicode="&#xe113;" d="M1100 411l-198 -199l-353 353l-353 -353l-197 199l551 551z" />
+<glyph unicode="&#xe114;" d="M1101 789l-550 -551l-551 551l198 199l353 -353l353 353z" />
+<glyph unicode="&#xe115;" d="M404 1000h746q21 0 35.5 -14.5t14.5 -35.5v-551h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v401h-381zM135 984l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-400h385l215 -200h-750q-21 0 -35.5 14.5 t-14.5 35.5v550h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
+<glyph unicode="&#xe116;" d="M56 1200h94q17 0 31 -11t18 -27l38 -162h896q24 0 39 -18.5t10 -42.5l-100 -475q-5 -21 -27 -42.5t-55 -21.5h-633l48 -200h535q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-50q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-300v-50 q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-31q-18 0 -32.5 10t-20.5 19l-5 10l-201 961h-54q-20 0 -35 14.5t-15 35.5t15 35.5t35 14.5z" />
+<glyph unicode="&#xe117;" d="M1200 1000v-100h-1200v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500zM0 800h1200v-800h-1200v800z" />
+<glyph unicode="&#xe118;" d="M200 800l-200 -400v600h200q0 41 29.5 70.5t70.5 29.5h300q42 0 71 -29.5t29 -70.5h500v-200h-1000zM1500 700l-300 -700h-1200l300 700h1200z" />
+<glyph unicode="&#xe119;" d="M635 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-601h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v601h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
+<glyph unicode="&#xe120;" d="M936 864l249 -229q14 -15 14 -35.5t-14 -35.5l-249 -229q-15 -15 -25.5 -10.5t-10.5 24.5v151h-600v-151q0 -20 -10.5 -24.5t-25.5 10.5l-249 229q-14 15 -14 35.5t14 35.5l249 229q15 15 25.5 10.5t10.5 -25.5v-149h600v149q0 21 10.5 25.5t25.5 -10.5z" />
+<glyph unicode="&#xe121;" d="M1169 400l-172 732q-5 23 -23 45.5t-38 22.5h-672q-20 0 -38 -20t-23 -41l-172 -739h1138zM1100 300h-1000q-41 0 -70.5 -29.5t-29.5 -70.5v-100q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5v100q0 41 -29.5 70.5t-70.5 29.5zM800 100v100h100v-100h-100 zM1000 100v100h100v-100h-100z" />
+<glyph unicode="&#xe122;" d="M1150 1100q21 0 35.5 -14.5t14.5 -35.5v-850q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v850q0 21 14.5 35.5t35.5 14.5zM1000 200l-675 200h-38l47 -276q3 -16 -5.5 -20t-29.5 -4h-7h-84q-20 0 -34.5 14t-18.5 35q-55 337 -55 351v250v6q0 16 1 23.5t6.5 14 t17.5 6.5h200l675 250v-850zM0 750v-250q-4 0 -11 0.5t-24 6t-30 15t-24 30t-11 48.5v50q0 26 10.5 46t25 30t29 16t25.5 7z" />
+<glyph unicode="&#xe123;" d="M553 1200h94q20 0 29 -10.5t3 -29.5l-18 -37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q19 0 33 -14.5t14 -35t-13 -40.5t-31 -27q-8 -4 -23 -9.5t-65 -19.5t-103 -25t-132.5 -20t-158.5 -9q-57 0 -115 5t-104 12t-88.5 15.5t-73.5 17.5t-54.5 16t-35.5 12l-11 4 q-18 8 -31 28t-13 40.5t14 35t33 14.5h17l118 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3.5 32t28.5 13zM498 110q50 -6 102 -6q53 0 102 6q-12 -49 -39.5 -79.5t-62.5 -30.5t-63 30.5t-39 79.5z" />
+<glyph unicode="&#xe124;" d="M800 946l224 78l-78 -224l234 -45l-180 -155l180 -155l-234 -45l78 -224l-224 78l-45 -234l-155 180l-155 -180l-45 234l-224 -78l78 224l-234 45l180 155l-180 155l234 45l-78 224l224 -78l45 234l155 -180l155 180z" />
+<glyph unicode="&#xe125;" d="M650 1200h50q40 0 70 -40.5t30 -84.5v-150l-28 -125h328q40 0 70 -40.5t30 -84.5v-100q0 -45 -29 -74l-238 -344q-16 -24 -38 -40.5t-45 -16.5h-250q-7 0 -42 25t-66 50l-31 25h-61q-45 0 -72.5 18t-27.5 57v400q0 36 20 63l145 196l96 198q13 28 37.5 48t51.5 20z M650 1100l-100 -212l-150 -213v-375h100l136 -100h214l250 375v125h-450l50 225v175h-50zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe126;" d="M600 1100h250q23 0 45 -16.5t38 -40.5l238 -344q29 -29 29 -74v-100q0 -44 -30 -84.5t-70 -40.5h-328q28 -118 28 -125v-150q0 -44 -30 -84.5t-70 -40.5h-50q-27 0 -51.5 20t-37.5 48l-96 198l-145 196q-20 27 -20 63v400q0 39 27.5 57t72.5 18h61q124 100 139 100z M50 1000h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM636 1000l-136 -100h-100v-375l150 -213l100 -212h50v175l-50 225h450v125l-250 375h-214z" />
+<glyph unicode="&#xe127;" d="M356 873l363 230q31 16 53 -6l110 -112q13 -13 13.5 -32t-11.5 -34l-84 -121h302q84 0 138 -38t54 -110t-55 -111t-139 -39h-106l-131 -339q-6 -21 -19.5 -41t-28.5 -20h-342q-7 0 -90 81t-83 94v525q0 17 14 35.5t28 28.5zM400 792v-503l100 -89h293l131 339 q6 21 19.5 41t28.5 20h203q21 0 30.5 25t0.5 50t-31 25h-456h-7h-6h-5.5t-6 0.5t-5 1.5t-5 2t-4 2.5t-4 4t-2.5 4.5q-12 25 5 47l146 183l-86 83zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500 q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe128;" d="M475 1103l366 -230q2 -1 6 -3.5t14 -10.5t18 -16.5t14.5 -20t6.5 -22.5v-525q0 -13 -86 -94t-93 -81h-342q-15 0 -28.5 20t-19.5 41l-131 339h-106q-85 0 -139.5 39t-54.5 111t54 110t138 38h302l-85 121q-11 15 -10.5 34t13.5 32l110 112q22 22 53 6zM370 945l146 -183 q17 -22 5 -47q-2 -2 -3.5 -4.5t-4 -4t-4 -2.5t-5 -2t-5 -1.5t-6 -0.5h-6h-6.5h-6h-475v-100h221q15 0 29 -20t20 -41l130 -339h294l106 89v503l-342 236zM1050 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5 v500q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe129;" d="M550 1294q72 0 111 -55t39 -139v-106l339 -131q21 -6 41 -19.5t20 -28.5v-342q0 -7 -81 -90t-94 -83h-525q-17 0 -35.5 14t-28.5 28l-9 14l-230 363q-16 31 6 53l112 110q13 13 32 13.5t34 -11.5l121 -84v302q0 84 38 138t110 54zM600 972v203q0 21 -25 30.5t-50 0.5 t-25 -31v-456v-7v-6v-5.5t-0.5 -6t-1.5 -5t-2 -5t-2.5 -4t-4 -4t-4.5 -2.5q-25 -12 -47 5l-183 146l-83 -86l236 -339h503l89 100v293l-339 131q-21 6 -41 19.5t-20 28.5zM450 200h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe130;" d="M350 1100h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5zM600 306v-106q0 -84 -39 -139t-111 -55t-110 54t-38 138v302l-121 -84q-15 -12 -34 -11.5t-32 13.5l-112 110 q-22 22 -6 53l230 363q1 2 3.5 6t10.5 13.5t16.5 17t20 13.5t22.5 6h525q13 0 94 -83t81 -90v-342q0 -15 -20 -28.5t-41 -19.5zM308 900l-236 -339l83 -86l183 146q22 17 47 5q2 -1 4.5 -2.5t4 -4t2.5 -4t2 -5t1.5 -5t0.5 -6v-5.5v-6v-7v-456q0 -22 25 -31t50 0.5t25 30.5 v203q0 15 20 28.5t41 19.5l339 131v293l-89 100h-503z" />
+<glyph unicode="&#xe131;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM914 632l-275 223q-16 13 -27.5 8t-11.5 -26v-137h-275 q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h275v-137q0 -21 11.5 -26t27.5 8l275 223q16 13 16 32t-16 32z" />
+<glyph unicode="&#xe132;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM561 855l-275 -223q-16 -13 -16 -32t16 -32l275 -223q16 -13 27.5 -8 t11.5 26v137h275q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5h-275v137q0 21 -11.5 26t-27.5 -8z" />
+<glyph unicode="&#xe133;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM855 639l-223 275q-13 16 -32 16t-32 -16l-223 -275q-13 -16 -8 -27.5 t26 -11.5h137v-275q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v275h137q21 0 26 11.5t-8 27.5z" />
+<glyph unicode="&#xe134;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM675 900h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-275h-137q-21 0 -26 -11.5 t8 -27.5l223 -275q13 -16 32 -16t32 16l223 275q13 16 8 27.5t-26 11.5h-137v275q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="&#xe135;" d="M600 1176q116 0 222.5 -46t184 -123.5t123.5 -184t46 -222.5t-46 -222.5t-123.5 -184t-184 -123.5t-222.5 -46t-222.5 46t-184 123.5t-123.5 184t-46 222.5t46 222.5t123.5 184t184 123.5t222.5 46zM627 1101q-15 -12 -36.5 -20.5t-35.5 -12t-43 -8t-39 -6.5 q-15 -3 -45.5 0t-45.5 -2q-20 -7 -51.5 -26.5t-34.5 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -91t-29.5 -79q-9 -34 5 -93t8 -87q0 -9 17 -44.5t16 -59.5q12 0 23 -5t23.5 -15t19.5 -14q16 -8 33 -15t40.5 -15t34.5 -12q21 -9 52.5 -32t60 -38t57.5 -11 q7 -15 -3 -34t-22.5 -40t-9.5 -38q13 -21 23 -34.5t27.5 -27.5t36.5 -18q0 -7 -3.5 -16t-3.5 -14t5 -17q104 -2 221 112q30 29 46.5 47t34.5 49t21 63q-13 8 -37 8.5t-36 7.5q-15 7 -49.5 15t-51.5 19q-18 0 -41 -0.5t-43 -1.5t-42 -6.5t-38 -16.5q-51 -35 -66 -12 q-4 1 -3.5 25.5t0.5 25.5q-6 13 -26.5 17.5t-24.5 6.5q1 15 -0.5 30.5t-7 28t-18.5 11.5t-31 -21q-23 -25 -42 4q-19 28 -8 58q6 16 22 22q6 -1 26 -1.5t33.5 -4t19.5 -13.5q7 -12 18 -24t21.5 -20.5t20 -15t15.5 -10.5l5 -3q2 12 7.5 30.5t8 34.5t-0.5 32q-3 18 3.5 29 t18 22.5t15.5 24.5q6 14 10.5 35t8 31t15.5 22.5t34 22.5q-6 18 10 36q8 0 24 -1.5t24.5 -1.5t20 4.5t20.5 15.5q-10 23 -31 42.5t-37.5 29.5t-49 27t-43.5 23q0 1 2 8t3 11.5t1.5 10.5t-1 9.5t-4.5 4.5q31 -13 58.5 -14.5t38.5 2.5l12 5q5 28 -9.5 46t-36.5 24t-50 15 t-41 20q-18 -4 -37 0zM613 994q0 -17 8 -42t17 -45t9 -23q-8 1 -39.5 5.5t-52.5 10t-37 16.5q3 11 16 29.5t16 25.5q10 -10 19 -10t14 6t13.5 14.5t16.5 12.5z" />
+<glyph unicode="&#xe136;" d="M756 1157q164 92 306 -9l-259 -138l145 -232l251 126q6 -89 -34 -156.5t-117 -110.5q-60 -34 -127 -39.5t-126 16.5l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5t15 37.5l600 599q-34 101 5.5 201.5t135.5 154.5z" />
+<glyph unicode="&#xe137;" horiz-adv-x="1220" d="M100 1196h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 1096h-200v-100h200v100zM100 796h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 696h-500v-100h500v100zM100 396h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 296h-300v-100h300v100z " />
+<glyph unicode="&#xe138;" d="M150 1200h900q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM700 500v-300l-200 -200v500l-350 500h900z" />
+<glyph unicode="&#xe139;" d="M500 1200h200q41 0 70.5 -29.5t29.5 -70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5zM500 1100v-100h200v100h-200zM1200 400v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v200h1200z" />
+<glyph unicode="&#xe140;" d="M50 1200h300q21 0 25 -10.5t-10 -24.5l-94 -94l199 -199q7 -8 7 -18t-7 -18l-106 -106q-8 -7 -18 -7t-18 7l-199 199l-94 -94q-14 -14 -24.5 -10t-10.5 25v300q0 21 14.5 35.5t35.5 14.5zM850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-199 -199q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l199 199l-94 94q-14 14 -10 24.5t25 10.5zM364 470l106 -106q7 -8 7 -18t-7 -18l-199 -199l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l199 199 q8 7 18 7t18 -7zM1071 271l94 94q14 14 24.5 10t10.5 -25v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -25 10.5t10 24.5l94 94l-199 199q-7 8 -7 18t7 18l106 106q8 7 18 7t18 -7z" />
+<glyph unicode="&#xe141;" d="M596 1192q121 0 231.5 -47.5t190 -127t127 -190t47.5 -231.5t-47.5 -231.5t-127 -190.5t-190 -127t-231.5 -47t-231.5 47t-190.5 127t-127 190.5t-47 231.5t47 231.5t127 190t190.5 127t231.5 47.5zM596 1010q-112 0 -207.5 -55.5t-151 -151t-55.5 -207.5t55.5 -207.5 t151 -151t207.5 -55.5t207.5 55.5t151 151t55.5 207.5t-55.5 207.5t-151 151t-207.5 55.5zM454.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38.5 -16.5t-38.5 16.5t-16 39t16 38.5t38.5 16zM754.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38 -16.5q-14 0 -29 10l-55 -145 q17 -23 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5t-61.5 25.5t-25.5 61.5q0 32 20.5 56.5t51.5 29.5l122 126l1 1q-9 14 -9 28q0 23 16 39t38.5 16zM345.5 709q22.5 0 38.5 -16t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16zM854.5 709q22.5 0 38.5 -16 t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16z" />
+<glyph unicode="&#xe142;" d="M546 173l469 470q91 91 99 192q7 98 -52 175.5t-154 94.5q-22 4 -47 4q-34 0 -66.5 -10t-56.5 -23t-55.5 -38t-48 -41.5t-48.5 -47.5q-376 -375 -391 -390q-30 -27 -45 -41.5t-37.5 -41t-32 -46.5t-16 -47.5t-1.5 -56.5q9 -62 53.5 -95t99.5 -33q74 0 125 51l548 548 q36 36 20 75q-7 16 -21.5 26t-32.5 10q-26 0 -50 -23q-13 -12 -39 -38l-341 -338q-15 -15 -35.5 -15.5t-34.5 13.5t-14 34.5t14 34.5q327 333 361 367q35 35 67.5 51.5t78.5 16.5q14 0 29 -1q44 -8 74.5 -35.5t43.5 -68.5q14 -47 2 -96.5t-47 -84.5q-12 -11 -32 -32 t-79.5 -81t-114.5 -115t-124.5 -123.5t-123 -119.5t-96.5 -89t-57 -45q-56 -27 -120 -27q-70 0 -129 32t-93 89q-48 78 -35 173t81 163l511 511q71 72 111 96q91 55 198 55q80 0 152 -33q78 -36 129.5 -103t66.5 -154q17 -93 -11 -183.5t-94 -156.5l-482 -476 q-15 -15 -36 -16t-37 14t-17.5 34t14.5 35z" />
+<glyph unicode="&#xe143;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104zM896 972q-33 0 -64.5 -19t-56.5 -46t-47.5 -53.5t-43.5 -45.5t-37.5 -19t-36 19t-40 45.5t-43 53.5t-54 46t-65.5 19q-67 0 -122.5 -55.5t-55.5 -132.5q0 -23 13.5 -51t46 -65t57.5 -63t76 -75l22 -22q15 -14 44 -44t50.5 -51t46 -44t41 -35t23 -12 t23.5 12t42.5 36t46 44t52.5 52t44 43q4 4 12 13q43 41 63.5 62t52 55t46 55t26 46t11.5 44q0 79 -53 133.5t-120 54.5z" />
+<glyph unicode="&#xe144;" d="M776.5 1214q93.5 0 159.5 -66l141 -141q66 -66 66 -160q0 -42 -28 -95.5t-62 -87.5l-29 -29q-31 53 -77 99l-18 18l95 95l-247 248l-389 -389l212 -212l-105 -106l-19 18l-141 141q-66 66 -66 159t66 159l283 283q65 66 158.5 66zM600 706l105 105q10 -8 19 -17l141 -141 q66 -66 66 -159t-66 -159l-283 -283q-66 -66 -159 -66t-159 66l-141 141q-66 66 -66 159.5t66 159.5l55 55q29 -55 75 -102l18 -17l-95 -95l247 -248l389 389z" />
+<glyph unicode="&#xe145;" d="M603 1200q85 0 162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5v953q0 21 30 46.5t81 48t129 37.5t163 15zM300 1000v-700h600v700h-600zM600 254q-43 0 -73.5 -30.5t-30.5 -73.5t30.5 -73.5t73.5 -30.5t73.5 30.5 t30.5 73.5t-30.5 73.5t-73.5 30.5z" />
+<glyph unicode="&#xe146;" d="M902 1185l283 -282q15 -15 15 -36t-14.5 -35.5t-35.5 -14.5t-35 15l-36 35l-279 -267v-300l-212 210l-308 -307l-280 -203l203 280l307 308l-210 212h300l267 279l-35 36q-15 14 -15 35t14.5 35.5t35.5 14.5t35 -15z" />
+<glyph unicode="&#xe148;" d="M700 1248v-78q38 -5 72.5 -14.5t75.5 -31.5t71 -53.5t52 -84t24 -118.5h-159q-4 36 -10.5 59t-21 45t-40 35.5t-64.5 20.5v-307l64 -13q34 -7 64 -16.5t70 -32t67.5 -52.5t47.5 -80t20 -112q0 -139 -89 -224t-244 -97v-77h-100v79q-150 16 -237 103q-40 40 -52.5 93.5 t-15.5 139.5h139q5 -77 48.5 -126t117.5 -65v335l-27 8q-46 14 -79 26.5t-72 36t-63 52t-40 72.5t-16 98q0 70 25 126t67.5 92t94.5 57t110 27v77h100zM600 754v274q-29 -4 -50 -11t-42 -21.5t-31.5 -41.5t-10.5 -65q0 -29 7 -50.5t16.5 -34t28.5 -22.5t31.5 -14t37.5 -10 q9 -3 13 -4zM700 547v-310q22 2 42.5 6.5t45 15.5t41.5 27t29 42t12 59.5t-12.5 59.5t-38 44.5t-53 31t-66.5 24.5z" />
+<glyph unicode="&#xe149;" d="M561 1197q84 0 160.5 -40t123.5 -109.5t47 -147.5h-153q0 40 -19.5 71.5t-49.5 48.5t-59.5 26t-55.5 9q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -26 13.5 -63t26.5 -61t37 -66q6 -9 9 -14h241v-100h-197q8 -50 -2.5 -115t-31.5 -95q-45 -62 -99 -112 q34 10 83 17.5t71 7.5q32 1 102 -16t104 -17q83 0 136 30l50 -147q-31 -19 -58 -30.5t-55 -15.5t-42 -4.5t-46 -0.5q-23 0 -76 17t-111 32.5t-96 11.5q-39 -3 -82 -16t-67 -25l-23 -11l-55 145q4 3 16 11t15.5 10.5t13 9t15.5 12t14.5 14t17.5 18.5q48 55 54 126.5 t-30 142.5h-221v100h166q-23 47 -44 104q-7 20 -12 41.5t-6 55.5t6 66.5t29.5 70.5t58.5 71q97 88 263 88z" />
+<glyph unicode="&#xe150;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM935 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-900h-200v900h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
+<glyph unicode="&#xe151;" d="M1000 700h-100v100h-100v-100h-100v500h300v-500zM400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM801 1100v-200h100v200h-100zM1000 350l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150z " />
+<glyph unicode="&#xe152;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 1050l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150zM1000 0h-100v100h-100v-100h-100v500h300v-500zM801 400v-200h100v200h-100z " />
+<glyph unicode="&#xe153;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 700h-100v400h-100v100h200v-500zM1100 0h-100v100h-200v400h300v-500zM901 400v-200h100v200h-100z" />
+<glyph unicode="&#xe154;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1100 700h-100v100h-200v400h300v-500zM901 1100v-200h100v200h-100zM1000 0h-100v400h-100v100h200v-500z" />
+<glyph unicode="&#xe155;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM900 1000h-200v200h200v-200zM1000 700h-300v200h300v-200zM1100 400h-400v200h400v-200zM1200 100h-500v200h500v-200z" />
+<glyph unicode="&#xe156;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1200 1000h-500v200h500v-200zM1100 700h-400v200h400v-200zM1000 400h-300v200h300v-200zM900 100h-200v200h200v-200z" />
+<glyph unicode="&#xe157;" d="M350 1100h400q162 0 256 -93.5t94 -256.5v-400q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5z" />
+<glyph unicode="&#xe158;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-163 0 -256.5 92.5t-93.5 257.5v400q0 163 94 256.5t256 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM440 770l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
+<glyph unicode="&#xe159;" d="M350 1100h400q163 0 256.5 -94t93.5 -256v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 163 92.5 256.5t257.5 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM350 700h400q21 0 26.5 -12t-6.5 -28l-190 -253q-12 -17 -30 -17t-30 17l-190 253q-12 16 -6.5 28t26.5 12z" />
+<glyph unicode="&#xe160;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -163 -92.5 -256.5t-257.5 -93.5h-400q-163 0 -256.5 94t-93.5 256v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM580 693l190 -253q12 -16 6.5 -28t-26.5 -12h-400q-21 0 -26.5 12t6.5 28l190 253q12 17 30 17t30 -17z" />
+<glyph unicode="&#xe161;" d="M550 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h450q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-450q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM338 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
+<glyph unicode="&#xe162;" d="M793 1182l9 -9q8 -10 5 -27q-3 -11 -79 -225.5t-78 -221.5l300 1q24 0 32.5 -17.5t-5.5 -35.5q-1 0 -133.5 -155t-267 -312.5t-138.5 -162.5q-12 -15 -26 -15h-9l-9 8q-9 11 -4 32q2 9 42 123.5t79 224.5l39 110h-302q-23 0 -31 19q-10 21 6 41q75 86 209.5 237.5 t228 257t98.5 111.5q9 16 25 16h9z" />
+<glyph unicode="&#xe163;" d="M350 1100h400q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-450q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h450q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400 q0 165 92.5 257.5t257.5 92.5zM938 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
+<glyph unicode="&#xe164;" d="M750 1200h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -10.5 -25t-24.5 10l-109 109l-312 -312q-15 -15 -35.5 -15t-35.5 15l-141 141q-15 15 -15 35.5t15 35.5l312 312l-109 109q-14 14 -10 24.5t25 10.5zM456 900h-156q-41 0 -70.5 -29.5t-29.5 -70.5v-500 q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v148l200 200v-298q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5h300z" />
+<glyph unicode="&#xe165;" d="M600 1186q119 0 227.5 -46.5t187 -125t125 -187t46.5 -227.5t-46.5 -227.5t-125 -187t-187 -125t-227.5 -46.5t-227.5 46.5t-187 125t-125 187t-46.5 227.5t46.5 227.5t125 187t187 125t227.5 46.5zM600 1022q-115 0 -212 -56.5t-153.5 -153.5t-56.5 -212t56.5 -212 t153.5 -153.5t212 -56.5t212 56.5t153.5 153.5t56.5 212t-56.5 212t-153.5 153.5t-212 56.5zM600 794q80 0 137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137t57 137t137 57z" />
+<glyph unicode="&#xe166;" d="M450 1200h200q21 0 35.5 -14.5t14.5 -35.5v-350h245q20 0 25 -11t-9 -26l-383 -426q-14 -15 -33.5 -15t-32.5 15l-379 426q-13 15 -8.5 26t25.5 11h250v350q0 21 14.5 35.5t35.5 14.5zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
+<glyph unicode="&#xe167;" d="M583 1182l378 -435q14 -15 9 -31t-26 -16h-244v-250q0 -20 -17 -35t-39 -15h-200q-20 0 -32 14.5t-12 35.5v250h-250q-20 0 -25.5 16.5t8.5 31.5l383 431q14 16 33.5 17t33.5 -14zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
+<glyph unicode="&#xe168;" d="M396 723l369 369q7 7 17.5 7t17.5 -7l139 -139q7 -8 7 -18.5t-7 -17.5l-525 -525q-7 -8 -17.5 -8t-17.5 8l-292 291q-7 8 -7 18t7 18l139 139q8 7 18.5 7t17.5 -7zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50 h-100z" />
+<glyph unicode="&#xe169;" d="M135 1023l142 142q14 14 35 14t35 -14l77 -77l-212 -212l-77 76q-14 15 -14 36t14 35zM655 855l210 210q14 14 24.5 10t10.5 -25l-2 -599q-1 -20 -15.5 -35t-35.5 -15l-597 -1q-21 0 -25 10.5t10 24.5l208 208l-154 155l212 212zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5 v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
+<glyph unicode="&#xe170;" d="M350 1200l599 -2q20 -1 35 -15.5t15 -35.5l1 -597q0 -21 -10.5 -25t-24.5 10l-208 208l-155 -154l-212 212l155 154l-210 210q-14 14 -10 24.5t25 10.5zM524 512l-76 -77q-15 -14 -36 -14t-35 14l-142 142q-14 14 -14 35t14 35l77 77zM50 300h1000q21 0 35.5 -14.5 t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
+<glyph unicode="&#xe171;" d="M1200 103l-483 276l-314 -399v423h-399l1196 796v-1096zM483 424v-230l683 953z" />
+<glyph unicode="&#xe172;" d="M1100 1000v-850q0 -21 -14.5 -35.5t-35.5 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200z" />
+<glyph unicode="&#xe173;" d="M1100 1000l-2 -149l-299 -299l-95 95q-9 9 -21.5 9t-21.5 -9l-149 -147h-312v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1132 638l106 -106q7 -7 7 -17.5t-7 -17.5l-420 -421q-8 -7 -18 -7 t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l297 297q7 7 17.5 7t17.5 -7z" />
+<glyph unicode="&#xe174;" d="M1100 1000v-269l-103 -103l-134 134q-15 15 -33.5 16.5t-34.5 -12.5l-266 -266h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1202 572l70 -70q15 -15 15 -35.5t-15 -35.5l-131 -131 l131 -131q15 -15 15 -35.5t-15 -35.5l-70 -70q-15 -15 -35.5 -15t-35.5 15l-131 131l-131 -131q-15 -15 -35.5 -15t-35.5 15l-70 70q-15 15 -15 35.5t15 35.5l131 131l-131 131q-15 15 -15 35.5t15 35.5l70 70q15 15 35.5 15t35.5 -15l131 -131l131 131q15 15 35.5 15 t35.5 -15z" />
+<glyph unicode="&#xe175;" d="M1100 1000v-300h-350q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM850 600h100q21 0 35.5 -14.5t14.5 -35.5v-250h150q21 0 25 -10.5t-10 -24.5 l-230 -230q-14 -14 -35 -14t-35 14l-230 230q-14 14 -10 24.5t25 10.5h150v250q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe176;" d="M1100 1000v-400l-165 165q-14 15 -35 15t-35 -15l-263 -265h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM935 565l230 -229q14 -15 10 -25.5t-25 -10.5h-150v-250q0 -20 -14.5 -35 t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35v250h-150q-21 0 -25 10.5t10 25.5l230 229q14 15 35 15t35 -15z" />
+<glyph unicode="&#xe177;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-150h-1200v150q0 21 14.5 35.5t35.5 14.5zM1200 800v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v550h1200zM100 500v-200h400v200h-400z" />
+<glyph unicode="&#xe178;" d="M935 1165l248 -230q14 -14 14 -35t-14 -35l-248 -230q-14 -14 -24.5 -10t-10.5 25v150h-400v200h400v150q0 21 10.5 25t24.5 -10zM200 800h-50q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v-200zM400 800h-100v200h100v-200zM18 435l247 230 q14 14 24.5 10t10.5 -25v-150h400v-200h-400v-150q0 -21 -10.5 -25t-24.5 10l-247 230q-15 14 -15 35t15 35zM900 300h-100v200h100v-200zM1000 500h51q20 0 34.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-34.5 -14.5h-51v200z" />
+<glyph unicode="&#xe179;" d="M862 1073l276 116q25 18 43.5 8t18.5 -41v-1106q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v397q-4 1 -11 5t-24 17.5t-30 29t-24 42t-11 56.5v359q0 31 18.5 65t43.5 52zM550 1200q22 0 34.5 -12.5t14.5 -24.5l1 -13v-450q0 -28 -10.5 -59.5 t-25 -56t-29 -45t-25.5 -31.5l-10 -11v-447q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447q-4 4 -11 11.5t-24 30.5t-30 46t-24 55t-11 60v450q0 2 0.5 5.5t4 12t8.5 15t14.5 12t22.5 5.5q20 0 32.5 -12.5t14.5 -24.5l3 -13v-350h100v350v5.5t2.5 12 t7 15t15 12t25.5 5.5q23 0 35.5 -12.5t13.5 -24.5l1 -13v-350h100v350q0 2 0.5 5.5t3 12t7 15t15 12t24.5 5.5z" />
+<glyph unicode="&#xe180;" d="M1200 1100v-56q-4 0 -11 -0.5t-24 -3t-30 -7.5t-24 -15t-11 -24v-888q0 -22 25 -34.5t50 -13.5l25 -2v-56h-400v56q75 0 87.5 6.5t12.5 43.5v394h-500v-394q0 -37 12.5 -43.5t87.5 -6.5v-56h-400v56q4 0 11 0.5t24 3t30 7.5t24 15t11 24v888q0 22 -25 34.5t-50 13.5 l-25 2v56h400v-56q-75 0 -87.5 -6.5t-12.5 -43.5v-394h500v394q0 37 -12.5 43.5t-87.5 6.5v56h400z" />
+<glyph unicode="&#xe181;" d="M675 1000h375q21 0 35.5 -14.5t14.5 -35.5v-150h-105l-295 -98v98l-200 200h-400l100 100h375zM100 900h300q41 0 70.5 -29.5t29.5 -70.5v-500q0 -41 -29.5 -70.5t-70.5 -29.5h-300q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5zM100 800v-200h300v200 h-300zM1100 535l-400 -133v163l400 133v-163zM100 500v-200h300v200h-300zM1100 398v-248q0 -21 -14.5 -35.5t-35.5 -14.5h-375l-100 -100h-375l-100 100h400l200 200h105z" />
+<glyph unicode="&#xe182;" d="M17 1007l162 162q17 17 40 14t37 -22l139 -194q14 -20 11 -44.5t-20 -41.5l-119 -118q102 -142 228 -268t267 -227l119 118q17 17 42.5 19t44.5 -12l192 -136q19 -14 22.5 -37.5t-13.5 -40.5l-163 -162q-3 -1 -9.5 -1t-29.5 2t-47.5 6t-62.5 14.5t-77.5 26.5t-90 42.5 t-101.5 60t-111 83t-119 108.5q-74 74 -133.5 150.5t-94.5 138.5t-60 119.5t-34.5 100t-15 74.5t-4.5 48z" />
+<glyph unicode="&#xe183;" d="M600 1100q92 0 175 -10.5t141.5 -27t108.5 -36.5t81.5 -40t53.5 -37t31 -27l9 -10v-200q0 -21 -14.5 -33t-34.5 -9l-202 34q-20 3 -34.5 20t-14.5 38v146q-141 24 -300 24t-300 -24v-146q0 -21 -14.5 -38t-34.5 -20l-202 -34q-20 -3 -34.5 9t-14.5 33v200q3 4 9.5 10.5 t31 26t54 37.5t80.5 39.5t109 37.5t141 26.5t175 10.5zM600 795q56 0 97 -9.5t60 -23.5t30 -28t12 -24l1 -10v-50l365 -303q14 -15 24.5 -40t10.5 -45v-212q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v212q0 20 10.5 45t24.5 40l365 303v50 q0 4 1 10.5t12 23t30 29t60 22.5t97 10z" />
+<glyph unicode="&#xe184;" d="M1100 700l-200 -200h-600l-200 200v500h200v-200h200v200h200v-200h200v200h200v-500zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5 t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe185;" d="M700 1100h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-1000h300v1000q0 41 -29.5 70.5t-70.5 29.5zM1100 800h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-700h300v700q0 41 -29.5 70.5t-70.5 29.5zM400 0h-300v400q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-400z " />
+<glyph unicode="&#xe186;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
+<glyph unicode="&#xe187;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 300h-100v200h-100v-200h-100v500h100v-200h100v200h100v-500zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
+<glyph unicode="&#xe188;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-300h200v-100h-300v500h300v-100zM900 700h-200v-300h200v-100h-300v500h300v-100z" />
+<glyph unicode="&#xe189;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 400l-300 150l300 150v-300zM900 550l-300 -150v300z" />
+<glyph unicode="&#xe190;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM900 300h-700v500h700v-500zM800 700h-130q-38 0 -66.5 -43t-28.5 -108t27 -107t68 -42h130v300zM300 700v-300 h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130z" />
+<glyph unicode="&#xe191;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 300h-100v400h-100v100h200v-500z M700 300h-100v100h100v-100z" />
+<glyph unicode="&#xe192;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM300 700h200v-400h-300v500h100v-100zM900 300h-100v400h-100v100h200v-500zM300 600v-200h100v200h-100z M700 300h-100v100h100v-100z" />
+<glyph unicode="&#xe193;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 500l-199 -200h-100v50l199 200v150h-200v100h300v-300zM900 300h-100v400h-100v100h200v-500zM701 300h-100 v100h100v-100z" />
+<glyph unicode="&#xe194;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700h-300v-200h300v-100h-300l-100 100v200l100 100h300v-100z" />
+<glyph unicode="&#xe195;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700v-100l-50 -50l100 -100v-50h-100l-100 100h-150v-100h-100v400h300zM500 700v-100h200v100h-200z" />
+<glyph unicode="&#xe197;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -207t-85 -207t-205 -86.5h-128v250q0 21 -14.5 35.5t-35.5 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-250h-222q-80 0 -136 57.5t-56 136.5q0 69 43 122.5t108 67.5q-2 19 -2 37q0 100 49 185 t134 134t185 49zM525 500h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -244q-13 -16 -32 -16t-32 16l-223 244q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe198;" d="M502 1089q110 0 201 -59.5t135 -156.5q43 15 89 15q121 0 206 -86.5t86 -206.5q0 -99 -60 -181t-150 -110l-378 360q-13 16 -31.5 16t-31.5 -16l-381 -365h-9q-79 0 -135.5 57.5t-56.5 136.5q0 69 43 122.5t108 67.5q-2 19 -2 38q0 100 49 184.5t133.5 134t184.5 49.5z M632 467l223 -228q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5q199 204 223 228q19 19 31.5 19t32.5 -19z" />
+<glyph unicode="&#xe199;" d="M700 100v100h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170l-270 -300h400v-100h-50q-21 0 -35.5 -14.5t-14.5 -35.5v-50h400v50q0 21 -14.5 35.5t-35.5 14.5h-50z" />
+<glyph unicode="&#xe200;" d="M600 1179q94 0 167.5 -56.5t99.5 -145.5q89 -6 150.5 -71.5t61.5 -155.5q0 -61 -29.5 -112.5t-79.5 -82.5q9 -29 9 -55q0 -74 -52.5 -126.5t-126.5 -52.5q-55 0 -100 30v-251q21 0 35.5 -14.5t14.5 -35.5v-50h-300v50q0 21 14.5 35.5t35.5 14.5v251q-45 -30 -100 -30 q-74 0 -126.5 52.5t-52.5 126.5q0 18 4 38q-47 21 -75.5 65t-28.5 97q0 74 52.5 126.5t126.5 52.5q5 0 23 -2q0 2 -1 10t-1 13q0 116 81.5 197.5t197.5 81.5z" />
+<glyph unicode="&#xe201;" d="M1010 1010q111 -111 150.5 -260.5t0 -299t-150.5 -260.5q-83 -83 -191.5 -126.5t-218.5 -43.5t-218.5 43.5t-191.5 126.5q-111 111 -150.5 260.5t0 299t150.5 260.5q83 83 191.5 126.5t218.5 43.5t218.5 -43.5t191.5 -126.5zM476 1065q-4 0 -8 -1q-121 -34 -209.5 -122.5 t-122.5 -209.5q-4 -12 2.5 -23t18.5 -14l36 -9q3 -1 7 -1q23 0 29 22q27 96 98 166q70 71 166 98q11 3 17.5 13.5t3.5 22.5l-9 35q-3 13 -14 19q-7 4 -15 4zM512 920q-4 0 -9 -2q-80 -24 -138.5 -82.5t-82.5 -138.5q-4 -13 2 -24t19 -14l34 -9q4 -1 8 -1q22 0 28 21 q18 58 58.5 98.5t97.5 58.5q12 3 18 13.5t3 21.5l-9 35q-3 12 -14 19q-7 4 -15 4zM719.5 719.5q-49.5 49.5 -119.5 49.5t-119.5 -49.5t-49.5 -119.5t49.5 -119.5t119.5 -49.5t119.5 49.5t49.5 119.5t-49.5 119.5zM855 551q-22 0 -28 -21q-18 -58 -58.5 -98.5t-98.5 -57.5 q-11 -4 -17 -14.5t-3 -21.5l9 -35q3 -12 14 -19q7 -4 15 -4q4 0 9 2q80 24 138.5 82.5t82.5 138.5q4 13 -2.5 24t-18.5 14l-34 9q-4 1 -8 1zM1000 515q-23 0 -29 -22q-27 -96 -98 -166q-70 -71 -166 -98q-11 -3 -17.5 -13.5t-3.5 -22.5l9 -35q3 -13 14 -19q7 -4 15 -4 q4 0 8 1q121 34 209.5 122.5t122.5 209.5q4 12 -2.5 23t-18.5 14l-36 9q-3 1 -7 1z" />
+<glyph unicode="&#xe202;" d="M700 800h300v-380h-180v200h-340v-200h-380v755q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM700 300h162l-212 -212l-212 212h162v200h100v-200zM520 0h-395q-10 0 -17.5 7.5t-7.5 17.5v395zM1000 220v-195q0 -10 -7.5 -17.5t-17.5 -7.5h-195z" />
+<glyph unicode="&#xe203;" d="M700 800h300v-520l-350 350l-550 -550v1095q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM862 200h-162v-200h-100v200h-162l212 212zM480 0h-355q-10 0 -17.5 7.5t-7.5 17.5v55h380v-80zM1000 80v-55q0 -10 -7.5 -17.5t-17.5 -7.5h-155v80h180z" />
+<glyph unicode="&#xe204;" d="M1162 800h-162v-200h100l100 -100h-300v300h-162l212 212zM200 800h200q27 0 40 -2t29.5 -10.5t23.5 -30t7 -57.5h300v-100h-600l-200 -350v450h100q0 36 7 57.5t23.5 30t29.5 10.5t40 2zM800 400h240l-240 -400h-800l300 500h500v-100z" />
+<glyph unicode="&#xe205;" d="M650 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM1000 850v150q41 0 70.5 -29.5t29.5 -70.5v-800 q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-1 0 -20 4l246 246l-326 326v324q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM412 250l-212 -212v162h-200v100h200v162z" />
+<glyph unicode="&#xe206;" d="M450 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM800 850v150q41 0 70.5 -29.5t29.5 -70.5v-500 h-200v-300h200q0 -36 -7 -57.5t-23.5 -30t-29.5 -10.5t-40 -2h-600q-41 0 -70.5 29.5t-29.5 70.5v800q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM1212 250l-212 -212v162h-200v100h200v162z" />
+<glyph unicode="&#xe209;" d="M658 1197l637 -1104q23 -38 7 -65.5t-60 -27.5h-1276q-44 0 -60 27.5t7 65.5l637 1104q22 39 54 39t54 -39zM704 800h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM500 300v-100h200 v100h-200z" />
+<glyph unicode="&#xe210;" d="M425 1100h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM825 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM25 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5zM425 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5 v150q0 10 7.5 17.5t17.5 7.5zM25 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe211;" d="M700 1200h100v-200h-100v-100h350q62 0 86.5 -39.5t-3.5 -94.5l-66 -132q-41 -83 -81 -134h-772q-40 51 -81 134l-66 132q-28 55 -3.5 94.5t86.5 39.5h350v100h-100v200h100v100h200v-100zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100 h-950l138 100h-13q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe212;" d="M600 1300q40 0 68.5 -29.5t28.5 -70.5h-194q0 41 28.5 70.5t68.5 29.5zM443 1100h314q18 -37 18 -75q0 -8 -3 -25h328q41 0 44.5 -16.5t-30.5 -38.5l-175 -145h-678l-178 145q-34 22 -29 38.5t46 16.5h328q-3 17 -3 25q0 38 18 75zM250 700h700q21 0 35.5 -14.5 t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-150v-200l275 -200h-950l275 200v200h-150q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe213;" d="M600 1181q75 0 128 -53t53 -128t-53 -128t-128 -53t-128 53t-53 128t53 128t128 53zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13 l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe214;" d="M600 1300q47 0 92.5 -53.5t71 -123t25.5 -123.5q0 -78 -55.5 -133.5t-133.5 -55.5t-133.5 55.5t-55.5 133.5q0 62 34 143l144 -143l111 111l-163 163q34 26 63 26zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45 zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe215;" d="M600 1200l300 -161v-139h-300q0 -57 18.5 -108t50 -91.5t63 -72t70 -67.5t57.5 -61h-530q-60 83 -90.5 177.5t-30.5 178.5t33 164.5t87.5 139.5t126 96.5t145.5 41.5v-98zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100 h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe216;" d="M600 1300q41 0 70.5 -29.5t29.5 -70.5v-78q46 -26 73 -72t27 -100v-50h-400v50q0 54 27 100t73 72v78q0 41 29.5 70.5t70.5 29.5zM400 800h400q54 0 100 -27t72 -73h-172v-100h200v-100h-200v-100h200v-100h-200v-100h200q0 -83 -58.5 -141.5t-141.5 -58.5h-400 q-83 0 -141.5 58.5t-58.5 141.5v400q0 83 58.5 141.5t141.5 58.5z" />
+<glyph unicode="&#xe218;" d="M150 1100h900q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM125 400h950q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-283l224 -224q13 -13 13 -31.5t-13 -32 t-31.5 -13.5t-31.5 13l-88 88h-524l-87 -88q-13 -13 -32 -13t-32 13.5t-13 32t13 31.5l224 224h-289q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM541 300l-100 -100h324l-100 100h-124z" />
+<glyph unicode="&#xe219;" d="M200 1100h800q83 0 141.5 -58.5t58.5 -141.5v-200h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100v200q0 83 58.5 141.5t141.5 58.5zM100 600h1000q41 0 70.5 -29.5 t29.5 -70.5v-300h-1200v300q0 41 29.5 70.5t70.5 29.5zM300 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200zM1100 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200z" />
+<glyph unicode="&#xe221;" d="M480 1165l682 -683q31 -31 31 -75.5t-31 -75.5l-131 -131h-481l-517 518q-32 31 -32 75.5t32 75.5l295 296q31 31 75.5 31t76.5 -31zM108 794l342 -342l303 304l-341 341zM250 100h800q21 0 35.5 -14.5t14.5 -35.5v-50h-900v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe223;" d="M1057 647l-189 506q-8 19 -27.5 33t-40.5 14h-400q-21 0 -40.5 -14t-27.5 -33l-189 -506q-8 -19 1.5 -33t30.5 -14h625v-150q0 -21 14.5 -35.5t35.5 -14.5t35.5 14.5t14.5 35.5v150h125q21 0 30.5 14t1.5 33zM897 0h-595v50q0 21 14.5 35.5t35.5 14.5h50v50 q0 21 14.5 35.5t35.5 14.5h48v300h200v-300h47q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-50z" />
+<glyph unicode="&#xe224;" d="M900 800h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-375v591l-300 300v84q0 10 7.5 17.5t17.5 7.5h375v-400zM1200 900h-200v200zM400 600h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-650q-10 0 -17.5 7.5t-7.5 17.5v950q0 10 7.5 17.5t17.5 7.5h375v-400zM700 700h-200v200z " />
+<glyph unicode="&#xe225;" d="M484 1095h195q75 0 146 -32.5t124 -86t89.5 -122.5t48.5 -142q18 -14 35 -20q31 -10 64.5 6.5t43.5 48.5q10 34 -15 71q-19 27 -9 43q5 8 12.5 11t19 -1t23.5 -16q41 -44 39 -105q-3 -63 -46 -106.5t-104 -43.5h-62q-7 -55 -35 -117t-56 -100l-39 -234q-3 -20 -20 -34.5 t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l12 70q-49 -14 -91 -14h-195q-24 0 -65 8l-11 -64q-3 -20 -20 -34.5t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l26 157q-84 74 -128 175l-159 53q-19 7 -33 26t-14 40v50q0 21 14.5 35.5t35.5 14.5h124q11 87 56 166l-111 95 q-16 14 -12.5 23.5t24.5 9.5h203q116 101 250 101zM675 1000h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h250q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="&#xe226;" d="M641 900l423 247q19 8 42 2.5t37 -21.5l32 -38q14 -15 12.5 -36t-17.5 -34l-139 -120h-390zM50 1100h106q67 0 103 -17t66 -71l102 -212h823q21 0 35.5 -14.5t14.5 -35.5v-50q0 -21 -14 -40t-33 -26l-737 -132q-23 -4 -40 6t-26 25q-42 67 -100 67h-300q-62 0 -106 44 t-44 106v200q0 62 44 106t106 44zM173 928h-80q-19 0 -28 -14t-9 -35v-56q0 -51 42 -51h134q16 0 21.5 8t5.5 24q0 11 -16 45t-27 51q-18 28 -43 28zM550 727q-32 0 -54.5 -22.5t-22.5 -54.5t22.5 -54.5t54.5 -22.5t54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5zM130 389 l152 130q18 19 34 24t31 -3.5t24.5 -17.5t25.5 -28q28 -35 50.5 -51t48.5 -13l63 5l48 -179q13 -61 -3.5 -97.5t-67.5 -79.5l-80 -69q-47 -40 -109 -35.5t-103 51.5l-130 151q-40 47 -35.5 109.5t51.5 102.5zM380 377l-102 -88q-31 -27 2 -65l37 -43q13 -15 27.5 -19.5 t31.5 6.5l61 53q19 16 14 49q-2 20 -12 56t-17 45q-11 12 -19 14t-23 -8z" />
+<glyph unicode="&#xe227;" d="M625 1200h150q10 0 17.5 -7.5t7.5 -17.5v-109q79 -33 131 -87.5t53 -128.5q1 -46 -15 -84.5t-39 -61t-46 -38t-39 -21.5l-17 -6q6 0 15 -1.5t35 -9t50 -17.5t53 -30t50 -45t35.5 -64t14.5 -84q0 -59 -11.5 -105.5t-28.5 -76.5t-44 -51t-49.5 -31.5t-54.5 -16t-49.5 -6.5 t-43.5 -1v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-100v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-175q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v600h-75q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5h175v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h100v75q0 10 7.5 17.5t17.5 7.5zM400 900v-200h263q28 0 48.5 10.5t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-263zM400 500v-200h363q28 0 48.5 10.5 t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-363z" />
+<glyph unicode="&#xe230;" d="M212 1198h780q86 0 147 -61t61 -147v-416q0 -51 -18 -142.5t-36 -157.5l-18 -66q-29 -87 -93.5 -146.5t-146.5 -59.5h-572q-82 0 -147 59t-93 147q-8 28 -20 73t-32 143.5t-20 149.5v416q0 86 61 147t147 61zM600 1045q-70 0 -132.5 -11.5t-105.5 -30.5t-78.5 -41.5 t-57 -45t-36 -41t-20.5 -30.5l-6 -12l156 -243h560l156 243q-2 5 -6 12.5t-20 29.5t-36.5 42t-57 44.5t-79 42t-105 29.5t-132.5 12zM762 703h-157l195 261z" />
+<glyph unicode="&#xe231;" d="M475 1300h150q103 0 189 -86t86 -189v-500q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
+<glyph unicode="&#xe232;" d="M475 1300h96q0 -150 89.5 -239.5t239.5 -89.5v-446q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
+<glyph unicode="&#xe233;" d="M1294 767l-638 -283l-378 170l-78 -60v-224l100 -150v-199l-150 148l-150 -149v200l100 150v250q0 4 -0.5 10.5t0 9.5t1 8t3 8t6.5 6l47 40l-147 65l642 283zM1000 380l-350 -166l-350 166v147l350 -165l350 165v-147z" />
+<glyph unicode="&#xe234;" d="M250 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM650 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM1050 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
+<glyph unicode="&#xe235;" d="M550 1100q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 700q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 300q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
+<glyph unicode="&#xe236;" d="M125 1100h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM125 700h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM125 300h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe237;" d="M350 1200h500q162 0 256 -93.5t94 -256.5v-500q0 -165 -93.5 -257.5t-256.5 -92.5h-500q-165 0 -257.5 92.5t-92.5 257.5v500q0 165 92.5 257.5t257.5 92.5zM900 1000h-600q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h600q41 0 70.5 29.5 t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5zM350 900h500q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-500q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 14.5 35.5t35.5 14.5zM400 800v-200h400v200h-400z" />
+<glyph unicode="&#xe238;" d="M150 1100h1000q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe239;" d="M650 1187q87 -67 118.5 -156t0 -178t-118.5 -155q-87 66 -118.5 155t0 178t118.5 156zM300 800q124 0 212 -88t88 -212q-124 0 -212 88t-88 212zM1000 800q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM300 500q124 0 212 -88t88 -212q-124 0 -212 88t-88 212z M1000 500q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM700 199v-144q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v142q40 -4 43 -4q17 0 57 6z" />
+<glyph unicode="&#xe240;" d="M745 878l69 19q25 6 45 -12l298 -295q11 -11 15 -26.5t-2 -30.5q-5 -14 -18 -23.5t-28 -9.5h-8q1 0 1 -13q0 -29 -2 -56t-8.5 -62t-20 -63t-33 -53t-51 -39t-72.5 -14h-146q-184 0 -184 288q0 24 10 47q-20 4 -62 4t-63 -4q11 -24 11 -47q0 -288 -184 -288h-142 q-48 0 -84.5 21t-56 51t-32 71.5t-16 75t-3.5 68.5q0 13 2 13h-7q-15 0 -27.5 9.5t-18.5 23.5q-6 15 -2 30.5t15 25.5l298 296q20 18 46 11l76 -19q20 -5 30.5 -22.5t5.5 -37.5t-22.5 -31t-37.5 -5l-51 12l-182 -193h891l-182 193l-44 -12q-20 -5 -37.5 6t-22.5 31t6 37.5 t31 22.5z" />
+<glyph unicode="&#xe241;" d="M1200 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM500 450h-25q0 15 -4 24.5t-9 14.5t-17 7.5t-20 3t-25 0.5h-100v-425q0 -11 12.5 -17.5t25.5 -7.5h12v-50h-200v50q50 0 50 25v425h-100q-17 0 -25 -0.5t-20 -3t-17 -7.5t-9 -14.5t-4 -24.5h-25v150h500v-150z" />
+<glyph unicode="&#xe242;" d="M1000 300v50q-25 0 -55 32q-14 14 -25 31t-16 27l-4 11l-289 747h-69l-300 -754q-18 -35 -39 -56q-9 -9 -24.5 -18.5t-26.5 -14.5l-11 -5v-50h273v50q-49 0 -78.5 21.5t-11.5 67.5l69 176h293l61 -166q13 -34 -3.5 -66.5t-55.5 -32.5v-50h312zM412 691l134 342l121 -342 h-255zM1100 150v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5z" />
+<glyph unicode="&#xe243;" d="M50 1200h1100q21 0 35.5 -14.5t14.5 -35.5v-1100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5zM611 1118h-70q-13 0 -18 -12l-299 -753q-17 -32 -35 -51q-18 -18 -56 -34q-12 -5 -12 -18v-50q0 -8 5.5 -14t14.5 -6 h273q8 0 14 6t6 14v50q0 8 -6 14t-14 6q-55 0 -71 23q-10 14 0 39l63 163h266l57 -153q11 -31 -6 -55q-12 -17 -36 -17q-8 0 -14 -6t-6 -14v-50q0 -8 6 -14t14 -6h313q8 0 14 6t6 14v50q0 7 -5.5 13t-13.5 7q-17 0 -42 25q-25 27 -40 63h-1l-288 748q-5 12 -19 12zM639 611 h-197l103 264z" />
+<glyph unicode="&#xe244;" d="M1200 1100h-1200v100h1200v-100zM50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 1000h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM700 900v-300h300v300h-300z" />
+<glyph unicode="&#xe245;" d="M50 1200h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 700h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM700 600v-300h300v300h-300zM1200 0h-1200v100h1200v-100z" />
+<glyph unicode="&#xe246;" d="M50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-350h100v150q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-150h100v-100h-100v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v150h-100v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM700 700v-300h300v300h-300z" />
+<glyph unicode="&#xe247;" d="M100 0h-100v1200h100v-1200zM250 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM300 1000v-300h300v300h-300zM250 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe248;" d="M600 1100h150q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-100h450q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h350v100h-150q-21 0 -35.5 14.5 t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h150v100h100v-100zM400 1000v-300h300v300h-300z" />
+<glyph unicode="&#xe249;" d="M1200 0h-100v1200h100v-1200zM550 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM600 1000v-300h300v300h-300zM50 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe250;" d="M865 565l-494 -494q-23 -23 -41 -23q-14 0 -22 13.5t-8 38.5v1000q0 25 8 38.5t22 13.5q18 0 41 -23l494 -494q14 -14 14 -35t-14 -35z" />
+<glyph unicode="&#xe251;" d="M335 635l494 494q29 29 50 20.5t21 -49.5v-1000q0 -41 -21 -49.5t-50 20.5l-494 494q-14 14 -14 35t14 35z" />
+<glyph unicode="&#xe252;" d="M100 900h1000q41 0 49.5 -21t-20.5 -50l-494 -494q-14 -14 -35 -14t-35 14l-494 494q-29 29 -20.5 50t49.5 21z" />
+<glyph unicode="&#xe253;" d="M635 865l494 -494q29 -29 20.5 -50t-49.5 -21h-1000q-41 0 -49.5 21t20.5 50l494 494q14 14 35 14t35 -14z" />
+<glyph unicode="&#xe254;" d="M700 741v-182l-692 -323v221l413 193l-413 193v221zM1200 0h-800v200h800v-200z" />
+<glyph unicode="&#xe255;" d="M1200 900h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300zM0 700h50q0 21 4 37t9.5 26.5t18 17.5t22 11t28.5 5.5t31 2t37 0.5h100v-550q0 -22 -25 -34.5t-50 -13.5l-25 -2v-100h400v100q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5v550h100q25 0 37 -0.5t31 -2 t28.5 -5.5t22 -11t18 -17.5t9.5 -26.5t4 -37h50v300h-800v-300z" />
+<glyph unicode="&#xe256;" d="M800 700h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-100v-550q0 -22 25 -34.5t50 -14.5l25 -1v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v550h-100q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h800v-300zM1100 200h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300z" />
+<glyph unicode="&#xe257;" d="M701 1098h160q16 0 21 -11t-7 -23l-464 -464l464 -464q12 -12 7 -23t-21 -11h-160q-13 0 -23 9l-471 471q-7 8 -7 18t7 18l471 471q10 9 23 9z" />
+<glyph unicode="&#xe258;" d="M339 1098h160q13 0 23 -9l471 -471q7 -8 7 -18t-7 -18l-471 -471q-10 -9 -23 -9h-160q-16 0 -21 11t7 23l464 464l-464 464q-12 12 -7 23t21 11z" />
+<glyph unicode="&#xe259;" d="M1087 882q11 -5 11 -21v-160q0 -13 -9 -23l-471 -471q-8 -7 -18 -7t-18 7l-471 471q-9 10 -9 23v160q0 16 11 21t23 -7l464 -464l464 464q12 12 23 7z" />
+<glyph unicode="&#xe260;" d="M618 993l471 -471q9 -10 9 -23v-160q0 -16 -11 -21t-23 7l-464 464l-464 -464q-12 -12 -23 -7t-11 21v160q0 13 9 23l471 471q8 7 18 7t18 -7z" />
+<glyph unicode="&#xf8ff;" d="M1000 1200q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM450 1000h100q21 0 40 -14t26 -33l79 -194q5 1 16 3q34 6 54 9.5t60 7t65.5 1t61 -10t56.5 -23t42.5 -42t29 -64t5 -92t-19.5 -121.5q-1 -7 -3 -19.5t-11 -50t-20.5 -73t-32.5 -81.5t-46.5 -83t-64 -70 t-82.5 -50q-13 -5 -42 -5t-65.5 2.5t-47.5 2.5q-14 0 -49.5 -3.5t-63 -3.5t-43.5 7q-57 25 -104.5 78.5t-75 111.5t-46.5 112t-26 90l-7 35q-15 63 -18 115t4.5 88.5t26 64t39.5 43.5t52 25.5t58.5 13t62.5 2t59.5 -4.5t55.5 -8l-147 192q-12 18 -5.5 30t27.5 12z" />
+<glyph unicode="&#x1f511;" d="M250 1200h600q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-500l-255 -178q-19 -9 -32 -1t-13 29v650h-150q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM400 1100v-100h300v100h-300z" />
+<glyph unicode="&#x1f6aa;" d="M250 1200h750q39 0 69.5 -40.5t30.5 -84.5v-933l-700 -117v950l600 125h-700v-1000h-100v1025q0 23 15.5 49t34.5 26zM500 525v-100l100 20v100z" />
+</font>
+</defs></svg> 
\ No newline at end of file
new file mode 100644
index 0000000000000000000000000000000000000000..1413fc609ab6f21774de0cb7e01360095584f65b
GIT binary patch
literal 45404
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
XStY_=A$0InS6e%+*G_v`?YI6DA%94*
new file mode 100644
index 0000000000000000000000000000000000000000..9e612858f802245ddcbf59788a0db942224bab35
GIT binary patch
literal 23424
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
new file mode 100644
index 0000000000000000000000000000000000000000..64539b54c3751a6d9adb44c8e3a45ba5a73b77f0
GIT binary patch
literal 18028
zc$@$xK-s@{Pew8T0RR9107h&84*&oF0I^&E07eM_0Rl|`00000000000000000000
z0000#Mn+Uk92y`7U;vDA2m}!b3WBL5f#qcZHUcCAhI9*rFaQJ~1&1OBl~F%;WnyLq
z8)b|&?3j;$^FW}&KmNW53flIFARDZ7_Wz%hpoWaWlgHTHEHf()GI0&dMi#DFPaEt6
zCO)z0v0~C~q&0zBj^;=tv8q{$8JxX)>_`b}WQGgXi46R*CHJ}6r+;}OrvwA{_SY+o
zK)H-vy{l!P`+NG*`*x6^PGgHH4!dsolgU4RKj@I8Xz~F6o?quCX&=VQ$Q{w01;M0?
zKe|5r<z7o5`*yS~8)MszG41q#5{WWPpy7G9^(-fD<g4HS2Pp6}MR#f7LIoFspeCvR
z3+c{Ov}|bDFijfL*xJ&DWaU}da`Er7tg~)(Y2IDkd3AD?w7jnSneG!-SaWI)p`xDU
zXH9Mys?(WBfmfBO!_){Max(NjX;ffVH@MAGD6y!?&l=$WE1+*S^Cx4)$U?A><_7CD
z=eO3*x!r$<gNx(8nyyp{U13{MWIQu>aX2iFh3;}xNfx0v;SwB<Fg``NKlv&}sOOia
zl_SskHz$qk-Tj7B2@DHwWBbat?O%&GCL=1*D=EFRpwKHcVF9o~HnwAo=XtT&qlRWE
zVi`v1=H&nBv?M!wAX!1fF?LWbbVvCAjN!ns70n|1u$9{ZL&9b)AXkF-t^%6Wna*`f
z*04(m<0Gx@4&<!XDochu+x!F|DAC{R)c4o_TK-_!s|@9}TbCv3Sp`&zta~M|$%-V1
ztq`DddvEXU8JrjLh=Ul_yYF^%B5>fGG+@Z;->Hhvq<wD;VB@ph6#6G_6lL5#3gkx~
zHFE%Z^IuN$3X)Ju)24Q9Ro)B9zI%GT-16@8|DPH7fB1}tA~RrY4U!xKmRBRxkiA|Q
zKr4+b2V=R(Yj3HIK~EcS6>fF4r__4$mU>Dl_1w;-9`~5rF~@!3;r~xP-hZvOfOx)A
z#>8O3N{L{naf215f>m=bzbp7_(ssu&cx)Qo-{)!)Yz3A@Z0uZaM2yJ8#<s6khOy@V
z&}wI!ds<}Wi3oZ(j|&tv|KA}5cx}QpZ^By#9KFAF@B1dVuQA$!NDxA6LE`KPadPU;
zQjo+AqqndYk0@McX!H;i$Tx}X(u#SHJ%&iNTJu#<Xz9=-I1o~2(*?vBfO^7b&8^8!
zI*Z@{F?FmY+=Z{Cp`Jcc{axky6qgRBtRkQEW;eW-3-wE{UVkT;s_VTolPg6pyu@CK
zSyeS%s7^u`F5b$ErP4Ux#VgLuk2sI{EPRQ3O?-?&iV@{?VSLbGh?0Noj@91Fh1H!U
z01AI>OGlzm?JO5gbrj~@)NB4@?>KE(K-$w}{};@dKY#K3+Vi64S<@!Z{(I{7l=!p9
z&kjG^P~0f46i13(w!hED<gesU<d5XH<k#ev<OXsrxsqH=M#%^{mn<fylX>Jga;*Eb
z`!n|++@H8VaKG<9>VDh(y89J#=;Z$ei=GnD5TesW#|Wf)^D+9NKN4J3H5PF_t=V+Z
zdeo8*h9+8&Zfc?>>1|E4B7MAx)^uy$L>szyXre7W|81fjy+RZ1>Gd}@@${~PCOXo)
z$#HZd3)V3@lNGG%(3PyIbvyJTOJAWcN@Uh!FqUkx^&BuAvc)G}0~SKI`8ZZXw$*xP
zum-ZdtPciTAUn$XWb6vrS=JX~f5?M%9S(=QsdYP?K%Odn0S0-Ad<-tBtS3W06I^FK
z8}d2eR_n!(uK~APZ-#tl@SycxkRJ@5wmypdWV{MFt<T5%<QMMP#rTv8Dn)!jr4End
z8!An$TjN_QZBN_|-%;s$96wO$ZrvL{QYl%F!EaP1Th9SiDvOmh5WrK}3{64{{_F&y
zrSMy`6AG<_-)~t&XssC4d+gCHeK9;{jV1y%Xrvg1Cy#-D2g;>YBUY#g-Vv?5AEBj1
z`$T^tRKca*sn7<ZK}0!&|7AkCI;jT+6~rYE0#BU5AkxqT6Y+wF*hUg{if$klH$Np(
z14lF>gt%s@XUD-t>bij-4q-ilku9^;QJ3Mpc`HJ_EX4TGGQ-Og)`c~qm51<|gp7D@
zp#>Grssv^#A)&M8>ulnDM_5t#Al`#jaFpZ<#YJ@>!a$w@kEZ1<@PGs#L~kxOSz7jj
zEhb?;W)eS}0IQQuk4~JT30>4rFJ3!b+77}>$_>v#2FFEnN^%(ls*o80pv0Q>#t#%H
z@`Yy-FXQ9ULKh{Up&oA_A4B!(x^9&>i`+T|eD!&QOLVd(_avv-bFX~4^><K+`NUjl
zUA`n*5<n{f%?!4-)qpuLcwM`4xUD6=$ki+M2U1n6MQw*G7TmC^qdRw?b*#WSFG;)w
z)HldC)uy>o{%mzzrg_i~SBnr%DeE|i+^}|8?kaV(Z32{`vA^l!sp15>Z72z52FgXf
z^8ZITvJ9eXBT1~iQjW|Q`Fac^ak$^N-vI^*geh5|*CdMz;n16gV_zk|Z7q8tFfCvU
zJK^Pptnn0Rc~<r0!CgppAqmePbR1#5Tubl85FQ4lTg)+g8UrHdY9Ka1?3OcBFeRlE
zzYpoom?Fp2nZ{a4hDYQEn^Tkbje;(-5yZ};a0h|L)2vg*F=grd*^|WBo1OU#S-~Fv
zcDpzl2xPHbu|lC2Y@t*8{!%Fh(i78$=lQReu7C@B0!fO~hV;@Uos_RW`!LXs+NQHy
z@F$dGXT35dG@wzAM4<{W&5|=hvLeY%j@6DPfZK{_NfpP!+NaV|XArkdMWmsrp|+Y0
zNxjY}2dUoGHC2{GT?~El9hnDW?KmWthwM10KJ(#NAOW%mXq6&t9<|PZ;%Xe7E+vTD
zfEY+f$1Mv<nx@^jBQcU4Ljg4P-dWxOH-zo(t`hB8-Ik$N3~vY;K2XYCp*Fv_2blJm
zPc;8GW*QB>egGIAK}uv<M%BWA$}X1PZ}r3ec_|6TIBdoXwlXq~Ws001rqVG;8=+eP
zbcwJ)A;^UcGF*T_xCk`{#MzU|C0f_+{M&2Zk_ZN2^_{NVK>99VZm2WLPezQQ5K<`f
zg{8Ll|GioPYfNheMj-7-S87=w4N0WxHP`1V6Y)0M&SkYzVrwp>yfsEF7wj&T0!}dB
z)R~gGfP9pOR;GY_e0~K^^oJ-3AT+m~?Al!{>>5gNe17?OWz)$)sMH*xuQiB>FT2{i
zQ>6U_<n)x#cJkNUc|V)^vL|15d~)i9%UIk7`0hyQQOX6dwG{=#lR`i}3*A_(-}<aV
z6Bs$mG_#ni!&Ir*LWx4DW1y|U7^_H;P@~Q(g7S%hUz3y7SxDI<tR$+-%3z@EM);%g
zLObKN!YkVml!Zc2Qm{14ydZQ0tvYlF^&(mmMY>8}Ay~r4li;jzG+$&?S12{)+<*k9
z<^SX#xY|jvlvTxt(m~C7{y<eW|86c<M_B#9!3F3@>{3g>7TX#o2q$xQO|fc<%8r<e
zu{@uYv6wTaDS(!pU?WCA5)2p&Mj+Ip;0XTMc8zb%VkCGB2k$Gg;JkJFCbWHte9BlD
zCR^F6kT^z*ExAP|FFuMd7tu$>E@A3=UW(o?gVg?gDV!0q6O!{MlX$6-Bu_m&0ms66
znWS&zr{O_4O&{2uCLQvA?xC5vGZ}KV1v6)#oTewgIMSnBur0PtM0&{R5t#UEy3I9)
z`LVP?3f;o}sz*7g<a{wL*dZXtI5+zcTbzINq%3Vx?sa^oH8-vb96eb6k)$k`VM?dj
z8y1_mUUalhn>5qdTxJl^gk3>;8%SOPH@B)rmFOJ)m6?PlYa$y=RX%;}KId{m<ya`&
zf~xC+0#uqMzpD#MstCV?tz>9R#2=LNwosF@OTivgMqxpRGe}5=LtAn?VVl6VWCFLD
z7l#^^H8jY~42hR)OoVF#YDW(md!g(&pJ;yMj|UBAQa}UH?ED@%ci=*(q~Opn>kE2Q
z_4Kgf|0kEA6ary41A;)^Ku(*nirvP!Y>{FZYBLXLP6QL~vRL+uMlZ?jWukMV*(dsn
zL~~KA@jU)(UeoOz^4Gkw{fJsYQ%|UA7i79qO5=DOPBcWlv%pK!A+)*F`3WJ}t9FU3
zXhC4xMV7Z%5RjDs0=&vC4WdvD?Zi5tg4@xg8-GLUI>N$N&3aS4bHrp%3_1u9wqL)i
z)XQLsI&{Hd&bQE!3m&D0vd!4D`l1$rt_{3NS?~lj#|$GN5RmvP(j3hzJOk=+0B*2v
z)Bw133RMUM%wu<VkMnpWWVN&K8^*s5oqf-N`_{oZG|c^)?fe5daI7j+I{GC?6;bAe
zUSXe$6^9Vy1KrCfsOM#a9`s`Ns00)gifk>_+$vbzOy?yk#kvR?xGsg-ipX4wKyXqd
zROKp5))>tNy$HByaEHK%$mqd>-{Yoj`oSBK;w>+eZ&TVcj^DyXjo{DDbZ>vS2cCWB
z(6&~GZ}kUdN(*2-nI!hvbnVy@z2E#F394OZD&Jb04}`Tgaj?MoY?1`{ejE2iud51%
zQ~J0sijw(hqr_Ckbj@pm$FAVASKY(D4BS0GYPkSMqSDONRaFH+O2+jL{hI<DV209S
z)XR~VgGa)M^-;}1&#S3{@xzwR6~@}^V}twZy;sZcsTJr0S5s{W-N3D9v%1<w%kip_
zCaGQ)_4?SD)S-wrJ3}!#J==&-iR8Kz)nLlnoRC&l|C1fmMV-bqBD82vt61QE6dSAF
z*iJKFHPeAzx_T}Ct>ltJSJT~e)TNDr(}=Xt7|UhcU9eoXl&QZRR<9WomW%&m)FT~j
zTgGd3-j}Uk%CRD;$@X)NNV9+RJbifYu>yr{Fk<C+0Z7wvVjq!VGjwL>O;p>_&njI>
zyBHh_72bW<C>;8}oGeY0gpHOxiV597j7mY<#?WMmkf5x~Kf<RrP*$<_TMcAZ<977s
zG-{sG-<y$aNL=Fg)E11z=zEyh@&Zlt<-N$5T)Lf&<pEj#+<|}`9f4puO~YVB6Jm!v
z!37dKVIz9-hLJpqcp?V#EU09HXG3YfV3A{zn-)630R_n7NwnfVYInEHeM$w$$$F=a
zUOHAT9sN4j{@RNZd%w-R1}Mm~Ligs&9Lc5wlF9RUjyxD1L}DW%Q=_4K^pa5dNOiqV
zfiDy5dvZ1fJ9kyK6XwwJ5_8s27to%QJf!DXz~EWpbJWE5-c5LQu!j^}nqmNv+H<%h
z5ssJ<c#g^_qKPkFd;?x87%*ynZQ!gsBex|=gx*awoyTyPQBBvZ@H#pgVq8NqXJ!Gg
zuwA`+(oi^5nIKiFlTl*U=ybY+9YY+wRG&TyaG*FVHfLWlmTb<UHm6AP5eOjK&H%@T
z4@jLl_YGv5Jmy2q={B>k*re(&tG_mX<3&2cON*2u%V29tsXUv{#-ijs2>EuNH-x3)
zPBpi+V6gI=wn}u164_j8xi-y(B?Au2o;UO=r6&)i5S3Mx*)*{_;u}~i4dh$`VgUS-
zMG6t*?DXDYX0D2Oj31MI!HF>|aG8rjrOPnxHu4wZl;!=NGjjDoBpXf?ntrwt^dqxm
zs(lE@*QB3NH)!`rH)5kks-D89g@UX&@DU9jvrs<xLUb7(M^4Zb6^^3tZR7!hc=SMz
zY6*prxO{uSb2$<j;JZB!{&!N@FRiO@L`rit7J5FDJBlZG-SI^R&~X)B26E|MJx3Zp
zy@feJ>Y)aI=9b4n<X@Mg2JK5FwM5CTI(2DlYHRLE7-h-ky&9}X`qiByDxrocwQ6k!
zk>Py3bfdX_U;#?zsan{G>DKob2LnhCJv8o}duQK)qP{7iaaf2=K`a-VNcfC582d4a
z>sBJA*%S|NEazDxXcGPW_uZ&d7xG`~JB!U>U(}acUSn=FqOA~(pn^!aMXRnqiL0;?
zebEZYouRv}-0r;Dq&<B?o>z9>s#Rt1<!G80gW3Q`9g34ikcEkn<~yB0GE=440i1w9
z%Vr=2{=&=rZq4E{&?AkG<{r866K366I$gg?dF2R5T^g;GEw`9Q*Nk^(b|;|+1mb*%
z#4u&?3d3JFi15;ot8Oc19^cux;^0|4tLG@q3aUT$?2-_vk$Lj@p(S^1tSf2`gC-^+
z=%QnjUZHg-onrhZ@o1lIHV_2Dq?*qAxhgUYKOD3{$4MNkw#KqGMg~{D*qK}6#+(MI
zLiJU8?@7)@l#?NnZ90q6`<!@a)Mc05$F6R?dVF0a42_U&5!rIVRk%it+OLoWl=%^V
zt}(_79f^HAArEdKM!qJXXY$(d|4@mB-2tz!8yh<&*Y>HL`0p4bB)A&sMyn|rE_9nh
z?NO*RrjET8D4s(-`nS{MrdYtv*kyCnJKbsftG2D#ia@;42!8xd?a3P(&Y?vCf9na<
zQ&Ni*1Qel&Xq{Z?=%f0<LS^x97`leNoS?M1&H-Xn(H4XTZqAYsYIOp+zQ7v^2WLR!
z_a_8#QR|eBZg?(rHeyy)Ce#d@UAa5k@2V9cLthMp76uClo{creD&Bgz9m%@;ZGciy
zb&;xZf|B4Crm;}`+FCG!wta2!yrIkn%Jpu&re1E<PjbmrrsBbowaz-9RpTeuXu#&D
zFm4Z8p>SRqQt5m|Myg+8T=GDc)@^};=tM>9IDr7hdvE9-M@@<0pqv45xZTeNecbL-
zWFQt4t`9>j8~X%lz}%We>Kzh_=`XO}!;4!OWH?=p*DOs#Nt({k^IvtBEL~Qafn)I^
zm*k{y7_bIs9YE}0B6%r`EIUH8US+MGY!KQA1fi-jCx9*}oz2k1nBsXp;4K<_&S<R|
z+!NEpcbfYC>N}}w<)!EylI_)v7}3&c)V;Cfuj*eJ2yc8LK=vugqTL><#65r6%#2e|
zdYzZ)9Uq7)A$ol&ynM!|RDHc_7?FlWqjW>8TIHc`jExt)f5W|;D%GC#$u!%B*S%Z0
zsj&;bIU2jrt_7%$=!h4Q29n*A^^AI8R|stsW%O@?i+pN0YOU`z;TVuPy!N#~F8Z29
zzZh1`FU(q31wa>kmw{$q=MY>XBprL<1)Py~5TW4mgY%rg$S=4C^0qr+*A^T)Q)Q-U
zGgRb9%MdE-&i#X3xW=I`%xDzAG95!RG9<s#0S@%P{4ssMj6|f(PFTtK{&eg=M$et?
zer_yKYB>)s?v_5+qx`7NdkQ)If5}BoEp~h}XoeK>kweAMxJ8tehagx~;Nr_WP?jXa
zJ&j7%Ef3w*XWf<k`Dtf*esPy5LFqg?XcIB9IkPk2PVCIR^-+n7<HvnNOxS;rSNY$k
z!q<-6euEMl;SCbnVwt5PhJlC8e8)6(eeUqB*8$mMnR$Q&;ETvMu%R;lTOg&_)?8$`
zEVa^()w5!O5o`IR%tYnnz9leJ+<2|7dp$e$)VGU<0VsrN2!{)e*i2Km_!HkTy_op@
zsnIk4PS0pBq&7e1Cq-WNe*ebQP_BP_b6V^hnOf6Jl*FDBLVJ=#%yjrBiM`Z%lGFDo
zwHH-yVfi&trZbO`$d`z6e!q^9z6z!R^x64FT@j!px;*Fv`gCn5ntcrW!_Q4ZK!=`N
zoJV-<2+l^+1!xdB0GlIyi1aL@Bfyw-3;j%CdMMseXt6XU(|7@G1YlJY;FZ<6E=3Wj
z<90D&lAbgUUnehHsAREwMtG=6$~8Hjj0}TB^$|Sk>?V*nR)|IOMrX;$*$e23m?QN`
zk>sC^GE=h6?*Cr~596s_QE@>Nnr?{EU+_^G=LZr#V&0fEXQ3IWtrM{=t^qJ62Sp=e
zrrc>bzX^6yFV!^v7;>J9>j;`qH<hDH19MMT1+`8y)sG%_MO<QWhJX7}-!&K#jas?d
zy;gZO2VIR5z1H^NXfFwADaHGprj9Kyw6No$Yqd_S(T={z#2gbNW$Y;;P#5j-{0Iqq
z{Yz6(ka&r*xSggxVdEyX?Y53QVJz#Wj2B2nNYC=~i46iAU6ds(WkjB{Reo2yZ2cFH
z1KOLbJ7d1#n3MMhVE&yyAfdi+kxdP<3vBD^E`m_9S2y(rq1mIzE*dZNSDYg|SM_8n
zmO6SnMKXq{pYHbK`f8yE_&F1K$=pH5Q;<_Q=ykx1w&1KgW?4A9Z6Hh0ujuU5gw(c)
z&7nRlgcqO=4PWSIrL^%aZQ)})*BEYH(5EdFt~HS|W2m{IuJL*etT$vJP@H=66XgN5
z8Q}8pvQ~ulll!Gl9Z+^=yi)!QQl!(y;INZ9hFT3RpTQp9WD<t=u9}FyLz|lM^T%K;
z_F;6vJrfj%Yd?0P?KC4$4d|po%oYftn%JedFIyM&26HYvVHGfC#(R&nCXS+Z{t)t^
zVSWJ}WdR7#^Eiv>DQ4uc92eVe6nO@c>H=ouLQot``E~KLNqMqJ7(G+?GWO9Ol+q$w
z!^kMv!n{vF?RqLnxVk{a_Ar;^sw0@=+~6!4&;SCh^u<XeQK8Ry4Gm-T(Vj*P>tT=I
zo&$CwvhNOjQpenw2`5*a6Gos6cs~*TD`8H9P4=#jOU_`%L<QahFX*>!W;$57NjN%4
z39(61ZC#s7^tv`_4j}wMRT9rgDo*XtZwN-L;Qc$6v8kKkhmRrxSDkUAzGPgJ?}~_t
zk<g7QLp>woGS4=6lsD`=RL|8L3O9L()N)lmEn-M15fRC{dhZ}7eYV%O-R^gsAp{q4
z!C1}_T8gy^v@SZ5R&Li5JMJy+K8iZw3LOGA0pN1~y@w7RRl#F()ii6Y5mr~Mdy@Kz
z@FT4cm^I&#Fu_9I<Lt*^+@1e0b(+y4E>X(HAFP{XLbRALqm&)>m_we>a`hfv?eE|t
z?YdDp2yAhj-~vuw^wzVDuj%w?exOcOT(ls(F*ceCe(C5HlN{lcQ;}|mRPqFDqLEzw
zR7ldY+M6xe$$qLwekmk{Z&5cME$gpC?-8)f0m$rqaS|mj9ATNJvvyCgs(f2<G?s#j
zlCyq7V=W|3+#5GMRv3jyMSve^Et#Ab=u*f=lMF{rP2hXbA~Thc4Er=Whg%hdYCNEj
z;kX^FSJSNv%HwF&_?QB}Y>{r;2E!oy$k<WRsM?7~2V-%l??892FJ&Nc|D((m<^gBU
z9InVbh@;KM5Dz*apz7ga>5{jik#(;S>do<#m0wVcU<}>)VtYmF9O0%(C>GDzPgh6X
z9OkQLMR~y7=|MtaU!LDPPY7O)L{X#SC+M|v^X2CZ?$GS>U_|aC(VA(mIvCNk+biD|
zSpj>gd(v>_Cbq>~-x^Y3o|?eHmuC?E&z>;<!5?S(?^O9r&S^X+pEvdora!<1(g^2R
zF}c9cL+{oKVWq$6?rtz|xpFbl44EDmFIBCjiJb-Y3(jwkFAqQImExJNVfoWvtZ)_T
zk4V<B4M+9tw4kQKIG^34KQl&&Fz^SMfZ1Rr!}rgT#M3;D3P+k<)V-V;IAUzgk0mWE
z!YO?vo&!phIu^NE0<F?&&>Ij`%{$Pm$hI}bl0Kd`9KD~AchY+goL1?igDxf$qxL9<
z4sW@sD)nwWr`T>e2B8MQN|p*DVTT8)3(%AZ&D|@Zh6`cJFT4G^y6`(UdPLY-&bJYJ
z*L06f2~BX9qX}u)nrpmHP<M#fk<GgBNMKYA_9QYh8<vJ<9@F-~(AqGXdLPEfJFTIn
zp64R)U5xUof+~(#vZUz{EaXw4SAp0Y;12Y-Y*XpA#>G#La#tiZ23<>`R@u8k;ueM6
znuSTY7>XEc+I-(VvL?Y>)adHo(cZ;1I7QP^q%hu#M{BEd8&mG_!EWR7ZV_&E<NEPM
zcuS4Ye{%Gqtc-n!er+G|*<cWkM>GO;d(hGGJzX|tqyYEg2-m0zLT}a{COi$9!?9yK
zGN7&yP$a|0gL`dPUt=4d^}?zrLN?HfKP0_gdRvb}1D73Hx!tXq>7{DWPV;^X{-)cm
zFa^H5oBDL3uLk<C+v0>aFDWgFF@HL6Bt+_^g~*o*t`Hgy3M?nHhWvTp^|AQDc9_H<
zg>IaSMzd7c(Sey;1SespO=8YUUArZaCc~}}tZZX80w%)fNpMExki-qB+;8xVX@dr;
z#L52S6*aM-_$P9x<jdu9ktlJz@92>FuIui;dN#qZ_MYy^C^hrY;YAMg;K`!ZpKKFc
z9feHsool)`tFSS}Su|cL0%F;h!lpR+ym|P>kE-O`3QnHbJ%gJ$dQ_HPTT~>6WNX41
zoDEUpX-g&Hh&GP3ko<AA>F4##?q*MX1K`@=W6(Gxm1=2Tb{hn8{sJyhQBoq}S>bZT
zisRz-xDBYoYxt6--g2M1yh{#<qP09xNr@s6w?MS->QWFCISux}4==r|7+fYdS$%DZ
zXVQu{yPO<)Hn=TK`E@;l!09aY{!TMbT)H-l!(l{0j=SEj@JwW0a_h-2F0MZNpyucb
zPPb+4&j?a!6Z<r#zSSW!Qu(5~6_6s0G^U8i@%ox>nPTB>$t`(XSf-}`&+#rI#`GB>
zl=$3HORwccTnA2%>$Nmz)u7j%_ywoGri1UXVNRxSf(<@vDLKKxFo;5pTI$R~a|-sQ
zd5Rfwj+$k1t0{J`qOL^q>vZUHc7a^`cKKVa{66z?wMuQAfdZBaVVv@-wamPmes$d!
z>gv^xx<0jXO<J6=m}BiiJow`eU@2UA*K~Z_jqm?*Cp?B28V2;3;6C}+*8byL=EIJc
z@2%))H|zSX{#wNl1dKR;V_`{wA-N5-aN?q$&CIR<EVd6v!|e;ZYX_h;K*-tj_Xr#R
zVD!mpcMXWrZqS|`IB=hKzaZzy6X`0CowC9wPYMg&9n}1avJ{}*L0iZ!p`>z;7HIQS
z4RBIFD?7{o^IQ=sNQ-k!ao*<ZRhqeGmf|{bY%Roxqzv&YHX(&*=PS#s1OR(zw~6*G
zAZll^YspPb$=6UL<F@2FynT_exO*?%>+V*|-^I2=UF?{d>bE9avsWbAs{sRE-y`7r
zxVAKA9amvo4T}ZAHSF-{y1GqUHlDp4DO9I3mz5h8n|}P-9nKD|$r9AS3gbF1AX=2B
zyaK3TbKYqv%~JHKQH8v+%zQ8UVEGDZY|mb>Oe3JD_Z{+Pq%HB+J1s*y6JOlk`6~H)
zKt)YMZ*RkbU!<JI!}T{8zEt+(a&daxMztju*ROn;npHenq}*@86I)b4J&uF~&?iJt
zN?o)&ELAxfueHiio3Ybyik@o*@icyb9qQo*!QuvA1&u?hUYT)4qQ$O|oMH`uQ%7^!
z_}}e+S%sZ4PL@FquF`ewt{)}v@KZ#Df*{vuY6%Mec{@2I-?T|VsMToX1VvAe%n^j)
zvdeu6s1|35v#f;_moF<I`PGAy?=_uDS;`<l<OfIk_>GPHzJltmW-=6zqO=5;S)jz{
zFSx?ryqSMxgx|Nhv3z#kFBTuTBHsViaOHs5e&vXZ@l@mVI37<+^KvTE51!pB4Tggq
zz!NlRY2ZLno0&6bA|KHPYO<dkI`ky_l{+0el>MY;;LZG&_lzuLy{@i$&B(}_*~Zk2
z>bkQ7u&Ww%CFh{aqkT{HCbPbRX&EvPRp=}WKmyHc>S_-qbwAr0<20vEoJ(!?-ucjE
zKQ+nSlRL^VnOX0h+WcjGb6WI(8;7bsMaHXDb6ynPoOXMlf9nLKre;w*#E_whR#5!!
z!^%_+X3eJVKc$fMZP;+xP$~e(CIP1R&{2m+iTQhDoC8Yl@kLM=Wily_cu>7C1wjVU
z-^~I0P06ZSNVaN~A`#cSBH2L&tk6R%dU1(u1XdAx;g+5S^Hn9-L$v@p7C<o$=Hu{J
zxrz+#TM>CF&PqV{Z?R$}4EJi36+u2JP7l(@fYfP!=e#76LGy^f>~vs0%s*x@X8`|5
zGd6JOHsQ=feES4Vo8%1P_7F5qjiIm#oRT0kO1(<jgC4I6wQ2{Xo|wjm0krd64efBC
zGt(LP9FC(njlia=(c_lTukVx-yR9~Gt`YfGKRT==f^$Uqz)t!SwGPI)kuvX+Zjvmv
zgh<^_T!LG;_|>?Z_Dk6<DV?iVez|GsZJ9q9|E_~n&^oZp@ZP#r)@50Y)8mRQBV<Zt
zDX+2G&swV0HIzU2B)jGgp<HCCR~bCFxw$OKhJS{dJFnQcxWhHg&GJ*Y)wr*`8kbb7
zRF?6Y&IrteW+;JBSq`vvJy8vQL|A_+2fW`8-8lH@zNvF93Bm{k%c!o-fCV)*0t~GU
zSfWy;Y#>oX&j=Xd8Klk(;gk3S(ZFnc^8Gc=d;8O-R9tlGyp=2I@1teAZpGWUi;}`n
zbJOS_Z2L16nVtDnPpMn{+wR9&yU9~C<-ncppPee`>@1k7hTl5Fn_3_KzQ)u{iJPp3
z)df?Xo%9ta%(dp@DhKuQj4D8=_!*ra#Ib&OXKrsYvAG%H7Kq|43WbayvsbeeimSa=
z8~{7ya9ZUAIgLLPeuNmSB&#-`Je0Lja)M$}I41KHb7dQq$wgwX+EElNxBgyyLbA2*
z=c1VJR%EPJEw(7!UE?4w@94{pI3E%(acEYd8*Wmr^R7|IM2RZ-RVXSkXy-8$!(iB*
zQA`qh2Ze!EY6}Zs7vRz&nr|L60NlIgnO3L*Yz2k2Ivfen?drnVzzu3)1V&-t5S~S?
zw#=Sdh>K@2vA25su*@>npw&7A%|Uh9T1jR$mV*H@)pU0&2#Se`7iJlOr$mp79`DKM
z5vr*XLrg7w6lc4&S{So1KGKBqcuJ!E|HVFB?vTOjQHi)g+FwJqX@Y3q(qa#6T@3{q
zhc@2T-W}XD9x4u+LCdce$*}x!Sc#+rH-sCz6j}0EE`Tk*irUq<m0`(;!&c&G7p#_P
zOJ|kT&v8z(QpAQ%C~^@e!Ck!ICE1vSkA<!Djfg-q)Xjj-!hve17Fw+LN`@{UJN)Br
zZQc5>)y^za`}^1gFnF)C!yf_l_}I<6qfbT$Gc&Eyr?!QwJR~RE4!gKVmqjbI+I^*^
z&hz^7r-dgm@Mbfc#{JTH&^6sJCZt-NTpChB^fzQ}?etydyf~+)!d%V$0faN(f`rJb
zm_YaJZ@>Fg>Ay2&bzTx3w^u-lsulc{mX4-nH*A(32O&b^EWmSu<mNHl&EF)N<Qwv@
z+ghjNCfO8{=RX6l;$%bV;UJwTS<t3aZ9alZA|`Nj-rR_)P~(S$140`CMywS0w4K@n
zvEbSGG>k{#HJk}_ULC}SB(L7`YAs>opp9o5UcnB^kVB*rmW6{s0&~_>J!_#<Q!IQA
zfO6pF51Khiw-3ES&zJ|$tcLa{0mAHdM*u;#&JjS6&2$71z|3e-)lO=LCK!MP<y1Y+
z19)^hGF`6{P@#NOEe8oq!=8hZ$>+cEWib@v-Ms`?!&=3fDot`oH9v&$f<52>{n2l*
z1FRzJ#yQbTHO}}wt0!y8Eh-0<gy=!05)T$dd<p&_-XL+(loOF(KU||XB_8&Ud`&j6
zW~wWblPi)_Dt+fy0AJi)GpeZiwq|YIuGrGcv(nscAa@~_m+trFF56NgiRrAWJI3uF
z`lhjQpmFmzF^U1!<RrqC-I>*|Um3vjX-nWH>`JN5tWB<ptoGg-$7O92<yOQsP=C)b
zJ`}#bAW@wa=e0GehF6uTNUcd|*Ba&dCiyhdjY(|NMK^uobI9q$ZChi=zU%>_gnW%;
zUJ0V?_a#+!=>ahhrbGvmvObe8=v1uI8#gNHJ#>RwxL>E^pT05Br8+$@a9aDC1~$@*
zicSQCbQcr=DCHM*?G7Hsovk|{$3oIwvymi#YoXeVfWj{Gd#XmnDgzQPRUKNAAI44y
z{1WG&rhIR4ipmvBmq$BZ*5tmPIZmhhWgq|TcuR{6lA)+vhj(cH`0;+B^72{&a7ff*
zkrIo|<cYW*47-TiTWhvB;>pd-Yxm+VVptC@QNCDk0=Re%Sz%ta7y{5Dn9(EapBS0r
zLbDKeZepar5%cAcb<^;m>1{QhMzRmRem=+0I3ERot-)gb`i|sII^A#^Gz+x>TW5A&
z3PQcpM$lDy`zb%1yf!e8&_>D02RN950KzW>GN6n@2so&Wu09x@PB=&IkIf|zZ1W}P
zAKf*&Mo5@@G=w&290aG1@3=IMCB^|G4L7*xn;r3v&HBrD4D)Zg+)f~Ls$7*P-^i#B
z4X7ac=0&58j^@2EBZCs}YPe3rqgL<Jxn$r!S8QWfkb&3miwnf<3dO#?*0r^D`z@0O
zyL}HbgfghMrA1DVzkMTz<h8XjNM2zx@b$YHrE<H$adW4nu!w{$k5e-y$OIJc^n_-#
z?T4cd%<Il(cWf@2Jy-ZR<%BHt;L>AA1L3Y}o?}$%u~)7Rk=LLFbAdSy@-Uw6lv?0K
z&P@@M`o2Rll3GoYjotf@WNNjHbe|R?IKVn*?Rzf9v9QoFMq)ODF~>L}26@z`KA82t
z43e!^z&WGqAk$Ww8j6bc3$I|;5^BHwt`?e)zf|&+l#!8uJV_Cwy-n1yS0^Q{W*a8B
zTzTYL>tt&I&9vzGQUrO?YIm6C1r>eyh|qw~-&;7s7u1achP$K3VnXd8sV8J7ZTxTh
z5+^*J5%_#X)XL2@>h(Gmv$@)fZ@ikR$v(2Rax89xscFEi!3_;ORI0dBxw)S{r50qf
zg&_a*>2Xe{s@)7OX9O!C?^6fD8tc3bQTq9}fxhbx2@QeaO9Ej+2m!u~+u%Q6?Tgz{
zjYS}bleKcVhW~1$?t*AO^p!=Xkkgwx6OTik*R3~yg^L`wUU9Dq#$Z*iW%?s6pO_f8
zJ8w#u#Eaw7=8n{zJ}C>w{enA6XYHfUf7h)!Qaev)?V=yW{b@-z`hAz;I7^|DoFChP
z1aYQnkGauh*ps6x*_S77@z1wwGmF8ky9fMbM$dr*`vsot4uvqWn)0vTRwJqH#&D%g
zL3(0dP>%Oj&vm5Re%>*4x|h<Em3JO)$O&GXE=ft3p^9G|#?0DwWLK`p_K)+<TTv{{
z-sme#4+Oqqf)?$*$pWS2gvP{&alHNwIjdG2eeVgB&W~2ncQkQT<TEB}+r+U*Sz^2(
z{JDq=6~A;9bd6M;^@ummf%1~8*<luPLU&L(KPlUFmFbIAFWF(Em5xC%IhGNzYpP8O
zT+`%G-QRPYJlIrWo{iAsK!Q9!P2vkE5P#|jye^?ECnY~D$0dPb9DZfa1?v)yz@3g&
z;g&G9%`bXU)%GaSxc!s&q+yw?s&G0kHmhpF|71o$Tvo0$rpbSM(^6^d{uv91%{b|=
z$*Kl!b^WeJ@0d+rhNnHIz4cl+;iLmd<L-)VhjV!~YbEu}d>1J2X*mK5BH1?Nx_#7(
zepgF`+n)rHXj!RiipusEq!X81;QQBXlTvLDj=Qub(ha&D=BDx3@-V*d!D9PeXUY?l
zwZ0<4=iY!sUj4G>zTS+eYX7knN-8Oynl=NdwHS*nSz_5}*5LQ@=?Yr?uj$`C1m2OR
zK`f5SD2|;=BhU#Ama<P~$VvhmI_^8ZNrt}1AvOV7X(sz*+2GbCZLT;rBdYe9QGvD6
z)XZ03krf;EL7R4cKP%`*;hM_&31edpDiHr|`}C4$VA4K?4)t-d*ee|SqdnPMHN?%7
zx3<>TKe9QaSHQ_DUj1*cUPa*JICFt1<&S3P3zsrs^yUE;tx=x^cmW!Jq!+hohv_B>
zPDMT<UQS`;VV^r@irLILT~0+N33M1<u)sr18hR(<Wra9eQt=0KCN|yzvNvA<AN<3k
zV|hxRkue$##Qs23TChJ;07NqT3L1xe)KK-*%TLpc>0D&08dC4x@cTD<NY(g*?y)&(
z$O8b2Q6sg#wt{+cv-4vv@-+5_NBvTr6Ex1qad@WizC1F1SdwV9_ihN`8RHq?sk5jC
z#WILtbwaI9L(u>$o1$x%So1Ir(G3_AVQMvQ13un~sP(cEWi$2%5q93E7t{3VJf%K?
zuwSyDke~<K40T94pahUuQl0-LemUU;AvE^<Z_y9Yyr$?J0su3Gy5f{LKemD(&L1%W
zWEvyy)Y1GLmYP8(i-d%GK_O{23yX~H+%H&Rou8u`;RWM|q&*T>7KuB2?*#DV8YzJw
z&}SCDexnUPD!%4|y~7}VzvJ4ch)WT4%sw@ItwoNt(C*RP)h?&~^g##vnhR0!HvIYx
z0td2yz9=>t3JNySl*TszmfH6`Ir;ft@RdWs3}!J88UE|gj_GMQ6$ZYphUL2~4OY7}
zB*33_bjkRf_@l;Y!7MIdb~bVe;-m78Pz|pdy=O*3kjak63UnLt!{^!!Ljg0rJD3a~
z1Q;y5Z^MF<=Hr}rd<hCKOY==|sWDSuzL8iiX7^T&s)i%HRX)g)$n}ULLiX`pwGBZP
z9gmSoR&T(}(1y>oz>yRczx+p3RxxgJE2GX&Si)14B@2t21j4hnnP#U?T3g#+{W+Zb
z5s^@>->~-}4|_*!5pIzMCEp|3+i1XKcfUxW`8|ezAh>y{WiRcjSG*asw6;Ef(k#>V
ztguN?EGkV_mGFdq!n#W)<7E}1#EZN8O$O|}qdoE|7K?F4zo1jL-v}E8v?9qz(d$&2
zMwyK&xlC9rXo_2xw7Qe0caC?o?Pc*-QAOE!+UvRuKjG+;dk|jQhDDBe?`XT7Y5lte
zqSu0t5`;>Wv%|nhj|ZiE^IqA_lZu7OWh!2Y(627zb=r7Ends}wVk7Q5o09a@ojhH7
zU0m&h*8+j4e|OqWyJ&B`V`y=>MVO;K9=hk^6EsmVAGkLT{oUtR{JqSRY{Qi{kKw1k
z6s;0SMPJOLp!som|A`*q3t0wIj-=bG8a#MC)MHcMSQU98Juv$?$CvYX)(n`P^!`5|
zv3q@@|G@6wMqh;d;m4qvdibx2Yjml}vG9mDv&!0ne02M#D`Bo}xIB0VWh8>>WtNZQ
z$&ISlJX;*ORQIO;k62qA{^6P%3!Z=Y1EbmY02{w^yB$`;%!{kur&XTGDiO2cjA)lr
zsY^XZWy^DSAaz;kZ_VG?uWnJR7qdN18$~)>(kOoybY0~QYu9||K#|$Mby{3GduV~N
zk9H7$7=RSo+?CUYF502`b76ytBy}sFak&|HIwRvB=0D|S`c#QCJ<t@a2hh9FA+>Pq
zP)uOWI)#(n&{6|C4A^G~%B~BY21aOMoz9RuuM`Ip%oBz+NoAlb7?#`E^}7xXo!4S?
zFg8I~G%!@nXi8&aJSGFcZAxQf;0m}942=i#p-&teLvE{AKm7Sl2f}Io?!IqbC|J;h
z`=5LFOnU5?^w~SV@YwNZx$k_(kLNxZ<T-w9G;`)wdHJoGV2amO-<vG?pZ@XJ#Uo$J
zb+q{_L}lvg?U~@|P1*dSegkN;ajNUGhmyA=S^CQ6@p}9uJKGF3&96BmwaXxSvK>DE
z3cf08^-rIT_>A$}B%IJBPcN^)4;90BQtiEi!gT#+EqyAUZ|}*b_}R>SGloq&6?opL
zuT_+lwQMgg6!Cso$BwUA;k-1NcrzyE>(_X$B0HocjY~=Pk~Q08+N}(|%HjO_i+*=o
z%G6C6A30Ch<0UlG;Zdj@ed!rfUY_i9mYwK8(aYuzcUzlTJ1yPz|Bb-9b33A9zRh<?
zEh+^J@0OOsX>Gl>Ny-Q<wjX~nWiOR}_^4D)POdKUaI)X<DM%#y>#JAq-+qtI@B@&w
z$;PJbyiW=!py@g2hAi0)U1v=;avka`gd@8LC4=BEbNqL&K^UAQ5%r95#x%<j2Twi<
zWI28Jof9kY(Ikv>^qRB%KLaqMnG|6xKAm}sx!Q<xJn;TKhAi-lV_zy<;)6u(yxe`r
zG8s+nu+7X=I2SJx?KI|R<|o>wo}J=2C;NROi$mfADui4)y(3wVA3k~{j^_5%H)C6K
zlYAm1eY**HZOj($)xfKIQFtIVw<YDEZ~5huBx;6h(9UoYDe-u{#QQBex`xo0d_SF-
zZ{zr8r-x@oa=@P7G8Gz%Q<2A7_lyD&aeZ-!inR%aZ-5;iEO&XuPoZbZ6OcnjG1hFD
z=btAA?MyXPGxhQ_`_b@us-{heIodKJbCj6!H57FlM3sv+z|<{D?1@zfhGGSCy3ZI2
zt4}F|%ocaJQVlIK<}Wp7+&rp6QOq<JYmAuckgc6Zxd{^=DJ9>$4&yvz9>(Crs>Gh{
zya6-FG7Dgi92#K)64=9Csj5?Zqe~_9TwSI!2quAwa1w-*uC5!}xY`?tltb0Hq740<
zsq2QelPveZ4chr$=~U3!+c&>xyfvA1`)owOqj=i4wjY=A1577Gwg&Ko7;?il9r|_*
z8P&IDV_g2D{in5OLFxsO!kx3AhO$5aKeoM|!q|VokqMlYM@HtsRuMtBY%I35#5$+G
zpp|JOeoj^U=95HLemB04Yqv{a8X<^K9G2`&ShM_6&Bi1n?o?@MXsDj9Z*A3>#XK%J
zRc*&SlFl>l)9DyRQ{*%Z+^e1XpH?0@vhpXrnPPU*d%vOhKkimm-u<I9o!2{*RVUW0
zkpjTAF;dx9>3c%Q^v3RKp9kx@A2dS?QfS=iigGr7m><)YkV=%LA5h@Uj@9=~ABPMJ
z1UE;F&;Ttg5Kc^Qy!1SuvbNEqdgu3*l`=>s5_}dUv$B%BJbMiWrrMm7OXOdi=GOmh
zZBvXXK7VqO&zojI2Om9};zCB5i|<210I{iwiGznGCx=FT89=Ef)5!lB1cZ6lbz<Vs
z!O6)(KPRgm>gDn07*he}G&w7m!;|E(L-?+<?McI~@TA!vj4RjYnCoT*FH)-pRq74Q
z67E9_umMJOIut_@Dx-Z2hEzHqy0(3L!ra}x0phZ^)OD)P*BAJetYupvu9iOfKMRY*
z59R&ZxVR$6O$s<?dV};ZTu5t!)CO9!I>cz@0<9Z<nFBx*sw*AzBdboG>I~LqYQE<f
zdA084i)nAbA%sHr3I6f)x0A6_C#f|)+7km{+VWc=8p6a>7>HnPA436}oeN2Y(VfG6
zxNZuMK3Crm^Z_AFeHc~CVRrSl0W^?+Gbteu1g8NGYa3(8f*P{(ZT>%!jtSl6WbYVv
zmE(37t0C8vJ6O-5+o*lL9XRcFbd~GSBGbGh3~R!67g&l)7n!kJlWd)~TUy<jO~Zhv
z@xvBaLkBZ#>Xus#!&G6sR%(l(h1$xyrR5j_jM1zj#giA&@(Xl26@n<9>folx!92bQ
z24h<Dc4e3SQJcr^RE3|QaY*5jX?vj3>570+<)4!$!IQ(5yOU|4_E6aN@4v0+{Kx~Z
z;q7fp%0cHziuI%!kB~w}g9@V+1wDz0wFlzX2UOvOy|&;e;t!lAR8tV2KQHgtfk8Uf
zw;rs!(4JPODERk4ckd5I2Vq|0rd@@Mwd8MID%0^fITjYIQom^q;qhP8@|eJx{?5xX
zc1@Fj*kDknlk{c-rnCloQ3hGh7OU+@e<M~mcEvZ$(y*X$K0x5}s~CQD$(YxML3psk
zFM|TBc-aWBLjK@0qr{-u^ogBxgUZ2q9fo2sjGh*5M_>fO3>fkRMcM>J?AeVP<Ux|u
zIt<28*boJGNgvZU&+HIxSJU@0MMOMk7(|dJT9}B#3C^H5%`@R9`pq2cDNIDmG&|fk
z=;qP1KP0X0%WFW{10wdnB1|TJr}_3V9m=|9t1&c+%CUUz+SxZxbB`X)efq{sF+1tq
zKf-%4B#;+_1Fv@}nSe1EebC@A=zceZ+9L=HMG!TLs$d<`aVBpK$8UGu%?r!ZUz3ID
zw2G?KI8ia%8jnZwySwx2`P0dY`Re&F893$F0%*A8SHESTm@B%nT<YZ$)QN^ti`2>&
zlfzX%cdp=N+4S#E*%^=BQ+N`A7C}|k%$|QUn0yI6S3$MS-NjO!4hm55uyju)Q6e!}
z*OVO@A#-mfC9Pha6ng((Xl^V7{d+&u+yx)_B1{~t7d5e8L^i4J>;x<7@5;+l7-Gge
zf#9diXJ$&v^rbN5V(ee%q0xBMEgS6%qZm7hNUP%G;^J44I!BmI@M*+FWz0!+s;+iQ
zU4CuI+27bvNK8v>?7PZnVxB=heJ&_ymE0nN^W#-rqB%+JXkYGDuRw>JM_LdtLkiq*
z6%%3&^BX$jnM@2bjiGc-DymKly)wVkA-pq;jSWL#7_*moZZ4I|-N}o8SK?sIv)p|c
zu~9-B%tMc=!)YMFp*SiC0>kfnH8+X5>;+FFVN{~a9YVdIg1uGkZ~kegFy{^PU(4{(
z`CbY`XmVA3esai686Yw8djCEyF7`bfB^F1)nwv+AqYLZ&Zy=eFhYT2uMd@{sP_qS4
zbJ&>PxajjZt?&c<1^!T|pLHfX=E^FJ>-l_XCZzvRV%x}@u(FtF(mS+Umw<d2c`9Rr
zR+?yr(!A0r|CD~t7GFV?aaA(6z5nz_Nm0i$V6I-ucK$u?K&%hkODCkY(1+;DS|bQF
zb4mg|54xl}b6Ewc=m`{a+NEN`d1?%=>$e+IA74e>gCdTqi;6&=euAIpxd=Y3I5xWR
zBhGoT+T`V1@91OlQ}2YO*~P4ukd*TBBdt?Plt)_ou6Y@Db`ss+Q~A-48s>?eaJYA2
zRGOa8^~Em}EFTmKIVVbMb|ob)hJJ7ITg>yHAn2i|{2ZJU!cwt9YNDT0=*WO7Bq#Xj
zg@FjEaKoolrF8%c;49|`IT&25?O$dq<?{UbIQ0;9Tr9TA6pzz%=H>8kp3#la9&6aH
z6G|{>^C(>yP7#Dr$aeFyS0Ai_$ILhL43#*mgEl(c*4?Ae;tRL&S7Vc}Szl>B`mBuI
zB9Y%xp%CZwlH!3V(`6W4-ZuETssvI&B~_O;CbULfl)X1V%(H7VSPf`_Ka9ak@8A=z
z1l|B1QKT}NLI`WVTRd;2En5u{0CRqy9PTi$ja^inu){LJ&E&6W%JJPw#&PaTxpt?k
zpC~gjN*22Q8tpGHR|tg~ye#9a8N<%odhZJnk7Oh=(PKfhYfzLAxdE36r<6<oD}e5;
zMPsE4+rk0d2jE*#p84SO^!fW~`j-|(WExf+!}WMlI2oGcLeMqZ%ofC97d<+nflE=C
zww(j#(;Qr&ut3IEyIwm>a?A;rO&ELp_Y?8Pdw(PT^Fxn!eG_|LEbSYoBrsBA|6Fgr
zt5LntyusI{Q2fdy=>ditS;}^B;I2MD4=(>7fWt0Jp~y=?VvfvzHvQhj6dyIef46J$
zl4Xu7U9v_NJV?uBBC0!kcTS0UcrV7+<p(Ba=Bk7*SXvlcpQJatnzmyl-^GA6y=0YH
zU!Qp*(5v5`qcU7GH`fZ53mR)&#Os~1d`1FKAc~R?v^F@3sPXWHk(`{v@BF<NgpL1h
zOYj$ZQX-EI8H4?Ypq8IMFE`LLGMYNju;D(Aux0jFNCc@>@~is?Fi+jrr@l3XwD|uG
zr26jUWiv>Ju48Y<K5Q0UFt#$Wh-3Y^huuiZIhuP~4SRD>^#qn7r9mwIH-<mOw=)2D
z<iCzV917q@YTEy}IJiO<?It)?BnA;jg`vU#wb|e4BpbC^HJE}Jh7S%#;t@=RHEzf3
zve@!5mXtmM3~}?iGNYp|t2UDZWtZs+?hWj`+Vz*5E0~r*FRY^QnYC-}Vte5CD38TA
z2heFf8>Pv6Y|V|V-GZ&+&gQ?S?-`&ts{@5GXPqbmyZjUACC&oVXfNwUX0}ba(v978
zp8z!v9~8Zx8qB<QXT5I&+92wF0pO{dS4(N<h_+P+tKZn8-IlF)tWr~gMeIiH-&7y0
zvL&hwU_I>@7>oFPDm^iR@+yw`79YF)w^OHB_N;&&x7c3l^3!)IY#)}x)@D(iNC8F$
zx%uPzj3^XYQ~vaXQ_GA?kGJMA-q_;pS6#JcnV+|?H`ki8UM3IyaP&Y_Cob&3B{Pk)
zm4w3$nw_t--`?`O5&1RGdSO&%Hqq;;K{ebNOqKIk%%SGD!F=%uOt^n7pXHX$w+HIP
z8dL)o*Jpb{DXQ+Ru13)nl`bL_X#5zH`D&t|K|2sG@Zx^L{-A|#-X*Z;4E;wV8qs|w
zT>={3*S=%iU=KsPXh=DDZcc``Ss>057i{pdW8M@4q+Ba@Tt%OytH!4>rbIbQw^-pR
zGGYNPzw@n=PV@)b7yVbFr;glF*Qq3>F9oBN5PUXt!?2mdGcpv^o1?Thp`jP10G2Yi
z(c93td3F3SW!Le5DUwdub!aDKoVLU6g!O?Ret21l$qOC;kdd@L#M&baVu&JZGt&<6
z!VCkvgRaav6QDW2x}tUy4~Y5(B+#Ej-8vM?DM-1?J_*&PntI3E96M!`WL#<&Z5n2u
z<QPxSVI}f8nvsYEV@sQO)6fswrNtp@sU=8(-b8Mb5P$r8S==I%7kh4B)_n@!DLI2Z
z4PP(&9*0`aDCzk=7Hs;qt@l};2A|ee_lp|_XHg@k->o`P!~vBT$YOT~gU9#PB)%JZ
zcd_u<u8SkTyW@XV6qrAJ#qjS(2-MC6glNGYe|r3T`ER-;ck$QHoSn3~1RN=RR%nUZ
zKf8<#6k1k~H@+pG{73t5FQeCnhxF-1&my@?)3Sx2>=m^LYzC!pH#W`yA1!(fA;D~b
zG#73@l)NNd;n#XrKXZEfab;@kQRnOFU2Th-1m<4mJzlj9<frYer6HiQx@?8?NJ2Do
zObcl_ecl~1qF&eiOVBk0#ZN-|Dd_D_4Xx*PUVf?)>b3pv-GF$elX7ib9!uILM_$ke
zHIGB*&=5=;ynQA{y7H93%i^d)T}y@(p>8vVhJ4L)M{0Q*@D^+SPp`EW+G6E%+`Z;u
zS3goV@Dic7vc5`?!pCN4<JvL_48+Q8LQ@>4Ts@*{)zwy)9?B||AM{zKlN4T}qQRL2
zgv+{K8bv7w)#xge16;kI1fU87!W4pX)N&|cq8&i^1r`W|Hg4366r(?-ecEJ9u&Eaw
zrhyikXQB>C9d>cpPGiu=VU3Z-u4|0V_iap!_J3o+K_R5EXk@sfu~zHwwYkpncVh!R
zqNe7Cmf_|Wmeq4#(mIO&(wCK@b4(x0?W1Qtk(`$?+$uCJCGZm_%k?l32vuShgDFMa
ztc`{$8DhB9)&?~(m&EUc=LzI1=qo#zjy#2{hLT_*aj<618qQ7mD#k2ZFGou&69;=2
z1j7=Su8k}{L*h&mfs7jg^PN&9C1Z@U!p6gXk&-7xM~{X<iLOVw!aav*!V=`4l#Z}C
z96Cuv>`nqH#aGO`;Xy_zbz^rYacIq0AH%4!Oh93TzJ820%ur)8OyeS@K?sF1V(iFO
z37Nnqj1z#1{|v7=_CX`lQA|$<1gtuNMHGNJYp1D_k;WQk-b+T6VmUK(x=bWviOZ~T
z|4e%SpuaWLWD?qN2%`S*`P;BQBw(B__wTD6epvGdJ+>DBq2oV<pcqb&6wR<4FA$2v
z5~)nCP^#1#txj(+n#>lf&F*lz+#avb4<LeKI6+c0!*aYJO0uGAzkT?h&<)eF9oO@N
zFp85j%ZswAo3`tRahjKP+mG|QpZEJg2u4s0CrFBBSdJG&Nmf)%H%!ZRT+a`}C{EHW
zFUqQJ+O8kQX<pWCKhEoZ-tYH^5fsA-lA;-w;{{QY6;;y>)3P1c^Mf#olQheVvZ|Z5
z>xXfgmv!5Z^SYn+_x}K5B%G^sRwiez&z9|f!E!#oJlT2k<v)*-8Izce`)2-oo#(W-
zoudGWwGo@1CGNHF$IO1;TKoQC#d=r1zr6R{_1!X`9kp|Iknh0E@*R+w*=1K9s{o0$
zk>COV0000$L_|bHBqAarB4TD{W@grX1CUr72@caw0faEd7-K|4L_|cawbojjHdpd6
zI6~Iv5J?-Q4*&oF000000FV;^004t70Z6Qk1Xl<E0000001Beth!e-qIiLWEb%ZLV
zlu{~6UVVTb6vR4Bl(ZyCk|ase4n~5DnVFfHdC{Mq``+`wUsuh>{X9oJ{sRC2(cs?-
new file mode 100644
--- /dev/null
+++ b/strophe.js
@@ -0,0 +1,6101 @@
+(function webpackUniversalModuleDefinition(root, factory) {
+	if(typeof exports === 'object' && typeof module === 'object')
+		module.exports = factory();
+	else if(typeof define === 'function' && define.amd)
+		define([], factory);
+	else if(typeof exports === 'object')
+		exports["strophe"] = factory();
+	else
+		root["strophe"] = factory();
+})(window, function() {
+return /******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+/******/
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+/******/
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId]) {
+/******/ 			return installedModules[moduleId].exports;
+/******/ 		}
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			i: moduleId,
+/******/ 			l: false,
+/******/ 			exports: {}
+/******/ 		};
+/******/
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ 		// Flag the module as loaded
+/******/ 		module.l = true;
+/******/
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+/******/
+/******/
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+/******/
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+/******/
+/******/ 	// define getter function for harmony exports
+/******/ 	__webpack_require__.d = function(exports, name, getter) {
+/******/ 		if(!__webpack_require__.o(exports, name)) {
+/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ 		}
+/******/ 	};
+/******/
+/******/ 	// define __esModule on exports
+/******/ 	__webpack_require__.r = function(exports) {
+/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ 		}
+/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
+/******/ 	};
+/******/
+/******/ 	// create a fake namespace object
+/******/ 	// mode & 1: value is a module id, require it
+/******/ 	// mode & 2: merge all properties of value into the ns
+/******/ 	// mode & 4: return value when already ns object
+/******/ 	// mode & 8|1: behave like require
+/******/ 	__webpack_require__.t = function(value, mode) {
+/******/ 		if(mode & 1) value = __webpack_require__(value);
+/******/ 		if(mode & 8) return value;
+/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ 		var ns = Object.create(null);
+/******/ 		__webpack_require__.r(ns);
+/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ 		return ns;
+/******/ 	};
+/******/
+/******/ 	// getDefaultExport function for compatibility with non-harmony modules
+/******/ 	__webpack_require__.n = function(module) {
+/******/ 		var getter = module && module.__esModule ?
+/******/ 			function getDefault() { return module['default']; } :
+/******/ 			function getModuleExports() { return module; };
+/******/ 		__webpack_require__.d(getter, 'a', getter);
+/******/ 		return getter;
+/******/ 	};
+/******/
+/******/ 	// Object.prototype.hasOwnProperty.call
+/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "";
+/******/
+/******/
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(__webpack_require__.s = "./src/strophe.js");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./node_modules/webpack/buildin/global.js":
+/*!***********************************!*\
+  !*** (webpack)/buildin/global.js ***!
+  \***********************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+var g;
+
+// This works in non-strict mode
+g = (function() {
+	return this;
+})();
+
+try {
+	// This works if eval is allowed (see CSP)
+	g = g || Function("return this")() || (1, eval)("this");
+} catch (e) {
+	// This works if the window reference is available
+	if (typeof window === "object") g = window;
+}
+
+// g can still be undefined, but nothing to do about it...
+// We return undefined, instead of nothing here, so it's
+// easier to handle this case. if(!global) { ...}
+
+module.exports = g;
+
+
+/***/ }),
+
+/***/ "./src/bosh.js":
+/*!*********************!*\
+  !*** ./src/bosh.js ***!
+  \*********************/
+/*! no exports provided */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core */ "./src/core.js");
+/*
+    This program is distributed under the terms of the MIT license.
+    Please see the LICENSE file for details.
+
+    Copyright 2006-2008, OGG, LLC
+*/
+
+/* global window, setTimeout, clearTimeout, XMLHttpRequest, ActiveXObject */
+
+var Strophe = core__WEBPACK_IMPORTED_MODULE_0__["default"].Strophe;
+var $build = core__WEBPACK_IMPORTED_MODULE_0__["default"].$build;
+/** PrivateClass: Strophe.Request
+ *  _Private_ helper class that provides a cross implementation abstraction
+ *  for a BOSH related XMLHttpRequest.
+ *
+ *  The Strophe.Request class is used internally to encapsulate BOSH request
+ *  information.  It is not meant to be used from user's code.
+ */
+
+/** PrivateConstructor: Strophe.Request
+ *  Create and initialize a new Strophe.Request object.
+ *
+ *  Parameters:
+ *    (XMLElement) elem - The XML data to be sent in the request.
+ *    (Function) func - The function that will be called when the
+ *      XMLHttpRequest readyState changes.
+ *    (Integer) rid - The BOSH rid attribute associated with this request.
+ *    (Integer) sends - The number of times this same request has been sent.
+ */
+
+Strophe.Request = function (elem, func, rid, sends) {
+  this.id = ++Strophe._requestId;
+  this.xmlData = elem;
+  this.data = Strophe.serialize(elem); // save original function in case we need to make a new request
+  // from this one.
+
+  this.origFunc = func;
+  this.func = func;
+  this.rid = rid;
+  this.date = NaN;
+  this.sends = sends || 0;
+  this.abort = false;
+  this.dead = null;
+
+  this.age = function () {
+    if (!this.date) {
+      return 0;
+    }
+
+    var now = new Date();
+    return (now - this.date) / 1000;
+  };
+
+  this.timeDead = function () {
+    if (!this.dead) {
+      return 0;
+    }
+
+    var now = new Date();
+    return (now - this.dead) / 1000;
+  };
+
+  this.xhr = this._newXHR();
+};
+
+Strophe.Request.prototype = {
+  /** PrivateFunction: getResponse
+   *  Get a response from the underlying XMLHttpRequest.
+   *
+   *  This function attempts to get a response from the request and checks
+   *  for errors.
+   *
+   *  Throws:
+   *    "parsererror" - A parser error occured.
+   *    "bad-format" - The entity has sent XML that cannot be processed.
+   *
+   *  Returns:
+   *    The DOM element tree of the response.
+   */
+  getResponse: function getResponse() {
+    var node = null;
+
+    if (this.xhr.responseXML && this.xhr.responseXML.documentElement) {
+      node = this.xhr.responseXML.documentElement;
+
+      if (node.tagName === "parsererror") {
+        Strophe.error("invalid response received");
+        Strophe.error("responseText: " + this.xhr.responseText);
+        Strophe.error("responseXML: " + Strophe.serialize(this.xhr.responseXML));
+        throw new Error("parsererror");
+      }
+    } else if (this.xhr.responseText) {
+      // In React Native, we may get responseText but no responseXML.  We can try to parse it manually.
+      Strophe.debug("Got responseText but no responseXML; attempting to parse it with DOMParser...");
+      node = new DOMParser().parseFromString(this.xhr.responseText, 'application/xml').documentElement;
+
+      if (!node) {
+        throw new Error('Parsing produced null node');
+      } else if (node.querySelector('parsererror')) {
+        Strophe.error("invalid response received: " + node.querySelector('parsererror').textContent);
+        Strophe.error("responseText: " + this.xhr.responseText);
+        var error = new Error();
+        error.name = Strophe.ErrorCondition.BAD_FORMAT;
+        throw error;
+      }
+    }
+
+    return node;
+  },
+
+  /** PrivateFunction: _newXHR
+   *  _Private_ helper function to create XMLHttpRequests.
+   *
+   *  This function creates XMLHttpRequests across all implementations.
+   *
+   *  Returns:
+   *    A new XMLHttpRequest.
+   */
+  _newXHR: function _newXHR() {
+    var xhr = null;
+
+    if (window.XMLHttpRequest) {
+      xhr = new XMLHttpRequest();
+
+      if (xhr.overrideMimeType) {
+        xhr.overrideMimeType("text/xml; charset=utf-8");
+      }
+    } else if (window.ActiveXObject) {
+      xhr = new ActiveXObject("Microsoft.XMLHTTP");
+    } // use Function.bind() to prepend ourselves as an argument
+
+
+    xhr.onreadystatechange = this.func.bind(null, this);
+    return xhr;
+  }
+};
+/** Class: Strophe.Bosh
+ *  _Private_ helper class that handles BOSH Connections
+ *
+ *  The Strophe.Bosh class is used internally by Strophe.Connection
+ *  to encapsulate BOSH sessions. It is not meant to be used from user's code.
+ */
+
+/** File: bosh.js
+ *  A JavaScript library to enable BOSH in Strophejs.
+ *
+ *  this library uses Bidirectional-streams Over Synchronous HTTP (BOSH)
+ *  to emulate a persistent, stateful, two-way connection to an XMPP server.
+ *  More information on BOSH can be found in XEP 124.
+ */
+
+/** PrivateConstructor: Strophe.Bosh
+ *  Create and initialize a Strophe.Bosh object.
+ *
+ *  Parameters:
+ *    (Strophe.Connection) connection - The Strophe.Connection that will use BOSH.
+ *
+ *  Returns:
+ *    A new Strophe.Bosh object.
+ */
+
+Strophe.Bosh = function (connection) {
+  this._conn = connection;
+  /* request id for body tags */
+
+  this.rid = Math.floor(Math.random() * 4294967295);
+  /* The current session ID. */
+
+  this.sid = null; // default BOSH values
+
+  this.hold = 1;
+  this.wait = 60;
+  this.window = 5;
+  this.errors = 0;
+  this.inactivity = null;
+  this.lastResponseHeaders = null;
+  this._requests = [];
+};
+
+Strophe.Bosh.prototype = {
+  /** Variable: strip
+   *
+   *  BOSH-Connections will have all stanzas wrapped in a <body> tag when
+   *  passed to <Strophe.Connection.xmlInput> or <Strophe.Connection.xmlOutput>.
+   *  To strip this tag, User code can set <Strophe.Bosh.strip> to "body":
+   *
+   *  > Strophe.Bosh.prototype.strip = "body";
+   *
+   *  This will enable stripping of the body tag in both
+   *  <Strophe.Connection.xmlInput> and <Strophe.Connection.xmlOutput>.
+   */
+  strip: null,
+
+  /** PrivateFunction: _buildBody
+   *  _Private_ helper function to generate the <body/> wrapper for BOSH.
+   *
+   *  Returns:
+   *    A Strophe.Builder with a <body/> element.
+   */
+  _buildBody: function _buildBody() {
+    var bodyWrap = $build('body', {
+      'rid': this.rid++,
+      'xmlns': Strophe.NS.HTTPBIND
+    });
+
+    if (this.sid !== null) {
+      bodyWrap.attrs({
+        'sid': this.sid
+      });
+    }
+
+    if (this._conn.options.keepalive && this._conn._sessionCachingSupported()) {
+      this._cacheSession();
+    }
+
+    return bodyWrap;
+  },
+
+  /** PrivateFunction: _reset
+   *  Reset the connection.
+   *
+   *  This function is called by the reset function of the Strophe Connection
+   */
+  _reset: function _reset() {
+    this.rid = Math.floor(Math.random() * 4294967295);
+    this.sid = null;
+    this.errors = 0;
+
+    if (this._conn._sessionCachingSupported()) {
+      window.sessionStorage.removeItem('strophe-bosh-session');
+    }
+
+    this._conn.nextValidRid(this.rid);
+  },
+
+  /** PrivateFunction: _connect
+   *  _Private_ function that initializes the BOSH connection.
+   *
+   *  Creates and sends the Request that initializes the BOSH connection.
+   */
+  _connect: function _connect(wait, hold, route) {
+    this.wait = wait || this.wait;
+    this.hold = hold || this.hold;
+    this.errors = 0;
+
+    var body = this._buildBody().attrs({
+      "to": this._conn.domain,
+      "xml:lang": "en",
+      "wait": this.wait,
+      "hold": this.hold,
+      "content": "text/xml; charset=utf-8",
+      "ver": "1.6",
+      "xmpp:version": "1.0",
+      "xmlns:xmpp": Strophe.NS.BOSH
+    });
+
+    if (route) {
+      body.attrs({
+        'route': route
+      });
+    }
+
+    var _connect_cb = this._conn._connect_cb;
+
+    this._requests.push(new Strophe.Request(body.tree(), this._onRequestStateChange.bind(this, _connect_cb.bind(this._conn)), body.tree().getAttribute("rid")));
+
+    this._throttledRequestHandler();
+  },
+
+  /** PrivateFunction: _attach
+   *  Attach to an already created and authenticated BOSH session.
+   *
+   *  This function is provided to allow Strophe to attach to BOSH
+   *  sessions which have been created externally, perhaps by a Web
+   *  application.  This is often used to support auto-login type features
+   *  without putting user credentials into the page.
+   *
+   *  Parameters:
+   *    (String) jid - The full JID that is bound by the session.
+   *    (String) sid - The SID of the BOSH session.
+   *    (String) rid - The current RID of the BOSH session.  This RID
+   *      will be used by the next request.
+   *    (Function) callback The connect callback function.
+   *    (Integer) wait - The optional HTTPBIND wait value.  This is the
+   *      time the server will wait before returning an empty result for
+   *      a request.  The default setting of 60 seconds is recommended.
+   *      Other settings will require tweaks to the Strophe.TIMEOUT value.
+   *    (Integer) hold - The optional HTTPBIND hold value.  This is the
+   *      number of connections the server will hold at one time.  This
+   *      should almost always be set to 1 (the default).
+   *    (Integer) wind - The optional HTTBIND window value.  This is the
+   *      allowed range of request ids that are valid.  The default is 5.
+   */
+  _attach: function _attach(jid, sid, rid, callback, wait, hold, wind) {
+    this._conn.jid = jid;
+    this.sid = sid;
+    this.rid = rid;
+    this._conn.connect_callback = callback;
+    this._conn.domain = Strophe.getDomainFromJid(this._conn.jid);
+    this._conn.authenticated = true;
+    this._conn.connected = true;
+    this.wait = wait || this.wait;
+    this.hold = hold || this.hold;
+    this.window = wind || this.window;
+
+    this._conn._changeConnectStatus(Strophe.Status.ATTACHED, null);
+  },
+
+  /** PrivateFunction: _restore
+   *  Attempt to restore a cached BOSH session
+   *
+   *  Parameters:
+   *    (String) jid - The full JID that is bound by the session.
+   *      This parameter is optional but recommended, specifically in cases
+   *      where prebinded BOSH sessions are used where it's important to know
+   *      that the right session is being restored.
+   *    (Function) callback The connect callback function.
+   *    (Integer) wait - The optional HTTPBIND wait value.  This is the
+   *      time the server will wait before returning an empty result for
+   *      a request.  The default setting of 60 seconds is recommended.
+   *      Other settings will require tweaks to the Strophe.TIMEOUT value.
+   *    (Integer) hold - The optional HTTPBIND hold value.  This is the
+   *      number of connections the server will hold at one time.  This
+   *      should almost always be set to 1 (the default).
+   *    (Integer) wind - The optional HTTBIND window value.  This is the
+   *      allowed range of request ids that are valid.  The default is 5.
+   */
+  _restore: function _restore(jid, callback, wait, hold, wind) {
+    var session = JSON.parse(window.sessionStorage.getItem('strophe-bosh-session'));
+
+    if (typeof session !== "undefined" && session !== null && session.rid && session.sid && session.jid && (typeof jid === "undefined" || jid === null || Strophe.getBareJidFromJid(session.jid) === Strophe.getBareJidFromJid(jid) || // If authcid is null, then it's an anonymous login, so
+    // we compare only the domains:
+    Strophe.getNodeFromJid(jid) === null && Strophe.getDomainFromJid(session.jid) === jid)) {
+      this._conn.restored = true;
+
+      this._attach(session.jid, session.sid, session.rid, callback, wait, hold, wind);
+    } else {
+      var error = new Error("_restore: no restoreable session.");
+      error.name = "StropheSessionError";
+      throw error;
+    }
+  },
+
+  /** PrivateFunction: _cacheSession
+   *  _Private_ handler for the beforeunload event.
+   *
+   *  This handler is used to process the Bosh-part of the initial request.
+   *  Parameters:
+   *    (Strophe.Request) bodyWrap - The received stanza.
+   */
+  _cacheSession: function _cacheSession() {
+    if (this._conn.authenticated) {
+      if (this._conn.jid && this.rid && this.sid) {
+        window.sessionStorage.setItem('strophe-bosh-session', JSON.stringify({
+          'jid': this._conn.jid,
+          'rid': this.rid,
+          'sid': this.sid
+        }));
+      }
+    } else {
+      window.sessionStorage.removeItem('strophe-bosh-session');
+    }
+  },
+
+  /** PrivateFunction: _connect_cb
+   *  _Private_ handler for initial connection request.
+   *
+   *  This handler is used to process the Bosh-part of the initial request.
+   *  Parameters:
+   *    (Strophe.Request) bodyWrap - The received stanza.
+   */
+  _connect_cb: function _connect_cb(bodyWrap) {
+    var typ = bodyWrap.getAttribute("type");
+
+    if (typ !== null && typ === "terminate") {
+      // an error occurred
+      var cond = bodyWrap.getAttribute("condition");
+      Strophe.error("BOSH-Connection failed: " + cond);
+      var conflict = bodyWrap.getElementsByTagName("conflict");
+
+      if (cond !== null) {
+        if (cond === "remote-stream-error" && conflict.length > 0) {
+          cond = "conflict";
+        }
+
+        this._conn._changeConnectStatus(Strophe.Status.CONNFAIL, cond);
+      } else {
+        this._conn._changeConnectStatus(Strophe.Status.CONNFAIL, "unknown");
+      }
+
+      this._conn._doDisconnect(cond);
+
+      return Strophe.Status.CONNFAIL;
+    } // check to make sure we don't overwrite these if _connect_cb is
+    // called multiple times in the case of missing stream:features
+
+
+    if (!this.sid) {
+      this.sid = bodyWrap.getAttribute("sid");
+    }
+
+    var wind = bodyWrap.getAttribute('requests');
+
+    if (wind) {
+      this.window = parseInt(wind, 10);
+    }
+
+    var hold = bodyWrap.getAttribute('hold');
+
+    if (hold) {
+      this.hold = parseInt(hold, 10);
+    }
+
+    var wait = bodyWrap.getAttribute('wait');
+
+    if (wait) {
+      this.wait = parseInt(wait, 10);
+    }
+
+    var inactivity = bodyWrap.getAttribute('inactivity');
+
+    if (inactivity) {
+      this.inactivity = parseInt(inactivity, 10);
+    }
+  },
+
+  /** PrivateFunction: _disconnect
+   *  _Private_ part of Connection.disconnect for Bosh
+   *
+   *  Parameters:
+   *    (Request) pres - This stanza will be sent before disconnecting.
+   */
+  _disconnect: function _disconnect(pres) {
+    this._sendTerminate(pres);
+  },
+
+  /** PrivateFunction: _doDisconnect
+   *  _Private_ function to disconnect.
+   *
+   *  Resets the SID and RID.
+   */
+  _doDisconnect: function _doDisconnect() {
+    this.sid = null;
+    this.rid = Math.floor(Math.random() * 4294967295);
+
+    if (this._conn._sessionCachingSupported()) {
+      window.sessionStorage.removeItem('strophe-bosh-session');
+    }
+
+    this._conn.nextValidRid(this.rid);
+  },
+
+  /** PrivateFunction: _emptyQueue
+   * _Private_ function to check if the Request queue is empty.
+   *
+   *  Returns:
+   *    True, if there are no Requests queued, False otherwise.
+   */
+  _emptyQueue: function _emptyQueue() {
+    return this._requests.length === 0;
+  },
+
+  /** PrivateFunction: _callProtocolErrorHandlers
+   *  _Private_ function to call error handlers registered for HTTP errors.
+   *
+   *  Parameters:
+   *    (Strophe.Request) req - The request that is changing readyState.
+   */
+  _callProtocolErrorHandlers: function _callProtocolErrorHandlers(req) {
+    var reqStatus = this._getRequestStatus(req);
+
+    var err_callback = this._conn.protocolErrorHandlers.HTTP[reqStatus];
+
+    if (err_callback) {
+      err_callback.call(this, reqStatus);
+    }
+  },
+
+  /** PrivateFunction: _hitError
+   *  _Private_ function to handle the error count.
+   *
+   *  Requests are resent automatically until their error count reaches
+   *  5.  Each time an error is encountered, this function is called to
+   *  increment the count and disconnect if the count is too high.
+   *
+   *  Parameters:
+   *    (Integer) reqStatus - The request status.
+   */
+  _hitError: function _hitError(reqStatus) {
+    this.errors++;
+    Strophe.warn("request errored, status: " + reqStatus + ", number of errors: " + this.errors);
+
+    if (this.errors > 4) {
+      this._conn._onDisconnectTimeout();
+    }
+  },
+
+  /** PrivateFunction: _no_auth_received
+   *
+   * Called on stream start/restart when no stream:features
+   * has been received and sends a blank poll request.
+   */
+  _no_auth_received: function _no_auth_received(callback) {
+    Strophe.warn("Server did not yet offer a supported authentication " + "mechanism. Sending a blank poll request.");
+
+    if (callback) {
+      callback = callback.bind(this._conn);
+    } else {
+      callback = this._conn._connect_cb.bind(this._conn);
+    }
+
+    var body = this._buildBody();
+
+    this._requests.push(new Strophe.Request(body.tree(), this._onRequestStateChange.bind(this, callback), body.tree().getAttribute("rid")));
+
+    this._throttledRequestHandler();
+  },
+
+  /** PrivateFunction: _onDisconnectTimeout
+   *  _Private_ timeout handler for handling non-graceful disconnection.
+   *
+   *  Cancels all remaining Requests and clears the queue.
+   */
+  _onDisconnectTimeout: function _onDisconnectTimeout() {
+    this._abortAllRequests();
+  },
+
+  /** PrivateFunction: _abortAllRequests
+   *  _Private_ helper function that makes sure all pending requests are aborted.
+   */
+  _abortAllRequests: function _abortAllRequests() {
+    while (this._requests.length > 0) {
+      var req = this._requests.pop();
+
+      req.abort = true;
+      req.xhr.abort(); // jslint complains, but this is fine. setting to empty func
+      // is necessary for IE6
+
+      req.xhr.onreadystatechange = function () {}; // jshint ignore:line
+
+    }
+  },
+
+  /** PrivateFunction: _onIdle
+   *  _Private_ handler called by Strophe.Connection._onIdle
+   *
+   *  Sends all queued Requests or polls with empty Request if there are none.
+   */
+  _onIdle: function _onIdle() {
+    var data = this._conn._data; // if no requests are in progress, poll
+
+    if (this._conn.authenticated && this._requests.length === 0 && data.length === 0 && !this._conn.disconnecting) {
+      Strophe.info("no requests during idle cycle, sending " + "blank request");
+      data.push(null);
+    }
+
+    if (this._conn.paused) {
+      return;
+    }
+
+    if (this._requests.length < 2 && data.length > 0) {
+      var body = this._buildBody();
+
+      for (var i = 0; i < data.length; i++) {
+        if (data[i] !== null) {
+          if (data[i] === "restart") {
+            body.attrs({
+              "to": this._conn.domain,
+              "xml:lang": "en",
+              "xmpp:restart": "true",
+              "xmlns:xmpp": Strophe.NS.BOSH
+            });
+          } else {
+            body.cnode(data[i]).up();
+          }
+        }
+      }
+
+      delete this._conn._data;
+      this._conn._data = [];
+
+      this._requests.push(new Strophe.Request(body.tree(), this._onRequestStateChange.bind(this, this._conn._dataRecv.bind(this._conn)), body.tree().getAttribute("rid")));
+
+      this._throttledRequestHandler();
+    }
+
+    if (this._requests.length > 0) {
+      var time_elapsed = this._requests[0].age();
+
+      if (this._requests[0].dead !== null) {
+        if (this._requests[0].timeDead() > Math.floor(Strophe.SECONDARY_TIMEOUT * this.wait)) {
+          this._throttledRequestHandler();
+        }
+      }
+
+      if (time_elapsed > Math.floor(Strophe.TIMEOUT * this.wait)) {
+        Strophe.warn("Request " + this._requests[0].id + " timed out, over " + Math.floor(Strophe.TIMEOUT * this.wait) + " seconds since last activity");
+
+        this._throttledRequestHandler();
+      }
+    }
+  },
+
+  /** PrivateFunction: _getRequestStatus
+   *
+   *  Returns the HTTP status code from a Strophe.Request
+   *
+   *  Parameters:
+   *    (Strophe.Request) req - The Strophe.Request instance.
+   *    (Integer) def - The default value that should be returned if no
+   *          status value was found.
+   */
+  _getRequestStatus: function _getRequestStatus(req, def) {
+    var reqStatus;
+
+    if (req.xhr.readyState === 4) {
+      try {
+        reqStatus = req.xhr.status;
+      } catch (e) {
+        // ignore errors from undefined status attribute. Works
+        // around a browser bug
+        Strophe.error("Caught an error while retrieving a request's status, " + "reqStatus: " + reqStatus);
+      }
+    }
+
+    if (typeof reqStatus === "undefined") {
+      reqStatus = typeof def === 'number' ? def : 0;
+    }
+
+    return reqStatus;
+  },
+
+  /** PrivateFunction: _onRequestStateChange
+   *  _Private_ handler for Strophe.Request state changes.
+   *
+   *  This function is called when the XMLHttpRequest readyState changes.
+   *  It contains a lot of error handling logic for the many ways that
+   *  requests can fail, and calls the request callback when requests
+   *  succeed.
+   *
+   *  Parameters:
+   *    (Function) func - The handler for the request.
+   *    (Strophe.Request) req - The request that is changing readyState.
+   */
+  _onRequestStateChange: function _onRequestStateChange(func, req) {
+    Strophe.debug("request id " + req.id + "." + req.sends + " state changed to " + req.xhr.readyState);
+
+    if (req.abort) {
+      req.abort = false;
+      return;
+    }
+
+    if (req.xhr.readyState !== 4) {
+      // The request is not yet complete
+      return;
+    }
+
+    var reqStatus = this._getRequestStatus(req);
+
+    this.lastResponseHeaders = req.xhr.getAllResponseHeaders();
+
+    if (this.disconnecting && reqStatus >= 400) {
+      this._hitError(reqStatus);
+
+      this._callProtocolErrorHandlers(req);
+
+      return;
+    }
+
+    var valid_request = reqStatus > 0 && reqStatus < 500;
+    var too_many_retries = req.sends > this._conn.maxRetries;
+
+    if (valid_request || too_many_retries) {
+      // remove from internal queue
+      this._removeRequest(req);
+
+      Strophe.debug("request id " + req.id + " should now be removed");
+    }
+
+    if (reqStatus === 200) {
+      // request succeeded
+      var reqIs0 = this._requests[0] === req;
+      var reqIs1 = this._requests[1] === req; // if request 1 finished, or request 0 finished and request
+      // 1 is over Strophe.SECONDARY_TIMEOUT seconds old, we need to
+      // restart the other - both will be in the first spot, as the
+      // completed request has been removed from the queue already
+
+      if (reqIs1 || reqIs0 && this._requests.length > 0 && this._requests[0].age() > Math.floor(Strophe.SECONDARY_TIMEOUT * this.wait)) {
+        this._restartRequest(0);
+      }
+
+      this._conn.nextValidRid(Number(req.rid) + 1);
+
+      Strophe.debug("request id " + req.id + "." + req.sends + " got 200");
+      func(req); // call handler
+
+      this.errors = 0;
+    } else if (reqStatus === 0 || reqStatus >= 400 && reqStatus < 600 || reqStatus >= 12000) {
+      // request failed
+      Strophe.error("request id " + req.id + "." + req.sends + " error " + reqStatus + " happened");
+
+      this._hitError(reqStatus);
+
+      this._callProtocolErrorHandlers(req);
+
+      if (reqStatus >= 400 && reqStatus < 500) {
+        this._conn._changeConnectStatus(Strophe.Status.DISCONNECTING, null);
+
+        this._conn._doDisconnect();
+      }
+    } else {
+      Strophe.error("request id " + req.id + "." + req.sends + " error " + reqStatus + " happened");
+    }
+
+    if (!valid_request && !too_many_retries) {
+      this._throttledRequestHandler();
+    } else if (too_many_retries && !this._conn.connected) {
+      this._conn._changeConnectStatus(Strophe.Status.CONNFAIL, "giving-up");
+    }
+  },
+
+  /** PrivateFunction: _processRequest
+   *  _Private_ function to process a request in the queue.
+   *
+   *  This function takes requests off the queue and sends them and
+   *  restarts dead requests.
+   *
+   *  Parameters:
+   *    (Integer) i - The index of the request in the queue.
+   */
+  _processRequest: function _processRequest(i) {
+    var _this = this;
+
+    var req = this._requests[i];
+
+    var reqStatus = this._getRequestStatus(req, -1); // make sure we limit the number of retries
+
+
+    if (req.sends > this._conn.maxRetries) {
+      this._conn._onDisconnectTimeout();
+
+      return;
+    }
+
+    var time_elapsed = req.age();
+    var primary_timeout = !isNaN(time_elapsed) && time_elapsed > Math.floor(Strophe.TIMEOUT * this.wait);
+    var secondary_timeout = req.dead !== null && req.timeDead() > Math.floor(Strophe.SECONDARY_TIMEOUT * this.wait);
+    var server_error = req.xhr.readyState === 4 && (reqStatus < 1 || reqStatus >= 500);
+
+    if (primary_timeout || secondary_timeout || server_error) {
+      if (secondary_timeout) {
+        Strophe.error("Request ".concat(this._requests[i].id, " timed out (secondary), restarting"));
+      }
+
+      req.abort = true;
+      req.xhr.abort(); // setting to null fails on IE6, so set to empty function
+
+      req.xhr.onreadystatechange = function () {};
+
+      this._requests[i] = new Strophe.Request(req.xmlData, req.origFunc, req.rid, req.sends);
+      req = this._requests[i];
+    }
+
+    if (req.xhr.readyState === 0) {
+      Strophe.debug("request id " + req.id + "." + req.sends + " posting");
+
+      try {
+        var content_type = this._conn.options.contentType || "text/xml; charset=utf-8";
+        req.xhr.open("POST", this._conn.service, this._conn.options.sync ? false : true);
+
+        if (typeof req.xhr.setRequestHeader !== 'undefined') {
+          // IE9 doesn't have setRequestHeader
+          req.xhr.setRequestHeader("Content-Type", content_type);
+        }
+
+        if (this._conn.options.withCredentials) {
+          req.xhr.withCredentials = true;
+        }
+      } catch (e2) {
+        Strophe.error("XHR open failed: " + e2.toString());
+
+        if (!this._conn.connected) {
+          this._conn._changeConnectStatus(Strophe.Status.CONNFAIL, "bad-service");
+        }
+
+        this._conn.disconnect();
+
+        return;
+      } // Fires the XHR request -- may be invoked immediately
+      // or on a gradually expanding retry window for reconnects
+
+
+      var sendFunc = function sendFunc() {
+        req.date = new Date();
+
+        if (_this._conn.options.customHeaders) {
+          var headers = _this._conn.options.customHeaders;
+
+          for (var header in headers) {
+            if (Object.prototype.hasOwnProperty.call(headers, header)) {
+              req.xhr.setRequestHeader(header, headers[header]);
+            }
+          }
+        }
+
+        req.xhr.send(req.data);
+      }; // Implement progressive backoff for reconnects --
+      // First retry (send === 1) should also be instantaneous
+
+
+      if (req.sends > 1) {
+        // Using a cube of the retry number creates a nicely
+        // expanding retry window
+        var backoff = Math.min(Math.floor(Strophe.TIMEOUT * this.wait), Math.pow(req.sends, 3)) * 1000;
+        setTimeout(function () {
+          // XXX: setTimeout should be called only with function expressions (23974bc1)
+          sendFunc();
+        }, backoff);
+      } else {
+        sendFunc();
+      }
+
+      req.sends++;
+
+      if (this._conn.xmlOutput !== Strophe.Connection.prototype.xmlOutput) {
+        if (req.xmlData.nodeName === this.strip && req.xmlData.childNodes.length) {
+          this._conn.xmlOutput(req.xmlData.childNodes[0]);
+        } else {
+          this._conn.xmlOutput(req.xmlData);
+        }
+      }
+
+      if (this._conn.rawOutput !== Strophe.Connection.prototype.rawOutput) {
+        this._conn.rawOutput(req.data);
+      }
+    } else {
+      Strophe.debug("_processRequest: " + (i === 0 ? "first" : "second") + " request has readyState of " + req.xhr.readyState);
+    }
+  },
+
+  /** PrivateFunction: _removeRequest
+   *  _Private_ function to remove a request from the queue.
+   *
+   *  Parameters:
+   *    (Strophe.Request) req - The request to remove.
+   */
+  _removeRequest: function _removeRequest(req) {
+    Strophe.debug("removing request");
+
+    for (var i = this._requests.length - 1; i >= 0; i--) {
+      if (req === this._requests[i]) {
+        this._requests.splice(i, 1);
+      }
+    } // IE6 fails on setting to null, so set to empty function
+
+
+    req.xhr.onreadystatechange = function () {};
+
+    this._throttledRequestHandler();
+  },
+
+  /** PrivateFunction: _restartRequest
+   *  _Private_ function to restart a request that is presumed dead.
+   *
+   *  Parameters:
+   *    (Integer) i - The index of the request in the queue.
+   */
+  _restartRequest: function _restartRequest(i) {
+    var req = this._requests[i];
+
+    if (req.dead === null) {
+      req.dead = new Date();
+    }
+
+    this._processRequest(i);
+  },
+
+  /** PrivateFunction: _reqToData
+   * _Private_ function to get a stanza out of a request.
+   *
+   * Tries to extract a stanza out of a Request Object.
+   * When this fails the current connection will be disconnected.
+   *
+   *  Parameters:
+   *    (Object) req - The Request.
+   *
+   *  Returns:
+   *    The stanza that was passed.
+   */
+  _reqToData: function _reqToData(req) {
+    try {
+      return req.getResponse();
+    } catch (e) {
+      if (e.message !== "parsererror") {
+        throw e;
+      }
+
+      this._conn.disconnect("strophe-parsererror");
+    }
+  },
+
+  /** PrivateFunction: _sendTerminate
+   *  _Private_ function to send initial disconnect sequence.
+   *
+   *  This is the first step in a graceful disconnect.  It sends
+   *  the BOSH server a terminate body and includes an unavailable
+   *  presence if authentication has completed.
+   */
+  _sendTerminate: function _sendTerminate(pres) {
+    Strophe.info("_sendTerminate was called");
+
+    var body = this._buildBody().attrs({
+      type: "terminate"
+    });
+
+    if (pres) {
+      body.cnode(pres.tree());
+    }
+
+    var req = new Strophe.Request(body.tree(), this._onRequestStateChange.bind(this, this._conn._dataRecv.bind(this._conn)), body.tree().getAttribute("rid"));
+
+    this._requests.push(req);
+
+    this._throttledRequestHandler();
+  },
+
+  /** PrivateFunction: _send
+   *  _Private_ part of the Connection.send function for BOSH
+   *
+   * Just triggers the RequestHandler to send the messages that are in the queue
+   */
+  _send: function _send() {
+    var _this2 = this;
+
+    clearTimeout(this._conn._idleTimeout);
+
+    this._throttledRequestHandler();
+
+    this._conn._idleTimeout = setTimeout(function () {
+      return _this2._conn._onIdle();
+    }, 100);
+  },
+
+  /** PrivateFunction: _sendRestart
+   *
+   *  Send an xmpp:restart stanza.
+   */
+  _sendRestart: function _sendRestart() {
+    this._throttledRequestHandler();
+
+    clearTimeout(this._conn._idleTimeout);
+  },
+
+  /** PrivateFunction: _throttledRequestHandler
+   *  _Private_ function to throttle requests to the connection window.
+   *
+   *  This function makes sure we don't send requests so fast that the
+   *  request ids overflow the connection window in the case that one
+   *  request died.
+   */
+  _throttledRequestHandler: function _throttledRequestHandler() {
+    if (!this._requests) {
+      Strophe.debug("_throttledRequestHandler called with " + "undefined requests");
+    } else {
+      Strophe.debug("_throttledRequestHandler called with " + this._requests.length + " requests");
+    }
+
+    if (!this._requests || this._requests.length === 0) {
+      return;
+    }
+
+    if (this._requests.length > 0) {
+      this._processRequest(0);
+    }
+
+    if (this._requests.length > 1 && Math.abs(this._requests[0].rid - this._requests[1].rid) < this.window) {
+      this._processRequest(1);
+    }
+  }
+};
+
+/***/ }),
+
+/***/ "./src/core.js":
+/*!*********************!*\
+  !*** ./src/core.js ***!
+  \*********************/
+/*! exports provided: Strophe, $build, $iq, $msg, $pres, SHA1, MD5, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Strophe", function() { return Strophe; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "$build", function() { return $build; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "$iq", function() { return $iq; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "$msg", function() { return $msg; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "$pres", function() { return $pres; });
+/* harmony import */ var md5__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! md5 */ "./src/md5.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MD5", function() { return md5__WEBPACK_IMPORTED_MODULE_0__["default"]; });
+
+/* harmony import */ var sha1__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! sha1 */ "./src/sha1.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SHA1", function() { return sha1__WEBPACK_IMPORTED_MODULE_1__["default"]; });
+
+/* harmony import */ var utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! utils */ "./src/utils.js");
+function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }
+
+function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }
+
+function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }
+
+function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }
+
+function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
+
+/*
+    This program is distributed under the terms of the MIT license.
+    Please see the LICENSE file for details.
+
+    Copyright 2006-2018, OGG, LLC
+*/
+
+/*global define, document, sessionStorage, setTimeout, clearTimeout, ActiveXObject, DOMParser, btoa, atob, module */
+
+
+
+/** Function: $build
+ *  Create a Strophe.Builder.
+ *  This is an alias for 'new Strophe.Builder(name, attrs)'.
+ *
+ *  Parameters:
+ *    (String) name - The root element name.
+ *    (Object) attrs - The attributes for the root element in object notation.
+ *
+ *  Returns:
+ *    A new Strophe.Builder object.
+ */
+
+function $build(name, attrs) {
+  return new Strophe.Builder(name, attrs);
+}
+/** Function: $msg
+ *  Create a Strophe.Builder with a <message/> element as the root.
+ *
+ *  Parameters:
+ *    (Object) attrs - The <message/> element attributes in object notation.
+ *
+ *  Returns:
+ *    A new Strophe.Builder object.
+ */
+
+
+function $msg(attrs) {
+  return new Strophe.Builder("message", attrs);
+}
+/** Function: $iq
+ *  Create a Strophe.Builder with an <iq/> element as the root.
+ *
+ *  Parameters:
+ *    (Object) attrs - The <iq/> element attributes in object notation.
+ *
+ *  Returns:
+ *    A new Strophe.Builder object.
+ */
+
+
+function $iq(attrs) {
+  return new Strophe.Builder("iq", attrs);
+}
+/** Function: $pres
+ *  Create a Strophe.Builder with a <presence/> element as the root.
+ *
+ *  Parameters:
+ *    (Object) attrs - The <presence/> element attributes in object notation.
+ *
+ *  Returns:
+ *    A new Strophe.Builder object.
+ */
+
+
+function $pres(attrs) {
+  return new Strophe.Builder("presence", attrs);
+}
+/** Class: Strophe
+ *  An object container for all Strophe library functions.
+ *
+ *  This class is just a container for all the objects and constants
+ *  used in the library.  It is not meant to be instantiated, but to
+ *  provide a namespace for library objects, constants, and functions.
+ */
+
+
+var Strophe = {
+  /** Constant: VERSION */
+  VERSION: "1.3.1",
+
+  /** Constants: XMPP Namespace Constants
+   *  Common namespace constants from the XMPP RFCs and XEPs.
+   *
+   *  NS.HTTPBIND - HTTP BIND namespace from XEP 124.
+   *  NS.BOSH - BOSH namespace from XEP 206.
+   *  NS.CLIENT - Main XMPP client namespace.
+   *  NS.AUTH - Legacy authentication namespace.
+   *  NS.ROSTER - Roster operations namespace.
+   *  NS.PROFILE - Profile namespace.
+   *  NS.DISCO_INFO - Service discovery info namespace from XEP 30.
+   *  NS.DISCO_ITEMS - Service discovery items namespace from XEP 30.
+   *  NS.MUC - Multi-User Chat namespace from XEP 45.
+   *  NS.SASL - XMPP SASL namespace from RFC 3920.
+   *  NS.STREAM - XMPP Streams namespace from RFC 3920.
+   *  NS.BIND - XMPP Binding namespace from RFC 3920.
+   *  NS.SESSION - XMPP Session namespace from RFC 3920.
+   *  NS.XHTML_IM - XHTML-IM namespace from XEP 71.
+   *  NS.XHTML - XHTML body namespace from XEP 71.
+   */
+  NS: {
+    HTTPBIND: "http://jabber.org/protocol/httpbind",
+    BOSH: "urn:xmpp:xbosh",
+    CLIENT: "jabber:client",
+    AUTH: "jabber:iq:auth",
+    ROSTER: "jabber:iq:roster",
+    PROFILE: "jabber:iq:profile",
+    DISCO_INFO: "http://jabber.org/protocol/disco#info",
+    DISCO_ITEMS: "http://jabber.org/protocol/disco#items",
+    MUC: "http://jabber.org/protocol/muc",
+    SASL: "urn:ietf:params:xml:ns:xmpp-sasl",
+    STREAM: "http://etherx.jabber.org/streams",
+    FRAMING: "urn:ietf:params:xml:ns:xmpp-framing",
+    BIND: "urn:ietf:params:xml:ns:xmpp-bind",
+    SESSION: "urn:ietf:params:xml:ns:xmpp-session",
+    VERSION: "jabber:iq:version",
+    STANZAS: "urn:ietf:params:xml:ns:xmpp-stanzas",
+    XHTML_IM: "http://jabber.org/protocol/xhtml-im",
+    XHTML: "http://www.w3.org/1999/xhtml"
+  },
+
+  /** Constants: XHTML_IM Namespace
+   *  contains allowed tags, tag attributes, and css properties.
+   *  Used in the createHtml function to filter incoming html into the allowed XHTML-IM subset.
+   *  See http://xmpp.org/extensions/xep-0071.html#profile-summary for the list of recommended
+   *  allowed tags and their attributes.
+   */
+  XHTML: {
+    tags: ['a', 'blockquote', 'br', 'cite', 'em', 'img', 'li', 'ol', 'p', 'span', 'strong', 'ul', 'body'],
+    attributes: {
+      'a': ['href'],
+      'blockquote': ['style'],
+      'br': [],
+      'cite': ['style'],
+      'em': [],
+      'img': ['src', 'alt', 'style', 'height', 'width'],
+      'li': ['style'],
+      'ol': ['style'],
+      'p': ['style'],
+      'span': ['style'],
+      'strong': [],
+      'ul': ['style'],
+      'body': []
+    },
+    css: ['background-color', 'color', 'font-family', 'font-size', 'font-style', 'font-weight', 'margin-left', 'margin-right', 'text-align', 'text-decoration'],
+
+    /** Function: XHTML.validTag
+     *
+     * Utility method to determine whether a tag is allowed
+     * in the XHTML_IM namespace.
+     *
+     * XHTML tag names are case sensitive and must be lower case.
+     */
+    validTag: function validTag(tag) {
+      for (var i = 0; i < Strophe.XHTML.tags.length; i++) {
+        if (tag === Strophe.XHTML.tags[i]) {
+          return true;
+        }
+      }
+
+      return false;
+    },
+
+    /** Function: XHTML.validAttribute
+     *
+     * Utility method to determine whether an attribute is allowed
+     * as recommended per XEP-0071
+     *
+     * XHTML attribute names are case sensitive and must be lower case.
+     */
+    validAttribute: function validAttribute(tag, attribute) {
+      if (typeof Strophe.XHTML.attributes[tag] !== 'undefined' && Strophe.XHTML.attributes[tag].length > 0) {
+        for (var i = 0; i < Strophe.XHTML.attributes[tag].length; i++) {
+          if (attribute === Strophe.XHTML.attributes[tag][i]) {
+            return true;
+          }
+        }
+      }
+
+      return false;
+    },
+    validCSS: function validCSS(style) {
+      for (var i = 0; i < Strophe.XHTML.css.length; i++) {
+        if (style === Strophe.XHTML.css[i]) {
+          return true;
+        }
+      }
+
+      return false;
+    }
+  },
+
+  /** Constants: Connection Status Constants
+   *  Connection status constants for use by the connection handler
+   *  callback.
+   *
+   *  Status.ERROR - An error has occurred
+   *  Status.CONNECTING - The connection is currently being made
+   *  Status.CONNFAIL - The connection attempt failed
+   *  Status.AUTHENTICATING - The connection is authenticating
+   *  Status.AUTHFAIL - The authentication attempt failed
+   *  Status.CONNECTED - The connection has succeeded
+   *  Status.DISCONNECTED - The connection has been terminated
+   *  Status.DISCONNECTING - The connection is currently being terminated
+   *  Status.ATTACHED - The connection has been attached
+   *  Status.REDIRECT - The connection has been redirected
+   *  Status.CONNTIMEOUT - The connection has timed out
+   */
+  Status: {
+    ERROR: 0,
+    CONNECTING: 1,
+    CONNFAIL: 2,
+    AUTHENTICATING: 3,
+    AUTHFAIL: 4,
+    CONNECTED: 5,
+    DISCONNECTED: 6,
+    DISCONNECTING: 7,
+    ATTACHED: 8,
+    REDIRECT: 9,
+    CONNTIMEOUT: 10
+  },
+  ErrorCondition: {
+    BAD_FORMAT: "bad-format",
+    CONFLICT: "conflict",
+    MISSING_JID_NODE: "x-strophe-bad-non-anon-jid",
+    NO_AUTH_MECH: "no-auth-mech",
+    UNKNOWN_REASON: "unknown"
+  },
+
+  /** Constants: Log Level Constants
+   *  Logging level indicators.
+   *
+   *  LogLevel.DEBUG - Debug output
+   *  LogLevel.INFO - Informational output
+   *  LogLevel.WARN - Warnings
+   *  LogLevel.ERROR - Errors
+   *  LogLevel.FATAL - Fatal errors
+   */
+  LogLevel: {
+    DEBUG: 0,
+    INFO: 1,
+    WARN: 2,
+    ERROR: 3,
+    FATAL: 4
+  },
+
+  /** PrivateConstants: DOM Element Type Constants
+   *  DOM element types.
+   *
+   *  ElementType.NORMAL - Normal element.
+   *  ElementType.TEXT - Text data element.
+   *  ElementType.FRAGMENT - XHTML fragment element.
+   */
+  ElementType: {
+    NORMAL: 1,
+    TEXT: 3,
+    CDATA: 4,
+    FRAGMENT: 11
+  },
+
+  /** PrivateConstants: Timeout Values
+   *  Timeout values for error states.  These values are in seconds.
+   *  These should not be changed unless you know exactly what you are
+   *  doing.
+   *
+   *  TIMEOUT - Timeout multiplier. A waiting request will be considered
+   *      failed after Math.floor(TIMEOUT * wait) seconds have elapsed.
+   *      This defaults to 1.1, and with default wait, 66 seconds.
+   *  SECONDARY_TIMEOUT - Secondary timeout multiplier. In cases where
+   *      Strophe can detect early failure, it will consider the request
+   *      failed if it doesn't return after
+   *      Math.floor(SECONDARY_TIMEOUT * wait) seconds have elapsed.
+   *      This defaults to 0.1, and with default wait, 6 seconds.
+   */
+  TIMEOUT: 1.1,
+  SECONDARY_TIMEOUT: 0.1,
+
+  /** Function: addNamespace
+   *  This function is used to extend the current namespaces in
+   *  Strophe.NS.  It takes a key and a value with the key being the
+   *  name of the new namespace, with its actual value.
+   *  For example:
+   *  Strophe.addNamespace('PUBSUB', "http://jabber.org/protocol/pubsub");
+   *
+   *  Parameters:
+   *    (String) name - The name under which the namespace will be
+   *      referenced under Strophe.NS
+   *    (String) value - The actual namespace.
+   */
+  addNamespace: function addNamespace(name, value) {
+    Strophe.NS[name] = value;
+  },
+
+  /** Function: forEachChild
+   *  Map a function over some or all child elements of a given element.
+   *
+   *  This is a small convenience function for mapping a function over
+   *  some or all of the children of an element.  If elemName is null, all
+   *  children will be passed to the function, otherwise only children
+   *  whose tag names match elemName will be passed.
+   *
+   *  Parameters:
+   *    (XMLElement) elem - The element to operate on.
+   *    (String) elemName - The child element tag name filter.
+   *    (Function) func - The function to apply to each child.  This
+   *      function should take a single argument, a DOM element.
+   */
+  forEachChild: function forEachChild(elem, elemName, func) {
+    for (var i = 0; i < elem.childNodes.length; i++) {
+      var childNode = elem.childNodes[i];
+
+      if (childNode.nodeType === Strophe.ElementType.NORMAL && (!elemName || this.isTagEqual(childNode, elemName))) {
+        func(childNode);
+      }
+    }
+  },
+
+  /** Function: isTagEqual
+   *  Compare an element's tag name with a string.
+   *
+   *  This function is case sensitive.
+   *
+   *  Parameters:
+   *    (XMLElement) el - A DOM element.
+   *    (String) name - The element name.
+   *
+   *  Returns:
+   *    true if the element's tag name matches _el_, and false
+   *    otherwise.
+   */
+  isTagEqual: function isTagEqual(el, name) {
+    return el.tagName === name;
+  },
+
+  /** PrivateVariable: _xmlGenerator
+   *  _Private_ variable that caches a DOM document to
+   *  generate elements.
+   */
+  _xmlGenerator: null,
+
+  /** PrivateFunction: _makeGenerator
+   *  _Private_ function that creates a dummy XML DOM document to serve as
+   *  an element and text node generator.
+   */
+  _makeGenerator: function _makeGenerator() {
+    var doc; // IE9 does implement createDocument(); however, using it will cause the browser to leak memory on page unload.
+    // Here, we test for presence of createDocument() plus IE's proprietary documentMode attribute, which would be
+    // less than 10 in the case of IE9 and below.
+
+    if (document.implementation.createDocument === undefined || document.implementation.createDocument && document.documentMode && document.documentMode < 10) {
+      doc = this._getIEXmlDom();
+      doc.appendChild(doc.createElement('strophe'));
+    } else {
+      doc = document.implementation.createDocument('jabber:client', 'strophe', null);
+    }
+
+    return doc;
+  },
+
+  /** Function: xmlGenerator
+   *  Get the DOM document to generate elements.
+   *
+   *  Returns:
+   *    The currently used DOM document.
+   */
+  xmlGenerator: function xmlGenerator() {
+    if (!Strophe._xmlGenerator) {
+      Strophe._xmlGenerator = Strophe._makeGenerator();
+    }
+
+    return Strophe._xmlGenerator;
+  },
+
+  /** PrivateFunction: _getIEXmlDom
+   *  Gets IE xml doc object
+   *
+   *  Returns:
+   *    A Microsoft XML DOM Object
+   *  See Also:
+   *    http://msdn.microsoft.com/en-us/library/ms757837%28VS.85%29.aspx
+   */
+  _getIEXmlDom: function _getIEXmlDom() {
+    var doc = null;
+    var docStrings = ["Msxml2.DOMDocument.6.0", "Msxml2.DOMDocument.5.0", "Msxml2.DOMDocument.4.0", "MSXML2.DOMDocument.3.0", "MSXML2.DOMDocument", "MSXML.DOMDocument", "Microsoft.XMLDOM"];
+
+    for (var d = 0; d < docStrings.length; d++) {
+      if (doc === null) {
+        try {
+          doc = new ActiveXObject(docStrings[d]);
+        } catch (e) {
+          doc = null;
+        }
+      } else {
+        break;
+      }
+    }
+
+    return doc;
+  },
+
+  /** Function: xmlElement
+   *  Create an XML DOM element.
+   *
+   *  This function creates an XML DOM element correctly across all
+   *  implementations. Note that these are not HTML DOM elements, which
+   *  aren't appropriate for XMPP stanzas.
+   *
+   *  Parameters:
+   *    (String) name - The name for the element.
+   *    (Array|Object) attrs - An optional array or object containing
+   *      key/value pairs to use as element attributes. The object should
+   *      be in the format {'key': 'value'} or {key: 'value'}. The array
+   *      should have the format [['key1', 'value1'], ['key2', 'value2']].
+   *    (String) text - The text child data for the element.
+   *
+   *  Returns:
+   *    A new XML DOM element.
+   */
+  xmlElement: function xmlElement(name) {
+    if (!name) {
+      return null;
+    }
+
+    var node = Strophe.xmlGenerator().createElement(name); // FIXME: this should throw errors if args are the wrong type or
+    // there are more than two optional args
+
+    for (var a = 1; a < arguments.length; a++) {
+      var arg = arguments[a];
+
+      if (!arg) {
+        continue;
+      }
+
+      if (typeof arg === "string" || typeof arg === "number") {
+        node.appendChild(Strophe.xmlTextNode(arg));
+      } else if (_typeof(arg) === "object" && typeof arg.sort === "function") {
+        for (var i = 0; i < arg.length; i++) {
+          var attr = arg[i];
+
+          if (_typeof(attr) === "object" && typeof attr.sort === "function" && attr[1] !== undefined && attr[1] !== null) {
+            node.setAttribute(attr[0], attr[1]);
+          }
+        }
+      } else if (_typeof(arg) === "object") {
+        for (var k in arg) {
+          if (Object.prototype.hasOwnProperty.call(arg, k) && arg[k] !== undefined && arg[k] !== null) {
+            node.setAttribute(k, arg[k]);
+          }
+        }
+      }
+    }
+
+    return node;
+  },
+
+  /*  Function: xmlescape
+   *  Excapes invalid xml characters.
+   *
+   *  Parameters:
+   *     (String) text - text to escape.
+   *
+   *  Returns:
+   *      Escaped text.
+   */
+  xmlescape: function xmlescape(text) {
+    text = text.replace(/\&/g, "&amp;");
+    text = text.replace(/</g, "&lt;");
+    text = text.replace(/>/g, "&gt;");
+    text = text.replace(/'/g, "&apos;");
+    text = text.replace(/"/g, "&quot;");
+    return text;
+  },
+
+  /*  Function: xmlunescape
+  *  Unexcapes invalid xml characters.
+  *
+  *  Parameters:
+  *     (String) text - text to unescape.
+  *
+  *  Returns:
+  *      Unescaped text.
+  */
+  xmlunescape: function xmlunescape(text) {
+    text = text.replace(/\&amp;/g, "&");
+    text = text.replace(/&lt;/g, "<");
+    text = text.replace(/&gt;/g, ">");
+    text = text.replace(/&apos;/g, "'");
+    text = text.replace(/&quot;/g, "\"");
+    return text;
+  },
+
+  /** Function: xmlTextNode
+   *  Creates an XML DOM text node.
+   *
+   *  Provides a cross implementation version of document.createTextNode.
+   *
+   *  Parameters:
+   *    (String) text - The content of the text node.
+   *
+   *  Returns:
+   *    A new XML DOM text node.
+   */
+  xmlTextNode: function xmlTextNode(text) {
+    return Strophe.xmlGenerator().createTextNode(text);
+  },
+
+  /** Function: xmlHtmlNode
+   *  Creates an XML DOM html node.
+   *
+   *  Parameters:
+   *    (String) html - The content of the html node.
+   *
+   *  Returns:
+   *    A new XML DOM text node.
+   */
+  xmlHtmlNode: function xmlHtmlNode(html) {
+    var node; //ensure text is escaped
+
+    if (DOMParser) {
+      var parser = new DOMParser();
+      node = parser.parseFromString(html, "text/xml");
+    } else {
+      node = new ActiveXObject("Microsoft.XMLDOM");
+      node.async = "false";
+      node.loadXML(html);
+    }
+
+    return node;
+  },
+
+  /** Function: getText
+   *  Get the concatenation of all text children of an element.
+   *
+   *  Parameters:
+   *    (XMLElement) elem - A DOM element.
+   *
+   *  Returns:
+   *    A String with the concatenated text of all text element children.
+   */
+  getText: function getText(elem) {
+    if (!elem) {
+      return null;
+    }
+
+    var str = "";
+
+    if (elem.childNodes.length === 0 && elem.nodeType === Strophe.ElementType.TEXT) {
+      str += elem.nodeValue;
+    }
+
+    for (var i = 0; i < elem.childNodes.length; i++) {
+      if (elem.childNodes[i].nodeType === Strophe.ElementType.TEXT) {
+        str += elem.childNodes[i].nodeValue;
+      }
+    }
+
+    return Strophe.xmlescape(str);
+  },
+
+  /** Function: copyElement
+   *  Copy an XML DOM element.
+   *
+   *  This function copies a DOM element and all its descendants and returns
+   *  the new copy.
+   *
+   *  Parameters:
+   *    (XMLElement) elem - A DOM element.
+   *
+   *  Returns:
+   *    A new, copied DOM element tree.
+   */
+  copyElement: function copyElement(elem) {
+    var el;
+
+    if (elem.nodeType === Strophe.ElementType.NORMAL) {
+      el = Strophe.xmlElement(elem.tagName);
+
+      for (var i = 0; i < elem.attributes.length; i++) {
+        el.setAttribute(elem.attributes[i].nodeName, elem.attributes[i].value);
+      }
+
+      for (var _i = 0; _i < elem.childNodes.length; _i++) {
+        el.appendChild(Strophe.copyElement(elem.childNodes[_i]));
+      }
+    } else if (elem.nodeType === Strophe.ElementType.TEXT) {
+      el = Strophe.xmlGenerator().createTextNode(elem.nodeValue);
+    }
+
+    return el;
+  },
+
+  /** Function: createHtml
+   *  Copy an HTML DOM element into an XML DOM.
+   *
+   *  This function copies a DOM element and all its descendants and returns
+   *  the new copy.
+   *
+   *  Parameters:
+   *    (HTMLElement) elem - A DOM element.
+   *
+   *  Returns:
+   *    A new, copied DOM element tree.
+   */
+  createHtml: function createHtml(elem) {
+    var el;
+
+    if (elem.nodeType === Strophe.ElementType.NORMAL) {
+      var tag = elem.nodeName.toLowerCase(); // XHTML tags must be lower case.
+
+      if (Strophe.XHTML.validTag(tag)) {
+        try {
+          el = Strophe.xmlElement(tag);
+
+          for (var i = 0; i < Strophe.XHTML.attributes[tag].length; i++) {
+            var attribute = Strophe.XHTML.attributes[tag][i];
+            var value = elem.getAttribute(attribute);
+
+            if (typeof value === 'undefined' || value === null || value === '' || value === false || value === 0) {
+              continue;
+            }
+
+            if (attribute === 'style' && _typeof(value) === 'object' && typeof value.cssText !== 'undefined') {
+              value = value.cssText; // we're dealing with IE, need to get CSS out
+            } // filter out invalid css styles
+
+
+            if (attribute === 'style') {
+              var css = [];
+              var cssAttrs = value.split(';');
+
+              for (var j = 0; j < cssAttrs.length; j++) {
+                var attr = cssAttrs[j].split(':');
+                var cssName = attr[0].replace(/^\s*/, "").replace(/\s*$/, "").toLowerCase();
+
+                if (Strophe.XHTML.validCSS(cssName)) {
+                  var cssValue = attr[1].replace(/^\s*/, "").replace(/\s*$/, "");
+                  css.push(cssName + ': ' + cssValue);
+                }
+              }
+
+              if (css.length > 0) {
+                value = css.join('; ');
+                el.setAttribute(attribute, value);
+              }
+            } else {
+              el.setAttribute(attribute, value);
+            }
+          }
+
+          for (var _i2 = 0; _i2 < elem.childNodes.length; _i2++) {
+            el.appendChild(Strophe.createHtml(elem.childNodes[_i2]));
+          }
+        } catch (e) {
+          // invalid elements
+          el = Strophe.xmlTextNode('');
+        }
+      } else {
+        el = Strophe.xmlGenerator().createDocumentFragment();
+
+        for (var _i3 = 0; _i3 < elem.childNodes.length; _i3++) {
+          el.appendChild(Strophe.createHtml(elem.childNodes[_i3]));
+        }
+      }
+    } else if (elem.nodeType === Strophe.ElementType.FRAGMENT) {
+      el = Strophe.xmlGenerator().createDocumentFragment();
+
+      for (var _i4 = 0; _i4 < elem.childNodes.length; _i4++) {
+        el.appendChild(Strophe.createHtml(elem.childNodes[_i4]));
+      }
+    } else if (elem.nodeType === Strophe.ElementType.TEXT) {
+      el = Strophe.xmlTextNode(elem.nodeValue);
+    }
+
+    return el;
+  },
+
+  /** Function: escapeNode
+   *  Escape the node part (also called local part) of a JID.
+   *
+   *  Parameters:
+   *    (String) node - A node (or local part).
+   *
+   *  Returns:
+   *    An escaped node (or local part).
+   */
+  escapeNode: function escapeNode(node) {
+    if (typeof node !== "string") {
+      return node;
+    }
+
+    return node.replace(/^\s+|\s+$/g, '').replace(/\\/g, "\\5c").replace(/ /g, "\\20").replace(/\"/g, "\\22").replace(/\&/g, "\\26").replace(/\'/g, "\\27").replace(/\//g, "\\2f").replace(/:/g, "\\3a").replace(/</g, "\\3c").replace(/>/g, "\\3e").replace(/@/g, "\\40");
+  },
+
+  /** Function: unescapeNode
+   *  Unescape a node part (also called local part) of a JID.
+   *
+   *  Parameters:
+   *    (String) node - A node (or local part).
+   *
+   *  Returns:
+   *    An unescaped node (or local part).
+   */
+  unescapeNode: function unescapeNode(node) {
+    if (typeof node !== "string") {
+      return node;
+    }
+
+    return node.replace(/\\20/g, " ").replace(/\\22/g, '"').replace(/\\26/g, "&").replace(/\\27/g, "'").replace(/\\2f/g, "/").replace(/\\3a/g, ":").replace(/\\3c/g, "<").replace(/\\3e/g, ">").replace(/\\40/g, "@").replace(/\\5c/g, "\\");
+  },
+
+  /** Function: getNodeFromJid
+   *  Get the node portion of a JID String.
+   *
+   *  Parameters:
+   *    (String) jid - A JID.
+   *
+   *  Returns:
+   *    A String containing the node.
+   */
+  getNodeFromJid: function getNodeFromJid(jid) {
+    if (jid.indexOf("@") < 0) {
+      return null;
+    }
+
+    return jid.split("@")[0];
+  },
+
+  /** Function: getDomainFromJid
+   *  Get the domain portion of a JID String.
+   *
+   *  Parameters:
+   *    (String) jid - A JID.
+   *
+   *  Returns:
+   *    A String containing the domain.
+   */
+  getDomainFromJid: function getDomainFromJid(jid) {
+    var bare = Strophe.getBareJidFromJid(jid);
+
+    if (bare.indexOf("@") < 0) {
+      return bare;
+    } else {
+      var parts = bare.split("@");
+      parts.splice(0, 1);
+      return parts.join('@');
+    }
+  },
+
+  /** Function: getResourceFromJid
+   *  Get the resource portion of a JID String.
+   *
+   *  Parameters:
+   *    (String) jid - A JID.
+   *
+   *  Returns:
+   *    A String containing the resource.
+   */
+  getResourceFromJid: function getResourceFromJid(jid) {
+    var s = jid.split("/");
+
+    if (s.length < 2) {
+      return null;
+    }
+
+    s.splice(0, 1);
+    return s.join('/');
+  },
+
+  /** Function: getBareJidFromJid
+   *  Get the bare JID from a JID String.
+   *
+   *  Parameters:
+   *    (String) jid - A JID.
+   *
+   *  Returns:
+   *    A String containing the bare JID.
+   */
+  getBareJidFromJid: function getBareJidFromJid(jid) {
+    return jid ? jid.split("/")[0] : null;
+  },
+
+  /** PrivateFunction: _handleError
+   *  _Private_ function that properly logs an error to the console
+   */
+  _handleError: function _handleError(e) {
+    if (typeof e.stack !== "undefined") {
+      Strophe.fatal(e.stack);
+    }
+
+    if (e.sourceURL) {
+      Strophe.fatal("error: " + this.handler + " " + e.sourceURL + ":" + e.line + " - " + e.name + ": " + e.message);
+    } else if (e.fileName) {
+      Strophe.fatal("error: " + this.handler + " " + e.fileName + ":" + e.lineNumber + " - " + e.name + ": " + e.message);
+    } else {
+      Strophe.fatal("error: " + e.message);
+    }
+  },
+
+  /** Function: log
+   *  User overrideable logging function.
+   *
+   *  This function is called whenever the Strophe library calls any
+   *  of the logging functions.  The default implementation of this
+   *  function logs only fatal errors.  If client code wishes to handle the logging
+   *  messages, it should override this with
+   *  > Strophe.log = function (level, msg) {
+   *  >   (user code here)
+   *  > };
+   *
+   *  Please note that data sent and received over the wire is logged
+   *  via Strophe.Connection.rawInput() and Strophe.Connection.rawOutput().
+   *
+   *  The different levels and their meanings are
+   *
+   *    DEBUG - Messages useful for debugging purposes.
+   *    INFO - Informational messages.  This is mostly information like
+   *      'disconnect was called' or 'SASL auth succeeded'.
+   *    WARN - Warnings about potential problems.  This is mostly used
+   *      to report transient connection errors like request timeouts.
+   *    ERROR - Some error occurred.
+   *    FATAL - A non-recoverable fatal error occurred.
+   *
+   *  Parameters:
+   *    (Integer) level - The log level of the log message.  This will
+   *      be one of the values in Strophe.LogLevel.
+   *    (String) msg - The log message.
+   */
+  log: function log(level, msg) {
+    if (level === this.LogLevel.FATAL && _typeof(window.console) === 'object' && typeof window.console.error === 'function') {
+      window.console.error(msg);
+    }
+  },
+
+  /** Function: debug
+   *  Log a message at the Strophe.LogLevel.DEBUG level.
+   *
+   *  Parameters:
+   *    (String) msg - The log message.
+   */
+  debug: function debug(msg) {
+    this.log(this.LogLevel.DEBUG, msg);
+  },
+
+  /** Function: info
+   *  Log a message at the Strophe.LogLevel.INFO level.
+   *
+   *  Parameters:
+   *    (String) msg - The log message.
+   */
+  info: function info(msg) {
+    this.log(this.LogLevel.INFO, msg);
+  },
+
+  /** Function: warn
+   *  Log a message at the Strophe.LogLevel.WARN level.
+   *
+   *  Parameters:
+   *    (String) msg - The log message.
+   */
+  warn: function warn(msg) {
+    this.log(this.LogLevel.WARN, msg);
+  },
+
+  /** Function: error
+   *  Log a message at the Strophe.LogLevel.ERROR level.
+   *
+   *  Parameters:
+   *    (String) msg - The log message.
+   */
+  error: function error(msg) {
+    this.log(this.LogLevel.ERROR, msg);
+  },
+
+  /** Function: fatal
+   *  Log a message at the Strophe.LogLevel.FATAL level.
+   *
+   *  Parameters:
+   *    (String) msg - The log message.
+   */
+  fatal: function fatal(msg) {
+    this.log(this.LogLevel.FATAL, msg);
+  },
+
+  /** Function: serialize
+   *  Render a DOM element and all descendants to a String.
+   *
+   *  Parameters:
+   *    (XMLElement) elem - A DOM element.
+   *
+   *  Returns:
+   *    The serialized element tree as a String.
+   */
+  serialize: function serialize(elem) {
+    if (!elem) {
+      return null;
+    }
+
+    if (typeof elem.tree === "function") {
+      elem = elem.tree();
+    }
+
+    var names = _toConsumableArray(Array(elem.attributes.length).keys()).map(function (i) {
+      return elem.attributes[i].nodeName;
+    });
+
+    names.sort();
+    var result = names.reduce(function (a, n) {
+      return "".concat(a, " ").concat(n, "=\"").concat(Strophe.xmlescape(elem.attributes.getNamedItem(n).value), "\"");
+    }, "<".concat(elem.nodeName));
+
+    if (elem.childNodes.length > 0) {
+      result += ">";
+
+      for (var i = 0; i < elem.childNodes.length; i++) {
+        var child = elem.childNodes[i];
+
+        switch (child.nodeType) {
+          case Strophe.ElementType.NORMAL:
+            // normal element, so recurse
+            result += Strophe.serialize(child);
+            break;
+
+          case Strophe.ElementType.TEXT:
+            // text element to escape values
+            result += Strophe.xmlescape(child.nodeValue);
+            break;
+
+          case Strophe.ElementType.CDATA:
+            // cdata section so don't escape values
+            result += "<![CDATA[" + child.nodeValue + "]]>";
+        }
+      }
+
+      result += "</" + elem.nodeName + ">";
+    } else {
+      result += "/>";
+    }
+
+    return result;
+  },
+
+  /** PrivateVariable: _requestId
+   *  _Private_ variable that keeps track of the request ids for
+   *  connections.
+   */
+  _requestId: 0,
+
+  /** PrivateVariable: Strophe.connectionPlugins
+   *  _Private_ variable Used to store plugin names that need
+   *  initialization on Strophe.Connection construction.
+   */
+  _connectionPlugins: {},
+
+  /** Function: addConnectionPlugin
+   *  Extends the Strophe.Connection object with the given plugin.
+   *
+   *  Parameters:
+   *    (String) name - The name of the extension.
+   *    (Object) ptype - The plugin's prototype.
+   */
+  addConnectionPlugin: function addConnectionPlugin(name, ptype) {
+    Strophe._connectionPlugins[name] = ptype;
+  }
+};
+/** Class: Strophe.Builder
+ *  XML DOM builder.
+ *
+ *  This object provides an interface similar to JQuery but for building
+ *  DOM elements easily and rapidly.  All the functions except for toString()
+ *  and tree() return the object, so calls can be chained.  Here's an
+ *  example using the $iq() builder helper.
+ *  > $iq({to: 'you', from: 'me', type: 'get', id: '1'})
+ *  >     .c('query', {xmlns: 'strophe:example'})
+ *  >     .c('example')
+ *  >     .toString()
+ *
+ *  The above generates this XML fragment
+ *  > <iq to='you' from='me' type='get' id='1'>
+ *  >   <query xmlns='strophe:example'>
+ *  >     <example/>
+ *  >   </query>
+ *  > </iq>
+ *  The corresponding DOM manipulations to get a similar fragment would be
+ *  a lot more tedious and probably involve several helper variables.
+ *
+ *  Since adding children makes new operations operate on the child, up()
+ *  is provided to traverse up the tree.  To add two children, do
+ *  > builder.c('child1', ...).up().c('child2', ...)
+ *  The next operation on the Builder will be relative to the second child.
+ */
+
+/** Constructor: Strophe.Builder
+ *  Create a Strophe.Builder object.
+ *
+ *  The attributes should be passed in object notation.  For example
+ *  > let b = new Builder('message', {to: 'you', from: 'me'});
+ *  or
+ *  > let b = new Builder('messsage', {'xml:lang': 'en'});
+ *
+ *  Parameters:
+ *    (String) name - The name of the root element.
+ *    (Object) attrs - The attributes for the root element in object notation.
+ *
+ *  Returns:
+ *    A new Strophe.Builder.
+ */
+
+Strophe.Builder = function (name, attrs) {
+  // Set correct namespace for jabber:client elements
+  if (name === "presence" || name === "message" || name === "iq") {
+    if (attrs && !attrs.xmlns) {
+      attrs.xmlns = Strophe.NS.CLIENT;
+    } else if (!attrs) {
+      attrs = {
+        xmlns: Strophe.NS.CLIENT
+      };
+    }
+  } // Holds the tree being built.
+
+
+  this.nodeTree = Strophe.xmlElement(name, attrs); // Points to the current operation node.
+
+  this.node = this.nodeTree;
+};
+
+Strophe.Builder.prototype = {
+  /** Function: tree
+   *  Return the DOM tree.
+   *
+   *  This function returns the current DOM tree as an element object.  This
+   *  is suitable for passing to functions like Strophe.Connection.send().
+   *
+   *  Returns:
+   *    The DOM tree as a element object.
+   */
+  tree: function tree() {
+    return this.nodeTree;
+  },
+
+  /** Function: toString
+   *  Serialize the DOM tree to a String.
+   *
+   *  This function returns a string serialization of the current DOM
+   *  tree.  It is often used internally to pass data to a
+   *  Strophe.Request object.
+   *
+   *  Returns:
+   *    The serialized DOM tree in a String.
+   */
+  toString: function toString() {
+    return Strophe.serialize(this.nodeTree);
+  },
+
+  /** Function: up
+   *  Make the current parent element the new current element.
+   *
+   *  This function is often used after c() to traverse back up the tree.
+   *  For example, to add two children to the same element
+   *  > builder.c('child1', {}).up().c('child2', {});
+   *
+   *  Returns:
+   *    The Stophe.Builder object.
+   */
+  up: function up() {
+    this.node = this.node.parentNode;
+    return this;
+  },
+
+  /** Function: root
+   *  Make the root element the new current element.
+   *
+   *  When at a deeply nested element in the tree, this function can be used
+   *  to jump back to the root of the tree, instead of having to repeatedly
+   *  call up().
+   *
+   *  Returns:
+   *    The Stophe.Builder object.
+   */
+  root: function root() {
+    this.node = this.nodeTree;
+    return this;
+  },
+
+  /** Function: attrs
+   *  Add or modify attributes of the current element.
+   *
+   *  The attributes should be passed in object notation.  This function
+   *  does not move the current element pointer.
+   *
+   *  Parameters:
+   *    (Object) moreattrs - The attributes to add/modify in object notation.
+   *
+   *  Returns:
+   *    The Strophe.Builder object.
+   */
+  attrs: function attrs(moreattrs) {
+    for (var k in moreattrs) {
+      if (Object.prototype.hasOwnProperty.call(moreattrs, k)) {
+        if (moreattrs[k] === undefined) {
+          this.node.removeAttribute(k);
+        } else {
+          this.node.setAttribute(k, moreattrs[k]);
+        }
+      }
+    }
+
+    return this;
+  },
+
+  /** Function: c
+   *  Add a child to the current element and make it the new current
+   *  element.
+   *
+   *  This function moves the current element pointer to the child,
+   *  unless text is provided.  If you need to add another child, it
+   *  is necessary to use up() to go back to the parent in the tree.
+   *
+   *  Parameters:
+   *    (String) name - The name of the child.
+   *    (Object) attrs - The attributes of the child in object notation.
+   *    (String) text - The text to add to the child.
+   *
+   *  Returns:
+   *    The Strophe.Builder object.
+   */
+  c: function c(name, attrs, text) {
+    var child = Strophe.xmlElement(name, attrs, text);
+    this.node.appendChild(child);
+
+    if (typeof text !== "string" && typeof text !== "number") {
+      this.node = child;
+    }
+
+    return this;
+  },
+
+  /** Function: cnode
+   *  Add a child to the current element and make it the new current
+   *  element.
+   *
+   *  This function is the same as c() except that instead of using a
+   *  name and an attributes object to create the child it uses an
+   *  existing DOM element object.
+   *
+   *  Parameters:
+   *    (XMLElement) elem - A DOM element.
+   *
+   *  Returns:
+   *    The Strophe.Builder object.
+   */
+  cnode: function cnode(elem) {
+    var impNode;
+    var xmlGen = Strophe.xmlGenerator();
+
+    try {
+      impNode = xmlGen.importNode !== undefined;
+    } catch (e) {
+      impNode = false;
+    }
+
+    var newElem = impNode ? xmlGen.importNode(elem, true) : Strophe.copyElement(elem);
+    this.node.appendChild(newElem);
+    this.node = newElem;
+    return this;
+  },
+
+  /** Function: t
+   *  Add a child text element.
+   *
+   *  This *does not* make the child the new current element since there
+   *  are no children of text elements.
+   *
+   *  Parameters:
+   *    (String) text - The text data to append to the current element.
+   *
+   *  Returns:
+   *    The Strophe.Builder object.
+   */
+  t: function t(text) {
+    var child = Strophe.xmlTextNode(text);
+    this.node.appendChild(child);
+    return this;
+  },
+
+  /** Function: h
+   *  Replace current element contents with the HTML passed in.
+   *
+   *  This *does not* make the child the new current element
+   *
+   *  Parameters:
+   *    (String) html - The html to insert as contents of current element.
+   *
+   *  Returns:
+   *    The Strophe.Builder object.
+   */
+  h: function h(html) {
+    var fragment = document.createElement('body'); // force the browser to try and fix any invalid HTML tags
+
+    fragment.innerHTML = html; // copy cleaned html into an xml dom
+
+    var xhtml = Strophe.createHtml(fragment);
+
+    while (xhtml.childNodes.length > 0) {
+      this.node.appendChild(xhtml.childNodes[0]);
+    }
+
+    return this;
+  }
+};
+/** PrivateClass: Strophe.Handler
+ *  _Private_ helper class for managing stanza handlers.
+ *
+ *  A Strophe.Handler encapsulates a user provided callback function to be
+ *  executed when matching stanzas are received by the connection.
+ *  Handlers can be either one-off or persistant depending on their
+ *  return value. Returning true will cause a Handler to remain active, and
+ *  returning false will remove the Handler.
+ *
+ *  Users will not use Strophe.Handler objects directly, but instead they
+ *  will use Strophe.Connection.addHandler() and
+ *  Strophe.Connection.deleteHandler().
+ */
+
+/** PrivateConstructor: Strophe.Handler
+ *  Create and initialize a new Strophe.Handler.
+ *
+ *  Parameters:
+ *    (Function) handler - A function to be executed when the handler is run.
+ *    (String) ns - The namespace to match.
+ *    (String) name - The element name to match.
+ *    (String) type - The element type to match.
+ *    (String) id - The element id attribute to match.
+ *    (String) from - The element from attribute to match.
+ *    (Object) options - Handler options
+ *
+ *  Returns:
+ *    A new Strophe.Handler object.
+ */
+
+Strophe.Handler = function (handler, ns, name, type, id, from, options) {
+  this.handler = handler;
+  this.ns = ns;
+  this.name = name;
+  this.type = type;
+  this.id = id;
+  this.options = options || {
+    'matchBareFromJid': false,
+    'ignoreNamespaceFragment': false
+  }; // BBB: Maintain backward compatibility with old `matchBare` option
+
+  if (this.options.matchBare) {
+    Strophe.warn('The "matchBare" option is deprecated, use "matchBareFromJid" instead.');
+    this.options.matchBareFromJid = this.options.matchBare;
+    delete this.options.matchBare;
+  }
+
+  if (this.options.matchBareFromJid) {
+    this.from = from ? Strophe.getBareJidFromJid(from) : null;
+  } else {
+    this.from = from;
+  } // whether the handler is a user handler or a system handler
+
+
+  this.user = true;
+};
+
+Strophe.Handler.prototype = {
+  /** PrivateFunction: getNamespace
+   *  Returns the XML namespace attribute on an element.
+   *  If `ignoreNamespaceFragment` was passed in for this handler, then the
+   *  URL fragment will be stripped.
+   *
+   *  Parameters:
+   *    (XMLElement) elem - The XML element with the namespace.
+   *
+   *  Returns:
+   *    The namespace, with optionally the fragment stripped.
+   */
+  getNamespace: function getNamespace(elem) {
+    var elNamespace = elem.getAttribute("xmlns");
+
+    if (elNamespace && this.options.ignoreNamespaceFragment) {
+      elNamespace = elNamespace.split('#')[0];
+    }
+
+    return elNamespace;
+  },
+
+  /** PrivateFunction: namespaceMatch
+   *  Tests if a stanza matches the namespace set for this Strophe.Handler.
+   *
+   *  Parameters:
+   *    (XMLElement) elem - The XML element to test.
+   *
+   *  Returns:
+   *    true if the stanza matches and false otherwise.
+   */
+  namespaceMatch: function namespaceMatch(elem) {
+    var _this = this;
+
+    var nsMatch = false;
+
+    if (!this.ns) {
+      return true;
+    } else {
+      Strophe.forEachChild(elem, null, function (elem) {
+        if (_this.getNamespace(elem) === _this.ns) {
+          nsMatch = true;
+        }
+      });
+      return nsMatch || this.getNamespace(elem) === this.ns;
+    }
+  },
+
+  /** PrivateFunction: isMatch
+   *  Tests if a stanza matches the Strophe.Handler.
+   *
+   *  Parameters:
+   *    (XMLElement) elem - The XML element to test.
+   *
+   *  Returns:
+   *    true if the stanza matches and false otherwise.
+   */
+  isMatch: function isMatch(elem) {
+    var from = elem.getAttribute('from');
+
+    if (this.options.matchBareFromJid) {
+      from = Strophe.getBareJidFromJid(from);
+    }
+
+    var elem_type = elem.getAttribute("type");
+
+    if (this.namespaceMatch(elem) && (!this.name || Strophe.isTagEqual(elem, this.name)) && (!this.type || (Array.isArray(this.type) ? this.type.indexOf(elem_type) !== -1 : elem_type === this.type)) && (!this.id || elem.getAttribute("id") === this.id) && (!this.from || from === this.from)) {
+      return true;
+    }
+
+    return false;
+  },
+
+  /** PrivateFunction: run
+   *  Run the callback on a matching stanza.
+   *
+   *  Parameters:
+   *    (XMLElement) elem - The DOM element that triggered the
+   *      Strophe.Handler.
+   *
+   *  Returns:
+   *    A boolean indicating if the handler should remain active.
+   */
+  run: function run(elem) {
+    var result = null;
+
+    try {
+      result = this.handler(elem);
+    } catch (e) {
+      Strophe._handleError(e);
+
+      throw e;
+    }
+
+    return result;
+  },
+
+  /** PrivateFunction: toString
+   *  Get a String representation of the Strophe.Handler object.
+   *
+   *  Returns:
+   *    A String.
+   */
+  toString: function toString() {
+    return "{Handler: " + this.handler + "(" + this.name + "," + this.id + "," + this.ns + ")}";
+  }
+};
+/** PrivateClass: Strophe.TimedHandler
+ *  _Private_ helper class for managing timed handlers.
+ *
+ *  A Strophe.TimedHandler encapsulates a user provided callback that
+ *  should be called after a certain period of time or at regular
+ *  intervals.  The return value of the callback determines whether the
+ *  Strophe.TimedHandler will continue to fire.
+ *
+ *  Users will not use Strophe.TimedHandler objects directly, but instead
+ *  they will use Strophe.Connection.addTimedHandler() and
+ *  Strophe.Connection.deleteTimedHandler().
+ */
+
+/** PrivateConstructor: Strophe.TimedHandler
+ *  Create and initialize a new Strophe.TimedHandler object.
+ *
+ *  Parameters:
+ *    (Integer) period - The number of milliseconds to wait before the
+ *      handler is called.
+ *    (Function) handler - The callback to run when the handler fires.  This
+ *      function should take no arguments.
+ *
+ *  Returns:
+ *    A new Strophe.TimedHandler object.
+ */
+
+Strophe.TimedHandler = function (period, handler) {
+  this.period = period;
+  this.handler = handler;
+  this.lastCalled = new Date().getTime();
+  this.user = true;
+};
+
+Strophe.TimedHandler.prototype = {
+  /** PrivateFunction: run
+   *  Run the callback for the Strophe.TimedHandler.
+   *
+   *  Returns:
+   *    true if the Strophe.TimedHandler should be called again, and false
+   *      otherwise.
+   */
+  run: function run() {
+    this.lastCalled = new Date().getTime();
+    return this.handler();
+  },
+
+  /** PrivateFunction: reset
+   *  Reset the last called time for the Strophe.TimedHandler.
+   */
+  reset: function reset() {
+    this.lastCalled = new Date().getTime();
+  },
+
+  /** PrivateFunction: toString
+   *  Get a string representation of the Strophe.TimedHandler object.
+   *
+   *  Returns:
+   *    The string representation.
+   */
+  toString: function toString() {
+    return "{TimedHandler: " + this.handler + "(" + this.period + ")}";
+  }
+};
+/** Class: Strophe.Connection
+ *  XMPP Connection manager.
+ *
+ *  This class is the main part of Strophe.  It manages a BOSH or websocket
+ *  connection to an XMPP server and dispatches events to the user callbacks
+ *  as data arrives. It supports SASL PLAIN, SASL DIGEST-MD5, SASL SCRAM-SHA1
+ *  and legacy authentication.
+ *
+ *  After creating a Strophe.Connection object, the user will typically
+ *  call connect() with a user supplied callback to handle connection level
+ *  events like authentication failure, disconnection, or connection
+ *  complete.
+ *
+ *  The user will also have several event handlers defined by using
+ *  addHandler() and addTimedHandler().  These will allow the user code to
+ *  respond to interesting stanzas or do something periodically with the
+ *  connection. These handlers will be active once authentication is
+ *  finished.
+ *
+ *  To send data to the connection, use send().
+ */
+
+/** Constructor: Strophe.Connection
+ *  Create and initialize a Strophe.Connection object.
+ *
+ *  The transport-protocol for this connection will be chosen automatically
+ *  based on the given service parameter. URLs starting with "ws://" or
+ *  "wss://" will use WebSockets, URLs starting with "http://", "https://"
+ *  or without a protocol will use BOSH.
+ *
+ *  To make Strophe connect to the current host you can leave out the protocol
+ *  and host part and just pass the path, e.g.
+ *
+ *  > let conn = new Strophe.Connection("/http-bind/");
+ *
+ *  Options common to both Websocket and BOSH:
+ *  ------------------------------------------
+ *
+ *  cookies:
+ *
+ *  The *cookies* option allows you to pass in cookies to be added to the
+ *  document. These cookies will then be included in the BOSH XMLHttpRequest
+ *  or in the websocket connection.
+ *
+ *  The passed in value must be a map of cookie names and string values.
+ *
+ *  > { "myCookie": {
+ *  >     "value": "1234",
+ *  >     "domain": ".example.org",
+ *  >     "path": "/",
+ *  >     "expires": expirationDate
+ *  >     }
+ *  > }
+ *
+ *  Note that cookies can't be set in this way for other domains (i.e. cross-domain).
+ *  Those cookies need to be set under those domains, for example they can be
+ *  set server-side by making a XHR call to that domain to ask it to set any
+ *  necessary cookies.
+ *
+ *  mechanisms:
+ *
+ *  The *mechanisms* option allows you to specify the SASL mechanisms that this
+ *  instance of Strophe.Connection (and therefore your XMPP client) will
+ *  support.
+ *
+ *  The value must be an array of objects with Strophe.SASLMechanism
+ *  prototypes.
+ *
+ *  If nothing is specified, then the following mechanisms (and their
+ *  priorities) are registered:
+ *
+ *      SCRAM-SHA1 - 70
+ *      DIGEST-MD5 - 60
+ *      PLAIN - 50
+ *      OAUTH-BEARER - 40
+ *      OAUTH-2 - 30
+ *      ANONYMOUS - 20
+ *      EXTERNAL - 10
+ *
+ *  WebSocket options:
+ *  ------------------
+ *
+ *  If you want to connect to the current host with a WebSocket connection you
+ *  can tell Strophe to use WebSockets through a "protocol" attribute in the
+ *  optional options parameter. Valid values are "ws" for WebSocket and "wss"
+ *  for Secure WebSocket.
+ *  So to connect to "wss://CURRENT_HOSTNAME/xmpp-websocket" you would call
+ *
+ *  > let conn = new Strophe.Connection("/xmpp-websocket/", {protocol: "wss"});
+ *
+ *  Note that relative URLs _NOT_ starting with a "/" will also include the path
+ *  of the current site.
+ *
+ *  Also because downgrading security is not permitted by browsers, when using
+ *  relative URLs both BOSH and WebSocket connections will use their secure
+ *  variants if the current connection to the site is also secure (https).
+ *
+ *  BOSH options:
+ *  -------------
+ *
+ *  By adding "sync" to the options, you can control if requests will
+ *  be made synchronously or not. The default behaviour is asynchronous.
+ *  If you want to make requests synchronous, make "sync" evaluate to true.
+ *  > let conn = new Strophe.Connection("/http-bind/", {sync: true});
+ *
+ *  You can also toggle this on an already established connection.
+ *  > conn.options.sync = true;
+ *
+ *  The *customHeaders* option can be used to provide custom HTTP headers to be
+ *  included in the XMLHttpRequests made.
+ *
+ *  The *keepalive* option can be used to instruct Strophe to maintain the
+ *  current BOSH session across interruptions such as webpage reloads.
+ *
+ *  It will do this by caching the sessions tokens in sessionStorage, and when
+ *  "restore" is called it will check whether there are cached tokens with
+ *  which it can resume an existing session.
+ *
+ *  The *withCredentials* option should receive a Boolean value and is used to
+ *  indicate wether cookies should be included in ajax requests (by default
+ *  they're not).
+ *  Set this value to true if you are connecting to a BOSH service
+ *  and for some reason need to send cookies to it.
+ *  In order for this to work cross-domain, the server must also enable
+ *  credentials by setting the Access-Control-Allow-Credentials response header
+ *  to "true". For most usecases however this setting should be false (which
+ *  is the default).
+ *  Additionally, when using Access-Control-Allow-Credentials, the
+ *  Access-Control-Allow-Origin header can't be set to the wildcard "*", but
+ *  instead must be restricted to actual domains.
+ *
+ *  The *contentType* option can be set to change the default Content-Type
+ *  of "text/xml; charset=utf-8", which can be useful to reduce the amount of
+ *  CORS preflight requests that are sent to the server.
+ *
+ *  Parameters:
+ *    (String) service - The BOSH or WebSocket service URL.
+ *    (Object) options - A hash of configuration options
+ *
+ *  Returns:
+ *    A new Strophe.Connection object.
+ */
+
+Strophe.Connection = function (service, options) {
+  var _this2 = this;
+
+  // The service URL
+  this.service = service; // Configuration options
+
+  this.options = options || {};
+  var proto = this.options.protocol || ""; // Select protocal based on service or options
+
+  if (service.indexOf("ws:") === 0 || service.indexOf("wss:") === 0 || proto.indexOf("ws") === 0) {
+    this._proto = new Strophe.Websocket(this);
+  } else {
+    this._proto = new Strophe.Bosh(this);
+  }
+  /* The connected JID. */
+
+
+  this.jid = "";
+  /* the JIDs domain */
+
+  this.domain = null;
+  /* stream:features */
+
+  this.features = null; // SASL
+
+  this._sasl_data = {};
+  this.do_session = false;
+  this.do_bind = false; // handler lists
+
+  this.timedHandlers = [];
+  this.handlers = [];
+  this.removeTimeds = [];
+  this.removeHandlers = [];
+  this.addTimeds = [];
+  this.addHandlers = [];
+  this.protocolErrorHandlers = {
+    'HTTP': {},
+    'websocket': {}
+  };
+  this._idleTimeout = null;
+  this._disconnectTimeout = null;
+  this.authenticated = false;
+  this.connected = false;
+  this.disconnecting = false;
+  this.do_authentication = true;
+  this.paused = false;
+  this.restored = false;
+  this._data = [];
+  this._uniqueId = 0;
+  this._sasl_success_handler = null;
+  this._sasl_failure_handler = null;
+  this._sasl_challenge_handler = null; // Max retries before disconnecting
+
+  this.maxRetries = 5; // Call onIdle callback every 1/10th of a second
+
+  this._idleTimeout = setTimeout(function () {
+    return _this2._onIdle();
+  }, 100);
+  utils__WEBPACK_IMPORTED_MODULE_2__["default"].addCookies(this.options.cookies);
+  this.registerSASLMechanisms(this.options.mechanisms); // initialize plugins
+
+  for (var k in Strophe._connectionPlugins) {
+    if (Object.prototype.hasOwnProperty.call(Strophe._connectionPlugins, k)) {
+      var F = function F() {};
+
+      F.prototype = Strophe._connectionPlugins[k];
+      this[k] = new F();
+      this[k].init(this);
+    }
+  }
+};
+
+Strophe.Connection.prototype = {
+  /** Function: reset
+   *  Reset the connection.
+   *
+   *  This function should be called after a connection is disconnected
+   *  before that connection is reused.
+   */
+  reset: function reset() {
+    this._proto._reset(); // SASL
+
+
+    this.do_session = false;
+    this.do_bind = false; // handler lists
+
+    this.timedHandlers = [];
+    this.handlers = [];
+    this.removeTimeds = [];
+    this.removeHandlers = [];
+    this.addTimeds = [];
+    this.addHandlers = [];
+    this.authenticated = false;
+    this.connected = false;
+    this.disconnecting = false;
+    this.restored = false;
+    this._data = [];
+    this._requests = [];
+    this._uniqueId = 0;
+  },
+
+  /** Function: pause
+   *  Pause the request manager.
+   *
+   *  This will prevent Strophe from sending any more requests to the
+   *  server.  This is very useful for temporarily pausing
+   *  BOSH-Connections while a lot of send() calls are happening quickly.
+   *  This causes Strophe to send the data in a single request, saving
+   *  many request trips.
+   */
+  pause: function pause() {
+    this.paused = true;
+  },
+
+  /** Function: resume
+   *  Resume the request manager.
+   *
+   *  This resumes after pause() has been called.
+   */
+  resume: function resume() {
+    this.paused = false;
+  },
+
+  /** Function: getUniqueId
+   *  Generate a unique ID for use in <iq/> elements.
+   *
+   *  All <iq/> stanzas are required to have unique id attributes.  This
+   *  function makes creating these easy.  Each connection instance has
+   *  a counter which starts from zero, and the value of this counter
+   *  plus a colon followed by the suffix becomes the unique id. If no
+   *  suffix is supplied, the counter is used as the unique id.
+   *
+   *  Suffixes are used to make debugging easier when reading the stream
+   *  data, and their use is recommended.  The counter resets to 0 for
+   *  every new connection for the same reason.  For connections to the
+   *  same server that authenticate the same way, all the ids should be
+   *  the same, which makes it easy to see changes.  This is useful for
+   *  automated testing as well.
+   *
+   *  Parameters:
+   *    (String) suffix - A optional suffix to append to the id.
+   *
+   *  Returns:
+   *    A unique string to be used for the id attribute.
+   */
+  getUniqueId: function getUniqueId(suffix) {
+    var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
+      var r = Math.random() * 16 | 0,
+          v = c === 'x' ? r : r & 0x3 | 0x8;
+      return v.toString(16);
+    });
+
+    if (typeof suffix === "string" || typeof suffix === "number") {
+      return uuid + ":" + suffix;
+    } else {
+      return uuid + "";
+    }
+  },
+
+  /** Function: addProtocolErrorHandler
+   *  Register a handler function for when a protocol (websocker or HTTP)
+   *  error occurs.
+   *
+   *  NOTE: Currently only HTTP errors for BOSH requests are handled.
+   *  Patches that handle websocket errors would be very welcome.
+   *
+   *  Parameters:
+   *    (String) protocol - 'HTTP' or 'websocket'
+   *    (Integer) status_code - Error status code (e.g 500, 400 or 404)
+   *    (Function) callback - Function that will fire on Http error
+   *
+   *  Example:
+   *  function onError(err_code){
+   *    //do stuff
+   *  }
+   *
+   *  let conn = Strophe.connect('http://example.com/http-bind');
+   *  conn.addProtocolErrorHandler('HTTP', 500, onError);
+   *  // Triggers HTTP 500 error and onError handler will be called
+   *  conn.connect('user_jid@incorrect_jabber_host', 'secret', onConnect);
+   */
+  addProtocolErrorHandler: function addProtocolErrorHandler(protocol, status_code, callback) {
+    this.protocolErrorHandlers[protocol][status_code] = callback;
+  },
+
+  /** Function: connect
+   *  Starts the connection process.
+   *
+   *  As the connection process proceeds, the user supplied callback will
+   *  be triggered multiple times with status updates.  The callback
+   *  should take two arguments - the status code and the error condition.
+   *
+   *  The status code will be one of the values in the Strophe.Status
+   *  constants.  The error condition will be one of the conditions
+   *  defined in RFC 3920 or the condition 'strophe-parsererror'.
+   *
+   *  The Parameters _wait_, _hold_ and _route_ are optional and only relevant
+   *  for BOSH connections. Please see XEP 124 for a more detailed explanation
+   *  of the optional parameters.
+   *
+   *  Parameters:
+   *    (String) jid - The user's JID.  This may be a bare JID,
+   *      or a full JID.  If a node is not supplied, SASL OAUTHBEARER or
+   *      SASL ANONYMOUS authentication will be attempted (OAUTHBEARER will
+   *      process the provided password value as an access token).
+   *    (String) pass - The user's password.
+   *    (Function) callback - The connect callback function.
+   *    (Integer) wait - The optional HTTPBIND wait value.  This is the
+   *      time the server will wait before returning an empty result for
+   *      a request.  The default setting of 60 seconds is recommended.
+   *    (Integer) hold - The optional HTTPBIND hold value.  This is the
+   *      number of connections the server will hold at one time.  This
+   *      should almost always be set to 1 (the default).
+   *    (String) route - The optional route value.
+   *    (String) authcid - The optional alternative authentication identity
+   *      (username) if intending to impersonate another user.
+   *      When using the SASL-EXTERNAL authentication mechanism, for example
+   *      with client certificates, then the authcid value is used to
+   *      determine whether an authorization JID (authzid) should be sent to
+   *      the server. The authzid should not be sent to the server if the
+   *      authzid and authcid are the same. So to prevent it from being sent
+   *      (for example when the JID is already contained in the client
+   *      certificate), set authcid to that same JID. See XEP-178 for more
+   *      details.
+   */
+  connect: function connect(jid, pass, callback, wait, hold, route, authcid) {
+    this.jid = jid;
+    /** Variable: authzid
+     *  Authorization identity.
+     */
+
+    this.authzid = Strophe.getBareJidFromJid(this.jid);
+    /** Variable: authcid
+     *  Authentication identity (User name).
+     */
+
+    this.authcid = authcid || Strophe.getNodeFromJid(this.jid);
+    /** Variable: pass
+     *  Authentication identity (User password).
+     */
+
+    this.pass = pass;
+    /** Variable: servtype
+     *  Digest MD5 compatibility.
+     */
+
+    this.servtype = "xmpp";
+    this.connect_callback = callback;
+    this.disconnecting = false;
+    this.connected = false;
+    this.authenticated = false;
+    this.restored = false; // parse jid for domain
+
+    this.domain = Strophe.getDomainFromJid(this.jid);
+
+    this._changeConnectStatus(Strophe.Status.CONNECTING, null);
+
+    this._proto._connect(wait, hold, route);
+  },
+
+  /** Function: attach
+   *  Attach to an already created and authenticated BOSH session.
+   *
+   *  This function is provided to allow Strophe to attach to BOSH
+   *  sessions which have been created externally, perhaps by a Web
+   *  application.  This is often used to support auto-login type features
+   *  without putting user credentials into the page.
+   *
+   *  Parameters:
+   *    (String) jid - The full JID that is bound by the session.
+   *    (String) sid - The SID of the BOSH session.
+   *    (String) rid - The current RID of the BOSH session.  This RID
+   *      will be used by the next request.
+   *    (Function) callback The connect callback function.
+   *    (Integer) wait - The optional HTTPBIND wait value.  This is the
+   *      time the server will wait before returning an empty result for
+   *      a request.  The default setting of 60 seconds is recommended.
+   *      Other settings will require tweaks to the Strophe.TIMEOUT value.
+   *    (Integer) hold - The optional HTTPBIND hold value.  This is the
+   *      number of connections the server will hold at one time.  This
+   *      should almost always be set to 1 (the default).
+   *    (Integer) wind - The optional HTTBIND window value.  This is the
+   *      allowed range of request ids that are valid.  The default is 5.
+   */
+  attach: function attach(jid, sid, rid, callback, wait, hold, wind) {
+    if (this._proto instanceof Strophe.Bosh) {
+      this._proto._attach(jid, sid, rid, callback, wait, hold, wind);
+    } else {
+      var error = new Error('The "attach" method can only be used with a BOSH connection.');
+      error.name = 'StropheSessionError';
+      throw error;
+    }
+  },
+
+  /** Function: restore
+   *  Attempt to restore a cached BOSH session.
+   *
+   *  This function is only useful in conjunction with providing the
+   *  "keepalive":true option when instantiating a new Strophe.Connection.
+   *
+   *  When "keepalive" is set to true, Strophe will cache the BOSH tokens
+   *  RID (Request ID) and SID (Session ID) and then when this function is
+   *  called, it will attempt to restore the session from those cached
+   *  tokens.
+   *
+   *  This function must therefore be called instead of connect or attach.
+   *
+   *  For an example on how to use it, please see examples/restore.js
+   *
+   *  Parameters:
+   *    (String) jid - The user's JID.  This may be a bare JID or a full JID.
+   *    (Function) callback - The connect callback function.
+   *    (Integer) wait - The optional HTTPBIND wait value.  This is the
+   *      time the server will wait before returning an empty result for
+   *      a request.  The default setting of 60 seconds is recommended.
+   *    (Integer) hold - The optional HTTPBIND hold value.  This is the
+   *      number of connections the server will hold at one time.  This
+   *      should almost always be set to 1 (the default).
+   *    (Integer) wind - The optional HTTBIND window value.  This is the
+   *      allowed range of request ids that are valid.  The default is 5.
+   */
+  restore: function restore(jid, callback, wait, hold, wind) {
+    if (this._sessionCachingSupported()) {
+      this._proto._restore(jid, callback, wait, hold, wind);
+    } else {
+      var error = new Error('The "restore" method can only be used with a BOSH connection.');
+      error.name = 'StropheSessionError';
+      throw error;
+    }
+  },
+
+  /** PrivateFunction: _sessionCachingSupported
+   * Checks whether sessionStorage and JSON are supported and whether we're
+   * using BOSH.
+   */
+  _sessionCachingSupported: function _sessionCachingSupported() {
+    if (this._proto instanceof Strophe.Bosh) {
+      if (!JSON) {
+        return false;
+      }
+
+      try {
+        sessionStorage.setItem('_strophe_', '_strophe_');
+        sessionStorage.removeItem('_strophe_');
+      } catch (e) {
+        return false;
+      }
+
+      return true;
+    }
+
+    return false;
+  },
+
+  /** Function: xmlInput
+   *  User overrideable function that receives XML data coming into the
+   *  connection.
+   *
+   *  The default function does nothing.  User code can override this with
+   *  > Strophe.Connection.xmlInput = function (elem) {
+   *  >   (user code)
+   *  > };
+   *
+   *  Due to limitations of current Browsers' XML-Parsers the opening and closing
+   *  <stream> tag for WebSocket-Connoctions will be passed as selfclosing here.
+   *
+   *  BOSH-Connections will have all stanzas wrapped in a <body> tag. See
+   *  <Strophe.Bosh.strip> if you want to strip this tag.
+   *
+   *  Parameters:
+   *    (XMLElement) elem - The XML data received by the connection.
+   */
+
+  /* jshint unused:false */
+  xmlInput: function xmlInput(elem) {
+    return;
+  },
+
+  /* jshint unused:true */
+
+  /** Function: xmlOutput
+   *  User overrideable function that receives XML data sent to the
+   *  connection.
+   *
+   *  The default function does nothing.  User code can override this with
+   *  > Strophe.Connection.xmlOutput = function (elem) {
+   *  >   (user code)
+   *  > };
+   *
+   *  Due to limitations of current Browsers' XML-Parsers the opening and closing
+   *  <stream> tag for WebSocket-Connoctions will be passed as selfclosing here.
+   *
+   *  BOSH-Connections will have all stanzas wrapped in a <body> tag. See
+   *  <Strophe.Bosh.strip> if you want to strip this tag.
+   *
+   *  Parameters:
+   *    (XMLElement) elem - The XMLdata sent by the connection.
+   */
+
+  /* jshint unused:false */
+  xmlOutput: function xmlOutput(elem) {
+    return;
+  },
+
+  /* jshint unused:true */
+
+  /** Function: rawInput
+   *  User overrideable function that receives raw data coming into the
+   *  connection.
+   *
+   *  The default function does nothing.  User code can override this with
+   *  > Strophe.Connection.rawInput = function (data) {
+   *  >   (user code)
+   *  > };
+   *
+   *  Parameters:
+   *    (String) data - The data received by the connection.
+   */
+
+  /* jshint unused:false */
+  rawInput: function rawInput(data) {
+    return;
+  },
+
+  /* jshint unused:true */
+
+  /** Function: rawOutput
+   *  User overrideable function that receives raw data sent to the
+   *  connection.
+   *
+   *  The default function does nothing.  User code can override this with
+   *  > Strophe.Connection.rawOutput = function (data) {
+   *  >   (user code)
+   *  > };
+   *
+   *  Parameters:
+   *    (String) data - The data sent by the connection.
+   */
+
+  /* jshint unused:false */
+  rawOutput: function rawOutput(data) {
+    return;
+  },
+
+  /* jshint unused:true */
+
+  /** Function: nextValidRid
+   *  User overrideable function that receives the new valid rid.
+   *
+   *  The default function does nothing. User code can override this with
+   *  > Strophe.Connection.nextValidRid = function (rid) {
+   *  >    (user code)
+   *  > };
+   *
+   *  Parameters:
+   *    (Number) rid - The next valid rid
+   */
+
+  /* jshint unused:false */
+  nextValidRid: function nextValidRid(rid) {
+    return;
+  },
+
+  /* jshint unused:true */
+
+  /** Function: send
+   *  Send a stanza.
+   *
+   *  This function is called to push data onto the send queue to
+   *  go out over the wire.  Whenever a request is sent to the BOSH
+   *  server, all pending data is sent and the queue is flushed.
+   *
+   *  Parameters:
+   *    (XMLElement |
+   *     [XMLElement] |
+   *     Strophe.Builder) elem - The stanza to send.
+   */
+  send: function send(elem) {
+    if (elem === null) {
+      return;
+    }
+
+    if (typeof elem.sort === "function") {
+      for (var i = 0; i < elem.length; i++) {
+        this._queueData(elem[i]);
+      }
+    } else if (typeof elem.tree === "function") {
+      this._queueData(elem.tree());
+    } else {
+      this._queueData(elem);
+    }
+
+    this._proto._send();
+  },
+
+  /** Function: flush
+   *  Immediately send any pending outgoing data.
+   *
+   *  Normally send() queues outgoing data until the next idle period
+   *  (100ms), which optimizes network use in the common cases when
+   *  several send()s are called in succession. flush() can be used to
+   *  immediately send all pending data.
+   */
+  flush: function flush() {
+    // cancel the pending idle period and run the idle function
+    // immediately
+    clearTimeout(this._idleTimeout);
+
+    this._onIdle();
+  },
+
+  /** Function: sendPresence
+   *  Helper function to send presence stanzas. The main benefit is for
+   *  sending presence stanzas for which you expect a responding presence
+   *  stanza with the same id (for example when leaving a chat room).
+   *
+   *  Parameters:
+   *    (XMLElement) elem - The stanza to send.
+   *    (Function) callback - The callback function for a successful request.
+   *    (Function) errback - The callback function for a failed or timed
+   *      out request.  On timeout, the stanza will be null.
+   *    (Integer) timeout - The time specified in milliseconds for a
+   *      timeout to occur.
+   *
+   *  Returns:
+   *    The id used to send the presence.
+   */
+  sendPresence: function sendPresence(elem, callback, errback, timeout) {
+    var _this3 = this;
+
+    var timeoutHandler = null;
+
+    if (typeof elem.tree === "function") {
+      elem = elem.tree();
+    }
+
+    var id = elem.getAttribute('id');
+
+    if (!id) {
+      // inject id if not found
+      id = this.getUniqueId("sendPresence");
+      elem.setAttribute("id", id);
+    }
+
+    if (typeof callback === "function" || typeof errback === "function") {
+      var handler = this.addHandler(function (stanza) {
+        // remove timeout handler if there is one
+        if (timeoutHandler) {
+          _this3.deleteTimedHandler(timeoutHandler);
+        }
+
+        if (stanza.getAttribute('type') === 'error') {
+          if (errback) {
+            errback(stanza);
+          }
+        } else if (callback) {
+          callback(stanza);
+        }
+      }, null, 'presence', null, id); // if timeout specified, set up a timeout handler.
+
+      if (timeout) {
+        timeoutHandler = this.addTimedHandler(timeout, function () {
+          // get rid of normal handler
+          _this3.deleteHandler(handler); // call errback on timeout with null stanza
+
+
+          if (errback) {
+            errback(null);
+          }
+
+          return false;
+        });
+      }
+    }
+
+    this.send(elem);
+    return id;
+  },
+
+  /** Function: sendIQ
+   *  Helper function to send IQ stanzas.
+   *
+   *  Parameters:
+   *    (XMLElement) elem - The stanza to send.
+   *    (Function) callback - The callback function for a successful request.
+   *    (Function) errback - The callback function for a failed or timed
+   *      out request.  On timeout, the stanza will be null.
+   *    (Integer) timeout - The time specified in milliseconds for a
+   *      timeout to occur.
+   *
+   *  Returns:
+   *    The id used to send the IQ.
+  */
+  sendIQ: function sendIQ(elem, callback, errback, timeout) {
+    var _this4 = this;
+
+    var timeoutHandler = null;
+
+    if (typeof elem.tree === "function") {
+      elem = elem.tree();
+    }
+
+    var id = elem.getAttribute('id');
+
+    if (!id) {
+      // inject id if not found
+      id = this.getUniqueId("sendIQ");
+      elem.setAttribute("id", id);
+    }
+
+    if (typeof callback === "function" || typeof errback === "function") {
+      var handler = this.addHandler(function (stanza) {
+        // remove timeout handler if there is one
+        if (timeoutHandler) {
+          _this4.deleteTimedHandler(timeoutHandler);
+        }
+
+        var iqtype = stanza.getAttribute('type');
+
+        if (iqtype === 'result') {
+          if (callback) {
+            callback(stanza);
+          }
+        } else if (iqtype === 'error') {
+          if (errback) {
+            errback(stanza);
+          }
+        } else {
+          var error = new Error("Got bad IQ type of ".concat(iqtype));
+          error.name = "StropheError";
+          throw error;
+        }
+      }, null, 'iq', ['error', 'result'], id); // if timeout specified, set up a timeout handler.
+
+      if (timeout) {
+        timeoutHandler = this.addTimedHandler(timeout, function () {
+          // get rid of normal handler
+          _this4.deleteHandler(handler); // call errback on timeout with null stanza
+
+
+          if (errback) {
+            errback(null);
+          }
+
+          return false;
+        });
+      }
+    }
+
+    this.send(elem);
+    return id;
+  },
+
+  /** PrivateFunction: _queueData
+   *  Queue outgoing data for later sending.  Also ensures that the data
+   *  is a DOMElement.
+   */
+  _queueData: function _queueData(element) {
+    if (element === null || !element.tagName || !element.childNodes) {
+      var error = new Error("Cannot queue non-DOMElement.");
+      error.name = "StropheError";
+      throw error;
+    }
+
+    this._data.push(element);
+  },
+
+  /** PrivateFunction: _sendRestart
+   *  Send an xmpp:restart stanza.
+   */
+  _sendRestart: function _sendRestart() {
+    var _this5 = this;
+
+    this._data.push("restart");
+
+    this._proto._sendRestart();
+
+    this._idleTimeout = setTimeout(function () {
+      return _this5._onIdle();
+    }, 100);
+  },
+
+  /** Function: addTimedHandler
+   *  Add a timed handler to the connection.
+   *
+   *  This function adds a timed handler.  The provided handler will
+   *  be called every period milliseconds until it returns false,
+   *  the connection is terminated, or the handler is removed.  Handlers
+   *  that wish to continue being invoked should return true.
+   *
+   *  Because of method binding it is necessary to save the result of
+   *  this function if you wish to remove a handler with
+   *  deleteTimedHandler().
+   *
+   *  Note that user handlers are not active until authentication is
+   *  successful.
+   *
+   *  Parameters:
+   *    (Integer) period - The period of the handler.
+   *    (Function) handler - The callback function.
+   *
+   *  Returns:
+   *    A reference to the handler that can be used to remove it.
+   */
+  addTimedHandler: function addTimedHandler(period, handler) {
+    var thand = new Strophe.TimedHandler(period, handler);
+    this.addTimeds.push(thand);
+    return thand;
+  },
+
+  /** Function: deleteTimedHandler
+   *  Delete a timed handler for a connection.
+   *
+   *  This function removes a timed handler from the connection.  The
+   *  handRef parameter is *not* the function passed to addTimedHandler(),
+   *  but is the reference returned from addTimedHandler().
+   *
+   *  Parameters:
+   *    (Strophe.TimedHandler) handRef - The handler reference.
+   */
+  deleteTimedHandler: function deleteTimedHandler(handRef) {
+    // this must be done in the Idle loop so that we don't change
+    // the handlers during iteration
+    this.removeTimeds.push(handRef);
+  },
+
+  /** Function: addHandler
+   *  Add a stanza handler for the connection.
+   *
+   *  This function adds a stanza handler to the connection.  The
+   *  handler callback will be called for any stanza that matches
+   *  the parameters.  Note that if multiple parameters are supplied,
+   *  they must all match for the handler to be invoked.
+   *
+   *  The handler will receive the stanza that triggered it as its argument.
+   *  *The handler should return true if it is to be invoked again;
+   *  returning false will remove the handler after it returns.*
+   *
+   *  As a convenience, the ns parameters applies to the top level element
+   *  and also any of its immediate children.  This is primarily to make
+   *  matching /iq/query elements easy.
+   *
+   *  Options
+   *  ~~~~~~~
+   *  With the options argument, you can specify boolean flags that affect how
+   *  matches are being done.
+   *
+   *  Currently two flags exist:
+   *
+   *  - matchBareFromJid:
+   *      When set to true, the from parameter and the
+   *      from attribute on the stanza will be matched as bare JIDs instead
+   *      of full JIDs. To use this, pass {matchBareFromJid: true} as the
+   *      value of options. The default value for matchBareFromJid is false.
+   *
+   *  - ignoreNamespaceFragment:
+   *      When set to true, a fragment specified on the stanza's namespace
+   *      URL will be ignored when it's matched with the one configured for
+   *      the handler.
+   *
+   *      This means that if you register like this:
+   *      >   connection.addHandler(
+   *      >       handler,
+   *      >       'http://jabber.org/protocol/muc',
+   *      >       null, null, null, null,
+   *      >       {'ignoreNamespaceFragment': true}
+   *      >   );
+   *
+   *      Then a stanza with XML namespace of
+   *      'http://jabber.org/protocol/muc#user' will also be matched. If
+   *      'ignoreNamespaceFragment' is false, then only stanzas with
+   *      'http://jabber.org/protocol/muc' will be matched.
+   *
+   *  Deleting the handler
+   *  ~~~~~~~~~~~~~~~~~~~~
+   *  The return value should be saved if you wish to remove the handler
+   *  with deleteHandler().
+   *
+   *  Parameters:
+   *    (Function) handler - The user callback.
+   *    (String) ns - The namespace to match.
+   *    (String) name - The stanza name to match.
+   *    (String|Array) type - The stanza type (or types if an array) to match.
+   *    (String) id - The stanza id attribute to match.
+   *    (String) from - The stanza from attribute to match.
+   *    (String) options - The handler options
+   *
+   *  Returns:
+   *    A reference to the handler that can be used to remove it.
+   */
+  addHandler: function addHandler(handler, ns, name, type, id, from, options) {
+    var hand = new Strophe.Handler(handler, ns, name, type, id, from, options);
+    this.addHandlers.push(hand);
+    return hand;
+  },
+
+  /** Function: deleteHandler
+   *  Delete a stanza handler for a connection.
+   *
+   *  This function removes a stanza handler from the connection.  The
+   *  handRef parameter is *not* the function passed to addHandler(),
+   *  but is the reference returned from addHandler().
+   *
+   *  Parameters:
+   *    (Strophe.Handler) handRef - The handler reference.
+   */
+  deleteHandler: function deleteHandler(handRef) {
+    // this must be done in the Idle loop so that we don't change
+    // the handlers during iteration
+    this.removeHandlers.push(handRef); // If a handler is being deleted while it is being added,
+    // prevent it from getting added
+
+    var i = this.addHandlers.indexOf(handRef);
+
+    if (i >= 0) {
+      this.addHandlers.splice(i, 1);
+    }
+  },
+
+  /** Function: registerSASLMechanisms
+   *
+   * Register the SASL mechanisms which will be supported by this instance of
+   * Strophe.Connection (i.e. which this XMPP client will support).
+   *
+   *  Parameters:
+   *    (Array) mechanisms - Array of objects with Strophe.SASLMechanism prototypes
+   *
+   */
+  registerSASLMechanisms: function registerSASLMechanisms(mechanisms) {
+    this.mechanisms = {};
+    mechanisms = mechanisms || [Strophe.SASLAnonymous, Strophe.SASLExternal, Strophe.SASLMD5, Strophe.SASLOAuthBearer, Strophe.SASLXOAuth2, Strophe.SASLPlain, Strophe.SASLSHA1];
+    mechanisms.forEach(this.registerSASLMechanism.bind(this));
+  },
+
+  /** Function: registerSASLMechanism
+   *
+   * Register a single SASL mechanism, to be supported by this client.
+   *
+   *  Parameters:
+   *    (Object) mechanism - Object with a Strophe.SASLMechanism prototype
+   *
+   */
+  registerSASLMechanism: function registerSASLMechanism(mechanism) {
+    this.mechanisms[mechanism.prototype.name] = mechanism;
+  },
+
+  /** Function: disconnect
+   *  Start the graceful disconnection process.
+   *
+   *  This function starts the disconnection process.  This process starts
+   *  by sending unavailable presence and sending BOSH body of type
+   *  terminate.  A timeout handler makes sure that disconnection happens
+   *  even if the BOSH server does not respond.
+   *  If the Connection object isn't connected, at least tries to abort all pending requests
+   *  so the connection object won't generate successful requests (which were already opened).
+   *
+   *  The user supplied connection callback will be notified of the
+   *  progress as this process happens.
+   *
+   *  Parameters:
+   *    (String) reason - The reason the disconnect is occuring.
+   */
+  disconnect: function disconnect(reason) {
+    this._changeConnectStatus(Strophe.Status.DISCONNECTING, reason);
+
+    Strophe.info("Disconnect was called because: " + reason);
+
+    if (this.connected) {
+      var pres = false;
+      this.disconnecting = true;
+
+      if (this.authenticated) {
+        pres = $pres({
+          'xmlns': Strophe.NS.CLIENT,
+          'type': 'unavailable'
+        });
+      } // setup timeout handler
+
+
+      this._disconnectTimeout = this._addSysTimedHandler(3000, this._onDisconnectTimeout.bind(this));
+
+      this._proto._disconnect(pres);
+    } else {
+      Strophe.info("Disconnect was called before Strophe connected to the server");
+
+      this._proto._abortAllRequests();
+
+      this._doDisconnect();
+    }
+  },
+
+  /** PrivateFunction: _changeConnectStatus
+   *  _Private_ helper function that makes sure plugins and the user's
+   *  callback are notified of connection status changes.
+   *
+   *  Parameters:
+   *    (Integer) status - the new connection status, one of the values
+   *      in Strophe.Status
+   *    (String) condition - the error condition or null
+   *    (XMLElement) elem - The triggering stanza.
+   */
+  _changeConnectStatus: function _changeConnectStatus(status, condition, elem) {
+    // notify all plugins listening for status changes
+    for (var k in Strophe._connectionPlugins) {
+      if (Object.prototype.hasOwnProperty.call(Strophe._connectionPlugins, k)) {
+        var plugin = this[k];
+
+        if (plugin.statusChanged) {
+          try {
+            plugin.statusChanged(status, condition);
+          } catch (err) {
+            Strophe.error("".concat(k, " plugin caused an exception changing status: ").concat(err));
+          }
+        }
+      }
+    } // notify the user's callback
+
+
+    if (this.connect_callback) {
+      try {
+        this.connect_callback(status, condition, elem);
+      } catch (e) {
+        Strophe._handleError(e);
+
+        Strophe.error("User connection callback caused an exception: ".concat(e));
+      }
+    }
+  },
+
+  /** PrivateFunction: _doDisconnect
+   *  _Private_ function to disconnect.
+   *
+   *  This is the last piece of the disconnection logic.  This resets the
+   *  connection and alerts the user's connection callback.
+   */
+  _doDisconnect: function _doDisconnect(condition) {
+    if (typeof this._idleTimeout === "number") {
+      clearTimeout(this._idleTimeout);
+    } // Cancel Disconnect Timeout
+
+
+    if (this._disconnectTimeout !== null) {
+      this.deleteTimedHandler(this._disconnectTimeout);
+      this._disconnectTimeout = null;
+    }
+
+    Strophe.info("_doDisconnect was called");
+
+    this._proto._doDisconnect();
+
+    this.authenticated = false;
+    this.disconnecting = false;
+    this.restored = false; // delete handlers
+
+    this.handlers = [];
+    this.timedHandlers = [];
+    this.removeTimeds = [];
+    this.removeHandlers = [];
+    this.addTimeds = [];
+    this.addHandlers = []; // tell the parent we disconnected
+
+    this._changeConnectStatus(Strophe.Status.DISCONNECTED, condition);
+
+    this.connected = false;
+  },
+
+  /** PrivateFunction: _dataRecv
+   *  _Private_ handler to processes incoming data from the the connection.
+   *
+   *  Except for _connect_cb handling the initial connection request,
+   *  this function handles the incoming data for all requests.  This
+   *  function also fires stanza handlers that match each incoming
+   *  stanza.
+   *
+   *  Parameters:
+   *    (Strophe.Request) req - The request that has data ready.
+   *    (string) req - The stanza a raw string (optiona).
+   */
+  _dataRecv: function _dataRecv(req, raw) {
+    var _this6 = this;
+
+    Strophe.info("_dataRecv called");
+
+    var elem = this._proto._reqToData(req);
+
+    if (elem === null) {
+      return;
+    }
+
+    if (this.xmlInput !== Strophe.Connection.prototype.xmlInput) {
+      if (elem.nodeName === this._proto.strip && elem.childNodes.length) {
+        this.xmlInput(elem.childNodes[0]);
+      } else {
+        this.xmlInput(elem);
+      }
+    }
+
+    if (this.rawInput !== Strophe.Connection.prototype.rawInput) {
+      if (raw) {
+        this.rawInput(raw);
+      } else {
+        this.rawInput(Strophe.serialize(elem));
+      }
+    } // remove handlers scheduled for deletion
+
+
+    while (this.removeHandlers.length > 0) {
+      var hand = this.removeHandlers.pop();
+      var i = this.handlers.indexOf(hand);
+
+      if (i >= 0) {
+        this.handlers.splice(i, 1);
+      }
+    } // add handlers scheduled for addition
+
+
+    while (this.addHandlers.length > 0) {
+      this.handlers.push(this.addHandlers.pop());
+    } // handle graceful disconnect
+
+
+    if (this.disconnecting && this._proto._emptyQueue()) {
+      this._doDisconnect();
+
+      return;
+    }
+
+    var type = elem.getAttribute("type");
+
+    if (type !== null && type === "terminate") {
+      // Don't process stanzas that come in after disconnect
+      if (this.disconnecting) {
+        return;
+      } // an error occurred
+
+
+      var cond = elem.getAttribute("condition");
+      var conflict = elem.getElementsByTagName("conflict");
+
+      if (cond !== null) {
+        if (cond === "remote-stream-error" && conflict.length > 0) {
+          cond = "conflict";
+        }
+
+        this._changeConnectStatus(Strophe.Status.CONNFAIL, cond);
+      } else {
+        this._changeConnectStatus(Strophe.Status.CONNFAIL, Strophe.ErrorCondition.UNKOWN_REASON);
+      }
+
+      this._doDisconnect(cond);
+
+      return;
+    } // send each incoming stanza through the handler chain
+
+
+    Strophe.forEachChild(elem, null, function (child) {
+      // process handlers
+      var newList = _this6.handlers;
+      _this6.handlers = [];
+
+      for (var _i5 = 0; _i5 < newList.length; _i5++) {
+        var _hand = newList[_i5]; // encapsulate 'handler.run' not to lose the whole handler list if
+        // one of the handlers throws an exception
+
+        try {
+          if (_hand.isMatch(child) && (_this6.authenticated || !_hand.user)) {
+            if (_hand.run(child)) {
+              _this6.handlers.push(_hand);
+            }
+          } else {
+            _this6.handlers.push(_hand);
+          }
+        } catch (e) {
+          // if the handler throws an exception, we consider it as false
+          Strophe.warn('Removing Strophe handlers due to uncaught exception: ' + e.message);
+        }
+      }
+    });
+  },
+
+  /** Attribute: mechanisms
+   *  SASL Mechanisms available for Connection.
+   */
+  mechanisms: {},
+
+  /** PrivateFunction: _connect_cb
+   *  _Private_ handler for initial connection request.
+   *
+   *  This handler is used to process the initial connection request
+   *  response from the BOSH server. It is used to set up authentication
+   *  handlers and start the authentication process.
+   *
+   *  SASL authentication will be attempted if available, otherwise
+   *  the code will fall back to legacy authentication.
+   *
+   *  Parameters:
+   *    (Strophe.Request) req - The current request.
+   *    (Function) _callback - low level (xmpp) connect callback function.
+   *      Useful for plugins with their own xmpp connect callback (when they
+   *      want to do something special).
+   */
+  _connect_cb: function _connect_cb(req, _callback, raw) {
+    Strophe.info("_connect_cb was called");
+    this.connected = true;
+    var bodyWrap;
+
+    try {
+      bodyWrap = this._proto._reqToData(req);
+    } catch (e) {
+      if (e.name !== Strophe.ErrorCondition.BAD_FORMAT) {
+        throw e;
+      }
+
+      this._changeConnectStatus(Strophe.Status.CONNFAIL, Strophe.ErrorCondition.BAD_FORMAT);
+
+      this._doDisconnect(Strophe.ErrorCondition.BAD_FORMAT);
+    }
+
+    if (!bodyWrap) {
+      return;
+    }
+
+    if (this.xmlInput !== Strophe.Connection.prototype.xmlInput) {
+      if (bodyWrap.nodeName === this._proto.strip && bodyWrap.childNodes.length) {
+        this.xmlInput(bodyWrap.childNodes[0]);
+      } else {
+        this.xmlInput(bodyWrap);
+      }
+    }
+
+    if (this.rawInput !== Strophe.Connection.prototype.rawInput) {
+      if (raw) {
+        this.rawInput(raw);
+      } else {
+        this.rawInput(Strophe.serialize(bodyWrap));
+      }
+    }
+
+    var conncheck = this._proto._connect_cb(bodyWrap);
+
+    if (conncheck === Strophe.Status.CONNFAIL) {
+      return;
+    } // Check for the stream:features tag
+
+
+    var hasFeatures;
+
+    if (bodyWrap.getElementsByTagNameNS) {
+      hasFeatures = bodyWrap.getElementsByTagNameNS(Strophe.NS.STREAM, "features").length > 0;
+    } else {
+      hasFeatures = bodyWrap.getElementsByTagName("stream:features").length > 0 || bodyWrap.getElementsByTagName("features").length > 0;
+    }
+
+    if (!hasFeatures) {
+      this._proto._no_auth_received(_callback);
+
+      return;
+    }
+
+    var matched = [];
+    var mechanisms = bodyWrap.getElementsByTagName("mechanism");
+
+    if (mechanisms.length > 0) {
+      for (var i = 0; i < mechanisms.length; i++) {
+        var mech = Strophe.getText(mechanisms[i]);
+        if (this.mechanisms[mech]) matched.push(this.mechanisms[mech]);
+      }
+    }
+
+    if (matched.length === 0) {
+      if (bodyWrap.getElementsByTagName("auth").length === 0) {
+        // There are no matching SASL mechanisms and also no legacy
+        // auth available.
+        this._proto._no_auth_received(_callback);
+
+        return;
+      }
+    }
+
+    if (this.do_authentication !== false) {
+      this.authenticate(matched);
+    }
+  },
+
+  /** Function: sortMechanismsByPriority
+   *
+   *  Sorts an array of objects with prototype SASLMechanism according to
+   *  their priorities.
+   *
+   *  Parameters:
+   *    (Array) mechanisms - Array of SASL mechanisms.
+   *
+   */
+  sortMechanismsByPriority: function sortMechanismsByPriority(mechanisms) {
+    // Sorting mechanisms according to priority.
+    for (var i = 0; i < mechanisms.length - 1; ++i) {
+      var higher = i;
+
+      for (var j = i + 1; j < mechanisms.length; ++j) {
+        if (mechanisms[j].prototype.priority > mechanisms[higher].prototype.priority) {
+          higher = j;
+        }
+      }
+
+      if (higher !== i) {
+        var swap = mechanisms[i];
+        mechanisms[i] = mechanisms[higher];
+        mechanisms[higher] = swap;
+      }
+    }
+
+    return mechanisms;
+  },
+
+  /** PrivateFunction: _attemptSASLAuth
+   *
+   *  Iterate through an array of SASL mechanisms and attempt authentication
+   *  with the highest priority (enabled) mechanism.
+   *
+   *  Parameters:
+   *    (Array) mechanisms - Array of SASL mechanisms.
+   *
+   *  Returns:
+   *    (Boolean) mechanism_found - true or false, depending on whether a
+   *          valid SASL mechanism was found with which authentication could be
+   *          started.
+   */
+  _attemptSASLAuth: function _attemptSASLAuth(mechanisms) {
+    mechanisms = this.sortMechanismsByPriority(mechanisms || []);
+    var mechanism_found = false;
+
+    for (var i = 0; i < mechanisms.length; ++i) {
+      if (!mechanisms[i].prototype.test(this)) {
+        continue;
+      }
+
+      this._sasl_success_handler = this._addSysHandler(this._sasl_success_cb.bind(this), null, "success", null, null);
+      this._sasl_failure_handler = this._addSysHandler(this._sasl_failure_cb.bind(this), null, "failure", null, null);
+      this._sasl_challenge_handler = this._addSysHandler(this._sasl_challenge_cb.bind(this), null, "challenge", null, null);
+      this._sasl_mechanism = new mechanisms[i]();
+
+      this._sasl_mechanism.onStart(this);
+
+      var request_auth_exchange = $build("auth", {
+        'xmlns': Strophe.NS.SASL,
+        'mechanism': this._sasl_mechanism.name
+      });
+
+      if (this._sasl_mechanism.isClientFirst) {
+        var response = this._sasl_mechanism.onChallenge(this, null);
+
+        request_auth_exchange.t(btoa(response));
+      }
+
+      this.send(request_auth_exchange.tree());
+      mechanism_found = true;
+      break;
+    }
+
+    return mechanism_found;
+  },
+
+  /** PrivateFunction: _attemptLegacyAuth
+   *
+   *  Attempt legacy (i.e. non-SASL) authentication.
+   *
+   */
+  _attemptLegacyAuth: function _attemptLegacyAuth() {
+    if (Strophe.getNodeFromJid(this.jid) === null) {
+      // we don't have a node, which is required for non-anonymous
+      // client connections
+      this._changeConnectStatus(Strophe.Status.CONNFAIL, Strophe.ErrorCondition.MISSING_JID_NODE);
+
+      this.disconnect(Strophe.ErrorCondition.MISSING_JID_NODE);
+    } else {
+      // Fall back to legacy authentication
+      this._changeConnectStatus(Strophe.Status.AUTHENTICATING, null);
+
+      this._addSysHandler(this._auth1_cb.bind(this), null, null, null, "_auth_1");
+
+      this.send($iq({
+        'type': "get",
+        'to': this.domain,
+        'id': "_auth_1"
+      }).c("query", {
+        xmlns: Strophe.NS.AUTH
+      }).c("username", {}).t(Strophe.getNodeFromJid(this.jid)).tree());
+    }
+  },
+
+  /** Function: authenticate
+   * Set up authentication
+   *
+   *  Continues the initial connection request by setting up authentication
+   *  handlers and starting the authentication process.
+   *
+   *  SASL authentication will be attempted if available, otherwise
+   *  the code will fall back to legacy authentication.
+   *
+   *  Parameters:
+   *    (Array) matched - Array of SASL mechanisms supported.
+   *
+   */
+  authenticate: function authenticate(matched) {
+    if (!this._attemptSASLAuth(matched)) {
+      this._attemptLegacyAuth();
+    }
+  },
+
+  /** PrivateFunction: _sasl_challenge_cb
+   *  _Private_ handler for the SASL challenge
+   *
+   */
+  _sasl_challenge_cb: function _sasl_challenge_cb(elem) {
+    var challenge = atob(Strophe.getText(elem));
+
+    var response = this._sasl_mechanism.onChallenge(this, challenge);
+
+    var stanza = $build('response', {
+      'xmlns': Strophe.NS.SASL
+    });
+
+    if (response !== "") {
+      stanza.t(btoa(response));
+    }
+
+    this.send(stanza.tree());
+    return true;
+  },
+
+  /** PrivateFunction: _auth1_cb
+   *  _Private_ handler for legacy authentication.
+   *
+   *  This handler is called in response to the initial <iq type='get'/>
+   *  for legacy authentication.  It builds an authentication <iq/> and
+   *  sends it, creating a handler (calling back to _auth2_cb()) to
+   *  handle the result
+   *
+   *  Parameters:
+   *    (XMLElement) elem - The stanza that triggered the callback.
+   *
+   *  Returns:
+   *    false to remove the handler.
+   */
+
+  /* jshint unused:false */
+  _auth1_cb: function _auth1_cb(elem) {
+    // build plaintext auth iq
+    var iq = $iq({
+      type: "set",
+      id: "_auth_2"
+    }).c('query', {
+      xmlns: Strophe.NS.AUTH
+    }).c('username', {}).t(Strophe.getNodeFromJid(this.jid)).up().c('password').t(this.pass);
+
+    if (!Strophe.getResourceFromJid(this.jid)) {
+      // since the user has not supplied a resource, we pick
+      // a default one here.  unlike other auth methods, the server
+      // cannot do this for us.
+      this.jid = Strophe.getBareJidFromJid(this.jid) + '/strophe';
+    }
+
+    iq.up().c('resource', {}).t(Strophe.getResourceFromJid(this.jid));
+
+    this._addSysHandler(this._auth2_cb.bind(this), null, null, null, "_auth_2");
+
+    this.send(iq.tree());
+    return false;
+  },
+
+  /* jshint unused:true */
+
+  /** PrivateFunction: _sasl_success_cb
+   *  _Private_ handler for succesful SASL authentication.
+   *
+   *  Parameters:
+   *    (XMLElement) elem - The matching stanza.
+   *
+   *  Returns:
+   *    false to remove the handler.
+   */
+  _sasl_success_cb: function _sasl_success_cb(elem) {
+    var _this7 = this;
+
+    if (this._sasl_data["server-signature"]) {
+      var serverSignature;
+      var success = atob(Strophe.getText(elem));
+      var attribMatch = /([a-z]+)=([^,]+)(,|$)/;
+      var matches = success.match(attribMatch);
+
+      if (matches[1] === "v") {
+        serverSignature = matches[2];
+      }
+
+      if (serverSignature !== this._sasl_data["server-signature"]) {
+        // remove old handlers
+        this.deleteHandler(this._sasl_failure_handler);
+        this._sasl_failure_handler = null;
+
+        if (this._sasl_challenge_handler) {
+          this.deleteHandler(this._sasl_challenge_handler);
+          this._sasl_challenge_handler = null;
+        }
+
+        this._sasl_data = {};
+        return this._sasl_failure_cb(null);
+      }
+    }
+
+    Strophe.info("SASL authentication succeeded.");
+
+    if (this._sasl_mechanism) {
+      this._sasl_mechanism.onSuccess();
+    } // remove old handlers
+
+
+    this.deleteHandler(this._sasl_failure_handler);
+    this._sasl_failure_handler = null;
+
+    if (this._sasl_challenge_handler) {
+      this.deleteHandler(this._sasl_challenge_handler);
+      this._sasl_challenge_handler = null;
+    }
+
+    var streamfeature_handlers = [];
+
+    var wrapper = function wrapper(handlers, elem) {
+      while (handlers.length) {
+        _this7.deleteHandler(handlers.pop());
+      }
+
+      _this7._sasl_auth1_cb(elem);
+
+      return false;
+    };
+
+    streamfeature_handlers.push(this._addSysHandler(function (elem) {
+      return wrapper(streamfeature_handlers, elem);
+    }, null, "stream:features", null, null));
+    streamfeature_handlers.push(this._addSysHandler(function (elem) {
+      return wrapper(streamfeature_handlers, elem);
+    }, Strophe.NS.STREAM, "features", null, null)); // we must send an xmpp:restart now
+
+    this._sendRestart();
+
+    return false;
+  },
+
+  /** PrivateFunction: _sasl_auth1_cb
+   *  _Private_ handler to start stream binding.
+   *
+   *  Parameters:
+   *    (XMLElement) elem - The matching stanza.
+   *
+   *  Returns:
+   *    false to remove the handler.
+   */
+  _sasl_auth1_cb: function _sasl_auth1_cb(elem) {
+    // save stream:features for future usage
+    this.features = elem;
+
+    for (var i = 0; i < elem.childNodes.length; i++) {
+      var child = elem.childNodes[i];
+
+      if (child.nodeName === 'bind') {
+        this.do_bind = true;
+      }
+
+      if (child.nodeName === 'session') {
+        this.do_session = true;
+      }
+    }
+
+    if (!this.do_bind) {
+      this._changeConnectStatus(Strophe.Status.AUTHFAIL, null);
+
+      return false;
+    } else {
+      this._addSysHandler(this._sasl_bind_cb.bind(this), null, null, null, "_bind_auth_2");
+
+      var resource = Strophe.getResourceFromJid(this.jid);
+
+      if (resource) {
+        this.send($iq({
+          type: "set",
+          id: "_bind_auth_2"
+        }).c('bind', {
+          xmlns: Strophe.NS.BIND
+        }).c('resource', {}).t(resource).tree());
+      } else {
+        this.send($iq({
+          type: "set",
+          id: "_bind_auth_2"
+        }).c('bind', {
+          xmlns: Strophe.NS.BIND
+        }).tree());
+      }
+    }
+
+    return false;
+  },
+
+  /** PrivateFunction: _sasl_bind_cb
+   *  _Private_ handler for binding result and session start.
+   *
+   *  Parameters:
+   *    (XMLElement) elem - The matching stanza.
+   *
+   *  Returns:
+   *    false to remove the handler.
+   */
+  _sasl_bind_cb: function _sasl_bind_cb(elem) {
+    if (elem.getAttribute("type") === "error") {
+      Strophe.info("SASL binding failed.");
+      var conflict = elem.getElementsByTagName("conflict");
+      var condition;
+
+      if (conflict.length > 0) {
+        condition = Strophe.ErrorCondition.CONFLICT;
+      }
+
+      this._changeConnectStatus(Strophe.Status.AUTHFAIL, condition, elem);
+
+      return false;
+    } // TODO - need to grab errors
+
+
+    var bind = elem.getElementsByTagName("bind");
+
+    if (bind.length > 0) {
+      var jidNode = bind[0].getElementsByTagName("jid");
+
+      if (jidNode.length > 0) {
+        this.jid = Strophe.getText(jidNode[0]);
+
+        if (this.do_session) {
+          this._addSysHandler(this._sasl_session_cb.bind(this), null, null, null, "_session_auth_2");
+
+          this.send($iq({
+            type: "set",
+            id: "_session_auth_2"
+          }).c('session', {
+            xmlns: Strophe.NS.SESSION
+          }).tree());
+        } else {
+          this.authenticated = true;
+
+          this._changeConnectStatus(Strophe.Status.CONNECTED, null);
+        }
+      }
+    } else {
+      Strophe.info("SASL binding failed.");
+
+      this._changeConnectStatus(Strophe.Status.AUTHFAIL, null, elem);
+
+      return false;
+    }
+  },
+
+  /** PrivateFunction: _sasl_session_cb
+   *  _Private_ handler to finish successful SASL connection.
+   *
+   *  This sets Connection.authenticated to true on success, which
+   *  starts the processing of user handlers.
+   *
+   *  Parameters:
+   *    (XMLElement) elem - The matching stanza.
+   *
+   *  Returns:
+   *    false to remove the handler.
+   */
+  _sasl_session_cb: function _sasl_session_cb(elem) {
+    if (elem.getAttribute("type") === "result") {
+      this.authenticated = true;
+
+      this._changeConnectStatus(Strophe.Status.CONNECTED, null);
+    } else if (elem.getAttribute("type") === "error") {
+      Strophe.info("Session creation failed.");
+
+      this._changeConnectStatus(Strophe.Status.AUTHFAIL, null, elem);
+
+      return false;
+    }
+
+    return false;
+  },
+
+  /** PrivateFunction: _sasl_failure_cb
+   *  _Private_ handler for SASL authentication failure.
+   *
+   *  Parameters:
+   *    (XMLElement) elem - The matching stanza.
+   *
+   *  Returns:
+   *    false to remove the handler.
+   */
+
+  /* jshint unused:false */
+  _sasl_failure_cb: function _sasl_failure_cb(elem) {
+    // delete unneeded handlers
+    if (this._sasl_success_handler) {
+      this.deleteHandler(this._sasl_success_handler);
+      this._sasl_success_handler = null;
+    }
+
+    if (this._sasl_challenge_handler) {
+      this.deleteHandler(this._sasl_challenge_handler);
+      this._sasl_challenge_handler = null;
+    }
+
+    if (this._sasl_mechanism) this._sasl_mechanism.onFailure();
+
+    this._changeConnectStatus(Strophe.Status.AUTHFAIL, null, elem);
+
+    return false;
+  },
+
+  /* jshint unused:true */
+
+  /** PrivateFunction: _auth2_cb
+   *  _Private_ handler to finish legacy authentication.
+   *
+   *  This handler is called when the result from the jabber:iq:auth
+   *  <iq/> stanza is returned.
+   *
+   *  Parameters:
+   *    (XMLElement) elem - The stanza that triggered the callback.
+   *
+   *  Returns:
+   *    false to remove the handler.
+   */
+  _auth2_cb: function _auth2_cb(elem) {
+    if (elem.getAttribute("type") === "result") {
+      this.authenticated = true;
+
+      this._changeConnectStatus(Strophe.Status.CONNECTED, null);
+    } else if (elem.getAttribute("type") === "error") {
+      this._changeConnectStatus(Strophe.Status.AUTHFAIL, null, elem);
+
+      this.disconnect('authentication failed');
+    }
+
+    return false;
+  },
+
+  /** PrivateFunction: _addSysTimedHandler
+   *  _Private_ function to add a system level timed handler.
+   *
+   *  This function is used to add a Strophe.TimedHandler for the
+   *  library code.  System timed handlers are allowed to run before
+   *  authentication is complete.
+   *
+   *  Parameters:
+   *    (Integer) period - The period of the handler.
+   *    (Function) handler - The callback function.
+   */
+  _addSysTimedHandler: function _addSysTimedHandler(period, handler) {
+    var thand = new Strophe.TimedHandler(period, handler);
+    thand.user = false;
+    this.addTimeds.push(thand);
+    return thand;
+  },
+
+  /** PrivateFunction: _addSysHandler
+   *  _Private_ function to add a system level stanza handler.
+   *
+   *  This function is used to add a Strophe.Handler for the
+   *  library code.  System stanza handlers are allowed to run before
+   *  authentication is complete.
+   *
+   *  Parameters:
+   *    (Function) handler - The callback function.
+   *    (String) ns - The namespace to match.
+   *    (String) name - The stanza name to match.
+   *    (String) type - The stanza type attribute to match.
+   *    (String) id - The stanza id attribute to match.
+   */
+  _addSysHandler: function _addSysHandler(handler, ns, name, type, id) {
+    var hand = new Strophe.Handler(handler, ns, name, type, id);
+    hand.user = false;
+    this.addHandlers.push(hand);
+    return hand;
+  },
+
+  /** PrivateFunction: _onDisconnectTimeout
+   *  _Private_ timeout handler for handling non-graceful disconnection.
+   *
+   *  If the graceful disconnect process does not complete within the
+   *  time allotted, this handler finishes the disconnect anyway.
+   *
+   *  Returns:
+   *    false to remove the handler.
+   */
+  _onDisconnectTimeout: function _onDisconnectTimeout() {
+    Strophe.info("_onDisconnectTimeout was called");
+
+    this._changeConnectStatus(Strophe.Status.CONNTIMEOUT, null);
+
+    this._proto._onDisconnectTimeout(); // actually disconnect
+
+
+    this._doDisconnect();
+
+    return false;
+  },
+
+  /** PrivateFunction: _onIdle
+   *  _Private_ handler to process events during idle cycle.
+   *
+   *  This handler is called every 100ms to fire timed handlers that
+   *  are ready and keep poll requests going.
+   */
+  _onIdle: function _onIdle() {
+    var _this8 = this;
+
+    // add timed handlers scheduled for addition
+    // NOTE: we add before remove in the case a timed handler is
+    // added and then deleted before the next _onIdle() call.
+    while (this.addTimeds.length > 0) {
+      this.timedHandlers.push(this.addTimeds.pop());
+    } // remove timed handlers that have been scheduled for deletion
+
+
+    while (this.removeTimeds.length > 0) {
+      var thand = this.removeTimeds.pop();
+      var i = this.timedHandlers.indexOf(thand);
+
+      if (i >= 0) {
+        this.timedHandlers.splice(i, 1);
+      }
+    } // call ready timed handlers
+
+
+    var now = new Date().getTime();
+    var newList = [];
+
+    for (var _i6 = 0; _i6 < this.timedHandlers.length; _i6++) {
+      var _thand = this.timedHandlers[_i6];
+
+      if (this.authenticated || !_thand.user) {
+        var since = _thand.lastCalled + _thand.period;
+
+        if (since - now <= 0) {
+          if (_thand.run()) {
+            newList.push(_thand);
+          }
+        } else {
+          newList.push(_thand);
+        }
+      }
+    }
+
+    this.timedHandlers = newList;
+    clearTimeout(this._idleTimeout);
+
+    this._proto._onIdle(); // reactivate the timer only if connected
+
+
+    if (this.connected) {
+      this._idleTimeout = setTimeout(function () {
+        return _this8._onIdle();
+      }, 100);
+    }
+  }
+};
+/** Class: Strophe.SASLMechanism
+ *
+ *  encapsulates SASL authentication mechanisms.
+ *
+ *  User code may override the priority for each mechanism or disable it completely.
+ *  See <priority> for information about changing priority and <test> for informatian on
+ *  how to disable a mechanism.
+ *
+ *  By default, all mechanisms are enabled and the priorities are
+ *
+ *      OAUTHBEARER - 60
+ *      SCRAM-SHA1 - 50
+ *      DIGEST-MD5 - 40
+ *      PLAIN - 30
+ *      ANONYMOUS - 20
+ *      EXTERNAL - 10
+ *
+ *  See: Strophe.Connection.addSupportedSASLMechanisms
+ */
+
+/**
+ * PrivateConstructor: Strophe.SASLMechanism
+ * SASL auth mechanism abstraction.
+ *
+ *  Parameters:
+ *    (String) name - SASL Mechanism name.
+ *    (Boolean) isClientFirst - If client should send response first without challenge.
+ *    (Number) priority - Priority.
+ *
+ *  Returns:
+ *    A new Strophe.SASLMechanism object.
+ */
+
+Strophe.SASLMechanism = function (name, isClientFirst, priority) {
+  /** PrivateVariable: name
+   *  Mechanism name.
+   */
+  this.name = name;
+  /** PrivateVariable: isClientFirst
+   *  If client sends response without initial server challenge.
+   */
+
+  this.isClientFirst = isClientFirst;
+  /** Variable: priority
+   *  Determines which <SASLMechanism> is chosen for authentication (Higher is better).
+   *  Users may override this to prioritize mechanisms differently.
+   *
+   *  In the default configuration the priorities are
+   *
+   *  SCRAM-SHA1 - 40
+   *  DIGEST-MD5 - 30
+   *  Plain - 20
+   *
+   *  Example: (This will cause Strophe to choose the mechanism that the server sent first)
+   *
+   *  > Strophe.SASLMD5.priority = Strophe.SASLSHA1.priority;
+   *
+   *  See <SASL mechanisms> for a list of available mechanisms.
+   *
+   */
+
+  this.priority = priority;
+};
+
+Strophe.SASLMechanism.prototype = {
+  /**
+   *  Function: test
+   *  Checks if mechanism able to run.
+   *  To disable a mechanism, make this return false;
+   *
+   *  To disable plain authentication run
+   *  > Strophe.SASLPlain.test = function() {
+   *  >   return false;
+   *  > }
+   *
+   *  See <SASL mechanisms> for a list of available mechanisms.
+   *
+   *  Parameters:
+   *    (Strophe.Connection) connection - Target Connection.
+   *
+   *  Returns:
+   *    (Boolean) If mechanism was able to run.
+   */
+
+  /* jshint unused:false */
+  test: function test(connection) {
+    return true;
+  },
+
+  /* jshint unused:true */
+
+  /** PrivateFunction: onStart
+   *  Called before starting mechanism on some connection.
+   *
+   *  Parameters:
+   *    (Strophe.Connection) connection - Target Connection.
+   */
+  onStart: function onStart(connection) {
+    this._connection = connection;
+  },
+
+  /** PrivateFunction: onChallenge
+   *  Called by protocol implementation on incoming challenge. If client is
+   *  first (isClientFirst === true) challenge will be null on the first call.
+   *
+   *  Parameters:
+   *    (Strophe.Connection) connection - Target Connection.
+   *    (String) challenge - current challenge to handle.
+   *
+   *  Returns:
+   *    (String) Mechanism response.
+   */
+
+  /* jshint unused:false */
+  onChallenge: function onChallenge(connection, challenge) {
+    throw new Error("You should implement challenge handling!");
+  },
+
+  /* jshint unused:true */
+
+  /** PrivateFunction: onFailure
+   *  Protocol informs mechanism implementation about SASL failure.
+   */
+  onFailure: function onFailure() {
+    this._connection = null;
+  },
+
+  /** PrivateFunction: onSuccess
+   *  Protocol informs mechanism implementation about SASL success.
+   */
+  onSuccess: function onSuccess() {
+    this._connection = null;
+  }
+};
+/** Constants: SASL mechanisms
+ *  Available authentication mechanisms
+ *
+ *  Strophe.SASLAnonymous - SASL ANONYMOUS authentication.
+ *  Strophe.SASLPlain - SASL PLAIN authentication.
+ *  Strophe.SASLMD5 - SASL DIGEST-MD5 authentication
+ *  Strophe.SASLSHA1 - SASL SCRAM-SHA1 authentication
+ *  Strophe.SASLOAuthBearer - SASL OAuth Bearer authentication
+ *  Strophe.SASLExternal - SASL EXTERNAL authentication
+ *  Strophe.SASLXOAuth2 - SASL X-OAuth2 authentication
+ */
+// Building SASL callbacks
+
+/** PrivateConstructor: SASLAnonymous
+ *  SASL ANONYMOUS authentication.
+ */
+
+Strophe.SASLAnonymous = function () {};
+
+Strophe.SASLAnonymous.prototype = new Strophe.SASLMechanism("ANONYMOUS", false, 20);
+
+Strophe.SASLAnonymous.prototype.test = function (connection) {
+  return connection.authcid === null;
+};
+/** PrivateConstructor: SASLPlain
+ *  SASL PLAIN authentication.
+ */
+
+
+Strophe.SASLPlain = function () {};
+
+Strophe.SASLPlain.prototype = new Strophe.SASLMechanism("PLAIN", true, 50);
+
+Strophe.SASLPlain.prototype.test = function (connection) {
+  return connection.authcid !== null;
+};
+
+Strophe.SASLPlain.prototype.onChallenge = function (connection) {
+  var auth_str = connection.authzid;
+  auth_str = auth_str + "\0";
+  auth_str = auth_str + connection.authcid;
+  auth_str = auth_str + "\0";
+  auth_str = auth_str + connection.pass;
+  return utils__WEBPACK_IMPORTED_MODULE_2__["default"].utf16to8(auth_str);
+};
+/** PrivateConstructor: SASLSHA1
+ *  SASL SCRAM SHA 1 authentication.
+ */
+
+
+Strophe.SASLSHA1 = function () {};
+
+Strophe.SASLSHA1.prototype = new Strophe.SASLMechanism("SCRAM-SHA-1", true, 70);
+
+Strophe.SASLSHA1.prototype.test = function (connection) {
+  return connection.authcid !== null;
+};
+
+Strophe.SASLSHA1.prototype.onChallenge = function (connection, challenge, test_cnonce) {
+  var cnonce = test_cnonce || md5__WEBPACK_IMPORTED_MODULE_0__["default"].hexdigest(Math.random() * 1234567890);
+  var auth_str = "n=" + utils__WEBPACK_IMPORTED_MODULE_2__["default"].utf16to8(connection.authcid);
+  auth_str += ",r=";
+  auth_str += cnonce;
+  connection._sasl_data.cnonce = cnonce;
+  connection._sasl_data["client-first-message-bare"] = auth_str;
+  auth_str = "n,," + auth_str;
+
+  this.onChallenge = function (connection, challenge) {
+    var nonce, salt, iter, Hi, U, U_old, i, k;
+    var responseText = "c=biws,";
+    var authMessage = "".concat(connection._sasl_data["client-first-message-bare"], ",").concat(challenge, ",");
+    var cnonce = connection._sasl_data.cnonce;
+    var attribMatch = /([a-z]+)=([^,]+)(,|$)/;
+
+    while (challenge.match(attribMatch)) {
+      var matches = challenge.match(attribMatch);
+      challenge = challenge.replace(matches[0], "");
+
+      switch (matches[1]) {
+        case "r":
+          nonce = matches[2];
+          break;
+
+        case "s":
+          salt = matches[2];
+          break;
+
+        case "i":
+          iter = matches[2];
+          break;
+      }
+    }
+
+    if (nonce.substr(0, cnonce.length) !== cnonce) {
+      connection._sasl_data = {};
+      return connection._sasl_failure_cb();
+    }
+
+    responseText += "r=" + nonce;
+    authMessage += responseText;
+    salt = atob(salt);
+    salt += "\x00\x00\x00\x01";
+    var pass = utils__WEBPACK_IMPORTED_MODULE_2__["default"].utf16to8(connection.pass);
+    Hi = U_old = sha1__WEBPACK_IMPORTED_MODULE_1__["default"].core_hmac_sha1(pass, salt);
+
+    for (i = 1; i < iter; i++) {
+      U = sha1__WEBPACK_IMPORTED_MODULE_1__["default"].core_hmac_sha1(pass, sha1__WEBPACK_IMPORTED_MODULE_1__["default"].binb2str(U_old));
+
+      for (k = 0; k < 5; k++) {
+        Hi[k] ^= U[k];
+      }
+
+      U_old = U;
+    }
+
+    Hi = sha1__WEBPACK_IMPORTED_MODULE_1__["default"].binb2str(Hi);
+    var clientKey = sha1__WEBPACK_IMPORTED_MODULE_1__["default"].core_hmac_sha1(Hi, "Client Key");
+    var serverKey = sha1__WEBPACK_IMPORTED_MODULE_1__["default"].str_hmac_sha1(Hi, "Server Key");
+    var clientSignature = sha1__WEBPACK_IMPORTED_MODULE_1__["default"].core_hmac_sha1(sha1__WEBPACK_IMPORTED_MODULE_1__["default"].str_sha1(sha1__WEBPACK_IMPORTED_MODULE_1__["default"].binb2str(clientKey)), authMessage);
+    connection._sasl_data["server-signature"] = sha1__WEBPACK_IMPORTED_MODULE_1__["default"].b64_hmac_sha1(serverKey, authMessage);
+
+    for (k = 0; k < 5; k++) {
+      clientKey[k] ^= clientSignature[k];
+    }
+
+    responseText += ",p=" + btoa(sha1__WEBPACK_IMPORTED_MODULE_1__["default"].binb2str(clientKey));
+    return responseText;
+  };
+
+  return auth_str;
+};
+/** PrivateConstructor: SASLMD5
+ *  SASL DIGEST MD5 authentication.
+ */
+
+
+Strophe.SASLMD5 = function () {};
+
+Strophe.SASLMD5.prototype = new Strophe.SASLMechanism("DIGEST-MD5", false, 60);
+
+Strophe.SASLMD5.prototype.test = function (connection) {
+  return connection.authcid !== null;
+};
+/** PrivateFunction: _quote
+ *  _Private_ utility function to backslash escape and quote strings.
+ *
+ *  Parameters:
+ *    (String) str - The string to be quoted.
+ *
+ *  Returns:
+ *    quoted string
+ */
+
+
+Strophe.SASLMD5.prototype._quote = function (str) {
+  return '"' + str.replace(/\\/g, "\\\\").replace(/"/g, '\\"') + '"'; //" end string workaround for emacs
+};
+
+Strophe.SASLMD5.prototype.onChallenge = function (connection, challenge, test_cnonce) {
+  var attribMatch = /([a-z]+)=("[^"]+"|[^,"]+)(?:,|$)/;
+  var cnonce = test_cnonce || md5__WEBPACK_IMPORTED_MODULE_0__["default"].hexdigest("" + Math.random() * 1234567890);
+  var realm = "";
+  var host = null;
+  var nonce = "";
+  var qop = "";
+
+  while (challenge.match(attribMatch)) {
+    var matches = challenge.match(attribMatch);
+    challenge = challenge.replace(matches[0], "");
+    matches[2] = matches[2].replace(/^"(.+)"$/, "$1");
+
+    switch (matches[1]) {
+      case "realm":
+        realm = matches[2];
+        break;
+
+      case "nonce":
+        nonce = matches[2];
+        break;
+
+      case "qop":
+        qop = matches[2];
+        break;
+
+      case "host":
+        host = matches[2];
+        break;
+    }
+  }
+
+  var digest_uri = connection.servtype + "/" + connection.domain;
+
+  if (host !== null) {
+    digest_uri = digest_uri + "/" + host;
+  }
+
+  var cred = utils__WEBPACK_IMPORTED_MODULE_2__["default"].utf16to8(connection.authcid + ":" + realm + ":" + this._connection.pass);
+  var A1 = md5__WEBPACK_IMPORTED_MODULE_0__["default"].hash(cred) + ":" + nonce + ":" + cnonce;
+  var A2 = 'AUTHENTICATE:' + digest_uri;
+  var responseText = "";
+  responseText += 'charset=utf-8,';
+  responseText += 'username=' + this._quote(utils__WEBPACK_IMPORTED_MODULE_2__["default"].utf16to8(connection.authcid)) + ',';
+  responseText += 'realm=' + this._quote(realm) + ',';
+  responseText += 'nonce=' + this._quote(nonce) + ',';
+  responseText += 'nc=00000001,';
+  responseText += 'cnonce=' + this._quote(cnonce) + ',';
+  responseText += 'digest-uri=' + this._quote(digest_uri) + ',';
+  responseText += 'response=' + md5__WEBPACK_IMPORTED_MODULE_0__["default"].hexdigest(md5__WEBPACK_IMPORTED_MODULE_0__["default"].hexdigest(A1) + ":" + nonce + ":00000001:" + cnonce + ":auth:" + md5__WEBPACK_IMPORTED_MODULE_0__["default"].hexdigest(A2)) + ",";
+  responseText += 'qop=auth';
+
+  this.onChallenge = function () {
+    return "";
+  };
+
+  return responseText;
+};
+/** PrivateConstructor: SASLOAuthBearer
+ *  SASL OAuth Bearer authentication.
+ */
+
+
+Strophe.SASLOAuthBearer = function () {};
+
+Strophe.SASLOAuthBearer.prototype = new Strophe.SASLMechanism("OAUTHBEARER", true, 40);
+
+Strophe.SASLOAuthBearer.prototype.test = function (connection) {
+  return connection.pass !== null;
+};
+
+Strophe.SASLOAuthBearer.prototype.onChallenge = function (connection) {
+  var auth_str = 'n,';
+
+  if (connection.authcid !== null) {
+    auth_str = auth_str + 'a=' + connection.authzid;
+  }
+
+  auth_str = auth_str + ',';
+  auth_str = auth_str + "\x01";
+  auth_str = auth_str + 'auth=Bearer ';
+  auth_str = auth_str + connection.pass;
+  auth_str = auth_str + "\x01";
+  auth_str = auth_str + "\x01";
+  return utils__WEBPACK_IMPORTED_MODULE_2__["default"].utf16to8(auth_str);
+};
+/** PrivateConstructor: SASLExternal
+ *  SASL EXTERNAL authentication.
+ *
+ *  The EXTERNAL mechanism allows a client to request the server to use
+ *  credentials established by means external to the mechanism to
+ *  authenticate the client. The external means may be, for instance,
+ *  TLS services.
+ */
+
+
+Strophe.SASLExternal = function () {};
+
+Strophe.SASLExternal.prototype = new Strophe.SASLMechanism("EXTERNAL", true, 10);
+
+Strophe.SASLExternal.prototype.onChallenge = function (connection) {
+  /** According to XEP-178, an authzid SHOULD NOT be presented when the
+   * authcid contained or implied in the client certificate is the JID (i.e.
+   * authzid) with which the user wants to log in as.
+   *
+   * To NOT send the authzid, the user should therefore set the authcid equal
+   * to the JID when instantiating a new Strophe.Connection object.
+   */
+  return connection.authcid === connection.authzid ? '' : connection.authzid;
+};
+/** PrivateConstructor: SASLXOAuth2
+ *  SASL X-OAuth2 authentication.
+ */
+
+
+Strophe.SASLXOAuth2 = function () {};
+
+Strophe.SASLXOAuth2.prototype = new Strophe.SASLMechanism("X-OAUTH2", true, 30);
+
+Strophe.SASLXOAuth2.prototype.test = function (connection) {
+  return connection.pass !== null;
+};
+
+Strophe.SASLXOAuth2.prototype.onChallenge = function (connection) {
+  var auth_str = "\0";
+
+  if (connection.authcid !== null) {
+    auth_str = auth_str + connection.authzid;
+  }
+
+  auth_str = auth_str + "\0";
+  auth_str = auth_str + connection.pass;
+  return utils__WEBPACK_IMPORTED_MODULE_2__["default"].utf16to8(auth_str);
+};
+
+
+/* harmony default export */ __webpack_exports__["default"] = ({
+  'Strophe': Strophe,
+  '$build': $build,
+  '$iq': $iq,
+  '$msg': $msg,
+  '$pres': $pres,
+  'SHA1': sha1__WEBPACK_IMPORTED_MODULE_1__["default"],
+  'MD5': md5__WEBPACK_IMPORTED_MODULE_0__["default"],
+  'b64_hmac_sha1': sha1__WEBPACK_IMPORTED_MODULE_1__["default"].b64_hmac_sha1,
+  'b64_sha1': sha1__WEBPACK_IMPORTED_MODULE_1__["default"].b64_sha1,
+  'str_hmac_sha1': sha1__WEBPACK_IMPORTED_MODULE_1__["default"].str_hmac_sha1,
+  'str_sha1': sha1__WEBPACK_IMPORTED_MODULE_1__["default"].str_sha1
+});
+
+/***/ }),
+
+/***/ "./src/md5.js":
+/*!********************!*\
+  !*** ./src/md5.js ***!
+  \********************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return MD5; });
+/*
+ * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
+ * Digest Algorithm, as defined in RFC 1321.
+ * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
+ * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
+ * Distributed under the BSD License
+ * See http://pajhome.org.uk/crypt/md5 for more info.
+ */
+
+/*
+ * Everything that isn't used by Strophe has been stripped here!
+ */
+
+/*
+ * Add integers, wrapping at 2^32. This uses 16-bit operations internally
+ * to work around bugs in some JS interpreters.
+ */
+var safe_add = function safe_add(x, y) {
+  var lsw = (x & 0xFFFF) + (y & 0xFFFF);
+  var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
+  return msw << 16 | lsw & 0xFFFF;
+};
+/*
+ * Bitwise rotate a 32-bit number to the left.
+ */
+
+
+var bit_rol = function bit_rol(num, cnt) {
+  return num << cnt | num >>> 32 - cnt;
+};
+/*
+ * Convert a string to an array of little-endian words
+ */
+
+
+var str2binl = function str2binl(str) {
+  var bin = [];
+
+  for (var i = 0; i < str.length * 8; i += 8) {
+    bin[i >> 5] |= (str.charCodeAt(i / 8) & 255) << i % 32;
+  }
+
+  return bin;
+};
+/*
+ * Convert an array of little-endian words to a string
+ */
+
+
+var binl2str = function binl2str(bin) {
+  var str = "";
+
+  for (var i = 0; i < bin.length * 32; i += 8) {
+    str += String.fromCharCode(bin[i >> 5] >>> i % 32 & 255);
+  }
+
+  return str;
+};
+/*
+ * Convert an array of little-endian words to a hex string.
+ */
+
+
+var binl2hex = function binl2hex(binarray) {
+  var hex_tab = "0123456789abcdef";
+  var str = "";
+
+  for (var i = 0; i < binarray.length * 4; i++) {
+    str += hex_tab.charAt(binarray[i >> 2] >> i % 4 * 8 + 4 & 0xF) + hex_tab.charAt(binarray[i >> 2] >> i % 4 * 8 & 0xF);
+  }
+
+  return str;
+};
+/*
+ * These functions implement the four basic operations the algorithm uses.
+ */
+
+
+var md5_cmn = function md5_cmn(q, a, b, x, s, t) {
+  return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b);
+};
+
+var md5_ff = function md5_ff(a, b, c, d, x, s, t) {
+  return md5_cmn(b & c | ~b & d, a, b, x, s, t);
+};
+
+var md5_gg = function md5_gg(a, b, c, d, x, s, t) {
+  return md5_cmn(b & d | c & ~d, a, b, x, s, t);
+};
+
+var md5_hh = function md5_hh(a, b, c, d, x, s, t) {
+  return md5_cmn(b ^ c ^ d, a, b, x, s, t);
+};
+
+var md5_ii = function md5_ii(a, b, c, d, x, s, t) {
+  return md5_cmn(c ^ (b | ~d), a, b, x, s, t);
+};
+/*
+ * Calculate the MD5 of an array of little-endian words, and a bit length
+ */
+
+
+var core_md5 = function core_md5(x, len) {
+  /* append padding */
+  x[len >> 5] |= 0x80 << len % 32;
+  x[(len + 64 >>> 9 << 4) + 14] = len;
+  var a = 1732584193;
+  var b = -271733879;
+  var c = -1732584194;
+  var d = 271733878;
+  var olda, oldb, oldc, oldd;
+
+  for (var i = 0; i < x.length; i += 16) {
+    olda = a;
+    oldb = b;
+    oldc = c;
+    oldd = d;
+    a = md5_ff(a, b, c, d, x[i + 0], 7, -680876936);
+    d = md5_ff(d, a, b, c, x[i + 1], 12, -389564586);
+    c = md5_ff(c, d, a, b, x[i + 2], 17, 606105819);
+    b = md5_ff(b, c, d, a, x[i + 3], 22, -1044525330);
+    a = md5_ff(a, b, c, d, x[i + 4], 7, -176418897);
+    d = md5_ff(d, a, b, c, x[i + 5], 12, 1200080426);
+    c = md5_ff(c, d, a, b, x[i + 6], 17, -1473231341);
+    b = md5_ff(b, c, d, a, x[i + 7], 22, -45705983);
+    a = md5_ff(a, b, c, d, x[i + 8], 7, 1770035416);
+    d = md5_ff(d, a, b, c, x[i + 9], 12, -1958414417);
+    c = md5_ff(c, d, a, b, x[i + 10], 17, -42063);
+    b = md5_ff(b, c, d, a, x[i + 11], 22, -1990404162);
+    a = md5_ff(a, b, c, d, x[i + 12], 7, 1804603682);
+    d = md5_ff(d, a, b, c, x[i + 13], 12, -40341101);
+    c = md5_ff(c, d, a, b, x[i + 14], 17, -1502002290);
+    b = md5_ff(b, c, d, a, x[i + 15], 22, 1236535329);
+    a = md5_gg(a, b, c, d, x[i + 1], 5, -165796510);
+    d = md5_gg(d, a, b, c, x[i + 6], 9, -1069501632);
+    c = md5_gg(c, d, a, b, x[i + 11], 14, 643717713);
+    b = md5_gg(b, c, d, a, x[i + 0], 20, -373897302);
+    a = md5_gg(a, b, c, d, x[i + 5], 5, -701558691);
+    d = md5_gg(d, a, b, c, x[i + 10], 9, 38016083);
+    c = md5_gg(c, d, a, b, x[i + 15], 14, -660478335);
+    b = md5_gg(b, c, d, a, x[i + 4], 20, -405537848);
+    a = md5_gg(a, b, c, d, x[i + 9], 5, 568446438);
+    d = md5_gg(d, a, b, c, x[i + 14], 9, -1019803690);
+    c = md5_gg(c, d, a, b, x[i + 3], 14, -187363961);
+    b = md5_gg(b, c, d, a, x[i + 8], 20, 1163531501);
+    a = md5_gg(a, b, c, d, x[i + 13], 5, -1444681467);
+    d = md5_gg(d, a, b, c, x[i + 2], 9, -51403784);
+    c = md5_gg(c, d, a, b, x[i + 7], 14, 1735328473);
+    b = md5_gg(b, c, d, a, x[i + 12], 20, -1926607734);
+    a = md5_hh(a, b, c, d, x[i + 5], 4, -378558);
+    d = md5_hh(d, a, b, c, x[i + 8], 11, -2022574463);
+    c = md5_hh(c, d, a, b, x[i + 11], 16, 1839030562);
+    b = md5_hh(b, c, d, a, x[i + 14], 23, -35309556);
+    a = md5_hh(a, b, c, d, x[i + 1], 4, -1530992060);
+    d = md5_hh(d, a, b, c, x[i + 4], 11, 1272893353);
+    c = md5_hh(c, d, a, b, x[i + 7], 16, -155497632);
+    b = md5_hh(b, c, d, a, x[i + 10], 23, -1094730640);
+    a = md5_hh(a, b, c, d, x[i + 13], 4, 681279174);
+    d = md5_hh(d, a, b, c, x[i + 0], 11, -358537222);
+    c = md5_hh(c, d, a, b, x[i + 3], 16, -722521979);
+    b = md5_hh(b, c, d, a, x[i + 6], 23, 76029189);
+    a = md5_hh(a, b, c, d, x[i + 9], 4, -640364487);
+    d = md5_hh(d, a, b, c, x[i + 12], 11, -421815835);
+    c = md5_hh(c, d, a, b, x[i + 15], 16, 530742520);
+    b = md5_hh(b, c, d, a, x[i + 2], 23, -995338651);
+    a = md5_ii(a, b, c, d, x[i + 0], 6, -198630844);
+    d = md5_ii(d, a, b, c, x[i + 7], 10, 1126891415);
+    c = md5_ii(c, d, a, b, x[i + 14], 15, -1416354905);
+    b = md5_ii(b, c, d, a, x[i + 5], 21, -57434055);
+    a = md5_ii(a, b, c, d, x[i + 12], 6, 1700485571);
+    d = md5_ii(d, a, b, c, x[i + 3], 10, -1894986606);
+    c = md5_ii(c, d, a, b, x[i + 10], 15, -1051523);
+    b = md5_ii(b, c, d, a, x[i + 1], 21, -2054922799);
+    a = md5_ii(a, b, c, d, x[i + 8], 6, 1873313359);
+    d = md5_ii(d, a, b, c, x[i + 15], 10, -30611744);
+    c = md5_ii(c, d, a, b, x[i + 6], 15, -1560198380);
+    b = md5_ii(b, c, d, a, x[i + 13], 21, 1309151649);
+    a = md5_ii(a, b, c, d, x[i + 4], 6, -145523070);
+    d = md5_ii(d, a, b, c, x[i + 11], 10, -1120210379);
+    c = md5_ii(c, d, a, b, x[i + 2], 15, 718787259);
+    b = md5_ii(b, c, d, a, x[i + 9], 21, -343485551);
+    a = safe_add(a, olda);
+    b = safe_add(b, oldb);
+    c = safe_add(c, oldc);
+    d = safe_add(d, oldd);
+  }
+
+  return [a, b, c, d];
+};
+/*
+ * These are the functions you'll usually want to call.
+ * They take string arguments and return either hex or base-64 encoded
+ * strings.
+ */
+
+
+var MD5 = {
+  hexdigest: function hexdigest(s) {
+    return binl2hex(core_md5(str2binl(s), s.length * 8));
+  },
+  hash: function hash(s) {
+    return binl2str(core_md5(str2binl(s), s.length * 8));
+  }
+};
+
+
+/***/ }),
+
+/***/ "./src/sha1.js":
+/*!*********************!*\
+  !*** ./src/sha1.js ***!
+  \*********************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return SHA1; });
+/*
+ * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
+ * in FIPS PUB 180-1
+ * Version 2.1a Copyright Paul Johnston 2000 - 2002.
+ * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
+ * Distributed under the BSD License
+ * See http://pajhome.org.uk/crypt/md5 for details.
+ */
+
+/* jshint undef: true, unused: true:, noarg: true, latedef: false */
+
+/* global define */
+
+/* Some functions and variables have been stripped for use with Strophe */
+
+/*
+ * Calculate the SHA-1 of an array of big-endian words, and a bit length
+ */
+function core_sha1(x, len) {
+  /* append padding */
+  x[len >> 5] |= 0x80 << 24 - len % 32;
+  x[(len + 64 >> 9 << 4) + 15] = len;
+  var w = new Array(80);
+  var a = 1732584193;
+  var b = -271733879;
+  var c = -1732584194;
+  var d = 271733878;
+  var e = -1009589776;
+  var i, j, t, olda, oldb, oldc, oldd, olde;
+
+  for (i = 0; i < x.length; i += 16) {
+    olda = a;
+    oldb = b;
+    oldc = c;
+    oldd = d;
+    olde = e;
+
+    for (j = 0; j < 80; j++) {
+      if (j < 16) {
+        w[j] = x[i + j];
+      } else {
+        w[j] = rol(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1);
+      }
+
+      t = safe_add(safe_add(rol(a, 5), sha1_ft(j, b, c, d)), safe_add(safe_add(e, w[j]), sha1_kt(j)));
+      e = d;
+      d = c;
+      c = rol(b, 30);
+      b = a;
+      a = t;
+    }
+
+    a = safe_add(a, olda);
+    b = safe_add(b, oldb);
+    c = safe_add(c, oldc);
+    d = safe_add(d, oldd);
+    e = safe_add(e, olde);
+  }
+
+  return [a, b, c, d, e];
+}
+/*
+ * Perform the appropriate triplet combination function for the current
+ * iteration
+ */
+
+
+function sha1_ft(t, b, c, d) {
+  if (t < 20) {
+    return b & c | ~b & d;
+  }
+
+  if (t < 40) {
+    return b ^ c ^ d;
+  }
+
+  if (t < 60) {
+    return b & c | b & d | c & d;
+  }
+
+  return b ^ c ^ d;
+}
+/*
+ * Determine the appropriate additive constant for the current iteration
+ */
+
+
+function sha1_kt(t) {
+  return t < 20 ? 1518500249 : t < 40 ? 1859775393 : t < 60 ? -1894007588 : -899497514;
+}
+/*
+ * Calculate the HMAC-SHA1 of a key and some data
+ */
+
+
+function core_hmac_sha1(key, data) {
+  var bkey = str2binb(key);
+
+  if (bkey.length > 16) {
+    bkey = core_sha1(bkey, key.length * 8);
+  }
+
+  var ipad = new Array(16),
+      opad = new Array(16);
+
+  for (var i = 0; i < 16; i++) {
+    ipad[i] = bkey[i] ^ 0x36363636;
+    opad[i] = bkey[i] ^ 0x5C5C5C5C;
+  }
+
+  var hash = core_sha1(ipad.concat(str2binb(data)), 512 + data.length * 8);
+  return core_sha1(opad.concat(hash), 512 + 160);
+}
+/*
+ * Add integers, wrapping at 2^32. This uses 16-bit operations internally
+ * to work around bugs in some JS interpreters.
+ */
+
+
+function safe_add(x, y) {
+  var lsw = (x & 0xFFFF) + (y & 0xFFFF);
+  var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
+  return msw << 16 | lsw & 0xFFFF;
+}
+/*
+ * Bitwise rotate a 32-bit number to the left.
+ */
+
+
+function rol(num, cnt) {
+  return num << cnt | num >>> 32 - cnt;
+}
+/*
+ * Convert an 8-bit or 16-bit string to an array of big-endian words
+ * In 8-bit function, characters >255 have their hi-byte silently ignored.
+ */
+
+
+function str2binb(str) {
+  var bin = [];
+  var mask = 255;
+
+  for (var i = 0; i < str.length * 8; i += 8) {
+    bin[i >> 5] |= (str.charCodeAt(i / 8) & mask) << 24 - i % 32;
+  }
+
+  return bin;
+}
+/*
+ * Convert an array of big-endian words to a base-64 string
+ */
+
+
+function binb2b64(binarray) {
+  var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+  var str = "";
+  var triplet, j;
+
+  for (var i = 0; i < binarray.length * 4; i += 3) {
+    triplet = (binarray[i >> 2] >> 8 * (3 - i % 4) & 0xFF) << 16 | (binarray[i + 1 >> 2] >> 8 * (3 - (i + 1) % 4) & 0xFF) << 8 | binarray[i + 2 >> 2] >> 8 * (3 - (i + 2) % 4) & 0xFF;
+
+    for (j = 0; j < 4; j++) {
+      if (i * 8 + j * 6 > binarray.length * 32) {
+        str += "=";
+      } else {
+        str += tab.charAt(triplet >> 6 * (3 - j) & 0x3F);
+      }
+    }
+  }
+
+  return str;
+}
+/*
+ * Convert an array of big-endian words to a string
+ */
+
+
+function binb2str(bin) {
+  var str = "";
+  var mask = 255;
+
+  for (var i = 0; i < bin.length * 32; i += 8) {
+    str += String.fromCharCode(bin[i >> 5] >>> 24 - i % 32 & mask);
+  }
+
+  return str;
+}
+/*
+ * These are the functions you'll usually want to call
+ * They take string arguments and return either hex or base-64 encoded strings
+ */
+
+
+var SHA1 = {
+  b64_hmac_sha1: function b64_hmac_sha1(key, data) {
+    return binb2b64(core_hmac_sha1(key, data));
+  },
+  b64_sha1: function b64_sha1(s) {
+    return binb2b64(core_sha1(str2binb(s), s.length * 8));
+  },
+  binb2str: binb2str,
+  core_hmac_sha1: core_hmac_sha1,
+  str_hmac_sha1: function str_hmac_sha1(key, data) {
+    return binb2str(core_hmac_sha1(key, data));
+  },
+  str_sha1: function str_sha1(s) {
+    return binb2str(core_sha1(str2binb(s), s.length * 8));
+  }
+};
+
+
+/***/ }),
+
+/***/ "./src/strophe.js":
+/*!************************!*\
+  !*** ./src/strophe.js ***!
+  \************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* WEBPACK VAR INJECTION */(function(global) {/* harmony import */ var core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core */ "./src/core.js");
+/* harmony import */ var bosh__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! bosh */ "./src/bosh.js");
+/* harmony import */ var websocket__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! websocket */ "./src/websocket.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "default", function() { return core__WEBPACK_IMPORTED_MODULE_0__["default"]; });
+
+/*global global*/
+
+
+
+global.Strophe = core__WEBPACK_IMPORTED_MODULE_0__["default"].Strophe;
+global.$build = core__WEBPACK_IMPORTED_MODULE_0__["default"].$build;
+global.$iq = core__WEBPACK_IMPORTED_MODULE_0__["default"].$iq;
+global.$msg = core__WEBPACK_IMPORTED_MODULE_0__["default"].$msg;
+global.$pres = core__WEBPACK_IMPORTED_MODULE_0__["default"].$pres;
+
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../node_modules/webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js")))
+
+/***/ }),
+
+/***/ "./src/utils.js":
+/*!**********************!*\
+  !*** ./src/utils.js ***!
+  \**********************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return utils; });
+function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
+
+var utils = {
+  utf16to8: function utf16to8(str) {
+    var i, c;
+    var out = "";
+    var len = str.length;
+
+    for (i = 0; i < len; i++) {
+      c = str.charCodeAt(i);
+
+      if (c >= 0x0000 && c <= 0x007F) {
+        out += str.charAt(i);
+      } else if (c > 0x07FF) {
+        out += String.fromCharCode(0xE0 | c >> 12 & 0x0F);
+        out += String.fromCharCode(0x80 | c >> 6 & 0x3F);
+        out += String.fromCharCode(0x80 | c >> 0 & 0x3F);
+      } else {
+        out += String.fromCharCode(0xC0 | c >> 6 & 0x1F);
+        out += String.fromCharCode(0x80 | c >> 0 & 0x3F);
+      }
+    }
+
+    return out;
+  },
+  addCookies: function addCookies(cookies) {
+    /* Parameters:
+     *  (Object) cookies - either a map of cookie names
+     *    to string values or to maps of cookie values.
+     *
+     * For example:
+     * { "myCookie": "1234" }
+     *
+     * or:
+     * { "myCookie": {
+     *      "value": "1234",
+     *      "domain": ".example.org",
+     *      "path": "/",
+     *      "expires": expirationDate
+     *      }
+     *  }
+     *
+     *  These values get passed to Strophe.Connection via
+     *   options.cookies
+     */
+    cookies = cookies || {};
+
+    for (var cookieName in cookies) {
+      if (Object.prototype.hasOwnProperty.call(cookies, cookieName)) {
+        var expires = '';
+        var domain = '';
+        var path = '';
+        var cookieObj = cookies[cookieName];
+        var isObj = _typeof(cookieObj) === "object";
+        var cookieValue = escape(unescape(isObj ? cookieObj.value : cookieObj));
+
+        if (isObj) {
+          expires = cookieObj.expires ? ";expires=" + cookieObj.expires : '';
+          domain = cookieObj.domain ? ";domain=" + cookieObj.domain : '';
+          path = cookieObj.path ? ";path=" + cookieObj.path : '';
+        }
+
+        document.cookie = cookieName + '=' + cookieValue + expires + domain + path;
+      }
+    }
+  }
+};
+
+
+/***/ }),
+
+/***/ "./src/websocket.js":
+/*!**************************!*\
+  !*** ./src/websocket.js ***!
+  \**************************/
+/*! no exports provided */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core */ "./src/core.js");
+/*
+    This program is distributed under the terms of the MIT license.
+    Please see the LICENSE file for details.
+
+    Copyright 2006-2008, OGG, LLC
+*/
+
+/* global window, clearTimeout, WebSocket, DOMParser */
+
+var Strophe = core__WEBPACK_IMPORTED_MODULE_0__["default"].Strophe;
+var $build = core__WEBPACK_IMPORTED_MODULE_0__["default"].$build;
+/** Class: Strophe.WebSocket
+ *  _Private_ helper class that handles WebSocket Connections
+ *
+ *  The Strophe.WebSocket class is used internally by Strophe.Connection
+ *  to encapsulate WebSocket sessions. It is not meant to be used from user's code.
+ */
+
+/** File: websocket.js
+ *  A JavaScript library to enable XMPP over Websocket in Strophejs.
+ *
+ *  This file implements XMPP over WebSockets for Strophejs.
+ *  If a Connection is established with a Websocket url (ws://...)
+ *  Strophe will use WebSockets.
+ *  For more information on XMPP-over-WebSocket see RFC 7395:
+ *  http://tools.ietf.org/html/rfc7395
+ *
+ *  WebSocket support implemented by Andreas Guth (andreas.guth@rwth-aachen.de)
+ */
+
+/** PrivateConstructor: Strophe.Websocket
+ *  Create and initialize a Strophe.WebSocket object.
+ *  Currently only sets the connection Object.
+ *
+ *  Parameters:
+ *    (Strophe.Connection) connection - The Strophe.Connection that will use WebSockets.
+ *
+ *  Returns:
+ *    A new Strophe.WebSocket object.
+ */
+
+Strophe.Websocket = function (connection) {
+  this._conn = connection;
+  this.strip = "wrapper";
+  var service = connection.service;
+
+  if (service.indexOf("ws:") !== 0 && service.indexOf("wss:") !== 0) {
+    // If the service is not an absolute URL, assume it is a path and put the absolute
+    // URL together from options, current URL and the path.
+    var new_service = "";
+
+    if (connection.options.protocol === "ws" && window.location.protocol !== "https:") {
+      new_service += "ws";
+    } else {
+      new_service += "wss";
+    }
+
+    new_service += "://" + window.location.host;
+
+    if (service.indexOf("/") !== 0) {
+      new_service += window.location.pathname + service;
+    } else {
+      new_service += service;
+    }
+
+    connection.service = new_service;
+  }
+};
+
+Strophe.Websocket.prototype = {
+  /** PrivateFunction: _buildStream
+   *  _Private_ helper function to generate the <stream> start tag for WebSockets
+   *
+   *  Returns:
+   *    A Strophe.Builder with a <stream> element.
+   */
+  _buildStream: function _buildStream() {
+    return $build("open", {
+      "xmlns": Strophe.NS.FRAMING,
+      "to": this._conn.domain,
+      "version": '1.0'
+    });
+  },
+
+  /** PrivateFunction: _check_streamerror
+   * _Private_ checks a message for stream:error
+   *
+   *  Parameters:
+   *    (Strophe.Request) bodyWrap - The received stanza.
+   *    connectstatus - The ConnectStatus that will be set on error.
+   *  Returns:
+   *     true if there was a streamerror, false otherwise.
+   */
+  _check_streamerror: function _check_streamerror(bodyWrap, connectstatus) {
+    var errors;
+
+    if (bodyWrap.getElementsByTagNameNS) {
+      errors = bodyWrap.getElementsByTagNameNS(Strophe.NS.STREAM, "error");
+    } else {
+      errors = bodyWrap.getElementsByTagName("stream:error");
+    }
+
+    if (errors.length === 0) {
+      return false;
+    }
+
+    var error = errors[0];
+    var condition = "";
+    var text = "";
+    var ns = "urn:ietf:params:xml:ns:xmpp-streams";
+
+    for (var i = 0; i < error.childNodes.length; i++) {
+      var e = error.childNodes[i];
+
+      if (e.getAttribute("xmlns") !== ns) {
+        break;
+      }
+
+      if (e.nodeName === "text") {
+        text = e.textContent;
+      } else {
+        condition = e.nodeName;
+      }
+    }
+
+    var errorString = "WebSocket stream error: ";
+
+    if (condition) {
+      errorString += condition;
+    } else {
+      errorString += "unknown";
+    }
+
+    if (text) {
+      errorString += " - " + text;
+    }
+
+    Strophe.error(errorString); // close the connection on stream_error
+
+    this._conn._changeConnectStatus(connectstatus, condition);
+
+    this._conn._doDisconnect();
+
+    return true;
+  },
+
+  /** PrivateFunction: _reset
+   *  Reset the connection.
+   *
+   *  This function is called by the reset function of the Strophe Connection.
+   *  Is not needed by WebSockets.
+   */
+  _reset: function _reset() {
+    return;
+  },
+
+  /** PrivateFunction: _connect
+   *  _Private_ function called by Strophe.Connection.connect
+   *
+   *  Creates a WebSocket for a connection and assigns Callbacks to it.
+   *  Does nothing if there already is a WebSocket.
+   */
+  _connect: function _connect() {
+    // Ensure that there is no open WebSocket from a previous Connection.
+    this._closeSocket(); // Create the new WobSocket
+
+
+    this.socket = new WebSocket(this._conn.service, "xmpp");
+    this.socket.onopen = this._onOpen.bind(this);
+    this.socket.onerror = this._onError.bind(this);
+    this.socket.onclose = this._onClose.bind(this);
+    this.socket.onmessage = this._connect_cb_wrapper.bind(this);
+  },
+
+  /** PrivateFunction: _connect_cb
+   *  _Private_ function called by Strophe.Connection._connect_cb
+   *
+   * checks for stream:error
+   *
+   *  Parameters:
+   *    (Strophe.Request) bodyWrap - The received stanza.
+   */
+  _connect_cb: function _connect_cb(bodyWrap) {
+    var error = this._check_streamerror(bodyWrap, Strophe.Status.CONNFAIL);
+
+    if (error) {
+      return Strophe.Status.CONNFAIL;
+    }
+  },
+
+  /** PrivateFunction: _handleStreamStart
+   * _Private_ function that checks the opening <open /> tag for errors.
+   *
+   * Disconnects if there is an error and returns false, true otherwise.
+   *
+   *  Parameters:
+   *    (Node) message - Stanza containing the <open /> tag.
+   */
+  _handleStreamStart: function _handleStreamStart(message) {
+    var error = false; // Check for errors in the <open /> tag
+
+    var ns = message.getAttribute("xmlns");
+
+    if (typeof ns !== "string") {
+      error = "Missing xmlns in <open />";
+    } else if (ns !== Strophe.NS.FRAMING) {
+      error = "Wrong xmlns in <open />: " + ns;
+    }
+
+    var ver = message.getAttribute("version");
+
+    if (typeof ver !== "string") {
+      error = "Missing version in <open />";
+    } else if (ver !== "1.0") {
+      error = "Wrong version in <open />: " + ver;
+    }
+
+    if (error) {
+      this._conn._changeConnectStatus(Strophe.Status.CONNFAIL, error);
+
+      this._conn._doDisconnect();
+
+      return false;
+    }
+
+    return true;
+  },
+
+  /** PrivateFunction: _connect_cb_wrapper
+   * _Private_ function that handles the first connection messages.
+   *
+   * On receiving an opening stream tag this callback replaces itself with the real
+   * message handler. On receiving a stream error the connection is terminated.
+   */
+  _connect_cb_wrapper: function _connect_cb_wrapper(message) {
+    if (message.data.indexOf("<open ") === 0 || message.data.indexOf("<?xml") === 0) {
+      // Strip the XML Declaration, if there is one
+      var data = message.data.replace(/^(<\?.*?\?>\s*)*/, "");
+      if (data === '') return;
+      var streamStart = new DOMParser().parseFromString(data, "text/xml").documentElement;
+
+      this._conn.xmlInput(streamStart);
+
+      this._conn.rawInput(message.data); //_handleStreamSteart will check for XML errors and disconnect on error
+
+
+      if (this._handleStreamStart(streamStart)) {
+        //_connect_cb will check for stream:error and disconnect on error
+        this._connect_cb(streamStart);
+      }
+    } else if (message.data.indexOf("<close ") === 0) {
+      // <close xmlns="urn:ietf:params:xml:ns:xmpp-framing />
+      // Parse the raw string to an XML element
+      var parsedMessage = new DOMParser().parseFromString(message.data, "text/xml").documentElement; // Report this input to the raw and xml handlers
+
+      this._conn.xmlInput(parsedMessage);
+
+      this._conn.rawInput(message.data);
+
+      var see_uri = parsedMessage.getAttribute("see-other-uri");
+
+      if (see_uri) {
+        var service = this._conn.service; // Valid scenarios: WSS->WSS, WS->ANY
+
+        var isSecureRedirect = service.indexOf("wss:") >= 0 && see_uri.indexOf("wss:") >= 0 || service.indexOf("ws:") >= 0;
+
+        if (isSecureRedirect) {
+          this._conn._changeConnectStatus(Strophe.Status.REDIRECT, "Received see-other-uri, resetting connection");
+
+          this._conn.reset();
+
+          this._conn.service = see_uri;
+
+          this._connect();
+        }
+      } else {
+        this._conn._changeConnectStatus(Strophe.Status.CONNFAIL, "Received closing stream");
+
+        this._conn._doDisconnect();
+      }
+    } else {
+      var string = this._streamWrap(message.data);
+
+      var elem = new DOMParser().parseFromString(string, "text/xml").documentElement;
+      this.socket.onmessage = this._onMessage.bind(this);
+
+      this._conn._connect_cb(elem, null, message.data);
+    }
+  },
+
+  /** PrivateFunction: _disconnect
+   *  _Private_ function called by Strophe.Connection.disconnect
+   *
+   *  Disconnects and sends a last stanza if one is given
+   *
+   *  Parameters:
+   *    (Request) pres - This stanza will be sent before disconnecting.
+   */
+  _disconnect: function _disconnect(pres) {
+    if (this.socket && this.socket.readyState !== WebSocket.CLOSED) {
+      if (pres) {
+        this._conn.send(pres);
+      }
+
+      var close = $build("close", {
+        "xmlns": Strophe.NS.FRAMING
+      });
+
+      this._conn.xmlOutput(close.tree());
+
+      var closeString = Strophe.serialize(close);
+
+      this._conn.rawOutput(closeString);
+
+      try {
+        this.socket.send(closeString);
+      } catch (e) {
+        Strophe.info("Couldn't send <close /> tag.");
+      }
+    }
+
+    this._conn._doDisconnect();
+  },
+
+  /** PrivateFunction: _doDisconnect
+   *  _Private_ function to disconnect.
+   *
+   *  Just closes the Socket for WebSockets
+   */
+  _doDisconnect: function _doDisconnect() {
+    Strophe.info("WebSockets _doDisconnect was called");
+
+    this._closeSocket();
+  },
+
+  /** PrivateFunction _streamWrap
+   *  _Private_ helper function to wrap a stanza in a <stream> tag.
+   *  This is used so Strophe can process stanzas from WebSockets like BOSH
+   */
+  _streamWrap: function _streamWrap(stanza) {
+    return "<wrapper>" + stanza + '</wrapper>';
+  },
+
+  /** PrivateFunction: _closeSocket
+   *  _Private_ function to close the WebSocket.
+   *
+   *  Closes the socket if it is still open and deletes it
+   */
+  _closeSocket: function _closeSocket() {
+    if (this.socket) {
+      try {
+        this.socket.onerror = null;
+        this.socket.close();
+      } catch (e) {
+        Strophe.debug(e.message);
+      }
+    }
+
+    this.socket = null;
+  },
+
+  /** PrivateFunction: _emptyQueue
+   * _Private_ function to check if the message queue is empty.
+   *
+   *  Returns:
+   *    True, because WebSocket messages are send immediately after queueing.
+   */
+  _emptyQueue: function _emptyQueue() {
+    return true;
+  },
+
+  /** PrivateFunction: _onClose
+   * _Private_ function to handle websockets closing.
+   *
+   * Nothing to do here for WebSockets
+   */
+  _onClose: function _onClose(e) {
+    if (this._conn.connected && !this._conn.disconnecting) {
+      Strophe.error("Websocket closed unexpectedly");
+
+      this._conn._doDisconnect();
+    } else if (e && e.code === 1006 && !this._conn.connected && this.socket) {
+      // in case the onError callback was not called (Safari 10 does not
+      // call onerror when the initial connection fails) we need to
+      // dispatch a CONNFAIL status update to be consistent with the
+      // behavior on other browsers.
+      Strophe.error("Websocket closed unexcectedly");
+
+      this._conn._changeConnectStatus(Strophe.Status.CONNFAIL, "The WebSocket connection could not be established or was disconnected.");
+
+      this._conn._doDisconnect();
+    } else {
+      Strophe.info("Websocket closed");
+    }
+  },
+
+  /** PrivateFunction: _no_auth_received
+   *
+   * Called on stream start/restart when no stream:features
+   * has been received.
+   */
+  _no_auth_received: function _no_auth_received(callback) {
+    Strophe.error("Server did not offer a supported authentication mechanism");
+
+    this._changeConnectStatus(Strophe.Status.CONNFAIL, Strophe.ErrorCondition.NO_AUTH_MECH);
+
+    if (callback) {
+      callback.call(this._conn);
+    }
+
+    this._conn._doDisconnect();
+  },
+
+  /** PrivateFunction: _onDisconnectTimeout
+   *  _Private_ timeout handler for handling non-graceful disconnection.
+   *
+   *  This does nothing for WebSockets
+   */
+  _onDisconnectTimeout: function _onDisconnectTimeout() {},
+
+  /** PrivateFunction: _abortAllRequests
+   *  _Private_ helper function that makes sure all pending requests are aborted.
+   */
+  _abortAllRequests: function _abortAllRequests() {},
+
+  /** PrivateFunction: _onError
+   * _Private_ function to handle websockets errors.
+   *
+   * Parameters:
+   * (Object) error - The websocket error.
+   */
+  _onError: function _onError(error) {
+    Strophe.error("Websocket error " + error);
+
+    this._conn._changeConnectStatus(Strophe.Status.CONNFAIL, "The WebSocket connection could not be established or was disconnected.");
+
+    this._disconnect();
+  },
+
+  /** PrivateFunction: _onIdle
+   *  _Private_ function called by Strophe.Connection._onIdle
+   *
+   *  sends all queued stanzas
+   */
+  _onIdle: function _onIdle() {
+    var data = this._conn._data;
+
+    if (data.length > 0 && !this._conn.paused) {
+      for (var i = 0; i < data.length; i++) {
+        if (data[i] !== null) {
+          var stanza = void 0;
+
+          if (data[i] === "restart") {
+            stanza = this._buildStream().tree();
+          } else {
+            stanza = data[i];
+          }
+
+          var rawStanza = Strophe.serialize(stanza);
+
+          this._conn.xmlOutput(stanza);
+
+          this._conn.rawOutput(rawStanza);
+
+          this.socket.send(rawStanza);
+        }
+      }
+
+      this._conn._data = [];
+    }
+  },
+
+  /** PrivateFunction: _onMessage
+   * _Private_ function to handle websockets messages.
+   *
+   * This function parses each of the messages as if they are full documents.
+   * [TODO : We may actually want to use a SAX Push parser].
+   *
+   * Since all XMPP traffic starts with
+   *  <stream:stream version='1.0'
+   *                 xml:lang='en'
+   *                 xmlns='jabber:client'
+   *                 xmlns:stream='http://etherx.jabber.org/streams'
+   *                 id='3697395463'
+   *                 from='SERVER'>
+   *
+   * The first stanza will always fail to be parsed.
+   *
+   * Additionally, the seconds stanza will always be <stream:features> with
+   * the stream NS defined in the previous stanza, so we need to 'force'
+   * the inclusion of the NS in this stanza.
+   *
+   * Parameters:
+   * (string) message - The websocket message.
+   */
+  _onMessage: function _onMessage(message) {
+    var elem; // check for closing stream
+
+    var close = '<close xmlns="urn:ietf:params:xml:ns:xmpp-framing" />';
+
+    if (message.data === close) {
+      this._conn.rawInput(close);
+
+      this._conn.xmlInput(message);
+
+      if (!this._conn.disconnecting) {
+        this._conn._doDisconnect();
+      }
+
+      return;
+    } else if (message.data.search("<open ") === 0) {
+      // This handles stream restarts
+      elem = new DOMParser().parseFromString(message.data, "text/xml").documentElement;
+
+      if (!this._handleStreamStart(elem)) {
+        return;
+      }
+    } else {
+      var data = this._streamWrap(message.data);
+
+      elem = new DOMParser().parseFromString(data, "text/xml").documentElement;
+    }
+
+    if (this._check_streamerror(elem, Strophe.Status.ERROR)) {
+      return;
+    } //handle unavailable presence stanza before disconnecting
+
+
+    if (this._conn.disconnecting && elem.firstChild.nodeName === "presence" && elem.firstChild.getAttribute("type") === "unavailable") {
+      this._conn.xmlInput(elem);
+
+      this._conn.rawInput(Strophe.serialize(elem)); // if we are already disconnecting we will ignore the unavailable stanza and
+      // wait for the </stream:stream> tag before we close the connection
+
+
+      return;
+    }
+
+    this._conn._dataRecv(elem, message.data);
+  },
+
+  /** PrivateFunction: _onOpen
+   * _Private_ function to handle websockets connection setup.
+   *
+   * The opening stream tag is sent here.
+   */
+  _onOpen: function _onOpen() {
+    Strophe.info("Websocket open");
+
+    var start = this._buildStream();
+
+    this._conn.xmlOutput(start.tree());
+
+    var startString = Strophe.serialize(start);
+
+    this._conn.rawOutput(startString);
+
+    this.socket.send(startString);
+  },
+
+  /** PrivateFunction: _reqToData
+   * _Private_ function to get a stanza out of a request.
+   *
+   * WebSockets don't use requests, so the passed argument is just returned.
+   *
+   *  Parameters:
+   *    (Object) stanza - The stanza.
+   *
+   *  Returns:
+   *    The stanza that was passed.
+   */
+  _reqToData: function _reqToData(stanza) {
+    return stanza;
+  },
+
+  /** PrivateFunction: _send
+   *  _Private_ part of the Connection.send function for WebSocket
+   *
+   * Just flushes the messages that are in the queue
+   */
+  _send: function _send() {
+    this._conn.flush();
+  },
+
+  /** PrivateFunction: _sendRestart
+   *
+   *  Send an xmpp:restart stanza.
+   */
+  _sendRestart: function _sendRestart() {
+    clearTimeout(this._conn._idleTimeout);
+
+    this._conn._onIdle.bind(this._conn)();
+  }
+};
+
+/***/ })
+
+/******/ })["default"];
+});
+//# sourceMappingURL=strophe.js.map
\ No newline at end of file