 core/modules/aloha/aloha.format.inc                |  153 +++++
 core/modules/aloha/aloha.info                      |    4 +
 core/modules/aloha/aloha.module                    |  675 ++++++++++++++++++++
 core/modules/aloha/aloha.pages.inc                 |   69 ++
 .../aloha/aloha/drupal-ui/lib/menuButton.js        |  147 +++++
 .../aloha/aloha/drupal-ui/lib/multiSplit.js        |  144 +++++
 core/modules/aloha/aloha/drupal-ui/lib/tab.js      |  382 +++++++++++
 core/modules/aloha/aloha/drupal-ui/lib/toolbar.js  |  200 ++++++
 core/modules/aloha/aloha/drupal-ui/lib/utils.js    |  177 +++++
 .../aloha/aloha/drupal/lib/drupal-plugin.js        |   16 +
 core/modules/aloha/aloha/drupal/lib/repository.js  |   71 ++
 core/modules/aloha/css/aloha-drupal-ui-icons.css   |   23 +
 core/modules/aloha/css/aloha-drupal-ui-rtl.css     |   43 ++
 core/modules/aloha/css/aloha-drupal-ui.css         |  455 +++++++++++++
 core/modules/aloha/fonts/aloha_icons.eot           |  Bin 0 -> 13670 bytes
 core/modules/aloha/fonts/aloha_icons.svg           |  472 ++++++++++++++
 core/modules/aloha/fonts/aloha_icons.ttf           |  Bin 0 -> 13490 bytes
 core/modules/aloha/fonts/aloha_icons.woff          |  Bin 0 -> 26644 bytes
 core/modules/aloha/js/drupal.aloha.js              |  261 ++++++++
 core/modules/aloha/js/drupal.aloha.textarea.js     |   51 ++
 20 files changed, 3343 insertions(+)

diff --git a/core/modules/aloha/aloha.format.inc b/core/modules/aloha/aloha.format.inc
new file mode 100644
index 0000000..991836b
--- /dev/null
+++ b/core/modules/aloha/aloha.format.inc
@@ -0,0 +1,153 @@
+<?php
+
+/**
+ * @file
+ * Aloha Editor format handling: blackbox testing to detect allowed HTML.
+ */
+
+/**
+ * Provides the test cases used by _aloha_calculate_allowed_html().
+ */
+function _aloha_allowed_html_tests() {
+  return array(
+    array(
+      'tag' => 'p',
+      // For a single <p> that would be stripped, filter_autop would generate
+      // it again, making it impossible to detect that filter_html actually
+      // stripped it away. Hence we need to use two adjacent <p> tags.
+      'testcase' => '<p>Hello, world!</p><p>This is Drupal!</p>',
+      'attributes' => array(
+        'prefix' => '<p ',
+        'suffix' => '>Hello, world!</p>',
+        'names' => array('dir'),
+      ),
+    ),
+    array(
+      'tag' => 'blockquote',
+      'testcase' => '<blockquote>Veni, vidi, vici.</blockquote>',
+      'attributes' => array(
+        'prefix' => '<blockquote ',
+        'suffix' => '>Veni, vidi, vici!</blockquote>',
+        'names' => array('cite'),
+      ),
+    ),
+    array('tag' => 'h1', 'testcase' => '<h1>heading 1</h1>'),
+    array('tag' => 'h2', 'testcase' => '<h2>heading 2</h2>'),
+    array('tag' => 'h3', 'testcase' => '<h3>heading 3</h3>'),
+    array('tag' => 'h4', 'testcase' => '<h4>heading 4</h4>'),
+    array('tag' => 'h5', 'testcase' => '<h5>heading 5</h5>'),
+    array('tag' => 'h6', 'testcase' => '<h6>heading 6</h6>'),
+    array('tag' => 'ul', 'testcase' => '<ul><li>A</li><li>B</li></ul>'),
+    array('tag' => 'ol', 'testcase' => '<ol><li>A</li><li>B</li></ol>'),
+    array('tag' => 'li', 'testcase' => '<li>A</li>'),
+    array('tag' => 'pre', 'testcase' => '<pre>preformatted text</pre>'),
+    // Text-level elements. (Should all be wrapped in <p> tags.)
+    array(
+      'tag' => 'a',
+      'testcase' => '<p><a>hyperlink</a></p>',
+      'attributes' => array(
+        'prefix' => '<p><a ',
+        'suffix' => '>hyperlink</a></p>',
+        'names' => array('href', 'target', 'rel', 'media'),
+      ),
+    ),
+    array('tag' => 'em', 'testcase' => '<p><em>emphasized</em></p>'),
+    array('tag' => 'strong', 'testcase' => '<p><strong>strong</strong></p>'),
+    array('tag' => 'i', 'testcase' => '<p><i>italicized</i></p>'),
+    array('tag' => 'b', 'testcase' => '<p><b>bold</b></p>'),
+    array('tag' => 'u', 'testcase' => '<p><u>underlined</u></p>'),
+    array('tag' => 'cite', 'testcase' => '<p><cite>He</cite> said "WOW, Drupal rocks!"</p>'),
+    array('tag' => 'q', 'testcase' => '<p>He said <q>"WOW, Drupal rocks!"</q></p>'),
+    array('tag' => 'br', 'testcase' => '<p>First line<br />Second line</p>'),
+    array(
+      'tag' => 'code',
+      'testcase' => '<p><code>Hello, world!</code></p>',
+      'attributes' => array(
+        'prefix' => '<p><code ',
+        'suffix' => '>Hello, world!</code></p>',
+        'names' => array('lang'),
+      ),
+    ),
+    array(
+      'tag' => 'img',
+      'testcase' => '<p><img /></p>',
+      'attributes' => array(
+        'prefix' => '<p><img ',
+        'suffix' => ' /></p>',
+        'names' => array('src', 'alt', 'title')
+      ),
+    ),
+  );
+}
+
+/**
+ * Calculates the allowed HTML tags.
+ *
+ * @param  string $format_id
+ *   A text format ID.
+ * @return
+ *   @see aloha_get_allowed_html_by_format()
+ *
+ * @todo: POST_COMMIT. Refactor.
+ * @todo: PRE_COMMIT. Unit tests. Start from http://drupal.org/node/1782838#comment-6562024.
+ */
+function _aloha_calculate_allowed_html($format_id) {
+  // For testing whether any attribute is allowed.
+  $any = 'thisIsAnExtremelyUnlikelyToExistAttributeName';
+
+  // For testing whether data- attributes are allowed.
+  $data = 'data-' . chr(mt_rand(65, 90));
+
+  // Helper function to assert the filtered text still contains the original.
+  $assert_match = function ($original, $format_id) {
+    $filtered = check_markup($original, $format_id);
+    $result = preg_replace("/>\s+</", "><", $filtered);
+    return stripos($result, $original) !== FALSE;
+  };
+
+  // Run all the above tag tests to determine which tags and attributes are
+  // allowed in the given text format.
+  $allowed_html = array_reduce(
+    _aloha_allowed_html_tests(),
+    function($result, $tagtest) use ($assert_match, $format_id, $any, $data) {
+      $tag = $tagtest['tag'];
+      if ($assert_match($tagtest['testcase'], $format_id)) {
+        $result[$tag] = array();
+
+        // Break early if there are no attributes to test.
+        if (!isset($tagtest['attributes'])) {
+          return $result;
+        }
+
+        // Anonymous function to generate attribute test cases.
+        $generate_attr_testcase = function($attr) use ($tagtest) {
+          $case = '';
+          $case .= $tagtest['attributes']['prefix'];
+          $case .= $attr . '="' . $attr . ' attribute test"';
+          $case .= $tagtest['attributes']['suffix'];
+          return $case;
+        };
+
+        // The tag test passed, then we can also do the attribute tests. First,
+        // check if any attribute is allowed, if that's not the case, then
+        // figure out which specific attributes are allowed.
+        if ($assert_match($generate_attr_testcase($any), $format_id)) {
+          $result[$tag][] = '*';
+        }
+        else {
+          $attrs = array_merge(array($data), $tagtest['attributes']['names']);
+          foreach ($attrs as $attr) {
+            if ($assert_match($generate_attr_testcase($attr), $format_id)) {
+              $result[$tag][] = ($attr === $data) ? 'data-' : $attr;
+            }
+          }
+        }
+      }
+
+      return $result;
+    },
+    array()
+  );
+
+  return $allowed_html;
+}
diff --git a/core/modules/aloha/aloha.info b/core/modules/aloha/aloha.info
new file mode 100644
index 0000000..0365286
--- /dev/null
+++ b/core/modules/aloha/aloha.info
@@ -0,0 +1,4 @@
+name = Aloha Editor
+description = WYSIWYG editing for rich text fields using Aloha Editor.
+package = User interface
+core = 8.x
diff --git a/core/modules/aloha/aloha.module b/core/modules/aloha/aloha.module
new file mode 100644
index 0000000..1ab6614
--- /dev/null
+++ b/core/modules/aloha/aloha.module
@@ -0,0 +1,675 @@
+<?php
+
+/**
+ * @file
+ * Provides integration with the Aloha Editor WYSIWYG editor.
+ */
+
+/**
+ * @todo POST_COMMIT(Aloha Editor, https://github.com/alohaeditor/Aloha-Editor/issues/737, http://drupal.org/node/1782348)
+ * Improve Aloha Editor build for Drupal.
+ */
+
+const ALOHA_VERSION = 'custom build: 0.22.2+dev at f9b2a7679abc913e4ccf16ce4bccacd8c998b592';
+
+/**
+ * Implements hook_menu().
+ */
+function aloha_menu() {
+  $items['aloha/repository/link/%'] = array(
+    'page callback' => 'aloha_repository_link',
+    'page arguments' => array(3),
+    'access arguments' => array('access content'),
+    'type' => MENU_CALLBACK,
+    'file' => 'aloha.pages.inc',
+  );
+  $items['aloha/repository/image/%'] = array(
+    'page callback' => 'aloha_repository_image',
+    'page arguments' => array(3),
+    'access arguments' => array('access content'),
+    'type' => MENU_CALLBACK,
+    'file' => 'aloha.pages.inc',
+  );
+  return $items;
+}
+
+/**
+ * Implements hook_library_info().
+ */
+function aloha_library_info() {
+  $module_path = drupal_get_path('module', 'aloha');
+  // Location of Aloha Editor build we're using and the main JS file within it.
+  $library_path = $module_path . '/build/alohaeditor';
+  $library_file = "aloha.js";
+
+  $libraries['aloha-for-textareas'] = array(
+    'title' => 'Drupal behavior to enable Aloha Editor WYSIWYG editing on textareas.',
+    'version' => VERSION,
+    'js' => array(
+      $module_path . '/js/drupal.aloha.textarea.js' => array(),
+    ),
+    'dependencies' => array(
+      array('aloha', 'aloha'),
+    )
+  );
+
+  // Modules that want to add Aloha Editor plug-ins to the list of plug-ins to
+  // be loaded should hook_library_info_alter() this library and inject their
+  // own dependencies.
+  // Look at Drupal.settings.aloha.settings.plugins.load (this is identical to
+  // Aloha.settings.plugins) to see the fully expanded list of Aloha Editor
+  // plug-ins that will be loaded.
+  $libraries['aloha'] = array(
+    'title' => 'Pseudo-library that depends on the core of Aloha Editor and contains a list of all Aloha Editor plug-ins that should be loaded.',
+    'version' => ALOHA_VERSION,
+    'dependencies' => array(
+      // The Aloha Editor core.
+      array('aloha', 'aloha.core'),
+      // Our custom UI.
+      array('aloha', 'aloha.drupal/drupal-ui'),
+      // A sensible list of default plug-ins.
+      array('aloha', 'aloha.common/contenthandler'),
+      array('aloha', 'aloha.common/format'),
+      array('aloha', 'aloha.common/align'),
+      array('aloha', 'aloha.common/list'),
+      array('aloha', 'aloha.common/link'),
+      array('aloha', 'aloha.common/paste'),
+      array('aloha', 'aloha.common/image'),
+      // Tight Drupal integration.
+      array('aloha', 'aloha.drupal/drupal'),
+    ),
+  );
+
+  $libraries['aloha.core'] = array(
+    'title' => 'Aloha Editor',
+    'website' => 'http://aloha-editor.org/',
+    'version' => ALOHA_VERSION,
+    'js' => array(
+      // First, load require.js. It must be loaded *before* jQuery, because only
+      // then, jQuery will define itself as a require.js module.
+      $library_path . '/lib/require.js' => array(
+        'data' => $library_path . '/lib/require.js',
+        'type' => 'file',
+        'scope' => 'header',
+        'group' => JS_LIBRARY,
+        'every_page' => TRUE,
+        'weight' => -30, // jquery.js has weight -20, html5.js has weight -21.
+        'preprocess' => TRUE,
+        'cache' => TRUE,
+      ),
+      // Load the aggregated Aloha JS file.
+      $library_path . '/lib/' . $library_file => array(
+        'group' => JS_LIBRARY,
+        'weight' => -10,
+        'preprocess' => FALSE,
+        'attributes' => array(
+          'data-aloha-defer-init' => 'true',
+        ),
+      ),
+      $module_path . '/js/drupal.aloha.js' => array(
+        'group' => JS_LIBRARY,
+      ),
+      // Aloha Editor core settings.
+      array(
+        'type' => 'setting',
+        'data' => array('aloha' => array('settings' => array(
+          'baseUrl' => file_create_url($library_path . '/lib'),
+          // Reduce delays for the "aloha-smart-content-changed" events to a
+          // minimum.
+          'smartContentChange' => array(
+            'idle'  => 200,
+            'delay' => 100,
+          ),
+        ))),
+      ),
+    ),
+    'dependencies' => array(
+      array('aloha', 'aloha.common/commands'),
+      array('system', 'jquery'),
+    )
+  );
+
+  // Aloha Editor: "common" bundle of plug-ins (shipped with Aloha Editor).
+  $libraries['aloha.common/ui'] = array(
+    'title' => 'Aloha Editor plug-in: UI.',
+    'version' => ALOHA_VERSION,
+    'js' => array(
+      array(
+        'type' => 'setting',
+        'data' => array('aloha' => array('settings' => array(
+          'plugins' => array('load' => array('common/ui')),
+          // We don't want to use Aloha Editor's sidebar in Drupal.
+          'sidebar' => array('disabled' => TRUE),
+        ))),
+      ),
+    ),
+  );
+  $libraries['aloha.common/commands'] = array(
+    'title' => 'Aloha Editor plug-in: commands.',
+    'version' => ALOHA_VERSION,
+    'js' => array(
+      array(
+        'type' => 'setting',
+        'data' => array('aloha' => array('settings' => array(
+          'plugins' => array('load' => array('common/commands')),
+        ))),
+      ),
+    ),
+  );
+  $libraries['aloha.common/format'] = array(
+    'title' => 'Aloha Editor plug-in: formatting.',
+    'version' => ALOHA_VERSION,
+    'js' => array(
+      array(
+        'type' => 'setting',
+        'data' => array('aloha' => array('settings' => array(
+          'plugins' => array(
+            'load' => array('common/format'),
+            'format' => array('config' => array()),
+          ),
+        ))),
+    ),
+    ),
+  );
+  $libraries['aloha.common/align'] = array(
+    'title' => 'Aloha Editor plug-in: alignment.',
+    'version' => ALOHA_VERSION,
+    'js' => array(
+      array(
+        'type' => 'setting',
+        'data' => array('aloha' => array('settings' => array(
+          'plugins' => array('load' => array('common/align')),
+        ))),
+      ),
+    ),
+    'css' => array(
+      $library_path . '/plugins/common/align/css/align.css',
+    ),
+  );
+  $libraries['aloha.common/list'] = array(
+    'title' => 'Aloha Editor plug-in: common/list',
+    'version' => ALOHA_VERSION,
+    'js' => array(
+      array(
+        'type' => 'setting',
+        'data' => array('aloha' => array('settings' => array(
+          'plugins' => array(
+            'load' => array('common/list'),
+            'list' => array('config' => array()),
+          ),
+        ))),
+      ),
+    ),
+  );
+  $libraries['aloha.common/contenthandler'] = array(
+    'title' => 'Aloha Editor plug-in: contenthandler.',
+    'version' => ALOHA_VERSION,
+    'js' => array(
+      array(
+        'type' => 'setting',
+        'data' => array('aloha' => array('settings' => array(
+          'plugins' => array('load' => array('common/contenthandler')),
+          'contentHandler' => array(),
+        ))),
+      ),
+    ),
+  );
+  $libraries['aloha.common/characterpicker'] = array(
+    'title' => 'Aloha Editor plug-in: characterpicker.',
+    'version' => ALOHA_VERSION,
+    'js' => array(
+      array(
+        'type' => 'setting',
+        'data' => array('aloha' => array('settings' => array(
+          'plugins' => array('load' => array('common/characterpicker')),
+        ))),
+      ),
+    ),
+    'css' => array(
+      $library_path . '/plugins/common/characterpicker/css/characterpicker.css',
+    ),
+  );
+  $libraries['aloha.common/paste'] = array(
+    'title' => 'Aloha Editor plug-in: paste.',
+    'version' => ALOHA_VERSION,
+    'js' => array(
+      array(
+        'type' => 'setting',
+        'data' => array('aloha' => array('settings' => array(
+          'plugins' => array('load' => array('common/paste')),
+        ))),
+      ),
+    ),
+  );
+  $libraries['aloha.common/block'] = array(
+    'title' => 'Aloha Editor plug-in: Aloha Blocks.',
+    'version' => ALOHA_VERSION,
+    'js' => array(
+      array(
+        'type' => 'setting',
+        'data' => array('aloha' => array('settings' => array(
+          'plugins' => array('load' => array('common/block')),
+        ))),
+      ),
+    ),
+    'css' => array(
+      $library_path . '/plugins/common/block/css/block.css',
+    ),
+  );
+  $libraries['aloha.common/link'] = array(
+    'title' => 'Aloha Editor plug-in: link.',
+    'version' => ALOHA_VERSION,
+    'js' => array(
+      array(
+        'type' => 'setting',
+        'data' => array('aloha' => array('settings' => array(
+          'plugins' => array(
+            'load' => array('common/link'),
+            'link' => array(
+              'config' => array(),
+              'objectTypeFilter' => array('website'),
+            )),
+        ))),
+      ),
+    ),
+    'css' => array(
+      $library_path . '/plugins/common/link/css/link.css',
+    ),
+  );
+  $libraries['aloha.common/image'] = array(
+    'title' => 'Aloha Editor plug-in: image.',
+    'version' => ALOHA_VERSION,
+    'js' => array(
+      array(
+        'type' => 'setting',
+        'data' => array('aloha' => array(
+          'settings' => array(
+            'toolbar' => array(
+              // Disable all visual UI elements of the image plugin except for a few.
+              'exclude' => array(
+                'imageResizeWidth', 'imageResizeHeight',
+                'imageAlignLeft', 'imageAlignRight', 'imageAlignNone',
+                'imageCropButton', 'imageCnrReset', 'imageCnrRatio',
+                'imageDecPadding', 'imageIncPadding'
+              )
+            ),
+            'plugins' => array(
+              'load' => array('common/image'),
+              'image' => array(
+                'config' => array(),
+                'objectTypeFilter' => array('image'),
+                'fixedAspectRatio' => TRUE,
+                'ui' => array(
+                  'meta' => TRUE,
+                  'crop' => FALSE,
+                  'resizable' => FALSE,
+                ),
+              ),
+            ),
+          ),
+        )),
+      )
+    ),
+  );
+
+  // Aloha Editor: "drupal" bundle of plug-ins (shipped with this module).
+  $libraries['aloha.drupal'] = array(
+    'title' => '"Drupal" plugin bundle.',
+    'version' => VERSION,
+    'js' => array(
+      array(
+        'type' => 'setting',
+        'data' => array('aloha' => array('settings' => array(
+          'bundles' => array('drupal' => file_create_url($module_path . '/aloha/'))
+        ))),
+      ),
+    ),
+  );
+  $libraries['aloha.drupal/drupal'] = array(
+    'title' => '"Drupal" Aloha Editor plug-in: link and image repositories.',
+    'version' => VERSION,
+    'js' => array(
+      array(
+        'type' => 'setting',
+        'data' => array('aloha' => array('settings' => array(
+          'plugins' => array('load' => array('drupal/drupal')),
+          'drupal' => array(
+            'repository' => array(
+              'drupal-links' => array(
+                'type' => 'website',
+                'name' => t('Internal links'),
+                'url' => url('aloha/repository/link/')
+              ),
+              'drupal-images' => array(
+                'type' => 'image',
+                'name' => t('Local images'),
+                'url' => url('aloha/repository/image/'),
+              ),
+            ),
+          ),
+        ))),
+      ),
+    ),
+    'dependencies' => array(
+      // Ensure the "aloha" bundle is registered.
+      array('aloha', 'aloha.drupal'),
+    )
+  );
+  $ui_path = $module_path . '/aloha/drupal-ui/lib';
+  $libraries['aloha.drupal/drupal-ui'] = array(
+    'title' => 'Drupal-specific UI for Aloha Editor.',
+    'version' => VERSION,
+    'js' => array(
+      array(
+        'type' => 'setting',
+        'data' => array('aloha' => array('settings' => array(
+          // Overide parts of AE's default UI, so that we can have a custom UI
+          // with minimal effort. Essentially, we're reconfiguring require.js
+          // here.
+          'requireConfig' => array(
+            'paths' => array(
+              'ui/multiSplit' => file_create_url($ui_path . '/multiSplit'),
+              'ui/utils'      => file_create_url($ui_path . '/utils'),
+              'ui/toolbar'    => file_create_url($ui_path . '/toolbar'),
+              'ui/tab'        => file_create_url($ui_path . '/tab'),
+              'ui/menuButton' => file_create_url($ui_path . '/menuButton'),
+            ),
+          ),
+        ))),
+      ),
+    ),
+    'css' => array(
+      $module_path . '/css/aloha-drupal-ui.css' => array(
+        'weight' => 50,
+      ),
+      $module_path . '/css/aloha-drupal-ui-icons.css' => array(
+        'weight' => 60,
+      ),
+    ),
+    'dependencies' => array(
+      // Ensure the "drupal" bundle is registered.
+      array('aloha', 'aloha.drupal'),
+      // We're overriding the default UI, so depend on that default UI.
+      array('aloha', 'aloha.common/ui'),
+    ),
+  );
+
+  return $libraries;
+}
+
+/**
+ * Implements hook_element_info_alter().
+ */
+function aloha_element_info_alter(&$types) {
+  $types['text_format']['#pre_render'][] = 'aloha_pre_render_text_format';
+}
+
+/**
+ * Render API callback: processes a text format widget to load and attach Aloha
+ * Editor.
+ *
+ * Uses the element's #id as reference to attach Aloha Editor.
+ */
+function aloha_pre_render_text_format($element) {
+  // filter_process_format() copies properties to the expanded 'value' child
+  // element. Skip this text format widget, if it contains no 'format' or when
+  // the current user does not have access to edit the value.
+  if (!isset($element['format']) || !empty($element['value']['#disabled'])) {
+    return $element;
+  }
+  // Allow modules to programmatically enforce no client-side editor by setting
+  // the #wysiwyg property to FALSE.
+  if (isset($element['#wysiwyg']) && !$element['#wysiwyg']) {
+    return $element;
+  }
+
+  $format_field = &$element['format'];
+  $field = &$element['value'];
+
+  // Use a hidden element for a single text format.
+  if (!$format_field['format']['#access']) {
+    $format_field['aloha'] = array(
+      '#type' => 'hidden',
+      '#name' => $format_field['format']['#name'],
+      '#value' => $field['#format'],
+      '#attributes' => array(
+        'id' => $format_field['format']['#id'],
+        'class' => array('aloha-formatselector-for-textarea'),
+      ),
+      '#attached' => array(
+        'library' => array(
+          array('aloha', 'aloha-for-textareas'),
+        ),
+        'js' => array(
+          array(
+            'type' => 'setting',
+            'data' => array('aloha' => array('textareas' => array(
+              $format_field['format']['#id'] => $field['#id'],
+            ))),
+          ),
+        ),
+        'aloha_add_format_settings' => array(
+          array()
+        ),
+      ),
+    );
+  }
+  // Otherwise, attach to text format selector.
+  else {
+    $format_field['format']['#attributes']['class'][] = 'aloha-formatselector-for-textarea';
+    $format_field['format']['#attached']['library'][] = array('aloha', 'aloha-for-textareas');
+    $format_field['format']['#attached']['js'][] = array(
+      'type' => 'setting',
+      'data' => array('aloha' => array('textareas' => array(
+        $format_field['format']['#id'] => $field['#id'],
+      ))),
+    );
+    $format_field['format']['#attached']['aloha_add_format_settings'][] = array();
+  }
+
+  return $element;
+}
+
+/**
+ * Implements hook_filter_format_update().
+ */
+function aloha_filter_format_update($format) {
+  cache()->delete('aloha-allowed-html:' . $format->format);
+}
+
+/**
+ * Get a allowed HTML tags and attributes using blackbox testing.
+ *
+ * @param string $format_id
+ *   A text format ID.
+ * @return array
+ *   An array of which the keys list all allowed tags and the corresponding
+ *   values list the allowed attributes. An empty array as value means no
+ *   attributes are allowed, array('*') means all attributes are allowed. In
+ *   other cases, it's an enumeration of the allowed attributes, plus "data-" if
+ *   any data- attribute is allowed.
+ */
+function aloha_get_allowed_html_by_format($format_id) {
+  $cache_id = 'aloha-allowed-html:' . $format_id;
+  if ($cached = cache()->get($cache_id)) {
+    return $cached->data;
+  }
+
+  module_load_include('inc', 'aloha', 'aloha.format');
+  $allowed_html = _aloha_calculate_allowed_html($format_id);
+  cache()->set($cache_id, $allowed_html);
+
+  return $allowed_html;
+}
+
+/**
+ * Check the compatibility of Aloha Editor with a given text format.
+ *
+ * Aloha Editor can only work if the br and p tags are allowed by the text
+ * format and only HTML is used, i.e. no markup language filters are used.
+ *
+ * @param string $format_id
+ *   A text format id.
+ *
+ * @return array
+ *   An array with the following keys:
+ *    - 'filters compatible': whether the filters in the text format are
+ *      compatible
+ *    - 'necessary tags allowed': whether the tags for Aloha Editor to function
+ *      are allowed by the text format
+ *    - 'verdict': whether this text format is compatible with Aloha Editor
+ *      based on the two measures above
+ */
+function _aloha_check_format_compatibility_detailed($format_id) {
+  $filter_types = filter_get_filter_types_by_format($format_id);
+  $allowed_html = aloha_get_allowed_html_by_format($format_id);
+  $allowed_tags = array_keys($allowed_html);
+
+  $filters_compatible = (!in_array(FILTER_TYPE_MARKUP_LANGUAGE, $filter_types));
+  $necessary_tags_allowed = (in_array('br', $allowed_tags) && in_array('p', $allowed_tags));
+
+  return array(
+    'filters compatible' => $filters_compatible,
+    'necessary tags allowed' => $necessary_tags_allowed,
+    'verdict' => $filters_compatible && $necessary_tags_allowed,
+  );
+}
+
+/**
+ * Check the compatibility of Aloha Editor with a given text format.
+ *
+ * @see _aloha_check_format_compatibility_detailed()
+ */
+function aloha_check_format_compatibility($format_id) {
+  $compatibility = _aloha_check_format_compatibility_detailed($format_id);
+  return $compatibility['verdict'];
+}
+
+/**
+ * Ensures Aloha Editor has the metadata to deal with formats.
+ *
+ * Adds Drupal.settings.aloha.formats and Aloha.settings.plugins.drupal.
+ *
+ * @todo POST_COMMIT(Aloha Editor, https://github.com/alohaeditor/Aloha-Editor/issues/794).
+ * Revisit mapping when this Aloha issue is solved.
+ */
+function aloha_add_format_settings() {
+  $format_settings_added = &drupal_static(__FUNCTION__, FALSE);
+
+  if (!$format_settings_added) {
+    $plugins = array('format', 'list', 'link', 'cite', 'align', 'image');
+    // Mapping from HTML element to Aloha Editor plug-in.
+    $tag_mapping = array(
+      'a' => 'link',
+      // Drupal does not allow <b>.
+      'b' => FALSE,
+      'blockquote' => 'cite',
+      'br' => 'format',
+      'cite' => 'cite',
+      'code' => 'format',
+      'em' => 'format',
+      'h1' => 'format',
+      'h2' => 'format',
+      'h3' => 'format',
+      'h4' => 'format',
+      'h5' => 'format',
+      'h6' => 'format',
+      // Drupal does not allow <i>.
+      'i' => FALSE,
+      'img' => 'image',
+      'li' => 'list',
+      'ol' => 'list',
+      'p' => 'format',
+      'q' => 'cite',
+      'pre' => 'format',
+      's' => 'format',
+      'strong' => 'format',
+      'sub' => 'format',
+      'sup' => 'format',
+      'u' => 'format',
+      'ul' => 'list',
+      'u' => 'format',
+    );
+    // Special cases.
+    $tag_mapping['removeFormat'] = 'format';
+    $attr_mapping = array(
+      'p' => array('style' => array(array('align', array('left', 'right', 'center', 'justify')))),
+    );
+
+    global $user;
+    $formats = filter_formats($user);
+    $settings['formats'] = array();
+
+    // Gather all necessary metadata for each format available to the current
+    // user.
+    foreach (array_keys($formats) as $format_id) {
+      $class = 'text-format-' . drupal_html_class($format_id);
+      $allowed_html = aloha_get_allowed_html_by_format($format_id);
+
+      // Let drupal.aloha.js know which text formats are compatible and which
+      // class name should be set on the editable.
+      $settings['formats'][$format_id] = array(
+        'id' => $format_id,
+        // Only enable Aloha Editor if it is compatible with the text format.
+        'status' => aloha_check_format_compatibility($format_id),
+        // The class that will be set on the editable whenever this text format
+        // is active.
+        'className' => $class,
+      );
+
+      // Let the relevant Aloha Editor plug-ins know which HTML tags are
+      // allowed by this text format. Aloha Editor will only show the buttons
+      // for the allowed HTML tags.
+      // However, by default, explicitly disallow plug-ins from using defaults
+      // by setting an empty array.
+      foreach ($plugins as $plugin) {
+        $settings['settings']['plugins'][$plugin]['editables']['.' . $class] = array();
+      }
+      $tags = array_keys($allowed_html);
+      foreach ($tags as $tag) {
+        if (!isset($tag_mapping[$tag])) {
+          continue;
+        }
+        $plugin = $tag_mapping[$tag];
+        if ($plugin === FALSE) {
+          continue;
+        }
+        $settings['settings']['plugins'][$plugin]['editables']['.' . $class][] = $tag;
+        // For some, there is also an attribute mapping.
+        if (isset($attr_mapping[$tag])) {
+          $attrs = array_keys($attr_mapping[$tag]);
+          $allowed_attrs = $allowed_html[$tag];
+          if ($format_id == 'filtered_html') {
+          $allowed_attrs = array();
+        }
+          if ($allowed_attrs === array('*')) {
+            $allowed_attrs = $attrs;
+          }
+          foreach ($attrs as $attr) {
+            if (in_array($attr, $allowed_attrs)) {
+              foreach ($attr_mapping[$tag][$attr] as $config_for_plugin) {
+                list($plugin, $config) = $config_for_plugin;
+                $settings['settings']['plugins'][$plugin]['editables']['.' . $class] = $config;
+              }
+            }
+          }
+        }
+      }
+
+      // Let Aloha Editor's "sanitize" content handler know which HTML tags and
+      // attributes are allowed by this text format. Aloha Editor will then
+      // ensure that when pasting content, nothing in the pasted content that is
+      // disallowed will continue to exist.
+      foreach ($allowed_html as $tag => $attributes) {
+        $settings['settings']['contentHandler']['handler']['sanitize']['.' . $class]['elements'][] = $tag;
+        if ($attributes !== array('*')) {
+          $settings['settings']['contentHandler']['handler']['sanitize']['.' . $class]['attributes'][$tag] = $attributes;
+        }
+      }
+    }
+
+    drupal_add_js(array('aloha' => $settings), array('type' => 'setting'));
+
+    $format_settings_added = TRUE;
+  }
+}
diff --git a/core/modules/aloha/aloha.pages.inc b/core/modules/aloha/aloha.pages.inc
new file mode 100644
index 0000000..59f096f
--- /dev/null
+++ b/core/modules/aloha/aloha.pages.inc
@@ -0,0 +1,69 @@
+<?php
+
+/**
+ * @file
+ * Aloha Editor Repository API page callbacks.
+ */
+
+/**
+ * Page callback: looks up relevant links in the site given a keyword.
+ *
+ * @param string $lookup
+ *   The keyword to look up relevant links for.
+ *
+ * @return string
+ *   A JSON-encoded result.
+ */
+function aloha_repository_link($lookup = false) {
+  $lookup = check_plain($lookup);
+
+  $search_results = module_invoke_all('search_execute', $lookup);
+
+  if (is_array($search_results) && empty($search_results[0])) {
+    $search_results = false;
+  }
+
+  if (is_array($search_results)) {
+    $json = array();
+    foreach ($search_results as $result) {
+      $json[] = array(
+        'u' => $result['link'],
+        't' => $result['title'],
+        's' => $result['score'],
+      );
+    }
+    print drupal_json_encode($json);
+    exit;
+  }
+}
+
+/**
+ * Page callback: looks up relevant images in the site given a keyword.
+ *
+ * Note that also files with status = 0 are returned, i.e. those which were
+ * uploaded at some point in time, but not necessarily used.
+ *
+ * @param string $lookup
+ *   The keyword to look up relevant images for.
+ *
+ * @return string
+ *   A JSON-encoded result.
+ */
+function aloha_repository_image($lookup) {
+  // @todo: POST_COMMIT. Convert to EFQ2.
+  $result = db_query("SELECT * FROM {file_managed} WHERE SUBSTRING(filemime, 1, 6) = 'image/' AND filename LIKE :lookup ORDER BY timestamp DESC", array(
+    ':lookup' => "%$lookup%"
+  ));
+
+  $json = array();
+  foreach ($result as $record) {
+    $json[] = array(
+      'u' => file_create_url($record->uri),
+      't' => $record->filename,
+      's' => 1.0,
+    );
+  }
+
+  print drupal_json_encode($json);
+  exit;
+}
diff --git a/core/modules/aloha/aloha/drupal-ui/lib/menuButton.js b/core/modules/aloha/aloha/drupal-ui/lib/menuButton.js
new file mode 100644
index 0000000..883df17
--- /dev/null
+++ b/core/modules/aloha/aloha/drupal-ui/lib/menuButton.js
@@ -0,0 +1,147 @@
+define([
+  'jquery',
+  'ui/component',
+  'ui/utils',
+  'jqueryui'
+], function ($, Component, Utils) {
+  'use strict';
+
+  var MenuButton = Component.extend({
+    init: function () {
+      this.element = MenuButton.makeMenuButton(this);
+    }
+  });
+
+  // static functions
+
+  /**
+   * @param props button properties:
+   *        click - if provided will generate a split button,
+   *                  otherwise just a normal select button.
+   *        menu - array of props for nested buttons
+   *        text - button text
+   *        html - button html
+   *        iconUrl - button icon url
+   *        siblingContainer
+   *             - a $ object that will be searched for other split buttons.
+   *               If a split button is expanded, all the other split buttons in
+   *               this container will be closed.
+   */
+  MenuButton.makeMenuButton = function (props) {
+    var expand = Utils.makeButtonElement({'class': 'aloha-ui-menubutton'});
+    var menu = $('<ul>').attr({'class': 'aloha-ui-menubutton-menu'});
+    var action = null;
+    var buttonset = null;
+
+    if (props.click) {
+      action = Utils.makeButton(Utils.makeButtonElement({'class': 'aloha-ui-menubutton-action'}), props)
+        .click(props.click);
+
+      Utils.makeButton(expand, {}, true);
+
+      buttonset = $('<div>')
+        .buttonset()
+        .append(action)
+        .append(expand);
+    }
+    else {
+      Utils.makeButton(expand, props, true)
+        .addClass('aloha-ui-menubutton-single');
+    }
+
+    if (!props.menu) {
+      return wrapper.append(action);
+    }
+
+    function hideMenu (menu) {
+      menu.hide().parent().removeClass('aloha-ui-menubutton-pressed');
+    }
+
+    expand.click(function () {
+      expand.addClass('aloha-ui-menubutton-pressed');
+
+      if (props.siblingContainer) {
+        props.siblingContainer
+          .find('.aloha-ui-menubutton-menu')
+          .each(function () {
+            if (this !== menu[0]) {
+              hideMenu($(this));
+            }
+          });
+      }
+
+      if (menu.is(':visible')) {
+        hideMenu(menu);
+        return;
+      }
+
+      menu.show();
+
+      $(document).bind('click', function (event) {
+        $(this).unbind(event);
+        menu.hide();
+        expand.removeClass('aloha-ui-menubutton-pressed');
+      });
+
+      return false;
+    });
+
+    expand.append(menu);
+
+    menu.append(makeNestedMenus(makeCloseHandler(menu), props.menu, props));
+
+    menu.hide().menu({
+      'select': onSelect
+    });
+
+    return expand;
+  };
+
+  function makeNestedMenus (parentCloseHandler, menu, obj) {
+    var elems = [];
+    obj.items = {};
+    $.each(menu, function (_, item) {
+      var elem = $('<li>');
+      elem.append($('<a>', {'href': '', 'html': Utils.makeButtonLabelWithIcon(item)}));
+      if (item.click) {
+        elem.data('aloha-ui-menubutton-select', function () {
+          parentCloseHandler();
+          item.click();
+        });
+      }
+      if (item.menu) {
+        var nestedMenu = $('<ul>').appendTo(elem);
+        nestedMenu.append(
+          makeNestedMenus(makeCloseHandler(nestedMenu, parentCloseHandler),
+            item.menu));
+      }
+      obj.items[item.name] = { element: elem, visible: true };
+      elems.push(elem[0]);
+    });
+    return elems;
+  }
+
+  function makeCloseHandler (menu, parentCloseHandler) {
+    parentCloseHandler = parentCloseHandler || $.noop;
+    return function () {
+      // We must blur the parent menu otherwise it will remain in
+      // focused state and not expand the next time it is hovered over
+      // after the user has selected an item.
+      menu.blur().hide();
+      menu.parent().removeClass('aloha-ui-menubutton-pressed');
+      parentCloseHandler();
+    };
+  }
+
+  function onSelect (event, ui) {
+    var clickHandler = ui.item.data('aloha-ui-menubutton-select');
+    if (clickHandler) {
+      clickHandler(event, ui);
+    }
+    // We use preventDefault() to keep a click on a menu item from
+    // scrolling to the top of the page.
+    event.preventDefault();
+  }
+
+  return MenuButton;
+});
diff --git a/core/modules/aloha/aloha/drupal-ui/lib/multiSplit.js b/core/modules/aloha/aloha/drupal-ui/lib/multiSplit.js
new file mode 100644
index 0000000..6581033
--- /dev/null
+++ b/core/modules/aloha/aloha/drupal-ui/lib/multiSplit.js
@@ -0,0 +1,144 @@
+define([
+  'jquery',
+  'ui/surface',
+  'ui/component',
+  'ui/button',
+  'ui/utils',
+  'ui/menuButton'
+], function ($, Surface, Component, Button, Utils, MenuButton) {
+  'use strict';
+
+  /**
+   * MultiSplit component type. We override this in Drupal's custom AE UI to be
+   * a dropdown instead. The text of the dropdown shows the current value, upon
+   * opening the dropdown, the user will see a full list of available options.
+   * @class
+   * @extends {Component}
+   */
+  var MultiSplit = Component.extend({
+
+    buttons: [],
+
+    /**
+     * Initializes the multisplit component
+     * @override
+     */
+    init: function () {
+      this.buttons = this.getButtons();
+
+      // @TRICKY: When we want "remove formatting", we'll need to call
+      // getItems() instead of getButtons(). Scott Gonzalez decided this
+      // shouldn't be a button, hence getButtons() won't return it.
+
+      // The options that the dropdown button will offer.
+      var menuItems = [];
+      jQuery.each(this.buttons, function (i, button) {
+        var text = button.name.toUpperCase();
+
+        // @todo: POST_COMMIT(Aloha Editor, https://github.com/alohaeditor/Aloha-Editor/issues/747)
+        // This is a quick hack to remove the "remove formatting" button from
+        // the p/h1/... dropdown; we want it to live elsewhere.
+        if (button.name === "removeFormat") {
+          return;
+        }
+
+        // In Drupal's UI, we don't have "large icons". Rename the class name so
+        // that the automatic conversion into data icons can happen in ui/utils.
+        // button.icon = button.icon.replace('aloha-large-icon-', 'aloha-icon-')
+        menuItems.push({
+          text: button.tooltip,
+          icon: button.icon,
+          click: button.click,
+          name: button.name
+        });
+      });
+
+      // The menu button's default text shows the name of the first menu item.
+      var FormatMenuButton = MenuButton.extend({
+        text: menuItems[0].text,
+        menu: menuItems
+      });
+      var formatMenuButton = new FormatMenuButton();
+
+      // Ensure the button is shown/hidden depending on the current selection.
+      this.element = formatMenuButton.element;
+      this.items = formatMenuButton.items;
+      // @todo: POST_COMMIT(Aloha Editor, https://github.com/alohaeditor/Aloha-Editor/issues/747)
+      // Don't make this assumption! Aloha Editor's UI should pass us the
+      // necessary information.
+      this.setActiveButton('p');
+      Surface.trackRange(this.element);
+    },
+
+    show: function (name) {
+      if (!name) {
+        name = null;
+      }
+      if (null !== name && this.items[name] !== undefined) {
+        this.items[name].element.show();
+        this.items[name].visible = true;
+        // since we show at least one button now, we need to show the multisplit button
+        this.element.show();
+      }
+    },
+
+    hide: function (name) {
+      var item, visible = false;
+
+      if (!name) {
+        name = null;
+      }
+      if (null !== name && this.items[name] !== undefined) {
+        this.items[name].element.hide();
+        this.items[name].visible = false;
+
+        // now check, if there is a visible button
+        for (item in this.items) {
+          if (this.items.hasOwnProperty(item)) {
+            if (this.items[item].visible) {
+              this.element.show();
+              visible = true;
+              break;
+            }
+          }
+        }
+
+        if (!visible) {
+          this.element.hide();
+        }
+      }
+    },
+
+    setActiveButton: function (index) {
+      if (index === null) {
+        return;
+      }
+
+      // Set the text of the dropdown button to the newly selected value.
+      var name = (typeof index === 'string') ? index : this.buttons[index].name;
+
+      jQuery('.ui-button-icon-primary', this.element).remove();
+      jQuery('<span>')
+        .addClass('ui-button-icon-primary drupal-aloha-icon')
+        .attr('data-icon', Utils.getDataIconForClassName(name))
+        .prependTo(this.element);
+    },
+
+    /**
+     * Toggles the multisplit menu
+     */
+    toggle: function () {},
+
+    /**
+     * Opens the multisplit menu
+     */
+    open: function () {},
+
+    /**
+     * Closes the multisplit menu
+     */
+    close: function () {}
+  });
+
+  return MultiSplit;
+});
diff --git a/core/modules/aloha/aloha/drupal-ui/lib/tab.js b/core/modules/aloha/aloha/drupal-ui/lib/tab.js
new file mode 100644
index 0000000..ad36171
--- /dev/null
+++ b/core/modules/aloha/aloha/drupal-ui/lib/tab.js
@@ -0,0 +1,382 @@
+define([
+  'aloha/core',
+  'jquery',
+  'ui/container',
+  'ui/component',
+  'PubSub',
+  'jqueryui'
+], function (Aloha, $, Container, Component, PubSub) {
+  'use strict';
+
+  var idCounter = 0;
+  var slottedComponents = {};
+
+  /**
+   * A "tab" consists of two things: a handle and a panel. The handle is the
+   * "tab" itself, the panel is the content associated with that tab.
+   */
+
+  /**
+   * Defines a Container object that represents a collection of related
+   * component groups to be rendered together on the toolbar.  Tabs are
+   * organized by feature and functionality so that related controls can be
+   * brought in and out of view depending on whether they are
+   * appropriate for a given user context.
+   *
+   * Tabs can be defined declaritively in the Aloha configuration in the
+   * following manner:
+   *
+   *    Aloha.settings.toolbar: [
+   *      {
+   *         label: 'Lists',
+   *         showOn: 'ul,ol,*.parent(.aloha-editable ul,.aloha-editable ol)',
+   *         components: [ [ 'orderedList', 'unorderedList' ] ]
+   *      }
+   *    ]
+   *
+   * Alternatively, tabs can also be created imperatively in this way:
+   * new Tab( options, components ).
+   *
+   * @class
+   * @extends {Container}
+   */
+  var Tab = Container.extend({
+
+    _elemBySlot: null,
+    _groupBySlot: null,
+    _groupByComponent: null,
+
+    /**
+     * All that this constructor does is save the components array into a
+     * local variable, to be used during instantialization.
+     *
+     * @param {object} settings
+     * @param {Array.<Array<string>>} components
+     * @constructor
+     */
+    _constructor: function (context, settings, components) {
+      var thisTab = this,
+        i, j,
+        elem,
+        groupedComponents,
+        group,
+        groupProps,
+        componentName;
+
+      this._elemBySlot = {};
+      this._groupBySlot = {};
+      this._groupByComponent = {};
+      this._super(context, settings);
+
+      this.handles = settings.handlesContainer;
+      this.panels = settings.panelsContainer;
+      this.state = settings.handlesContainer.data('state');
+      this.id = 'aloha-drupal-ui-tab-panel-' + (++idCounter);
+      this.panel = $('<div>', {id: this.id, 'unselectable': 'on'});
+      this.handle = $('<li><a href="#' + this.id + '">' +
+        settings.label + '</a></li>');
+
+      for (i = 0; i < components.length; i++) {
+        if (typeof components[i] === 'string') {
+          if (1 === components[i].length && components[i].charCodeAt(0) === 10) {
+            this.panel.append('<div>', {'unselectable': 'on'});
+          } else {
+            elem = $('<span>', {'unselectable': 'on'});
+            this._elemBySlot[components[i]] = elem;
+            this.panel.append(elem);
+          }
+        } else {
+          group = $('<div>', {
+            'class': 'aloha-ui-component-group',
+            'unselectable': 'on'
+          }).appendTo(this.panel);
+          groupProps = {element: group, visibleCounter: 0};
+          groupedComponents = components[i];
+          for (j = 0; j < groupedComponents.length; j++) {
+            this._groupBySlot[groupedComponents[j]] = groupProps;
+            if (groupedComponents[j] &&
+              1 === groupedComponents[j].length &&
+              groupedComponents[j].charCodeAt(0) === 10) {
+              group.append($('<div>', {'unselectable': 'on'}));
+            } else {
+              componentName = groupedComponents[j];
+              elem = $('<span>', {'unselectable': 'on'});
+              this._elemBySlot[groupedComponents[j]] = elem;
+              group.append(elem);
+            }
+          }
+        }
+      }
+
+      this.panel.append($('<div>', {'class': 'aloha-ui-clear', 'unselectable': 'on'}));
+      this.handle.appendTo(this.handles);
+      this.panel.appendTo(this.panels);
+
+      var alohaTabs = this.handles.data('aloha-tabs');
+      this.index = alohaTabs.length;
+      alohaTabs.push(this);
+
+      this._processTabs();
+    },
+
+    // idempotent (called whenever a tab is created)
+    _processTabs: function () {
+      // _processTabs()
+      // Find all tab handles and set the "aria-controls" attribute.
+      var anchors = this.handles.children().map(function () {
+        return $("a", this)[ 0 ];
+      });
+      anchors.each(function (i, a) {
+        var selector = a.hash;
+        $(a).attr("aria-controls", selector.substring(1));
+      });
+
+      // _refresh()
+      this.handles
+        // tab handles container
+        .addClass("aloha-drupal-ui-tab-handle-container")
+        // tab handles
+        .children()
+        .addClass("aloha-drupal-ui-tab-handle")
+        .addClass("aloha-drupal-ui-state-default");
+      this.panels
+        // tab panels container
+        .addClass("aloha-drupal-ui-tab-panel-container")
+        // tab panels
+        .children()
+        .addClass(" aloha-drupal-ui-tab-panel ")
+        .addClass("aloha-drupal-ui-state-hidden");
+
+      // _setupEvents()
+      anchors
+        // Unbind to avoid duplicates.
+        .unbind(".aloha-drupal-ui-tabs")
+        .bind("click.aloha-drupal-ui-tabs", $.proxy(this, "_eventHandler"));
+    },
+
+    _getHandleByIndex: function (index) {
+      var that = this;
+      return that.handles.children()[ index ];
+    },
+
+    _getIndexOfHandle: function (handle) {
+      var that = this;
+      return that.handles.children().index(handle);
+    },
+
+    _getPanelForHandle: function (handle) {
+      if (!handle.length) {
+        return $([]);
+      }
+
+      var that = this;
+      var id = handle.find("a").attr("aria-controls");
+      return that.panels.find("#" + id);
+    },
+
+    _eventHandler: function (event) {
+      var that = this,
+        activeHandle = that.state._tabActiveHandle,
+        activeHandleIndex = that.state._tabActiveHandleIndex,
+        clicked = $(event.currentTarget),
+        clickedHandle = clicked.closest("li"),
+        clickedIsActive = clickedHandle[ 0 ] === activeHandle[ 0 ],
+        toShow = that._getPanelForHandle(clickedHandle),
+        toHide = !activeHandle.length ? $() : that._getPanelForHandle(activeHandle),
+        eventData = {
+          oldHandle: activeHandle,
+          oldPanel: toHide,
+          newHandle: clickedHandle,
+          newPanel: toShow
+        };
+
+      event.preventDefault();
+
+      // If the clicked handle is already marked as active and actually *is* active, bail.
+      if (clickedIsActive) {
+        return;
+      }
+
+      // If the clicked handle is disabled or hidden, bail.
+      if (clickedHandle.hasClass("aloha-drupal-ui-state-disabled") ||
+        clickedHandle.hasClass("aloha-drupal-ui-state-hidden")) {
+        clicked[ 0 ].blur();
+        return;
+      }
+
+      that.state._tabActiveHandleIndex = that._getIndexOfHandle(clickedHandle);
+      that.state._tabActiveHandle = clickedHandle;
+
+      if (!toHide.length && !toShow.length) {
+        throw "Aloha UI Tabs: Mismatching fragment identifier.";
+      }
+
+      that._updateUI(event, eventData);
+    },
+
+    _updateUI: function (event, eventData) {
+      var that = this;
+
+      eventData.oldPanel
+        .addClass("aloha-drupal-ui-state-hidden")
+        .removeClass("aloha-drupal-ui-state-default");
+      eventData.oldHandle.removeClass("aloha-drupal-ui-state-active");
+      eventData.newHandle.addClass("aloha-drupal-ui-state-active");
+      eventData.newPanel
+        .addClass("aloha-drupal-ui-state-default")
+        .removeClass("aloha-drupal-ui-state-hidden");
+
+      that._tabSelected(that);
+    },
+
+    select: function (index) {
+      this.handles.children().eq(index).find("a")
+        .trigger("click");
+    },
+
+    adoptInto: function (slot, component) {
+      var elem = this._elemBySlot[slot],
+        group;
+      if (!elem) {
+        return false;
+      }
+      slottedComponents[slot] = component;
+      component.adoptParent(this);
+      elem.append(component.element);
+      group = this._groupBySlot[slot];
+      if (group) {
+        this._groupByComponent[component.id] = group;
+        if (component.isVisible()) {
+          group.visibleCounter += 1;
+        }
+      }
+      return true;
+    },
+
+    foreground: function () {
+      this.select(this.index);
+    },
+
+    childForeground: function (childComponent) {
+      this.foreground();
+    },
+
+    hasVisibleComponents: function () {
+      var siblings = this._elemBySlot;
+      var slot;
+      for (slot in siblings) {
+        if (siblings.hasOwnProperty(slot) && slottedComponents[slot]) {
+          if (slottedComponents[slot].visible) {
+            return true;
+          }
+        }
+      }
+      return false;
+    },
+
+    childVisible: function (childComponent, visible) {
+      if (visible) {
+        childComponent.container.show();
+      } else if (!childComponent.container.hasVisibleComponents()) {
+        childComponent.container.hide();
+      }
+      var group = this._groupByComponent[childComponent.id];
+      if (!group) {
+        return;
+      }
+      if (visible) {
+        if (0 === group.visibleCounter) {
+          group.element.removeClass('aloha-ui-hidden');
+        }
+        group.visibleCounter += 1;
+      } else {
+        group.visibleCounter -= 1;
+        if (0 === group.visibleCounter) {
+          group.element.addClass('aloha-ui-hidden');
+        }
+      }
+    },
+
+    _tabSelected: function (tab) {
+      var that = this;
+
+      var tabs = that.handles.data('aloha-tabs');
+      PubSub.pub('aloha.ui.container.selected', {data: tabs[tab.index]});
+    },
+
+    /**
+     * @override
+     */
+    show: function () {
+      if (!this.handles.children().length) {
+        return;
+      }
+      this.handle
+        .removeClass("aloha-drupal-ui-state-hidden")
+        .addClass("aloha-drupal-ui-state-default");
+      this.visible = true;
+
+      // Hiding all tabs may hide the toolbar, so showing the
+      // first tab again must also show the toolbar.
+      // this.container.show();
+
+      // If no tab handle is selected, then select this tab.
+      // (this.foreground uses this.index, which means the current tab object's
+      // panel will be shown)
+      if (this.state._tabActiveHandleIndex === false) {
+        this.foreground();
+      }
+    },
+
+    /**
+     * @override
+     */
+    hide: function () {
+      if (0 === this.handles.children().length) {
+        return;
+      }
+      this.handle
+        .removeClass("aloha-drupal-ui-state-default")
+        .addClass("aloha-drupal-ui-state-hidden");
+      this.visible = false;
+
+      // If the tab we just hid was the selected tab, then we need to
+      // select another tab in its stead.  We will select the first
+      // visible tab we find, or else we deselect all tabs.
+      if (this.index === this.state._tabActiveHandleIndex) {
+        var alohaTabs = this.handles.data('aloha-tabs');
+
+        var i;
+        for (i = 0; i < alohaTabs.length; ++i) {
+          if (alohaTabs[ i ].visible) {
+            this.select(i);
+            return;
+          }
+        }
+      }
+    }
+
+  });
+
+  $.extend(Tab, {
+
+    /**
+     * Creates holding elements.
+     *
+     * @static
+     * @return {jQuery.<HTMLElement>} The holder container.
+     */
+    createContainers: function () {
+      var $handles = $('<ul>', { 'class': 'tab-handles', 'unselectable': 'on'})
+        .data('state', {
+          _tabActiveHandleIndex: false,
+          _tabActiveHandle: $([])
+        })
+        .data('aloha-tabs', []);
+      var $panels = $('<div>', { 'class': 'tab-panels', 'unselectable': 'on'});
+      return { handlesContainer: $handles, panelsContainer: $panels };
+    }
+  });
+
+  return Tab;
+});
diff --git a/core/modules/aloha/aloha/drupal-ui/lib/toolbar.js b/core/modules/aloha/aloha/drupal-ui/lib/toolbar.js
new file mode 100644
index 0000000..9ed5213
--- /dev/null
+++ b/core/modules/aloha/aloha/drupal-ui/lib/toolbar.js
@@ -0,0 +1,200 @@
+define([
+  'jquery',
+  'aloha/core',
+  'ui/surface',
+  'ui/tab',
+  'ui/context',
+  'i18n!ui/nls/i18n',
+  'jqueryui'
+], function ($, Aloha, Surface, Tab, Context, i18n) {
+  'use strict';
+
+  /**
+   * The toolbar is configured via `settings.toolbar` and is defined as an
+   * array of tabs with component groups, where the groups are arrays of
+   * controls.
+   *
+   * There are separate components for each context, but only the components
+   * for the active context are shown.
+   *
+   * As a container for tabs, the toolbar serves to group together groups of
+   * control components so that they can be shown and hidden together in
+   * their feature/functional set.  For exmaple groups of table controls
+   * would be placed in a table tab, groups of list controls in an image tab,
+   * and so forth.
+   *
+   * Toolbar class and manager
+   *
+   * @class
+   * @extends {Surface}
+   */
+  var Toolbar = Surface.extend({
+    $_container: null,
+    _tabBySlot: null,
+    _tabs: [],
+
+    /**
+     * Toolbar constructor.
+     *
+     * @param {!Array.<(Object|Array|string)>} tabs
+     * @constructor
+     * @override
+     */
+    _constructor: function (context, tabs) {
+      var tabSettings,
+        tabInstance,
+        i,
+        key;
+      this._super(context);
+      this.tabContainers = Tab.createContainers();
+      Toolbar.$handlesSurfaceContainer.append(this.tabContainers.handlesContainer);
+      Toolbar.$panelsSurfaceContainer.append(this.tabContainers.panelsContainer);
+      this._tabBySlot = {};
+
+      for (i = 0; i < tabs.length; i++) {
+        tabSettings = tabs[i];
+        tabInstance = new Tab(context, {
+          label: i18n.t(tabSettings.label, tabSettings.label),
+          showOn: tabSettings.showOn,
+          handlesContainer: this.tabContainers.handlesContainer,
+          panelsContainer: this.tabContainers.panelsContainer,
+          state: this.tabContainers.handlesContainer.data('state')
+        }, tabSettings.components);
+        for (key in tabInstance._elemBySlot) {
+          if (tabInstance._elemBySlot.hasOwnProperty(key)) {
+            this._tabBySlot[key] = tabInstance;
+          }
+        }
+        this._tabs.push({tab: tabInstance, settings: tabSettings});
+      }
+    },
+
+    adoptInto: function (slot, component) {
+      var tab = this._tabBySlot[slot];
+      return tab && tab.adoptInto(slot, component);
+    },
+
+    /**
+     * Shows the toolbar.
+     */
+    show: function () {
+      if (!this._hasCustomToolbarLocation()) {
+        var $textarea = Aloha.activeEditable.obj.closest('.aloha-textarea');
+        Aloha.jQuery('.edit-toolbar-container .edit-toolbar.tertiary .edit-toolgroup.wysiwyg')
+          .width($textarea.width() + 8);
+        Toolbar.$toolbarSurfaceContainer
+          .stop().fadeTo(200, 1)
+          .insertBefore($textarea);
+      }
+      else {
+        // Move the toolbar surface into our custom location.
+        var $a = jQuery('<div class="aloha-surface">').append(Toolbar.$handlesSurfaceContainer.detach());
+        jQuery('.edit-toolgroup.wysiwyg-tabs:first').append($a)
+        var $b = jQuery('<div class="aloha-surface">').append(Toolbar.$panelsSurfaceContainer.detach());
+        jQuery('.edit-toolgroup.wysiwyg:first').append($b);
+
+        // Now show the appropriate content.
+        Toolbar.$handlesSurfaceContainer.stop().fadeTo(200, 1);
+        Toolbar.$panelsSurfaceContainer.stop().fadeTo(200, 1);
+      }
+    },
+
+    /**
+     * Hides the toolbar.
+     */
+    hide: function () {
+      if (!this._hasCustomToolbarLocation()) {
+        Toolbar.$toolbarSurfaceContainer.stop().fadeOut(200, function () {
+          Toolbar.$toolbarSurfaceContainer
+            .detach()
+            .appendTo('body');
+        });
+      }
+      else {
+        Toolbar.$panelsSurfaceContainer
+          .add(Toolbar.$handlesSurfaceContainer)
+          .stop().fadeOut(200, function () {
+            // Move the toolbar surface into its original location again.
+            Toolbar.$handlesSurfaceContainer
+              .detach()
+              .appendTo(Toolbar.$toolbarSurfaceContainer)
+              .show();
+            Toolbar.$panelsSurfaceContainer
+              .detach()
+              .appendTo(Toolbar.$toolbarSurfaceContainer)
+              .show();
+          });
+      }
+    },
+
+    _hasCustomToolbarLocation: function() {
+      return Aloha.activeEditable.obj.attr('data-edit-aloha-toolbar-custom-location') !== undefined;
+    }
+  });
+
+  $.extend(Toolbar, {
+
+    /**
+     * An element on which all toolbar surfaces are to be rendered on the
+     * page.
+     * @type {jQuery.<HTMLElement>}
+     */
+    $panelsSurfaceContainer: null,
+
+    $handlesSurfaceContainer: null,
+
+    /**
+     * When this container is used, it will contain both the panels surface
+     * container and the tabs surface container.
+     */
+    $toolbarSurfaceContainer: null,
+
+    // @todo: POST_COMMIT(Aloha Editor, https://github.com/alohaeditor/Aloha-Editor/issues/747)
+    // Get rid of this: fix AE plug-ins that incorrectly assume this exists!
+    $surfaceContainer: $([]),
+
+    /**
+     * Initializes the toolbar manager.  Adds the surface container
+     * element, and sets up floating behaviour settings.
+     */
+    init: function () {
+      // TODO should use context.js to get the context element
+      Toolbar.$panelsSurfaceContainer = $('<div>', {
+        'class': 'aloha-surface aloha-toolbar-panels',
+        'unselectable': 'on'
+      }).hide();
+
+      Toolbar.$handlesSurfaceContainer = $('<div>', {
+        'class': 'aloha-surface aloha-toolbar-handles',
+        'unselectable': 'on'
+      }).hide();
+
+
+      Toolbar.$toolbarSurfaceContainer = $('<div>', {
+        'class': 'aloha-surface aloha-toolbar',
+        'unselectable': 'on'
+      })
+        .append(Toolbar.$handlesSurfaceContainer)
+        .append(Toolbar.$panelsSurfaceContainer)
+        .hide();
+      Toolbar.$handlesSurfaceContainer.removeClass('aloha-surface').show();
+      Toolbar.$panelsSurfaceContainer.removeClass('aloha-surface').show();
+
+      // In the built aloha.js, init will happend before the body has
+      // finished loading, so we have to defer appending the element.
+      $(function () {
+        Toolbar.$toolbarSurfaceContainer.appendTo('body');
+      });
+      Surface.trackRange(Toolbar.$toolbarSurfaceContainer);
+
+      // Unnecessary when the UI renders itself completely, but essential when
+      // the toolbar must be rendered into a custom location.
+      Surface.trackRange(Toolbar.$panelsSurfaceContainer);
+      Surface.trackRange(Toolbar.$handlesSurfaceContainer);
+    }
+  });
+
+  Toolbar.init();
+
+  return Toolbar;
+});
diff --git a/core/modules/aloha/aloha/drupal-ui/lib/utils.js b/core/modules/aloha/aloha/drupal-ui/lib/utils.js
new file mode 100644
index 0000000..e259bb2
--- /dev/null
+++ b/core/modules/aloha/aloha/drupal-ui/lib/utils.js
@@ -0,0 +1,177 @@
+define(['jquery', 'jqueryui'], function ($) {
+  'use strict';
+  var Utils = {
+
+    /**
+     * Wraps an element such that a label is displayed alongside it.
+     *
+     * Contrary to tooltips, a label is always visible and takes up
+     * place in the toolbar.
+     *
+     * The label will wrap the given element to make an implicit
+     * association between label and element (click on the label will
+     * give focus to a wrapped input element for example).
+     *
+     * @param {string} labelText
+     *       The already internationalized text the label should contain.
+     * @param {!jQuery} element
+     *       Any element to wrap.
+     * @return {!jQuery}
+     *       A new label element that wraps the given element.
+     */
+    wrapWithLabel: function(labelText, element) {
+      return $('<label>', {'class': 'aloha-ui-label'})
+        .append($('<span>', {'class': 'aloha-ui-label-text', 'text': labelText}))
+        .append(element);
+    },
+
+    buttonDataIconsMapping: {
+      'link': '&#xe002;',
+      'unlink': '&#xe002;',
+      'bold': '&#xe035;',
+      'strong': '&#xe035;', // '&#xe034;',
+      'italic': '&#xe00c;',
+      'emphasis': '&#xe00c;', //'&#xe032;',
+      'strikethrough': '&#xe00a;',
+      'subscript': '&#xe039;',
+      'superscript': '&#xe038;',
+      'underline': '&#xe00b;',
+      'strikethrough2': '&#xe00a;',
+      'orderedlist': '&#xe009;',
+      'unorderedlist': '&#xe006;',
+      'p': '&#x2c;',
+      'pre': '&#x2b;',
+      'h1': '&#x2a;',
+      'h2': '&#x29;',
+      'h3': '&#x28;',
+      'h4': '&#x27;',
+      'h5': '&#x26;',
+      'h6': '&#x25;',
+      'indent': '&#xe008;',
+      'outdent': '&#xe007;',
+      'align-center': '&#xe042;',
+      'align-justify': '&#xe048;',
+      'align-right': '&#xe004;',
+      'align-left': '&#xe005;',
+      'remove-formatting': '&#xe001;',
+      'characterpicker': '&#xe01a;',
+      'imgAlignLeft': '&#x22;',
+      'imgAlignRight': '&#x23;',
+      'imgAlignCenter': '&#x24;',
+      // 'imageAlignNone':
+      // image plug-in
+      'image-insert': '&#xe03b;',
+      'image-align-left': '&#x22;',
+      'image-align-right': '&#x23;',
+      'image-align-none': '&#x24;'
+    },
+
+    // Source: http://stackoverflow.com/a/9609450.
+    decodeEntities: (function () {
+      // this prevents any overhead from creating the object each time
+      var element = document.createElement('div');
+
+      function decodeHTMLEntities (str) {
+        if (str && typeof str === 'string') {
+          // strip script/html tags
+          str = str.replace(/<script[^>]*>([\S\s]*?)<\/script>/gmi, '');
+          str = str.replace(/<\/?\w(?:[^"'>]|"[^"]*"|'[^']*')*>/gmi, '');
+          element.innerHTML = str;
+          str = element.textContent;
+          element.textContent = '';
+        }
+
+        return str;
+      }
+
+      return decodeHTMLEntities;
+    })(),
+
+    getDataIconForClassName: function (className) {
+      var icon = Utils.buttonDataIconsMapping[className];
+      return Utils.decodeEntities(icon);
+    },
+
+    makeButton: function (button, props, hasMenu) {
+      button.button({
+        label: Utils.makeButtonLabel(props),
+        text: !!(props.text || props.html),
+        icons: {
+          primary: props.icon || (props.iconUrl && 'aloha-ui-inline-icon-container') || null,
+          secondary: (hasMenu && 'aloha-jqueryui-icon ui-icon-triangle-1-s') || null
+        }
+      });
+
+      // Edit: improved accessibility.
+      button.button('widget')
+        .find('.ui-button-icon-primary').attr('aria-hidden', 'true');
+
+      // Edit: remove Aloha's class-based icons and override them with our
+      // custom icons, using data- attributes.
+      var primaryIcon = button.button('widget')
+        .find('.ui-button-icon-primary');
+      if (primaryIcon.hasClass('aloha-icon') || primaryIcon.hasClass('aloha-img') || primaryIcon.hasClass('aloha-image-insert')) {
+        var imgPlugin = (primaryIcon.hasClass('aloha-icon') === false);
+        var classString = primaryIcon.attr('class'),
+          match,
+          className = null,
+          classNames = [],
+          re = (!imgPlugin) ? /aloha-(?:large-)?icon-([\w\-]+)/gi : /aloha-([\w\-]+)/gi;
+
+        // Find all "aloha-(icon|image)-<something>" classes, and remember the
+        // most specific match.
+        /*jshint boss: true */
+        while (match = re.exec(classString)) {
+          className = match[1];
+          classNames.push(className);
+        }
+
+        // If any match, override the icon.
+        if (className) {
+          var removeClassNames = classNames
+            .map(function (c) { return (!imgPlugin) ? 'aloha-icon-' + c : ' aloha-' + c; })
+            .join(' ');
+          primaryIcon
+            .removeClass('ui-icon aloha-icon ' + removeClassNames)
+            .addClass('drupal-aloha-icon')
+            .attr('data-html-tag', className)
+            .attr('data-icon', Utils.getDataIconForClassName(className));
+        }
+      }
+
+      button.button('widget')
+        .find('.ui-button-icon-secondary')
+        .addClass('drupal-aloha-icon');
+
+      if (props.iconUrl) {
+        button.button('widget')
+          .children('.ui-button-icon-primary')
+          .append(Utils.makeButtonIconFromUrl(props.iconUrl));
+      }
+      return button;
+    },
+    makeButtonLabel: function (props) {
+      // TODO text should be escaped
+      return props.html || props.text || props.tooltip;
+    },
+    makeButtonLabelWithIcon: function (props) {
+      var label = Utils.makeButtonLabel(props);
+      if (props.iconUrl) {
+        label = Utils.makeButtonIconFromUrl(props.iconUrl) + label;
+      }
+      return label;
+    },
+    makeButtonIconFromUrl: function (iconUrl) {
+      return '<img class="aloha-ui-inline-icon" src="' + iconUrl + '">';
+    },
+    makeButtonElement: function (attr) {
+      // Set type to button to avoid problems with IE which
+      // considers buttons to be of type submit by default. One
+      // problem that occurd was that hitting enter inside a
+      // text-input caused a click event in the button right next
+      // to it.
+      return $('<button>', attr).attr('type', 'button');
+    }
+  };
+  return Utils;
+});
diff --git a/core/modules/aloha/aloha/drupal/lib/drupal-plugin.js b/core/modules/aloha/aloha/drupal/lib/drupal-plugin.js
new file mode 100644
index 0000000..b1ebbf8
--- /dev/null
+++ b/core/modules/aloha/aloha/drupal/lib/drupal-plugin.js
@@ -0,0 +1,16 @@
+/**
+ * @file
+ * An Aloha Editor plug-in for tight Drupal integration.
+ *
+ * Currently, there is no real need for a plug-in, only for a repository API.
+ */
+
+define([
+  'aloha',
+  'aloha/plugin',
+  'drupal/repository'
+], function (Aloha, Plugin) {
+  'use strict';
+
+  return;
+});
diff --git a/core/modules/aloha/aloha/drupal/lib/repository.js b/core/modules/aloha/aloha/drupal/lib/repository.js
new file mode 100644
index 0000000..b8ff008
--- /dev/null
+++ b/core/modules/aloha/aloha/drupal/lib/repository.js
@@ -0,0 +1,71 @@
+define([
+  'aloha',
+  'jquery'
+], function (Aloha, jQuery) {
+  'use strict';
+
+  /**
+   * If a DrupalRepository can return Repository Items of more than one type,
+   * then you should override its query() method.
+   */
+  var DrupalRepository = Aloha.AbstractRepository.extend({
+    _constructor: function (repositoryId, repositoryName, url, type) {
+      this._super(repositoryId, repositoryName);
+      this.settings.url = url;
+      this.settings.type = type;
+    },
+
+    init: function () {},
+
+    query: function (p, callback) {
+      // Query string must be >3 characters.
+      if (p.queryString && p.queryString.length < 3) {
+        callback.call(this, []);
+        return;
+      }
+
+      // Ensure this repository's type is allowed by the objectTypeFilter.
+      if (jQuery.inArray(this.settings.type, p.objectTypeFilter) == -1) {
+        callback.call(this, []);
+        return;
+      }
+
+      var that = this;
+      jQuery.ajax({
+        type: "GET",
+        dataType: "json",
+        url: this.settings.url + p.queryString,
+        success: function (searchResults) {
+          var suggestions = [];
+
+          if (searchResults && searchResults.length > 0) {
+            for (var i = 0; i < searchResults.length; i++) {
+              if (typeof searchResults[i] !== "function") {
+                suggestions.push(new Aloha.RepositoryDocument({
+                  id: searchResults[i].u, // u: url
+                  url: searchResults[i].u,
+                  name: searchResults[i].t, // t: title
+                  weight: searchResults[i].s, // s: score
+                  repositoryId: that.repositoryName,
+                  type: that.settings.type
+                }));
+              }
+            }
+            callback.call(this, suggestions);
+          }
+        }
+      });
+    }
+  });
+
+  // Create a DrupalRepository for every repository listed in the settings.
+  if (Aloha.settings.drupal && Aloha.settings.drupal.repository) {
+    var settings = Aloha.settings.drupal.repository;
+    for (var repositoryId in settings) {
+      if (settings.hasOwnProperty(repositoryId)) {
+        var repo = settings[repositoryId];
+        new DrupalRepository(repositoryId, repo.name, repo.url, repo.type);
+      }
+    }
+  }
+});
diff --git a/core/modules/aloha/css/aloha-drupal-ui-icons.css b/core/modules/aloha/css/aloha-drupal-ui-icons.css
new file mode 100644
index 0000000..54c2a80
--- /dev/null
+++ b/core/modules/aloha/css/aloha-drupal-ui-icons.css
@@ -0,0 +1,23 @@
+/**
+ * @file
+ * Icon font for Drupal's Aloha Editor UI.
+ */
+
+
+@font-face {
+  font-family: 'aloha_icons';
+  src: url('../fonts/aloha_icons.eot');
+  src: url('../fonts/aloha_icons.eot?#iefix') format('embedded-opentype'),
+    url('../fonts/aloha_icons.svg#aloha_icons') format('svg'),
+    url('../fonts/aloha_icons.woff') format('woff'),
+    url('../fonts/aloha_icons.ttf') format('truetype');
+  font-weight: normal;
+  font-style: normal;
+}
+
+.drupal-aloha-icon[data-icon]:before,
+[data-icon]:before {
+  font-family: 'aloha_icons';
+  content: attr(data-icon);
+  speak: none;
+}
diff --git a/core/modules/aloha/css/aloha-drupal-ui-rtl.css b/core/modules/aloha/css/aloha-drupal-ui-rtl.css
new file mode 100644
index 0000000..50a2f23
--- /dev/null
+++ b/core/modules/aloha/css/aloha-drupal-ui-rtl.css
@@ -0,0 +1,43 @@
+/**
+ * @file
+ * RTL styles for Drupal's Aloha Editor UI.
+ */
+
+/**
+ * Toolbar tabs.
+ */
+
+.aloha-surface .aloha-toolbar-handles ul {
+  float: right;
+}
+
+.aloha-surface .aloha-toolbar-handles ul li {
+  float: right;
+}
+
+.aloha-surface .aloha-toolbar-handles ul li a {
+  border-left: inherit;
+}
+
+/**
+ * Toolbar panels.
+ */
+
+.aloha-surface .aloha-toolbar-panels button {
+  float: right;
+  border-right: 0;
+  border-left: 1px solid #aaa;
+}
+
+/**
+ * Format dropdown (multisplit).
+ */
+
+.aloha-surface .aloha-toolbar-panels button.aloha-ui-menubutton .ui-button-icon-primary,
+.aloha-surface .aloha-toolbar-panels button.aloha-ui-menubutton .ui-button-icon-secondary {
+  float: right;
+}
+
+.aloha-surface .aloha-toolbar-panels button.aloha-ui-menubutton ul li {
+  text-align: right;
+}
diff --git a/core/modules/aloha/css/aloha-drupal-ui.css b/core/modules/aloha/css/aloha-drupal-ui.css
new file mode 100644
index 0000000..0600b7f
--- /dev/null
+++ b/core/modules/aloha/css/aloha-drupal-ui.css
@@ -0,0 +1,455 @@
+/**
+ * @file
+ * Styles for Drupal's Aloha Editor UI.
+ */
+
+/**
+ * Aloha Editor core.
+ */
+
+.aloha-surface {
+  font-size: 13px;
+}
+
+.tab-handles {
+  line-height: 1.6;
+}
+
+.aloha-surface,
+.aloha-surface .ui-widget,
+.aloha.ui-tooltip {
+  font-family: 'Droid sans', 'Lucida Grande', sans-serif;
+}
+
+.aloha-editable {
+  outline: none;
+}
+
+.aloha-textarea {
+  overflow: hidden;
+  border: 1px solid #aaa;
+  padding: 2px;
+  overflow: auto;
+}
+
+.aloha-surface .aloha-toolbar :focus {
+  outline: none;
+}
+
+.aloha-surface .aloha-toolbar * {
+  -webkit-user-select: none;
+   -khtml-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+       -o-user-select: none;
+          user-select: none;
+}
+
+.aloha-surface .ui-button {
+  cursor: pointer;
+}
+
+.aloha-surface .aloha-toolbar .ui-autocomplete-input {
+  -webkit-user-select: text;
+   -khtml-user-select: text;
+     -moz-user-select: text;
+      -ms-user-select: text;
+       -o-user-select: text;
+          user-select: text;
+}
+
+.aloha-surface .ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
+
+/**
+ * General UI.
+ */
+
+.aloha-drupal-ui-state-hidden {
+  opacity: 0;
+  display: none !important;
+}
+
+.aloha-drupal-ui-state-disabled {
+  opacity: .3;
+}
+
+.aloha-drupal-ui-state-default {
+  opacity: 1;
+}
+
+.aloha-toolbar-handles,
+.aloha-drupal-ui-tab-handle,
+.aloha-drupal-ui-tab-handle *,
+.aloha-toolbar-panels button {
+  -webkit-transition: all .2s ease;
+   -khtml-transition: all .2s ease;
+     -moz-transition: all .2s ease;
+      -ms-transition: all .2s ease;
+       -o-transition: all .2s ease;
+          transition: all .2s ease;
+}
+
+.aloha.ui-tooltip {
+  font-size: 10px;
+  line-height: 1.2em;
+  padding: 4px 6px;
+  border: 1px solid #777;
+  background: #fff;
+  color: #222;
+  position: absolute;
+  z-index: 999999;
+  -webkit-border-radius: 4px;
+   -khtml-border-radius: 4px;
+     -moz-border-radius: 4px;
+       -o-border-radius: 4px;
+          border-radius: 4px;
+  -webkit-box-shadow: 0 0 5px #aaa;
+   -khtml-box-shadow: 0 0 5px #aaa;
+     -moz-box-shadow: 0 0 5px #aaa;
+       -o-box-shadow: 0 0 5px #aaa;
+          box-shadow: 0 0 5px #aaa;
+}
+
+/**
+ * Toolbar tabs.
+ */
+
+.aloha-surface .aloha-toolbar-handles {
+  display: block;
+  height: 35px;
+}
+
+.aloha-surface .aloha-toolbar-handles ul {
+  display: inline-block;
+  float: left; /* LTR */
+  border-left: 1px solid #aaa;
+  margin: 0;
+  padding: 0;
+}
+
+.aloha-surface .aloha-toolbar-handles ul li {
+  list-style: none;
+  float: left; /* LTR */
+}
+
+.aloha-surface .aloha-toolbar-handles ul li a {
+  display: block;
+  color: #5a5a5a;
+  min-width: 40px;
+  text-align: center;
+  padding: 7px 12px;
+  border: 1px solid #aaa;
+  border-left: 0;
+  border-bottom: 0;
+  text-decoration: none;
+  margin: 0;
+  -webkit-border-radius: 0;
+   -khtml-border-radius: 0;
+     -moz-border-radius: 0;
+       -o-border-radius: 0;
+          border-radius: 0;
+}
+
+.aloha-surface .aloha-toolbar-handles ul li.aloha-drupal-ui-state-active a {
+  background-color: #eee;
+  color: black;
+}
+
+/**
+ * Toolbar panels.
+ */
+
+.aloha-surface .aloha-toolbar-panels {
+  display: block;
+  height: auto;
+  border: 1px solid #aaa;
+  border-bottom: none; /* The border of the AE textarea will already be there. */
+  color: #5a5a5a;
+  font-size: 15px;
+}
+
+.aloha-surface .aloha-toolbar-panels:after {
+  visibility: hidden;
+  display: block;
+  clear: both;
+  height: 0;
+  font-size: 0;
+  content: " ";
+}
+
+.aloha-surface .aloha-toolbar-panels button .ui-button-text {
+  position: absolute;
+  left: -9999px;
+  top: -9999px;
+}
+
+.aloha-surface .aloha-toolbar-panels button .drupal-aloha-icon {
+  font-size: 15px;
+}
+
+.aloha-surface .aloha-toolbar-panels button {
+  border: none;
+  background: inherit;
+  color: inherit;
+  width: 31px;
+  height: 30px;
+  padding: 5px 0 4px;
+  display: block;
+  float: left; /* LTR */
+  border-right: 1px solid #aaa; /* LTR */
+  text-align: center;
+  -webkit-border-radius: 0;
+   -khtml-border-radius: 0;
+     -moz-border-radius: 0;
+       -o-border-radius: 0;
+          border-radius: 0;
+  margin: 0;
+}
+
+.aloha-surface .aloha-toolbar-panels,
+.aloha-surface .aloha-toolbar-panels button.ui-state-default {
+  background: -webkit-gradient(
+    linear,
+    color-stop(0, rgb(239, 239, 239)),
+    color-stop(1, rgb(245, 245, 245))
+  );
+  background: -webkit-linear-gradient(rgb(239, 239, 239) 0%, rgb(245, 245, 245) 100%);
+  background:    -moz-linear-gradient(rgb(239, 239, 239) 0%, rgb(245, 245, 245) 100%);
+  background:      -o-linear-gradient(rgb(239, 239, 239) 0%, rgb(245, 245, 245) 100%);
+  background:         linear-gradient(rgb(239, 239, 239) 0%, rgb(245, 245, 245) 100%);
+}
+
+.aloha-surface .aloha-toolbar-panels button.ui-state-hover {
+  color: #444;
+  background: -webkit-gradient(
+    linear,
+    color-stop(0, rgb(255, 255, 255)),
+    color-stop(1, #eee)
+  );
+  background: -webkit-linear-gradient(rgb(255, 255, 255) 0%, #eee 100%);
+  background:    -moz-linear-gradient(rgb(255, 255, 255) 0%, #eee 100%);
+  background:      -o-linear-gradient(rgb(255, 255, 255) 0%, #eee 100%);
+  background:         linear-gradient(rgb(255, 255, 255) 0%, #eee 100%);
+}
+
+.aloha-surface .aloha-toolbar-panels button.aloha-button-active {
+  color: #353535;
+  background: -webkit-gradient(
+    linear,
+    color-stop(0, rgb(170, 170, 170)),
+    color-stop(1, rgb(238, 238, 238))
+  );
+  background: -webkit-linear-gradient(rgb(170, 170, 170) 0%, rgb(238, 238, 238) 100%);
+  background:    -moz-linear-gradient(rgb(170, 170, 170) 0%, rgb(238, 238, 238) 100%);
+  background:      -o-linear-gradient(rgb(170, 170, 170) 0%, rgb(238, 238, 238) 100%);
+  background:         linear-gradient(rgb(170, 170, 170) 0%, rgb(238, 238, 238) 100%);
+}
+
+.aloha-surface .aloha-toolbar-panels button.ui-state-active {
+  color: #222;
+  background: -webkit-gradient(
+    linear,
+    color-stop(0, rgb(136, 136, 136)),
+    color-stop(1, rgb(204, 204, 204))
+  );
+  background: -webkit-linear-gradient(rgb(136, 136, 136) 0%, rgb(204, 204, 204) 100%);
+  background:    -moz-linear-gradient(rgb(136, 136, 136) 0%, rgb(204, 204, 204) 100%);
+  background:      -o-linear-gradient(rgb(136, 136, 136) 0%, rgb(204, 204, 204) 100%);
+  background:         linear-gradient(rgb(136, 136, 136) 0%, rgb(204, 204, 204) 100%);
+}
+
+.aloha-surface .aloha-toolbar-panels .ui-autocomplete-input {
+  font-size: .85em;
+  font-size: 2px 4px;
+  padding: 2px 4px;
+  margin: 3px 4px 1px;
+  border: 1px solid #aaa;
+  height: 20px;
+}
+
+/**
+ * Format dropdown (multisplit).
+ */
+
+.aloha-surface .aloha-ui-menubutton-menu {
+  z-index: 1;
+}
+
+.aloha-surface .aloha-toolbar-panels button.aloha-ui-menubutton {
+  position: relative;
+  width: 40px;
+  overflow: visible;
+}
+
+.aloha-surface .aloha-toolbar-panels button.aloha-ui-menubutton .ui-button-icon-primary,
+.aloha-surface .aloha-toolbar-panels button.aloha-ui-menubutton .ui-button-icon-secondary {
+  float: left; /* LTR */
+  padding: 0 1px;
+}
+
+.aloha-surface .aloha-toolbar-panels button.aloha-ui-menubutton .ui-button-icon-primary {
+  padding: 0 4px;
+}
+
+.aloha-surface .aloha-toolbar-panels button.aloha-ui-menubutton .ui-icon-triangle-1-s:before {
+  font-family: 'aloha_icons';
+  content: "\e024";
+  speak: none;
+  font-size: 8px;
+  vertical-align: 30%;
+  padding: 0 1px;
+}
+
+.aloha-surface .aloha-toolbar-panels button.aloha-ui-menubutton ul {
+  background: #fff;
+  position: absolute;
+  top: 31px;
+  width: 130px;
+  -webkit-box-shadow: 0 0 8px #999;
+   -khtml-box-shadow: 0 0 8px #999;
+     -moz-box-shadow: 0 0 8px #999;
+       -o-box-shadow: 0 0 8px #999;
+          box-shadow: 0 0 8px #999;
+  margin: 0;
+  padding: 0;
+  -webkit-border-radius: 4px;
+   -khtml-border-radius: 4px;
+     -moz-border-radius: 4px;
+       -o-border-radius: 4px;
+          border-radius: 4px;
+}
+
+.aloha-surface .aloha-toolbar-panels button.aloha-ui-menubutton ul li {
+  list-style: none;
+  text-align: left; /* LTR */
+}
+
+.aloha-surface .aloha-toolbar-panels button.aloha-ui-menubutton ul li a {
+  display: block;
+  padding: 4px 8px;
+  color: #000;
+  text-decoration: none;
+  font-size: 13px;
+  width: 115px;
+  height: auto;
+  min-width: 0;
+  margin: 0;
+  border: 0;
+  -webkit-border-radius: 4px;
+   -khtml-border-radius: 4px;
+     -moz-border-radius: 4px;
+       -o-border-radius: 4px;
+          border-radius: 4px;
+}
+
+.aloha-surface .aloha-toolbar-panels button.aloha-ui-menubutton ul li a.ui-state-focus {
+  background-color: #4a92e4;
+  color: #fff;
+}
+
+/**
+ * Auto-complete widget.
+ */
+
+.aloha .ui-autocomplete.ui-widget-content {
+  background: #fff;
+  border: 1px solid #ddd;
+  padding: 3px;
+  list-style: none;
+  margin: 0;
+  display: block;
+  outline: none;
+  max-width: 322px;
+  -webkit-box-shadow: 1px 2px 20px rgba(0, 0, 0, .25);
+   -khtml-box-shadow: 1px 2px 20px rgba(0, 0, 0, .25);
+     -moz-box-shadow: 1px 2px 20px rgba(0, 0, 0, .25);
+       -o-box-shadow: 1px 2px 20px rgba(0, 0, 0, .25);
+          box-shadow: 1px 2px 20px rgba(0, 0, 0, .25);
+  -webkit-border-radius: 0;
+   -khtml-border-radius: 0;
+     -moz-border-radius: 0;
+       -o-border-radius: 0;
+          border-radius: 0;
+}
+
+.aloha .ui-autocomplete .ui-menu-item {
+  margin: 0;
+  padding: 0;
+  zoom: 1;
+  width: 100%;
+}
+
+.aloha .ui-autocomplete .ui-menu-item a {
+  text-decoration: none;
+  display: block;
+  padding: 2px .4em;
+  line-height: 1.5;
+  zoom: 1;
+  font-weight: normal;
+  text-align: left;
+  font-size: 12px;
+  border-color: transparent;
+  color: #222;
+  -webkit-border-radius: 0;
+   -khtml-border-radius: 0;
+     -moz-border-radius: 0;
+       -o-border-radius: 0;
+          border-radius: 0;
+}
+
+.aloha .ui-autocomplete .ui-menu-item a.ui-state-focus {
+  background: #3b73d7;
+  color: #fff;
+}
+
+/**
+ * Custom UI for common/block.
+ */
+
+/*
+ * @todo POST_COMMIT(Aloha Editor, https://github.com/alohaeditor/Aloha-Editor/issues/685)
+ * Temporarily disable Aloha Blocks' handles, because the CaptionedImage plug-in
+ * can't deal yet with dragging images into an alignment.
+ */
+.aloha-block-handle {
+  background: none;
+  border: none;
+}
+
+.aloha-editable-active .aloha-block,
+.aloha-block.aloha-block-highlighted {
+  -webkit-box-shadow: none;
+   -khtml-box-shadow: none;
+     -moz-box-shadow: none;
+       -o-box-shadow: none;
+          box-shadow: none;
+}
+
+.aloha-block.aloha-block-active,
+.aloha-block.aloha-block-active:hover,
+.aloha-image-box-active {
+  -webkit-box-shadow: 0 0 1px 1px #0199ff;
+   -khtml-box-shadow: 0 0 1px 1px #0199ff;
+     -moz-box-shadow: 0 0 1px 1px #0199ff;
+       -o-box-shadow: 0 0 1px 1px #0199ff;
+          box-shadow: 0 0 1px 1px #0199ff;
+}
+
+
+/**
+ * Custom UI for common/image.
+ */
+
+.aloha-ui-component-group > div {
+  display: none;
+}
+
+.aloha-image-input-label {
+  display: inline-block;
+}
+
+.aloha-image-input-label .aloha-ui-label-text {
+  font-weight: normal;
+  font-size: 12px;
+  padding: .5em;
+}
diff --git a/core/modules/aloha/fonts/aloha_icons.eot b/core/modules/aloha/fonts/aloha_icons.eot
new file mode 100644
index 0000000000000000000000000000000000000000..c304bd3e7004cac020bdfb4f446151b040be27a5
GIT binary patch
literal 13670
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

literal 0
HcmV?d00001

diff --git a/core/modules/aloha/fonts/aloha_icons.svg b/core/modules/aloha/fonts/aloha_icons.svg
new file mode 100644
index 0000000..e27dca6
--- /dev/null
+++ b/core/modules/aloha/fonts/aloha_icons.svg
@@ -0,0 +1,472 @@
+<?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>
+This is a custom SVG font generated by IcoMoon.
+0
+</metadata>
+<defs>
+<font id="aloha_icons" horiz-adv-x="512" >
+<font-face units-per-em="512" ascent="480" descent="-32" />
+<missing-glyph horiz-adv-x="512" />
+<glyph unicode="&#x21;" d="M 330.516,72.653c0.00-21.371-17.193-38.554-38.42-38.554l-41.672,0.00 l-16.625-27.423l-23.818,27.423L 103.665,34.099 c-21.222,0.00-38.42,17.183-38.42,38.554
+		L 65.244,260.859 c0.00,21.437, 17.198,38.574, 38.42,38.574L 292.096,299.433 c 17.787,0.00, 32.671-12.155, 37.074-28.667L 224.43,151.598l-53.125,48.302l-67.768-20.296
+		l 131.927-120.136L 512.911,480.00L 388.173,337.94c-10.225,16.538-28.349,27.648-49.229,27.648L 56.806,365.588 c-31.867,0.00-57.713-25.923-57.713-57.728l0.00-282.194 
+		c0.00-31.892, 25.851-57.667, 57.713-57.667l 282.127,0.00 c 31.882,0.00, 57.723,25.769, 57.723,57.667L 396.657,275.814 L 330.516,166.569L 330.516,72.653 z" />
+<glyph unicode="&#x22;" d="M 55.419,375.547L 83.128,375.547L 83.128,72.453L 55.419,72.453zM 55.419,375.547L 512.00,375.547L 512.00,347.837L 55.419,347.837zM 484.291,375.542L 512.00,375.542L 512.00,72.448L 484.291,72.448zM 55.419,100.157L 512.00,100.157L 512.00,72.448L 55.419,72.448zM0.00,480.00L 27.709,480.00L 27.709-32.00L0.00-32.00z" />
+<glyph unicode="&#x23;" d="M 428.872,375.547L 456.581,375.547L 456.581,72.453L 428.872,72.453zM0.00,375.547L 456.581,375.547L 456.581,347.837L0.00,347.837zM0.00,375.542L 27.709,375.542L 27.709,72.448L0.00,72.448zM0.00,100.157L 456.581,100.157L 456.581,72.448L0.00,72.448zM 484.291,480.00L 512.00,480.00L 512.00-32.00L 484.291-32.00z" />
+<glyph unicode="&#x24;" d="M 457.989,375.547L 485.699,375.547L 485.699,72.453L 457.989,72.453zM 29.117,375.547L 485.704,375.547L 485.704,347.837L 29.117,347.837zM 29.117,375.542L 56.827,375.542L 56.827,72.448L 29.117,72.448zM 29.117,100.157L 485.704,100.157L 485.704,72.448L 29.117,72.448zM 243.548,479.995L 271.258,479.995L 271.258,359.675L 243.548,359.675zM 243.548,88.32L 271.258,88.32L 271.258-32.00L 243.548-32.00z" />
+<glyph unicode="&#x25;" d="M 75.853,416.481l0.00-143.80 L 164.352,272.681 L 164.352,416.481 l 75.858,0.00 l0.00-376.105 L 164.352,40.376 L 164.352,207.35 L 75.853,207.35 l0.00-166.968 L0.00,40.381 L0.00,416.481 L 75.853,416.481 zM 422.723,352.215c-5.089,7.731-13.962,11.592-26.593,11.592c-9.841,0.00-17.843-2.371-23.972-7.117
+		c-6.159-4.746-10.89-11.32-14.228-19.743c-3.338-8.438-5.535-18.442-6.579-30.029c-1.05-11.602-1.587-24.228-1.587-37.944l0.00-18.427 l 1.06,0.00 
+		c 6.308,9.815, 15.36,17.638, 27.126,23.434c 11.766,5.78, 26.071,8.689, 42.926,8.689c 16.512,0.00, 30.546-2.908, 42.153-8.689
+		c 11.581-5.796, 20.972-13.875, 28.155-24.228c 7.204-10.363, 12.462-22.661, 15.805-36.864c 3.328-14.223, 5.012-29.763, 5.012-46.618
+		c0.00-43.203-9.585-75.94-28.718-98.243c-19.149-22.318-49.772-33.444-91.914-33.444c-25.994,0.00-46.71,4.557-62.152,13.686
+		c-15.468,9.124-27.31,21.688-35.558,37.678c-8.264,15.964-13.619,34.488-16.067,55.578c-2.458,21.053-3.707,43.018-3.707,65.833
+		c0.00,26.337, 0.783,51.901, 2.371,76.652c 1.592,24.76, 6.328,46.71, 14.213,65.848c 7.905,19.139, 20.296,34.499, 37.146,46.085
+		c 16.86,11.592, 40.735,17.388, 71.649,17.388c 13.348,0.00, 26.245-1.587, 38.717-4.746c 12.457-3.154, 23.434-8.428, 32.927-15.80
+		c 9.477-7.373, 17.106-17.111, 22.922-29.23c 5.77-12.134, 8.868-27.136, 9.221-45.041l-72.704,0.00 C 430.377,333.251, 427.837,344.494, 422.723,352.215z
+		 M 355.036,126.766c 1.06-9.134, 3.067-16.942, 6.057-23.455c 2.99-6.497, 7.199-11.581, 12.641-15.263c 5.448-3.702, 12.544-5.535, 21.335-5.535
+		c 9.129,0.00, 16.42,1.833, 21.862,5.535c 5.437,3.686, 9.554,8.858, 12.38,15.534c 2.801,6.671, 4.649,14.49, 5.53,23.444
+		c 0.881,8.945, 1.326,18.698, 1.326,29.235c0.00,25.283-3.164,43.361-9.487,54.257c-6.313,10.89-16.84,16.323-31.611,16.323
+		c-15.094,0.00-25.815-5.437-32.128-16.323c-6.308-10.895-9.472-28.969-9.472-54.257C 353.464,145.725, 353.992,135.895, 355.036,126.766z" />
+<glyph unicode="&#x26;" d="M 75.766,414.72l0.00-143.631 l 88.387,0.00 L 164.152,414.72 l 75.756,0.00 l0.00-375.654 L 164.157,39.066 L 164.157,205.855 L 75.766,205.855 L 75.766,39.066 L0.00,39.066 L0.00,414.72 L 75.766,414.72 zM 352.486,345.283l-7.89-84.71l 1.055,0.00 c 7.009,9.81, 16.123,16.922, 27.356,21.304c 11.218,4.383, 24.893,6.569, 41.032,6.569
+		c 17.894,0.00, 32.707-3.415, 44.457-10.26c 11.75-6.84, 21.043-15.867, 27.894-27.095c 6.83-11.218, 11.643-23.926, 14.459-38.144
+		c 2.811-14.198, 4.219-28.662, 4.219-43.402c0.00-20.695-1.787-39.475-5.274-56.305c-3.517-16.84-9.738-31.304-18.668-43.402
+		c-8.96-12.114-21.14-21.238-36.567-27.351c-15.437-6.129-35.077-9.211-58.916-9.211c-23.501,0.00-42.537,3.154-57.093,9.482
+		c-14.546,6.303-25.687,14.623-33.403,24.986c-7.721,10.337-12.892,21.565-15.514,33.664s-3.948,23.398-3.948,33.935l0.00,9.999 l 72.607,0.00 
+		c0.00-6.303, 0.343-12.984, 1.05-20.009c 0.701-7.009, 2.371-13.583, 4.997-19.717c 2.632-6.139, 6.39-11.233, 11.31-15.263
+		c 4.915-4.04, 11.387-6.057, 19.471-6.057c 15.77,0.00, 27.095,6.057, 33.93,18.156c 6.845,12.093, 10.266,30.249, 10.266,54.441
+		c0.00,15.432-0.712,28.232-2.115,38.415c-1.403,10.168-3.773,18.232-7.096,24.207c-3.343,5.949-7.803,10.168-13.414,12.626
+		c-5.617,2.458-12.626,3.692-21.038,3.692c-10.885,0.00-19.205-3.082-24.996-9.226c-5.78-6.139-9.38-14.464-10.783-24.975L 281.994,201.631 l 13.681,202.568
+		l 194.135,0.00 l0.00-58.926 L 352.486,345.272 L 352.486,345.283 z" />
+<glyph unicode="&#x27;" d="M 76.933,414.72l0.00-145.838 l 89.748,0.00 L 166.682,414.72 l 76.918,0.00 l0.00-381.44 L 166.682,33.28 L 166.682,202.639 L 76.933,202.639 L 76.933,33.28 L0.00,33.28 l0.00,381.44 L 76.933,414.72 zM 396.073,411.515l 79.606,0.00 l0.00-239.867 L 512.00,171.648 l0.00-59.843 l-36.321,0.00 L 475.679,33.28 L 405.146,33.28 L 405.146,111.811 L 270.536,111.811 L 270.536,174.848 L 396.073,411.515z M 404.086,315.356
+	L 330.358,171.648L 405.146,171.648 L 405.146,315.356 L 404.086,315.356 z" />
+<glyph unicode="&#x28;" d="M 75.766,414.72l0.00-143.631 l 88.387,0.00 L 164.152,414.72 l 75.756,0.00 l0.00-375.654 L 164.157,39.066 L 164.157,205.855 L 75.766,205.855 L 75.766,39.066 L0.00,39.066 L0.00,414.72 L 75.766,414.72 zM 358.021,98.248c 5.427-11.402, 16.389-17.091, 32.87-17.091c 9.124,0.00, 16.389,1.587, 21.842,4.741c 5.427,3.149, 9.641,7.439, 12.621,12.892
+		c 2.98,5.432, 4.91,11.832, 5.786,19.21c 0.876,7.363, 1.326,15.063, 1.326,23.137c0.00,8.433-0.625,16.404-1.843,23.941
+		c-1.234,7.542-3.599,14.295-7.101,20.265c-3.507,5.949-8.417,10.691-14.73,14.188c-6.313,3.507-14.73,5.268-25.262,5.268l-25.262,0.00 l0.00,49.464 
+		l 24.735,0.00 c 8.064,0.00, 14.812,1.664, 20.25,4.987c 5.427,3.333, 9.81,7.721, 13.153,13.158c 3.323,5.437, 5.78,11.648, 7.363,18.673
+		c 1.582,6.999, 2.371,14.382, 2.371,22.093c0.00,17.884-2.98,30.505-8.95,37.878c-5.97,7.368-15.084,11.044-27.351,11.044
+		c-8.084,0.00-14.653-1.49-19.727-4.48c-5.094-2.985-9.032-7.183-11.837-12.621c-2.811-5.437-4.649-11.837-5.524-19.20
+		s-1.316-15.442-1.316-24.212L 281.984,301.583 c0.00,37.192, 9.293,64.804, 27.884,82.867c 18.58,18.068, 45.768,27.105, 81.551,27.105
+		c 34.017,0.00, 60.401-7.721, 79.186-23.153c 18.739-15.437, 28.134-39.644, 28.134-72.602c0.00-22.461-4.997-40.786-14.976-54.989
+		c-9.999-14.193-23.941-23.235-41.836-27.095l0.00-1.05 c 24.202-3.86, 41.293-13.588, 51.297-29.189c 9.999-15.621, 15.002-35.18, 15.002-58.675
+		c0.00-12.621-1.587-25.615-4.741-38.932c-3.149-13.322-9.288-25.431-18.417-36.301c-9.129-10.88-21.658-19.645-37.617-26.312
+		c-15.964-6.651-36.91-9.989-62.868-9.989c-36.132,0.00-63.13,9.815-81.019,29.46c-17.884,19.651-26.839,47.524-26.839,83.651l0.00,1.587 l 72.612,0.00 
+		C 349.681,126.218, 352.584,109.65, 358.021,98.248z" />
+<glyph unicode="&#x29;" d="M 76.933,414.72l0.00-145.838 l 89.748,0.00 L 166.682,414.72 l 76.918,0.00 l0.00-381.44 L 166.682,33.28 L 166.682,202.639 L 76.933,202.639 L 76.933,33.28 L0.00,33.28 l0.00,381.44 L 76.933,414.72 zM 279.076,33.28c0.00,16.748, 1.684,32.415, 5.069,47.027c 3.374,14.587, 8.55,28.477, 15.493,41.661c 6.938,13.169, 15.662,26.092, 26.173,38.723
+	c 10.511,12.641, 22.707,25.39, 36.593,38.195l 30.986,28.861c 8.54,7.48, 15.401,14.418, 20.577,20.828c 5.156,6.41, 9.165,12.815, 12.017,19.231
+	c 2.842,6.405, 4.71,13.353, 5.617,20.823c 0.886,7.48, 1.347,16.026, 1.347,25.656c0.00,31.319-12.483,47.007-37.402,47.007
+	c-9.62,0.00-17.188-1.961-22.712-5.868c-5.514-3.917-9.795-9.262-12.82-16.02c-3.026-6.774-4.997-14.607-5.868-23.511
+	c-0.896-8.909-1.341-18.345-1.341-28.308L 279.081,287.585 l0.00,14.413 c0.00,35.261, 9.441,62.326, 28.314,81.198c 18.872,18.872, 48.614,28.319, 89.221,28.319
+	c 38.461,0.00, 66.949-8.919, 85.478-26.706c 18.499-17.818, 27.766-43.274, 27.766-76.401c0.00-12.114-1.07-23.424-3.205-33.92
+	c-2.14-10.516-5.519-20.567-10.153-30.182c-4.639-9.61-10.675-18.97-18.166-28.047c-7.475-9.093-16.553-18.437-27.244-28.058l-42.742-39.521
+	c-11.402-10.348-20.296-20.403-26.706-30.182c-6.41-9.815-10.506-18.263-12.288-25.39L 512.00,93.107 L 512.00,33.28 L 279.076,33.28 L 279.076,33.28z" />
+<glyph unicode="&#x2a;" d="M 111.514,414.72l0.00-145.838 l 89.748,0.00 L 201.262,414.72 l 76.918,0.00 l0.00-381.44 L 201.262,33.28 L 201.262,202.639 L 111.514,202.639 L 111.514,33.28 L 34.58,33.28 l0.00,381.44 L 111.514,414.72 zM 402.12,300.396L 326.794,300.396 l0.00,50.217 l 6.938,0.00 c 25.651,0.00, 45.855,4.808, 60.641,14.418c 14.771,9.62, 24.125,25.114, 28.047,46.484l 56.622,0.00 L 479.043,33.28 
+		L 402.12,33.28 L 402.12,300.396 z" />
+<glyph unicode="&#x2b;" d="M 85.99,338.012l0.00-22.354 l 0.783,0.00 c 6.011,9.938, 12.744,17.055, 20.188,21.361c 7.45,4.316, 16.671,6.472, 27.648,6.472
+		c 22.216,0.00, 38.548-8.699, 49.009-26.071c 10.445-17.388, 15.677-45.67, 15.677-84.879c0.00-39.214-5.233-67.308-15.683-84.301
+		c-10.455-16.993-26.798-25.477-49.009-25.477c-10.194,0.00-18.888,1.905-26.076,5.683c-7.194,3.784-13.66,9.861-19.41,18.237l-0.778,0.00 l0.00-87.429 L 34.237,59.254 
+		L 34.237,338.012 L 85.99,338.012 z M 93.629,180.593c 3.533-11.633, 11.31-17.449, 23.332-17.449c 11.761,0.00, 19.41,5.816, 22.938,17.449
+		c 3.528,11.628, 5.299,28.933, 5.299,51.948c0.00,22.999-1.766,40.315-5.299,51.953c-3.528,11.628-11.172,17.449-22.938,17.449
+		c-12.022,0.00-19.799-5.821-23.332-17.449c-3.523-11.638-5.289-28.954-5.289-51.953S 90.112,192.22, 93.629,180.593zM 266.342,338.012l0.00-28.227 l 0.788,0.00 c 5.489,10.194, 12.155,18.35, 19.999,24.499c 7.834,6.129, 17.372,9.211, 28.621,9.211
+		c 1.572,0.00, 3.195-0.061, 4.89-0.189c 1.70-0.133, 3.333-0.333, 4.905-0.589l0.00-51.758 c-2.877,0.266-5.688,0.456-8.428,0.594
+		c-2.749,0.138-5.56,0.195-8.438,0.195c-4.70,0.00-9.40-0.655-14.106-1.961c-4.71-1.316-9.027-3.466-12.938-6.472
+		c-3.912-3.005-7.05-6.927-9.405-11.756c-2.355-4.838-3.528-10.788-3.528-17.843l0.00-126.633 L 214.584,127.084 L 214.584,338.012 L 266.342,338.012 zM 375.726,207.462c0.00-6.287, 0.445-12.355, 1.382-18.243c 0.906-5.873, 2.401-11.105, 4.50-15.677c 2.089-4.577, 4.849-8.233, 8.233-10.972
+		c 3.389-2.749, 7.572-4.127, 12.534-4.127c 9.149,0.00, 15.816,3.267, 20.004,9.80c 4.183,6.533, 7.06,16.476, 8.632,29.804l 48.614,0.00 
+		c-1.044-24.571-7.578-43.254-19.61-56.064c-12.027-12.82-30.976-19.205-56.842-19.205c-19.604,0.00-34.898,3.267-45.88,9.80
+		c-10.977,6.528-19.092,15.15-24.315,25.876c-5.222,10.716-8.428,22.733-9.60,36.076c-1.172,13.327-1.766,26.644-1.766,39.982
+		c0.00,14.111, 0.973,27.704, 2.934,40.771c 1.966,13.071, 5.883,24.709, 11.766,34.903c 5.878,10.184, 14.31,18.278, 25.288,24.305
+		c 10.982,6.006, 25.615,9.021, 43.904,9.021c 15.683,0.00, 28.554-2.55, 38.615-7.639c 10.066-5.105, 17.981-12.293, 23.731-21.565
+		c 5.74-9.277, 9.656-20.521, 11.756-33.715c 2.084-13.199, 3.139-27.909, 3.139-44.109l0.00-12.15 L 375.726,224.333 L 375.726,207.462 z M 429.44,277.821
+		c-0.778,6.144-2.156,11.377-4.122,15.688c-1.956,4.316-4.695,7.572-8.223,9.805c-3.528,2.222-8.038,3.333-13.522,3.333
+		c-5.489,0.00-9.999-1.249-13.532-3.727c-3.528-2.483-6.344-5.75-8.428-9.80c-2.099-4.055-3.599-8.561-4.506-13.522
+		c-0.937-4.966-1.382-9.938-1.382-14.899l0.00-8.228 l 55.281,0.00 C 430.751,264.556, 430.218,271.688, 429.44,277.821z" />
+<glyph unicode="&#x2c;" d="M 368.609,12.421l-36.751,0.00 L 331.858,381.322 l-37.898,0.00 l0.00-368.901 l-36.977,0.00 L 256.983,199.378 c-9.441-2.739-20.547-4.111-33.331-4.111
+		c-32.87,0.00-57.032,9.498-72.484,28.524C 135.721,242.831, 128.00,271.447, 128.00,309.642c0.00,39.567, 8.294,69.012, 24.883,88.346
+		c 16.589,19.328, 42.537,28.989, 77.844,28.989l 137.882,0.00 L 368.609,12.421 z" />
+<glyph unicode="&#x2d;" d="M 450.565,152.09L 450.565,213.77L 450.565,234.23L 430.085,234.23L 266.225,234.23L 266.225,295.921L 327.695,295.921L 327.695,398.541L 184.32,398.541L 184.32,295.921L 245.765,295.921L 245.765,234.23L 81.91,234.23L 61.455,234.23L 61.455,213.77L 61.455,152.09L0.00,152.09L0.00,49.449L 143.36,49.449L 143.36,152.09L 81.91,152.09L 81.91,213.77L 245.765,213.77L 245.765,152.09L 184.32,152.09L 184.32,49.449L 327.695,49.449L 327.695,152.09L 266.225,152.09L 266.225,213.77L 430.085,213.77L 430.085,152.09L 368.65,152.09L 368.65,49.449L 512.00,49.449L 512.00,152.09 z" />
+<glyph unicode="&#x2e;" d="M 230.395,47.877c0.00,14.843, 11.52,26.875, 25.60,26.875c 14.08,0.00, 25.595-12.032, 25.595-26.875
+	c0.00-14.597-11.515-26.624-25.595-26.624C 241.92,21.248, 230.395,33.28, 230.395,47.877z M 163.323,426.752l 185.344,0.00 c 12.534,0.00, 22.533-10.501, 22.533-23.547L 371.20,140.80 
+	c0.00-13.046-9.999-23.547-22.533-23.547l-185.344,0.00 c-12.534,0.00-22.533,10.501-22.533,23.547L 140.79,403.20 C 140.795,416.251, 150.794,426.752, 163.323,426.752z M 89.60,10.752
+	c0.00-23.547, 18.447-42.752, 40.945-42.752l 250.906,0.00 c 22.502,0.00, 40.955,19.20, 40.955,42.752L 422.405,437.248 C 422.40,460.80, 403.948,480.00, 381.45,480.00L 130.545,480.00 
+	C 108.042,480.00, 89.60,460.80, 89.60,437.248L 89.60,10.752 z" />
+<glyph unicode="&#xe04c;" d="M 406.81,372.096c0.00,8.96-7.27,16.225-16.236,16.225s-16.215-7.265-16.215-16.225c0.00-0.625, 0.108-1.229, 0.174-1.833l-0.174,0.00 l0.00-18.314 
+	l-26.035,0.00 l0.00,14.403 l-7.941,0.00 l0.00,29.281 C 340.383,442.225, 302.607,480.00, 255.995,480.00c-46.602,0.00-84.378-37.775-84.378-84.367l0.00-29.281 l-7.946,0.00 l0.00-14.403 l-26.025,0.00 l0.00,18.314 
+	l-0.179,0.00 c 0.072,0.604, 0.179,1.208, 0.179,1.833c0.00,8.96-7.265,16.225-16.23,16.225c-8.96,0.00-16.225-7.265-16.225-16.225
+	c0.00-0.625, 0.118-1.229, 0.184-1.833l-0.184,0.00 l0.00-131.994 c0.00-67.22, 50.273-123.412, 117.545-137.595l0.00-103.132 L 140.723-2.458 c-8.161,0.00-14.781-6.61-14.781-14.771
+	c0.00-8.151, 6.62-14.776, 14.781-14.776l 230.548,0.00 c 8.161,0.00, 14.776,6.625, 14.776,14.776c0.00,8.161-6.615,14.771-14.776,14.771l-82.022,0.00 L 289.249,100.675 
+	c 67.282,14.182, 117.555,70.374, 117.555,137.595l0.00,131.994 l-0.189,0.00 C 406.687,370.872, 406.81,371.471, 406.81,372.096z M 374.359,246.221
+	c0.00-65.372-52.992-118.349-118.364-118.349c-65.362,0.00-118.349,52.982-118.349,118.349L 137.646,327.849 l 26.025,0.00 l0.00-15.596 l 7.946,0.00 l0.00-64.092 
+	c0.00-46.602, 37.78-84.388, 84.378-84.388c 46.612,0.00, 84.388,37.786, 84.388,84.388L 340.383,312.248 l 7.941,0.00 l0.00,15.596 l 26.035,0.00 L 374.359,246.221 z" />
+<glyph unicode="&#xe04d;" d="M 450.555,479.995L 61.445,479.995 C 27.51,479.995,0.00,452.48,0.00,418.555l0.00-389.10 c0.00-33.915, 27.51-61.445, 61.445-61.445l 389.11,0.00 
+	c 33.894,0.00, 61.445,27.53, 61.445,61.445L 512.00,418.555 C 512.00,452.48, 484.449,479.995, 450.555,479.995z M 62.761,430.162l 186.865,0.00 
+	c 14.157,0.00, 25.61-11.448, 25.61-25.605c0.00-14.126-11.453-25.605-25.61-25.605L 62.761,378.952 c-14.126,0.00-25.605,11.479-25.605,25.605
+	C 37.156,418.714, 48.64,430.162, 62.761,430.162z M 62.761,327.767l 186.865,0.00 c 14.157,0.00, 25.61-11.448, 25.61-25.61c0.00-14.126-11.453-25.574-25.61-25.574
+	L 62.761,276.582 c-14.126,0.00-25.605,11.448-25.605,25.574C 37.156,316.319, 48.64,327.767, 62.761,327.767z M 37.156,199.767c0.00,14.162, 11.479,25.60, 25.605,25.60l 186.865,0.00 
+	c 14.157,0.00, 25.61-11.443, 25.61-25.60c0.00-14.172-11.453-25.62-25.61-25.62L 62.761,174.147 C 48.64,174.147, 37.156,185.595, 37.156,199.767z M 437.202,198.979
+	c-11.443-13.737, 29.809,129.628-67.589,129.628c-3.261,0.00-6.226,0.256-8.996,0.573l0.00-246.789 c0.00-2.166-0.302-4.285-0.783-6.323
+	c-3.932-26.665-23.311-51.599-52.526-63.421c-41.907-16.886-87.987-0.451-102.989,36.695c-15.002,37.146, 6.774,80.983, 48.609,97.889
+	c 17.541,7.066, 35.799,8.253, 52.178,4.531L 305.106,411.423 c0.00,15.355, 12.416,27.771, 27.776,27.771c 14.249,0.00, 25.866-10.803, 27.438-24.612
+	c 5.453-5.965, 13.414-13.604, 22.774-19.415c 20.163-12.611, 42.798-7.90, 70.40-37.96C 496.00,310.769, 473.907,242.821, 437.202,198.979z" />
+<glyph unicode="&#xe04e;" d="M 489.19,392.858c-65.807,17.142-130.826,19.901-196.628,2.77c-12.677-3.287-22.784-17.06-22.784-29.875
+	c-6.144-71.946-11.412-90.424-13.773-173.911c-2.376,84.362-7.772,102.651-13.957,173.911c0.00,12.815-10.122,26.593-22.769,29.875
+	C 153.457,412.759, 88.591,409.999, 22.784,392.858C 10.122,389.565,0.00,375.793,0.00,362.982c0.00-97.71,0.00-195.40,0.00-293.105
+	c0.00-12.841, 10.122-19.82, 22.784-16.558c 58.834,15.334, 120.31,16.906, 179.717,4.828l0.00-0.394 c0.00-9.339, 5.202-16.932, 11.602-16.932l 86.38,0.00 
+	c 6.441,0.00, 11.607,7.588, 11.607,16.932l0.00,0.957 c 58.598,11.505, 119.148,9.713, 177.106-5.391c 12.677-3.261, 22.81,3.722, 22.81,16.558
+	c0.00,97.705,0.00,195.395,0.00,293.105C 512.00,375.793, 501.868,389.565, 489.19,392.858z" />
+<glyph unicode="&#xe04f;" d="M 19.743,328.755l 96.507,0.00 c 10.906,0.00, 19.748,8.837, 19.748,19.748L 135.997,445.015 c0.00,10.906-8.842,19.768-19.748,19.768L 19.743,464.783 
+		C 8.842,464.778,0.00,455.921,0.00,445.015l0.00-96.507 C0.00,337.597, 8.842,328.755, 19.743,328.755z M 22.625,428.959c0.00,7.291, 5.883,13.194, 13.143,13.194l 64.456,0.00 
+		c 7.26,0.00, 13.143-5.903, 13.143-13.194l0.00-64.43 c0.00-7.26-5.883-13.174-13.143-13.174L 35.773,351.355 c-7.26,0.00-13.143,5.914-13.143,13.174L 22.63,428.959 zM 113.372,191.852c0.00-7.311-5.883-13.194-13.143-13.194l-14.254,0.00 l-5.688-9.38l-8.146,9.38L 35.773,178.657 c-7.26,0.00-13.143,5.883-13.143,13.194
+		L 22.63,256.23 c0.00,7.332, 5.883,13.194, 13.143,13.194l 64.456,0.00 c 6.083,0.00, 11.177-4.157, 12.682-9.805l-35.83-40.765l-18.171,16.522l-23.183-6.943
+		l 45.128-41.093l 94.909,143.852l-42.67-48.594c-3.497,5.658-9.697,9.457-16.84,9.457L 19.743,292.055 C 8.842,292.055,0.00,283.187,0.00,272.307l0.00-96.532 
+		c0.00-10.911, 8.842-19.727, 19.743-19.727l 96.507,0.00 c 10.906,0.00, 19.748,8.817, 19.748,19.727L 135.997,261.345 l-22.625-37.371L 113.372,191.852 zM 501.816,414.95L 185.999,414.95 c-5.637,0.00-10.24-4.603-10.24-10.22l0.00-15.933 c0.00-5.663, 4.603-10.22, 10.24-10.22l 315.817,0.00 c 5.606,0.00, 10.184,4.557, 10.184,10.22
+		L 512.00,404.736 C 512.00,410.348, 507.418,414.95, 501.816,414.95zM 501.816,243.62L 185.999,243.62 c-5.637,0.00-10.24-4.577-10.24-10.214l0.00-15.898 c0.00-5.642, 4.603-10.225, 10.24-10.225l 315.817,0.00 
+		c 5.606,0.00, 10.184,4.588, 10.184,10.225l0.00,15.898 C 512.00,239.043, 507.418,243.62, 501.816,243.62zM 116.25,119.219L 19.743,119.219 C 8.842,119.219,0.00,110.382,0.00,99.482l0.00-96.532 c0.00-10.911, 8.842-19.732, 19.743-19.732l 96.507,0.00 
+		c 10.906,0.00, 19.748,8.822, 19.748,19.732L 135.997,99.482 C 135.997,110.382, 127.155,119.219, 116.25,119.219z M 113.372,18.995c0.00-7.27-5.883-13.164-13.143-13.164
+		L 35.773,5.832 c-7.26,0.00-13.143,5.893-13.143,13.164L 22.63,83.405 c0.00,7.311, 5.883,13.194, 13.143,13.194l 64.456,0.00 c 7.26,0.00, 13.143-5.883, 13.143-13.194L 113.372,18.995 zM 501.816,69.396L 185.999,69.396 c-5.637,0.00-10.24-4.582-10.24-10.214l0.00-15.903 c0.00-5.663, 4.603-10.214, 10.24-10.214l 315.817,0.00 
+		c 5.606,0.00, 10.184,4.552, 10.184,10.214l0.00,15.903 C 512.00,64.814, 507.418,69.396, 501.816,69.396z" />
+<glyph unicode="&#xe050;" d="M 496.906,260.357l-78.863-49.638L 418.043,276.229 c0.00,12.206-9.902,22.108-22.108,22.108L 209.055,298.337 c-1.869,5.35-5.934,9.907-11.663,12.037
+	L 57.385,362.624l 1.889,5.048c 3.113,8.366-1.137,17.684-9.503,20.813c-8.361,3.118-17.674-1.132-20.808-9.492L 1.024,304.092
+	c-3.118-8.371, 1.132-17.684, 9.492-20.797c 8.366-3.133, 17.679,1.132, 20.803,9.492l 1.879,5.059l 46.019-14.72
+	c-0.696-2.171-1.101-4.48-1.101-6.897l0.00-195.651 c0.00-12.196, 9.902-22.083, 22.093-22.083L 395.93,58.496 c 12.211,0.00, 22.108,9.892, 22.108,22.083L 418.038,144.558 
+	l 78.863-48.097c 8.335,0.00, 15.094,6.764, 15.094,15.094l0.00,133.683 C 512.00,253.583, 505.242,260.357, 496.906,260.357z M 321.121,121.518
+	c0.00-7.101-5.755-12.851-12.846-12.851L 136.305,108.667 c-7.096,0.00-12.851,5.75-12.851,12.851L 123.453,235.295 c0.00,7.107, 5.755,12.851, 12.851,12.851L 308.275,248.146 
+	c 7.091,0.00, 12.846-5.745, 12.846-12.851L 321.121,121.518 z" />
+<glyph unicode="&#xe04a;" d="M 190.495,384.123L 190.495,480.00 L 63.99,353.495l 95.877,0.00 C 176.788,353.495, 190.495,367.196, 190.495,384.123zM 143.089,221.481l 38.241,0.00 c 4.316,0.00, 7.808,3.507, 7.808,7.808l0.00,38.226 c0.00,4.306-3.492,7.844-7.808,7.844l-38.241,0.00 
+		c-4.291,0.00-7.782-3.538-7.782-7.844l0.00-38.226 C 135.311,224.983, 138.798,221.481, 143.089,221.481zM 417.26,480.00L 222.92,480.00 l0.00-114.043 c0.00-24.781-20.091-44.882-44.867-44.882L 63.99,321.075 l0.00-322.365 c0.00-16.947, 13.763-30.71, 30.72-30.71l 322.555,0.00 
+		c 16.988,0.00, 30.756,13.763, 30.756,30.71L 448.02,449.295 C 448.015,466.232, 434.248,480.00, 417.26,480.00z M 121.882,277.043c0.00,6.451, 5.238,11.715, 11.715,11.715l 57.257,0.00 
+		c 6.451,0.00, 11.709-5.263, 11.709-11.715l0.00-57.247 c0.00-6.477-5.258-11.709-11.709-11.709L 133.596,208.087 c-6.477,0.00-11.715,5.233-11.715,11.709L 121.882,277.043 z
+		 M 390.113,63.247c0.00-9.349-7.572-16.922-16.906-16.922L 138.798,46.326 c-9.354,0.00-16.922,7.572-16.922,16.922l0.00,5.663 c0.00,9.318, 7.567,16.906, 16.922,16.906
+		l 234.409,0.00 c 9.334,0.00, 16.906-7.583, 16.906-16.906L 390.113,63.247 z M 390.113,153.61c0.00-9.334-7.572-16.906-16.906-16.906L 138.798,136.704 
+		c-9.354,0.00-16.922,7.572-16.922,16.906l0.00,5.663 c0.00,9.349, 7.567,16.906, 16.922,16.906l 234.409,0.00 c 9.334,0.00, 16.906-7.557, 16.906-16.906L 390.113,153.61 z
+		 M 390.113,240.916c0.00-9.349-7.572-16.927-16.906-16.927L 236.938,223.99 c-9.324,0.00-16.906,7.572-16.906,16.927l0.00,5.658 c0.00,9.344, 7.583,16.911, 16.906,16.911
+		l 136.274,0.00 c 9.334,0.00, 16.906-7.567, 16.906-16.911L 390.118,240.916 z" />
+<glyph unicode="&#xe042;" d="M 70.472,480.00L 441.549,480.00L 441.549,380.221L 70.472,380.221zM0.00,275.523L 512.00,275.523L 512.00,175.759L0.00,175.759zM 70.472,67.748L 441.549,67.748L 441.549-32.00L 70.472-32.00z" />
+<glyph unicode="&#xe048;" d="M0.00,275.523L 512.00,275.523L 512.00,175.759L0.00,175.759zM0.00,480.00L 512.00,480.00L 512.00,380.237L0.00,380.237zM0.00,67.758L 512.00,67.758L 512.00-32.00L0.00-32.00z" />
+<glyph unicode="&#xe013;" d="M 512.00,12.36L 406.472,117.888l 60.124,60.119c 16.00,16.00, 16.00,41.938-0.005,57.928l-158.244,158.259l-34.237-34.237L 154.071,480.00
+	l-32.046-32.051l 120.038-120.033L 152.084,237.937L 32.046,357.975L0.00,325.924l 120.038-120.028l-34.237-34.237l 158.264-158.259
+	c 15.98-15.99, 41.923-15.99, 57.917,0.00L 362.112,73.523L 467.64-32.00L 512.00,12.36z" />
+<glyph unicode="&#xe043;" d="M 414.444,318.679l0.00,41.441 l 97.572,97.244L 489.349,480.00L 391.808,382.444
+	l-41.124,0.00 l-191.283,0.00 L 159.401,480.00 L 95.642,480.00 l0.00-97.556 L0.00,382.444 l0.00-63.764 l 95.642,0.00 l0.00-191.278 L 95.642,63.642 l 63.764,0.00 l 191.283,0.00 L 350.689-32.00 l 63.759,0.00 L 414.449,63.642 L 512.00,63.642 L 512.00,127.401 L 414.444,127.401 L 414.444,318.679 z
+	 M 159.401,318.679l 168.648,0.00 L 159.401,150.036L 159.401,318.679 z M 350.684,296.356l0.00-168.96 L 182.036,127.396 L 350.684,296.356z" />
+<glyph unicode="&#xe044;" d="M 64.00,368.00l0.00-128.00 l 32.00,0.00 L 96.00,313.595 l 134.062-134.405l 22.748,22.748
+	L 118.723,336.00L 192.00,336.00 l0.00,32.00 L 64.00,368.00 z M 416.00,432.00L0.00,432.00 l0.00-320.00 l 288.00,0.00 l0.00-96.00 L 512.00,16.00 l0.00,224.00 L 416.00,240.00 L 416.00,432.00 z M 32.00,400.00L 384.00,400.00 l0.00-160.00 L 288.00,240.00 l0.00-96.00 l-256.00,0.00 
+	L 32.00,400.00 z M 416.00,112.00l0.00,96.00 l 64.00,0.00 l0.00-160.00 L 320.00,48.00 l0.00,64.00 L 416.00,112.00 z M 384.00,144.00L 320.00,144.00 l0.00,64.00 L 384.00,208.00 L 384.00,144.00 z" />
+<glyph unicode="&#xe045;" d="M 475.976,132.157L 313.533-30.572L 89.866,193.142l 162.432,162.714
+	L 475.976,132.157z M 252.298,315.013L 130.406,193.142l 183.132-182.856l 121.912,121.871L 252.298,315.013z M 421.622,392.648l-64.963-50.033l-1.741,2.299
+	c-49.72,60.38-139.704,70.723-202.368,22.436c-3.753-2.877-6.912-6.042-10.363-9.492l 42.844-41.974L 38.687,315.884 L 38.687,459.919 l 45.143-44.278
+	c 5.745,5.473, 11.50,10.936, 18.115,15.821C 199.977,506.788, 341.443,490.685, 419.318,395.525L 421.622,392.648z" />
+<glyph unicode="&#xe046;" d="M 262.359,355.85l 162.432-162.714L 201.124-30.572L 38.687,132.157
+	L 262.359,355.85z M 79.217,132.157l 121.912-121.871L 384.256,193.142L 262.359,315.013L 79.217,132.157z M 95.34,395.525
+	C 173.22,490.685, 314.68,506.788, 412.718,431.462c 6.615-4.89, 12.37-10.348, 18.109-15.821l 45.143,44.278l0.00-144.031 L 329.631,315.889 l 42.844,41.974
+	c-3.456,3.451-6.61,6.615-10.363,9.492C 299.448,415.642, 209.464,405.294, 159.744,344.914l-1.741-2.299l-64.963,50.033L 95.34,395.525z" />
+<glyph unicode="&#xe047;" d="M 512.00,8.422l0.00,80.845 L 134.733,89.267 l0.00-80.845 L 512.00,8.422 z M 107.791,335.027
+	c0.00-29.64, 24.248-53.888, 53.893-53.888s 53.893,24.248, 53.893,53.888c0.00,29.911-24.248,53.893-53.893,53.893S 107.791,364.933, 107.791,335.027z
+	 M 53.893,143.16L 26.947,143.16 L 26.947,412.631 l 458.107,0.00 L 485.053,224.00 L 377.267,358.738L 215.578,197.053L 161.684,250.952L 53.893,143.16z M0.00,143.16l0.00-26.952 l 512.00,0.00 l0.00,26.952 
+	L 512.00,412.631 L 512.00,439.578 l-26.947,0.00 L 26.947,439.578 L0.00,439.578 l0.00-26.947 L0.00,143.16 z" />
+<glyph unicode="&#xe000;" d="M 512.00,224.00c0.00-141.384-114.616-256.00-256.005-256.00C 114.611-32.00,0.00,82.621,0.00,224.00
+	C0.00,365.384, 114.611,480.00, 255.995,480.00C 397.384,480.00, 512.00,365.384, 512.00,224.00z M 282.67,144.978l0.00,16.732 c0.00,11.141, 2.365,20.163, 7.107,27.028
+	c 4.731,6.861, 16.036,16.901, 33.874,30.111c 26.02,18.56, 43.628,35.287, 52.946,50.161c 9.288,14.874, 13.932,32.507, 13.932,52.951
+	c0.00,30.653-11.279,55.183-33.859,73.585c-22.569,18.386-53.002,27.592-91.269,27.592c-46.444,0.00-90.414-11.602-131.83-34.842l 30.377-61.036
+	c 35.676,18.217, 67.446,27.315, 95.319,27.315c 15.985,0.00, 28.426-3.18, 37.34-9.482c 8.919-6.303, 13.379-15.503, 13.379-27.587
+	c0.00-10.767-3.098-20.526-9.334-29.266c-6.241-8.745-19.092-20.07-38.60-34.002c-20.244-14.879-34.181-28.887-41.81-42.081
+	c-7.634-13.199-11.423-28.708-11.423-46.551l0.00-20.628 L 282.67,144.978 z M 212.705,28.052c 8.535-8.259, 20.628-12.401, 36.239-12.401
+	c 15.217,0.00, 27.141,4.219, 35.676,12.682c 8.525,8.479, 12.815,20.04, 12.815,34.698c0.00,15.232-4.209,26.921-12.677,35.128
+	c-8.468,8.182-20.383,12.262-35.814,12.262c-15.99,0.00-28.145-4.009-36.506-11.991c-8.371-7.982-12.539-19.779-12.539-35.40
+	C 199.895,47.98, 204.175,36.321, 212.705,28.052z" />
+<glyph unicode="&#xe001;" d="M 493.686,19.328L 239.601,19.328 l 258.406,258.442c 18.662,18.662, 18.662,49.024,0.00,67.686L 406.615,436.844c-7.27,7.27-16.312,11.515-25.743,13.117
+	c 0.015-0.005-41.815-2.207-82.212-6.799c-12.416-1.403-22.779-8.438-30.003-15.657L 13.993,172.826c-18.662-18.662-18.662-49.009,0.00-67.671
+	l 91.387-91.392c 8.975-8.991, 20.977-13.947, 33.725-13.947c 0.993,0.00, 61.691,1.198, 62.321,1.229c 3.062,0.287, 10.409,1.121, 10.409,1.121l 281.846,0.00 
+	c 4.731,0.00, 8.581,3.85, 8.581,8.581C 502.272,15.478, 498.422,19.328, 493.686,19.328z M 221.588,28.416c-11.197-11.182-29.404-11.182-40.617,0.00
+	L 89.585,119.793c-11.203,11.218-11.203,29.435,0.00,40.622l 130.171,130.166l 131.604-132.372L 221.588,28.416z M 334.167,429.491l 25.836,2.115
+	l-140.641-140.646l-21.545,2.176L 334.167,429.491z M 27.535,118.671c-11.208,11.203-11.208,29.42,0.00,40.637l 137.487,137.487l 30.572-3.282l-119.552-119.552
+	c-18.662-18.662-18.662-49.044,0.00-67.686l 86.866-86.866c-1.388-0.031-2.637-0.046-3.973-0.077l-23.537,0.00 c-6.231,0.804-12.006,3.487-16.486,7.982
+	L 27.535,118.671z" />
+<glyph unicode="&#xe002;" d="M 231.219,122.148L 150.385,41.339c-9.825-9.815-24.381-9.815-34.227,0.00l-44.585,44.59c-9.861,9.846-9.861,25.846,0.00,35.656
+			l 80.814,80.845c 5.535,5.53, 12.995,7.624, 20.234,6.907l 40.852,40.847c-29.722,24.945-73.892,23.767-101.847-4.157L 22.159,156.524
+			c-29.532-29.532-29.548-77.409,0.00-106.936l 59.438-59.438c 29.517-29.563, 77.414-29.532, 106.947,0.00L 278.011,79.616
+			c 28.969,28.938, 29.373,75.438, 1.516,105.093l-41.554-41.533C 238.925,135.68, 236.954,127.898, 231.219,122.148zM 357.821,248.781l 80.845,80.84c 9.815,9.82, 9.815,24.376,0.00,34.227l-44.626,44.595c-9.825,9.836-25.815,9.836-35.656,0.00L 277.555,327.629
+			c-5.545-5.545-7.598-13.01-6.892-20.25l-40.852-40.847c-24.945,29.722-23.757,73.892, 4.188,101.837L 323.461,457.846
+			c 29.532,29.522, 77.425,29.553, 106.952,0.00l 59.438-59.412c 29.548-29.542, 29.517-77.43,0.00-106.988L 400.384,201.994
+			c-28.969-28.969-75.438-29.379-105.108-1.531l 41.549,41.569C 344.305,241.08, 352.087,243.041, 357.821,248.781zM 357.448,328.361c 12.17-12.186, 13.015-31.119, 1.889-42.26L 193.884,120.678c-11.116-11.156-30.054-10.281-42.24,1.91l0.00,0.00
+		c-12.186,12.186-13.051,31.124-1.92,42.25l 165.443,165.443C 326.292,341.407, 345.211,340.572, 357.448,328.361L 357.448,328.361z" />
+<glyph unicode="&#xe003;" d="M 257.239,380.416c-15.857,0.00-28.867,13.015-28.867,28.984c0.00,16.108, 13.015,29.041, 28.867,29.041
+	c 16.102,0.00, 29.025-12.928, 29.025-29.041C 286.264,393.431, 273.326,380.416, 257.239,380.416z M 491.50,126.50l-15.437,96.292
+	c-1.812,9.001-9.672,15.857-19.031,15.857c-5.719,0.00-10.752-2.437-14.438-6.333L 371.405,165.53c-1.172-0.998-2.314-2.14-3.313-3.558
+	c-6.702-9.124-4.797-22.067, 4.326-28.861c 1.736-1.295, 3.656-2.156, 5.56-2.924l 17.874-5.939C 378.624,75.576, 336.532,38.564, 284.841,28.314
+	l 0.123,316.119c 25.344,10.778, 42.844,35.876, 42.844,64.973C 327.813,448.445, 296.264,480.00, 257.224,480.00C 218.348,480.00, 186.675,448.451, 186.675,409.395
+	c0.00-29.107, 18.135-54.195, 43.346-64.973l 0.118-316.611c-52.813,9.498-96.527,46.874-114.166,96.435l 18.002,5.939
+	c 1.915,0.748, 3.814,1.623, 5.601,2.908c 9.124,6.81, 11.156,19.748, 4.296,28.877c-1.024,1.403-2.028,2.56-3.287,3.558L 69.356,232.315
+	c-3.523,3.891-8.709,6.318-14.31,6.318c-9.482,0.00-17.469-6.84-19.149-15.841L 20.454,126.50c-0.358-1.50-0.486-3.174-0.486-4.828
+	c0.00-11.407, 9.242-20.644, 20.634-20.644c 2.145,0.00, 4.188,0.22, 6.088,0.891l 16.742,5.437C 90.035,26.501, 166.17-32.00, 255.985-32.00
+	c 89.80,0.00, 165.985,58.532, 192.579,139.484l 16.701-5.545c 1.92-0.655, 3.953-0.906, 6.077-0.906c 11.438,0.00, 20.69,9.252, 20.69,20.659
+	C 492.017,123.325, 491.843,125.00, 491.50,126.50z" />
+<glyph unicode="&#xe004;" d="M0.00,275.476L 512.00,275.476L 512.00,175.616L0.00,175.616zM 208.282,67.763L 512.00,67.763L 512.00-32.102L 208.282-32.102zM 128.783,480.00L 512.00,480.00L 512.00,380.145L 128.783,380.145z" />
+<glyph unicode="&#xe005;" d="M0.00,275.517L 512.005,275.517L 512.005,175.677L0.00,175.677zM0.00,67.85L 303.729,67.85L 303.729-31.99L0.00-31.99zM0.00,480.00L 383.196,480.00L 383.196,380.165L0.00,380.165z" />
+<glyph unicode="&#xe006;" d="M 165.663,462.106L 512.00,462.106L 512.00,369.541L 165.663,369.541zM 165.663,272.517L 512.00,272.517L 512.00,179.937L 165.663,179.937zM 165.663,79.944L 512.00,79.944L 512.00-12.60L 165.663-12.60zM0.00,415.841A47.78,47.78 180.00 1,0 95.56,415.841A47.78,47.78 180.00 1,0 0.00,415.841zM 95.565,224.742c0.00-26.373-21.391-47.749-47.775-47.749C 21.391,176.993,0.00,198.369,0.00,224.742c0.00,26.383, 21.391,47.775, 47.79,47.775
+		C 74.168,272.517, 95.565,251.126, 95.565,224.742zM0.00,32.154A47.78,47.78 180.00 1,0 95.56,32.153999999999996A47.78,47.78 180.00 1,0 0.00,32.153999999999996z" />
+<glyph unicode="&#xe007;" d="M 0.005,67.845L 462.403,67.845L 462.403-31.995L 0.005-31.995zM 0.005,480.00L 457.856,480.00L 457.856,380.165L 0.005,380.165zM 214.671,273.935L 512.00,273.935L 512.00,174.095L 214.671,174.095zM 145.244,108.16L0.00,224.005L 145.244,339.86 	z" />
+<glyph unicode="&#xe008;" d="M 0.005,67.845L 462.403,67.845L 462.403-31.995L 0.005-31.995zM 0.005,480.00L 457.856,480.00L 457.856,380.165L 0.005,380.165zM 214.671,273.935L 512.00,273.935L 512.00,174.095L 214.671,174.095zM0.00,339.86L 145.244,224.015L0.00,108.16 z" />
+<glyph unicode="&#xe009;" d="M 151.68,456.392L 512.00,456.392L 512.00,365.614L 151.68,365.614zM 151.68,270.464L 512.00,270.464L 512.00,179.686L 151.68,179.686zM 151.68,81.623L 512.00,81.623L 512.00-9.155L 151.68-9.155zM 64.312,350.30L 36.90,350.30 L 36.90,425.385 l 0.282,12.303l 0.435,13.476c-4.557-4.557-7.721-7.588-9.492-8.955l-14.899-11.991L0.00,446.735L 41.80,480.00
+			l 22.513,0.00 L 64.312,350.30 zM 91.863,168.248L 1.178,168.248 l0.00,19.062 l 32.584,32.952c 9.615,9.876, 15.903,16.686, 18.877,20.48c 2.959,3.85, 5.084,7.368, 6.40,10.609
+			c 1.29,3.272, 1.93,6.63, 1.93,10.148c0.00,5.166-1.403,9.078-4.28,11.628c-2.877,2.499-6.707,3.789-11.494,3.789
+			c-5.012,0.00-9.917-1.132-14.648-3.451c-4.726-2.33-9.682-5.571-14.822-9.82l-14.884,17.613c 6.369,5.443, 11.658,9.267, 15.887,11.556
+			c 4.168,2.263, 8.755,3.968, 13.742,5.197c 4.956,1.193, 10.527,1.807, 16.681,1.807c 8.105,0.00, 15.242-1.495, 21.478-4.439
+			c 6.195-2.959, 11.028-7.086, 14.454-12.447c 3.42-5.279, 5.13-11.397, 5.13-18.243c0.00-6.001-1.039-11.592-3.149-16.855
+			c-2.094-5.248-5.35-10.568-9.748-16.046c-4.424-5.509-12.165-13.368-23.291-23.506l-16.66-15.718l0.00-1.249 l 56.504,0.00 L 91.868,168.248 zM 89.062,70.467c0.00-8.095-2.468-14.935-7.383-20.659c-4.89-5.719-11.781-9.559-20.664-11.684l0.00-0.563 
+			c 10.486-1.311, 18.422-4.50, 23.782-9.564c 5.381-5.002, 8.095-11.843, 8.095-20.372c0.00-12.534-4.526-22.221-13.594-29.22
+			C 70.267-28.498, 57.329-32.00, 40.515-32.00c-14.054,0.00-26.537,2.376-37.432,6.968l0.00,23.409 c 5.033-2.56, 10.568-4.659, 16.568-6.252
+			c 6.057-1.597, 12.042-2.406, 17.946-2.406c 9.027,0.00, 15.759,1.531, 20.04,4.623c 4.321,3.062, 6.492,8.033, 6.492,14.812
+			c0.00,6.159-2.509,10.44-7.465,12.969c-4.951,2.56-12.877,3.814-23.788,3.814L 23.055,25.938 l0.00,21.002 L 33.075,46.94 c 10.045,0.00, 17.413,1.341, 22.047,3.999
+			c 4.664,2.627, 6.973,7.096, 6.973,13.532c0.00,9.815-6.195,14.72-18.483,14.72c-4.25,0.00-8.596-0.686-12.995-2.156
+			c-4.388-1.377-9.298-3.845-14.664-7.373l-12.708,18.939c 11.873,8.499, 25.943,12.749, 42.337,12.749c 13.425,0.00, 24.038-2.719, 31.795-8.125
+			C 85.146,87.782, 89.062,80.154, 89.062,70.467z" />
+<glyph unicode="&#xe00a;" d="M 512.00,184.771L0.00,184.771 L0.00,263.291 l 512.00,0.00 L 512.00,184.771 z M 301.174,137.667c 4.874-6.799, 7.311-14.566, 7.311-23.281c0.00-15.626-5.53-27.392-16.594-35.313
+	c-11.044-7.905-26.931-11.858-47.626-11.858c-17.239,0.00-36.265,2.734-57.062,8.218c-20.792,5.468-46.203,14.904-76.227,28.293l0.00-87.639 
+	c 36.516-17.859, 78.515-26.778, 125.978-26.778c 51.538,0.00, 91.761,11.561, 120.694,34.688c 28.908,23.127, 43.315,54.779, 43.315,94.95
+	c0.00,13.281-2.028,25.359-5.279,36.767L 281.748,155.715 C 290.063,149.883, 296.719,143.898, 301.174,137.667z M 231.03,295.424
+	c-8.422,5.78-14.561,11.766-18.412,17.951c-3.855,6.195-5.786,13.445-5.786,21.765c0.00,13.389, 4.772,24.243, 14.305,32.563
+	c 9.533,8.315, 23.229,12.477, 41.078,12.477c 15.017,0.00, 30.28-1.93, 45.793-5.78c 15.534-3.855, 35.123-10.655, 58.875-20.388l 30.423,73.344
+	c-22.927,9.938-44.831,17.649-65.859,23.127c-21.002,5.478-43.064,8.218-66.191,8.218c-47.068,0.00-83.948-11.264-110.623-33.782
+	c-26.68-22.523-40.013-53.463-40.013-92.82c0.00-14.756, 2.765-27.694, 6.799-39.813l 114.724,0.00 C 234.353,293.34, 232.30,294.564, 231.03,295.424z" />
+<glyph unicode="&#xe00b;" d="M 443.505-32.005L 68.50-32.005 L 68.50,53.868 l 375.004,0.00 L 443.505-32.005 z M 346.424,480.00l0.00-214.472 c0.00-35.236-7.091-61.133-21.263-77.537
+	c-14.203-16.532-37.043-24.75-68.521-24.75c-32.563,0.00-55.885,8.218-69.944,24.561c-14.085,16.374-21.13,42.117-21.13,77.102L 165.565,480.00 L 69.499,480.00 l0.00-229.673 
+	c0.00-52.086, 16.164-93.02, 48.502-122.962c 32.312-29.967, 77.711-44.938, 136.136-44.938c 38.774,0.00, 72.335,6.717, 100.726,20.25
+	c 28.39,13.466, 50.079,32.778, 65.106,58.127c 14.986,25.283, 22.533,54.687, 22.533,88.238L 442.501,480.00 L 346.424,480.00 z" />
+<glyph unicode="&#xe00c;" d="M 251.873-32.00l-99.118,0.835l 81.111,367.503l 99.113-0.835L 251.873-32.00z M 250.399,422.533c 0.169,19.057, 5.489,33.454, 15.98,43.146
+		c 10.527,9.687, 25.313,14.484, 44.426,14.316c 16.026-0.174, 28.201-3.681, 36.495-10.511c 8.264-6.892, 12.355-16.686, 12.247-29.425
+		c-0.123-17.572-5.064-31.744-14.817-42.511c-9.754-10.824-24.745-16.113-44.948-15.974C 266.629,381.85, 250.168,395.515, 250.399,422.533z" />
+<glyph unicode="&#xe00d;" d="M 224.594,155.10l0.00-59.11 L 153.595,95.99 l 102.405-128.00l 102.405,128.00L 286.249,95.99 L 286.249,155.10 L 224.594,155.10 z M 256.00,480.00
+		L 153.595,352.00l 76.81,0.00 l0.00-62.843 l 51.174,0.00 L 281.58,352.00 l 76.826,0.00 L 256.00,480.00z M 512.00,224.00L 384.00,326.405l0.00-76.815 L 320.906,249.59 L 320.906,198.40 L 384.00,198.40 l0.00-76.81 L 512.00,224.00z M0.00,224.00l 128.00-102.415L 128.00,198.40 l 62.362,0.00 
+		l0.00,51.195 L 128.00,249.595 L 128.00,326.405 L0.00,224.00z" />
+<glyph unicode="&#xe00e;" d="M 419.845,272.246L 419.845,394.148L 348.16,394.148L 348.16,345.887L 255.99,440.602L0.00,177.551L 61.44,177.551L 61.44,7.393L 220.14,7.393L 220.14,146.616L 291.845,146.616L 291.845,7.393L 450.534,7.393L 450.534,177.551L 512.00,177.551 z" />
+<glyph unicode="&#xe00f;" d="M 12.795,480.00l0.00-249.728 L 237.312,230.272 L 237.312,480.00 L 12.795,480.00 z M 274.668,217.728L 274.668-32.00 l 224.538,0.00 L 499.205,217.728 L 274.668,217.728 z
+	 M 267.761,438.528c 95.631-17.142, 92.037-87.301, 92.037-105.364l-47.877,0.00 l 74.752-90.486l 75.162,90.486l-45.706,0.00 
+	C 416.128,405.12, 364.923,438.528, 267.761,438.528z M 247.803,7.675c-95.626,17.142-92.037,87.301-92.037,105.364l 47.877,0.00 L 128.891,203.52l-75.162-90.486
+	l 45.706,0.00 C 99.436,41.078, 150.641,7.675, 247.803,7.675z" />
+<glyph unicode="&#xe010;" d="M 145.536,329.743C 145.536,268.493, 194.959,218.88, 255.99,218.88
+	c 61.061,0.00, 110.484,49.613, 110.484,110.863c0.00,61.245-49.418,110.863-110.484,110.863C 194.959,440.612, 145.536,390.994, 145.536,329.743z M 512.00,7.388
+	c0.00,104.172-5.734,181.356-256.01,181.356C 6.118,188.749,0.00,115.497,0.00,7.388L 512.00,7.388 z" />
+<glyph unicode="&#xe011;" d="M 502.886,181.693l-5.34,3.784l-34.529,24.955c 0.251,4.649, 0.686,8.888, 0.686,13.563
+	s-0.435,9.354-0.686,14.024l 26.532,19.149l 13.343,9.789c 7.347,5.125, 10.906,16.261, 8.218,24.479l-7.997,23.608
+	c-2.877,8.233-12.498,15.135-21.627,15.345l-16.686,0.241l-32.906,0.451c-5.125,7.788-10.906,15.355-16.906,22.267l 9.784,30.474l 4.844,15.585
+	c 2.719,8.458-1.065,19.374-8.218,24.719l-20.69,14.479c-7.347,5.11-19.374,5.11-26.721,0.00l-2.002-1.347l-38.502-26.476
+	c-8.904,3.318-17.812,6.426-27.377,8.648l-14.935,43.218l-0.906,2.222C 287.391,473.318, 277.606,480.00, 268.692,480.00l-25.61,0.00 
+	c-8.914,0.00-18.693-6.682-21.586-15.135l-0.891-2.458L 220.17,461.517l-4.234-11.781l-10.68-30.305c-9.37-2.222-18.258-5.33-27.172-8.648
+	l-38.523,26.255l-2.002,1.326c-7.347,5.11-19.343,5.11-26.696,0.00l-20.48-14.674c-7.352-5.13-11.131-16.266-8.479-24.509l 0.906-2.452
+	l 13.788-43.392c-6.216-7.132-11.786-14.694-16.911-22.723L 46.95,330.173L 30.259,329.953c-8.888,0.00-18.693-7.132-21.35-15.35l-8.013-23.388
+	c-2.678-8.218, 0.891-19.354, 8.013-24.699l 2.437-1.562l 1.132-0.896l 9.999-7.322l 26.04-18.939c-0.21-4.454-0.43-9.134-0.43-13.804
+	c0.00-4.91, 0.22-9.564, 0.43-14.259l-37.171-26.916l-2.217-1.562c-7.127-5.34-10.696-16.466-8.023-24.684l 7.803-23.624
+	c 2.877-8.218, 12.462-15.124, 21.596-15.345l 16.906-0.215l 32.292-0.471c 5.125-7.997, 10.911-15.565, 17.341-22.687l-9.779-30.065l-5.13-15.811
+	c-2.652-8.218, 1.352-19.343, 8.484-24.499l 20.695-14.469c 7.342-5.094, 19.364-5.094, 26.716-0.22l 13.804,9.564l 26.476,18.284
+	c 8.914-3.564, 18.258-6.436, 27.612-8.689l 10.916-31.155l 4.89-14.029c 3.108-8.468, 12.672-15.124, 21.806-15.124l 25.61,0.00 
+	c 8.914,0.00, 18.693,6.656, 21.632,15.124l 0.845,2.437L 294.328-6.40l 1.715,4.659l 10.501,30.31c 9.344,2.217, 18.688,5.094, 27.377,8.653l 26.685-18.248
+	l 13.844-9.344c 7.342-5.125, 19.343-4.905, 26.685,0.215l 20.47,14.438c 7.373,5.156, 11.156,16.061, 8.499,24.499l-5.125,15.596l-9.595,30.50
+	c 6.001,7.127, 11.812,14.469, 16.937,22.502l 36.029,0.435l 13.404,0.215c 9.062,0.00, 18.688,7.127, 21.56,15.345l 7.782,23.624
+	C 513.797,165.228, 510.234,176.353, 502.886,181.693z M 326.359,223.995c0.00-37.612-31.59-68.106-70.349-68.106c-38.748,0.00-70.359,30.50-70.359,68.106
+	s 31.611,68.132, 70.359,68.132C 294.764,292.127, 326.359,261.601, 326.359,223.995z" />
+<glyph unicode="&#xe012;" d="M0.00,287.14c0.00-103.736, 84.029-187.766, 187.771-187.766s 187.771,84.029, 187.771,187.766
+	c0.00,103.731-84.029,187.761-187.771,187.761S0.00,390.871,0.00,287.14z M 58.685,287.14c0.00,71.342, 57.733,129.091, 129.08,129.091
+	c 71.368,0.00, 129.101-57.748, 129.101-129.091c0.00-71.363-57.733-129.096-129.101-129.096C 116.419,158.044, 58.685,215.782, 58.685,287.14z
+	 M 500.306-15.877c 15.59,14.674, 15.59,38.374,0.00,53.048L 375.885,161.434c-7.373-10.419-15.954-20.168-25.329-29.092
+	c-9.405-8.801-19.594-16.778-30.638-23.706c 36.265-34.499, 124.047-124.513, 124.047-124.513c 7.752-7.404, 17.951-11.028, 28.17-11.028
+	C 482.34-26.906, 492.554-23.281, 500.306-15.877z" />
+<glyph unicode="&#xe014;" d="M 328.023,480.00l 138.076-141.471L 466.099-32.00 L 45.901-32.00 L 45.901,480.00 L 328.023,480.00 z M 106.542,28.641l 298.957,0.00 l0.00,289.69 L 296.852,318.331 L 296.852,419.374 l-190.31,0.00 L 106.542,28.641 z
+	 M 147.799,226.54l 213.898,0.00 l0.00,23.578 L 147.799,250.117 L 147.799,226.54 z M 147.799,159.155l 213.898,0.00 L 361.697,182.733 L 147.799,182.733 L 147.799,159.155 z M 147.799,91.812l 213.898,0.00 l0.00,23.578 L 147.799,115.389 
+	L 147.799,91.812 z" />
+<glyph unicode="&#xe015;" d="M 191.995,480.00L 191.995,288.00L0.00,288.00L0.00,160.00L 191.995,160.00L 191.995-32.00L 320.005-32.00L 320.005,160.00L 512.00,160.00L 512.00,288.00L 320.005,288.00L 320.005,480.00 z" />
+<glyph unicode="&#xe016;" d="M 60.421,386.202l 391.153,0.00 c 10.235,0.00, 18.437-8.407, 18.437-18.842l0.00-158.72 
+	c0.00-10.44-8.202-18.847-18.437-18.847L 60.421,189.793 c-10.24,0.00-18.447,8.407-18.447,18.847L 41.974,367.36 C 41.979,377.795, 50.181,386.202, 60.421,386.202z M 235.116,142.904
+	c0.00,11.873, 9.201,21.294, 20.884,21.294c 11.689,0.00, 20.874-9.421, 20.874-21.294c0.00-11.668-9.185-21.309-20.874-21.309
+	C 244.321,121.595, 235.116,131.236, 235.116,142.904z M 201.523,96.00c 9.221,0.00, 16.799-7.782, 16.799-16.998c0.00-9.426-7.578-17.203-16.799-17.203L 138.44,61.798 
+	c-11.459,0.00-20.874-9.421-20.874-21.294c0.00-11.653, 9.416-21.299, 20.874-21.299l 235.126,0.00 c 11.453,0.00, 20.874,9.646, 20.874,21.299
+	c0.00,11.873-9.421,21.294-20.874,21.294l-63.078,0.00 c-9.221,0.00-16.799,7.782-16.799,17.203c0.00,9.221, 7.578,16.998, 16.799,16.998l 167.921,0.00 
+	C 497.05,96.00, 512.00,111.36, 512.00,130.202L 512.00,394.598 c0.00,18.836-14.95,34.196-33.597,34.196L 33.603,428.795 c-18.642,0.00-33.603-15.36-33.603-34.196L0.00,130.202 C0.00,111.36, 14.961,96.00, 33.603,96.00
+	L 201.523,96.00 z" />
+<glyph unicode="&#xe017;" d="M 256.00,467.471L 322.248,289.495L 512.00,281.482L 363.203,163.466L 414.218-19.476L 256.00,85.576L 97.782-19.476L 148.797,163.466L0.00,281.482L 189.742,289.495 z" />
+<glyph unicode="&#xe018;" d="M 415.206,305.321l 96.02-98.381L 511.227-32.00 l-292.198,0.00 L 219.028,305.321 L 415.206,305.321 z M 261.197,10.163l 207.887,0.00 L 469.084,192.891 L 393.528,192.891 L 393.528,263.168 L 261.197,263.168 
+	L 261.197,10.163 z M 289.879,147.779l 148.746,0.00 l0.00,16.389 L 289.879,164.168 L 289.879,147.779 z M 289.879,100.92l 148.746,0.00 l0.00,16.389 L 289.879,117.309 L 289.879,100.92 z M 289.879,54.083l 148.746,0.00 L 438.625,70.502 
+	L 289.879,70.502 L 289.879,54.083 z M 298.353,368.707c 31.882,0.015, 29.481,41.283-0.061,43.884c-14.367,1.254-46.71,4.096-57.938,5.084
+	c-11.105,0.963-19.369,10.281-19.384,19.277C 220.943,465.239, 213.601,480.015, 186.87,480.00l-29.148-0.015c-26.757-0.026-34.063-14.802-34.048-43.11
+	c0.00-9.001-8.248-18.309-19.354-19.292c-11.218-1.019-43.581-3.917-57.876-5.181c-29.604-2.637-31.964-43.904-0.046-43.889L 298.353,368.707z
+	 M 172.933,429.486c-9.119,0.00-16.471,7.347-16.522,16.466c-0.026,9.129, 7.368,16.522, 16.507,16.532c 9.119,0.00, 16.492-7.383, 16.532-16.481
+	C 189.476,436.895, 182.072,429.486, 172.933,429.486z M 42.952,236.068L 42.921,236.068 L 42.921,343.081 c-22.164,0.00-40.279,13.599-42.138,39.931l0.00-344.177 l 190.356,0.00 l0.00,42.163 L 42.952,80.998 
+	L 42.952,236.068 z M 342.339,323.087L 342.339,383.017 c-1.853-26.332-19.963-39.931-42.132-39.931l0.00-19.999 L 342.339,323.087 z" />
+<glyph unicode="&#xe019;" d="M 190.541,123.551L0.00,123.551 L0.00,480.00 l 196.372,0.00 l 96.118-98.499l0.00-35.533 l-42.204,0.00 l0.00,21.478 L 174.669,367.447 L 174.669,437.796 L 42.209,437.796 l0.00-272.036 l 148.332,0.00 L 190.541,123.551 z
+	 M 70.927,303.539l 119.613,0.00 l0.00,16.415 L 70.927,319.954 L 70.927,303.539 z M 70.927,256.63l 119.613,0.00 l0.00,16.415 L 70.927,273.044 L 70.927,256.63 z M 70.927,209.736l 119.613,0.00 l0.00,16.425 L 70.927,226.161 
+	L 70.927,209.736 z M 219.52,324.449L 219.52-32.00 L 512.00-32.00 L 512.00,225.951 L 415.892,324.449L 219.52,324.449 z M 261.729,282.245L 394.189,282.245 l0.00-70.359 l 75.622,0.00 l0.00-201.677 L 261.729,10.209 L 261.729,282.245 z
+	 M 290.447,164.393l 148.89,0.00 l0.00-16.41 l-148.89,0.00 L 290.447,164.393 z M 290.447,117.484l 148.89,0.00 l0.00-16.41 l-148.89,0.00 L 290.447,117.484 z M 290.447,70.62l 148.89,0.00 l0.00-16.44 l-148.89,0.00 L 290.447,70.62 z" />
+<glyph unicode="&#xe01a;" d="M0.00-32.00L0.00,53.939 l 100.147,0.00 l0.00,2.97 C 57.231,90.563, 9.042,154.88, 9.042,243.825C 9.042,374.62, 111.421,480.00, 260.526,480.00
+		c 155.843,0.00, 241.684-110.612, 241.684-227.958c0.00-97.167-51.973-160.727-91.843-195.133l0.00-2.97 L 512.00,53.939 L 512.00-32.00 L 288.369-32.00 L 288.369,34.534 
+		c 51.215,38.876, 95.636,103.158, 95.636,195.082c0.00,85.212-47.457,159.949-125.747,159.949c-79.053,0.00-130.243-71.757-130.243-159.949
+		c0.00-82.237, 44.416-162.237, 97.116-195.082L 225.132-32.00 L0.00-32.00 z" />
+<glyph unicode="&#xe01b;" d="M 363.592,461.312c-15.278-3.584-29.809-11.356-41.733-23.281c-9.549-9.533-16.41-20.70-20.639-32.635
+		c-0.876-2.545-1.608-5.166-2.268-7.788l-0.046-0.046l-24.468-81.28l 64.205,11.197L 363.592,461.312zM 199.593,269.952c-0.932-0.123-1.869-0.282-2.811-0.461l-1.157-0.205l 0.097-0.061
+		c-12.682-2.78-24.745-8.791-34.959-18.028c-2.642,4.009-5.719,7.849-9.236,11.377C 123.689,290.422, 78.541,290.396, 50.688,262.543
+		c-5.105-5.12-9.257-10.813-12.447-16.901L 38.195,245.642c-0.829-1.777-1.971-3.456-3.451-4.941c-2.77-2.765-6.267-4.378-9.851-4.844
+		l 0.02-0.02c-6.021-0.829-11.802-3.553-16.425-8.197c-11.29-11.274-11.331-29.568-0.026-40.868c 7.869-7.89, 19.195-10.25, 29.148-7.112
+		c 3.282-6.451, 7.624-12.513, 13.041-17.935c 27.827-27.832, 73.042-27.889, 100.884-0.031c 0.655,0.64, 1.229,1.377, 1.874,2.074l 44.39,44.375
+		c 4.055,4.07, 9.375,6.103, 14.694,6.139l 44.867-0.031l 0.015-44.861c-0.031-5.309-2.048-10.67-6.108-14.735l-44.38-44.375
+		c-0.712-0.655-1.418-1.213-2.084-1.853c-27.843-27.843-27.827-73.037,0.00-100.844c 27.837-27.843, 73.016-27.873, 100.859-0.015
+		c 27.843,27.843, 27.843,73.032, 0.015,100.859c-3.533,3.543-7.363,6.574-11.361,9.216c 9.185,10.286, 15.186,22.313, 17.987,35.016l 0.046-0.092
+		l 0.189,1.075c 0.205,1.014, 0.374,2.033, 0.563,3.067l 11.638,66.601l 121.953,35.016l 0.077,0.082c 2.688,0.671, 5.361,1.434, 7.987,2.34
+		c 12.216,4.285, 23.654,11.315, 33.439,21.094c 12.201,12.206, 20.157,27.085, 23.813,42.803L 199.593,269.952z M 123.761,189.476
+		c-12.457-12.442-32.62-12.442-45.056-0.015c-12.421,12.406-12.416,32.599, 0.02,45.03c 12.436,12.447, 32.604,12.436, 45.025,0.01
+		C 136.187,222.07, 136.187,201.897, 123.761,189.476z M 277.955,35.256c-12.452-12.436-32.625-12.436-45.051-0.015
+		c-12.447,12.472-12.447,32.64,0.00,45.082c 12.436,12.436, 32.584,12.436, 45.051-0.015C 290.391,67.881, 290.406,47.708, 277.955,35.256z M 292.50,230.144
+		c-10.092,0.00-18.278,8.192-18.278,18.278c0.00,10.097, 8.187,18.284, 18.278,18.284c 10.097,0.00, 18.284-8.192, 18.284-18.284C 310.784,238.336, 302.597,230.144, 292.50,230.144z" />
+<glyph unicode="&#xe01c;" d="M0.00,224.00c0.00-141.44, 114.56-256.00, 256.00-256.00s 256.00,114.56, 256.00,256.00S 397.44,480.00, 256.00,480.00S0.00,365.44,0.00,224.00z
+	 M 356.50,405.125l 74.22-74.25L 327.373,224.00l 103.347-106.875L 356.50,42.875L 256.00,149.75L 159.063,49.28L 91.50,123.187L 186.25,224.00L 91.50,324.797
+	l 67.564,73.923L 256.00,298.235L 356.50,405.125z" />
+<glyph unicode="&#xe01d;" d="M 230.395,47.877c0.00,14.843, 11.52,26.875, 25.60,26.875c 14.08,0.00, 25.595-12.032, 25.595-26.875
+	c0.00-14.597-11.515-26.624-25.595-26.624C 241.92,21.248, 230.395,33.28, 230.395,47.877z M 163.323,426.752l 185.344,0.00 c 12.534,0.00, 22.533-10.501, 22.533-23.547L 371.20,140.80 
+	c0.00-13.046-9.999-23.547-22.533-23.547l-185.344,0.00 c-12.534,0.00-22.533,10.501-22.533,23.547L 140.79,403.20 C 140.795,416.251, 150.794,426.752, 163.323,426.752z M 89.60,10.752
+	c0.00-23.547, 18.447-42.752, 40.945-42.752l 250.906,0.00 c 22.502,0.00, 40.955,19.20, 40.955,42.752L 422.405,437.248 C 422.40,460.80, 403.948,480.00, 381.45,480.00L 130.545,480.00 
+	C 108.042,480.00, 89.60,460.80, 89.60,437.248L 89.60,10.752 z" />
+<glyph unicode="&#xe01e;" d="M 46.577,208.63c 48.635-48.64, 120.53-59.105, 179.415-31.877l 192.686-192.701
+	c 21.407-21.407, 56.079-21.407, 77.266,0.00c 21.407,21.187, 21.407,55.859,0.00,77.266L 303.242,254.008c 27.233,58.88, 16.763,130.78-31.862,179.415
+	C 228.337,476.462, 166.656,489.733, 112.435,472.986l 120.305-120.33l-22.589-82.35l-82.811-23.045L 7.014,367.565
+	C-9.733,313.344, 3.538,251.663, 46.577,208.63z" />
+<glyph unicode="&#xe01f;" d="M 93.548,374.349c0.00-39.117, 31.903-70.748, 70.999-70.748
+	C 203.858,303.601, 235.52,335.232, 235.52,374.349c0.00,39.107-31.657,70.748-70.973,70.748C 125.45,445.097, 93.548,413.455, 93.548,374.349z M 273.224,271.232
+	c-24.212,8.407-58.885,13.271-108.682,13.271C 3.953,284.503,0.00,237.737,0.00,168.622l 252.513,0.00 c0.00,0.00-11.904,24.371-4.572,55.644
+	C 255.846,257.951, 273.224,271.232, 273.224,271.232z M 276.475,208.64c0.00-39.081, 31.657-70.738, 70.968-70.738c 39.091,0.00, 70.999,31.657, 70.999,70.738
+	c0.00,38.866-31.903,70.748-70.999,70.748C 308.132,279.388, 276.475,247.506, 276.475,208.64z M 512.00,2.903c0.00,66.56-3.717,115.686-164.557,115.686
+	c-160.814,0.00-164.541-46.781-164.541-115.686L 512.00,2.903 z" />
+<glyph unicode="&#xe020;" d="M 273.828,208.563L 209.28,141.22L 153.917,199.096l 111.237,153.083l 73.057-76.278
+	L 273.828,208.563z M 297.836,349.706c0.00,0.00-75.136,105.60-83.149,119.741c-8.013,14.147-36.869,16.532-55.311-8.305
+	C 150.595,449.311, 20.372,317.322, 14.152,309.908c-6.211-7.409-9.994-24.453, 1.516-33.152C 27.177,268.042, 138.701,183.439, 138.701,183.439
+	l 55.578-58.127l-7.608-7.813c 23.736-24.909, 27.679-29.061, 35.517-29.312c 25.385-0.471, 76.339,50.749, 92.242,30.188
+	c 31.846-41.032, 115.313-136.284, 115.313-136.284c 17.28-18.186, 45.22-18.903, 61.844-1.377c 16.783,17.531, 16.123,46.597-1.403,64.783
+	c0.00,0.00-90.844,87.219-130.314,120.627c-19.594,16.374, 29.501,69.642, 28.846,96.399c-0.251,8.084-4.157,12.227-27.94,37.14l-7.562-8.09
+	L 297.836,349.706z" />
+<glyph unicode="&#xe021;" d="M 127.944,480.00L 384.056,224.00L 127.944-32.00 z" />
+<glyph unicode="&#xe022;" d="M 384.056,480.00L 127.944,224.00L 384.056-32.00 z" />
+<glyph unicode="&#xe023;" d="M 512.00,95.944L 256.00,352.051L0.00,95.944 z" />
+<glyph unicode="&#xe024;" d="M0.00,352.056L 256.00,95.949L 512.00,352.056 z" />
+<glyph unicode="&#xe025;" d="M0.00,439.583l0.00-431.165 l 512.00,0.00 L 512.00,439.583 L0.00,439.583 z M 26.947,331.791l 215.593,0.00 l0.00-134.748 L 26.947,197.043 L 26.947,331.791 z M 26.947,35.354L 26.947,170.107 l 215.593,0.00 
+	l0.00-134.748 L 26.947,35.359 z M 485.048,35.354L 269.481,35.354 L 269.481,170.107 l 215.572,0.00 L 485.053,35.354 z M 485.048,197.038L 269.481,197.038 L 269.481,331.791 l 215.572,0.00 L 485.053,197.038 z" />
+<glyph unicode="&#xe026;" d="M0.00,439.578l0.00-431.16 l 512.00,0.00 L 512.00,439.578 L0.00,439.578 z M 26.947,35.369L 26.947,412.631 l 215.578,0.00 l0.00-377.262 L 26.947,35.369 z M 485.053,35.369L 269.476,35.369 L 269.476,412.631 
+		l 215.578,0.00 L 485.053,35.369 zM 188.631,224.00L 134.733,224.00L 134.733,277.893L 107.791,277.893L 107.791,224.00L 53.893,224.00L 53.893,197.048L 107.791,197.048L 107.791,143.16L 134.733,143.16L 134.733,197.048L 188.631,197.048 	z" />
+<glyph unicode="&#xe027;" d="M0.00,439.578l0.00-431.16 l 512.00,0.00 L 512.00,439.578 L0.00,439.578 z M 269.476,35.369L 269.476,412.631 l 215.572,0.00 l0.00-377.262 L 269.476,35.369 z M 26.947,412.631l 215.578,0.00 l0.00-377.262 
+		L 26.947,35.369 L 26.947,412.631 zM 323.369,224.00L 377.267,224.00L 377.267,277.893L 404.209,277.893L 404.209,224.00L 458.107,224.00L 458.107,197.048L 404.209,197.048L 404.209,143.16L 377.267,143.16L 377.267,197.048L 323.369,197.048 	z" />
+<glyph unicode="&#xe028;" d="M 188.631,116.219L 242.529,116.219L 242.529,62.31L 269.471,62.31L 269.471,116.219L 323.369,116.219L 323.369,143.16L 269.471,143.16L 269.471,197.059L 242.529,197.059L 242.529,143.16L 188.631,143.16 	zM0.00,439.588l0.00-431.176 l 512.00,0.00 L 512.00,439.588 L0.00,439.588 z M 485.048,35.359L 26.947,35.359 L 26.947,224.005 l 458.102,0.00 L 485.048,35.359 z M 485.048,250.957L 26.947,250.957 L 26.947,412.641 
+		l 458.102,0.00 L 485.048,250.957 z" />
+<glyph unicode="&#xe029;" d="M 188.631,331.781L 242.529,331.781L 242.529,385.69L 269.471,385.69L 269.471,331.781L 323.369,331.781L 323.369,304.84L 269.471,304.84L 269.471,250.941L 242.529,250.941L 242.529,304.84L 188.631,304.84 	zM 512.00,8.412L 512.00,439.588 L0.00,439.588 l0.00-431.181 L 512.00,8.407 z M 485.048,223.995L 26.947,223.995 L 26.947,412.641 l 458.102,0.00 L 485.048,223.995 z M 485.048,35.359L 26.947,35.359 L 26.947,197.043 
+		l 458.102,0.00 L 485.048,35.359 z" />
+<glyph unicode="&#xe02a;" d="M 269.476,35.369L 269.476,143.16 l 215.572,0.00 l0.00-107.791 L 269.476,35.369 z M 269.476,170.102
+	L 269.476,277.893 l 215.572,0.00 l0.00-107.796 L 269.476,170.097 z M 242.524,277.893l0.00-107.796 L 26.947,170.097 L 26.947,277.893 L 242.524,277.893 z M 242.524,143.16l0.00-107.791 L 26.947,35.369 L 26.947,143.16 L 242.524,143.16 z M 512.00,8.422
+	L 512.00,439.578 L0.00,439.578 l0.00-431.16 L 512.00,8.417 z M 242.524,412.631l 26.952,0.00 L 269.476,304.845 l-26.952,0.00 L 242.524,412.631 z" />
+<glyph unicode="&#xe02b;" d="M 188.631,412.631l 134.738,0.00 L 323.369,224.00 L 188.631,224.00 L 188.631,412.631 z M 350.316,412.631l 134.738,0.00 L 485.053,224.00 
+	L 350.316,224.00 L 350.316,412.631 z M 512.00,439.578L0.00,439.578 l0.00-431.16 l 512.00,0.00 L 512.00,439.578 z M 485.053,35.369L 350.316,35.369 L 350.316,197.053 l 134.738,0.00 L 485.053,35.369 z M 323.369,35.369L 188.631,35.369 L 188.631,197.053 l 134.738,0.00 
+	L 323.369,35.369 z M 161.684,197.053L 26.947,197.053 L 26.947,224.00 l 134.738,0.00 L 161.684,197.053 z" />
+<glyph unicode="&#xe02c;" d="M 175.16,264.422l 26.947-26.947L 256.00,291.369l 53.893-53.893l 26.947,26.947
+	L 282.947,318.316l 53.893,53.893l-26.947,26.952L 256.00,345.267L 202.107,399.16l-26.947-26.952l 53.893-53.893L 175.16,264.422z M 485.053,35.369
+	L 26.947,35.369 L 26.947,197.053 l 458.107,0.00 L 485.053,35.369 z M0.00,8.422l 512.00,0.00 L 512.00,439.578 L0.00,439.578 L0.00,8.422 z M 26.947,412.636l 458.107,0.00 L 485.053,224.00 L 26.947,224.00 L 26.947,412.636 z" />
+<glyph unicode="&#xe02d;" d="M 296.422,170.107l 26.952-26.947l 53.893,53.893l 53.893-53.893
+	l 26.947,26.947L 404.209,224.00l 53.893,53.893l-26.947,26.952L 377.267,250.952L 323.369,304.845l-26.952-26.952L 350.316,224.00L 296.422,170.107z M 512.00,439.578L0.00,439.578 
+	l0.00-431.16 l 512.00,0.00 L 512.00,439.578 z M 26.947,412.636l 215.578,0.00 l0.00-377.267 L 26.947,35.369 L 26.947,412.636 z M 269.476,412.636l 215.578,0.00 l0.00-377.267 L 269.476,35.369 L 269.476,412.636 z" />
+<glyph unicode="&#xe02e;" d="M 186.476,331.791L 80.84,213.473l 105.636-118.001L 186.476,331.791 z
+	 M 323.369,331.791l0.00-236.314 l 105.631,118.001L 323.369,331.791z M 512.00,439.578L0.00,439.578 l0.00-431.16 l 512.00,0.00 L 512.00,439.578 z M 26.947,412.636l 215.578,0.00 l0.00-377.267 L 26.947,35.369 L 26.947,412.636 z
+	 M 269.476,412.636l 215.578,0.00 l0.00-377.267 L 269.476,35.369 L 269.476,412.636 z" />
+<glyph unicode="&#xe02f;" d="M 402.053,331.791L 296.422,213.473l 105.636-118.001L 402.058,331.791 z
+	 M 107.791,331.791l0.00-236.314 l 105.631,118.001L 107.791,331.791z M 512.00,439.578L0.00,439.578 l0.00-431.16 l 512.00,0.00 L 512.00,439.578 z M 26.952,412.636l 215.572,0.00 l0.00-377.267 L 26.952,35.369 L 26.952,412.636 z
+	 M 269.476,412.636l 215.578,0.00 l0.00-377.267 L 269.476,35.369 L 269.476,412.636 z" />
+<glyph unicode="&#xe030;" d="M 512.00,331.791L 512.00,439.578 L0.00,439.578 l0.00-323.369 l 134.733,0.00 l0.00-107.791 L 512.00,8.417 L 512.00,331.791 z
+	 M 26.952,331.791l 215.572,0.00 l0.00-80.84 L 26.952,250.952 L 26.952,331.791 z M 269.476,331.791l 215.578,0.00 l0.00-80.84 L 269.476,250.952 L 269.476,331.791 z M 485.053,143.16L 269.476,143.16 L 269.476,224.00 l 215.578,0.00 L 485.053,143.16 z
+	 M 242.524,143.16L 26.952,143.16 L 26.952,224.00 l 215.572,0.00 L 242.524,143.16 z" />
+<glyph unicode="&#xe031;" d="M 208.189,450.237L 118.077,450.237L0.00,219.30L0.00-2.237L 225.091-2.237L 225.091,219.30L 96.63,219.30 	zM 383.508,219.30L 495.421,450.237L 405.299,450.237L 286.909,219.30L 286.909-2.237L 512.00-2.237L 512.00,219.30 	z" />
+<glyph unicode="&#xe032;" d="M 84.531,113.162c-26.772,0.00-47.56,7.229-62.346,21.642C 7.393,149.212,0.00,169.528,0.00,195.799
+		c0.00,26.394, 5.268,50.458, 15.77,72.197c 10.542,21.74, 24.776,38.313, 42.757,49.725c 17.976,11.412, 38.313,17.116, 61.01,17.116
+		c 22.569,0.00, 40.161-5.197, 52.787-15.585c 12.621-10.388, 18.934-24.637, 18.934-42.742c0.00-23.844-10.65-42.24-31.939-55.178
+		c-21.294-12.938-51.702-19.41-91.228-19.41l-9.754,0.00 l-0.379-4.019l0.00-3.83 c0.00-11.592, 3.272-20.741, 9.836-27.438
+		c 6.564-6.692, 15.985-10.02, 28.221-10.02c 11.095,0.00, 21.166,1.198, 30.218,3.62c 9.052,2.422, 20.014,6.692, 32.891,12.81l0.00-43.418 
+		C 137.19,118.651, 112.328,113.162, 84.531,113.162z M 115.896,293.335c-11.218,0.00-21.801-5.10-31.749-15.299c-9.943-10.199-16.445-22.63-19.507-37.294
+		l 8.607,0.00 c 19.763,0.00, 35.149,3.092, 46.177,9.277c 11.028,6.185, 16.553,14.566, 16.553,25.149C 135.977,287.283, 129.285,293.335, 115.896,293.335zM 338.918,334.838c 27.919,0.00, 44.626-14.536, 50.104-43.602l 1.147,0.00 c 8.673,14.024, 18.893,24.796, 30.689,32.317
+		c 11.791,7.526, 24.397,11.284, 37.78,11.284c 17.341,0.00, 30.561-5.417, 39.695-16.256c 9.093-10.839, 13.665-25.948, 13.665-45.327
+		c0.00-9.692-1.464-21.166-4.398-34.427l-25.436-121.83L 424.596,116.997 l 26.394,124.892c 2.038,8.668, 3.062,16.256, 3.062,22.758
+		c0.00,15.683-6.246,23.521-18.739,23.521c-11.73,0.00-22.359-7.137-31.836-21.422c-9.518-14.28-17.06-34.555-22.676-60.815l-18.36-88.94L 304.876,116.992 
+		l 26.199,124.892c 2.038,8.668, 3.062,16.256, 3.062,22.758c0.00,15.683-6.246,23.521-18.739,23.521c-11.73,0.00-22.38-7.265-31.939-21.806
+		c-9.564-14.531-17.085-34.806-22.564-60.82l-18.744-88.55L 184.576,116.987 l 45.327,213.827l 43.986,0.00 l-4.014-39.588l 1.147,0.00 
+		C 289.638,320.302, 312.269,334.838, 338.918,334.838z" />
+<glyph unicode="&#xe033;" d="M 155.203,72.643l-11.679,30.09l-1.587,0.00 c-10.158-12.80-20.628-21.663-31.391-26.614
+		c-10.757-4.972-24.765-7.434-42.056-7.434c-21.248,0.00-37.985,6.072-50.196,18.217C 6.093,99.036,0.00,116.326,0.00,138.762
+		c0.00,23.491, 8.228,40.827, 24.637,51.973c 16.456,11.156, 41.221,17.311, 74.348,18.499l 38.405,1.188l0.00,9.718 c0.00,22.436-11.479,33.654-34.447,33.654
+		c-17.684,0.00-38.472-5.371-62.362-16.061l-19.994,40.781c 25.472,13.332, 53.714,20.019, 84.726,20.019c 29.696,0.00, 52.46-6.472, 68.301-19.40
+		c 15.836-12.933, 23.757-32.599, 23.757-58.993l0.00-147.507 L 155.203,72.632 z M 137.385,175.186l-23.357-0.788c-17.551-0.532-30.612-3.697-39.194-9.503
+		c-8.581-5.806-12.867-14.648-12.867-26.527c0.00-17.024, 9.764-25.513, 29.297-25.513c 13.988,0.00, 25.165,3.999, 33.546,12.052
+		c 8.381,8.054, 12.58,18.744, 12.58,32.077L 137.39,175.186 zM 350.218,298.143c 26.132,0.00, 46.587-10.209, 61.368-30.602c 14.781-20.388, 22.17-48.323, 22.17-83.825
+		c0.00-36.562-7.608-64.891-22.876-84.951c-15.222-20.06-35.983-30.09-62.249-30.09c-25.999,0.00-46.392,9.462-61.169,28.329l-4.157,0.00 l-10.102-24.371
+		l-46.126,0.00 L 227.077,380.682 l 60.38,0.00 l0.00-71.675 c0.00-9.108-0.788-23.67-2.376-43.73l 2.376,0.00 C 301.583,287.191, 322.504,298.143, 350.218,298.143z M 330.819,249.841
+		c-14.915,0.00-25.80-4.598-32.666-13.768s-10.424-24.33-10.691-45.445l0.00-6.508 c0.00-23.757, 3.523-40.781, 10.578-51.077s 18.253-15.442, 33.567-15.442
+		c 12.406,0.00, 22.262,5.693, 29.609,17.116c 7.301,11.412, 10.977,28.022, 10.977,49.797c0.00,21.78-3.697,38.098-11.085,48.983
+		C 353.715,244.383, 343.619,249.841, 330.819,249.841zM 442.716,100.972c0.00,11.085, 2.964,19.446, 8.904,25.119s 14.587,8.535, 25.933,8.535c 10.957,0.00, 19.42-2.903, 25.452-8.709
+		c 5.98-5.811, 8.996-14.121, 8.996-24.945c0.00-10.424-3.036-18.652-9.103-24.653s-14.52-9.001-25.339-9.001c-11.085,0.00-19.666,2.949-25.733,8.801
+		C 445.752,81.992, 442.716,90.281, 442.716,100.972z" />
+<glyph unicode="&#xe034;" d="M 418.304,113.106c0.00-44.959-16.159-80.384-48.553-106.276C 337.423-19.057, 292.388-32.00, 234.711-32.00
+		c-53.135,0.00-100.142,9.989-141.015,29.972l0.00,98.099 c 33.608-14.986, 62.029-25.508, 85.309-31.642c 23.276-6.129, 44.58-9.236, 63.882-9.236
+		c 23.158,0.00, 40.914,4.465, 53.289,13.327c 12.375,8.852, 18.58,22.026, 18.58,39.511c0.00,9.764-2.724,18.432-8.177,26.04
+		c-5.448,7.603-13.435,14.909-24.028,21.949c-10.527,7.04-32.061,18.319-64.532,33.761c-30.428,14.305-53.253,28.012-68.465,41.18
+		c-15.217,13.169-27.366,28.534-36.449,46.019s-13.624,37.924-13.624,61.317c0.00,44.052, 14.915,78.643, 44.774,103.854
+		C 174.116,467.359, 215.404,480.00, 268.088,480.00c 25.892,0.00, 50.565-3.103, 74.107-9.236c 23.465-6.129, 48.072-14.761, 73.728-25.887l-34.063-82.053
+		c-26.568,10.90-48.522,18.468-65.93,22.784c-17.336,4.316-34.442,6.508-51.246,6.508c-19.983,0.00-35.308-4.695-45.983-14.003
+		c-10.67-9.308-16.005-21.422-16.005-36.408c0.00-9.308, 2.161-17.444, 6.477-24.376c 4.311-6.927, 11.156-13.624, 20.623-20.096
+		c 9.385-6.472, 31.713-18.13, 66.913-34.934c 46.551-22.257, 78.454-44.544, 95.713-66.913C 409.682,173.02, 418.304,145.582, 418.304,113.106z" />
+<glyph unicode="&#xe035;" d="M 66.191,480.00l 159.345,0.00 C 298.138,480.00, 350.828,469.668, 383.631,449.009s 49.219-53.524, 49.219-98.58
+		c0.00-30.587-7.199-55.685-21.519-75.295c-14.392-19.61-33.459-31.401-57.272-35.369l0.00-3.507 c 32.451-7.235, 55.869-20.777, 70.19-40.622
+		c 14.397-19.85, 21.56-46.228, 21.56-79.15c0.00-46.689-16.891-83.118-50.591-109.261c-33.772-26.148-79.57-39.229-137.472-39.229L 66.191-32.005 L 66.191,480.00 z
+		 M 174.756,277.228l 63.032,0.00 c 29.425,0.00, 50.703,4.557, 63.892,13.66s 19.809,24.166, 19.809,45.174c0.00,19.61-7.199,33.679-21.519,42.199
+		c-14.397,8.52-37.079,12.785-68.137,12.785L 174.756,391.045 L 174.756,277.228 z M 174.756,191.073l0.00-133.422 l 70.738,0.00 c 29.885,0.00, 51.948,5.719, 66.186,17.162
+		s 21.361,28.948, 21.361,52.531c0.00,42.491-30.351,63.729-91.049,63.729L 174.756,191.073 z" />
+<glyph unicode="&#xe036;" d="M 181.473,166.789l 149.059,0.00 l 29.64-97.28l 93.399,0.00 L 308.71,480.00l-105.984,0.00 L 58.435,69.509l 93.399,0.00 L 181.473,166.789z M 256.143,416.522
+		c 1.49-6.712, 3.948-15.846, 7.429-27.407c 3.41-11.561, 18.862-61.43, 46.259-149.612L 203.29,239.503 C 232.371,333.65, 249.989,392.653, 256.143,416.522zM 54.42,42.788L 457.58,42.788L 457.58-32.00L 54.42-32.00z" />
+<glyph unicode="&#xe037;" d="M 256.118,339.727c-5.023-19.487-19.405-67.651-43.146-144.507l 86.979,0.00 c-22.369,71.987-34.99,112.696-37.77,122.132
+		C 259.338,326.789, 257.331,334.249, 256.118,339.727zM 60.80,419.20l0.00-390.40 l 390.40,0.00 l0.00,390.40 L 60.80,419.20 z M 341.038,56.448l-24.192,79.411L 195.164,135.859 l-24.197-79.411L 94.72,56.448 
+		l 117.796,335.099l 86.513,0.00 L 417.28,56.448L 341.038,56.448 z" />
+<glyph unicode="&#xe038;" d="M 126.828,130.729L 24.253,286.561l 98.586,0.00 l 61.834-101.437l 62.397,101.437l 98.591,0.00 L 241.94,130.729L 350.50-32.00L 251.628-32.00 
+		L 184.673,77.158L 117.427-32.00L 18.836-32.00 L 126.828,130.729zM 493.158,292.193L 363.735,292.193 l0.00,27.223 l 46.474,46.986c 13.773,14.121, 22.764,23.869, 26.977,29.317s 7.25,10.516, 9.119,15.135
+		c 1.864,4.654, 2.785,9.467, 2.785,14.433c0.00,7.439-2.058,12.979-6.139,16.589c-4.086,3.645-9.564,5.443-16.399,5.443
+		c-7.188,0.00-14.157-1.644-20.895-4.936c-6.743-3.297-13.804-7.982-21.151-14.06L 363.228,453.53c 9.114,7.788, 16.686,13.271, 22.666,16.466
+		c 5.985,3.231, 12.539,5.699, 19.63,7.409C 412.621,479.145, 420.567,480.00, 429.332,480.00c 11.556,0.00, 21.78-2.089, 30.643-6.328
+		c 8.863-4.214, 15.734-10.132, 20.644-17.731c 4.905-7.598, 7.347-16.276, 7.347-26.092c0.00-8.515-1.49-16.527-4.50-23.997
+		c-3.005-7.475-7.629-15.135-13.932-22.984c-6.298-7.854-17.382-19.031-33.239-33.562l-23.808-22.415l0.00-1.777 L 493.158,325.115 L 493.158,292.193 z" />
+<glyph unicode="&#xe039;" d="M 127.068,324.50L 24.704,480.00L 123.085,480.00 l 61.737-101.222L 247.06,480.00l 98.381,0.00 L 241.94,324.50l 108.365-162.391L 251.612,162.109 
+		L 184.822,271.043L 117.714,162.109L 19.333,162.109 L 127.068,324.50zM 492.667-32.00L 363.51-32.00 l0.00,27.172 l 46.382,46.889c 13.711,14.09, 22.687,23.818, 26.921,29.251
+		c 4.168,5.437, 7.199,10.491, 9.093,15.099c 1.833,4.68, 2.78,9.482, 2.78,14.408c0.00,7.46-2.084,12.948-6.124,16.558
+		c-4.111,3.661-9.544,5.432-16.364,5.432c-7.204,0.00-14.157-1.638-20.854-4.931c-6.758-3.282-13.773-7.962-21.105-14.029l-21.228,25.149
+		c 9.098,7.772, 16.62,13.271, 22.62,16.43c 5.939,3.22, 12.513,5.688, 19.589,7.388c 7.076,1.772, 14.976,2.591, 23.762,2.591
+		c 11.50,0.00, 21.734-2.079, 30.582-6.318c 8.847-4.168, 15.672-10.102, 20.598-17.69c 4.864-7.578, 7.332-16.241, 7.332-26.03
+		c0.00-8.468-1.521-16.492-4.49-23.951c-3.031-7.45-7.644-15.099-13.901-22.932c-6.318-7.839-17.377-18.959-33.172-33.49l-23.762-22.369l0.00-1.772 
+		l 80.502,0.00 L 492.672-32.00 z" />
+<glyph unicode="&#xe03a;" d="M 487.741,455.977c-32.338,32.031-84.741,32.031-117.084,0.00l 117.084-115.476
+		C 520.084,372.214, 520.084,423.951, 487.741,455.977zM 83.133,172.662L0.00-24.622l 200.192,81.802l 255.524,251.643L 338.309,424.269
+		L 83.133,172.662z M 73.088,29.701l-17.787,17.469l 47.534,113.521c0.00,0.00, 21.356-3.891, 32.031-14.249c 10.675-10.67, 7.772-30.382, 3.533-34.929
+		c 4.234,4.552, 24.607,7.45, 35.287-3.22c 10.675-10.358, 14.244-31.37, 14.244-31.37L 73.088,29.701z" />
+<glyph unicode="&#xe03b;" d="M 107.791,304.845c0.00-29.635, 24.248-53.893, 53.893-53.893
+	s 53.893,24.259, 53.893,53.893c0.00,29.629-24.248,53.893-53.893,53.893S 107.791,334.474, 107.791,304.845z M 53.893,35.369L 26.947,35.369 L 26.947,412.636 l 458.107,0.00 
+	l0.00-296.428 L 377.267,250.952L 215.578,89.267L 161.684,143.16L 53.893,35.369z M0.00,35.369l0.00-26.952 l 512.00,0.00 l0.00,26.952 L 512.00,412.636 L 512.00,439.578 l-26.947,0.00 L 26.947,439.578 L0.00,439.578 l0.00-26.947 
+	L0.00,35.369 z" />
+<glyph unicode="&#xe03c;" d="M 201.078,386.908L 201.078,305.91L 74.476,222.838L 201.078,140.232L 201.078,61.092L0.00,184.909L0.00,261.002 	zM 437.524,222.838L 310.912,305.91L 310.912,386.908L 512.00,261.002L 512.00,184.909L 310.912,61.092L 310.912,140.232 	z" />
+<glyph unicode="&#xe03d;" d="M0.00,439.578l0.00-431.16 l 170.578,0.00 L 170.578,94.659 L 85.422,94.659 L 85.422,353.347 l 85.161,0.00 L 170.583,439.578 L0.00,439.578 z
+	 M 512.00,439.578L 341.422,439.578 l0.00-86.236 l 85.161,0.00 l0.00-258.683 L 341.422,94.659 l0.00-86.241 L 512.00,8.417 L 512.00,439.578 z" />
+<glyph unicode="&#xe03e;" d="M 256.159,321.838c 54.641,0.00, 99.302-43.971, 99.302-97.981
+	s-44.662-97.695-99.302-97.695c-54.958,0.00-99.308,43.684-99.308,97.695S 201.201,321.838, 256.159,321.838z M 44.959,223.862
+	c 26.522-31.396, 112.553-124.196, 211.20-124.196c 98.985,0.00, 184.678,92.483, 210.862,124.196c-26.179,31.683-112.189,124.508-210.862,124.508
+	C 157.169,348.37, 71.48,255.539, 44.959,223.862z M 256.159,64.384C 119.347,64.384, 12.288,207.34, 7.772,213.499L0.00,223.862l 7.772,10.332
+	C 12.288,240.348, 119.347,383.621, 256.159,383.621c 136.509,0.00, 243.871-143.268, 248.387-149.432L 512.00,223.862l-7.455-10.358
+	C 500.029,207.34, 392.668,64.384, 256.159,64.384z" />
+<glyph unicode="&#xe03f;" d="M 425.969,277.632c-35.876,2.591-51.732-21.002-95.724-22.61c-22.011-0.63-86.344,64.681-86.344,64.681
+	S 186.327,375.004, 186.327,397.962c0.00,15.857, 11.971,31.708, 11.971,47.882L 198.298,446.157 c0.00,3.538-0.666,7.107-1.925,10.358L 196.055,457.779
+	c-1.331,2.591-3.256,5.181-5.181,7.772c-0.666,0.63-0.978,1.295-1.644,1.956l-0.317,0.317l-0.317,0.317
+	c-0.317,0.63-0.978,0.317-1.295,0.63c-12.283,10.358-30.10,10.045-41.718-1.265L 8.786,332.652c-11.32-11.341-11.638-28.81-1.295-40.781
+	c 0.333-0.66, 0.333-0.968, 0.645-1.29l 0.645-0.63l0.00-0.317 c 0.645-0.66, 1.608-0.66, 2.258-1.321c 2.591-2.248, 5.181-3.86, 7.772-5.181
+	l 0.963-0.317c 3.569-1.26, 7.127-1.93, 10.675-1.93l 0.328,0.00 c 16.492,0.00, 32.66,11.971, 48.829,11.971c 23.291,0.00, 79.242-56.909, 79.242-56.909
+	S 225.485,172.518, 224.476,150.861c-1.577-43.331-25.201-58.839-22.927-94.428c 1.925-24.888, 28.421-46.868, 28.421-46.868L 342.528,120.479
+	l 98.98-97.659l 68.536-51.098L 512.00-26.348L 460.268,41.242L 361.288,138.921l 112.558,110.925C 473.851,249.841, 451.523,276.055, 425.969,277.632z" />
+<glyph unicode="&#xe040;" d="M 458.936,94.94c 29.44,0.00, 53.064-23.281, 53.064-52.086
+	c0.00-29.123-23.624-52.367-53.064-52.367c-29.092,0.00-53.028,23.245-53.028,52.367C 405.903,71.66, 429.844,94.94, 458.936,94.94z
+	 M 195.354,94.94c 29.092,0.00, 53.033-23.281, 53.033-52.086c0.00-29.123-23.946-52.367-53.033-52.367c-29.435,0.00-53.043,23.245-53.043,52.367
+	C 142.31,71.66, 165.919,94.94, 195.354,94.94z M 512.00,426.117l-408.494-11.628l-15.524,43.018L0.00,457.508 l 18.115-31.048l 25.549,0.00 l 65.649-193.393
+	c-15.519-12.948-25.221-32.343-25.221-54.011c0.00-38.851, 32.343-70.851, 71.808-70.851L 512.00,108.206 L 512.00,161.869 L 155.904,161.869 c-9.728,0.00-17.48,7.772-17.48,17.183
+	c0.00,7.419, 4.531,13.578, 11.003,16.169L 512.00,268.943L 512.00,426.117 z" />
+</font></defs></svg>
\ No newline at end of file
diff --git a/core/modules/aloha/fonts/aloha_icons.ttf b/core/modules/aloha/fonts/aloha_icons.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..c22b92dc018c82609c3d27235d11979e5e64ce0d
GIT binary patch
literal 13490
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
NAHhA{%m2sD{{hQ;KC1u#

literal 0
HcmV?d00001

diff --git a/core/modules/aloha/fonts/aloha_icons.woff b/core/modules/aloha/fonts/aloha_icons.woff
new file mode 100644
index 0000000000000000000000000000000000000000..0fb8e4ac8876012b9472e82c93a61f6d17211d65
GIT binary patch
literal 26644
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
ab1+9-0001ZoMT{SKn9EqXaE2JjsOJ`q8C^I

literal 0
HcmV?d00001

diff --git a/core/modules/aloha/js/drupal.aloha.js b/core/modules/aloha/js/drupal.aloha.js
new file mode 100644
index 0000000..f170533
--- /dev/null
+++ b/core/modules/aloha/js/drupal.aloha.js
@@ -0,0 +1,261 @@
+/**
+ * @file
+ * A simple interface to interact with Aloha Editor.
+ */
+
+(function ($, Drupal, Aloha) {
+
+"use strict";
+
+Drupal.aloha = {
+
+  state: {
+    initializing: false,
+    ready: false,
+    initCallbacks: []
+  },
+
+  /**
+   * Initialize Aloha Editor.
+   *
+   * @param callback
+   *   An optional callback that will be called whenever Aloha Editor is ready.
+   *   If this is called multiple times while Aloha Editor is initializing, each
+   *   callback will be queued and will be executed when Aloha Editor is ready.
+   *   If Aloha Editor is already ready when you call this, the callback will be
+   *   called immediately.
+   */
+  init: function (callback) {
+    // If Aloha is ready, immediately execute the callback. If it is,
+    // initializing then add it to the list of init callbacks, all of which will
+    // be called as soon as Aloha is ready.
+    if (Drupal.aloha.state.initializing) {
+      if (typeof callback === "function") {
+        if (Drupal.aloha.state.ready) {
+          callback();
+        }
+        else {
+          Drupal.aloha.state.initCallbacks.push(callback);
+        }
+      }
+      return;
+    }
+    else {
+      Drupal.aloha.state.initializing = true;
+      if (typeof callback === "function") {
+        Drupal.aloha.state.initCallbacks.push(callback);
+      }
+    }
+
+    // Migrate Aloha.settings from Drupal.settings.
+    Aloha.settings = Drupal.settings.aloha.settings;
+
+    // Give all Drupal modules' JS the opportunity to alter Aloha Editor's
+    // settings, before Aloha Editor gets initialized.
+    $(document).trigger('aloha-before-init', [Aloha.settings]);
+    // Use a setTimeout to make sure this code will run after all event
+    // handlers have been run.
+    setTimeout(function () {
+      Aloha.settings.plugins.load = Aloha.settings.plugins.load.join(',');
+      Aloha.deferInit();
+      Aloha.ready(function () {
+        Drupal.aloha.state.ready = true;
+
+        // Execute all queued init callbacks.
+        for (var i = 0; i < Drupal.aloha.state.initCallbacks.length; i++) {
+          var callback = Drupal.aloha.state.initCallbacks[i];
+          callback();
+        }
+
+        // Also fire an event.
+        $(document).trigger('aloha-ready');
+      });
+    }, 0);
+  },
+
+  /**
+   * Attach Aloha Editor to an editable.
+   *
+   * @param $editable
+   *   The editable to which Aloha Editor should be applied. Can be a <textarea>
+   *   or any HTML tag that contains HTML that should be edited (e.g. <div>,
+   *   <article>, etc.) Should have a data-allowed-tags attribute (see README).
+   * @param format
+   *   The format object of the selected text format. The following properties
+   *   are used:
+   *   - class: Class to add to the editable while this format is active.
+   */
+  attach: function ($editable, format) {
+    $editable.addClass('aloha-attached');
+    Drupal.aloha._ensureID($editable);
+    Drupal.aloha._ensureNonFormElement($editable);
+    var $alohaEditable = Drupal.aloha._getAlohaEditable($editable);
+    var id = $alohaEditable.attr('id');
+
+    Drupal.aloha._setFormatClass($alohaEditable, format.className);
+
+    Aloha.jQuery('#' + id).aloha();
+
+    // Trigger 'aloha-content-changed' event whenever content has changed.
+    Aloha.bind('aloha-smart-content-changed.aloha', function (event, ae) {
+      if (ae.editable.obj[0].id === id && ae.triggerType !== 'blur') {
+        // Listeners can use ae.editable.getContents() to get the current
+        // cleaned (i.e. WYSIWYG-supporting mark-up removed) contents.
+        $editable.trigger('aloha-content-changed', [$alohaEditable, ae]);
+      }
+    });
+  },
+
+  /**
+   * Enforce the activation of an attached Aloha Editor on a specific editable.
+   *
+   * @param $editable
+   *   The editable on which Aloha Editor should be activated.
+   */
+  activate: function ($editable) {
+    var $alohaEditable = Drupal.aloha._getAlohaEditable($editable);
+    var id = $alohaEditable.attr('id');
+
+    Aloha.getEditableById(id).activate();
+    // This hack will trigger the floating menu to appear *immediately*.
+    Aloha.jQuery('#' + id).focus().trigger('mousedown').trigger('mouseup');
+  },
+
+  /**
+   * Detach Aloha Editor from an editable.
+   *
+   * @param $editable
+   *   The editable from which Aloha Editor should be detached. This will also
+   *   cause Aloha Editor's additional mark-up to be cleaned up.
+   */
+  detach: function ($editable) {
+    if (!$editable.hasClass('aloha-attached')) {
+      return false;
+    }
+
+    var $alohaEditable = Drupal.aloha._getAlohaEditable($editable);
+    var id = $alohaEditable.attr('id');
+
+    Aloha.jQuery('#' + id)
+      .unbind('aloha-smart-content-changed.aloha')
+      .mahalo();
+
+    Drupal.aloha._restoreNonFormElement($editable);
+    Drupal.aloha._restoreID($editable);
+
+    $editable.removeClass('aloha-attached');
+  },
+
+  /**
+   * Remove any previous format classes and set the one for the current format.
+   *
+   * @param $alohaEditable
+   *   The "Aloha" editable, typically a <div>, possibly a temporary one because
+   *   the "original" editable is a <textarea>.
+   * @param formatClassName
+   *   The class name for the current format.
+   */
+  _setFormatClass: function($alohaEditable, formatClassName) {
+    var formats = Drupal.settings.aloha.formats;
+    for (var format in formats) {
+      if (formats.hasOwnProperty(format)) {
+        $alohaEditable.removeClass(formats[format].className);
+      }
+    }
+
+    if (typeof formatClassName !== 'undefined') {
+      $alohaEditable.addClass(formatClassName);
+    }
+  },
+
+  /**
+   * If no ID is set on this editable, then generate one.
+   *
+   * @param $editable
+   *   The "original" editable, typically a <div> or a <textarea>.
+   */
+  _ensureID: function ($editable) {
+    var id = $editable.attr('id');
+    if (typeof id === 'undefined' || id === '') {
+      id = 'aloha-' + new Date().getTime();
+      $editable.attr('id', id);
+    }
+  },
+
+  /**
+   * If no ID was set on this editable, remove it again.
+   *
+   * @param $editable
+   *   The "original" editable, typically a <div> or a <textarea>.
+   */
+  _restoreID: function ($editable) {
+    if ($editable.attr('id').match(/^aloha-\d+$/) !== null) {
+      $editable.removeAttr('id');
+    }
+  },
+
+  /**
+   * Ensure a non-form DOM element is available for Aloha Editor to be attached
+   * to. Aloha Editor can generate this for us, but if we manage it ourselves,
+   * we can control how it behaves.
+   *
+   * @param $editable
+   *   The "original" editable, typically a <div> or a <textarea>.
+   */
+  _ensureNonFormElement: function ($editable) {
+    if ($editable.is('textarea')) {
+      // Create a div alongside the textarea.
+      var $div = $('<div class="drupal-aloha-textarea aloha-textarea" />')
+        .attr('id', $editable.attr('id') + '-aloha')
+        .insertAfter($editable);
+
+      // Populate the div with the value of the textarea and hide the textarea.
+      $div
+        .css('height', $editable.height())
+        .html($editable.val());
+      $editable.hide();
+    }
+  },
+
+  /**
+   * Remove the <div> we created in _ensureNonFormElement() and move its value
+   * into the original <textarea> again.
+   *
+   * @param $editable
+   *   The "original" editable, typically a <div> or a <textarea>.
+   */
+  _restoreNonFormElement: function ($editable) {
+    // If the original editable is a textarea, we will have created a
+    // <div class="aloha-textarea" /> for it.
+    if ($editable.is('textarea')) {
+      var $div = $('#' + $editable.attr('id') + '-aloha');
+      $editable.val($div.html());
+      $div.remove();
+      $editable.show();
+    }
+  },
+
+  /**
+   * Get the "Aloha editable", the DOM element to which Aloha Editor should be
+   * attached. If $editable is a <textarea>, a generated <div> will be used
+   * instead of the <textarea>. Otherwise, $editable itself will be returned.
+   *
+   * @param $editable
+   *   The "original" editable, typically a <div> or a <textarea>.
+   */
+  _getAlohaEditable: function ($editable) {
+    if ($editable.is('textarea')) {
+      var id = $editable.attr('id') + '-aloha';
+      return $('#' + id);
+    }
+    else {
+      return $editable;
+    }
+  }
+};
+
+// As soon as the DOM is ready, migrate Aloha.settings from Drupal.settings and
+// then immediately initialize Aloha Editor.
+$(function () { Drupal.aloha.init(); });
+
+})(jQuery, Drupal, Aloha);
diff --git a/core/modules/aloha/js/drupal.aloha.textarea.js b/core/modules/aloha/js/drupal.aloha.textarea.js
new file mode 100644
index 0000000..f5a43f4
--- /dev/null
+++ b/core/modules/aloha/js/drupal.aloha.textarea.js
@@ -0,0 +1,51 @@
+(function ($, Drupal) {
+
+"use strict";
+
+Drupal.behaviors.alohaTextareas = {
+  attach: function (context) {
+    var $context = $(context);
+    Drupal.aloha.init(function () {
+      var first = true;
+      $context.find('.aloha-formatselector-for-textarea').once('alohaTextareas', function () {
+        if (!this.id || typeof Drupal.settings.aloha.textareas[this.id] === 'undefined') {
+          return;
+        }
+        var $this = $(this);
+        var format = Drupal.settings.aloha.formats[this.value];
+        var field = Drupal.settings.aloha.textareas[this.id];
+        var $editable = $context.find('#' + field);
+        // Directly attach this editor, if the input format is enabled.
+        if (format.status) {
+          Drupal.aloha.attach($editable, format);
+        }
+
+        // React appropriately to changed input formats.
+        if ($this.is('select')) {
+          $this.bind('change.aloha', function () {
+            // NOTE: we cannot optimize this to *not* detach and reattach Aloha
+            // Editor; otherwise it would not pick up the changed
+            // data-allowed-tags attribute.
+            Drupal.aloha.detach($editable);
+            var format = Drupal.settings.aloha.formats[this.value];
+            if (format.status) {
+              Drupal.aloha.attach($editable, format);
+              Drupal.aloha.activate($editable);
+            }
+          });
+        }
+
+        // Detach Aloha Editor when the containing form is submitted.
+        $editable.parents('form').submit(function (event) {
+          // Do not detach if the event was cancelled.
+          if (event.isDefaultPrevented()) {
+            return;
+          }
+          Drupal.aloha.detach($editable);
+        });
+      });
+    });
+  }
+};
+
+})(jQuery, Drupal);
